Entradas

Mostrando las entradas etiquetadas como recursos

PHP con Visual Studio Code

Imagen
El pasado 14 de abril Microsoft anunciaba la primera versión de Visual Studio Code , una versión simplificada (muy simplificada) de Visual Studio, orientada a la edición de código. Entre los lenguajes de programación soportados por defecto está PHP y aunque aún le queda mucho camino por delante es un IDE que debemos tener en cuenta. Sorprende la interfaz tan limpia que tiene, muy de mi agrado personal, y si bien es cierto que parece escasa de opciones dispone de bastantes funcionalidades en los pocos botones que tiene. Para trabajar con PHP no hace falta hacer nada, dispone de Intellisense de las funciones innatas de PHP no así de las clases propias de nuestro código, sin duda su mayor limitación, aunque existe un proyecto para intentar suplir esta carencia pero a mi en particular no me ha funcionado . En la parte inferior izquierda tienes varios iconos, el primero te da la opción de gestionar las extensiones, cuando abres una carpeta con archivos PHP tienes una opción i...

CentOS 7 reset root password MySQL 5.7

Si habéis llegado aquí estáis en el lugar correcto dónde podréis restaurar la contraseña de root en MySQL 5.7 . Internet está plagado de tutoriales dónde te indican cómo hacer esto pero ninguno está actualizado a las últimas versiones de CentOS y MySQL, además por todos es conocido que el soporte a MySQL por parte de la comunidad Open Source ha menguado desde su compra por Oracle. ¿Que cambia en CentOS 7 y MySQL 5.7? CentOS 7 incorpora systemd (Sistema y administrador de servicios para Linux, compatible con scripts de inicio SysV) y su herramienta de administración systemctl . ¿en que afecta esto? Pues que el script mysql_safe no está disponible (no se instala) en estos sistemas y hay que utilizar otras alternativas y gestionar mysql server community desde systemd . La tabla de usuarios en MySQL 5.7 ya no tiene campo password ahora es authentication_string. Restaurar contraseña root en MySQL 5.7 y CentOS 7 systemctl set-environment MYSQLD_OPTS="--skip-grant-...

Código fuente en Blogger

Un blog como este, de programación, requiere que en muchos post sea necesario introducir código para mostrar ejemplos y en Blogger, creedme, no ha sido tarea fácil. Hay que sumar a mi dejadez los pocos plugins que hay para resaltar el código fuente. He trabajo con 3, el último es el que estoy utilizando actualmente y es el que más me convence. SyntaxHighlighter para Windows Live Writer Fue el primero que utilicé, al principio me iba bien pero tiene la desventaja que se ejecuta del lado del redactor y no en el servidor, o sea, el código formateado sale una vez redactas el post con Windows Live (herramienta que utilizo porque la edición online de Blogger me parece desastrosa). Tiene el inconveniente de no ser para usuarios básicos, hay que instalar librerías dll, configurarlas en cada ordenador que tengamos y que utilicemos para escribir en el blog. Otro de los errores que me suelo encontrar al utilizar SyntaxHighlighter para Windows Live Writer es la diferencia de estilos entre lo ...

Programar un trabajo en SQL Server anualmente

El agente de SQL Server no trae por defecto (ni en la versión de 2014) la opción de crear trabajos programados que se ejecuten anualmente, para ello tenemos que recurrir a un truco que si bien es lógico no es trivial verlo. La solución para ejecutar un trabajo programado de manera anual en SQL Server es ejecutarlo un día concreto cada 12 meses. Os dejo la pantalla resaltada con las opciones que habría que señalar, en el ejemplo se ejecuta a las 00:00:01 todos los primero de enero (el primer día del año).

Waze vs Tom Tom

Hace pocos días comencé a utilizar Waze , una de las aplicaciones de tráfico basada en una comunidad de más de 25 millones de usuarios. Al venir de Tom Tom , el navegador GPS que siempre he utilizado, noto muchas diferencias, algunas para bien y otras no tanto. La peor desventaja que le veo a Waze es que todo es online, de ahí que su instalación solo ocupe 73 MB contra los 430 MB de Tom Tom Iberia. Al ser online el cálculo de rutas en zonas con poca cobertura es prácticamente imposible, aunque con GPRS suele calcularlas medianamente rápido. El consumo de datos de nuestra cuenta también se dispara, en un año Tom Tom ha consumido 8,8 MB mientras que WAZE en 3 semanas lleva descargados 76,7 MB. El roaming y otros gastos asociados a tarifas de las operadoras son otra pega aunque al ser gratis la aplicación puede que nos compense más que los 39,99 € que cuestan Tom Tom Iberia sin suscripción a tráfico ni radares. NOTA: al ser todo online tiene la ventaja de que no es necesario descargart...

Nuevas funcionalidades en PHP 5.5

Una vez que hemos visto todas las ventajas que nos puede traer PHP 5.4 y sabiendo que esta no es la última versión estable sería interesante ver cuáles son las ventajas de esta para una vez decididos migrar optemos por una u otra. Generadores Una de las necesidades de programación más comunes, es ser capaz de realizar una acción sobre todos los elementos de un objeto. Por ejemplo, usando un foreach en una matriz, para obtener cada clave o, un foreach sobre un objeto, para obtener el nombre de cada parámetro y su valor. El mecanismo para la aplicación de este comportamiento es conocido como un iterador, que se utiliza para recorrer todos los elementos de un objeto o una matriz. Los iteradores se pueden definir de forma explícita con clases personalizadas, pero eso puede ser un proceso difícil de manejar y complejo, con apaños y, más que un puñado de funciones. ¿Qué pasa si quiero actuar en un subconjunto de una matriz, y realizar algo de lógica a medida que avanzo, pero aún así ser...

Problemas de espacio en Windows 8.1

Imagen
Realmente todas las posibles causas de aumento descontrolado del espacio ocupado en el disco duro que voy a tratar aquí se pueden aplicar a cualquier sistema Windows, incluso en los casos de software a cualquier sistema que los tenga instalado. Las pruebas siguientes fueron hechas en 2 ordenadores con Windows 8.1 y con discos duros limitados en espacio con lo cual cada GB cuenta, es por ello que he decido monitorearlos porque me parecían demasiados los recursos que se estaban consumiendo, lamentablemente en la mayoría de los casos no hay mucho que hacer, pero, primero a lo primero. Para monitorizar el espacio ocupado por cada carpeta he decidido utilizar la herramienta basa en Java, JDiskReport , y digo basada en Java porque necesitaremos la máquina virtual de este lenguaje para poder ejecutarla, generalmente se agrega la ubicación de Java al PATH de sistema pero en caso de que no se encuentre el archivo javaw.exe lo encontraremos en C:\Program Files (x86)\Java\jre7\bin. Una vez ...

Virtualización con Hyper-V en Windows 8.1

Imagen
Tanto en Windows 8 como Windows 8.1 disponemos de acceso a la plataforma de Hyper-V y sus herramientas de administración. Esta característica no viene instalada por defecto aunque si por algún casual hemos instalado previamente Visual Studio Ultimate 2013 en el proceso de instalación se instala Hyper-V y una máquina virtual para probar aplicaciones móviles con Windows Phone. Bueno, volviendo al tema, aquí os dejo una excelente guía para instalar Hyper-V en Windows 8 , totalmente válida para Windows 8.1. Si bien es cierto que puede que todo no sea un camino de rosas a veces, si por ejemplo no puedes marcar la opción: Plataforma de Hyper-V , y, al ponerte sobre ella sale el mensaje: No se puede instalar Hyper-V: la compatibilidad con la virtualización esta deshabilitada en el firmware ; es muy probable que lo tengas deshabilitado en la BIOS. Para comprobar si tu sistema efectivamente soporta la virtualización tenemos la herramienta coreinfo que hay que ejecutarla como administrador en...

Almacenar IPs en las bases de datos

Imagen
La mayoría de los usuarios cuando tienen que almacenar IPs en sus bases de datos los hacen con tipos de campos VARCHAR cuando es mucho más óptimo almacenarlos con un entero sin signo (en caso de MySQL) o BIG INT (en caso de SQL Server). Convertir IPs en MySQL Existen 2 funciones para ello inet_aton e inet_ntoa , la primera convierte la IP en un número y la segunda es el proceso contrario. Convertir IPs en SQL Server En SQL Server no hay funciones predefinidas para ello pero las podemos crear muy fácilmente, en el siguiente enlace hay un par de ejemplos muy buenos para convertir IPs a BIG INT en SQL Server y viceversa . Esta transformación también la podemos hacer al insertar los datos en el lenguaje de programación, en el caso de PHP sería ip2long y long2ip .

Enviar archivos con AJAX y jQuery en HTML5

Imagen
Con la evolución de los navegadores y la llegada de HTML5 ya no es necesario utilizar librerías extras para simular subir archivos por AJAX, la mayoría de estas librerías lo que hacían era utilizar FLASH o hacer un IFRAME para capturar esta subida de archivos. Con HTML5 ya no es necesario esto. Esto es gracias a la introducción del objeto FormData que nos permite crear formularios al vuelo. Asignar un formulario existente a un objeto FormData: var formElement = document.getElementById("someFormElement");   var formData = new FormData(formElement); O puedes recorrer el formulario con jQuery para solo agregar los campos que te interesan: var formData = new FormData(); $('#someFormElement :input').each(function(){         var input = $(this);         switch (input.attr('type')){             case "checkbox":         ...

Hacer un select readonly con jQuery

Para un select no es aplicable la opción readonly, o está deshabilitado o está activo, pero no puede estar activo y ser readonly. Esto es lo que HTML y los navegadores te dicen pero hay una opción a esto y es deshabilitar todos los option no seleccionados con jQuery, de esta manera con este sencillo código JavaScript podemos simular tener un select readonly . $('#selectid option:not(:selected)').attr('disabled',true); Para los que quieran un poco más de teoría pueden seguir leyendo el post. Diferencias entre controles readonly y disabled La principal diferencia entre readonly y disabled es que aunque en ambos casos el contenido del control sobre el que se aplica no puede ser modificado en caso de readonly este valor si se envía al hacer el submit del formulario mientras en el caso de un control disabled este valor nunca se envía, con lo cual suele ser interesante tener un control no modificable pero que queramos tener su valor al recibir los datos del formulari...

Tips para campos datetime en SQL Server

Imagen
Para mi es mucho más sencillo e intuitivo trabajar con campos datetime en MySQL pero SQL Server ofrece las mismas (sino alguna más) posibilidades de convertir estos campos en formatos concretos de hora y fecha. Para ello tenemos las funciones CONVERT y DATEPART . Aquí os dejo algunos ejemplos de su uso. Convertir un campo datetime a fecha en castellano (el año con 4 dígitos) SELECT CONVERT(VARCHAR(10), CURRENT_TIMESTAMP, 103); Convertir un campo datetime a fecha en castellano (el año con 2 dígitos) SELECT CONVERT(VARCHAR(8), CURRENT_TIMESTAMP, 3); Extraer la fecha de un campo datetime SELECT CONVERT(DATE, CURRENT_TIMESTAMP); Extraer el tiempo de un campo datetime con milisegundos SELECT CONVERT(TIME, CURRENT_TIMESTAMP); Extraer el tiempo de un campo datetime sin milisegundos SELECT CONVERT(VARCHAR(9), CURRENT_TIMESTAMP, 108); ¿Se os ocurre algún otro formato más?

Espacio utilizado en Linux desde consola

Imagen
Cuando tenemos problemas de espacio en nuestro servidor Linux, es muy útil saber cuanto ocupa cada carpeta , esto no es una tarea muy visual desde la consola de Linux con lo cual os dejo un par de comandos muy útiles. df -h nos sirve para identificar que partición tiene mucho espacio: Filesystem                                                   Size  Used Avail Use% Mounted on rootfs                                                        16G  5.6G  8.9G...

Eliminar espacios repetidos en PHP

El post de hoy es bastante corto, voy a dejaros un pequeño código que elimina los espacios en blanco repetidos en el medio de una cadena , utilizando para ello expresiones regulares en PHP. Nota: el código está actualizado para utilizar las funciones de expresiones regulares más actuales de PHP y los las deprecadas. El código para eliminar estos espacios en blanco repetidos en el medio de cualquier cadena para PHP es el siguiente: $cadena_sin_espacios = preg_replace('/( ){2,}/u',' ',$cadena_con_espacios); Ejemplo: Esta    cadena    contiene   espacios    repetidos Quedaría así Esta cadena contiene espacios repetidos. Espero que os sea tan útil como la encuentro yo.

MySQL 5.6 en CentOS 6 con PowerStack

Imagen
Todos los que trabajan con versiones estables y profesionales de Linux saben que la llegada de las últimas versiones de un determinado software casi nunca llegan con los repositorios oficiales, siempre es necesario utilizar repositorios de terceros que complementan o actualizan nuestro servidor. El trio apache + PHP + MySQL no está exento de este problema y si bien es cierto que para CentOS contábamos con los repositorios Remi estos últimamente están algo desfasados, sobre todo con apache y MySQL, fundamentalmente este último. Buscando un poco de información por internet he encontrado en foros oficiales que es muy probable que Remi deje de dar soporte a MySQL, esto fundamentalmente tras la compra de esta última por Oracle. Remi comenzaría a utilizar MariaDB, una base de datos de los fundadores de MySQL que muchos dicen que es mejor pero pocos han probado. Entonces ¿que hacer si queremos seguir teniendo las ultimas versiones de MySQL utilizando Yum, esta brillante herramienta de Cent...

Recomendaciones respecto a SQL Server

Imagen
Estas son algunas recomendaciones que me pasaron hace un tiempo sobre parámetros para optimizar SQL Server, en realidad son la traducción de esas recomendaciones, espero que os sirvan de ayuda, a mi la verdad no mucho. Auto-Grow Auto-Growths (Auto-crecimientos) de la base de datos o del registro de transacciones en entornos de producción puede degradar el rendimiento pues todas las transacciones deben hacer cola y esperar al SQL Server para hacer crecer el archivo de registro o de datos antes de que pueda comenzar a procesar las transacciones de nuevo. Esto puede crear un cuello de botella. Recomendamos fuertemente el crecimiento de los datos y del archivo de registro durante las horas pico entre un 10 a 25% del tamaño actual. No recomendamos desactivar Auto-Grow pues en casos de emergencia es mejor tenerlo activado que quedarse sin espacio y poner la base de datos fuera de servicio. Trace Flag 4119 Si está ejecutando SQL Server 2005, le recomendamos que active el indicador de tr...

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...

Monitorar uso de la CPU por procesos

Imagen
Hasta ahora ninguno de los plugins que hemos visto permite saber el uso de la CPU por usuarios o por procesos pero para ello hay 2 plugin adicionales que te permiten hacer esa tarea. De esta forma se puede monitorar el consumo de CPU de procesos como apache, mysql y el propio munin. Los citados plugin se encuentran en la siguiente ruta y se llaman cpu-usage-by-process y cpubyuser, el primero lo renombraremos como cpubyproc y modificaremos el archivo de configuración de munin en /etc/munin/plugin-conf.d/munin-node agregándole las siguientes líneas: [cpubyproc] env.procs crond httpd mysqld munin-node [cpubyuser] env.USERS apache mysql munin los proceso y los usuarios se pueden modificar a gusto de cada cual. Para saber el listado de procesos activos escribiremos ps aux y para el listado de usuarios cat /etc/passwd | cut -d":" –f1. Importante: para evitar errores del tipo Warning: bad syntax, perhaps a bogus '-'? debemos buscar la línea 68 del plugin cpubyproc y...