¿Es la programación un arte?

— [ edit | raw ] migrated from node/115
Ciao a tutti!

Crear .deb a partir de tar.gz

— [ edit | raw ] migrated from node/113
Hola, quería saber como generar paquetes debian a partir de tar.gz. En la Espiral hay una receta pero no encuentro el paquete debuild que indica al principio. He encontrado en su lugar el paquete pbuilder pero no se usarlo :( En la espiral pone que hace falta el paquete "debuild" y es el "dh_make". El resto del proceso es como indica en la receta

Consulta sobre distro

— [ edit | raw ]
migrated from node/111
Hola a todos.

Dashboard Process: ayuda para PSP

— [ edit | raw ] migrated from node/106
Uso de Dashboard Process como ayuda para seguir PSP (Personal Software Proccess)

"BookCrossing" ¿también en Ciudad Real?

— [ edit | raw ] migrated from node/108

Acabo de ver esta noticia en barrapunto de nuestros colegas de Albacete sobre el fenómeno BookCrossing y era algo a lo que hace tiempo que llevaba dándole vueltas. Creo que es un mecanismo sencillo y barato para difusión de cultura libre. ¿Qué te parece? ¿Crees que podría funcionar aquí? ¿Estarías dispuesto a ayudar a poner el tema en marcha?

Configurar Eclipse

— [ edit | raw ] migrated from node/103
El documento pretende ser un manual "paso a paso" que permita configurar un proyecto Java con Eclipse. Se utilizará Eclipse 3.1 y el proyecto creado será un "tomcat project".

Redes inalámbricas multisalto en GNU/Linux

— [ edit | raw ] migrated from node/102
Esta receta describe cómo configurar una red inalámbrica multisalto (MANET) bajo GNU Linux totalmente funcional.

Introducción

Las redes inalámbricas multisalto no necesitan de infraestructura fija para compartir datos entre distintos PC's, cada uno de los nodos que forman la red hacen las labores de un router de forma que se enrutan datos de unos a otros para formar una infraestructura de red dinámica. Si uno de los nodos tiene una conexión a Internet, los demas nodos pueden utilizar a éste como pasarela.

Requisitos previos

Como paso previo hay que hacer lo siguiente (a modo de precondiciones):
  • En el kernel tienes que tener compilado el "Netfilters"
  • Habilitar el Packet Forwarding. En /etc/sysconfig/network añadir una línea:
    FORWARD_IPV4=yes
  • Tener configuradas las tarjetas wireless.

Montar la red ad-hoc

En lo relativo a la configuración de las tarjetas, es muy útil el comando iwconfig que permite la configuración de las tarjetas de forma similar al clásico ifconfig. En Debian, ese comando está en el paquete wireless-tools. Bien, tenemos una tarjeta Wireless (en mi caso PC Card WL100) configurada en un portátil con Debian. El iwconfig nos dice que tenemos:
eth1      IEEE 802.11-DS  ESSID:"COMPAQ"  Nickname:"Prism  I"
          Mode:Managed  Frequency:2.457GHz  Access Point: 00:02:A5:2D:06:35
          Bit Rate:11Mb/s   Tx-Power=15 dBm   Sensitivity:1/242700000
          Retry min limit:8   RTS thr:off   Fragment thr:off
          Encryption key:off
          Power Management:off
          Link Quality:49/1  Signal level:-53 dBm  Noise level:-144 dBm
          Rx invalid nwid:0  Rx invalid crypt:0  Rx invalid frag:0
          Tx excessive retries:0  Invalid misc:0   Missed beacon:0
Es el momento de observar dos cuestiones importantes, la primero de ellas es el Mode que está en "Managed" (utilizado para asociarse a puntos de acceso) y el segundo es el ESSID. Hay que señalar que para que esta tarjeta pueda formar parte de una red ad-hoc todas las tarjetas tienen que tener el mismo ESSID y estar puestas en modo ad-hoc. Para ello, y utilizando el iwconfig ejecutamos:
homer:~# iwconfig eth1 mode ad-hoc
homer:~# iwconfig eth1 essid ARCO
homer:~# iwconfig
eth1      IEEE 802.11-DS  ESSID:"ARCO"  Nickname:"Prism  I"
          Mode:Ad-Hoc  Frequency:2.457GHz  Cell: 02:23:7A:CF:F1:E5
          Bit Rate:5.5Mb/s   Tx-Power=15 dBm   Sensitivity:1/242700000
          Retry min limit:8   RTS thr:off   Fragment thr:off
          Encryption key:off
          Power Management:off
          Link Quality:0  Signal level:0  Noise level:0
          Rx invalid nwid:0  Rx invalid crypt:0  Rx invalid frag:0
          Tx excessive retries:0  Invalid misc:0   Missed beacon:0
El segundo ordenador a utilizar en nuestra red es un ordenador de sobremesa con una tarjeta PCI-PCMCIA y con una tarjeta Wireless PC Card WL110. La salida del iwconfig es similar a la anterior, mientras que la salida del lsmod nos muestra el módulo orinoco_plx que es el driver que se ha usado. Ahora es el momento de configurar las direcciones IP que van a formar parte de nuestra red ad-hoc. Idealmente, un nodo ad-hoc debería ser capaz de autoconfigurarse para formar parte de la red. En principio nosotros vamos a asignar estas direcciones de forma estática. Edita el archivo /etc/networks/interfaces y añade la configuración de la interfaz eth1, por ejemplo:
auto eth1
iface eth1 inet static
      address 10.10.0.4
      netmask 255.255.255.0
      gateway 10.10.0.1
De forma que si ejecutamos:
radia:~# ifdown eth1
radia:~# ifup eth1
radia:~# ifconfig
eth1      Link encap:Ethernet  HWaddr 00:02:A5:6F:28:FC
          inet addr:10.10.0.4  Bcast:10.255.255.255  Mask:255.255.255.0
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:1091 errors:0 dropped:0 overruns:0 frame:0
          TX packets:89 errors:20 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:100
          RX bytes:81419 (79.5 KiB)  TX bytes:20266 (19.7 KiB)
          Interrupt:11 Base address:0xd800
Vemos la interfaz configurada con la dirección IP asociada. Debemos hacer lo mismo tanto en el portátil como el otro PC.(obviamente con direcciones IP distintas). Bien, en este momento deberíamos poder realizar un simple ping de un ordenador a otro a las direcciones que hayamos puesto, siempre y cuando estemos en el ámbito de cobertura.

Enrutando paquetes

Para tener una verdadera red inalámbrica multisalto debemos hacer que cada nodo enrute paquetes, para ello debemos instalar un algoritmo de enrutado, en nuestro caso vamos a usar el algoritmo AODV cuya implementación (una de ellas) podeis bajar de aodv_kernel Siguiendo los pasos del archivo README no debe haber ningún problema. Básicamente:
  • Te bajas el archivo y lo descomprimes.
    homer:~# tar xvzf kernel-aodv_v2.2.2.tgz
  • Ejecutas
    homer:~# make
  • Cambias los ficheros start.sh y start_gateway.sh según los parámetros de la subred
  • ejecutas start.sh si eres cliente sin acceso a internet
  • ejecutas start_gateway.sh si vas a funcionar como gateway dentro de la red ad-hoc
En este momento detectará todos los nodos dentro de su alcance y los añadirá a la tabla de enrutado. Para ver la tabla de enrutado:
homer:~# less /proc/aodv/route_table

Recetas relacionadas

Estas recetas pueden ser útiles:

Compartir ficheros con SHFS

— [ edit | raw ] migrated from node/100

Esta receta es muy similar a esta otra de SSHfs + FUSE. La diferencia es que aquí se usa un driver específico llamado SHFS. Igualmente se trata de acceder a ficheros de una máquina remota a través de SSH.

Manipulación de ficheros PDF

— [ edit | raw ] migrated from node/98

Esta receta es un compendio de pequeños trucos y utilidades para manipular ficheros PDF con los programas libres habituales en un sistema GNU

En realidad pienso ir apuntando aquí las soluciones que voy encontrando a problemas que me surgen cuando tengo que hacer ciertas «operaciones imprevistas» con ficheros PDF. Se admiten sugerencias para ir incorporando a la receta.

Unir varios documentos

Con pdfjoin del paquete pdfjam (visto en Linuca).

$ pdfjoin --fitpaper true fichero1.pdf fichero2.pdf fichero3.pdf --outfile final.pdf

Con GNU/GhostScript (por Gufete):

 $ gs -dColorImageFilter=/LZWEncode -dAutoFilterColorImages=false -dBATCH -dNOPAUSE -q -sDEVICE=pdfwrite -sOutputFile=pre_final.pdf fichero1.pdf fichero2.pdf fichero3.pdf
$ pdfopt pre_final.pdf final.pdf

Seleccionar algunas páginas

Con pdfjam

 $ pdfjam --no-landscape original.pdf  3,7,12-23,34 --outfile resultado.pdf

Con pdftk

 $ pdftk original.pdf cat 1-8 output resultado.pdf

Rotar páginas

Con pdfjam

 $ pdf90 original.pdf

También hay comandos pdf180 y pdf270.

Con pdftk:

 $ pdftk original.pdf cat 1-end<b>X</b> output resultado.pdf

Donde ‘X’ puede ser:

  • N: 0
  • E: 90
  • S: 180
  • W: 270
  • L: -90
  • R: +90
  • D: +180

Convertir un documento a formato de varias páginas por hoja

Utilizando el programa pdfnup del paquete pdfjam:

$ pdfnup --nup 2x1 --outfile salida.pdf original.pdf

Por ejemplo, para pasar transparencias apaisadas a página completa a formato de 3 páginas por hoja alineadas a la izquierda y con márgenes usa:

$ pdfnup --nup 1x3 --offset "-3cm 0" --trim "-2cm -2cm -2cm -2cm" original.pdf

«Escalar» el tamaño de la página

En realidad se trata de aumentar los márgenes reduciendo el tamaño del área impresa. También con pdfnup:

 $ pdfnup --nup 1x1 --scale 0.9 original.pdf

Cambiar el formato de página

Si tienes que imprimir un .pdf cuyo formato de página no es A4 probablemente acabarás desperdiciando gran parte de la hoja porque por aquí todas las impresoras domesticas son A4. Con los siguientes comandos puedes convertir el formato de página:

$  pdftk original.pdf cat output sin_xrefs.pdf
$ gs -r600 -dDITHERPPI=120 -dNOCIE -dFIXEDMEDIA -sPAPERSIZE=a4 -sDEVICE=pdfwrite -q -dNOPAUSE -dSAFER -dBATCH -dPDFFitPage -sOutputFile=resultado.pdf pdfopt.ps sin_xrefs.pdf

Manipulación de metadatos

Con pdftk

Para leer los metadatos de un PDF:

$ pdftk original.pdf dump_data output data.txt
$ cat data.txt
InfoKey: Creator
InfoValue: Writer&#0;
InfoKey: Producer
InfoValue: OpenOffice.org 3.1&#0;
InfoKey: CreationDate
InfoValue: D:20090923135542+02'00'
PdfID0: e5d831c33f77ac694b32456732f2c86
PdfID1: e5d831c33f77ac694b32456732f2c86
NumberOfPages: 1

Si se omite el output data.txt, imprime los datos a la salida estándar (la consola) en lugar de en el fichero.

Para modificar los metadatos se debe escribir un fichero con el mismo formato que el data.txt anterior (o modificar uno generado así) y ejecutar:

$ pdftk original.pdf update_info data.txt output resultado.pdf

Con exiftool

Para mostrar los metadatos escribe una cadena con variables tipo-shell (atento a las comillas simples):

$  exiftool fichero.pdf -p '$Title $Author'

Para modificarlos utiliza esos mismas claves como opciones:

$ exiftool fichero.pdf -Title="Algún cuento chino"

Convertir a escala de grises

[visto en http://handyfloss.net/2008.09/making-a-pdf-grayscale-with-ghostscript/]

$ gs -sOutputFile=grayscale.pdf -sDEVICE=pdfwrite \
-sColorConversionStrategy=Gray -dProcessColorModel=/DeviceGray \
-dCompatibilityLevel=1.4 -dNOPAUSE -dBATCH color.pdf < /dev/null

Convertir a «raster»

Con Ghostscript

[visto en commandlinefu.com]

$ gs -dNOPAUSE -sDEVICE=jpeg -r144 -sOutputFile=p%03d.jpg file.pdf

Con convert

[visto en linuxquestions]

$ convert -density 300x300 file.pdf salida.png

Crear un PDF con fuentes empotradas

Si has hecho un .pdf con pdflatex lo más probable es que no incluya las fuentes, de modo que el programa pueda renderizar el documento con las fuentes del sistema. Sin embargo, a veces se requiere disponer de un .pdf auto-contenido para garantizar que se verá del mismo modo en cualquier parte. Para lograrlo ejecuta lo sisguiente:

$ pdf2ps original.pdf
$ ps2pdf14 -dPDFSETTINGS=/prepress -dEmbedAllFonts=true original.ps resultado.pdf

Como es lógico, el fichero resultante ocupará mucho más que el original (de 5 a 10 veces).