Categoría: Uncategorized

  • GNU emacs

    Este artículo está obsoleto, las capturas de pantalla han desaparecido.

    Recomendamos visitar el Blog sobre emacs en castellano: http://www.blackhats.es/wordpress/

    Buenas, este es mi primer post en Taringa y como vi algunos GNUeros quisiera hablar de un programa GNU que es para mi uno de los más brillantes paquetes que dio el software libre. El post es bastante nerd y más que nada está destinado a programadores que les gustan esos programas complejos y casi infinitos.

    Bueno, empecé a usar Emacs hace unos 6 o 7 años. Por ese entonces estaba metiendóme en el mundo de GNU/Linux, y casi todas las distribuciones traían tal programa. Poco a poco lo fui usando e investigando, atraído por lo mítico de la historia (el primer programa libre que diseñó Richard Stallman) y porque estaba comenzando a programar.

    Hay un montón de recursos para aprender GNU/Emacs, en mi opinión los mejores son su manual oficial, su ayuda interna, y el Emacs Wiki. Por eso no me quiero poner denso con cosas que van a encontrar en otros lados, prefiero hablarles de las características que tiene y que más me gustaron de este editor y que en general no se encuentran en otros editores (o al menos no todas juntas).

    Aplicaciones

    Emacs tiene miles de aplicaciones desarrolladas por la comunidad de usuarios. Uno podría pensar ingenuamente que hablamos de aplicaciones sencillas tratándose de un editor, y es verdad que esa era la idea original de su lenguaje de extensión, escribir programas que ayuden a la tarea de edición. Pero el lenguaje de extensión y el zarpado diseño de Emacs eran tan convenientes que la comunidad empezó a escribir programas de todo tipo en el lenguaje Emacs Lisp.

    El resultado es increíble, en Emacs tenemos varios clientes de correo, calculadoras programables, sistemas de algebra, clientes de grupos de noticias, navegadores web, clientes de chat (IRC, jabber, MSN), juegos, lectores RSS, manejadores de archivos, visualizadores de imagenes y de PDF,editores de video, de sonido e infinidad de wrappers o modos para montones de aplicaciones comunes de consola (debuggers, compiladores, etc).

    Programacion

    Acá es quizá en dónde Emacs más se luce. Emacs tiene todas las características tradicionales de un buen editor para programación: resaltado de sintáxis, identación automática, búsqueda y reemplazo de expresiones regulares, macros, etc. Pero además cuenta con un arsenal de modos (aplicaciones) para cada lenguaje particular. Sin duda, los que más herramientas tienen son el lenguaje C y Lisp.

    Para C podemos bucear el programa mediante tags, debuguear interactivamente (como en Eclipse o Visual Studio), obtener información sobre prototipos de funciones, conocer los errores de sintáxis en tiempo real con Flymake, autocompletado, interactuar con versionadores como CVS o SVN, elegir entre montones de estilos de indentación (KERNEL hacker, GNU hacker, K&R, etc.), aplicar parches, comparar archivos con wrappers para diff, y bocha de cosa más.

    Pero además Emacs trae o pueden conseguir en su wiki modos para casi cualquier lenguaje con el que se crucen: PHP, Haskell, Smalltalk, C++, Java, Cobol, Python, JavaScript, SQL, o lenguajes de marcado como HTML, Latex, TeX y un larguísimo etecetera.

    En los lenguajes interprétados casi siempre los modos nos permiten evaluar las expresiones desde el lugar de edición muy parecido a como trabajan la mayoría de IDEs de Smalltalk.

    Además Emacs cuenta con un interprete interno de Lisp que es el corazón de tanta extensibilidad, un 90% o más del editor se programa y se extiende con este lenguaje que es interactivo.

    Edición

    Acá Emacs se zarpa, siempre que tengo que cambiar de editor en el laburo lo que más extraño es la cantidad de comandos de edición de Emacs que tengo grabadisimos en mi columna vertebral.

    Cuando pasaste unos meses editando con Emacs, lo primero que te das cuenta es la agilidad y velocidad con la que uno se mueve por el archivo. Todos los comandos de movimiento y navegación se distribuyen en el centro del teclado, la filosofía es que ir hasta las flechitas, page up o page down es una cagada de perdida de tiempo. Y tenes comandos para cualquier tipo de movimiento que se te ocurra, avanzar una palabra, retroceder, un párrafo, una página, una línea, una función, una expresión, fin del documento, inicio, sentencias, y sin duda la búsqueda incremental (tipo Firefox) también se lleva las palmas como comando de navegación por el documento. Cuando lo dominas pareces una bolita de pinball moviendote a todo lo que da por los textos.

    La edición rectangular y las macros son otras dos funciones increíbles mientras editamos. La edición rectangular te permite cortar textos tabulados en columnas (como lo hace UltraEdit o Excel). Al principio uno no se da mucha idea de la cantidad de utilidades que tienen, pero si trabajan con lenguajes de marcado onda HTML bocha de veces se van a encontrar necesitando esta característica. Y las macros lo mismo, uno comienza a grabar con F3, trabaja sobre una línea (haciendo búsquedas de expresiones regulares, editando o lo que se te ocurra), termina de grabar con F4, y listo podes aplicarlo a todas las líneas del documento. Con solo saber eso lo usas en bocha de situaciones, pero también podes usar númeradores, registros y boludeces que hacen al sistema de macros impresionante para evitarte cualquier tarea repetitiva. A veces en el laburo quedan todos como boludos mirando como macreo archivos de datos de clientes en un toque con Emacs y antes lo hacían a mano o tardaban todo un día haciendo algún programa Perl.

    También tenemos un editor de dibujos ASCCI al mejor estilo paint con todas sus funciones (círculos, cuadrados, líneas, lapiz libre, etc). Puede parecer un programa caprichoso y al pedo, pero a la hora de programar uno puede embeber en los comentarios de los programas, el dibujo de estructuras de datos como colas, listas, de diagramas de flujo simples que hacen a secciones del programa muchísimo más simples de comprender.

    Uno puede pensar que son bocha de cosas para aprender, sobre todo si quiere programar sólo en algún lenguaje particular, y es verdad. Lo que pasa que lo que aprendas para un lenguaje particular te va a servir para miles de lenguajes más y cada vez que cambies de lenguaje (aunque sea para editar un bash script) te vas a seguir sintiendo infinitamente más productivo y cómodo en tu editor que si por ejemplo tuvieses que cambiar otra vez a un IDE de un lenguaje específico X.

    La ayuda

    El sistema de documentación y de ayuda de la distribución GNU de Emacs es una de los más rigurosos que se encuentran. Todo está documentado, y es accesible de montones de maneras. Uno puede navegar el manual oficial (que está en formato Info) desde adentro de emacs. Consultarlo mediante querys, preguntar por funciones, preguntar que hace un atajo de teclado particular, o cual es el atajo para tal comando. Ni bien entras a Emacs también se te ofrece un excelente tutorial que te explica lo esencial para moverse por un documento, buscar archivos, y todas las operaciones básicas de edición.

    Comprender el sistema de ayuda y aprovecharlo a fondo es uno de las primeras cosas que deberían hacer quienes se quieran meter a usar Emacs. Es quizá la primera complejidad con la que se van a cruzar, pero después de dominar todas las opciones de la ayuda te haces muy auto suficiente, incluso rara vez vas a recurrir a internet para preguntar algo, casi todo lo vas a encontrar dentro del Emacs.

    Como un demonio

    En la última versión de Emacs del CVS, se lo puede arrancar como un demonio (servicio). Eso significa que podemos tener una única versión corriendo sin estar attacheada a ningún cliente y abrir al toque diferentes clientes que comparten toda la sesión que tengamos abierta, a mi me pasa que a veces corro la misma sesión de emacs durante 1 mes y accedo desde el laburo o desde la notebook.

    Fin

    Bueno presenté un subconjunto pequeño de las miles de cosas que se pueden hacer con Emacs y sobre todo las que más me gustan. Más adelante voy a tratar de ir agrandando un poco el post, para comentar otras cosas interesantes. Más que nada hablé de características técnicas, pero si investigan un poco van a ver la cantidad de mística e historia que tiene este editor (por ejemplo que una de las primeros editores de tipo emacs fue programado por el creador de Java, o uno de los forks más importantes del editor fue escrito por el que después crearía el navegador de Netscape, o que es el editor favorito del autor del Arte de Programar Donald Knuth).

    En fin espero por lo menos enganchar a alguno y que el post anime a usar este excelente programa.

    Saludos!

     

    Fuente: http://www.taringa.net/posts/linux/2138611/GNU_Emacs-especial-para-nerds.html

  • Llamada a la participación en el hackmeeting 2009

    Temas

    Estos son algunos de los temas que se han tratado en otros
    hackmeeting o sobre los que nos gustaría compartir en el
    próximo. Pero no son los únicos. Buscamos nuevos puntos de
    vista y descubrimientos que os interese mostrar, debates que
    queráis coordinar, ideas y técnicas que queráis compartir:

    Inciando…

    • Iniciación a GNU/Linux (instalación, administración, redes, etc.)
    • Programas libres: GNU/Linux, Debian, etc.
    • Ciberpunk
    • Acceso universal a la red, al conocimiento y a la técnica
    • Filosofia hacker

    HumanWare

    • Reality hacking, DIY, autogestión
    • Copyleft, procomún, acceso libre y abierto, FLOK. etc.
    • Copyfights: Defensas frente al copyright, restricción de acceso, etc.
    • Hacktivistas.net, situación actual y proyecto.
    • Gobiernos en la red: Paquete «Telecom» de la UE, ley ADOPI, etc.
    • Corporaciones en la red: copyright, patentes, espionaje, lobbies, monopolios …
    • Hacktivismo y desobediencia civil electrónica, presente, pasado, futuro
    • Hacktivistas.net, situación actual y proyecto.
    • Educacion y nuevas tecnologías (plan educación 2.0, etc.)
    • Redes sociales, marketing viral: La red social para movimientos sociales N-1,
    • Bases de datos distribuidas e integración con herramientas de movimientos sociales: webs, listas, wikis, etc
    • Hacklabs
    • Fabricación digital, fabbing, software, conocimiento libre, conexiones con cultura hacker
    • Redes P2P (defensa, clientes, protocolos, organización, servidores, …)
    • Caso «the pirate bay»
    • Hacking jurídico
    • Geo-wiki-cartografía: hibridando el espacio y el ciberespacio
    • Espacio público y flujos electrónicos; espacios creative commons; arquitectura flos; wikiplaza
    • Mesas redondas sobre libros ciberpunk o cualquiera de los otros temas de esta lista
    • ¿es posible crear una internet totalmente autogestionada? ¿problemas? ¿alternativas?
    • Virtualización o cómo se vive en las empresas el «software libre».
    • La HackNET, ¿existe? ¿qué protocolo seria el más adecuado?

    Comunicación

    • Artivismo, guerrilla de la comunicación
    • Redes inalámbricas (wireless) autogestionadas
    • Comunicacion sin cable a largas distancias.
    • Ampliar la red telefónica InterHacklabs ???
    • Guifi.net
    • Comunicacion urbana. Conexiones a internet seguras y gratuitas en una ciudad cualquiera del mundo.
    • kit para hacer stream desde una mani.
    • Telemática y (contra)información alternativa
    • Guerrilla Hertziana: Un taller de construcción de un emisor FM.
    • Intervención en onda analógica. Reaprovechamiento de ese espacio frecuencial para nuestros beneficio.
    • Packet Radio.
    • Mediactivismo: Edición de vídeo y audio con herramientas y formatos libres
    • Taller de video. Report*hack*es.
    • Servidores autónomos, ISPs alternativos, data centers alternativos
    • Privacidad, anonimato, pseudonimato en la red
    • Encriptacion. Arquitecturas de seguridad en sistemas de red. Anonimato online: Tor, proyecto Anonymous.
    • Asterisk, telefonía publica, comunicaciones por la patilla, Piratel.
    • Experimentación con TDT. Demostración en directo de ello?.

    NerdCore

    • Criptografía, esteganografía
    • Phreak, Hack, Crack
    • Virus, inteligencia artificial, vida artificial, cibernética
    • Tarjetas inteligentes, firma digital, e-DNI
    • Seguridad
    • Tecnoliberación (RFID, DRM…)
    • Taller Latex avanzado: taller práctico de maquetación avanzada con Latex.

    Hardware y robótica

    • Reciclaje de hardware
    • Trucos (sacar energía del teléfono, montar una mesa de PC con materiales reciclados, etc)
    • Talleres de antenas, radios, bicihacking, etc.
    • Ensamblaje de motores
    • Arduino avanzado.+
    • pinguino project basado en el 18F2550, con IDE en Python.
    • Fabrica tu propia caja fuerte con cerradura por contraseña o por proximidad de dispositivos bluetooth. ¿Arduino?
    • Proyectos de robots grafiteros con gnu/linux. camion, con cuerdas desde pared)en otras plataformas.
    • Musica colectiva mediante wifi o bluetooth.
    • Drum’n Bass + Visual scene
    • Energias: energia solar para las máquinas, aerogeneradores, motor de aceite, motor de hidrógeno
    • reciclaje de hardware.
    • Dispositivos de altura sin cables: Fabricar globo.

    Además de las modalidades presenciales, el HM también admite
    participación virtual, serán bienvenidos texto, vídeo, audio
    que será colgado en la red (así como cualquier otra cosa que
    se os ocurra en formato digital).

    Cómo proponer un nodo

    Todas las propuestas de nodos se comentan en la lista de
    correo del HM (hackmeeting @ sindominio.net), recomendamos,
    por tanto, que te suscribas a la lista en
    http://listas.sindominio.net/mailman/listinfo/hackmeeting
    para empezar a participar en el nodo que propongas y ver el
    proceso que sigue tu propuesta.

    En cualquier caso para proponer un nodo sigue las instrucciones del wiki:

    O envía un mensaje con el encabezamiento «[nodo] nombre_propuesta» a estas dos
    direcciones:

    • hackmeeting @ sindominio.net
    • charlas @ sindominio.net (ésta última encargada de coordinar los horarios de las actividades-nodo del HM).

    En el cuerpo del mensaje proponemos que rellenes el siguiente
    formulario (o lo modifiques a tu gusto o exigencias de tu
    propuesta):

    • Información para el público/participantes
    1. Modalidad
      1. Charla
      2. Taller
      3. Mesa redonda
      4. Póster
      5. Exposición
      6. Reunión coordinación
      7. Performance
      8. Otros
    2. Nombre del/a dinamizador/a, autor/a, coordinador/a
    3. Título(s)
    4. Resumen
    5. Palabras clave
    6. Conocimientos recomendados para los participantes
    7. Estructura/contenido
    8. Metodología: exposicion, discusión, cacharreo, etc.
    9. Duracion
    10. Lecturas recomendadas. Para la gente que quiera entrar en el tema antes de entrar en el nodo.
    11. Navega-acción copirata: cómo podría integrarse el nodo en la manifestación?
    • Información para coordinar:
    1. Material necesario (incluyendo tipo de espacio por si hace falta un espacio abierto sin sillas o lo que sea).
    2. Preferencias de horarios
    3. Seguridad de asistencia (del 1 al 10)
    4. Documentos o archivos del nodo (si la hay, para colgar en la web: transparencias, textos, programas, etc.)

    Otras formas de participación

    Otras formas de participación aparte de los nodos de
    actividades (como aportar material, participar en las
    asambleas, coordinar actividades, hacer streaming,
    traducciones, etc.) son bienvenidas y necesarias. Para
    más información y coordinación la asamblea del HM se reúne
    virtual y permanentemente en la lista de correo hackmeeting @ sindominio.net. Podéis suscribiros en: http://listas.sindominio.net/mailman/listinfo/hackmeeting

    Más información

    El primer hackmeeting se hizo en Florencia el 1998 y desde
    entonces se han ido repitiendo anualmente en Italia (la web
    http://hackmeeting.org recoge el último HM celebrado en
    Italia y enlaces a todos los anteriores). El 2000 se celebró
    el primer hackmeeting hispanoparlante en Barcelona y hemos ido repitiendo el encuentro todos los años.

    Para más información nos podeis escribir a la lista de correo
    hackmeeting @ sindominio.net o visitar directamente la página
    web del hackmeeting:

    http://sindominio.net/hackmeeting

  • Hackmeeting 2009

    Temas

    Estos son algunos de los temas que se han tratado en otros
    hackmeeting o sobre los que nos gustaría compartir en el
    próximo. Pero no son los únicos. Buscamos nuevos puntos de
    vista y descubrimientos que os interese mostrar, debates que
    queráis coordinar, ideas y técnicas que queráis compartir:

    Inciando…

    • Iniciación a GNU/Linux (instalación, administración, redes, etc.)
    • Programas libres: GNU/Linux, Debian, etc.
    • Ciberpunk
    • Acceso universal a la red, al conocimiento y a la técnica
    • Filosofia hacker

    HumanWare

    • Reality hacking, DIY, autogestión
    • Copyleft, procomún, acceso libre y abierto, FLOK. etc.
    • Copyfights: Defensas frente al copyright, restricción de acceso, etc.
    • Hacktivistas.net, situación actual y proyecto.
    • Gobiernos en la red: Paquete «Telecom» de la UE, ley ADOPI, etc.
    • Corporaciones en la red: copyright, patentes, espionaje, lobbies, monopolios …
    • Hacktivismo y desobediencia civil electrónica, presente, pasado, futuro
    • Hacktivistas.net, situación actual y proyecto.
    • Educacion y nuevas tecnologías (plan educación 2.0, etc.)
    • Redes sociales, marketing viral: La red social para movimientos sociales N-1,
    • Bases de datos distribuidas e integración con herramientas de movimientos sociales: webs, listas, wikis, etc
    • Hacklabs
    • Fabricación digital, fabbing, software, conocimiento libre, conexiones con cultura hacker
    • Redes P2P (defensa, clientes, protocolos, organización, servidores, …)
    • Caso «the pirate bay»
    • Hacking jurídico
    • Geo-wiki-cartografía: hibridando el espacio y el ciberespacio
    • Espacio público y flujos electrónicos; espacios creative commons; arquitectura flos; wikiplaza
    • Mesas redondas sobre libros ciberpunk o cualquiera de los otros temas de esta lista
    • ¿es posible crear una internet totalmente autogestionada? ¿problemas? ¿alternativas?
    • Virtualización o cómo se vive en las empresas el «software libre».
    • La HackNET, ¿existe? ¿qué protocolo seria el más adecuado?

    Comunicación

    • Artivismo, guerrilla de la comunicación
    • Redes inalámbricas (wireless) autogestionadas
    • Comunicacion sin cable a largas distancias.
    • Ampliar la red telefónica InterHacklabs ???
    • Guifi.net
    • Comunicacion urbana. Conexiones a internet seguras y gratuitas en una ciudad cualquiera del mundo.
    • kit para hacer stream desde una mani.
    • Telemática y (contra)información alternativa
    • Guerrilla Hertziana: Un taller de construcción de un emisor FM.
    • Intervención en onda analógica. Reaprovechamiento de ese espacio frecuencial para nuestros beneficio.
    • Packet Radio.
    • Mediactivismo: Edición de vídeo y audio con herramientas y formatos libres
    • Taller de video. Report*hack*es.
    • Servidores autónomos, ISPs alternativos, data centers alternativos
    • Privacidad, anonimato, pseudonimato en la red
    • Encriptacion. Arquitecturas de seguridad en sistemas de red. Anonimato online: Tor, proyecto Anonymous.
    • Asterisk, telefonía publica, comunicaciones por la patilla, Piratel.
    • Experimentación con TDT. Demostración en directo de ello?.

    NerdCore

    • Criptografía, esteganografía
    • Phreak, Hack, Crack
    • Virus, inteligencia artificial, vida artificial, cibernética
    • Tarjetas inteligentes, firma digital, e-DNI
    • Seguridad
    • Tecnoliberación (RFID, DRM…)
    • Taller Latex avanzado: taller práctico de maquetación avanzada con Latex.

    Hardware y robótica

    • Reciclaje de hardware
    • Trucos (sacar energía del teléfono, montar una mesa de PC con materiales reciclados, etc)
    • Talleres de antenas, radios, bicihacking, etc.
    • Ensamblaje de motores
    • Arduino avanzado.+
    • pinguino project basado en el 18F2550, con IDE en Python.
    • Fabrica tu propia caja fuerte con cerradura por contraseña o por proximidad de dispositivos bluetooth. ¿Arduino?
    • Proyectos de robots grafiteros con gnu/linux. camion, con cuerdas desde pared)en otras plataformas.
    • Musica colectiva mediante wifi o bluetooth.
    • Drum’n Bass + Visual scene
    • Energias: energia solar para las máquinas, aerogeneradores, motor de aceite, motor de hidrógeno
    • reciclaje de hardware.
    • Dispositivos de altura sin cables: Fabricar globo.

    Además de las modalidades presenciales, el HM también admite
    participación virtual, serán bienvenidos texto, vídeo, audio
    que será colgado en la red (así como cualquier otra cosa que
    se os ocurra en formato digital).

    Cómo proponer un nodo

    Todas las propuestas de nodos se comentan en la lista de
    correo del HM (hackmeeting @ sindominio.net), recomendamos,
    por tanto, que te suscribas a la lista en
    http://listas.sindominio.net/mailman/listinfo/hackmeeting
    para empezar a participar en el nodo que propongas y ver el
    proceso que sigue tu propuesta.

    En cualquier caso para proponer un nodo sigue las instrucciones del wiki:

    O envía un mensaje con el encabezamiento «[nodo] nombre_propuesta» a estas dos
    direcciones:

    • hackmeeting @ sindominio.net
    • charlas @ sindominio.net (ésta última encargada de coordinar los horarios de las actividades-nodo del HM).

    En el cuerpo del mensaje proponemos que rellenes el siguiente
    formulario (o lo modifiques a tu gusto o exigencias de tu
    propuesta):

    • Información para el público/participantes
    1. Modalidad
      1. Charla
      2. Taller
      3. Mesa redonda
      4. Póster
      5. Exposición
      6. Reunión coordinación
      7. Performance
      8. Otros
    2. Nombre del/a dinamizador/a, autor/a, coordinador/a
    3. Título(s)
    4. Resumen
    5. Palabras clave
    6. Conocimientos recomendados para los participantes
    7. Estructura/contenido
    8. Metodología: exposicion, discusión, cacharreo, etc.
    9. Duracion
    10. Lecturas recomendadas. Para la gente que quiera entrar en el tema antes de entrar en el nodo.
    11. Navega-acción copirata: cómo podría integrarse el nodo en la manifestación?
    • Información para coordinar:
    1. Material necesario (incluyendo tipo de espacio por si hace falta un espacio abierto sin sillas o lo que sea).
    2. Preferencias de horarios
    3. Seguridad de asistencia (del 1 al 10)
    4. Documentos o archivos del nodo (si la hay, para colgar en la web: transparencias, textos, programas, etc.)

    Otras formas de participación

    Otras formas de participación aparte de los nodos de
    actividades (como aportar material, participar en las
    asambleas, coordinar actividades, hacer streaming,
    traducciones, etc.) son bienvenidas y necesarias. Para
    más información y coordinación la asamblea del HM se reúne
    virtual y permanentemente en la lista de correo hackmeeting @ sindominio.net. Podéis suscribiros en: http://listas.sindominio.net/mailman/listinfo/hackmeeting

    Más información

    El primer hackmeeting se hizo en Florencia el 1998 y desde
    entonces se han ido repitiendo anualmente en Italia (la web
    http://hackmeeting.org recoge el último HM celebrado en
    Italia y enlaces a todos los anteriores). El 2000 se celebró
    el primer hackmeeting hispanoparlante en Barcelona y hemos ido repitiendo el encuentro todos los años.

    Para más información nos podeis escribir a la lista de correo
    hackmeeting @ sindominio.net o visitar directamente la página
    web del hackmeeting:

    http://sindominio.net/hackmeeting

  • Aventuras con DragonFlyBSD y GRUB2

    INTRODUCCIÓN

     

    DragonFlyBSD es el novedoso derivado de FreeBSD con el sistema de ficheros Hammer, el cual incluye como caracteristicas principales: recuperación de fallos, chequeo de la integridad de los datos, control del historial de los ficheros, así como la posibilidad de hacer un mirror hacia otros volúmenes.

    GRUB2, aunque aún en desarrollo, ya permite mucho más que su predecesor Grub 0.97.

    En nuestro caso, Grub2 nos permitió arrancar un sistema operativo, DragonFlyBSD, instalado en un disco no reconocido por la BIOS, y que por lo tanto, no podía ser arrancado con los gestores de arranque tradicionales.

     

    CONSIDERACIONES INICIALES

     

    El ordenador utilizado es un viejo ordenador sin controladora de discos SATA, y ninguna opción en la BIOS para reconocer esos discos duros. Recientemente se le añadido una controladora PCI para discos SATA, pero eso no cambia el hecho de que no es reconocida por la BIOS.

    Entonces tenemos:

    • 1 disco IDE con Debian GNU/Linux instalado.
    • 1 disco SATA no reconocido por la BIOS.

     

    INSTALACIÓN DE DragonFlyBSD

    Bajamos el LiveCD de DragonFly de http://www.dragonflybsd.org/download/ y lo grabamos en un CD.

    Arrancó el ordenador con el LiveCD, el cual al final del arranque, nos permite entrar como root para probar el sistema operativo, o como installer,  Al  entrar como installer se inicia el proceso de instalación, el cual SI reconoce el disco duro SATA, e instalo DragonFly en él, El proceso es muy sencillo y lineal. Elijo el sistema de ficheros Hammer, en lugar del tradicional UFS.

    Ya tenemos DragonFly instalado, pero aún no puedo arrancarlo, ya que la BIOS no lo reconoce…

    Así que antes de reiniciar entramos como root en el LiveCD y copiamos el kernel de DragonFly en la partición de Debian donde estará grub2.

    mkdir /tmp/ad0s1
    mount_ext2fs /dev/ad0s1 /tmp/ad0s1
    mkdir /tmp/ad0s1/boot/dragonfly
    cp /boot/kernel /tmp/ad0s1/boot/dragonfly/
    umount /tmp/ad0s1
    

    Cambiar ad0s1 por la particion de tu disco duro que contenga grub. Puedes ayudarte de dmesg, mount y fdisk para saber cual es.

    Es hora de reiniciar y arrancar Debian desde el primer disco IDE.

    INSTALACIÓN DE GRUB

     

    Desde Debian, instalamos grub2. Puedes usar tu gestor de paquetes favoritos (synaptic, aptitude, etc…) En mi caso.

    # apt-get install grub2 grub-common grub-pc grub-splashimages

    Estas son las versiones de los paquetes que se instalarón:

    ii  grub-common                               1.96+20090603-1
    GRand Unified Bootloader, version 2 (common files)
    ii  grub-pc                                   1.96+20090603-1
    GRand Unified Bootloader, version 2 (PC/BIOS version)
    ii  grub-splashimages                         1.2.3
    a collection of great GRUB splashimages
    ii  grub2                                     1.96+20090603-1
    GRand Unified Bootloader, version 2 (dummy package)

    En Debian, nos sale el siguiente mensaje:

     Los scripts de actualización han detectado en /boot/grub una configuración
    heredada de  una versión anterior de GRUB. 
    
     Para reemplazar la versión anterior de GRUB en su sistema, se recomienda
    que se ajuste  /boot/grub/menu.lst para que cargue en cadena a partir de su
    configuración  preexistente de GRUB. Este paso debería hacerse ahora de forma
    automática.   
    
     Antes de instalar GRUB 2 directamente en el MBR («Master Boot Record») se
    recomienda  que acepte cargarlo en cadena desde el menu.lst y que verifique que 
    puede utilizar la  nueva configuración de GRUB 2. 
    
     En cualquier caso, cuando quiera que GRUB 2 se inicie directamente desde
    el MBR, puede hacerlo usando (como root) la siguiente orden:
    upgrade-from-grub-legacy
    
     ¿Desea realizar la carga en cadena desde menu.lst? 
    

    Recomendamos aceptar la sugerencia de Debian, lo cual viene bien para probar hasta asegurarnos de que grub2 ha quedado perfectamente configurado, y que nos quiere decir es que grub2 se cargará encadenado desde grub-legacy.

    Si cometemos algun error en la configuración de grub2 siempre podremos seguir arrancando desde grub, y una vez que verifiquemos que grub2 está perfecto, podremos instalar grub2 en el MBR con el comando: upgrade-from-grub-legacy.

    De momento, continuemos.

    INSTALANDO GRUB2 CON EL MÓDULO ATA

     

    Puedes saltarte la parte de modificar grub-install si tu ordenador reconoce sin problemas a los discos duros SATA.

    GRUB2 tiene un diseño modular, y al instalarlo podemos elegir que modulos queremos que se instalen.

    Copiamos todos los módulos en /boot/grub

    cp /usr/lib/grub/i386-pc/*.mod /boot/grub
    

    Aplicamos este parche a /usr/sbin/grub-install.  Puedes usar la herramienta patch, o modificarlo manualmente.
    Elminando las lineas que comienzan por «-» y añadiendo las que comienzan por «+».

    Con este parche le indicamos a grub2 que use siempre el módulo ata para
    detectar todos los discos duros (SATA incluidos) saltandose lo que le
    haya indicado la BIOS.

    --- grub-install.old	2009-06-04 09:02:32.000000000 +0200
    +++ grub-install	2009-06-11 15:51:43.000000000 +0200
    @@ -254,7 +254,7 @@
     
     # The order in this list is critical.  Be careful when modifying it.
     if [ "${target_cpu}-${platform}" = "i386-pc" ] ; then
    -    modules="$modules biosdisk"
    +     modules="$modules ata"
     else
         modules="$modules ata"
     fi
    @@ -267,7 +267,7 @@
         else
           install_drive="`$grub_probe --target=drive --device ${install_device}`"
         fi
    -    grub_drive="`$grub_probe --target=drive --device ${grub_device}`"
    +    grub_drive="`$grub_probe --target=drive --device ${grub_device}|sed -e 's/h
    d/ata/'`"
     
         # Strip partition number
         install_drive="`echo ${install_drive} | sed -e s/,[0-9]*[a-z]*//g`"
    @@ -291,7 +291,9 @@
             modules="$modules fs_uuid"
         fi
     else
    -    prefix_drive=`$grub_probe --target=drive --device ${grub_device}`
    +     uuid="`$grub_probe --target=fs_uuid --device ${grub_device}`"
    +     prefix_drive="(UUID=${uuid})"
    +     modules="$modules fs_uuid"
     fi
     
     relative_grubdir=`make_system_path_relative_to_its_root ${grubdir}` || exit 1
    
    

    En futuras versiones de Grub2 se incluirá el parámetro «–disk-module», con lo que se evitará tener que parchear grub-install.

    Modificamos  /etc/grub.d/40_custom y añadimos la entrada para poder arrancar DragonFlyBSD.

    menuentry "DragonFlyBSD" {
        set root=(ata3)
        # chainloader +1 #No se usa. No hacemos chainload porque la BIOS no reconoce ese disco
        freebsd (ata0,1)/boot/dragonfly/kernel
        set FreeBSD.vfs.root.mountfrom=hammer:ad6s1a
    }
    

     

    Notas:

    (ata0,1)

    hace referencia a la primera partición del primer disco duro. Donde esta instalado grub2, y donde anteriormente copiamos el kernel de DragonFly.

    (Este valor lo obtuvimos porque en nuestros experimentos durante arranques anteriores vimos que grub2 permite hacer «ls» en su prompt para listar los discos duros, o incluso el contenido de los discos duros. Una maravilla.

    ataX,X es la nomenclatura de los discos cuando se usa el modulo ata de grub2

    )

     

    hammer:ad6s1a

    hace referencia a montar el disco ad6s1a (según la nomenclatura de DragonFlyBSD) con el sistema de ficheros hammer.

    (Este valor lo obtuvimos tras instalar DragonFlyBSD con el LiveCD, desde el LiveCD supimos como reconoce DragonFlyBSD al segundo disco SATA)

    Es hora de instalar GRUB2, en la primera partición del disco duro IDE, con los módulos que a nosotros nos dieron resultado. Lo instalamos en la primera partición del disco duro IDE (Debian)  /dev/hda1 en lugar del MBR, ya que como hemos dicho conservaremos grub-legacy hasta confirmar que grub2 puede arrancar todos los sistemas operativos.

    Esto debe ejecutarse en una sola línea.

    grub-install --modules="date pc ata boot ls gpt raid ext2 ufs fat echo cpio gzio 
    gfxterm video aout pcpart extcmd help reboot blocklist fs_uuid sh parttool linux 
    fshelp dm_nv datehook jpeg test bsd cmp memdisk acpi elf affs xfs cpuid crc play 
    mdraid sleep search chain lua memrw ata_pthru configfile linux16 raid5rec hello 
    vga_text vbeinfo gptsync bufio hdparm bitmap terminfo hfs lsmmap png tar lspci 
    tga scsi lvm raid iso9660 raid6rec udf vbe handler raid6rec halt read multiboot 
    xnu normal loopback sfs jfs vbetest cat afs hexdump loadenv minicmd drivemap 
    font vga" /dev/hda1

     

    Esto generará el archivo /boot/grub/grub.cfg con todas las líneas que permiten arrancar nuestros sistemas operativos. Vemos que aparece tambien la línea para arrancar DragonFlyBSD, ya que grub-install se encargá de añadir

    /etc/grub.d/40_custom a grub.cfg.

    Ya podemos reiniciar el ordenador. Nos saldrá la ventana tipica de Grub-Legacy, con una opción de hacer Chainload hacia Grub2, junto con las demás lineas para arrancar nuestros sistemas operativos.

    Si elegimos arrancar Grub2, veremos las opciones de Grub2.cfg y podremos arrancar DragonFlyBSD.

    A disfrutar.

  • Instalar programas de plan9 en linux

    Plan9 From User Space fue desarrollado por Russ Cox y podemos descargarnos el ultimo snapshot de plan9port

    o bajarnos las fuentes con el sistema de control de versiones «mercurial» (recomendado)

    Instalamos los paquetes de debian necesarios.

    # echo Instalamos las librerias necesarias en Debian
    # apt-get install mercurial libxt-dev libx11-dev x11proto-xext-dev libxext-dev
    # cd /usr/local
    # hg clone http://code.swtch.com/plan9port plan9
    # cd plan9
    # ./INSTALL

     

    Añadir las siguientes variables de entorno a vuestro profile.

        PLAN9=/usr/local/plan9 
        export PLAN9
        PATH=$PATH:$PLAN9/bin
       export PATH

     

    Para ejecutar los comandos de plan9, podemos invocarlos de la manera habitual bajo la línea de comandos.

    En el caso de que haya programas de plan9 que tengan el mismo nombre que su equivalente en GNU/linux, hay una manera de diferenciarlos, y es ejecutandolos añadiendo «9» antes ejecutarlos.

    Ejemplo.

    9 ls #Ejecutaría la versión de ls de plan9

    9 acme #Ejecutaría uno de los editores de plan9

    9 sam #Otro editor de plan9

    9term #Como no existe alternativa en GNU/linux, podemos ejecutar indistantemente «9term» o «9 9term»

    9 man 1 intro # Ver la pagina de manual intro de la sección 1 de las paginas de manual de plan9

    Tambien podriamos poner «rio» como nuestro window manager por defecto.

     

     

     

     

     

     

    Para cualquier duda podeis consultar http://swtch.com/plan9port/man/man1/install.html

    Tambien podeis preguntar en la lista de correo 9fans o en el canal #plan9 del servidor de irc: irc.freenode.net

     

  • Victoria parcial en el parlamente europeo: la lucha sigue

    Más información:

    ¿Que significa esto?

    Significa un NO rotundo del Parlamento Europeo a cualquier
    posibilildad de corte de servicio sin que lo decida un juez. Con eso se
    acaban las pretensiones de crear una entidad por parte de las gestoras
    de derechos de autor con la que cortar el acceso a los internautas.
    Significa que los ciudadanos han hecho prevalecer sus derechos por
    encima de las presiones de los lobbies gracias a la campaña realizada
    por Blackouteurope y Hacktivistas.net

    Sin embargo, se abre la veda para que los operadores quieran acabar
    con la neutralidad de la red para favorecer sus propios productos.
    Aprobar esta directiva tendrá consecuencias incalculables en cuanto a
    retrocesos de libertad y libre acceso a la cultura para la ciudadanía
    europea. Será un retroceso a la innovación, ya que los productos y
    contenidos pertenecientes al operador tendrán prioridad sobre los de la
    competencia, aunque estos sean técnicamente superiores. La red ya no
    será de los internautas sino exclusivamente de ellos. A partir de
    ahora, y más cuando se intenten desarrollar leyes que lo amparen,
    tendremos que hacer una fuerte presión social para evitar que las
    presiones de los lobbies se impongan sobre nuestros derechos. En
    definitiva, el resultado de la votación del parlamento significa que
    tenemos que seguir luchando por nuestros derechos y que queda un largo
    camino que recorrer.

    ¿Que haremos ahora?

    El siguiente paso es exigir a los candidatos a europarlamentarios
    españoles y Europeos que nos demuestren que política van a seguir
    respecto a la neutralidad en la red y la libre distribución de cultura
    en caso de ser elegidos por nuestros votos.

    Tendremos también que avisar a los operadores, de que cualquier
    cambio en su servicio que rompa con la neutralidad de la red,
    significará nuestra baja automática de su servicio (estamos trabajando
    en una herramienta para darse de baja automáticamente), así como en
    caso de que se produzca cualquier pacto con las entidades de gestión de
    derechos de autor que suponga una amenaza a nuestra privacidad.

    Por todo esto os animamos a participar en la manifestación que tendrá lugar el día 24 de Mayo frente al Ministerio de Cultura, para defender la neutralidad y universalidad de la red, así como los derechos civiles en la red.

  • INTERNET NO SE TOCA, LOS CIUDADANOS EN PIE DE GUERRA A LO LARGO Y ANCHO DE LA COMUNIDAD EUROPEA

    Nos hacemos eco de la campaña de hacktivistas.net

    Para enviar un correo a todos los parlamentarios ve directamente aquí

    http://xmailer.hacktivistas.net/es/message


    Para más información, sigue leyendo:

    *Esta campaña incluye:*

    1 – Web informativa donde se explica en que consiste el así llamado
    «Paquete de telecomunicaciones» que está a punto de ser votado, porqué
    es tan peligroso para el futuro de los ciudadanos y de su economía
    diaria y todas las iniciativas que está tomando la sociedad civil
    europea al respecto:
    http://blackouteusp.wordpress.com/
    http://www.blackouteurope.eu/

    2 – Una carta a los europarlamentarios que está siendo enviada por
    cientos de organizaciones y ciudadanos (uno de los europarlamentario
    habla de la recepción de unas 200 al día):
    http://blackouteusp.wordpress.com/carta-a-parlamentarios/

    3 – Un sistema automático para que cualquier ciudadano pueda enviar la
    carta directamente a todos los europarlamentarios:
    http://blackouteusp.wordpress.com/envio-directo-a-parlamentarios/

    4 – Un sistema para vigilar su voto al respecto:
    http://blackouteusp.wordpress.com/controla-su-voto/

    y

    5 – Un Casting Europeo de Abuelas para la creación de un video viral
    intereuropeo:
    fortheinternet.wordpress.com/about/

    PARTICIPA 🙂

    /»Abuela, ayúdales que no saben lo que están haciendo.» Con motivo de la
    próxima votación en el parlamento europeo del paquete Telecom el día 5
    de Mayo, se ha convocado un video-concurso a través de youtube para
    explicarle a nuestros parlamentarios que necesitan nuestro voto en junio
    y que Internet todavía nos proporciona las herramientas para ver y
    juzgar lo que hacen. Y así tiene que seguir siendo./

    Infórmate:
    ¡No dejes que el Parlamento de la U.E. privatice Internet! No habrá
    vuelta atrás! ¡Actúa ahora! Mañana será tarde!
    PODEMOS HACER PRESIÓN.- LE HEMOS DADO NUESTRO VOTO – volvemos a
    reelegirlos en junio. DILES A LOS PARLAMENTARIOS QUE VOTEN NO!»

    *PÁSALO*

    Y aquí algo más sobre la respuesta ciudadana a los lobbies en España:
    http://la-ex.net/que-es/la-avaricia/carta-a-sinde
    http://www.facebook.com/group.php?gid=76826011168
    http://sindemocracia.net/
    http://www.internautas.org/html/5512.html

  • Creación de un servidor HTTP «personal» en Parrot

    Bueno, como en el anterior artículo sobre Parrot nos centramos en Perl6 y hay quien ha comentado si solo sirve para ello, vamos a ver otro ejemplo de lo que se puede hacer : un servidor http personal.

    Antes de nada, si estamos en Debian, instalamos PerlDoc:

    apt-get install perl-doc
    

    Como estamos de pruebas, pues nos vamos a ir al directorio /tmp para no tenernos que preocupar del espacio de disco (/tmp sólo se borra en los reinicios) y allí descargaremos parrot desde el svn de Parrot.

    cd /tmp
    svn co https://svn.parrot.org/parrot/trunk parrot
    

    Una vez hemos descargado el fuente directamente nos vamos a configurar y compilar Parrot. En esta ocasión no nos descargamos ningún lenguaje ya que el ejemplo que vamos a probar está en Pir (Parrot Intermediate Representation) una especie de ensamblador de alto nivel.

    cd parrot
    perl Configure.pl && make
    

    Una vez que tenemos compilado Parrot, vamos a generar la documentación en HTML, algo tenemos que servir en nuestro servidor y la documentación de Parrot es lo ideal 🙂 Para ello simplemente haremos un make html, que se encargara de ir por todos los fuentes que tengan información en formato pod (Plain Old Documentation) y la pasará a HTML.

    make html
    

    Pues ya casi acabamos. Sin salirnos del directorio ejecutamos Parrot con el código que le permite comportarse como un servidor http.

    ./parrot examples/io/httpd.pir &
    

    Y ya estamos, lanzamos nuestro navegador favorito contra nuestra IP local por el puerto 1234.

    mozilla 127.0.0.1:1234
    

    Simple, no ? Bueno, pues ya tenemos acceso a un montón de información que podemos leer cómodamente. El servidor http es sólo un ejemplo que viene con Parrot y que tiene algunas opciones de configuración, recomiendo leer el código ya que es bastante sencillo y esta muy claramente implementado.

  • Creación de un ejecutable Perl6 con Rakudo (perl6 en Parrot)

    Rakudo – Perl6 en Parrot

    Creación de un ejecutable Perl6 con Rakudo (perl6 en Parrot)

    Bueno, como ayer se anuncio Parrot 1.0, es posible que ya haya gente que este interesada en probarlo, pero quizás no sepa muy bien como hacerlo. Voy a describir como crear un ejecutable a partir de un pequeño ejemplo hecho por Patrick Michaud en Rakudo. Para ello vamos a instalar de forma local tanto Parrot como Rakudo, ya que la instalación de forma permanente todavía no la veo muy ‘fina’.

    El ejemplo que vamos a usar es una calculadora RPN (Reverse Polish Notation) hecha en Perl6, que viene de una implementación anteriormente hecha en Perl5, el articulo lo podéis ver aquí, vale la pena leerlo para darse cuenta como esta evolucionando Perl6 (a pmichaud le faltaba un metaoperador, asi que no se corta, y va y lo implementa 🙂 )

    Bueno, comenzamos descargando y compilando Rakudo/Parrot, para ello hacemos lo que nos indica en su repositorio git.

    En Debian necesitariamos los paquetes: git-core, perl, make, gcc y subversion.

    cd /tmp
    git clone git://github.com/rakudo/rakudo.git
    cd rakudo
    perl Configure.pl --gen-parrot &&make
    

    Siguiendo este procedimiento, siempre tendremos un compilador de Perl6 con una maquina virtual Parrot que se supone que funciona. También tened en cuanta que lo he puesto en el directorio /tmp, con lo cual en un reinicio de la maquina se perdería, si queréis tenerlo permanentemente, hay que ponerlo en cualquier otro directorio.

    Bueno, cogemos el código ejemplo de la web anteriormente indicada y la volcamos a un fichero de texto llamado: «calc.p6»

    my %op_dispatch_table = {
            '+'    => { .push(.pop + .pop)  },
            '-'    => { .push(.pop R- .pop) },
            '*'    => { .push(.pop * .pop)  },
            '/'    => { .push(.pop R/ .pop) },
            'sqrt' => { .push(.pop.sqrt)    },
        };
    sub evaluate (%odt, $expr) {
            my @stack;
            my @tokens = $expr.split(/\s+/);
            for @tokens {
                    when /\d+/     { @stack.push($_); }
                    when ?%odt{$_} { %odt{$_}(@stack); }
                default        { die "Unrecognized token '$_'; aborting"; }
            }
            @stack.pop;
        }
    
        say "Result: { evaluate(%op_dispatch_table, @*ARGS[0]) }";
    
    

    Una vez tenemos nuestro ejemplo en el fichero, sólo lo tenemos que ejecutar y listo, nuestro primer programa en Perl6, y no es un simple ‘hello world’.

    ./perl6 calc.p6 '5 6 +'
    

    Pero ahora queremos hacer algo más interesante: crear un ejecutable de ese código Perl6. No hay problema, tenemos las herramientas adecuadas. Primero le vamos a decir a Rakudo que el código que genere sea pir, que es el ensamblador que entiende la máquina virtual Parrot, y luego mediante Parrot, lo compilamos a bytecode, y a partir de ahí creamos un ejecutable de la siguiente forma:

    ./perl6 --target=pir calc.p6 > calc.pir
    ./parrot/parrot -o  calc.pbc calc.pir
    ./parrot/pbc_to_exe calc.pbc
    

    Y ya lo tenemos. Este proceso se automatizará mas adelante, posiblemente se le ponga un switch a la linea de comandos de Rakudo para que genere el ejecutable sin que tengamos que hacer todos eso. Bueno, ya solo nos queda confirmar que tenemos un ejecutable, y probarlo.

    file calc
    ./calc '5 6 +'
    

    Hay que tener en cuenta que Parrot 1.0 supone la salida de Parrot con un API estable para usuarios (usuario es el desarrollador de lenguajes, no el que usa un lenguaje). Por lo tanto queda todavía bastante camino por delante. Aun así, con el anterior ejemplo se puede ver que algo como Perl6 sobre Parrot es los suficientemente funcional como para ya realizar aplicaciones, y ya hay gente creando aplicaciones de cierta envergadura. Espero que os haya gustado y alguno más se anime con Parrot, Rakudo, o cualquier otro lenguaje, cooperar es tan simple como descargarserlo periódicamente, probarlo, y si se ve algún fallo, reportarlo.

     

Creative Commons License
Except where otherwise noted, the content on this site is licensed under a Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License.