martes, 16 de septiembre de 2014

MSSQL vs sqlsrv

El controlador de SQL Server para PHP (también llamado el " sqlsrv conductor "para él es prefijo API) ha estado disponible desde julio de 2008, pero todavía a menudo ver el conductor" viejo "(el" mssql driver ") que se utiliza para conectarse a SQL Server desde scripts PHP. Muchos de los tutoriales que me encuentro y muchas de las preguntas que veo en los foros indico que muchas personas siguen utilizando el driver mssql a pesar de que ya no está bajo desarrollo activo . En este post quiero empezar a mirar algunas de las diferencias entre los dos drivers y tal vez obtener una comprensión de por qué el driver mssql sigue siendo utilizado (aunque tengo algunas buenas conjeturas). Hay un montón de puntos de comparación entre los mssql y SQLSRV conductores. Voy a romper mi comparación en dos puestos, centrándose en las diferencias de alto nivel en este post y luego sumerjo en una comparación API en el próximo post.

Voy a empezar por decir lo obvio: los mssql y SQLSRV conductores no son una y la misma. Lo sentimos, pero en realidad creo que necesitaba ser declarado explícitamente. Seguramente me estoy recogiendo las liendres, pero a menudo ver mssql y sqlsrv utilizan indistintamente, o al menos eso es lo que creo que veo. Tal vez la gente está utilizando mssql como una forma abreviada de Microsoft SQL Server y no el propio controlador (o tal vez estoy confundido fácilmente), pero la confusión hace que me pregunto si las personas son realmente conscientes de las diferencias clave:

  • El driver sqlsrv está construida, mantenida, y soporte de Microsoft. Ha habido dos versiones del controlador (v1.0 y v1.1), así como actualizaciones acumulativas para liberar mejoras. Las diferentes versiones de los archivos binarios (dependiendo de la versión de PHP está ejecutando) están disponibles aquí: controlador de SQL Server para PHP 1.1 . El código fuente está disponible en CodePlex en http://sqlsrvphp.codeplex.com/ . 
  • El driver mssql es un controlador integrado en la comunidad. No estoy seguro de cuánto tiempo hace que este controlador se actualiza o se mantiene como una extensión oficial de PHP, pero a partir de la liberación de PHP 5.3 , ya no está disponible con PECL . Una búsqueda rápida en internet aparecen pocos lugares para descargar el mssql conductor, pero ninguno de los que he encontrado indican que el conductor se mantiene activa.

Las tecnologías subyacentes para los dos pilotos son diferentes. (Ver diagrama 1.)

o    El sqlsrv conductor se basa en ODBC, que se mantiene activa por Microsoft y proporciona acceso a las características de las últimas versiones de SQL Server.

o    El mssql conductor se basa en DB Lib (es decir, que requiere ntwdblib.dll ) si está ejecutando PHP en Windows. DB Lib ya no es compatible con Microsoft
 
o    Si está ejecutando PHP en Linux, el mssql controlador está integrado en FreeTDS .

Este último punto nos lleva a una última diferencia importante: el mssql conductor hace proporcionar conectividad a SQL Server desde Linux . Dicho esto, parece que Microsoft está considerando el soporte ODBC en plataformas que no son de Microsoft, lo que equivale al apoyo a la sqlsrv controlador de Linux. Ver uno de mis posts anteriores para obtener más información: Conexion de Linux a SQL


Esas son las diferencias de alto nivel entre el mssql y SQLSRV controladores .Si está utilizando el mssql controlador en Windows, estaría interesado en comprender por qué (en contraposición a la sqlsrv conductor).

domingo, 7 de septiembre de 2014

Uso del memory limit en php

La forma más usual de ejecutar un script PHP es mediante algún navegador aunque también se puede ejecutar por shell. Ambos se ven afectados por el tiempo de ejecución del script. Además, dependiendo del servidor desde el que lo ejecutamos, tenemos que tener en cuenta la cantidad de memoria que vamos a usar. Y aún tenemos más cosas... No todos los tipos de error están configurados para mostrarse. Puede que el servidor tenga configurado mostrar sólo los errores importantes y los que él considera sólo alertas no nos van a aparecer... 
En éste artículo voy a intentar explicar tres instrucciones muy útiles para controlar la ejecución de un script PHP: set_time_limit(), ini_set('memory_limit') y el error_reporting().

El límite de tiempo de proceso de un script php
Todo script PHP ocupa un tiempo de proceso del servidor al ejecutarse. Ése tiempo por defecto es 30 segundos, pero puede configurarse otro valor en la variable max_execution_time en el archivo de configuración (php.ini). El problema es que si no tienes el servidor en casa no será tan fácil acceder a ésa variable, pues los hostings acostumbran a fijar ellos un tiempo prudencial y no tienes acceso para configurar nada.
Pero podemos fijar un tiempo límite distinto al que venga por defecto usando la instrucción set_time_limit(). Esta función la debemos incluir al principio del script y acepta un parámetro numérico con el que indicaremos el número de segundos que debe esperar. Por ejemplo podemos usar:

PHP:
set_time_limit(300);

Con ésto definiremos que espere 5 minutos (60 secs * 5 min = 300 secs). 
También podemos definir que no haya tiempo límite:

PHP:
set_time_limit(0);

Aunque no es nada aconsejable, pues si el script contiene algun error o realiza alguna llamada externa que pueda tener dificultades, el servidor nunca lo detendrá.
Pero aún hay más. Realmente lo que hace ésta instrucción es resetear el contador de tiempo de proceso a zero y instaurar un nuevo límite. Si tenemos el límite de tiempo por defecto a 30 segundos y llamamos a set_time_limit(30) cuando llevamos 25 segundos de ejecución, en total el script podrá tardar 55 segundos (25 secs + 30 secs = 55 secs).
Por último, esta función no se ejecutará en un entorno dónde el PHP se esté ejecutando en modo seguro, forma en que muchos hostings baratos ejecutan los scripts por compartir muchos usuarios en el mismo servidor.
Podéis encontrar más información en el manual online de PHP: set_time_limit().

Límite de memoria usado por un script

Al igual que el tiempo de proceso, hay definido un límite de memoria en el archivo de configuración bajo la variable memory_limit, pero tampoco tendremos acceso a éste en un hosting normal. Además, en los hostings acostumbran a configurar un límite de memoria bastante bajo, como por ejemplo DreamHost y Arsys que lo tienen a 8 MegaBytes.
El problema es que con el uso de objetos y clases en PHP y varios requires enlazados ése límite es rápidamente sobrepasado. Además, si estamos trabajando con un script que maneja gran cantidad de datos, 8 megas es realmente poco.
De todas formas tenemos una función que varía ciertas variables iniciales y, gracias a ella, podemos ajustar el límite de memoria del script actual al valor que necesitemos: el ini_set(). Ésta función varía el parámetro especificado sólo durante la ejecución del mismo, y al acabar restaurará el valor por defecto. Para aumentar el límite de memoria a 64 MB debemos usar la función de la siguiente manera:


PHP:
ini_set('memory_limit','64M');

Con ésto al principio del script estaremos setando el límite de memoria a 64 para el script actual. Se debe tener especial cuidado en la M que sigue al 64, que especifica que la unidad es MegaBytes. Si no la ponemos, se va a tomar como Bytes, y éso es tan poco que puede que PHP no tenga suficiente memoria ni para mostrar un error de exceso de memoria

jueves, 27 de marzo de 2014

Que es MVC - Modelo Vista Controlador

Modelo Vista Controlador


Es un patron en el cual se separan los componentes de una aplicación en tres capas, la capa de datos, la capa de interfaz y la capa logica
La idea básica detrás de esto es separar el código, de tal manera que si necesitamos hacer un cambio en la base de datos, esto no afecte a la lógica del programa, ahora la función del controlador es solo ese controlar la interacción entre ambas capas.
Detalle del patron : 
  • El Modelo ( Se encarga de interactuar con la Base de Datos), se encarga de todo lo que tiene que ver con la persistencia de datos. Guarda y recupera la información del medio persistente que utilicemos, ya sea una base de datos, archivos de texto, XML. etc
  • La Vista ( Es el codigo HTML que se muestra al usuario ), presenta la información obtenida con el modelo de manera que el usuario la pueda visualizar.
  • El Controlador, dependiendo de la acción solicitada por el usuario  , es el que pide al modelo la información necesario e invoca a la platilla ( Vista) que corresponda para que la información sea presentada.
La siguiente imagen muestra como interactua el patrón MVC con el usuario. Veamos paso a paso cómo sería el flujo de trabajo característico en un esquema MVC.

  • El usuario realiza una solicitud a nuestro sitio web. Generalmente estará desencadenada por acceder a una página de nuestro sitio. Esa solicitud le llega al controlador.

  • El controlador comunica tanto con modelos como con vistas. A los modelos les solicita datos o les manda realizar actualizaciones de los datos. A las vistas les solicita la salida correspondiente, una vez se hayan realizado las operaciones pertinentes según la lógica del negocio.

  • Para producir la salida, en ocasiones las vistas pueden solicitar más información a los modelos. En ocasiones, el controlador será el responsable de solicitar todos los datos a los modelos y de enviarlos a las vistas, haciendo de puente entre unos y otros. Sería corriente tanto una cosa como la otra, todo depende de nuestra implementación; por eso esa flecha la hemos coloreado de otro color.

  • Las vistas envían al usuario la salida. Aunque en ocasiones esa salida puede ir de vuelta al controlador y sería éste el que hace el envío al cliente, por eso he puesto la flecha en otro color.


lunes, 30 de diciembre de 2013

Que es Phubbing ?

El síndrome de uso smartphone ya tiene nombre es el Phubbing . El Phubbing se deriva de 2 palabra ( Phone = Telefono y Snubbing = Desairar ) Es la tenciacia de ignorar a la persona por poner mas atencion del telefono.


¿Quién no ha estado en una cena , reunión ya sea personales o de trabajo , al menos la mitad de las conversación, están más pendientes del teléfono móvil o Smartphone que de lo que sucede a su alrededor?. Que levante la mano quien sea capaz de decir que no ha vivido esa situación de forma repetida. ¿Cuántas manos? Claro, como era de esperar, no hay ninguna, porque eso el smartphone ya se ha convertido en una pieza clave de todo encuentro social, tan imprescindible que hay quien no es incapaz de despegarse de él, aun a costa de menospreciar, faltar al respeto o desairar a quienes están con él. Una situación que ya tiene nombre: phubbing.



Alguna vez escucha decir que este no es un problema mas bien es una consecuencia del uso de las nuevas tecnologías que cada vez están al alcance de todos del poder esta conectados todo el tiempo, como una generación nueva que ahora disfruta del poder esta conectados todo el tiempo, este en un proceso de ensaño y error, de como mejorar como individuos y sociedad. una era en la cual podremos hacer o varias cosas ya que nuestra atención se encuentra dividida.

El uso de tecnologías pone una barrera entra las comunicaciones personalmente es evidente pero esta en cada quien poner sus propios limites y saber en que momento esta conectado .

algo que encontré en la web






viernes, 21 de enero de 2011

conceptos importantes

Al momento de desarrollar un software debemos tener claro algunos conceptos importantes como :

Requerimientos Funcionales
son declaraciones de los servicios que debe proporcionar el sistema, de la manera en que este debe reaccionara a entradas particulares y de como se debe comportar en situaciones particulares
En algunos casos, los requerimientos funcionales de los sistemas también pueden declarar explícitamente lo que el sistema no debe hacer.

A continuación se presentan algunos ejemplos de estos requerimientos funcionales para un sistema de biblioteca universitario, denominado LIBSYS, utilizado por estudiantes y personal docente que solicitan libros y documentos de otras bibliotecas.
1. El usuario deberá tener la posibilidad de buscar en el conjunto inicial de la base de datos o seleccionar un subconjunto de ella.
2. El sistema deberá proporcionar visores adecuados para que el usuario lea documentos en el almacén de documentos.
3. A cada pedido se le deberá asignar un identificador único (ID_PEDIDO), que el usuario podrá copiar al área de almacenamiento permanente de la cuenta.


Requerimientos NO funcionales.
Son restricciones de los servicios o funciones ofrecidos por el sistema. Incluyen restricciones de tiempo, sobre el proceso de desarrollo y estándares. Los requerimientos no funcionales a menudo se aplican al sistema en su totalidad. Normalmente apenas se aplican a características o servicios individuales del sistema.

Los requerimientos no funcionales, como su nombre sugiere, son aquellos requerimientos que no se refieren directamente a las funciones específicas que proporciona el sistema, sino a las propiedades emergentes de éste como la fiabilidad, el tiempo de respuesta y la capacidad de almacenamiento. De forma alternativa, definen las restricciones del sistema como la capacidad de los dispositivos de entrada/salida y las representaciones de datos que se utilizan en las interfaces del sistema

Los requerimientos no funcionales surgen de las necesidades del usuario, debido a las restricciones en el presupuesto, a las políticas de la organización, a la necesidad de interoperabilidad con otros sistemas software o hardware, o a factores externos como regulaciones de seguridad











domingo, 16 de enero de 2011

Crear una función Trim() en JavaScript


Hola a todos de seguro en algún momento deben haber necesitado la función trim() para borrar los espacio en blanco tanto al inicio como al final de la cadena
Sintaxis
String.prototype.trim = function() {
return this.replace(/^\s*|\s*$/g, '');
}

Var cadena = " Guillermo dice hora "
cadena = cadena.trim();
imprimiendo el texto

Windows.write(cadena):

Lo que imprimirá será : Guillermo dice hora
Espero que les sirga jejeje….

miércoles, 4 de agosto de 2010

Silverlight


Microsoft Silverlight es una estructura para aplicaciones web que agrega nuevas funciones multimedia como la reproducción de vídeos, gráficos vectoriales, animaciones e interactividad, en forma similar a lo que hace Adobe Flash.
Silverlight compite con Adobe Flex, Nexaweb, OpenLaszlo y algunas presentaciones de componentes AJAX. La primera versión de Silverlight fue lanzada en septiembre de 2007 y actualmente su versión 4.0 se distribuye de forma gratuita.

A pesar de haber anunciado su disponibilidad hace unos días, no ha sido hasta hoy cuando Silverlight 4 ha estado disponible para su descarga. Con esta nueva versión,
Microsoft quiere terminar de asentar una de sus plataformas más exitosas y en la que más esperanzas tiene puestas. Por el momento, Silverlight ya está disponible en todo tipo de gadgets, móviles y ordenadores de escritorio, lo cual le augura una enorme implantación.

Una de las principales novedades es que Silverlight 4 ahora se integra en Google Chrome, todo un hito para la compañía de Redmond, que parece ver en el navegador de Google una verdadera amenaza, que podría ponerle las cosas difíciles a Internet Explorer 9. Por otra parte, la integración con el hardware ahora ofrece soporte para micrófono y webcams, así como grabar audio y vídeo. Además, ahora Silverlight es capaz de reproducir contenidos multimedia con DRM de forma offline. Y aunque no sea una función especialmente pensada para ordenadores de sobremesa, los gestos multitouch se han mejorado y han aumentado en número.
La herramienta de desarrollo que se integra en Visual Studio 2010 también ha sido puesta al día con la intención de que las nuevas funciones de la plataforma sean aprovechadas cuanto antes.
Espero que les sirva y hasta la próxima se despide su amigo Guillermo Rodriguez.