marzo 13, 2018

Cambiar zona horaria o timezone en CodeIgniter v3

Introducción

Si trabajamos con fechas y horas en PHP, siempre necesitaremos tener la zona horaria de acuerdo a un lugar. Normalmente, cuando subimos nuestra app, la zona horaria cambia.

Es ahí en donde necesitamos saber cómo configurar o cambiar la zona horaria en CodeIgniter.

Cambiar timezone

Es muy fácil, y de hecho no es una función del framework, sino de PHP. Para ello, navegamos a application/config.php que supongo es un archivo incluido en todos los procesos.

Al inicio del script, agregamos la línea que tiene un comentario (las línea 1 y 2 ya estaban ahí, pero es para ejemplificar):

En mi caso puse America/Mexico_City porque esa es  la zona horaria que quiero. Pero podemos poner la que necesitemos, aquí está la lista completa de zonas horarias.

Y con ello habremos configurado la zona horaria. Sólo para aclarar, así se ve el archivo config.php al final:

Habilitar error log en CodeIgniter 3

Introducción

Para los desarrolladores que utilizamos AJAX o no queremos mostrar los errores en una app en producción, los logs son la herramienta principal para depurar y corregir errores.

Hoy mostraré cómo habilitar logs, o el archivo de errores en CodeIgniter.

Habilitar el log de errores

Lo único que tenemos que hacer es ir a application/config/config.php y cambiar el valor del arreglo $config en el índice log_threshold al valor 1.

Con esto estamos simplemente cambiado el umbral de errores.

El fragmento de código en cuestión es este:

Y ahí, un pequeño comentario nos da una pequeña introducción. Dice que si queremos deshabilitarlos, pongamos el valor en 0. Pero si deseamos habilitar los errores así como en cualquier aplicación, debemos ponerlo en 1.

En mi caso, al probar le puse un valor 4 y se loguearon muchas cosas:

Cuando en realidad sólo quería el error que aparece abajo. Así que mejor lo puse en nivel 1. Y el fragmento se ve como a continuación:

Ubicación de los archivos

Por cierto, los archivos de error aparecen en la carpeta application/logs y están nombrados de acuerdo al día. mes y año. Así, podemos analizarlos por fecha.

Aviso

Debemos asegurarnos de que en la carpeta application/logs se puedan crear archivos. Es decir, debe tener habilitada la escritura.

Conclusión

Así de fácil es habilitar el logueo de errores en CodeIgniter: un framework liviano de PHP que algunas personas y compañías todavía usan y usarán.

App web para memorizar cosas hecha con AngularJS y Bootstrap 4

Introducción

Retomando la sección de cosas que hago para usos personales, recuerdo que una vez hice una app para memorizar un texto. Es muy simple, pegas un texto que tienes que memorizar y el software se encarga de eliminar algunas partes de éste y dejarlas en blanco.

Luego, tienes que completar estos campos. Y la app te indica si lo hiciste bien o mal. Si no te gusta la forma en la que se mezclaron las palabras, puedes mezclarlas de nuevo.

Tecnologías utilizadas

  • Para su funcionamiento utiliza AngularJS en su versión 1.6.5.
  • Para el diseño, aprovecha el bonito estilo de Bootstrap 4.
  • Finalmente, los iconos son gracias a Fontawesome.

Explicación y funcionamiento

Trataré de dar una explicación del funcionamiento. Tenemos la interfaz principal compuesta por un textarea y un botón.

Al botón le añadimos el atributo ng-click para que AngularJS se encargue de llamar a la función comenzar, que recibe el texto como argumento.

Primeramente detenemos la ejecución si no hay texto, es decir, si lo dejaron en blanco. Luego, quitamos todos los acentos y letras ñ, para que los usuarios no se quejen de que pusieron bien la palabra pero “olvidaron la tilde”.

Luego, separamos todo el texto en cada espacio que encontremos, y lo convertimos en un arreglo. Lo recorremos completamente y en cada iteración hacemos una comparación.

Si el azar nos dice que borremos la palabra, entonces la borramos. Y ponemos en un nuevo arreglo (no el original, sino uno nuevo) un objeto con la palabra original y una cadena vacía, que será la que introducirá el usuario.

En caso de que no se deba borrar la palabra, la ponemos tal y como está.

La variable del contador es para que no queden muchos inputs cercanos o pegados.

¿Debería quitar esta palabra?

Este método se encarga de regresar, de acuerdo a una elección aleatoria, un booleano. Simplemente elige un valor de un arreglo. En el arreglo hay más falsos que verdaderos, pero esto ayuda a que no elimine muchas palabras. El código es este:

Verificar si coinciden

Finalmente, para verificar si el usuario introdujo la palabra correcta, en la vista agregamos algunas clases dependiendo de ello. Si está bien, agregamos la clase is-valid y si no, la clase is-invalid. Esto hace que se coloree de verde o rojo.

También es importante notar que la anchura del input viene dada de acuerdo a la longitud de la palabra. Dicha anchura o longitud es calculada con una fórmula medio rara pero que al final de todo funciona y cambia de acuerdo a qué tan larga esté la palabra.

Tal vez sería mejor calcular el ancho en una función interna, pero hoy no cambiaré el código.

App final

Así se ve al hacer click en comenzar:

Probar

Aquí dejo un pen para probar la app en vivo. Espero que les guste 🙂

See the Pen Memorizar o estudiar texto by Luis Cabrera Benito (@parzibyte) on CodePen.

Por cierto, dentro del código hay una directiva que me robé de por ahí, la cual se encarga de, como su nombre lo dice, enfocar el siguiente input cuando se presione la tecla Enter.

Conclusión

Recuerdo que hice esa cosa para memorizar algunas cosas en un examen. Soy muy malo con mi memoria, y creo que no sirvió para mucho.

Si hay algo que me molesta son los exámenes en donde tienes que utilizar la memoria para responderlos. Qué pereza y qué pérdida de tiempo, prefiero las cosas prácticas. Pero en fin, ojalá a alguien le sirva el software.

Idioma español de datepicker en Materialize CSS

Introducción

MaterializeCSS es un framework CSS que implementa Material Design. Es utilizado junto con jQuery. Tiene muchos componentes, entre ellos el datepicker.

Un datepicker es un control para que el usuario elija una fecha. Por defecto, viene en inglés, pero podemos cambiarlo a cualquier idioma, y en este caso será al español.

Cambiar idioma de datepicker

Es muy simple. Una vez que el documento esté listo, seleccionamos a todos aquellos elementos HTML que tengan la clase datepicker y llamamos al método pickdate. Le pasamos como primer argumento un objeto con las etiquetas en el idioma de nuestra preferencia.

En este caso, las configuramos en español. Como podemos ver, proporcionamos la traducción de meses y días, así como sus formas cortas. Y también algunas cosas como la navegación y los botones de “Limpiar” y “Hoy”.

El código de ejemplo en Javascript es este:

Y el HTML para mostrarlo es el siguiente:

Demostración de cambio de idioma de MaterializeCSS y Datepicker

Aquí dejo un pen para demostrar que esto realmente sirve.

See the Pen Datepicker y Materialize CSS en español by Luis Cabrera Benito (@parzibyte) on CodePen.

Pequeño, muy pequeño sistema de ventas con PHP y MySQL

Introducción

Hace algunos días hice un ejercicio de un sistema de ventas en PHP. Está escrito en puro PHP, nada de Javascript. Eso sí, para los estilos utilicé una variante de Bootstrap.

Los archivos no tienen una estructura, pero como lo dije, es un ejemplo. También escribo esto porque igual y le sirve a alguien más o me sirve a mí mismo para algunas referencias.

Para la persistencia de datos utiliza MySQL. Guarda productos y ventas. No maneja permisos de usuarios. Almacenamos el carrito de compras en la sesión, y bueno, mejor lo explico por partes.

Continue reading…

Configuración de CodeIgniter v3 y PDO con MySQL

Introducción

En algún (y seguramente muy mal) momento de nuestra vida puede que nos toque trabajar con este framework que a mi parecer no es tan bueno como su competencia que ya ni parece competencia: Laravel. En fin, como estaba diciendo, puede que trabajemos con CodeIgniter y necesitemos conectarnos a MySQL utilizando PDO.

Hoy veremos cómo configurar el archivo que se encarga de la conexión a la base de datos para que funcione correctamente. Este ejemplo funciona como un encanto en la versión 3.1.7 pero supongo que igual será para las versiones futuras. Y si estás usando una versión anterior, te recomiendo actualizar.

Configuración para conectarse a MySQL con PDO

Aquí dejo un ejemplo de configuración que, al menos a mí, me ha funcionado para utilizar MySQL con la librería PDO de PHP. Recordemos que este archivo está ubicado en application/config/database

Y con eso podemos comenzar a trabajar usando PDO.