15 oct. 2008

De cambios

Bueno amigos, luego de un buen rato sin reportarme por estos lares, les comento que decidí comprar dominio y hosting, así que nos mudamos a erickbravo.com.ve, las razones, bueno como sabemos blogger tiene sus limites y condiciones, ademas de dar el salto definivo y enseriarnos con esto, los espero en el nuevo rincon.

Ya pude migrar las entradas que estaban publicadas hasta la fecha, asi como las que tenia en review, en el nuevo espacio les contare, como realice estos pasos.


Por cierto, durante los primeros dias estaré, figoneando y arreglando detalles del sitio, perdonen por las molestias que les pueda causar.. :D

9 may. 2008

Otimización del Código que Generamos

Siguiendo con la onda optimizadora les dejo esta otra nota del emezetaBlog

Los programadores (sobre todo los que estamos aprendiendo) solemos preocuparnos poco de la optimización de código cuando realizamos un programa. A priori, le damos importancia a dos factores:

  • Funcionalidad: La más intuitiva de todas. Que el programa que estamos realizando, haga lo que buscamos.
  • Brevedad: Buscamos que el programa ocupe lo menos posible.

Otros factores como rapidez, comprensión del código, optimización, documentación... no son evaluados como criterios primarios. Sin embargo, son muy importantes.

En la programación web (más si cabe) uno de los criterios más importantes es la optimización, ya que disponemos de un servidor con recursos limitados. Si conseguimos que nuestro código sea más eficiente, dispondremos de más capacidad en nuestro servidor (menos carga).

Esto es especialmente importante cuando tenemos muchas visitas diarias: optimizar un script PHP de un artículo no repercute especialmente, en cambio, optimizar un script PHP que se ejecuta siempre (por ejemplo, el sidebar) mejora ampliamente la eficiencia de nuestro código.

En PHP Benchmark hacen algunas pruebas de eficiencia con respecto a funciones similares de PHP. A continuación voy a hacer un breve repaso, con algunos añadidos:

  • Usar HTML ante PHP: Si necesitas escribir HTML hazlo directamente sin utilizar echo o print. Usa PHP para imprimir información sólo cuando sea necesario.
  • Variables: Favorece siempre que puedas el uso de variables estáticas. No utilices variables que no necesites (ocupan memoria). Evita las variables globales en la medida de lo posible. Usa constantes.
  • Unset: Utiliza la función unset para destruir variables y liberar memoria, sobre todo con arrays o variables extensas. PHP usa un Garbage Collector, pero en mitad de un script puedes usarlo para maximizar la memoria disponible (útil en servidores limitados).
  • Bucles: Revisa bien los bucles en tus programas, si no es necesario un bucle, evitalo. Si puedes ahorrarte ciclos, hazlo. Comprueba la condición de parada y nunca uses funciones en ella (vuelca en una variable antes del bucle). En términos de velocidad un do..while es más rápido que un while, que a su vez es más rápido que un for.
  • Inclusiones: Organiza bien tu código y evita en lo posible el uso de funciones como include_once() y require_once(). Estas funciones son muy utiles para comprobar si un script ya ha sido procesado, pero son muy costosas. En su lugar utiliza include() y require().
  • Supresión de errores @: Al colocar una @ antes de una función evitamos que se muestre un posible mensaje de error. Muy útil, pero muy costoso. Es preferible utilizar un funcion() or ....
  • Random: Si queremos generar valores aleatorios con la función rand(), es recomendable utilizar la familia de funciones mt_rand(). Esta función utiliza un algoritmo de Mersenne Twister mucho más eficiente y rápido.
  • Uso de comillas en PHP: Las comillas simples interpretan literales, sin embargo, las comillas dobles además interpolan el valor de variables. Da siempre preferencia a las comillas simples y nunca escribas símbolos de dolar sin escapar (\$) en comillas dobles, ralentiza mucho la ejecución.
  • Comprobar si existen variables: Siempre se debería utilizar una función para comprobar si existe una variable. Entre las funciones isset(), empty() y is_array(), la primera es la más rápida y eficiente.
  • Operador ===: En las comparaciones, la diferencia del operador === con el operador == es que este último hace una comprobación de tipos de variables antes. Si estás seguro de que son del mismo tipo, utiliza el primero.
  • Memoria y velocidad: Utiliza memory_get_usage() y microtime() para comprobar la velocidad y la memoria que consume tu código.
  • Comparaciones: Los if / else son siempre más rápidos que los switch / case.
  • Las siguientes funciones son alias de las de su derecha. Utilizar la función de la izquierda es mucho más lento que usar la de la derecha:
    • chop -> rtrim
    • close -> closedir
    • die -> exit
    • dir -> getdir
    • diskfreespace -> disk_free_space
    • fputs -> fwrite
    • ini_alter -> ini_set
    • is_writeable -> is_writable
    • join -> implode
    • pos -> current
    • rewind -> rewinddir
    • strchr -> strstr
    • sizeof -> count
    Curiosamente, fputs, a pesar de ser un alias, se comenta que es más rápida que fwrite.
  • Incrementos: Cuando incrementamos una variable del modo $i++ es más lento que si lo hacemos ++$i. La diferencia es que la primera forma primero usa su valor y luego lo incrementa, en cambio, la segunda primero la incrementa y luego la usa. La segunda forma es más rápida, puesto que utiliza 3 opcodes, en lugar de los 4 opcodes de la primera. Usarla cuando sea posible.
  • Imprimiendo textos: La función echo es más rápida que la función print, además de otras diferencias.
  • Expresiones regulares: El uso de regexp es muy contradictorio. Como ventajas tenemos que usan muy poca de memoria, muy potentes y ahorran mucho código. Como desventajas son muy lentas, muy difíciles para novatos o personas que no conozcan teoría de autómatas y lenguajes formales. Personalmente, aconsejo evitarlas a no ser que sean muy necesarias. Por ejemplo, la expresión regular preg_match("![0-9]+!", $foo); reconoce cualquier cadena que sea un número, esto es mucho mas eficiente usando la función ctype_digit($foo);. Las funciones strcasecmp(), strpbrk() y stripos() pueden ayudar mucho.
  • Reporte de errores: Utiliza E_STRICT como nivel de error para hacer debug en tu código PHP. Revisando los logs podrás ver todos los avisos de posibles errores con un nivel máximo.
  • Separaciones: split() permite utilizar expresiones regulares, mientras que explode() no. Intenta utilizar explode siempre antes que la función split.

Cuanta memoria consumen tus scripts???

Buscando información referente a como podemos aprovechar y optimizar los recursos con los que contamos al momento de desarrollar nuestras aplicaciones, me tope con la siguiente nota del emezetaBlog

Uno de los aspectos que más debemos cuidar es el uso de memoria RAM que hacemos a medida que se ejecutan nuestros scripts.

Cuando los visitantes acceden a nuestras páginas, la ejecución de los scripts PHP (o Perl, Ruby...), las consultas SQL a la base de datos, la optimización de la programación y otros factores ayudan o perjudican en el uso de memoria RAM. La mayoría de las veces no tenemos ni idea de cuanta memoria estamos utilizando en cada petición de página, pero vamos a averiguarlo.

PHP 5.2.0


echo 'Memoria usada: ' . round(memory_get_usage() / 1024,1) . ' KB de ' . round(memory_get_usage(1) / 1024,1) . ' KB';

PHP 4.3.2


echo 'Memoria usada: ' . round(memory_get_usage() / 1024,1) . ' KB';

Con este código PHP (sólo en PHP 4.3.2 o superior) obtendremos la cantidad de memoria que está consumiendo por petición nuestro blog o página web. Pero puede ocurrir que nuestro sistema no esté compilado con esta opción, para ello podemos utilizar la siguiente función. Obviamente, necesitaremos

function memory_get_usage() {
$pid = getmypid();
exec("ps -o rss -p $pid", $output);
return $output[1] *1024;
}

En muchos casos nos resultaría más útil guardar en una variable (recuerda, no debes usar echo al principio si envías cabeceras, obtendrás un error) el consumo de memoria que hay al principio del script:

$mem_inicio = round(memory_get_usage() / 1024,1);

Así, más tarde lo podríamos imprimir por pantalla para compararlo con el consumo final y conocer el verdadero gasto del script, ya que el consumo final puede estar debido a razones «anteriores» a la petición del script, como el uso del mod_rewrite, gestión de los procesos del apache y muchos otros criterios.

Date cuenta que esta es una buena forma de ver cuánto está consumiendo por petición nuestra aplicación o cms. ¿Y tu blog cuánto consume por petición?

8 may. 2008

Neo cube

Cada cierto tiempo sale de a flote de las entrañas de internet un extraño objeto, juguete o como lo quieras llamar del cual te enamoras nada más verlo y sientes la 'necesidad' de poseerlo sin excusas.

Seguramente te canses de él a la semana de tenerlo, aun así lo puedes encargar en www.theneocube.com



27 abr. 2008

26 abr. 2008

Nokia N96




Un poco de mala suerte y sufrimiento, que a la final es compensado, espero que sea el próximo gadget que pueda tener :D

25 abr. 2008

Espejos o Mirrors de Debian en Venezuela

A traves de la lista de Debian-ve se han anunciado varios espejos de Debian disponibles para aquellos entusiastas en Venezuela(aunque esta nota tenia tiempo por publicarla :S).

Se encuentran disponibles:

Universidad Simón Rodríguez (UNESR)
deb http://debian.unesr.edu.ve/debian/ etch main contrib non-free
deb-src http://debian.unesr.edu.ve/debian/ etch main contrib non-free

Universidad de los Andes (ULA)
deb http://ftp.ula.ve/debian/ etch main contrib non-free

Compañia Anónima Nacional Teléfonos de Venezuela (CANTV)
deb http://mirror-01.cantv.net/debian etch main contrib non-free

Venezuela Linux Users Group (Velug)
deb http://debian.velug.org.ve/debian etch main contrib non-free

Centro Nacional de Tecnologías de Información (CNTI)
deb http://debian.cnti.gob.ve/debian/ etch main contrib non-free

15 abr. 2008

Indicador de calidad de código con WTFs/m


Nuevo idicador referencial para medir el codigo fuente que generas

10 errores más comunes al comenzar un blog

Vía Kabytes

1. No respetar licencias. Un mal común de muchos, hay que respetar el trabajo de los demás, los links son algo poderoso, no solamente por que citando respetaremos a otras personas, sino que cada trackback que enviamos es un saludo amistoso al blogger autor de la cita. También hay que evitar citar con el famosos vía, es poco usable y no queda bien(por aqui ya estoy ponchado :S).

2. No tener un botón visible de sindicalización de contenidos. Es lo primero que tenemos que hacer luego de terminar la instalación de nuestro blog, cada visita es importante, y brindarle la posibilidad de suscribirse es vital. Hay que facilitar todas las herramientas posibles para esta tarea.

3. No responder nunca los comentarios. Me molestan los blogs que nunca pero nunca responden un solo comentario, da la impresión de no tratarse de un blog, o que al blogger poco le importa lo que piensen sus lectores. No hace falta responder todos los comentarios, pero de vez en cuanto es importante responder.

4. No brindar la mayor cantidad de fuentes. Al principio uno piensa que es “perder” al visitante, la realidad es que cualquier persona que visite nuestro blog en busca de información tiene que encontrar la mayor abundancia de la misma, cuanta más información mejor, los lectores lo agradecerán con su suscripción.

5. Falta de sinceridad. La honestidad es algo que escasea en mucho casos, cuando un blogger es honesto eso se refleja en la postura de los lectores hacia uno, errores los tenemos todos, es muy loable reconocer cuando nos equivocamos. Si nos equivocamos y lo decimos nadie nos podrá recriminar nada.

6. No salirse tener nunca offtopic. Es interesante salirse de nuestra temática en el caso de estar muy definida, suele ser divertido dar debate sobre cosas que no son recurrentes de nuestro blog, probablemente será un aire fresco para nuestro blog. Tampoco tenemos que abusar :D

7. Imitar a las empresas y medios tradicionales. Los blogs son frescos, tiene una visión completamente distinta a la de un medio tradicional, tratar un blog como si fuera un periódico con una estructura completamente rígida hacer perder la esencia y el poder principal de tener un blog. Tampoco tiene mucho sentido imitar la estructura de una empresa convencional cuando la realidad es distinta, estoy de acuerdo con tener un mail para patrocinadores, otro para el contacto, pero muchas veces se peca de exceso y se terminan creando decenas de correos para simular distintas áreas que al fin y al cabo terminan controlando como mucho dos personas. Inventar departamentos cuando no existen no tiene sentido.

8. Considerar trolls a las personas que no están de acuerdo con tu postura. Al principio que alguien te diga que estas equivocado es chocante, al menos si no estas acostumbrado, pero con el tiempo uno comprende que los blogs son espacios de libre expresión y probablemente entre tus lectores exista mucha gente que sepa mucho mas que uno. Es interesante recibir el feedback de los lectores para comprender y aprender más. Obviamente esto es valido cuando la conversación transcurre en un clima de respeto.

9. No alojar las imágenes y archivos en nuestro propio servidor. A nadie le causa gracia que otro use la transferencia que estamos pagando de nuestro bolsillo, si ves una imagen que te sirve, primero la descargas y luego la usas de tu servidor, el hotlinking es algo que esta muy mal visto y con razón.

10. Escribir un blog como si no existiera un humano detrás. Un blog es solo la extensión de nuestra persona, por lo tanto, lo que hacemos en el tendríamos que poder hacerlo en la vida real, nunca digas algo que no dirías en persona.

8 Consejos para Ahorrar en el consumo de energía de tu laptop

  • Asegúrate que el brillo de tu computadora este seteado en un nivel confortable.
  • Cierra todos los programas que estén corriendo en segundo plano y no estés utilizando, estas aplicaciones utilizan al procesador por lo tanto consumen mas energía.
  • Si no lo estas utilizando asegúrate de tener apagado el Bluetooth y el adaptador Wireless.
  • Asegúrate de no tener ningún CD o DVD en la compactera que no estés utilizando. Los mismos hacen que las lectoras hagan girar el disco aunque no estén en uso y eso consume energía.
  • Apaga todas las luces (LED) de tu computadora. Muchas permiten esta opción, revisa los manuales.
  • Desconecta todos los dispositivos USB que no estés utilizando. Cada uno consume cerca de medio Amper y 5 Volts.
  • Cuando no uses tu computadora por pocos minutos colócala en Stand By o modo Sleep. Estos modos reducen el consumo eléctrico al dejar solo trabajando los componentes mínimos.
  • Cuando no uses tu computadora por un largo tiempo colócala en modo Hibernar, es similar a los modos anteriores pero aun reduce mas el consumo eléctrico.

 
Too Cool for Internet Explorer