Entradas

Mostrando las entradas etiquetadas como curiosidades

SQL Server, columnas calculadas

Aquí os dejo algunos apuntes básicos sobre las columnas calculadas en SQL Server. ¿Cuando se calculan? Depende de cómo defina la columna calculada. Una columna calculada PERSISTIDA se calculará y luego se almacenará como datos dentro de la tabla al ser creada. Si no define la columna como PERSISTIDA, se calculará cada vez que se ejecute una consulta que la incluya. Mas info aquí . Tablas temporales o versionadas La modificación del esquema de una tabla versionada por el sistema (tablas temporales) falla porque no se admite agregar una columna calculada mientras el versionado del sistema está activado. Para solucionarlo: Primero desactivar el versionado Luego agregar la columna calculada a la tabla base Verificar el tipo de la columna calculada resultante Agregar la columna con el tipo estático apropiado a la tabla de historial (tabla temporal o tabla versionada) Volver a activar el versionado Otra cosa a tener en cuenta es que una columna calculada que utiliza una...

Ciclos de lanzamiento en PHP, curiosidades

Imagen
A raíz de la cada vez más cercana versión 8 de PHP y sus esperadas mejoras han surgido algunos bulos sobre su fecha de lanzamiento, hasta ser confirmada finalmente el 10 de febrero con el siguiente tweet:  En este tweet se habla de los ciclos de lanzamiento de PHP, puede parecer algo trivial o sin importancia, pero desde la versión 7, no sólo ha mejorado el lenguaje, sino la forma de trabajar del equipo de desarrollo. Si tomamos por ejemplo los 414 lanzamientos que se han publicado desde junio de 2003, de ellos 27 alfas, 30 betas y 52 candidatas, podemos ver una mayor organización y previsible agenda en los mismos. Por citar un ejemplo, mientras en php 5 no siempre se publicaban alfas, betas o RC, en php 7 si, y además periódicamente, las versiones 0,1,2,3 y 4 de php 7 comparten los mismo tiempos, desde el lanzamiento de la primera beta hasta el lanzamiento de la primera versión candidata pasan exactamente 42 días, y también para la mayoría de transiciones de alfa a b...

Consultas útiles SQL Server

Muchas veces necesitamos conocer las tablas, campos, claves, etc. de una base de datos en concreto, todos estos datos están disponibles en tablas de sistema de SQL Server, veamos algunos ejemplos. Devolver las tablas de la base de datos actual con sus claves primarias SELECT i1.TABLE_NAME, i2.COLUMN_NAME FROM INFORMATION_SCHEMA.TABLE_CONSTRAINTS i1 INNER JOIN INFORMATION_SCHEMA.KEY_COLUMN_USAGE i2 ON i1.CONSTRAINT_NAME = i2.CONSTRAINT_NAME WHERE i1.CONSTRAINT_TYPE = 'PRIMARY KEY' Devolver los campos de una tabla concreta que son claves foráneas y la tabla a la que hace referencia SELECT CU.COLUMN_NAME, PK.TABLE_NAME FROM INFORMATION_SCHEMA.REFERENTIAL_CONSTRAINTS C INNER JOIN INFORMATION_SCHEMA.TABLE_CONSTRAINTS FK ON C.CONSTRAINT_NAME = FK.CONSTRAINT_NAME INNER JOIN INFORMATION_SCHEMA.TABLE_CONSTRAINTS PK ON C.UNIQUE_CONSTRAINT_NAME = PK.CONSTRAINT_NAME INNER JOIN INFORMATION_SCHEMA.KEY_COLUMN_USAGE CU ON C.CONSTRAINT_NAME = CU.CONSTRAINT_NAME WHERE FK.TABLE_NAME = ? Devo...

Evolución de divisas respecto al euro

Imagen
Es un poco off topic pero recopilando datos del Banco Central Europeo desde 2007 (para el dólar) y 2009 (yen y libra) he decidido crear un par de gráficos dónde se puede ver la evolución de las cotizaciones de estas monedas respecto al euro . Todos los cambios representan el equivalente a 1 euro. Aquí os dejo las gráficas para que puedan sacar sus propias conclusiones. Gráfico comparativo con los cambios del euro a dólar, yen, libra desde 2009 a la fecha Gráfico comparativo con los cambios del euro a dólar desde 2007 a la fecha

Evolución de PHP 5

Imagen
El 29 de junio de 2003 vio la luz la primera beta de PHP 5, la versión principal más estable y más difundida de PHP en nuestros días. PHP como lenguaje de programación en servidores es el más extendido en todo internet con una cuota del 81,9 % según los informes de la w3techs ; de este porcentaje de sitios, el 97,8 % utilizan algunas de las versiones de PHP 5 , lo que en resumen representa estos valores es que el 80.1 % de los sitios web de internet utilizan PHP 5 como lenguaje de cara al servidor , una cifra más que asombrosa pero en absoluto extraña*. Como hemos dicho anteriormente PHP 5 en su diferentes versiones (7 a la fecha) lleva más de 11 años activo, gratuito y con soporte para los principales servidores web y librerías que cubren todos los aspectos de la programación, conexión con servidores de correo electrónico, bases de datos, autentificación en dominios Windows, servidores Exchange, protocolos como SSH, FTP, etc. Todo ello ha llevado a PHP 5 al puesto número 1 que ocupa ...

jQuery data() vs val()

Hace pocos días me paso una cosa muy curiosa, imagina que tienes el siguiente input: <input type=”text” value=”5” data-numero=”5” /> Si ejecutamos las funciones de jQuery val() o data(“numero”), ambas, devuelven el valor 5, la diferencia es que val() lo devuelve como tipo string y data como integer. Esto solo afecta si se hace una comparativa con ===.

SQL Server tipos de datos

Imagen
Más que escribir y describir sobre los tipos de datos en SQL Server , en este post pretendo aclarar o definir algunas curiosidades y/o novedades de los tipos de datos en las nuevas versiones de SQL Server , como por ejemplo la 2008 R2 y la recién estrenada 2012. Tipos de datos deprecados (obsoletos) Desde SQL Server 2008 R2 los tipos de datos timestamp (hablaré más adelante sobre él) y text (ntext también) se encuentran obsoletos y en futuras versiones dejaran de existir (en la 2012 aún existen pero solo por mera compatibilidad). Timestamp Los tipos de datos timestamp para los que estamos acostumbrados a MySQL pensamos que va a hacer lo mismo que en este tipo de servidores, actualizar la fecha cada vez que se inserta o actualiza una fila. La primera diferencia es que timestamp en SQL Server nunca ha almacenado una fecha, es un valor entero único pero no corresponde con una fecha, en las nuevas versiones el tipo de campo que lo viene a sustituir es el uniqueid. Text y Ntext Los ...

jQuery validar campos numéricos

Imagen
A veces es necesario validar con JavaScript campos de texto que serán numéricos, si bien en HTML 5 esto se soluciona con los nuevos tipos de campos de texto tenemos que tener presente que es posible que nuestros usuarios no accedan a la web con un navegador moderno. Por eso es este post para mostrar una vía que permite validar campos de texto como numéricos en JavaScript . Con campos numéricos me refiero a números enteros, con decimales y con signo. Nota: recordar que las validaciones por JavaScript nunca deben ser las únicas que hagamos, siempre hay que validar los datos del lado del servidor. Para validar estos campos no voy a utilizar ningún plugin específico de jQuery que los hay, solo utilizaré la librería base y las funciones focusout y keydown . Antes que nada veamos que código ASCII tienen las teclas que nos interesa permitir: Código numérico Teclas 8 Backspace (<-) 9 Tabulador (Tab) 13 Retorno (Return) 46 Suprimir 189 y 173 Signo negativo 190 P...

Pregunta lo que quieras, AMA, IAmA y Reddit

Imagen
Hoy a raíz de un artículo de Xataka sobre un debate de preguntas y respuestas que hizo Bill Gates hace poco en Reddit me decidí a entrar en esta web y me pareció una locura y una americanada total, pero después de descubrir a personalidades como Bill Gates o el presidente Barack Obama , pues me ha dado curiosidad por saber ¿qué es Reddit? y sobre todo ¿qué son las siglas AMA y IAmA? . Reddit fue fundada por dos universitarios de 22 años graduados en Virginia el 2005, Steve Huffman y Alexis Ohanian, y presume de llegar a más de 1600 millones de páginas vistas cada mes. Es uno de los mayores sitios web, con la mayor cantidad de tráfico en el mundo. La función de Reddit es bastante sencilla: un grupo de usuarios pueden dejar enlaces a contenidos web, presentarse y admitir preguntas mientras otros usuarios pueden votar a favor o en contra de los enlaces, haciendo que aparezcan más o menos destacados, ó hacer preguntas que serán respondidas por el usuario que inició el hilo. Muy rel...

SQL Joins (intersecciones entre tablas en SQL)

Imagen
Mucho de lo que voy a hablar hoy es lo típico que se te olvida de cuando lo has estudiado, te quedas con lo más frecuente, lo más utilizado, pero SQL trae consigo multitud de herramientas, todas y cada una imprescindibles, para extraer datos con la intersección de 2 o más tablas. No confundir este post que trata sobre los JOIN (intersecciones) con la sintaxis UNION. Veamos de las más conocidas a las menos Inner join SELECT * FROM A INNER JOIN B ON A.KEY = B.KEY Esta sencilla consulta nos devolvería los datos que están presente solamente en ambas tablas y su notación sería la siguiente AnB donde n significa intersección. left outer join Los que trabajamos con SQL Server y que provenimos de trabajar con MySQL esta sintaxis nos parece extraña y tal vez excluyente porque left join hace lo mismo, y es verdad, es realmente lo mismo, pero MySQL al abreviarlo nos elimina la posibilidad de saber el por qué del OUTER al no incluirlo en sus sintaxis, mientras SQL Server es más pragmático ...

UNION en SQL Server

Imagen
Esto no lo he comprobado en MySQL pero supongo que siga el mismo principio que SQL Server, es muy probable que hayamos utilizado la sintaxis UNION de SQL en multitud de ocasiones pero creo que es importante recalcar lo siguiente de esta sintaxis: UNION especifica que se deben combinar varios conjuntos de resultados para ser devueltos como un solo conjunto de resultados . Mientras que UNION ALL agrega todas las filas a los resultados. Incluye las filas duplicadas. Si no se especifica, las filas duplicadas se quitan . Para más datos ir a la página de UNION en SQL Server .

Ejecutar comandos desde PHP para Linux

Imagen
Existen varias funciones para ejecutar comandos desde php en un servidor linux pero yo me centraré en 3 de ellas: ssh2_exec , system y exec . La primera de ellas ssh2_exec se ejecuta cuando establecemos una conexión SSH con otro servidor (o el mismo pero esto carece un poco de efecto práctico). Esta función nos devuelve un stream o FALSE en caso de error, para poder trabajar con los datos devueltos deberíamos hacer lo siguiente: <?php $stream = ssh2_exec($connection, "cd /hom"); $errorStream = ssh2_fetch_stream($stream, SSH2_STREAM_STDERR); // Activar bloqueo para ambos stream stream_set_blocking($errorStream, true); stream_set_blocking($stream, true); // Cualquiera de los dos comandos de abajo recibirá su salida correspondiente. El segundo comando no recibe nada porque no hay error. echo "Output: " . stream_get_contents($stream); echo "Error: " . stream_get_contents($errorStream); // Close the streams       fclose($errorStream); fclose($stream); ?...

Saber el día exacto de tu alta en Facebook

Imagen
Saber el día en que nos dimos de alta en esta red social podía ser un engorro en el antiguo diseño porque supuestamente tendrías que ir bajando hasta que llegaras a tu primer contenido, esto con el nuevo diseño a modo de Biografía es muy sencillo. En nuestro perfil (no la pantalla de inicio y notificaciones) tenemos a la derecha una barra de tiempo como esta: Lo único que tenemos que hacer es ir al año que creemos que nos dimos de alta y buscar una notificación como la siguiente: ¿Sencillo verdad? De esta forma sabemos de manera segura en que fecha nos dimos de alta en Facebook .

Microsoft apuesta en todo por Windows 8

Imagen
A nadie le parece extraño toda la campaña mediática con el nuevo Windows 8 ni los convenios que se están firmando con proveedores de hardware para lanzar el nuevo sistema en tablets y en teléfonos, lo que si me sorprendió fue recibir hoy el nuevo boletín para los partners rediseñado muy al estilo de Windows 8 Para los seguidores de este nuevo sistema operativo de la casa de Redmond os dejo el enlace a la página oficial de Windows 8 desde la cual es posible descargar la Developer Preview . Y también algunas novedades y secretos en las especificaciones hardware .

Preparar y ejecutar consultas con SQL Server driver para PHP

Imagen
Los que acostumbramos a utilizar MySQL no estamos familiarizados con esta sintaxis de preparar y ejecutar consultas que tiene el driver de Microsoft para PHP. En este post intento mostrar cómo usar el driver de SQL Server para PHP para ejecutar una instrucción preparada varias veces. Esto es mediante la combinación de sqlsrv_prepare y sqlsrv_execute , y el resultado es una instrucción que se compila una vez en el servidor y se puede ejecutar después varias veces con distintos valores de parámetro. En el caso de consultas únicas, se recomienda el uso de sqlsrv_query que es a lo que estamos acostumbrados en MySQL. Al preparar una instrucción que usa variables como parámetros, las variables se enlazan a la instrucción. Eso significa que si se actualizan los valores de las variables, la próxima vez que se ejecute la instrucción se ejecutará con los valores de parámetros actualizados. En el siguiente enlace tenemos un ejemplo de cómo utilizar estas funciones para ejecutar una consul...

Navegación sincronizada en Total Commander

Imagen
Para los que no utilicen el Total Commander solo comentaré que es una excelente utilidad para la gestión y comparación de archivos, muy útil para entornos de programación dónde hay que comprobar la sincronización entre directorios con código fuente. El Total Commander es muy extensible pero sus opciones por defecto la verdad que son muy cortas y a veces es necesario ampliarlas con comandos que trae el propio programa o con menús externos creados por usuarios. Una de las herramientas que más echo en falta que no esté por defecto es la navegación sincronizada por directorios como hacen la mayoría de clientes FTP como FileZilla, opción que estos si traen sin necesidad de configurar un comando adicional. Para crear un menú con la opción de navegación sincronizada tenemos que posicionarnos en la barra de herramientas y hacer clic derecho para que salga la opción de cambiar: Una vez allí debemos escribir en la nueva ventana en el apartado comando el siguiente comando interno: cm_Syn...

Restablecer valores de la columna identidad en SQL Server

Hace un tiempo hablé en un post sobre los errores que daba SQL Server al intentar truncar una tabla con claves extranjeras (foreign keys) aunque estas estuviesen vacías. Uno de los puntos que traté en ese post era restablecer el valor de la clave principal de la tabla a 0 y el método que utilicé era el mismo que nos explican en este post Reset Identity Column Value in SQL Server . Ayer casualmente probando este método en una tabla recién truncada descubrí que cuando se realiza la opción TRUNCATE TABLE el valor de la columna de identidad (clave principal) toma el valor NULL en vez del valor 0. Lo descubrí al hacer lo siguiente : DBCC CHECKIDENT (tabla, RESEED, 0) La respuesta del SQL Server Managment Studio fue la siguiente: Checking identity information: current identity value 'NULL', current column value '0'. DBCC execution completed. If DBCC printed error messages, contact your system administrator. En realidad esto no afecta en nada es sólo una curiosidad m...

Trucos o atajos en PHP

Imagen
Leyendo un artículo del blog de Pedro Ventura sobre PHP se me ocurrió la idea de escribir un post con las cosas que me han asombrado y/o ayudado en algún momento específico en PHP, no son scripts concretos ni mucho menos, son mas bien trucos o atajos poco conocidos de este lenguaje de programación. Voy a dividir el post en varias secciones e intentaré agrupar en cada una os trucos o atajos que me han llamado la atención. Validaciones en PHP Validar siempre es una tarea difícil no, más bien tediosa y a veces he echado en falta algunas características de Java muy particulares como pasar a las funciones variables específicas, para mi sorpresa en PHP ya está soportado ese tema y puedes definir una función y decirle de qué tipo es la variable que le estas pasando, la sintaxis sería la siguiente: funcion name (ObjectType variable){} Muchas veces necesitamos trabajar con librería y aunque en local o en nuestro server las tengamos instaladas siempre es bueno validar que estén cargadas, e...

Sitios populares en IE9

Imagen
Lo de la pantalla de sitios populares no es nada nuevo en realidad pero me ha llamado la atención que a diferencia de otros navegadores como Chorme, precursor en estas sugerencias, Internet Explorer 9 no lo hace con una captura de pantalla sino que analiza el favicon y muestra una barra de intensidad con el color predominante en este favicon, esta barra lo único que nos indica es el uso del sitio. No sé si os parece más útil que una captura de pantalla pero lo que si es indudable es que hacer esto es mucho más complicado que una imagen en miniatura de una captura de pantalla de los sitios que visitamos. Yo por mi parte le doy un 10 a Internet Explorer 9 en innovación en este sentido.

Navegadores actuales: cuotas de mercado

Imagen
Para darle un poco de dramatismo al post podría decir que la lucha por ser el navegador favorito de los internautas es encarnizada cuando menos, Apple, Microsoft, Mozilla, Google y Opera luchan cada vez más por no perder al menos su cuota de mercado en este mundo de los navegadores web. Cada vez vemos cómo la frecuencia de actualización de estos es mayor y se busca fundamentalmente mayor velocidad de carga, mayor compatibilidad con los estándares y una rapidez mayor procesando los archivos javascript, todo esto sin descuidar una interfaz cada vez más minimalista. Esto de las estadísticas nunca es absoluto y generalmente cada uno barre para su propio patio, por eso, para elaborar la siguiente gráfica he optado por hacer una media aritmética entre 2 sitios de estadísticas y cerca de un millón de visitas de mi propia web de cine. Las estadísticas consultadas corresponden al w3schools y a statcounter . Veamos el gráfico de arriba hacia abajo. Lo más claro es el fracaso de Mic...