rss
twitter
  •  

CodeIgniter 2.0

| Posted in General |

2

codeigniter 2.0

Oficialmente hablando no ha sido lanzado aun, sin embargo el desarrollo actual es extremadamente estable y los pocos issues que preserva son cambios menores y a veces peticiones descartables.

En lo personal decidí implementarlo sobre un desarrollo que ya tenía montado con la versión estable 1.7.2 y debo decir que me tomó sólo 5 minutos realizar los cambios necesarios para actualizar a la versión 2.0.

Uno de los cambios más esperados de CodeIgniter 2.0 es la re-formulación del motor para abandonar por completo las prácticas de PHP4 y adaptarse a PHP5 (específicamente PHP5.1); en mi opinión es un cambio importantísimo y muy beneficioso, sin embargo es de lamentar que se hayan demorando 6 años para poner en uso algo que debieron hacer desde entonces.

Muchos aun se preguntan el porqué no tomar el toro por los cachos y haberse adaptado a PHP5.3; pero no deja sin embargo de ser una grata noticia el sólo hecho de haber abandonado a PHP4 el cual era su talón de Aquiles cuando era comparado con muchos otros frameworks.

Otro cambio que se vino con el desarrollo de CodeIgniter 2.0 fue la migración del sistema de control de versiones a Mercurial hospedando el proyecto en bitbucket

Quienes deseen lanzarse al agua con este fantástico Framework pueden sentirse confiados en probar la versión 2.0 desde ya sin miedo a problemas de compatibilidad a la hora del lanzamiento oficial de la versión final.

DESCARGAR CODEIGNITER 2.0

¿Cual es la edad ideal de un Programador Senior PHP ?

| Posted in General |

2

No cabe duda que los muchachos de hoy día son unos genios desde que nacen, desde que los primeros rayos de luz tocan sus retinas ya están observando y comprendiendo un mundo mucho muy diferente al que conocimos en el pasado, rodeados de nuevas tecnologías que aun nos sorprende; y sin duda cada nueva generación será más “avanzada” aún.

Lo mismo sucede con la genialidad tecnológica, grandes genios (y ahora multimillonarios) son muchachos muy jóvenes. Por citar a Sergey Brin y Larry Page los creadores de Google o a Mark Zuckerberg el genio detrás de Facebook. Todos ellos muy jóvenes.

Pero, ser un Programador Senior PHP va más allá de tener una “chispa de genialidad” y algo de suerte para convertirse en un hito de la historia universal, ser un Programador Senior PHP no es sólo saber programar en PHP.

Ahora bien, alguno podría auto-evaluarse y decir: “yo desarrollé un framework, eso me hace PHP Senior“… pero me temo que no, eso no te convierte en un SENIOR.

Otro dirá: “Yo he desarrollado más de 200 sistemas web para distintos clientes“, qué bien !… pero eso tampoco te hace SENIOR.

No faltará quien diga: “tengo muchos artículos redactados en la web sobre PHP“, felicidades… pero sigue sin ser lo necesario para convertirte en un SENIOR.

Y es que parte del problema es la edad…. si, la edad. Aunque suene disparatado.

Analicemos los hechos:

* PHP nació en 1995 pero llegó a conocerse recién en tierras latinoamericanas casi 2 años después: 1997
* PHP tal como lo conocemos hoy, tiene la forma de PHP4 más que PHP3 (o PHP5 incluso) el cual vio la luz en el año 2000
* Comprender hexadecimales, binarios, vectores y aritmética progresiva (necesarios para establecer la bases fundamentales de los operadores en PHP), es algo que un individuo promedio conoce a la edad de 15 años (cuando cursa el 8 grado de educación básica)

PHP entonces tiene 12 años de edad aproximadamente (15 para ser exactos pero no olvidemos el factor socio-económico que siempre produce retrasos tecnológicos en estas tierras sur-occidentales)… y si alguien se subió al tren de PHP digamos a una edad de 17 años quiere decir que apenas ha conocido los últimos 5 años de PHP y esa es toda su experiencia, la cual es sólo 1/3 un tercio de lo que algunos con más edad ha podido saborear.

Puede que haya excepciones y hay quien diga, pero yo programo desde que tengo 8 años… quizá, y si es así felicidades… quizá te conviertas en un buen programador, pero por ahora… no serás un SENIOR hasta que llegues a la edad en la cual comprendas :

* Que no te las sabes todas.
* Que la humildad es algo que también se lleva a nivel de código.
* Que desarrollas para ti y no para los demás.
* Que no tienes nada que demostrarle al mundo, sólo a ti mismo.
* Que no necesitas que tu nombre aparezca muchas veces en Google para sentirte “famoso”.
* Que siempre habrá alguien que sepa más que tú.

Y es que lo que te hace SENIOR, no es lo bien que programes, la cantidad de funciones que te sepas de memoria o los certificados que te avalen… lo que te hace SENIOR es la experiencia y eso estimados amigos, sólo se gana con la edad no con los miles de proyectos o las millones de líneas de código que hayas escrito.

Si tienes más de 30 años (naciste antes de 1980), trabajaste con PHP3, instalaste y compilaste tú mismo PHP+Apache desde los códigos fuentes cuando antes no existía los LAMP o WAMP, si no te has “ensuciado” la mente con otros lenguajes de programación y en su lugar estás dedicado en cuerpo, alma y corazón a PHP desde hace más de 12 años sin dejar de pensar en ello un sólo día de esos más de 4300 días, si lograste desarrollar sistemas procedimentales limpios y lograste hacer de tripas corazón de la programación orientada a objetos con lo poco que había antes de PHP5, si has creado tus propios sistemas que no se parece a nada nunca antes visto y gozas del respeto de la comunidad pero a su vez conservas la humildad de reconocer que no te las sabes todas…

… entonces amigo mio, eres un Programador Senior PHP

Codeigniter: Ruta base_url en nuestros javascript

| Posted in General |

1

Como muchos ya saben, las rutas de los recursos en codeigniter han de ser siempre llamadas usando la ruta absoluta del recurso que deseamos vincular o cargar; y para ello disponemos de

<?=base_url()?>

el cual carga el path general de nuestro sitio que imagino previamente ya has configurado en tu archivo config.php

Pero, ¿Qué pasa si queremos hacer javascript dinámico que necesite cargar recursos URL de nuestro propio sitio, por ejemplo para hacer llamados AJAX?, ¿Cómo le digo a javascript la ruta base_url que sólo sabe PHP?

Pues hay un truco simple, pero efectivo:


<head>
<script src="<?=base_url()?>/js/jquery.js" type="text/javascript"></script>
<script type="text/javascript">
base_url = '<?= base_url();?>'
</script>
</head>

Listo !, ya tienes la variable base_url en modo javascript y lista para ser usada como por ejemplo:


JQuery('#refrescar').click(function() {
        $('#captcha').attr("src", base_url+'captcha?'+Math.random());
});

CodeIgniter – URL amigable con guión

| Posted in General |

2

Codeigniter, así como muchos otros frameworks están basados en MVC, y los controladores al ser clases de POO, sus nombres y métodos no pueden llevar guión “-”

Así pues una URL típica del método MVC sería:
dominio.com/controlador/método/dato1/dato2

Pero qué sucede si quiero URLs más amigables para los motores de búsqueda, para el dichoso SEO ;-) algo como:
dominio.com/controlador-principal/

Pues no podría de buenas a primeras jugando con el nombre del controlador, es por ello que recurrimos a la manipulación del enrutado (routing) el cual encontramos en el archivo routes.php


$route['(.+)-(.+)-(.+)-(.+)-(.+)'] = “$1_$2_$3_$4_$5″;
$route['(.+)-(.+)-(.+)-(.+)'] = “$1_$2_$3_$4″;
$route['(.+)-(.+)-(.+)'] = “$1_$2_$3″;
$route['(.+)-(.+)'] = “$1_$2″;

Así soporta URLs con guiones de hasta 5 segmentos, por ejemplo, si tenemos nuestra dirección “dominio.com/analisis-precio-unitario”, estas líneas reescribirán y llamará a la clase “dominio.com/analisis_precio_unitario”.

Si necesitas más segmentos, solamente ve añadiendo más líneas siguiendo el mismo patrón.

Gracias a http://www.wakamolee.com/ por el dato !

Instalar y configurar monit para linux

| Posted in General |

0

Monit

No hace mucho puse en marcha en varios servidores un interesante monitor de servicios que es capaz de ejecutar comandos y lanzar alertas que nosotros programemos ante determinadas condiciones que fijemos.

Es capaz de monitorizar cualquier tipo de servicio o demonio, archivos de disco o sistema, vigilar espacios de discos, identificadores de proceso PID, realizar checksum y muchísimas cosas más, su forma de configurar es tan potente que configurarlo resulta en casi un lenguaje de programación.

Sin embargo no hay que asustarse, ya que es tremendamente intuitivo.

La maravilla de que les hablo se llama MONIT y es de licencia libre.

Advertencia: Este artículo es para profesionales que están plenamente familiarizados con servidores Linux. No me hago responsable de ningún daño en su sistema.

Lo primero es bajarnos una copia del programita, al momento de redactar este tutorial la versión estable es la 5.1.1. (no olvides que todo esto has de realizarlo como ROOT del sistema)


wget http://mmonit.com/monit/dist/monit-5.1.1.tar.gz
tar zxvf monit-*
cd monit*
./configure --without-ssl
make &amp;&amp; make install

Bien, ya lo hemos instalado… la opción –without-ssl es opcional pero yo la prefiero para evitar que el monitor web que veremos más adelante tenga que necesariamente usar un protocolo HTTPS.

Bien, ya está instalado pero debemos saber que aunque esté instalado faltan 2 cosas: el archivo de configuración y colocarlo como demonio (servicio que se auto-ejecuta cada vez que arranquemos nuestro servidor).

Primero, vamos a preparar a monit como un servicio activo:


cp contrib/rc.monit /etc/init.d/monit
chmod 755 /etc/init.d/monit
ln -s /usr/local/bin/monit /usr/bin/monit
chkconfig --add monit
chkconfig monit on

Y ahora nuestro archivo de configuración principal /etc/monitrc y la carpeta /etc/monit donde colocaremos de forma ordenada e independiente cada ‘monitor’ que deseamos establecer :


touch /etc/monitrc
chmod 700 /etc/monitrc
mkdir /etc/monit

Y nuestro archivo de configuración /etc/monitrc:


# Monit control file
# ==================

# Monit global settings:
# ----------------------
set daemon  60
set logfile syslog facility log_daemon
set mailserver localhost
set alert usuario@dominio.com # direccion a donde enviaremos las alertas del sistema
set mail-format {
from: monit@localhost
subject: $SERVICE $EVENT
message: $ACTION $SERVICE at $DATE on $HOST: $DESCRIPTION.
}

set httpd port 2812 and
allow xxx.xxx.xxx.xxx # La IP remota que tendrá permiso para poder ver el monitor web
allow usuario:clave #pues eso... los permisos que necesitas para poder entrar al monitor vía web

include /etc/monit/server.monit
include /etc/monit/httpd.monit
include /etc/monit/mysqld.monit

Como podrán ver este archivo de configuración permite establecer cada cuanto tiempo realizar la revisión, el formato de correo, remitente y destinatario, servicios que activaremos (con include), y acceso al puerto 2812 vía web con usuario y clave (no olvides abrir este puerto en tu firewall)

Listo, ahora vienen los archivos de configuración de cada servicio:

server.monit:


# Monit Server  settings:
# ----------------------
check system xxx.xxx.xxx.xxx #IP de tu host
if loadavg (1min) > 5 then alert
if loadavg (5min) > 10 for then alert
if memory usage > 90% then alert
if cpu usage (user) > 70% for 3 cycles then alert
if cpu usage (system) > 30% for 3 cycles then alert
if cpu usage (wait) > 20% for 3 cycles then alert

httpd.monit:


#
# Monitor Apache (httpd)
#
check process httpd with pidfile /var/run/httpd.pid
start program = "/etc/init.d/httpd start"  with timeout 60 seconds
stop program  = "/etc/init.d/httpd stop"
if totalcpu > 90% for 3 cycles then restart
if totalmem > 95% for 3 cycles then restart
if children > 250 for 3 cycles then restart
if cpu > 70% for 3 cycles then restart
if failed host xxx.xxx.xxx port 80 protocol http then restart #IP de tu host

mysqld.monit:


check process mysql with pidfile  /var/run/mysqld/mysqld.pid
group database
start program = "/etc/init.d/mysqld start"
stop program = "/etc/init.d/mysqld stop"
if cpu > 95% for 2 cycles then restart
if memory usage > 75% then restart
if failed host xxx.xxx.xxx port 3306 protocol mysql then restart #IP de tu host

Listo, cada quien se puede ajustar sus monitores a su gusto, hay muy buena documentación y muchos ejemplos

Respecto a monit, sólo resta ponerlo a andar:


/etc/init.d/monit restart

Verificar las sintaxis de nuestros archivos de configuración:


monit -t

Y si queremos “recargar” nuestro monitor para releer los archivos de configuración sin necedad de parar el servicio, podemos hacer:


monit reload

Ce tout !, para ver nuestro monitor vía web: http://xxx.xxx.xxx.xxx:2812 (IP del servidor)

Lo demás es lectura, experimentación y curiosidad… las posibilidades son casi infinitas !