Sigueme en Twitter

Archivo de artículos publicados en Mayo, 2009

Ir al inicio

Sustitución de cadenas vs concatenación en Python

21/05/2009

Tenía la idea de que la sustitución de valores era más rápida que simplemente concatenar cadenas. Pero en Python tal parece que es al revés.

Probando con un caso -muy muy muy- extremo, de 1 millón de iteraciones tenemos resultados interesantes.

1
2
3
4
5
6
STRING1 = 'Esta es la '
STRING2 = 'iteracion numero: '
FINAL = ''
 
for i in xrange(0, 1000000):
	FINAL += STRING1 + STRING2 + str(i) + '\n'

Concatenando de esta manera el resultado de time es:

real	0m1.479s
user	0m1.396s
sys	0m0.081s

Y al cambiar casi todas las concatenaciones por sustituciones de esta manera:

5
6
for i in xrange(0, 1000000):
	FINAL += '%s%s %d\n' % (STRING1, STRING2, i)

Obtenemos estos tiempos:

real	0m1.830s
user	0m1.746s
sys	0m0.081s

Aquí la diferencia no es realmente significativa si tomamos en cuenta el enorme tamaño del bucle. Así que yo sigo prefiriendo no sacrificar la legibilidad del código y seguir utilizando sustituciones en lugar de concatenaciones.

Pero ojo, esto no es una sustitución completa. Si eliminamos la única concatenación que dejamos en el segundo código:

5
6
for i in xrange(0, 10000):
	FINAL = '%s %s%s %d\n' % (FINAL, STRING1, STRING2, i)

Con “apenas” 10,000 iteraciones, vamos a tener tiempos arriba de 2 segundos. Ya imaginarás como sube exponencialmente si aumentamos el rango. No se cual sea la razón, pero parece que no es buena idea sustituir miles de cadenas enormes.

real	0m2.043s
user	0m0.899s
sys	0m1.139s

Esta claro, si para ti es crítico el rendimiento; concatena, sino no hay problema con que utilices sustituciones.

5 Comentarios

Utiliza frameworks, pero solo cuando los necesites

20/05/2009

Puede sonar obvio, pero es una mala costumbre utilizar frameworks para todo. Cierto, es bueno -muy bueno- apoyarse sobre herramientas que facilitan el trabajo. Pero utilizar frameworks pesados como Rails, CakePHP o Django para absolutamente todo es una mala practica.

k thx bye

A veces tenemos proyectos que sabemos solo son cosas pequeñas que no crecerán. Para este tipo de cosas no es necesario que gastemos más recursos de los que son necesarios y carguemos montones de utilerías que nunca necesitaremos.

Tampoco se trata de que hagas todo “a pie”, no se trata de reinventar la rueda. Pero puedes utilizar librerías específicas en lugar de todo un framework que te intenta solucionar todos los problemas. Te invito a leer un breve texto en SiteCanary sobre el tema.

Las librerías te ayudan a ahorrarte código, los frameworks te imponen una filosofía al hacer lo mismo.

4 Comentarios

Me gusta mucho Dropbox

19/05/2009

Antes no lo usaba porque no le encontraba utilidad (sino me servia para respaldar toda la música, fotos o videos simplemente no se la veía) pero después del post de gafeman me decidí a probarlo.

Para quien no lo conozca es un servicio que te permite subir cualquier archivo con el fin de tenerlos sincronizados entre varios de tus PC, tenerlos disponibles todo el tiempo o simplemente compartirlos con otra gente.

A mi me ha servido mucho para tener ahí los archivos de la escuela y tonterías que me comparto de vez en cuando. No es que sea algo nuevo, pero el proceso lo hacen muy sencillo. Ya sea que estes en Mac, Linux o Windows, lo único que tienes que hacer es arrastrar un archivo y listo.

Si quieres probarlo puedes registrarte con mi enlace y te darán 250MB extras de espacio (a mi también me los dan no creas que se los digo por altruista n_n).

Dropbox FTW

4 Comentarios

No pierdas visitas, redirecciona con 301

18/05/2009

Si por alguna razón cambiar un contenido de lugar hazte el favor y recuerda colocar una redirección 301. Tus visitantes te lo agradeceran y los buscadores simplemente indexan el contenido en el nuevo lugar sin penalizarte.

La redirección la puedes hacer con casi cualquier lenguaje como PHP, ASP, Ruby, etc. pero siempre que uses Apache como servidor una forma muy sencilla de hacerlo es con un archivo .htaccess

Si es solo una página:

Redirect 301 /vieja.html http://www.example.com/nueva.html

O puedes utilizar expresiones regulares con mod_rewrite y redirigir muchas:

RewriteRule ^(.*)$ http://www.example.com/$1 [R=301, L]

2 Comentarios

La cita del día #26

17/05/2009

“La mayoría del software hoy en día es muy parecido a una pirámide egipcia con millones de ladrillos apilados unos sobre otros, sin integridad estructural, pero hechos vía fuerza bruta y millones de esclavos.”

~ Alan Kay

5 Comentarios

¿Qué es realmente el Extreme Programming?

16/05/2009

WIN!

Los creadores de Lighthouse si que lo entienden. Win!

3 Comentarios

Procesos en background en el iPhone

15/05/2009

Según dice Techcrunch, es posible que los iPhone tengan la habilidad de ejecutar procesos en background (¿Cómo se dice esto en español? “fondo” suena horrible). 1000 años después de su salida, ahora con el iPhone 3.0 parece que porfin se convierte en un telefono competente.

¡Bienvenido al 2009 Apple! Ahora solo quita tus ridiculas políticas en el App Store y te perdono.

5 Comentarios

Latinoamerica se esta pudriendo en corrupción

14/05/2009

Voy a contar la historia según Rodrigo Rosenberg de lo que ha pasado en Guatemala en estos días. Rodrigo fue el abogado de Khalil Musa, un empresario que fue invitado a los altos mandos del Banco Rural por el mismísimo presidente de Guatemala, Alvaro Colom.

El señor Musa se encontró con un enredo de corrupción y fraude por parte de los directivos del banco (incluyendo lavado de dinero del narco) y no quiso entrar al juego. A el mismo se le acusó de corrupción a pesar de nunca ejercer en el banco y posteriormente lo amenazaron de muerte, cumpliendosele un tiempo después al matarlo junto a su esposa.

El abogado Rosenberg también fue amenazado directamente por el presidente de Guatemala pero no cedió. Grabó un video para hacer todo esto público en caso de que lo asesinaran. Y lamentablemente así fue, un día paseando en bicicleta fue ejecutado.

Este fue el video publicado en Youtube (son dos partes).

Parte 1

Parte 2

Por si no fuera suficiente esto no termina aquí.

La publicación del video causó una gran reacción de la gente, pero “curiosamente” el tema se ha estado evitando en la televisión guatemalteca y la mayor parte del revuelo es vía internet (que les recuerdo es mucho menor la penetración en países latinoamericanos que en otros lados, aquí todavía la TV es reina).

Peor aún están tomando represalias contra la gente que esta criticando al presidente y al banco. Jean Anleu fue encarcelado y acusado de “incitar al pánico financiero” por publicar este tweet.

¿Esto es incitar al pánico?

Las autoridades y la televisión están diciendo que el señor enviaba emails donde incitaba al pánico financiero, proclamando que el banco estaba en bancarrota y que la gente debía sacar su dinero. Total manipulación de medios. Lo tratan como un criminal por escribir su opinión en menos de 140 caracteres.

Ahora mismo sigue siendo retenido y no lo soltarán (y cuando lo hagan será arresto domiciliario) hasta que pague una multa de $6500 usd. Si quieres colaborar para pagar la multa desde el extranjero, Manolo está haciendo recibiendo donaciones vía paypal.

A Manolo lo conozco en persona y es 100% de fiar.

Otra gente también ha sido arrestada por repartir o vender CDs con el video de Rosenberg. Y el mismo Banco rural tiene un mensaje amenazante desde su sitio.

“Asimismo, les recuerda que, quien genere o difunda cualquier tipo de rumor sin fundamento, que atente en contra de la reputación o prestigio de una institución financiera podría incurrir en el delito de pánico financiero que sería sancionado con prisión de cinco a diez años.”

Opresión de la libre expresión e impunidad para políticos, cosa común en latinoamerica. ¿Si no podemos tener justicia en los delitos menores, como podemos estar a salvo de asesinos y corruptos?

Enlace: Conversaciones en Twitter sobre el escándalo.

2 Comentarios

Tristemente los programadores no competimos entre nosotros

13/05/2009

Les recomiendo mucho este par de artículos de Steve Yegge, Being the Averagest y Practicing Programming. El señor ha trabajado en Amazon y Google, tiene una especie de mal que le hace escribir textos enormes pero muy interesantes.

Estos artículos hablan de como de viciada esta nuestra profesión y de la mediocridad con la que seguimos muchos después de salir de la universidad. El que sabe Java, solo le interesa aprender más Java. El que sabe Linux, no quiere usar nada más que Linux.

¿Cuantas veces no te has topado con algún programador que simplemente no tiene la mínima intención de seguir estudiando algo que este fuera de su trabajo? La mayoría llegamos a tener momentos en los que simplemente nos conformamos con solo concentrarnos en lo que nos piden en el trabajo e ignorar todo lo demás con el pretexto de que eso no está en nuestra área.

Uno de los problemas esta en que no sabemos como practicar correctamente. Es cierto que “la práctica hace al maestro”, pero no solo tenemos que estar codificando todo el tiempo, eso solo hará que repitamos nuestros errores una y otra vez. Tiene mucha razón en que tenemos que tomar nuestra profesión como la ciencia que es. Leer de teoría de computo, leer sobre historia y aprender del trabajo de los demás.

“Práctica #4: Lee el código de alguien mas por 20 minutos. Para esta práctica alterna entre leer buen código y mal código; ambos son instructivos. Si no estas seguro de la diferencia, pregunta a un programador que respetes que te muestre ejemplos de cada uno. Muestra el código que lees a alguien más y ve lo que piensan de él.”

Steve critica mucho a la falta de competencia en nuestra profesión, y creo firmemente que esta es la razón por la que muchos nos detenemos de hacer un esfuerzo mayor. Simplemente no hay una forma de medirnos unos respecto a otros. Por lo menos no directamente. Y ustedes saben que los nerds necesitamos ver estadísticas para estar motivados.

“Pero ¿cómo es que los programadores compiten? Simplemente no lo hacen. No en la manera que los jugadores de ajedrez o los golfistas por lo menos. ¿La razón? No puedes comparar programadores cuantitativamente, asi que no puedes calcular una calificación o un ranking. [..] Los programadores profesionales simplemente no compiten los unos contra los otros.”

Lecturas muy largas, pero recomendadas.

6 Comentarios

Cambiar el hostname en Debian/Ubuntu

12/05/2009

Post de recordatorio. Para cambiar el hostname de un servidor basado en Debian solo tienes que editar el archivo de hostname.

vim /etc/hostname

Lo que aprendí en el día -n00b- es que no tengo que reiniciar el servidor para que el cambio tenga efecto, solo correr un script.

/etc/init.d/hostname.sh start

Usualmente el prompt por default trae el hostname incluido, pero también puedes revisarlo con el comando hostname, y con una opción te da el dominio completo.

hostname --fqd

También puedes cambiar el hostname actual con el mismo comando, pero los cambios no son permanentes.

Sin Comentarios