¿En Fedora no se puede crear disco de arranque?

La verdad que ultimamente todos los problemas que me están ocurriendo dan material de sobra para escribir en este weblog ;-)

El contexto

En mi equipo hogareño conviven dos sistemas operativos, Fedora Core 4 y Windows XP. Como es de público conocimiento, si dejamos mucho tiempo expuesto en Internet un "Windows" (lo protejas como lo protejas) es casi seguro que debas volver a instalarlo de cero al cabo de 6 meses.

El problema

Para poder usar los dos sistemas operativos se necesita disponer de un "manejador de arranque" o "boot manager" (por ejemplo: Grub, Lilo, etc) para seleccionar cual sistema quieres iniciar. Lamentablemente Windows no reconoce ni respeta la existencia de otros sistemas operativos (peca de engreído) y en su instalación completa (o reinstalación) deshabilitará el "manejador de arranque", impidiendo iniciar el "otro" sistema operativo (que puede ser no solo GNU/Linux, también FreeBSD, Mac, etc).

Históricamente se procedía a crear un disco de arranque para protegernos de esta situación. Cuando terminábamos de reinstalar Windows, iniciábamos GNU/Linux con el diskete y luego restaurábamos nuestro "manejador de arranque" para permitirnos volver a la normalidad (es decir, poder volver a optar por iniciar con alguno de los sistemas operativo instalados).

Hete aquí que cuando intentamos generar el disco de arranque, en una distribución Fedora mayor a la versión Core 1 (C2, C3, C4, etc) nos encontramos con que el kernel es demasiado grande como para entrar en un disco de 1.4 Mb. Lo que significa que no podremos crear de la forma tradicional un fácil resguardo en caso de accidentes

La operación habitual era:

mkbootdisk --device /dev/fd0 `uname -r`

Insert a disk in /dev/fd0. Any information on the disk will be lost.
Press to continue or ^C to abort:

cp: escribiendo «/tmp/mkbootdisk.az2549/vmlinuz»: No queda espacio en el dispositivo

cp: escribiendo «/tmp/mkbootdisk.az2549/initrd.img»: No queda espacio en el dispositivo

cat: error de escritura: No queda espacio en el dispositivo
cat: error de escritura: No queda espacio en el dispositivo


Pero el mensaje de error es bastante claro: nuestro dispositivo (el diskete) no cuenta con el suficiente espacio como para contener la imagen de arranque de nuestro GNU/Linux.

La solución

La solución que pude encontrar fue crear un CD de arranque en sustitución al diskete de arranque habitual.

/sbin/mkbootdisk --verbose --iso --device /root/boot.iso `uname -r`


Esto crea un archivo con formato iso, que deberemos grabar como "iniciable" (booteable?). En este caso usé K3B, y las opciones fueron:

"Tools" -> "Grabar Imagen de CD" -> "Imagen a grabar"

¡Y pronto, tenemos un CD de arranque para nuestra distribución Fedora Core!

Nota: si, lamentablemente esta solución dependerá que contemos con una grabadora de CD.

No sean negativos, algo es algo ;-)

Actualización (04/01/2006): en caso de que, luego de reinstalar Windows, necesitaran volver a instalar el "boot manager" para que quedara el sistema como antes, deberán iniciar su instalación de Linux con el CD de arranque (que acabo de explicar como se hace ;-) y ejecutar el siguiente comando:

grub-install /dev/hda

Este tomará la configuración anterior del archivo /etc/grub.conf y volverá a sobreescribir el Sector Maestro de Arranque (MBR) en el primer disco de nuestra IDE.

¡Ahora sí puedo dormir tranquilo! ;-)

¿Cómo convertir un CD de audio a formato digital (MP3, Wav, etc)?

Y bueno, no solo de la programación vive el hombre ;-)

Nunca había tenido la necesidad de hacerlo, hasta ayer en la noche. En esta navidad pasada, el Sr. Noel me obsequió un reproductor de mp3 (soporta varios formatos más) con 256 Mb de capacidad, lo cual me permite tener almacenado hasta casi 3 o 4 CD completos en formato digital.

El tema es: ¿tengo los CD's de audio, pero cómo los paso a un formato digital que soporte mi reproductor?

Buena pregunta: alguna vez leí en un foro esta pregunta, pero no le di menor importancia al no tener la necesidad de hacer este trabajo. Sabía que en GNU/Linux existen muchos programas para el manejo de audio, y muchos de ellos en "modo consola" (lo cual hace que el procesamiento sea mucho más rápido por carecer de interfaz gráfica y permitir además incluirlo en algún scripts para procesar por lotes a nuestro gusto).

Otro de los problemas que me encontré es que hace tiempo, y por tema de pantentes la mayoría de las distribuciones GNU/Linux no incluyen de "fábrica" soporte para el formato MP3 (hay que pagar un dinero para usarlo, y creo que solo en EEUU):

Según Wikipedia:

"A principios de 2002 otros formatos de audio comprimido como Windows Media Audio y Ogg Vorbis empiezan a ser masivamente incluidos en programas, sistemas operativos y reproductores autónomos, lo que hizo prever que el MP3 fuera paulatinamente cayendo en desuso, en favor de otros formatos, como los mencionados, de mucha mejor calidad. Uno de los factores que influye en el declive del MP3 es que tiene patente. Técnicamente no significa que su calidad sea inferior ni superior, pero impide que la comunidad pueda seguir mejorándolo y puede obligar a pagar por la utilización de algún códec, esto es lo que ocurre con los reproductores de MP3".


Nota: ya queda claro con esto la razón y la tendencia hacia los formatos abiertos, como el Ogg Vorbis; solo es de esperar que los fabricantes de reproductores los adopten.

Al final, luego de bucear por artículos y tutoriales desactualizados, encontré uno muy sencillo y directo: Encodeando MP3 (de nuestros hermanos argentinos).

Lo único que tuve que hacer (luego de instalar el cdparanoia y el lame) fue:

cdparanoia -B

lame -b 128 tema.wav


Donde el primero crea por cada pista del CD un archivo digital de formato WAV, con un tamaño promedio de 80 Mb (si, muy grande).

El segundo paso, es convertirlo a un formato que comprima el archivo WAV (con alguna pérdida tolerable de calidad). El "lame" convierte el mismo nombre de archivo a uno con extensión .mp3 a un tamaño promedio de 6/8 Mb (si, ahora entran en mi reproductor ;-)

Cabe aclarar que no apoyo la piratería, y que la piratería no tiene nada que ver con la filosofía del Software Libre, que los CD de audio que tengo son originales y que la única forma de que puedan entrar en un reproductor de mp3 es convertirlo a formato digital ;-)

Espero que les sea de utilidad.

Más enlaces sobre "Ruby On Rails"

Siguiendo en la línea del artículo anterior sobre "Entrevista al autor del lenguaje Ruby", donde se comentó sobre esta nueva herramienta de desarrollo llamada "Ruby On Rails" (y como dice su nombre, basada en el lenguaje Ruby), a continuación otros enlaces en castellano para quién quiera seguir informándose:


Actualización: no te olvides visitar mi nuevo weblog: Rubí Sobre Rieles

¿Qué significa ser un "BDFL"?

Como ya se habrán dado cuenta, recurro mucho a Wikipedia. Navegando de información en información a través de enlaces que se van relacionando unos con otros al mejor estilo Web 2.0 llegué a esta definición:
"Benevolent Dictator for Life (BDFL) es un título informal que se otorga a ciertos individuos de la comunidad de desarrolladores de código abierto que tienen la tarea de asignar las directrices generales y, en ciertas situaciones, las decisiones finales dentro del ámbito de un proyecto."

Y es muy interesante la lista de Dictadores Benevolentes de por Vida, donde se encuentran personajes como Linus Torvalds (Linux), Larry Wall (Perl), Rasmus Lerdorf (PHP).

Lo que aprende uno por accidente ;-)

Felices Fiestas: un regalo para los más fanáticos

Y bueno, este es un lugar donde solo escribiría regularmente un fanático de la temática Software Libre, y solo podría ser visitado regularmente por un fanático del tema; así que para ti va este regalo ;-)

Solo para fanáticos; con ustedes "Linus Torvalds":


Linus Torvalds


Mucho humor con "Frikis StarWars":

Frikis StarWars

Actualización (27/12/2005)

254 High Quality Firefox wallpapers (fuente: VivaLinux):


254 High Quality Firefox wallpapers

"Google contrata al creador del lenguaje Python"

Hace no mucho estaba hablando en un charla sobre Tecnologías Libres y tocamos el tema de los lenguajes de programación. Fue inevitable nombrar a Python y describirlo como:
"Python es un lenguaje de programación interpretado e interactivo, capaz de ejecutarse en una gran cantidad de plataformas. Fue creado por Guido van Rossum en 1990. "
Y hace menos tiempo, un amigo que trabaja en una popular universidad puso cara de "¿qué es eso? ¿con qué se come?" (que me imagino que habrá pensado: "estas son cosas de Friki o de Geek, es la primera vez que oigo de ese lenguaje" ;-)

Esta noticia lo aclara todo: Google, la empresa de moda más existosa, usa desde sus inicios Python, y ahora, contrata al creador del lenguaje ... por algo será, no? ;-)

Creo que no queda más alternativa que investigar este lenguaje y comprender porqué se está hablando tanto de él en la Web.

Fuente: google.dirson.com

"¿Talibanes del Software Libre?", segunda parte

Quiero volver sobre mis pasos y sacar algunas conclusiones sobre el artículo que escribí llamado ¿Talibanes del Software Libre?.

Creo que el mismo a cumplido con un pequeño y humilde fin: que se cuestione la idea original de crear una ley que imponga el uso del Software Libre (de la cual estoy en contra).

Pero debo hacer algunas puntualizaciones:

No me considero el dueño de la verdad, pero critico a quienes si se consideran dueños de ella; no me considero troll por el mero hecho de escribir algo que pueda generar polémicas, solo estoy transmitiendo mi opinión y creo que la polémica se genera cuando somos intolerantes con los que opinan distinto.

Lo que me llama la atención es que tampoco he visto mucha preocupación en la gente que me critica por cuestionarse si yo pudiera estar remotamente en lo cierto y ellos equivocados (aunque sea parcialmente).

"Críticas varias"

Luego de discutir en varios weblogs (en un casi diálogo de sordos) estoy aprendiendo a respetar el tiempo y la dedicación de muchas personas que trabajan para desacreditar al interlocutor del mensaje y así evitar tener que combatirlo con argumentos (tal vez por la falta de los mismos ;-)

Dejando de lado la broma y el tono irónico, realmente estoy tratando de ser tolerante con los que no piensan como yo, para no cometer el mismo error que estoy denunciando de la gente que es extremista con el tema "Software Libre".

"No soy creador del término"

Por ejemplo: en un sitio se me criticaba de que me "autoproclamaba" creador del término "Talibán del Software Libre", cuando en el artículo original soy muy claro al respecto.

Es casi imposible no repetirse en este mundo y más difícil es no hacerlo en Internet (o será al revés :-). Ya me ha pasado que alguien me acusara de "copiar" el nombre de una empresa porque esta existía en Suecia (si mal no recuerdo).

"Está todo inventado"

Como dice el dicho "ya está todo inventado", y es casi imposible ser "original" en un mundo que a cada segundo hay personas que se le ocurren ideas e intentan llevarlas adelante (y calculo que muchos creerán que a nadie se les debe haber ocurrido antes ;-).

Claro está que a muy pocos se les ocurren ideas originales, y más difícil aún es que intenten llevarlas a cabo.

¿El punto es: debo quedarme estático por el miedo a no poder ser original?

Como ejercicio prueben de pensar el nombre de una empresa que tenga relación, por ejemplo, con Linux, y luego hagan la consulta en Internet.

Será muy difícil encontrar un nombre original y que este no esté siendo usado ya en otra parte del mundo. De todas formas, esto tampoco tiene mucho sentido, pues las empresas y las marcas generalmente tienen una jurisdicción local, y que existan en otros países no es impedimento para que no podamos usar la misma denominación en nuestro país de residencia (hay contadas excepciones: marcas notorias, multinacionales, etc).

"Perfectamente legal"

Esto es perfectamente legal. Por ejemplo, este es el negocio de los "Piratas de Marcas" (o "Piratas Marcarios") que estudian las posibles marcas extranjeras que puedan ingresar al país y las registran anticipadamente. Cuando las empresas entran al mercado se encuentran que un "agente de registro de marcas" la tiene en su poder, y mediante una negociación se vende a su verdadero dueño por importantes sumas en dólares.

Muy similar a los "ciberocupas": registran los dominios antes que los verdaderos interesados y luego los extorsionan con su venta. O los registran directamente para no venderlos, solo para hacer daño directo a alguna persona o empresa que tenga intereses opuestos al "ocupante".

En resumen: es perfectamente legal, pero tal vez discutible su moralidad ("lo que la ley no niega, está permitido").

¿Si no es ilegal, no deberíamos tener problemas con esto ... o sí?


¿Es posible ser "original"?

Volviendo al tema, luego de analizar las críticas recibidas, me puse a buscar en Google este término y analizar que obtenía como resultado. Si hacemos la búsqueda estricta, es decir, el texto lo encerramos entre comillas para que busque esas mismas palabras en ese mismo orden, el primer resultado me devuelve 160 coincidencias, y si hacemos una búsqueda no estricta (le saco las comillas) las coincidencias suben a 12.500.

Detalle a tener en cuenta: estamos usando un término en "castellano", cuando podríamos hacer la misma búsqueda en inglés (o algún otro idioma) y creo que tal vez llegaríamos a resultados mayores.

Entre las búsquedas estrictas y en español, encuentro el siguiente artículo "Talibanes del Software Libre" y que fue escrito el 27 de Abril de 2004 por Juanjo Navarro.


Concluyendo

Como ya decía, es difícil ser original en la vida, pero me alegro que en momentos distintos, con información y contextos también distintos, existiera gente que anticipadamente ya pensaba muy parecido a uno (aunque mi razonamiento debería ser al revés ;-)

Los invito a leer su artículo para conocer otro punto de vista sobre el mismo tema: Talibanes del Software Libre escrito por Juanjo Navarro.

Aunque vuelvo a repetir, antes del 2004 yo usaba este término, pero reconozco que hay gente que escribió artículos sobre este tema antes que a mi se me ocurriera ;-)

Actualizacion: ya se encuentra disponible la tercera parte de este artículo:

"¿Talibanes del Software Libre?", tercera parte

La frase del día

"¿Lo quiere rápido, barato, o bien hecho? Puede elegir dos de las tres cosas."

– El espectro del Titanic (Arthur C. Clarke, 1998)

Fuente: Microsiervos

¿Problemas con Flash al instalar Firefox 1.5?

Otro de los problemas que tuve al instalar Firefox 1.5, tanto en Windows como en GNU/Linux (que ya usaban la versión anterior 1.0.7) fue que dejó de funcionar el soporte de Flash.

Lo primero que se me ocurrió fue volverlo a instalar, bajando el software del sitio oficial de Flash, pero luego de terminada la instalación seguía sin funcionar.

En entornos que no tenían las versiones anteriores de Firefox, al instalar la versión 1.5 y navegar por sitios con Flash, este avisaba que había que instalar un "plug-in". Si aceptamos esta instalación, Flash queda correctamente funcionado (característica que no funcionaba en versiones anteriores de Firefox).

Pero volviendo al tema: la única forma que encontré para solucionar el primer inconveniente fue borrando el subdirectorio que contiene la configuración de Firefox para el usuario que lo está ejecutando. Una vez reiniciado el navegador, este volverá a crear el directorio y definirá nuevamente los archivos de configuración.

Si en GNU/Linux nos posicionados en el "home" del usuario, el directorio a borrar es ".mozilla".

Y si estamos en Windows, el subdirectorio es "mozilla".

"¿Talibanes del Software Libre?"

En la actualidad no creo que el termino sorprenda a nadie (no me considero el inventor del mismo, pero sí uno de los primeros en usar la palabra "Talibán" y "Software Libre" juntas ;-) y estoy convencido de que refleja la poca "autocrítica" existente en este ambiente.

Pero lo que sí debería sorprender es por qué se origina la expresión y por qué cada vez más seguido se está usando: ¿cómo se puede ser un "Talibán" (hoy día se usa para describir a un "extremista religioso") y además promulgar el uso del "Software Libre"?

¿Somos contradictorios?

Lamentablemente será muy difícil que escuchemos estas palabras en boca de alguien que participe de los famosos Grupos de Usuarios Linux (de cualquier parte del mundo) por la falta de "espíritu autocrítico" de sus integrantes (y aquí nos vamos acercando al origen del término).

Hace unos años llegué a la conclusión que la verdadera motivación de la mayoría de la gente que quiere unirse a estos grupos es poder sentirse "parte de algo" y ser aceptados por sus "semejantes". Luego, con el tiempo, se van "auto-convenciendo" que ese "algo" puede ser de origen "divino" (ya no se duda, no se cuestiona, simplemente se convierte en fé) y se genera un auto-compromiso: "comunicar el mensaje al mundo" y transformar a nuestro prójimo para "que piense como nosotros" (y aquí nos acercamos al origen del término "fanático religioso").

¿O vamos a negar que cuando escuchamos o leemos a la mayoría de la gente seguidora del Software Libre, no nos da la impresión de estar ante el reverendo de una iglesia?

Nota aparte: estoy seguro que si los "Grupos de Usuarios Linux" no existieran, esta misma gente se afiliaría a otro que les brinde la misma sensación de "comunidad", de "pertenecia", de "misión" (Usuarios de Mac, El Club del Clio, Grupo de Bebedores de Coca Cola, etc).

Al final de cuentas, para ellos su necesidad siempre será la misma: seguir a "alguien" o "algo", y que su vida cuente con una "misión".

Existe una tendencia a nivel mundial (y en América Latina cuenta con demasiados adeptos) y que nace en el seno de los "Grupos de Usuarios Linux": impulsar leyes que obliguen a usar de forma *exclusiva* Software Libre en la administración pública de los gobiernos de cada país.

Lamentablemente debo ser honesto, principalmente conmigo mismo, y reconocer que esto es un grave error que finalmente beneficiaría a unos pocos a costa de cercenar la libertad de elección de los que no piensan como nosotros.

Me considero "Fanático No-Religioso" del Software Libre, y a pesar de todo, podría intentar mirar a un lado porque esto beneficiaría a nuestra "causa común" (¿qué podría hacer un poco de injusticia, pero en este caso, que esté a nuestro favor?).

Me pregunto, los impulsores de estas leyes (principalmente los integrantes de estos grupos), ¿nunca se pusieron a pensar que si obligan a usarlo estaríamos creando el “Monopolio del Software Libre”?

¿Por qué somos tan extremistas?

¿El problema es con todo el software propietario? ¿el problema son todas las empresas de software propietario? ¿Cual es la diferencia que hoy el monopolio pueda ser Microsoft, mañana IBM, en un futuro Oracle, cuando perfectamente podría ser Red Hat, SuSE, Novell? ¿si excluimos al software privativo, estaremos mejor con proveedores de software libre?

¿El tema es solo el licenciamiento?

¿No están atacando de forma errónea el problema? ¿en vez de *obligar* a cambiar por ley las caracteríticas de los productos de los proveedores, no deberían desarrollar sus propios productos de software y hacerlo bajo su propio licenciamiento?

También hay otro punto, y no es menor: muchos de los integrantes de los grupos de usuarios (principalmente los que llegan a sus directivas) tienen intereses comerciales directos y si se aprueban este tipo de leyes, *ellos* serían parte directa del beneficio del "monopolio".

Estoy convencido que siempre se debería usar Software Libre en oposición al Software Privativo si estamos comparando dos productos que ofrecen las mismas características técnicas (pros y contras). Evidentemente el beneficio es aún mayor que solo pagar los costos de comprar un “producto en caja" de uno u otro proveedor.

Resumen Final

Qué mejor para concluir con la idea que transcribir la opinión de políticos de un "país desarrollado" que terminan votando en contra de la creación de una ley "Pro Software Libre":


Fuente: Hispamp3 y La Pastilla Roja

"... se opusieron argumentando que 'los parlamentos deben fomentar la competencia de todo tipo de software' y evitar intervenir con requisitos 'que discriminen y limiten la libertad'".


Sabias palabras

Por más que muchos crean que este tipo de filosofía hace bien a toda la humanidad y deba extenderse más allá del software y así poder crear un "mundo perfecto" (depende para quíen) ...

... no deberíamos ser libres para poder decidir por nosotros mismos lo que nos conviene? ¿o acaso, no deberíamos estar hablando de lo mismo, sobre la libertad? ¿libertad para algunos o para todos? ¿toda la libertad para los que piensan igual que yo?

¿"Defenderemos con nuestra vida el derecho de otros a pensar distinto"?

De todas formas, creo que hay que desdramatizar todo esto: no todo es "Software Libre" en la vida ;-)


PD: Esto me hace acordar a la Rebelión en la Granja:


"Todos los animales son iguales, pero algunos son más iguales que otros".

¡Suertempila!

Actualización: ya se encuentra disponible la continuación de este artículo:
"¿Talibanes del Software Libre?", segunda parte

Entrevista al autor del lenguaje "Ruby"


Ultimamente se está hablando mucho de temas como Ruby On Rails, por lo que les traigo una entrevista al autor directo del lenguaje Ruby.



Para quién no esté al tanto aún, "Ruby On Rails" es un framework para desarrollar aplicaciones Web basado en el lenguaje Ruby.



Breve introducción: "Yukihiro Matsumoto, más conocido por Matz, fue el creador del lenguaje de programación Ruby. Ruby es el lenguaje de moda ahora mismo; Totalmente orientado a objetos, potente, de alto nivel y sobre todo, divertido de programar (sic).


Ruby es un lenguaje que está evolucionando rápidamente, y que ha saltado a primera línea mundial gracias a una revolucionaria aplicación llamada Ruby on Rails."

Entrevista completa

"¿Debería utilizar estándares Web?"

Esta es una presentación realizada por José Manuel Alonso, de la Oficina Española de W3C; un párrafo dice más que mil imágenes:

"Tu usuario más importante es ciego. La mitad de las visitas a tu sitio viene de Google, y Google sólo ve lo que un ciego puede ver. Si tu sitio no es accesible, tendrás menos visitas. Fin de la historia. (Steven Permberton)".

Y el punto 9 es categórico: muestra capturas de como se ve un sitio 100% estándar en diversos dispositivos.

Simple, directo, ... imperdible!

La presentación: "¿Debería utilizar estándares Web?"


¿Problemas al instalar Firefox 1.5 en Linux?

Por ejemplo, si estás usando Fedora Core 4 (la distribución "comunitaria" de Red Hat) e intentaste instalar Firefox 1.5, te debe haber dado el siguiente mensaje:

error while loading shared libraries: libstdc++.so.5: cannot open
shared object file: No such file or directory

La solución es instalar el siguiente paquete: compat-libstdc++

Ejecutas el siguiente comando:

yum -y install compat-libstdc++-33

Y pronto, a disfrutar de Firefox 1.5!

PD: les dejo el enlace donde comentan varios problemas en distintas
distribuciones y como solucionarlos: Mozilla / Faq

¡Se cumplió el rumor: Anteldata duplica la velocidad a sus clientes!

El proveedor uruguayo de ADSL, Anteldata, acaba de anunciar que
duplica la velocidad de acceso a Internet a todos sus clientes de tarifa plana, sin costos extras!

Muchos dirán que soy negativo: estamos en un mercado "cerrado" donde existen solo 2 proveedores de Internet para Uruguay, y Anteldata es una empresa del Estado (con todas las ventajas de su lado).

Estas estrategias comerciales pueden hacer mucho daño a su único competidor, la empresa (del ámbito privado) Dedicado.

¿Qué sucede si con este tipo de estrategias se ve obligada a abandonar el mercado... no saldremos todos los consumidores perdiendo al quedarnos con un único proveedor?

Este tipo de campañas solo se generan por la existencia de competencia... la pregunta es: ¿es suficiente la competencia actual? ¿no será hora que se liberen las telecomunicaciones e ingresen nuevos proveedores de acceso a Internet? ¿nos estamos conformando con poco? ¿qué otras ventajas obtendríamos con más proveedores compitiendo? ¿y con el mercado totalmente liberado?

¿Esta noticia, es realmente positiva o negativa?

Si no logré preocuparte, puedes ver la noticia completa en:
"Duplicamos Ancho de Banda a servicios ADSL de tarifa plana"

Firefox: ¡Se liberó la tan esperada versión 1.5!

Incluye muchas importantes novedades, entre ellas:

- La posibilidad de "arrastrar y soltar" las "solapas" de navegación.
- Actualizaciones automáticas
- Mayor velocidad de navegación
- Seguridad y privacidad
- Accesibilidad y configuración
- y un largo etcétera...


Todos los detalles en: www.mozilla.org

Se crea el weblog "PHP CINCO"

Me han llegado varios pedidos para profundizar y especializar los artículos en temas como PHP y en particular sobre la versión 5.

Por esa razón creé otro weblog dedicado de forma exclusiva a ese tema: phpcinco.blogspot.com ó "Como ser un 'Programador PHP5 Senior' y no morir en el intento ..." ;-)

Para mantener la coherencia en los contenidos, voy a mover todos los artículos referentes a PHP5 al nuevo weblog, y este quedará para comentar sobre temas más generales (Software Libre, GNU/Linux, etc).

"¡Mi sitio Web es estándar! ¿Y el tuyo?"

Siguiendo en la misma línea del artículo anterior (los estándares web), este documento fue hecho por la propia World Wide Web Consortium (W3C) donde ejemplifican los argumentos comunes que son esgrimidos a la hora de no respetar los estándares.

En lo personal creo que los argumentos podrían tener alguna justificación hace algunos años atrás, cuando el mercado presionaba a la tecnología (principalmente en la web) a hacer cosas que cumpliendo los estándares eran imposibles (tal vez por el afán de obtener las mismas funcionalidades de las aplicaciones del escritorio). Eso llevó a que los proveedores de tecnología crearan productos que brindaban nuevas características con la restricción (intencional o no) de que solo corrieran en sus propios productos o tecnología (navegadores web, servidores, etc).

Con el correr de los años la tecnología evolucionó y el mercado (y en particular los consumidores finales) empezó a obligar a los proveedores de la misma a ser "compatibles" con otras tecnologías y proveedores (condición que se había perdido anteriormente), es decir, a "obligar indirectamente que se respetaran los estándares".

Según Wikipedia un estándar (en tecnología) es: "una especificación que regula la realización de ciertos procesos o la fabricación de componentes para garantizar la interoperabilidad"

Ya no es excusa suficiente: el cliente no tolera el "solo funcionan con tal navegador", "con tal sistema operativo" ... y la empresa no puede "hacer un sistema para cada plataforma que sus clientes usen".

La solución: respetar los "estándares". Un sitio web que respete los estándares será accesible desde cualquier plataforma, independientemente de quién sea nuestro proveedor y nuestro dispositivo de turno (un computador, un celular, etc), y no será necesario desarrollar y mantener varios sistemas para cumplir con nuestros clientes.

Hoy, las empresas y las tecnologías que están tomando la delantera no solo respetan los estándares, sino que necesitan de ellos para competir (ejemplos: la empresa Google, tecnologías como XHTML, CSS, AJAX, etc).

Si no cumples con los estándares, quedarás aislado (o en su defecto, tendrás acceso a un segmento reducido del mercado). Esto ya lo está aprendiendo empresas como Microsoft al liberar servicios como Live que soportan "todos los navegadores" (no solo su producto Internet Explorer, como estamos acostumbrados a sufrir al navegar por muchos sitios en la web).

Finalmente, me suscribo a la misma pregunta:

¡Mi sitio Web es estándar! ¿Y el tuyo?

"Porqué diseñar con tablas es estúpido"

Trabajando en la preparación de una charla donde el tema medular eran "los estándares en la web" encontré de casualidad este enlace donde explica de forma "clara" y "amena" las razones de por qué deberíamos diseñar un sitio web "sin tablas".

Porqué diseñar con tablas es estúpido (traducción)

Actualización (23/04/2006)
Veo que el enlace a la versión traducida al español dejó de funcionar. Dejo disponible la referencia a la versión original en inglés y a su sección que enlaza a las traducciones (tal vez algún día vuelva a estar la versión en castellano).

Why tables for layout is stupid

Traducciones en distintos idiomas

Linux: como convertir los tildes a sintaxis html

Tuve el siguiente problema: estaba desarrollando en PHP y con Smarty desde un equipo con Linux que soportaba el formato UTF-8, pero debía subir los fuentes a un servidor que disponía de una versión de Linux antigua que no soportaba este formato.

El resultado era que los tildes escritos "a fuego" (ej: "canción") eran representados como "basura" en la pantalla.

Finalmente, después de varios intentos infructuosos, decidí que la única forma de solucionarlo definitivamente era recorrer todos los fuentes con html y ver de cambiar la codificación de lo tildes a HTML (sintaxis "acute") y quedaría todo solucionado.

Este es el resultado de leer por media hora los manuales, un scripts que recorre todos los fuentes .html y los corrige:

recorrer_tildes.sh

find . -print -name '*.tpl.html' -exec ./corregir_tildes.sh {} \;


corregir_tildes.sh
echo "->" $1

mv $1 $1.orig
sed -f sed.txt $1.orig > $1

sed.txt

1,${
s/á/\á/g
s/é/\é/g
s/í/\í/g
s/ó/\ó/g
s/ú/\ú/g

s/Á/A/g
s/É/E/g
s/Í/I/g
s/Ó/O/g
s/Ú/U/g

s/ñ/\ñ/g
s/°/\&\#176;/g
s/º/\&\#176;/g
s/N�/Nro/g
s/1�/1ero/g
s/4�/4to/g

s/emitir�/emitir\á/g

}

Que les aproveche!

Linux: obligar a reiniciar cuando ocurre un Kernel Panic

Este "truco" fue extraido de Barrapunto:

Editando el archivo /etc/sysctl.conf y agregando la siguiente línea:

kernel.panic=5

En teoría, lo que hace esto es definir que si ocurre un kernel panic, esperaría 5 segundos y luego reiniciaría la máquina.

No lo he probado, pero tal vez no sea tan positivo como parece. Si lo vemos desde el punto de vista de la auditoría, no es bueno que ocurra algún problema inesperado y que el sistema continúe y nosotros no nos enteremos rápidamente.

Pero bueno, es algo a tener en cuenta y saber que existe, y aplicarlo en el contexto adecuado.

VIM: ¿Buscar y Reemplazar una cadena de texto?

Vim es un editor en línea de comandos muy popular en Linux. Su popularidad se debe principalmente a que puede ejecutarse en cualquier ambiente, por más complicado que sea, y ofrece un conjunto poderoso de comandos, entre ellos las famosas “expresiones regulares” de Unix).

Vayamos al grano, y dejemos un ejemplo de los clásicos que sirven para sorprender en una fiesta de usuarios Windows ;-)

Una vez ejecutado el editor, para acceder a la línea de comandos deberemos presionar los “:” (dos puntos), donde digitaremos lo siguiente:

1,$ s/eplace/Enrique Place/g


Esto significa:

  • “1″ es la primera línea donde comenzaremos la búsqueda/reemplazo
  • “$” significa la última línea donde terminaremos la búsqueda/reemplazo, en este caso “$” representa el fin del archivo (podemos sustituirla por el número de línea hasta donde queremos que llegue)
  • “s/” significa “search”, o “buscar”, y lo que aparece seguido a la barra es la cadena a buscar.
  • “/” como separador, y la cadena siguiente es el texto que reemplaza la cadena buscada
  • “/g” para terminar significa “global” (lo opuesto sería no hacer la sustitución a todo lo que se encuentre, o hacerlo de forma “interactiva”).

En resumen: buscar en todo el archivo que estamos editando la cadena “eplace” y la sustituye por “Enrique Place”, no importa la cantidad de veces que aparezca.

Más información, Vim Online

PHP/PostgreSQL: Como hacer una consulta con "LIKE" sin "case sensitive"

Hoy tuve este problema: hacer que una búsqueda a través de un formulario que solicita una cadena de texto busque sin importar si está en mayúsculas o minúsculas.

Por defecto el comportamiento del LIKE es "case sensitive" (distingue mayúsculas y minúsculas), lo que al ingresar "OBJETO", "Objeto", "objeto" u "ObJeTo" son cosideradas palabras distintas, con resultados distintos.

Lo que hice fue tomar el valor de búsqueda y convertirlo a "minúsculas", y luego hice lo mismo del lado de la consulta SQL.

Es decir:

$cadenaLower = strtolower($cadenaTexto);
$SQL = $SQL." lower(tabla.campo) LIKE '%$cadenaLower%' ";


No es un gran descubrimiento, pero por lo menos queda documentado para las generaciones futuras y tal vez le pueda ahorrar esos cinco minutos que perdí buscando las funciones ;-)

Ahora, mi pregunta es: como implementar con PostgreSQL una búsqueda fonética?

Noticias: "Programa en .Net desde linux, pero sin instalarlo"

"Una de las cosas en las que se puede decir que Microsoft acertó de pleno, fue a la hora de liberar la plataforma .Net, al contrario que el lenguaje y entorno de programación Java de Sun.

Diversos desarrolladores de la talla de Miguel de Icaza fundaron el Proyecto Mono: por un lado la plataforma Mono, que no es más que una implementación propia de lo que Microsoft denominó .NET Framework en Windows, y MonoDevelop, que hace la misma función que el Visual Studio .Net, pero libre y gratuito."


Noticia completa en: Programacion.com

Linux: ¿Como hago para saber el paquete rpm de un archivo cualquiera?

Cuantas veces, estando en nuestra distribución favorita de Linux ;-), quisimos saber cual fue el paquete rpm que instaló un archivo determinado? Supongamos que queremos saber el paquete origen del ejecutable ipop3d, que se encuentra en el directorio /usr/sbin.

Ejecutando: rpm -qf /usr/sbin/ipop3d, nos devuelve el nombre del paquete rpm:imap-2001a-18

Si ejecutáramos : rpm -qif /usr/sbin/ipop3d, nos devolvería la información completa del paquete "imap" (fecha de creación, nombre del equipo que lo creó, proveedor, descripción, etc).

Los parámetros son:

  • -q consulta

  • -f archivo

  • -i información (completa)


Tips:
para que funcione esta sintaxis, debemos darle la ruta exacta de donde se encuentra el ejecutable (en este caso, podría perfectamente ser cualquier archivo no ejecutable). Si lo que queremos es buscar únicamente un ejecutable (no funciona para los demás casos), podemos usar el comando which:

which ipop3d nos devolverá /usr/sbin/ipop3d.


También podemos combinar los dos comandos haciendo:

rpm -qif `which ipop3d`

Donde las comillas (esas, no otras) le devuelven al comando rpm la salida del which, como si hubiéramos digitado la ruta completa a mano.


Que lo disfruten!

Linux: ¿Como acceder a un pen-drive?

Hace poco que soy el feliz poseedor de un pen-drive de 1 Giga (con solo repetirlo, se me empañan los lentes ;-), y habiendo probado que funcionaba en Windows (estaba muy apurado ;-), mi deseo era disfrutarlo en Linux (donde pasaré la mayor parte de mi vida adulta ;-).

Actualmente uso Red Hat 9 (si, cuando tenga tiempo me actualizo), pero por toda la documentación que tuve que leer para lograr "entender" como funciona, cualquier distribución con kernel de versión superior a 2.4.10 es apta.

Digo "entender", porque muchas veces pensamos que algo es "complicado" en Linux, o directamente decimos "no anda", y el problema es que nosotros no entendimos ni el problema, ni la solución.

A pesar que no soy nuevo en Linux (8 años de experiencia, aproximadamente) soy nuevo en el tema "pen-drive", y como todo "novato" mi desconocimiento del tema y mi emoción hizo que demorara unas horas antes de lograrlo.

Luego me di cuenta que era muy sencillo (esa es una de las ventajas del conocimiento ;-):
  • Generalmente los kernels de las distribuciones vienen preconfigurados para soportar USB, lo cual simplifica mucho las cosas.
  • El otro tema a tener en cuenta es como se representa el pen-drive en Linux. Como todo Unix, este hardware será un "archivo que representa un dispositivo" y para este caso la nomenclatura será la misma que si fuera un disco scsi (no me pregunten porqué hace la emulación scsi para llegar al pen-drive): /dev/sda1
  • Como todo dispositivo, hay que "montarlo" (si, algo que hace Windows, pero de forma automática). Para eso debemos primero crear un subdirectorio dentro del directorio donde deberíamos montar todos los dispositivos (si somos ordenados): /mnt
  • Luego de tener el directorio destino, ejecutamos el comando para montar: mount /dev/sda1 /mnt/pendrive
  • Luego de usarlo, hay que "desmontarlo" (si, lo opuesto a "montarlo" ;-): umount /mnt/pendrive
Posibles problemas:
  • También (aquí es donde perdí el mayor tiempo) hay que controlar que todos los "módulos" del kernel encargados de "soportar" este tipo de hardware se encuentren "activados". Ejecutando el comando "lsmod" nos listará los módulos que actualmente están ejecutándose. Entre muchos, estarán los que nos importan: usb-ohci, usbcore, scsi_mod y usb-storage
  • Si tienen poca suerte, les faltará algún módulo, y si este no se levantara automáticamente cuando se ejecute el "mount", deberán hacerlo a mano. En mi caso, el módulo "usb-storage" no se encontraba corriendo y tuve que ejecutarlo usando el siguiente comando: modprobe usb-storage


Recomendación Final
Para que el dispositivo tenga toda la información grabada *SI o SI* hay que desmontarlo antes de retirarlo, de lo contrario, podrán no tener los datos actualizados en el pen-drive.

Que lo disfruten!

Linux: ¿Cómo hacer respaldos rotativos de una base de datos?

Antes de empezar, voy a repetir lo que siempre repito: los respaldos son 50% propiamente dicho "el respaldo", y el otro 50%, recuperarlos.

Con respecto a las formas, siempre es recomendable hacerlos a través de varios medios, como ser: cintas, discos, discos distribuidos, Raid, y nunca olvidar de hacer una versión (o más) que no se encuentre físicamente en la misma instalación de los servidores (si hay un incendio, o un robo, como hacemos para reconstruir el servidor?). Hasta se podría aprovechar alguna de las famosas cuentas de Gmail.

En este caso, el ejemplo que voy a comentar desarrolla otra forma de sentirnos un poco más seguros: las "versiones" y la "rotación" del respaldo ;-)

La idea es hacer "respaldos rotativos", es decir, respaldar nuestra base de datos rotando los días de la semana, donde por día podremos respaldar varias veces, y vamos acumulando "versiones" a través de toda la semana. Una vez que cumplamos un ciclo, es decir, si iniciamos un Lunes y luego de una semana, volvemos a caer en el Lunes, borramos los respaldos antiguos y realizamos los del día corriente.

Otro de los beneficios, además de tener respaldos de todos los días, y varias veces por semana, es que podemos dejarlo trabajar *casi* automáticamente, porque nunca correríamos peligro de quedarnos sin espacio de disco (aunque, volvemos al inicio, si se rompe el disco, se pierden todos los respaldos rotativos).

La idea es la siguiente:

Creamos una estructura como:

/var/respaldos/rotativos (en "var", porque es información "variable", como los "logs", "cache", etc).
/var/respaldos/scripts (es bueno ser ordenado, ahí van los scripts de respaldos)

Y dentro del directorio "rotativos", directorios con los nombres de los días de la semana (en este caso, en inglés y abreviados):

Fri Mon Sat Sun Thu Tue Wed

Y tenemos el primer scripts, llamado "respaldo_base.sh" (en este caso usaremos la base de datos PostgreSQL, pero perfectamente se puede cambiar los comandos para MySQL):


#!/bin/bash

DB="nombre_base_datos"
DIR_RESP="/var/respaldos/rotativos"

DIA_ACTUAL=`date +%a`
FECHA_ACTUAL=`date +%Y%m%d`
HORA_ACTUAL=`date +%H_%M`

FECHA=`date +%Y%m%d-%H:%M`
ARC_RESP="$FECHA_ACTUAL-$HORA_ACTUAL"

DESTINO=$DIR_RESP/$DIA_ACTUAL/$ARC_RESP.tar.bz2

DUMP=`which pg_dump`
GZIP=`which gzip`
PAR_DUMP=" "
PAR_GZIP="-f -q --best"

echo "Dia Actual: $DIA_ACTUAL"

$DUMP $PAR_DUMP -U root $DB | $GZIP -f -q --best >
$DIR_RESP/$DIA_ACTUAL/$DB-$ARC_RESP.sql.gz


Sugerencias, bienvenidas ;-)

Noticias: MIT recomienda a Brasil un software gratuito en vez de Microsoft

"Media Lab, del Instituto Tecnológico de Massachusetts (MIT), recomendó a Brasil instalar software gratuito, en vez del ofrecido por Microsoft, en miles de ordenadores que serán vendidas a los pobres, de acuerdo con una carta obtenida el jueves por Reuters".

Fuente: IBLNEWS

Entradas populares