Posts encontrados en Programacion

oct 08 16

Chau RSS – Se viene el Flickr LOL Feed

Tiempo estimado de lectura: 0,18 minutos

No se si necesite demasiada introducción. Mejor entren acá y vean el LOL Feed de flickr. Los muchachos de Flickr hicieron un nuevo formato de feed utilizando el famoso lenguaje LOL. No tiene desperdicio.

Y mucho menos los comentarios de Reddit

lolfeed

lolfeed

Sinceramente me llama la atención que la gente de Yahoo haga este tipo de cosas. Es más usual verlas en Reddit, Google y plataformas con otro tipo de perfil. Realmente una genialidad.

oct 08 16

Debug en Javascript – Adios al alert()

Tiempo estimado de lectura: 0,40 minutos

La función alert() era, hasta ahora, la mejor forma de realizar un output inmediato de un código de javascript. Sin embargo, blackbird se presenta como una mejor alternativa al tedioso proceso de debug en javascript.

Después de agregar los archivos de la librería correspondiente:

<html>
<head>
<script type="text/javascript" src="/PATH/TO/blackbird.js"></script>
<link type="text/css" rel="Stylesheet" href="/PATH/TO/blackbird.css" />
</head>
</html>

Solo resta de usar el código de log de la librería.

log.debug( ‘this is a debug message’ );
log.info( ‘this is an info message’ );
log.warn( ‘this is a warning message’ );
log.error( ‘this is an error message’ );

Que producirá una salida filtrable y muy práctica.

blackbird

Una interesante herramienta para aquellos desarrollos complejos en javascript.

Blackbird fue probado en:

* Internet Explorer 6+
* Firefox 2+
* Safari 2+
* Opera 9.5

Via: Ajaxian

oct 08 10

Stack Overflow – La mejor comunidad para preguntar sobre programación y desarrollo IT

Tiempo estimado de lectura: 0,45 minutos

stackoverflowDesde 1999 que participo activamente en foros, wikis, chats y blogs sobre desarrollo y programación. Sin embargo pocas herramientas de consulta me resultaron tan efectivas como StackOverflow. Se trata de una plataforma fantástica y muy bien hecha, liderada por capos del negocio de internet.

Simplemente se deja una pregunta y pasa poco tiempo hasta que se recibe una respuesta precisa e inteligente. Por mi parte ya me ha resuelto un par de dolores de cabeza.

Stack Overflow is a collaboratively edited question and answer site for programmers — regardless of platform or language. Jump in and share your software engineering expertise! No registration or account required.

Una de las mejores cosas que tiene es su plataforma. Está pensada por desarrolladores para desarrolladores por lo que todo resulta muy simple. Y si no, pueden dejar su idea o recomendación en una sección especial para eso.

Cada pregunta puede ser incluso editada por otro miembro si esta tiene errores de tipeo. También las preguntas pueden ser votadas y rankeadas lo mismo que los comentarios.

Sin duda una herramienta a tener presente cada vez que tengamos una duda técnica. 100% recomendado.

oct 08 06

Tutorial para hacer un balanceador de carga (load balancer) de servidores de base de datos con PHP

Tiempo estimado de lectura: 3,18 minutos

Load balancer in PHPPor lo general, nuestras aplicaciones web necesitan ser escalables especialmente en las consultas a las bases de datos. Esto es extremadamente necesario cuando no se dispone de un cluster y el tráfico puede comprometer la performance de un sólo servidor de base de datos.

En este tutorial voy a detallar los pasos necesarios para hacer un sencillo load balancer de mysql a alto nivel utilizando PHP. Para lograr esto, es requerido que los dos o más servidores de bases de datos tengan exactamente la misma información. En MySQL, por ejemplo, pueden lograr esto utilizando la replicación que ofrece el motor de base de datos.

Para comenzar, imaginemos el posible escenario mínimo para setear nuestro balanceador de carga.

Un caso particularmente popular es tener, en el mismo equipo, el servidor web y el servidor de base de datos. Es ahí cuando nuestra infraestructura puede quedar chica y necesitamos otro servidor para balancear la carga. Para entonces podemos agregar otro servidor que replique la información del primero para tener así una réplica exacta de nuestros datos.

Ilustrando el concepto

El concepto es muy simple. Para que el balanceador de carga funcione como tal, es necesario conocer el load average de cada uno de los servidores. Luego, basándonos es ese dato, podemos decidir dinámicamente que servidor usar para establecer la conexión.

Manos a la obra…

Continuar leyendo »

sep 08 17

Lo más difícil de la programación

Tiempo estimado de lectura: 0,02 minutos

Lo más difícil de la programación no es programar.

ago 08 21

Contar líneas de código fuente en tus scripts

Tiempo estimado de lectura: 0,58 minutos

Todos conocemos que la métrica que reporta la cantidad de líneas de código fuente es totalmente obsoleto hoy en día para la mayoría de los lenguajes por el simple hecho que todo un sistema completo podría entrar en una sola línea. Sin embargo, algunos clientes todavía solicitan este tipo de reportes.

Para cumplir con una solicitud de un cliente, probe varios contadores de líneas de código fuente. El que más me gustó fue el Practiline Source Code Line Counter. Se trata de un sencillo pero potente sistemita para reportar cantidad de líneas del código fuente en archivos y/o carpetas. Su uso es muy sencillo y el resultado muy completo.

Tiene una versión gratuita y una versión bussiness trial por 15 días. Por el momento usé la versión trial ya que sólo lo necesité para un reporte. El sistema emite un reporte con:

  1. La cantidad total de líneas por archivo.
  2. La cantidad de líneas en blanco y su porcentaje del total por archivo.
  3. La cantidad de líneas de comentarios y su porcentaje del total por archivo.
  4. Cantidad de líneas mixtas (con código y comentario) y su porcentaje por archivo.
  5. La cantidad líneas de código fuente puro por archivo.
  6. El reporte total de todos los archivos con cada una de los parámetros.

Les comparto un screenshot del reporte.

ago 08 19

Javascript – Manejar incompatibilidades con la Compilación Condicional

Tiempo estimado de lectura: 1,21 minutos

Hace unos días descubrí una herramienta considerablemente útil cuando hablamos de compatibilidad de browsers en la programación Javascript. Se llama compilación condicional ya que discrimina los motores de compilación y ejecución que traen los browsers.

Para utilizar esta herramienta, hay que activar la compilación condicional agregando el comando @cc_on, luego se usa la sentencia que necesitemos. Se recomienda usar los condicionales dentro de comentarios para los motores de javascript que no lo soporten. Es así como entonces podemos usar todas estas variables predefinidas:

Variable Descripción
@_win32 Devuelve true Si corre en un sistema Win32 (windows 95, 98 o XP).
@_win16 Devuelve true Si corre en un sistema Win16 (Windows 95).
@_mac Devuelve true Si corre en un sistema Apple Macintosh.
@_alpha Devuelve true Si corre en un procesador DEC Alpha.
@_x86 Devuelve true Si corre en un procesador Intel.
@_mc680x0 Devuelve true Si corre en un procesador Motorola 680×0.
@_PowerPC Devuelve true Si corre en un procesador Motorola PowerPC.
@_jscript Siempre devuelve true.
@_jscript_build Devuelve el número de construcción (build) del motor Javascript.
@_jscript_version Contiene la versión Javascript soportada en un formato mayor.menor.

Junto a condicionales if:

@if (condition1)
text1
[@elif (condition2)
text2]
[@else
text3]
@end

Veamos ejemplos

Para detectar un IE7, podemos usar:

var IE7 = false /*@cc_on || @_jscript_version == 5.7 @*/;

Lo mismo pero para detectar el IE6, podemos usar:

var IE6 = false /*@cc_on || @_jscript_version < 5.7 @*/;

Para discriminar nuestro código según las versiones de Javascript soportados:

alert(@if (@_win32) “Usando Windows NT o Windows 95″ @else “Usando Windows 3.1″ @end)

Se puede tambien usar @set para setear variables y así usarlas según sea necesario.

@set @myvar1 = 12
@set @myvar2 = (@myvar1 * 20)
@set @myvar3 = @_jscript_version

Los operadores lógicos que se pueden usar dentro de los paréntesis de un condicional son:

  • ! ~
  • * / %
  • + –
  • << >> >>>
  • < <= > >=
  • == != === !==
  • & ^ |
  • && ||

Algo muy útil que nos puede ahorrar bastante tiempo y dolores de cabeza.

Fuentes:

ago 08 16

7 años de procesamiento desperdiciados para calcular mil millones de dígitos a Pi

Tiempo estimado de lectura: 1,30 minutos

Un programador dejó corriendo un script que calcularía durante 7 años unos mil millones de dígitos de la constante Pi. Cuando este script finalizó, el resultado final fue ” (nulo). Luego, revisando el código en C++ se dio cuenta que jamás había realizado el output de la variable.

Me cuesta bastante creerlo, pero esto salió en un quote de QDB.us. Esto debería ser considerado el mayor epic fail de todos los tiempos. A continuación les dejo el quote y la traducción.

#53151 (4552/5914)

<k2xl> in 1998, i made a C++ program to calculate pi to a billion digits.
<k2xl> i coded it on my laptop (pentium 2 i think) and then ran the program.
<k2xl> the next day i got a new laptop but decided to keep the program running.
<k2xl> it’s been over seven years now since i ran it. and this morning it finished calculating.
<k2xl> the output:
<k2xl> "THE VALUE OF PI TO THE BILLIONTH DIGIT IS = "
<k2xl> mindblowing eh?
<k2xl> i looked in the code of my program, and i found out that i forgot to output the value :(.
Comment: true story, i fixed the code and am running it again
<k2xl>

#53151 (4552/5914)

<k2xl> en 1998, hice un script en C++ para calcular mil millones de dígitos de Pi.
<k2xl> Lo codifiqué en mi laptop (pentium 2 creo) y después lo ejecuté.
<k2xl> Al día siguiente recibí una nueva laptop y decidí dejar el script corriendo.
<k2xl> Han pasado más de siete años desde que lo ejecuté y esta mañana finalizó su ejecución.
<k2xl> El resultado:
<k2xl> "El valor de Pi con mil millones de dígitos es = "
<k2xl> WTF? (es más traducible así)
<k2xl> miré el código del programa, y encontré que me olvidé de imprimir el valor de la variable :(.
Comentario: historia verdadera, corregí el código y lo volví a ejecutar.

Increíble…

jul 08 11

Cómo hacer expresiones regulares más eficientes

Tiempo estimado de lectura: 1,14 minutos

Ya he hablado sobre las virtudes de las expresiones regulares, también hablé sobre usar tags en las regexps. En este caso voy a dar tres tips para hacer las expresiones regulares más eficientes.

No se les suele dar mucha importancia al rendimiento de las expresiones regulares por el simple hecho que apenas se usan para validar cadenas o extraer pequeñas porciones de texto. Sin embargo cuando tenemos que realizar un parser de un archivo de texto (XML, HTML, etc) , el rendimiento lo es todo.

Continuar leyendo »

jul 08 02

Comparación entre frameworks de PHP

Tiempo estimado de lectura: 0,31 minutos

framework-benchmark.jpgUn gran benchmark entre diferentes frameworks PHP en diferentes configuraciones de servidor. Los frameworks comparados fueron el Zend, el CodeIgniter y el CakePHP.

Después del correr los test y realizar las comparaciones se puede decir que el CodeIgniter fue el framework que mejor respondió, mientras que el famoso CakePHP fue el framework que tuvo el más bajo desempeño en todos los tests.

Las herramientas usadas fueron: Una máquina AMD sempron a 1.8Ghz con 512Mb RAM usando Ubuntu Gutsy (7.10). Se utilizó httperf y se comparó con apachebench.

Los cuadros con los datos comparativos están en peticiones por segundo, significa que mientras mas alto sea el número, es mejor.

Con E-Accelerator

e-accelerator.png

Con ACP (cache de PHP)

acp-cache.png

Sin peticiones a la base de datos

no-database.png

Ruby On Rails

ror.png