Programación – Panchosoft Blog https://panchosoft.com/blog/ Tecnología y cultura geek Tue, 31 Jan 2012 07:02:53 +0000 es hourly 1 https://wordpress.org/?v=5.4.2 Agrega gráficas interactivas a tu sitio web con Highcharts [Javascript] https://panchosoft.com/blog/2012/01/31/agrega-graficas-interactivas-a-tu-sitio-web-con-highcharts-javascript.html https://panchosoft.com/blog/2012/01/31/agrega-graficas-interactivas-a-tu-sitio-web-con-highcharts-javascript.html#comments Tue, 31 Jan 2012 15:30:24 +0000 http://panchosoft.com/blog/?p=7965 La tecnología Flash está en pleno declive en Internet después de que los gigantes del mundo de la informática y los propios usuarios le dieran la espalda. Empresas como Apple, Google, Facebook y Microsoft han decidido darle soporte al estándar HTML5 y al lenguaje Javascript como las nuevas tecnologías predominantes de Internet.

Hasta hace algunos años Flash era muy utilizado en sitios web para mostrar gráficas de barra o de pastel. Había cientos de plugins que hacían muy sencilla la labor de colocar estas gráficas para los desarrolladores web, además incluían animaciones que daban un mejor aspecto.

Si eres desarrollador (especialmente si eres desarrollador web) seguramente te interesará utilizar las últimas tecnologías disponibles y sobre todo utilizar los estándares. Así que para el caso de las gráficas, presento como referencia una librería de Javascript llamada HighCharts.

HighCharts te permite añadir gráficas animadas a tu sitio web en una gran variedad de formatos. El plugin está hecho en Javascript por lo que es sumamente sencillo agregarlo a tu sitio web. La alimentación de información se hace a través del formato JSON.

Personalmente he utilizado esta librería en varios proyectos y siempre me ha dado excelentes resultados. Lo mejor de todo es que es compatible con cualquier navegador que soporte Javascript. Es decir, funciona con Windows, Linux, Mac, Android, iOS, Windows Phone, Firefox, Chrome, Safari, Internet Explorer, en una PC, en un Smartphone, en una Tablet, etc. Algo con lo que Flash no puede competir.

Librería: Highcharts
Demos: Highcharts Demos

]]>
https://panchosoft.com/blog/2012/01/31/agrega-graficas-interactivas-a-tu-sitio-web-con-highcharts-javascript.html/feed 5
Trollscript, un lenguaje esotérico para Trolls https://panchosoft.com/blog/2012/01/29/trollscript-un-lenguaje-esoterico-para-trolls.html https://panchosoft.com/blog/2012/01/29/trollscript-un-lenguaje-esoterico-para-trolls.html#comments Mon, 30 Jan 2012 05:29:47 +0000 http://panchosoft.com/blog/?p=7939 TrollfaceImagina la siguiente situación. Eres despedido, te quedan 2 semanas de trabajo, te solicitan desarrollar algunos programas, eres un programador. Seguramente querrás vengarte de tu empresa, seguramente querrás…. trollearlos!. Entonces que mejor que desarrollar todos tus programas con un lenguaje de programación esotérico imposible de descifrar por otra persona.

Para lograr esto tenemos a nuestra dispocisión el primer lenguaje de programación orientado a troles, el TrollScript. Con este lenguaje podrás crear código troll que seguramente hará imposible reutilizar todo tu código fuente.

Para instalar Trollscript tienes que tener instalado Ruby (lástima) en tu equipo y ejecutar “gem install trollscript”. Una vez instalado podrás iniciar a desarrollar utilizando los carácteres o y l. Por supuesto, todas las aplicaciones deben empezar con tr.

Ejemplo de «Hola Mundo» con Trollscript:

[cc]Trooloolooloolooloolooloolooloololloooooloolooloolooloolooloooooloolooloolooloolooloolooloolooooolooloolooooolooolooloolo ololllllooooloololoooooololooolooloolooloolooloololoolooolooloololooooooloololooooloololooloolooloolooloolooloolooloolooloolo oloololooooolooolooloololooollollollollollolllooollollollollollollollollloooooololooooolooll.[/cc]

Para entender este lenguaje hay que conocer el significado de las secuencias:

  • ooo – Incrementa el puntero de datos a la siguiente celda.
  • ool – Decrementa el puntero de datos a la anterior celda.
  • olo – Incrementa en uno el byte que está apuntando.
  • oll – Decrementa en uno el byte que está apuntando.
  • loo – Salida del carácter del byte (valor ASCII) de la celda que está apuntando.
  • lol – Acepta un byte de entrada almacenando el valor en la celda que está apuntando.
  • llo – Si el byte es cero, salta hacia adelante hasta encontrar la siguiente coincidencia.
  • lll – Si el byte es cero, salta hacia atrás hasta encontrar la siguiente coincidencia.

Trollscript es un lenguaje de programación esoterico de Brainfuck creado por Urban Müller en 1993. Este lenguaje tiene una licencia llamada “Do What The Fuck You Want To Public License“ creada por la entidad Caca Labs.

Fuente: GenbetaDev

]]>
https://panchosoft.com/blog/2012/01/29/trollscript-un-lenguaje-esoterico-para-trolls.html/feed 2
El Tao de la Programación https://panchosoft.com/blog/2011/11/12/el-tao-de-la-programacion.html https://panchosoft.com/blog/2011/11/12/el-tao-de-la-programacion.html#comments Sat, 12 Nov 2011 20:53:48 +0000 http://panchosoft.com/blog/?p=7913 El Tao de la programación

Amigo programador, ¿estás cansado de que únicamente puedas desarrollar lo que otras personas dicen? o ¿ahora miras la programación solamente como un «trabajo»?. Si es así, necesitas renovar tu fe y comprender nuevamente la filosofía detrás del arte de la programación.

Para ayudar con esta tarea, a continuación público de forma completa el «El Tao de la programación«, un libro escrito en 1987 por Geoffrey James que mezcla la filosofía del Tao y una serie de consejos sobre cómo ser buen programador. Mantiene en todo momento un tono humorístico e incluso se podría considerar «friki», pero desde luego es una lectura obligada.

Resulta interesante que después de 25 años de haber sido escrito, el libro contiene referencias a situaciones y problemas que siguen existiendo en los proyectos de desarrollo de software de los tiempos actuales. De hecho el libro también hace mención a otros clásicos como «El Mítico Hombre-Mes«.

El libro fue publicado en Internet con el permiso del autor y gracias al trabajo del sitio VariableNotFound. Ojalá les sea de gran provecho, especialmente para los que se encuentran estudiando una carrera afín a la programación.

 

El Tao de la Programación

por Geoffrey James

LIBRO PRIMERO: EL VACÍO SILENCIOSO

Así habló el maestro programador:

“Cuando hayas aprendido a extraer el código del error desde un trap frame,

será la hora de marcharte”

1.1


Algo misterioso se forma, nace en el vacío silencioso. Esperando solo e inmóvil, al mismo tiempo detenido y en movimiento constante. Es la fuente de todos los programas. Yo no sé su nombre, así que lo llamaré el Tao de la Programación.

Si el Tao es grandioso, entonces el sistema operativo es grandioso. Si el sistema operativo es grandioso, entonces el compilador es grandioso. Si el compilador es grandioso, entonces la aplicación es grandiosa. El usuario está complacido y hay armonía en el mundo.

El Tao de la Programación fluye lejos y regresa con el viento de la mañana.

1.2


El Tao engendró al lenguaje máquina. El lenguaje máquina dio vida al ensamblador. El ensamblador se la dio al compilador. Ahora hay diez mil lenguajes.

Cada lenguaje tiene su propósito, aunque sea humilde. Cada lenguaje expresa el Yin y el Yang del software. Cada lenguaje tiene su lugar dentro del Tao.

Pero no programes en COBOL si puedes evitarlo.

1.3


En el principio era el Tao. El Tao engendró el Espacio y Tiempo. Por tanto Espacio y Tiempo son el Yin y el Yang de la programación.

Los programadores que no comprenden el Tao siempre siempre se quedan sin tiempo y espacio para sus programas. Los programadores que comprenden el Tao siempre tienen tiempo y espacio suficiente para lograr sus objetivos.

¿Cómo podría ser de otra manera?

1.4


Al programador sabio le hablan del Tao y lo sigue. Al programador medio le hablan del Tao y lo busca. El programador necio se ríe cuando le hablan del Tao.

Si no fuera por la risa, no existiría el Tao.

Los sonidos más altos son los más difíciles de oír.

Avanzar es un camino para la retirada.

El gran talento se muestra tarde en la vida.

Incluso un programa perfecto todavía tiene errores.


LIBRO SEGUNDO: LOS MAESTROS ANCIANOS

Así habló el maestro programador:

“Después de tres días sin programar, la vida pierde sentido”

2.1


Los programadores de la antigüedad eran misteriosos y profundos. No podemos comprender sus pensamientos, así que todo lo que hacemos es describir su apariencia.

Consciente, cual zorro cruzando el agua. Alerta, como un general en el campo de batalla. Amable, como una anfitriona saludando a sus invitados. Simple, como bloques de madera sin tallar. Opaco, como negras piscinas en cuevas oscuras.

¿Quién puede contar los secretos de sus corazones y mentes?

La respuesta sólo existe en el Tao.

2.2


El Gran Maestro Turing una vez soñó que era una máquina. Cuando se despertó, exclamó:

”¡No sé si soy Turing soñando que soy una máquina, o una máquina soñando que soy Turing!’”

2.3


Un programador de una gran compañía fue a una conferencia de software y luego regresó para informar a su jefe, diciendo: “¿Qué clase de programadores trabajan en otras empresas? Se comportan mal y no se preocupan por las apariencias. Su cabello era largo y despeinado y sus ropas arrugadas y viejas. Destrozaron nuestra hospitalidad e hicieron ruidos groseros durante mi presentación».

El director dijo: “Nunca debí haberte enviado a la conferencia. Esos programadores viven más allá del mundo físico. Consideran que la vida es absurda, una coincidencia accidental. Ellos van y vienen sin conocer limitaciones. Sin cuidado, ellos viven sólo para sus programas. ¿Por qué deberían preocuparse por las convenciones sociales?

Ellos viven dentro del Tao”.

2.4


El discípulo preguntó al Maestro: “Este es un programador que nunca diseña, documenta o prueba sus programas. Sin embargo, todos los que lo conocen lo consideran uno de los mejores programadores del mundo. ¿Por qué es esto?”

El Maestro responde: “Ese programador ha alcanzado la maestría del Tao. Ha ido más allá de la necesidad de un diseño; no se enoja cuando el sistema se cae, pero acepta al universo sin preocupación. Ha ido más allá de la necesidad de documentación; no le importa si alguien más ve su código. Ha ido más allá de la necesidad de pruebas; cada uno de sus programas son perfectos en sí mismos, serenos y elegantes, su propósito es auto-evidente. Realmente, él ha penetrado en el misterio del Tao».


LIBRO TERCERO: DISEÑO

Así habló el maestro programador:

“Cuando el programa está siendo testeado,

es demasiado tarde para hacer hacer cambios de diseño”

3.1


Hubo una vez un hombre que fue a una feria de informática. Cada día, al entrar le decía al guarda de la puerta: “soy un gran ladrón reconocido por mis hazañas de robo. Estás prevenido de que esta feria no escapará sin ser saqueada”.

Estas palabras incomodaron mucho al guardia, porque dentro había millones de dólares en equipamiento informático, así que observó cuidadosamente al hombre. sin embargo, el hombre simplemente vagaba de stand en stand, murmurando para sí.

Cuando el hombre se iba, el guardia se lo llevó aparte y buscó entre sus ropas, pero nada fue encontrado.

Al siguiente día de la feria, el hombre regresó y regañó al guardia diciendo: «Ayer escapé con un gran botín, pero hoy será todavía mejor». Así que el guardia lo observó incluso más de cerca, pero sin resultados.

En el último día de la feria, el guardia no pudo resistir más su curiosidad. «Señor Ladrón», dijo, «estoy tan confuso que no puedo vivir en paz. Por favor ilumíneme. ¿Qué es lo que está robando?»

El hombre sonrió. «Estoy robando ideas», dijo.

3.2


Había una vez un maestro programador que escribía programas no estructurados. Un programador novicio, buscando imitarlo, también comenzó a escribir programas no estructurados. Cuando el novicio le pidió al maestro que evaluara su progreso, el maestro lo criticó por escribir programas no estructurados, diciendo:

“Lo que es apropiado para el maestro no es apropiado para los principiantes. Debes entender el Tao antes de trascender la estructura”.

3.3


Hubo una vez un maestro programador en la corte del señor de Wu. El señor preguntó al programador: “¿qué es más fácil de diseñar, un paquete de contabilidad o un sistema operativo?”.

“Un sistema operativo”, respondió el programador.

El señor lanzó una exclamación de incredulidad. “Sin duda, un paquete de contabilidad es trivial al lado de la complejidad de un sistema operativo”, dijo.

“No es así”, dijo el programador, “cuando se diseña un paquete de contabilidad, el programador actúa  como mediador entre personas con distintas ideas: cómo debe operar, cómo deben aparecer sus informes, y cómo se deben cumplir las leyes de impuestos». Por el contrario, un sistema operativo no está limitado por las apariencias externas. En el diseño de un sistema operativo, el programador busca la armonía más simple entre máquina e ideas. Esta es la razón por la que el sistema operativo es más fácil de diseñar”.

El señor de Wu asintió y sonrió. “Eso está bien, pero, ¿qué es más fácil de depurar?”.

El programador no respondió.

3.4


Un gerente fue al maestro programador y le mostró el documento de requisitos para una nueva aplicación. El gerente preguntó al maestro: “¿Cuánto tiempo se tarda en diseñar este sistema si le asigno cinco programadores?”.

“Tomará un año”, dijo el maestro rápidamente.

“¡Pero necesitamos este sistema inmediatamente o incluso antes! ¿Cuánto se tarda si le asigno diez programadores?”.

El maestro programador frunció el ceño. “En este caso, se tardará dos años”.

“¿Y si le asigno cien programadores?”

El maestro programador se encogió de hombros. “Entonces el diseño no se completará jamás”, dijo.


LIBRO CUARTO: CODIFICACIÓN

Así habló el maestro programador:

“Un programa bien escrito es su propio cielo;

un programa mal escrito, su propio infierno”

4.1


Un programa debe ser ligero y ágil, sus subrutinas conectadas como las perlas de un collar. El espíritu e intencionalidad del programa debe mantenerse en todo momento. No debe ser ni mucho ni poco, ni bucles innecesarios ni variables sin utilidad, ni ausencia de estructura ni rigidez excesiva.

Un programa debe seguir la “Ley de la menor sorpresa”. ¿Qué es esta Ley? Simplemente que el programa debe responder siempre de la forma que menos sorprenda al usuario.

Un programa, no importa cuán complejo sea, debería actuar como una sola unidad. El programa debe ser dirigido por la lógica interna en lugar de por las apariencias externas.

Si el programa falla en estos requisitos, se llegará a un estado de desorden y confusión. La única manera de corregir esto es reescribiendo el programa.

4.2


Un discípulo preguntó al maestro: “Tengo un programa que a veces funciona y veces aborta. He seguido las reglas de la programación, y estoy totalmente desconcertado. ¿Cuál es la razón?”.

El maestro respondió: “Estás confuso porque no entiendes el Tao. Sólo un necio espera un comportamiento racional de sus semejantes humanos. ¿Por qué ibas a esperarlo de una máquina que los humanos han construido? Los ordenadores simulan determinismo; sólo el Tao es perfecto.

Las reglas de la programación son transitorias; sólo el Tao es eterno. Por tanto, debes contemplar el Tao antes de ser iluminado.”

“Pero, ¿cómo sabré que he sido iluminado?”, preguntó el discípulo.

“Tu programa funcionará correctamente”, respondió el maestro.

4.3


Un maestro estaba explicando la naturaleza del Tao a uno de sus discípulos. “El Tao está presente en todo el software, independientemente de su insignificancia”, dijo el maestro.

“¿Está el Tao en una calculadora de bolsillo?”, preguntó el novicio.

“Está”, fue la respuesta.

“¿Está el Tao en un videojuego?”, continuó el discípulo.

“Incluso en un videojuego”, dijo el maestro.

“¿Y está en el sistema operativo de un ordenador personal?”

El maestro tosió y cambió levemente de posición. “La lección ha acabado por hoy”, dijo.

4.4


El programador del Príncipe Wang estaba codificando software. Sus dedos bailaban sobre el teclado. El programa compiló sin errores y se ejecutó cual ligera brisa.

“¡Excelente!”, exclamó el Príncipe, “¡Tu técnica es infalible!”.

“¿Técnica?”, dijo el programador girándose desde su terminal, “¡Lo que yo sigo es el Tao más allá de toda técnica! Cuando empecé a programar, veía ante mí el problema completo como un todo.

Después de tres años ya no veía ese bloque: empecé a usar subrutinas. Pero ahora no veo nada. Mi ser existe en un vacío sin forma. Mis sentidos están ociosos. Mi espíritu, libre para trabajar sin un plan, sigue su propio instinto. En resumen, mi programa se escribe a sí mismo. Es cierto que a veces hay problemas complejos. Los veo acercarse, me detengo, observo en silencio. Entonces cambio una única línea de código y las dificultades se desvanecen como una voluta de humo. Compilo mi programa. Me quedo quieto y dejo que el gozo del trabajo llene mi ser. Cierro los ojos un momento, y entonces cierro mi sesión”.

El Príncipe Wang dijo “Ojalá todos mis programadores fueran tan sabios”.


LIBRO QUINTO: MANTENIMIENTO

Así habló el maestro programador:

“Incluso un programa de tres líneas algún día tendrá que se mantenido”

5.1


Una puerta bien usada no necesita aceite en sus bisagras.

Un río que fluye veloz no se estanca.

Ni el sonido ni los pensamientos pueden viajar a través del vacío.

El software se pudre si no se utiliza.

Son grandes misterios.

5.2


Un gerente preguntó a un programador que cuánto tiempo le llevaría terminar el programa en el que trabajaba. “Se acabará mañana”, respondió rápidamente el programador.

“Creo que no estás siendo realista”, dijo el gerente, “De verdad, ¿cuánto tiempo tardará?”.

El programador pensó un instante. “Tengo algunas características que me gustaría añadirle. Me llevará al menos dos semanas”, dijo finalmente.

“Incluso eso es demasiado esperar”, insistió el gerente, “me basta si simplemente me avisas cuando el programa esté completo”.

El programador asintió.

Varios años más tarde, el gerente se retiró. De camino hacia su almuerzo de jubilación descubrió al programador dormido sobre su terminal. Había estado programando toda la noche.

5.3


Un programador novicio fue una vez asignado a la codificación de un sencillo paquete financiero.

El novicio trabajó furiosamente muchos días, pero cuando su maestro revisó su programa descubrió que contenía un editor de pantallas, un conjunto de rutinas gráficas generales, y una interfaz de inteligencia artificial, pero ni la más mínima mención de nada financiero.

Cuando el maestro le preguntó acerca de ello, el novicio se indignó. “No seas tan impaciente”, dijo, “Incluiré los temas financieros al final”.

5.4


¿Acaso un buen agricultor descuidaría un cultivo que ha plantado?

¿Acaso descuidaría un buen profesor incluso al estudiante más humilde?

¿Acaso un buen padre permitiría que uno de sus hijos murieran de hambre?

¿Acaso un buen programador rechazaría mantener su propio código?


LIBRO SEXTO: GESTIÓN

Así habló el maestro programador:

“Sean los programadores muchos y gestores pocos;

todos ellos serán entonces productivos”

6.1


Cuando los gestores tienen reuniones infinitas, los programadores escriben juegos. Cuando los financieros hablan de beneficios cuatrimestrales, el presupuesto de desarrollo está a punto de ser recortado. Cuando los científicos hablan de cielo azul, las nubes están a punto de aparecer.

Ciertamente, esto no es el Tao de la Programación.

Cuando los gestores de comprometen, los juegos son ignorados. Cuando los financieros hacen planes a largo plazo, la armonía y el orden son restaurados. Cuando los científicos se centran en los problemas cercanos, los problemas estarán a punto de resolverse.

Ciertamente, esto es el Tao de la Programación.

6.2


¿Por qué los programadores son improductivos?

Porque pierden su tiempo en reuniones.

¿Por qué los programadores son rebeldes?

Porque la gestión interfiere mucho.

¿Por qué los programadores reniegan unos de otros?

Porque están quemados.

Después de haber trabajado para un mal gestor, ya no valoran sus empleos.

6.3


Un gerente estaba a punto de ser despedido, pero un programador que trabajaba para él inventó un nuevo programa que se hizo popular y se vendió bien. Como consecuencia, el gerente conservó su empleo.

El gerente intentó darle al programador una bonificación, pero éste se negó diciendo “yo escribí el programa porque pensé que era un concepto interesante, por lo que no espero ninguna recompensa”.

Al oír esto, el gerente comentó: “Este programador, a pesar de su baja autoestima, entiende bien los deberes de un empleado. ¡Vamos a promocionarlo hacia la posición de consultor de gestión!”.

Pero cuando se le dijo esto, el programador lo rechazó una vez más diciendo: “Vivo para la programación. Si fuera ascendido no haría más que desperdiciar el tiempo de todos. ¿Me puedo ir? Tengo un programa en el que trabajar”.

6.4


Un gerente se dirigió a sus programadores: “En cuanto a sus horas de trabajo, van a tener que venir desde las nueve de la mañana hasta las cinco de la tarde”. En ese momento todos se enfadaron y muchos de ellos renunciaron en el acto.

Así que el gerente dijo: “Bien, pues en ese caso podéis establecer vuestros propios horarios de trabajo, siempre que terminéis los proyectos a tiempo”. Los programadores, ahora satisfechos, comenzaron a llegar a mediodía y trabajar hasta altas horas de la madrugada.


LIBRO SÉPTIMO: CONOCIMIENTO CORPORATIVO

Así habló el maestro programador:

“Puedes mostrar un programa a un ejecutivo de la empresa,

pero no puedes hacerlo experto en informática”

7.1


Un discípulo preguntó al maestro: “En el Este hay una gran estructura con forma de árbol que los hombres llaman sede corporativa. Está excesivamente inflada con vicepresidentes y contables. Generan una gran cantidad de notas diciendo ‘ve aquí’ o ‘ve allá’ y nadie sabe lo que significa. Cada año se colocan nuevos nombres en las ramas, todo en vano. ¿Cómo puede existir una entidad tan innatural?”.

El maestro respondió: “Percibes esta inmensa estructura y te perturba que no tenga un propósito racional. ¿No puedes encontrar entretenimiento con sus giros sin fin? ¿No disfrutas de la facilidad de programar sin problemas refugiado bajo sus ramas? ¿Por qué te molesta su inutilidad?”.

7.2


En el Este hay un tiburón que es mayor que todos los otros peces. Se transforma en ave cuyas alas son como nubes llenando el cielo. Cuando es ave, se mueve por toda la tierra y trae un mensaje desde la sede corporativa. Este mensaje cae entre los programadores como una gaviota dejando su huella en la playa. Entonces el pájaro remonta el vuelo y, con el cielo azul a sus espaldas, vuelve a casa.

El programador novicio mira sorprendido el ave porque no lo entiende. El programador intermedio teme la llegada del ave porque teme su mensaje. El maestro programador continúa trabajando en su terminal, no sabe que el ave ha llegado y se ha marchado.

7.3


El Mago de la Torre de Marfil llevó su último invento para que lo examinara el maestro programador. El Mago acarreó una gran caja negra a la oficina del maestro, mientras éste esperaba en silencio.

“Esto es una estación de trabajo de propósito general integrada y distribuida”, comenzó el Mago, “diseñada ergonómicamente con un sistema operativo propietario, lenguajes de sexta generación y múltiples interfaces de usuario de tecnología punta. Construirlo costó a mis asistentes varios cientos de años/hombre . ¿No es sorprendente?”.

El maestro alzó sus cejas ligeramente. “Sin duda es increíble”, dijo.

“La sede corporativa ha ordenado”, continuó el Mago, “que todos usen esta estación de trabajo como plataforma para los nuevos programas. ¿Está de acuerdo con esto?” .

“Ciertamente”, respondió el maestro, “Lo transportaré al centro de datos inmediatamente”. Y el Mago retornó complacido a su torre.

Varios días después, un novicio vagaba por la oficina del maestro programador y le dijo: “No puedo encontrar el listado de mi nuevo programa. ¿Sabes dónde puede estar?”.

“Sí”, respondió el maestro, “los listados están apilados sobre la plataforma del centro de datos”.

7.4


El maestro programador se mueve de un programa a otro sin miedo. Ningún cambio en los gestores puede dañarle. No será despedido, ni siquiera aunque el proyecto en el que trabaja sea cancelado. ¿Por qué es esto?

El Tao está en él.


LIBRO OCTAVO: HARDWARE Y SOFTWARE

Así habló el maestro programador:

“Sin el viento, el pasto no se mueve.

Sin software, el hardware es inútil”

8.1


Un discípulo preguntó al maestro: “Percibo que una compañía de ordenadores es mucho mayor que todas las demás. Se eleva por encima de su competencia como un gigante entre enanos. Cualquiera de sus divisiones podría abarcar todo el negocio. ¿Por qué es esto así?”.

El maestro respondió: “¿Por qué haces preguntas tan necias? Esa compañía es así de grande porque es grande. Si sólo fabricara hardware nadie lo compraría. Si sólo hiciera software, nadie lo usaría. Si sólo mantuviera sistemas, la gente los trataría como a sirvientes. Pero al combinar todas esas cosas, la gente piensa que son dioses. Al no buscar la confrontación conquista sin esfuerzo”.

8.2


Un maestro programador pasó un día junto a un novicio. El maestro notó la preocupación del novicio con un juego en un dispositivo portátil. “Disculpe”, dijo, “¿me permite examinarlo?”.

El novicio atendió y pasó el dispositivo al maestro. “Veo que el aparato afirma tener tres niveles de juego: fácil, intermedio y difícil”, dijo el maestro. “Pero aún cada dispositivo tiene otro nivel de juego, donde el apartado no busca conquistar al humano, ni ser conquistado por el humano”.

“Ruego, gran maestro”, imploró el novicio, “¿cómo hace uno para encontrar esa misteriosa configuración?”.

El maestro arrojó el dispositivo al suelo y lo aplastó bajo su pie. Y de pronto, el novicio fue iluminado.

8.3


Había una vez un programador que trabajaba con microordenadores. “Mira lo bien que estoy aquí”, dijo a un programador de mainframes que lo fue a visitar. “Tengo mi propio sistema operativo y dispositivo de almacenamiento de archivos. No tengo que compartir mis recursos con nadie. El software es consistente y fácil de usar. ¿Por qué no dejas tu trabajo actual y te vienes conmigo?”

Entonces, el programador de mainframes comenzó a describir su sistema a su amigo, diciendo: “El mainframe está sentado como un antiguo sabio meditando en el centro de datos. Sus discos se encuentran de extremo a extremo como un gran océano de maquinaria. El software es tan polifacético como un diamante, y enrevesado como una selva virgen. Los programas, cada uno único, se mueven a través del sistema como un río de corriente rápida. Por eso estoy feliz donde estoy”.

El programador de microordenadores, al oír esto, se quedó en silencio. Pero los dos programadores siguieron siendo amigos hasta el final de sus días.

8.4


Hardware y Software se encontraron en el camino hacia Changtse. Software dijo: “Tú eres Yin y yo soy Yang. Si viajamos juntos nos haremos famosos y ganaremos vastas sumas de dinero”. Y así, el equipo se unió, pensando que conquistarían el mundo.

Actualmente se encontraron con Firmware, que estaba vestido con harapos y cojeaba apoyado en un palo espinoso. Firmware les dijo: “El Tao está más allá del Yin y Yang. Es silencioso y quieto como un estanque de agua. No busca la fama, por tanto, nadie sabe de su presencia. No busca fortuna, porque es completo en sí mismo. Existe más allá del espacio y del tiempo”.

Software y hardware, avergonzados, regresaron a sus hogares.


LIBRO NOVENO: EPÍLOGO

Así habló el maestro programador:

“Es hora de que partas”

]]>
https://panchosoft.com/blog/2011/11/12/el-tao-de-la-programacion.html/feed 1
Hoja de trucos para HTML5 https://panchosoft.com/blog/2011/08/08/hoja-de-trucos-para-html5.html Tue, 09 Aug 2011 04:48:32 +0000 http://panchosoft.com/blog/?p=7788 Como desarrollador es importante conocer las últimas tecnologías y tendencias pues en algún punto del tiempo es probable que necesitemos hacer uso de algún lenguaje o técnica en particular. Además por lo general las nuevas tecnologías incluyen mejoras que nos permiten realizar las tareas de forma más rápida evitando complejidad innecesaria.

Para un desarrollador web debe ser prioritario comenzar a conocer elestándar HTML5 ya que incluye novedades más que interesantes y al mismo tiempo elimina algunas características de HTML4 (como ejemplo las etiquetas <font>, <center> y <frame> entre otras). Por otro lado, sistemas operativos como el próximo Windows 8 ofrecerán soporte nativo para desarrollar aplicaciones utilizando este lenguaje de marcado.

Y ya hablando del tema, hace tiempo me encontré esta interesante «hoja de trucos» de HTML5 con la cuál es bastante sencillo conocer lo nuevo, lo que no cambia y lo que se ha eliminado de HTML4 en este nuevo estándar. Haciendo clic en la imagen pueden llegar a la imagen original y moverse a través de ella utilizando la función de arrastrar y soltar.

Leyenda de la imagen:

Espero les sea de utilidad, saludos.

Fuente: Woork
Imagen original en alta resolución: Flickr

]]>
Top 25 errores más peligrosos en el desarrollo de software https://panchosoft.com/blog/2011/07/22/top-25-errores-mas-peligrosos-en-el-desarrollo-de-software.html Fri, 22 Jul 2011 19:54:22 +0000 http://panchosoft.com/blog/?p=7730 CWE (Common Weakness Enumeration) y la SANS han publicado un estudio donde enumeran los 25 errores de programación mas peligrosos en el desarrollo de software. En la lista se muestran errores que muchos programadores toman como inofensivos pues desconocen que pueden permitir a «atacantes» tener acceso a información privada.

El top 25 errores más peligrosos en el software es:

  • No filtrar propiamente las sentencias SQL (Inyección SQL) (Puntaje 93.8) (ID CWE-89)
  • No filtrar las llamadas al sistema de forma adecuada (Inyección en comandos del SO) (Puntaje 83.3) (ID CWE-78)
  • No chequear el tamaño de la memoria reservada a la hora de copiar datos (desbordamiento de memoria) (Puntaje 79.0) (ID CWE-120)
  • No detectar la inyección de scripting (XSS) (Puntaje 77.7) (ID CWE-79)
  • No autentificar en llamada a funciones críticas (Puntaje 76.9) (ID CWE-306)
  • No autorización (Puntaje 76.8) (ID CWE-862)
  • Usar credenciales estáticos en el código (Puntaje 75.0) (ID CWE-798)
  • No cifrado de datos sensibles (Puntaje 75.0) (ID CWE-311)
  • No restringir la subida de ficheros a ciertos formatos (Puntaje 74.0) (ID CWE-434)
  • Confiar en una fuente de datos no confiable a la hora de tomar una decisión de seguridad (Puntaje 73.8) (ID CWE-807)
  • Ejecución con privilegios innecesarios (Puntaje 73.1) (ID CWE-250)
  • Cross-Site Request Forgery (CSRF) (Puntaje 70.1) (ID CWE-352)
  • No limitar el acceso al sistema de ficheros a directorios restringidos (Puntaje 69.3) (ID CWE-22)
  • Descarga de código sin chequear la integridad del mismo (Puntaje 68.5) (ID CWE-494)
  • Autorización incorrecta (Puntaje 67.8) (ID CWE-863)
  • Permitir la integración de funcionalidades de fuentes no confiables (Puntaje 66.0) (ID CWE-829)
  • Asignación de permisos incorrecta a recursos críticos (Puntaje 65.5) (ID CWE-732)
  • Uso de funciones potencialmente peligrosas (Puntaje 64.6) (ID CWE-676)
  • User un algoritmo de cifrado que ha sido comprometido o roto (Puntaje 64.1) (ID CWE-327)
  • Cálculo incorrecto del tamaño de memoria (Puntaje 62.4) (ID CWE-131)
  • No restricción a un número de intentos fallidos de acceso (Puntaje 61.5) (ID CWE-307)
  • Redirección URL a sitios no confiables (‘Open Redirect’) (Puntaje 61.1) (ID CWE-601)
  • Formato de cadena no controlado (Puntaje 61.0) (ID CWE-134)
  • Desbordamiento de enteros (Puntaje 60.3) (ID CWE-190)
  • Aplicar una función hash sin usar la sal (Puntaje 59.9) (ID CWE-759)

Si cometes por lo menos uno de estos errores en el desarrollo de tus aplicaciones, no dudes en hacer click en su respectivo ID, donde encontraras toda la información necesaria para entender mejor el problema y corregirlo. Puedes descargar todo el informe en PDF o verla online en la pagina oficial de la Common Weakness Enumeration.

Me parece interesante le hecho de que el error más peligroso (inyección SQL) sea también el error más común en el desarrollo web. Para evitarlo básicamente debe validarse que las variables no incluyan caracteres que puedan formar parte de una cadena SQL.

Fuente: DragonJar

]]>
Los 150 mejores efectos con jQuery https://panchosoft.com/blog/2010/10/11/los-150-mejores-efectos-con-jquery.html Mon, 11 Oct 2010 14:00:00 +0000 http://panchosoft.com/blog/?p=6208 Si eres desarrollador web seguro que conoces jQuery y el inmenso potencial que ofrece para desarrollar aplicaciones web complejas con gran facilidad. Dentro del gran abanico de utilidades de jQuery están los efectos o animaciones; que en lo particular me parecen extremadamente útiles pues además de hacer más agradables a la vista los elementos de una página web, permiten que el usuario pueda captar fácilmente las respuestas a su interacción en una página.

Pues bien, en WebDesignShock se dieron a la tarea de recopilar los que consideraron los 150 mejores efectos hechos con jQuery y solo les puedo decir que si se les gusta el desarrollo web TIENEN QUE VER ESTA LISTA haciendo click en la siguiente imagen.

Algunos de los efectos son simplemente espectaculares y demuestran que cada vez es más fácil prescindir de Flash. De entre todos los efectos listados sin duda AviaSlider es de los más impresionantes.

Saludos. =)

]]>
App inventor: creando aplicaciones para Android sin conocimientos de programación https://panchosoft.com/blog/2010/07/12/app-inventor-creando-aplicaciones-para-android-sin-conocimientos-de-programacion.html https://panchosoft.com/blog/2010/07/12/app-inventor-creando-aplicaciones-para-android-sin-conocimientos-de-programacion.html#comments Tue, 13 Jul 2010 05:31:25 +0000 http://panchosoft.com/blog/?p=5570 Google Labs acaba de anunciar una nueva herramienta denominada App Inventor que permite a las personas con nulos conocimientos de programación crear aplicaciones de una forma muy sencilla. El siguiente video demostrativo explica como una mujer casual (?) crea una aplicación que reproduce un simple sonido sin teclear ni una sola línea de código.

Es interesante el hecho de crear todo de una forma visual, incluso las acciones de los botones se definen utilizando elementos visuales. En este caso arrastrando bloques y colocándolos de forma anidada. Hay bloques para guardar información, para repetir acciones, y bloques para realizar acciones bajo condiciones. Incluso hay un bloque para comunicarse con servicios como Twitter!.

Seguramente con esta herramienta muchas más personas se aventuren a desarrollar aplicaciones para la plataforma, me parece además muy útil en el aspecto educativo pues App Inventor es un puente perfecto para las personas que quieran entrar en el mundo de la programación móvil.

Saludos.

]]>
https://panchosoft.com/blog/2010/07/12/app-inventor-creando-aplicaciones-para-android-sin-conocimientos-de-programacion.html/feed 2
.NET contra Java: la película https://panchosoft.com/blog/2010/07/11/net-contra-java-la-pelicula.html https://panchosoft.com/blog/2010/07/11/net-contra-java-la-pelicula.html#comments Mon, 12 Jul 2010 04:51:34 +0000 http://panchosoft.com/blog/?p=5535 Quizá muchos de ustedes ya miraron este video y aún así no podía dejar de publicarlo en el blog después de que estuve unas semanas ausente. Lo digo simplemente porque refleja de forma bastante cómica (e irónica) el «amor» que muchos programadores le tenemos a la plataforma Java.

Este trailer es un must-see para cualquier programador, y desde luego este video es recomendado solo para developers.

Saludos.

]]>
https://panchosoft.com/blog/2010/07/11/net-contra-java-la-pelicula.html/feed 2
El mundo de la programación [Infografía] https://panchosoft.com/blog/2010/06/06/el-mundo-de-la-programacion-infografia.html https://panchosoft.com/blog/2010/06/06/el-mundo-de-la-programacion-infografia.html#comments Mon, 07 Jun 2010 04:39:10 +0000 http://panchosoft.com/blog/?p=5268 Excelente infografía sobre la historia de la programación que cubre a las grandes mentes que contribuyeron a la evolución de la informática, los algoritmos, los lenguajes de programación, etc.

Esta imagen debería estar colgada en un marco en cualquier aula de informática que se respete. 🙂

Saludos.

]]>
https://panchosoft.com/blog/2010/06/06/el-mundo-de-la-programacion-infografia.html/feed 2
Colección de galerías y deslizadores hechos en jQuery https://panchosoft.com/blog/2010/05/10/coleccion-de-galerias-y-deslizadores-hechos-en-jquery.html Mon, 10 May 2010 15:00:26 +0000 http://panchosoft.com/blog/?p=5000

jQuery se está convirtiendo en un estándar de facto entre los desarrolladores web por su rapidez, facilidad de uso y sobre todo por la sintaxis tan interesante (y curiosa) que maneja este framework. Pues bien, alguien se tomo la libertad de recopilar los mejores scripts para galerías y/o deslizadores de imágenes hechos con jQuery; seguramente a más de uno le serán de utilizad al momento de hacer páginas o sistemas web.

Saludos. =)

]]>