domingo, 28 de julio de 2013

Acerca del código.

Hoy escribiré sobre programación básica.

El tema de las funciones y los módulos no sólo es cuestión de organización. También es cuestión de robustez, legibilidad, mantenibilidad.

Algunas veces, me he topado con gente que no entiende porqué es bueno organizar el código fuente de un proyecto en varios archivos.

Generalmente estas personas dicen que es mejor poner todo el código en un sólo archivo porque así es más fácil encontrar las cosas.

Lo que he notado es que no saben o no toman en cuenta que el código debe ser mantenible y elegante. Suelen ser el mismo tipo de personas que no usan funciones y por lo mismo tienen código repetido por todos lados con pequeñas variaciones.

Para los principiantes es más fácil y rápido programar así, pero no es lo mejor. Ésto se vuelve evidente rápidamente después de tener unos cuantos cientos de líneas de código. Es cuestión también de que los humanos no somos confiables.

Al concentrar código que se utiliza muchas veces a lo largo del programa en una función, si ese código tiene errores y se corrigen, quedará corregido automáticamente en todos los lugares donde se mande llamar esa función.

De igual forma, una función que se con el tiempo se ha ido depurando y mejorando, será muy estable y puede utilizarse de nuevo en otros proyectos, con la confianza de que está casi libre de errores. Esto reduce el tiempo de desarrollo, y reduce los errores. Es lo que se conoce como reutilización de código.

El secreto para reutilizar código es agruparlo en funciones y módulos suficientemente generales como para que puedan utilizarse para desarrollar cualquier cosa. Para esto es importante que el código no tenga muchas dependencias entre sí, es decir, que tenga bajo acoplamiento.

También es bueno aplicar la filosofía de Unix. Es miles de veces mejor tener pocas funciones que hacen una sola cosa y la hacen muy bien, que tener pocas funciones que hacen muchas cosas. Esta es la clave para la robustez en el software.

Una paradoja de éstos principios es que conforme el código empieza a crecer más, comienza a suceder justamente lo contrario de lo que se buscaba al aplicarlos.

Cuando eso sucede es tiempo de refactorizar, o de escribir código que sustituya al nuevo. Es un ciclo eterno. Generalmente, un programa, aplicación, o software que está bien diseñado por dentro, se nota al utilizarlo. Es robusto, confiable, simple, eficiente

La estructura interior se refleja al exterior. Es muy raro que un software cuyo código fuente es horrible, funcione bien. Si lo hace, generalmente sólo es por un corto tiempo, antes de que se agreguen nuevas funcionalidades, o de que se utilice en nuevos escenarios.

Nunca se debe confiar en software cuyo código fuente no sea de calidad. A menos que dicho software ya haya sido utilizado durante mucho tiempo y demuestre ser confiable. Pero como ya mencioné, generalmente eso no sucede.

jueves, 22 de noviembre de 2012

Facilitando la reproducción de los camarones cherry neocaridina heteropoda

Pues tenía yo unos cuantos camarones cherry (gambas para los españoles), 8 para ser exactos y a pesar de que ya tenía varios meses con ellos, no se reproducían, lo cuál me parecía extraño porque todos afirman que son altamente prolíficos.

Después de estar preguntando, me dijeron que el secreto era usar un poco de agua de ósmosis inversa, en mi caso utilicé aproximadamente un 50% ya que el agua de la ciudad de Toluca es muy dura.

Ahora tengo cientos de ellos, observen:.


Restaurar volume group parcial en linux

Suele suceder, ya intentaste de todo y el mensaje "Cannot change metadata for partial volume group" sigue apareciendo.

¿Qué hacer?

Tal vez el archivo de respaldo de /etc/lvm/archive o /etc/lvm/backup que estás usando para restaurar el volume group con vgcfgrestore o con pvcreate --restorefile contiene una línea similar a ésta:

status = ["RESIZEABLE", "PARTIAL", "READ"]
Podrías intentar cambiarla por algo así:
status = ["RESIZEABLE", "WRITE", "READ"]
De nada ;-)

domingo, 15 de julio de 2012

Cómo copiar fotos y videos del ipod a la mac sin usar itunes

A primera vista es algo trivial pero Apple lo pone un poco difícil ya que el ipod touch de cuarta generación no soporta el modo de funcionamiento como disco duro. ¿Entonces cómo?.

Pues muy fácil, desde la aplicación vista previa, menú archivo opción importar desde ipod... me tardé como 1 hora y media en encontrar cómo porque todos decían que con el modo de disco duro o que desde iphoto, pero así es más fácil.

Cómo desactivar servicios de arranque en os x

También es muy fácil, pero igual que en la entrada anterior se requiere saber de unix.

Los servicios de arranque son archivos .plist que se encuentran en las rutas: 
  • /System/Library (peligro)
  • /Library/ (más o menos peligro)
  • /Users/yourname/Library (poco peligro)
     
Para desactivarlos únicamente hacer:

launchtl unload -w /path/al/archivo.plist
Para activarlos de nuevo lo mismo pero sustituyendo unload por load. Si los archivos pertenecen a root usar sudo.

Cómo quitar el atributo de oculto a un archivo en OS X

Pues es muy fácil*, ejecutando el comando:

chflags nohidden /path
Ya saben, lo pueden mezclar con find, xargs, grep, etc. para hacerlo en varios archivos, lo habitual.


* Este es un truco "avanzado" si no saben nada de unix ni lo intenten porque no lo entenderán.

viernes, 5 de agosto de 2011

Tip linuxero: secuencias de escape ANSI en bash

Si les ha pasado que en bash la variable de ambiente IFS (o alguna otra) al establecerla al valor de nueva línea como "\n" (newline) hace caso omiso, prueben esto:

IFS=$'\n'


Lo acabo de descrubir y es un uso del signo de pesos en bash que desconocía.