Utilidades

Guardar datos del formulario en tiempo real (LocalStorage)

localstorage-feature
Share on LinkedInShare on FacebookTweet about this on TwitterShare on Google+

En algún momento te habrás topado con formulario que tienen varias etapas y por algún motivo debes recargar la pagina para seguir al siguiente paso y claro como aun no termina el registro no consideramos apropiado guardar aun esto a la base de datos y es algo engorroso estar creando una tabla temporal.

las soluciones pueden ser meterlo todo en una session en php  o utilizando lo nuevo (OK no tan nuevo) de javascript LocalStorage.

Grabaremos en LocalStorage en tiempo real

para ellos la idea es simple usaremos una función nativa setInterval  para guarde cada segundo lo que tengamos en los input’s.

como funciona?

Explico que hace el script y es algo simple usamos each para hacer un recorrido por todos los input , select y textarea (se puede agregar mas tipos) que tengamos en el DOM y capturamos el valor y lo metemos en variables localstorage que creamos con el nombre del elemento sea input , select o  textarea y con su valor, esto sucedera cada segundo.
Volvemos hacer otro recorrido de lo de los elementos  input , select o  textarea para obtener los datos de los localstorage ya que  para identificarlos necesitamos los nombres de estos elementos.

les dejo un ejemplo en funcionamiento:

El script


$(document).ready(function(){

                $('input[type="text"],select,textarea').each(function(){    
                        var name = $(this).attr('name'); 
                        value=localStorage.getItem(name);
                        var value = $(this).val(value);
                 })

                setInterval(function(){
                    $('input[type="text"],select,textarea').each(function(){    
                        var name = $(this).attr('name');
                        var value = $(this).val();
                        localStorage.setItem(name, value);
                    })
                    

                }, 1000);                 
            })

ejemplo online.

Share on LinkedInShare on FacebookTweet about this on TwitterShare on Google+
Read more

Documentar Código fuente PHP con ApiGen

Documentar código fuente PHP con ApiGen
Share on LinkedInShare on FacebookTweet about this on TwitterShare on Google+

Documentar con ApiGen

Hoy en día, la gran mayoría de la comunidad de programadores consideran como una buena práctica el hecho de comentar el código fuente, siempre y cuando estos comentarios estén estructurados y escritos de forma correcta; para que algún programa pueda ayúdanos a generar rápidamente nuestra documentación.

El principal objetivo de documentar el código fuente es básicamente es para facilitar la identificación y comprensión del funcionamiento o uso de las clases y sus métodos por todos los integrantes de un equipo de desarrolladores.

Hay muchas herramientas que nos pueden ayudar a documentar nuestro código fuente pero esta vez nos encargaremos de ApiGen.

1.- Documentar correctamente las clases y métodos.

ApiGen

2.- Descargar ApiGen desde su página web http://www.apigen.org/ y guardarlo en alguna ubicación del disco duro, en mi caso por ejemplo lo puse en C:/apigen/apigen.phar

3.- Verificar si ApiGen se ejecuta correctamente. Desde la consola de Windows nos ubicamos en el directorio donde guardamos el apigen.phar y ejecutamos la siguiente línea de comandos.

Documentar código Fuente con ApiGen

Si les aparece algo parecido a lo siguiente quiere decir que ya estamos listos para generar nuestra documentación de código fuente.

Documentar código Fuente con ApiGen

4.- Generamos nuestra documentación de código fuente; para ello es necesario tener identificado el directorio donde se encuentra nuestro código fuente PHP, y crear un directorio donde guardaremos los archivos generados por el ApiGen.

Ejecutar las siguientes líneas de comando en la consola de Windows.

Documentar código Fuente con ApiGen

5.- Revisar la documentación en el directorio asignado.

Referencias:

http://www.apigen.org/

https://www.sitepoint.com/generate-documentation-with-apigen/

http://code-epicenter.com/apigen-generate-documentation-for-your-php-project/

 

Share on LinkedInShare on FacebookTweet about this on TwitterShare on Google+
Read more

Trabajo con Cron Job del Cpanel

Share on LinkedInShare on FacebookTweet about this on TwitterShare on Google+

Tarde o temprano nos toparemos con la necesidad de tener tareas programadas o tambien llamadas cron job en los cpanel y en linux el archivo crontab (/etc/crontab) que sirve de mucho esto ya que de lo contrario tendriamos que estar detras del sistema y el aplicativo no nos estaria ayudando mucho pero si aun de lo dicho no entiendo mucho en que te puede servir te doy algunas ideas:

  1. enviar mail de recordatorio cuando  ya van a vencer sus facturas.
  2. Enviar boletines mensuales a todos los usuarios suscritos.
  3. Un sistema de ticket enviar mail de recordatorio de atencion.
  4. Alertar si un producto tiene poco stock por medio de un correo.
  5. Actualizacion  de registros en ciertas fechas que se cumplan
  6. .

  7. Sistema de agenda donde puedes hacer alarmas con fechas

entre muchas cosas mas que se te puedan ocurrir al entender la gran ayuda que puede ser pero se que si eres programador que ve por primera vez este tema te sentiras confundido como yo lo pase cuando tuve que toparme hace varios años atras. Entonces voy a desarrollar un caso que te ayudara mejor a entender.

CASO:
Tenemos un sistema de colegio donde tiene facturacion y contamos con un cronograma de pagos  quiero decir que tenemos una tabla con las fechas que debe pagar y vamos a avisar al cliente que su factura se vencera pero claro debemos enviar 2 dias antes que venza la fecha.

tenemos una tabla asi donde tenemos la fecha que vence “date_expiration” y al cliente “client_id”

cronograma

nuestro codigo del lenguaje de programacion que utilices debe restar 2 dias al date_expiration pero aqui lo vamos hacer con php. Realizare un codigo que simplemente va hacer un recorrigo a la tabla y en

la consulta le restare 2 dias y esa respuesta la comparare con la fecha actual y coinciden es que faltan 2 dias para que su fecha se venza.

 

$link=mysql_connect("localhost","root","pass");
mysql_select_db("colegio",$link);
 
//lo que hacemos aqui es una consulta a la tabla expiration_invoice y a al campo "date_expiration" le restamos 2 dias
$query=mysql_query("select DATE_ADD(date_expiration, INTERVAL -2 DAY) as fecha,client_id from expiration_invoice",$link)
//recorremos lo que nos devuelve la query
while ($data=mysql_fetch_array($query))
{
 
	if ($data["fecha"]==date("Y-m-d"))
	{
 
		/*hacemos una consulta a la tabla cliente por el id que tenemos "cliente_id" 
		y obtenemos el mail  para poder enviarle el correo informandole que vencera su factura*/
 
	}
 
}

 

en ese codigo fuente esta toda la logica y la idea es que cada dia esto se tiene que ejecutar a las 0 horas que ya seria el inicio de un nuevo dia. Asi todos los dias estaria haciendo el recorrido a revisar quien cumple la condicion pero como hacemos que corra cada dia automaticamente por que no es la idea que madrugues a ejecutar el archivo.

entonces si tienes un cpanel debes buscar la opcion:

cpanel_crontab

ya dentro de la opcion cron job debemos configurar desde esta pantalla

configuracion_cpanel_cronjob

aqui no ya nos ayuda mucho con la configuracion ya que tiene algunos predeterminados que son los mas comunes y tiene el que necesitamos pero explicare de todas maneras.

tarea_cpanel_crogramada

Minuto: 0
Hora: 0
Dia: *
Mes: *
Dia de Sema: *

en cristiano lo que dice hay es que se ejecutara:
en el minuto 0 de la hora 0 todos los dias de todos los meses de todas las semanas
y esto resumuento es que se ejecute a las 0 horas de todos los dias.

el punto de comando es donde debes ejecutar un comando linux y para ejecutar un archivo php en linux debes indicar la ubicacion del archivo y colocar antes php y resulta en nuestro caso esta ruta “/var/www/cron.php” y para ejecutarlo debe quedar asi “php /var/www/cron.php”.

se pueden hacer muchas combinaciones ya dependiendo de su necesidad del proyecto alguna duda escribir en la caja de comentarios.

Share on LinkedInShare on FacebookTweet about this on TwitterShare on Google+
Read more

escalar mi pagina web en diferentes dispositivos etiqueta viewport

Share on LinkedInShare on FacebookTweet about this on TwitterShare on Google+

Ahora con todo el auge de dispositivos portatiles es necesario que nuestra web soporte esos dispositivos y para eso tenemos las web resposives o web mobil pero existe una etique que hace que nuestra web se adapte a toda medida de pantalla aun hay que si tu web no esta muy maquetado (construccion de la web) o si los plugins de efectos no son soportados por el mobil saldran mal asi que esto no es una solucion ya que ademas todo se veria muy pequeño en un dispositivo mobil y hay entra el tema de experiencia de usuario UX.

esta etiqueta seria un complemento a responsive design o tambien web mobil:
con esto la web si escala al tamaño del dispositivo

<meta name="viewport" content="width=device-width">

si queremos que el usuario no escale la web (touch)

<meta name="viewport" content="width=device-width,user-scalable=no;">

si queremos que se pueda escalar el doble de su tamaño (pueden jugar con los valor)

<meta name="viewport" content="width=device-width,initial-scale=1.0,maximum-scale=2.0;">

 

Share on LinkedInShare on FacebookTweet about this on TwitterShare on Google+
Read more

Subir sql pesado‏ SOLUCION

Share on LinkedInShare on FacebookTweet about this on TwitterShare on Google+

Hace unos meses atras he tenido que migrar de hosting y se me dio un gran problema con base de datos (MYSQL) ya que pesaba algo mas de 100 MB, Hacer esto por phpMyAdmin ni pensarlo por que normalmente en los hosting los valores de php.ini son muy basico y en este caso hablamos de los valores de:

  1. max_file_uploads
  2. memory_limit

tipico que por esto mande error desde el phpMyAdmin ahora ya descartanto podemos usar un software de escritorio que uno que uso y me parece comodo para trabajar es el SQL-Front   que tiene opcion a conectarse a un servidor mysql remoto.

Instalas el programa y cuando abres te mando una venta donde clickeas en “new


en servidor colocas la ip o el url del dominio donde esta creado la base de datos lo demas por defecto y al ir a la pestaña Login hay tienes para colocar el usuario de la base de datos y luego aceptar y ya puedes ver desde tu escritorio la base de datos y puedes clickear a la base de datos importar  listo lo hace rapido.

Pero hay ocaciones que los hosting bloquean para evitar este tipo de coneccion para esto tenemos a BigDump  un script en php que configuramos con los datos de servidor,usuario de bd, contraseña de bd, nombre de la bd y la ruta del script sql que recomiendo que sea en el mismo nivel de directorio
Nota: todo esto lo hacen desde la linea 42

// Database configuration
 
$db_server   = 'localhost';
$db_name     = '';
$db_username = '';
$db_password = '';
 
// Other settings (optional)
 
$filename           = '';     // Specify the dump filename to suppress the file selection dialog
$ajax               = true;   // AJAX mode: import will be done without refreshing the website
$linespersession    = 3000;   // Lines to be executed per one import session
$delaypersession    = 0;      // You can specify a sleep time in milliseconds after each session
// Works only if JavaScript is activated. Use to reduce server overrun

 

despues de configurar esos datos lo ejecutamos colocando la url de ubicacion y ya con eso tenemos la base de datos. De todas maneras una de estas opciones si o si podras solucionar este problema.

Share on LinkedInShare on FacebookTweet about this on TwitterShare on Google+
Read more