Video subtitulado de http://www.code.org/ en el cual se explica por que todo el mundo debería saber programar
Archivo de la etiqueta: Programming
Obtener Nombre del día de la Semana
Si quieres obtener el nombre del día de la semana en php fácil y sencillo:
date_default_timezone_set(‘America/Mexico_City’); //Asignas la zona horaria de tu país.
setlocale(LC_TIME, ‘spanish’); //Fijamos el tiempo local
$diaSemana=strftime(«%A»); // Guardamos el Nombre del día de la semana.
echo «Hoy es:».$diaSemana; //Imprimimos El día.
Jquery datepicker versus html5 date
Una de las novedades que incorpora el Html5 son los input de tipo date. Como esta ocurriendo con muchas de las novedades de Html5 algunos navegadores lo soportan y otros no. Dentro del grupo que lo soportan están Chrome y Opera, los que no lo soportan de momento son Firefox, Safari e Internet Explorer, esto en lo que son navegadores de escritorio, en el campo de los dispositivos móviles el único que lo soporta es Safari. http://caniuse.com/#feat=input-datetime
Esto nos puede suponer un problema a la hora de desarrollar nuestras web implementando este tipo de novedades, y al final podemos optar por hacer lo que estamos acostumbrados ha hacer y que nos funciona, que suele ser la inclusión de un datepicker en javascript, como por el ejemplo el Datepicker de Jquery, y olvidarnos de estas novedades hasta que los desarrolladores, o quiza los fabricantes, de navegadores se pongan de acuerdo.
Una solución en este tiempo intermedio entre quien lo tiene y quien no, es usar la libreria Modernizr. Con esta libreria vamos a poder comprobar de una manera sencilla si el navegador del cliente soporta o no soporta esta caracteristica, y muchas otras cosas mas.
La instalación es sencilla, nos descargamos la version de desarrollo (development) o produccion (production) y integramos el script descargado dentro de las etiquetas de nuestra pagina web. Por ejemplo imaginemos que el fichero descargado lo renombro como modernizr.js y lo situo dentro de la carpeta scripts que esta en la raiz de nuestra pagina web. Tambien incluiremos la libreria css del jQuery UI para la cual al igual que hare despues con las librerias javascript de jquery los incluire desde la pagina http://code.jquery.com/
Tambien incluire en esta pagina el formulario con el campo input y al final los scripts de jQuery y la función que
detectara si esta soportada o no esta caracteristica en nuestro navegador.
<html>
<head>
<title>Ejemplo de input date</title>
<link href="http://code.jquery.com/ui/1.10.2/themes/flick/jquery-ui.min.css" rel="stylesheet" />
<!-- Nuestras etiquetas meta o archivos css -->
<script src='scripts/modernizr.js'></script><!--Archivo Moderniz descargado -->
</head>
<body>
<!-- El cuerpo de la web -->
<form name='frmFecha' id='frmFecha' method='post' action='#'>
<label for='fecha'>Seleccione Fecha</label>
<input type='date' name='fecha' id='fecha' placeholder='dd/mm/aaaa' />
</form>
<script src='http://code.jquery.com/jquery-1.9.1.min.js'></script>
<script src='http://code.jquery.com/ui/1.10.2/jquery-ui.min.js'></script>
<script>
$('document').ready(function(){
if (!Modernizr.inputtypes.date) {
$('#fecha').datepicker();
}
});
</script>
</body>
</html>
Enlaces de interes http://jqueryui.com/datepicker/ http://diveintohtml5.info/detect.html#input-types
Browser Refresh – Plugins para Sublime Text 2
Hace un tiempo hablaba de los IDEs para programar con PHP y entre ellos se encontraba el Sublime Text 2 el cual tengo que decir que cada día me gusta y lo uso mas.
Hoy con esta entrada voy a comenzar con una serie de entradas con plugins que me parecen muy interesantes y útiles a la hora de usar este programa. Uno de estos plugins es el Browser Refresh el cual nos permite, utilizando nuestro navegador web preferido, ver como van quedando nuestros cambios, y así evitarnos el tener que estar pasando del entrono de programación al navegador.
Bucle For vs Bucle For/in en JavaScript – JavaScript Tips
A la hora de recorrer un conjunto de datos o un Array en JavaScript, lo normal es usar el bucle for de toda la vida
var valores = new Array('uno', 'dos', 'tres');
for (var i=0; i < valores.length; i++ ) {
document.write(valores[i]);
}
Este es el bucle al cual estamos acostumbrados, y siempre tenemos que usar length para calcular la dimensión del Array
En cambio si usamos el bucle for/in no hace falta tener que calcularlo
var valores = new Array('uno', 'dos', 'tres');
for (var i in valores) {
document.write(valores[i]);
}
Como se puede ver es bastante mas sencillo usar el bucle for/in que el for. Este bucle seria al equivalente en PHP del foreach
Otra ventaja mas que tiene es que nos permite recorrer un objeto de JavaScript, algo que con el bucle for usando length no nos permite hacer, por lo menos de una manera sencilla.
var person={fname:"John", lname:"Doe", age:25};
for ( x in person) {
document.write(person[x]);
}
Servidor PHP integrado en PHP 5.4
Una de las nuevas utilidades con las que cuenta el PHP 5.4 es la del servidor integrado, para lanzarlo es tan sencillo como abrir la terminal, situarnos en el directorio raíz de nuestra aplicación y ejecutar lo siguiente:
php -S localhost:8000
En este ejemplo he usado el puerto 8000 pero si este lo tenemos ocupado podemos probar con otro que tengamos libre. Este servidor esta pensado solo para desarrollo y no para producción.
+ Info
IDEs para programar con PHP – Un poco de historia
Llevo muchos años programando con PHP y aun no me he decantado al 100% por un IDE para programar, creo recordar que al principio usaba Dreamweaver, después pase por el programmers notepad, luego con Aptana, NetBeans, eclipse, Zend Studio, de vez en cuando TextMate, Coda, Gedit, Sublime Text 2 y ahora estoy probando PHPstorm.
Y después del notepad llego Dreamweaver
He de decir que en un principio programaba sobre plataforma Windows, y usaba Dreamweaver, pero sus continuas «ayudas» a la hora de dejarnos regalos dentro del código me resultaban bastante molestas a la hora de conseguir los resultados finales deseados, este primer Dreamweaver creo que era la versión 3, y era un gran salto cualitativo comparado con la programación con el notepad, que aunque no lo he nombrado lo he usado, al igual que el vi, y volviendo a visitarlo años después, veo que sigue padeciendo los mismos males, a su favor diré que fue una gran ayuda el código coloreado, y sobre todo a la hora de la creación de sitios, el cliente ftp integrado que llevaba lo cual era, y sigue siendo un gran punto a su favor, así como la corrección de código.
Programmers Notepad, ¿involución o evolución?
Una de las herramientas que mas me gustaban a la hora de programación en C++ fue el Anjuta, y me resultaba extraño que no existiera alguna herramienta parecida para programar en PHP, y googleando descubrí el Programmers notepad. A su favor, era gratis, código coloreado, multilenguaje, muy ligero y rápido, hay que tener en cuenta que las maquinas que teníamos entonces no eran ni mucho menos las de ahora, y el en comparación con el Dreamweaver, el programers notepad era muy rápido, eso si no tenia, o por lo menos no recuerdo, el cliente ftp, pero para mi ese era un mal menor.
IDEs multiplataforma – Eclipse & java flavor (Aptana, Eclipse PDT, Zend Studio, NetBeans, PHPStorm)
Durante un tiempo, consideraba a linux que no era un sistema para trabajo de escritorio, eso si como buen Debianita que soy, si tenia que montar un servidor para cualquier tipo de servicio instalaba y trabajaba con Debian, y mas tarde con Ubuntu. Con la llegada de Ubuntu, considere que ya era hora de cambiar mi escritorio de trabajo a una distro Linux, con ese cambio tuve que buscar herramientas con las cuales poder programar en PHP con linux, lo cual no fue en absoluto un problema sino mas bien una ventaja. Creo que comencé ha programar algo con el Vi y luego con el Gedit, este ultimo me dio y me sigue dando muy buenos resultados, sintaxis coloreada, y multilenguage, ademas también permite cambiar el tema de trabajo para ponerlo a gusto de uno, yo soy de los que le gusta el fondo oscuro a la hora de programar. En esta búsqueda de un IDE completo descubrí Netbeans, el cual a parte de permitirme programar en Java y Ruby me servia perfectamente para programar en PHP, tiene un completo gestor de errores de sintaxis, documentación, vamos genial. A la par que usaba Netbeans descubrí Aptana, el cual, se centraba mas en Ruby y en PHP y tenia unos cuantos extras que me gustaban bastante. En la ultima versión Aptana ha integrado un servidor web integrado el cual nos permite no tener que instalar un servidor web con php en nuestro navegador para probar nuestras aplicaciones, lo cual suena muy bien, aunque si estamos trabajando con PHP 5.4 ya tenemos un servidor PHP integrado http://www.php.net/manual/en/features.commandline.webserver.php. Decir que el Aptana esta basado en Eclipse así que me lance a probarlo también y la sorpresa fue muy agradable.
Con Eclipse la programación alcanza otro nivel, aparte de la sintaxis, multiplataforma, corrector de errores y multitud de plugins que puedes ponerle, esta el modo debug, la integración con la base de datos de desarrollo, navegador interno, ejecución de test unitarios, control de versiones, etc… vamos completísimo, pero para mi gusto consume muchos recursos.
Al igual que Eclipse, por que no de ja de ser lo mismo el Zend Studio avanza un poco mas en la programación con PHP, el modulo de depuración y refractorización, estadísticas de consumo de procesos, integración con PHPcloud, lo hacen una herramienta completísima, y durante bastante tiempo ha sido mi principal herramienta de trabajo… hasta hace unos días en los que descubrí PHPStorm, el cual me ha sorprendido muy gratamente. A parte de estar basado en java, al igual que Eclipse y Zend Studio, no carga tanto el sistema, y la integración con herramientas de refractorización y calidad de código es impresionante, así como el sistema de gestión de versiones. Hay cosas que podríamos considerar tonterías pero que la verdad se agradecen como por ejemplo en las hojas css cuando defines un color te sale ese color en un recuadro en el lateral, o si tienes una regla css que se puede optimizar, te lo indica y te lo optimiza. O la visualización de código inyectado, por ejemplo una cadena SQL dentro de un código PHP te puede aparecer marcada para que de un solo vistazo la localices, en pocas palabras impresionante.
TextMate, Coda, Sublime Text 2, volvemos al principio.. o vamos más lejos
Aunque Sublime Text 2 es multiplataforma a diferencia de TextMate y Coda que solo son para Mac, lo he puesto aquí por que los tres editores, según mi opinión son del mismo tipo, aunque quizá Coda se salga un poco de ese estilo.
Durante muchos años, el programa por excelencia para programación en Mac ha sido el TextMate y tengo que decir que ese titulo esta muy bien merecido, rápido no lo siguiente, multilenguage, coloreado, plugins para todo lo que necesitas y mas, detector de errores, vamos completísimo, eso si la hoja de accesos rápidos y atajos de teclado también es completísima. Durante mucho tiempo el TextMate ha estado un poco estancado en su desarrollo, pero ya esta anunciada, y se puede descargar la versión 2 en la cual, aparte de migrar su código a open source las mejoras que han implementado son bastante buenas, pero creo que el tiempo que han estado parados lo han perdido frente a otra herramienta del mismo tipo que es Sublime Text 2. En lineas generales es bastante parecido a TextMate, esta basado en Python y al igual que Textmate tiene una larga lista de combinaciones de teclado para ejecutar distinas rutinas, asi com autocompletar comandos y funciones. También tiene un modo de no distracción y un mapa de código que puede resultados muy útil. A diferencia de TextMate, Sublime Text es multiplataforma.
Finalmente esta Coda, del cual la primera impresión fue muy buena, completísimo, sobre todo la parte de HTML y CSS, algo en lo que suelen flojear los otros, modo vista previa, el autocompletar, vamos un dreamweaver bien hecho y muy ligero.
| IDE | Plataformas | Idioma | Precio licencia | Enlace |
|---|---|---|---|---|
| Dreamweaver | Win/Mac | Multilenguaje | 529,82€ / Trial | Enlace |
| Programmer’s Notepad | Win | Multilenguaje | Gratuito | Enlace |
| Aptana | Win/Mac/Linux | Ingles | Gratuito | Enlace |
| Eclipse | Win/Mac/Linux | Ingles | Gratuito | Enlace |
| Zend Studio | Win/Mac/Linux | Ingles | 299,00€ / Trial | Enlace |
| NetBeans | Win/Mac/Linux | Multilenguaje | Gratuito | Enlace |
| PHPStorm | Win/Mac/Linux | Ingles | 94€ / Gratuito / Trial | Enlace |
| Sublime Text 2 | Win/Mac/Linux | Ingles | 59$ / Trial | Enlace |
| TextMate | Mac | Ingles | 45,63€ / Trial | Enlace |
| Coda 2 | Mac | Multilenguaje | 99€ / Trial | Enlace |
Errores Comunes en Visual Basic – VB Tips
Esta entrada se sale un poco de la linea de lenguajes de programación que suelo tratar, pero por si alguna vez lo necesitamos, esta pagina me ha sido muy útil a la hora de resolver algún que otro problema que me ha podido surgir usando visual basic.
http://www.homepages.dsu.edu/olsonch/VBCommonProblems/VBTips.htmlNombres cortos de variables en bucles – PHP Tips
La inmensa mayoría de programadores, entre los cuales me incluyo, a la hora de escribir un bucle for lo hacemos usando la variable i, y nos quedaría de la siguiente manera:
for ($i = 0; $i <= 10; $i++) {
// TODO Procesos a ejecutar
}
Este código esta claro y es muy fácil de interpretar.
Imaginemos ahora que tenemos un array llamado $ligas en el cual se almacenan las ligas de fútbol, cada clave de este array apunta a otra array con los equipos de esa liga, y cada clave numérica de este array apunta a un array donde aparecen los nombres de los jugadores.
for ($i = 0; $i < count($ligas); $i++) {
for ($j = 0; $j <= count($ligas[$i]); $j++) {
for ($k = 0; $k <= count($ligas[$i][$j]); $k++) {
echo $ligas[$i][$j][$k];
}
}
}
Si realizamos el diseño de nuestros bucles de esta manera seguramente, si queremos compartir este código con alguien le resultara un poco difícil de entender, y cuando digo alguien también nos incluyo a nosotros mismos dentro de un tiempo cuando revisemos el código. Quizá si realizáramos este código de esta manera seria un poco mas claro
for ($liga = 0; $liga < count($ligas); $liga++) {
for ($equipo = 0; $equipo < count($ligas[$liga]); $equipo++) {
for ($jugador = 0; $jugador < count($ligas[$liga][$equipo]); $jugador++) {
echo $ligas[$liga][$equipo][$jugador];
}
}
}
Ahora queda mas claro que es lo que se muestra en este bucle.
Conocer el sistema operativo donde se ejecuta nuestro PHP – PHP Tips
A veces podemos vernos en la necesidad de conocer que sistema operativo, o versión de este es en el que se esta ejecutando nuestro codigo PHP, por ejemplo si necesitamos establecer la configuración de las locales.
Tenemos dos opciones para conocerlo, la primera es por medio de la constante PHP_OS, y otra es con la función php_uname(). La primera solo nos va a devolver el sistema operativo, p.e Linux, FreeBSD, WINNT, … en cambio con la funcion nos devolvera una información mas completa. Por ejemplo
echo php_uname(); echo PHP_OS; /* Algunas posibles: Linux localhost 3.2.0-27-generic #43-Ubuntu SMP Fri Jul 6 14:46:35 UTC 2012 i686 Linux FreeBSD localhost 3.2-RELEASE #15: Mon Dec 17 08:46:02 GMT 2001 FreeBSD Windows NT XN1 5.1 build 2600 WINNT */
La funcion php_uname(), puede aceptar varios parametros, mode para poder especificar que tipo de salida queremos. Estos parametros son:
- ‘a’: Es la opción por defecto. Contiene todos los modos de la secuencia «s n r v m».
- ‘s’: Nombre del sistema operativo. eg. FreeBSD.
- ‘n’: Nombre del host. eg. localhost.example.com.
- ‘r’: Nombre de la distribucion. eg. 5.1.2-RELEASE.
- ‘v’: Informacion de la version. Varia mucho dependiendo de los sistemas operativos.
- ‘m’: Tipo de maquina. eg. i386.
echo php_uname();
// Linux pajaroto.ensenalia.com 3.2.0-27-generic #43-Ubuntu SMP Fri Jul 6 14:46:35 UTC 2012 i686
echo php_uname('s');
// Linux
echo php_uname('n');
// Localhost
echo php_uname('r');
//3.2.0-27-generic
echo php_uname('v');
// #43-Ubuntu SMP Fri Jul 6 14:46:35 UTC 2012
echo php_uname('m');
// i686

