Impresión desde aplicaciones Java con CUPS
Publicado por blaxter - 09 May 2007 a las 23:15Las JVM tienen un bug reportado y solucionado hace poco que afectan a las versiones tanto de java 5 (fixeado en update 12), como java 6 (hasta el update 1). Curiosamente en los repositorios de ubuntu tenemos las versiones justo anteriores a éstas, por lo tanto existe el bug. Este bug consiste en que es imposible imprimir desde aplicaciones Java a impresoras que usen CUPS. Todas tus impresoras te saldrán como "Not accepting jobs" (No se aceptan trabajos). Vaya putada, ¿no?.
¿La solución? Muy simple, puedes optar por descargar la última versión de Java de la web de Sun, o usar esta simple solución:
- Crear enlace simbólico, en ubuntu no existe, en otras distros puede que tampoco
$ sudo ln -s /usr/lib/libcups.so.2 /usr/lib/libcups.so
- declarar CUPS_SERVER como localhost
Es decir, si queremos ejecutar una supuesta aplicación Java llamada, por ejemplo, AlAtunTunTun, desde la cual queremos imprimirnos El Quijote, hacemos algo tal que así para iniciarla:
$ export CUPS_SERVER=localhost
$ /ruta/alProgramita/AlAtunTunTun
Y problema resuelto :).
Java, ese “maravilloso” mundo
Publicado por blaxter - 17 Abr 2007 a las 00:15
Una cosa es conocer java, el lenguaje de programación que más se usa a nivel empresarial. Pero mucha gente dice, incluso, saber programar en Java. Cuando en verdad lo que hacen es copypastear código buscado en google o similares, ejecutar las cosas mil veces hasta que funciona, tener mil plugins de eclipse para hacer tareas que ni llegan a entender o comprender qué hacen realmente (y desde luego que si les quitas el IDE, ni sabrían seguir trabajando).
Cuando alguien me pregunta si sé Java, la verdad que siempre dudo en qué contestar, puesto que aún no he llegado a conocer en profundidad y/o usar todas las tecnologías. Podríamos citar: Applets, swing, SWT, AWT, Java 2D, Java 3D, servlets, JSP, CORBA, JB, EJB, JCA, JMS, JDO, EIS, RMI, JCA, JCE, JDBC, JNDI, JAAS, JRMP, JNI, JNLP, JTA, portlets, JAXP, JAXB, JAX-WS, JMX, JMI, JSF, GWT, Struts, Jetty, Ant, Maven, JUnit, Tomcat, JBoss, JOnAS, WebSphere y por supuesto XML (del cual se podría hacer un post similar a este...) y Web Services (aunque el modelo REST es mil veces mejor).
Además, seguro que habrá otras tantas tecnologías que no las conoceré. Todas las mencionadas las conozco, pero no puedo decir que sé manejar todas ellas (a decir verdad, de unas cuantas solo he leído cuatro historias para saber qué cojones es, y para de contar). Por lo tanto, cuando alguien me pregunta si sé Java, suelo contestar que intento defenderme, si quiero respuesta rápida, o, respondo con una contra pregunta para que especifique más, si quiero alargar el tema.
Por supuesto, para aprender éstas y otras muchas tecnologías que me habré olvidado, la mejor web del mundo mundial es JCP.
Eclipse bajo demanda
Publicado por blaxter - 17 Dic 2006 a las 21:48Yoxos consiste en una aplicación web con la cual puedes crearte (seleccionando y añadiendo diferentes plugins) tu propio eclipse. Una vez elegido como quieres que sea, puedes descargarlo y ya estará listo para funcionar. Además también te instala un plugin (yoxos update) para posteriormente ir actualizando todos los plugins que has seleccionado y/o instalar más. Todos aquellos que se han pasado semanas buscando y configurando su eclipse para que quede a su gusto (entre los que me incluyo) esta página se convierte en algo imprescindible.

Yoxos on demand
Vía markdbd.
Programación con JAVA en Linux
Publicado por blaxter - 24 Oct 2006 a las 22:15
En el "curro" (estoy como becario en un departamento) todos los equipos están con alegres y risueños Windowses 2000, cosas del destino hicieron que hace pocos días mi querido Windows 2k del trabajo me mostrase angelicales pantallazos azules constantes al intentar iniciarse :), muy majo todo él. Probé reiteradamente las diferentes opciones de restauración, pero no surgieron efecto en evitar que el amable SO dejase de mostrar la colorida pantalla. Solo había una opción, reinstalar :O.
Emoción, intriga, misterio... había que reinstalar un SO!, en esa definición, no entra un Windows ni de cajón (y mucho menos un MacOSX aunque se pudiera xD), así que ya que estamos y como el destino ha querido que así fuera, instalemos un amigable y agradecido Ubuntu :).
Ok, ya tenemos nuestro Ubuntu instalado, y resulta que programaremos con tecnología JAVA, así que instalemos eclipse, no?. Hacemos un sudo aptitude install eclipse? NO. Primero de todo mandamos a la puta mierda el GNU Compile for java (gcj)!
sudo aptitude purge gcj-4.1-base
Ok, nuestra vida ya es más facil y placentera. Ahora solo queda instalar el JDK, sudo aptitude install sun-java5-jdk; y eclipse descargarlo de su web, pues solo hay que descomprimir sin más.
Que, por qué estoy siendo tan cruel con gcj? Pues instalando eclipse de los repositorios se instala para ser usado con gcj (en verdad se podría cambiar editando el fichero /etc/eclipse/java_home, pero prefiero descargar la última versión de la web) y siendo que eclipse es todo un señor programa (que chupa más que las putas vamos), ejecutandose bajo gcj es increiblemente más lento (si a esto le sumamos el estar usando un ordenador que no entraría en el top500.org, es para tirarse de los pelos). Al cabo de 20 minutos estaba ya preocupandome (e inquitandome) y empecé a programar sin IDE, solo con vim, como los machos ibericos. Luego por casualidad ejecutando ps's y top's veo que eclipse estaba con gcj y fue cuando realicé todo lo anterior; ya iba todo perfecto y dejé de ser un macho iberico para convertirme en una nena del eclipse :(, fue bonito mientras duro...
Nota para el que no se haya enterado de nada: GCJ es un "programa" que hace lo mismo que el JAVA pero open source, y como sorpresa va, así a ojo, una 10 veces más lento.
Peticiones HTTP con python
Publicado por blaxter - 18 Oct 2006 a las 22:43
Aunque mis primeras impresiones con python no han sido muy placenteras, he de reconocer que es un lenguaje que tiene algo especial. Una mezcla entre la "libertad" de C o perl y la "seriedad" de Java o Ada (por decir algo xD). Creo que voy a usarlo más a menudo pues me está gustando cada vez más.
Bueno a lo que vamos, como mandar una petición POST (o GET) HTTP con python. Como comenté hace un tiempo como hacer esto con perl (aunque usé sockets en vez de un modulo), y ya lo tengo hecho en un script, me ha parecido bien poner el ejemplo:
# paquetes necesarios
import httplib, urllib
# Host y archivo
host = "www.UNApagina.com"
target = "/un/arhicvo/index.php"
# cabeceras HTTP usando sintaxis NOMBRE:VALOR
# si haces un GET, deberías modificar o eliminar la primera cabecera
headers = {
"Content-type": "application/x-www-form-urlencoded",
"Accept": "application/xhtml+xml,text/html;q=0.9,text/plain;",
"Referer": "http://www.UnApagina.com/login/ok.php"
}
# parametros POST, si solo quieres una peticion get no hacen falta
params = urllib.urlencode({
'user': 'paco',
'accion': 'gobernarelmundo'
})
# conectamos con el host remoto
conn = httplib.HTTPConnection(host)
# mandamos la peticion POST con los parametros y las cabeceras anteriores
# para un get sería lo mismo pero poniendo get y sin parametros
conn.request("POST", target, params, headers)
# vemos que narices ha pasado en la petición
response = conn.getresponse()
print response.status, response.reason
# y si todo ha ido bien ahora imprimiremos los resultados
data = response.read()
print data
conn.close()
Según lo que deseemos hacer, casi seguro que será mejor encapsular todo el código anterior en una clase parametrizada, pero eso ya es dependiente del contexto donde estemos :).
Limpiado Ad-Free Blogs (II), esta vez de verdad!
Publicado por blaxter - 03 Oct 2006 a las 22:33
Hace un rato me he acordado de que aún tenía esto pendiente por hacer, el script fallaba con todas las páginas que usaban redirecciones (debido a que éstas usan frames para hacer la redirección), lo cual he arreglado modificando ligeramente el código.
El funcionamiento del script es sencillo, creamos un fichero de texto que se llame "content.txt" que tenga la página del wiki de microsiervos, ejecutamos el script (está en perl y requiere un paquete, $ sudo aptitude install libterm-progressbar-perl) y este creará tres ficheros de texto como salida
- out.txt: con los blogs buenos.
- out.txt.malos: con los blogs malos.
- errores.txt: con blogs que no ha podido analizar, debido a errores diversos, desde URL inexistentes (404) a falta de permisos debido a la configuración del servidor (403), etc, etc...
Una vez terminada la ejecución (unos 20min le ha costado), he comprobado los blogs malos que da como resultado (unos cuantos solo, si comprobase todos no tendría sentido el script xD) y creo que esta vez no hay fallos. Los que salen como errores son debido a su mayoría a páginas no encontradas (error 404) o timeouts del servidor (error 500), aunque había algún otro error misterioso (415 por ejemplo) que lo he pasado a blogs buenos y ya está. En resumen, resultados:
En total de 399 blogs. Hay 153 MALOS, 212 BUENOS y 34 que han fallado!
Es decir, 38% son malos! WTF?. Acabo de editarlo en el wiki de microsiervos, pero si alguien se aburre mucho, mucho y encuentra fallos en la lista (o en el código del script), que no dude en cagarse en mis muertos y mencionarlo para corregirlo cuanto antes. Ahora tendremos 216 blogs en ad-free :).
No voy a pegar todo el código pues es similar al anterior, he aquí un tar.gz con el código y ficheros resultado.
Esta obra está bajo una
licencia de Creative Commons.
Este blog funciona gracias a WordPress
con el theme GimpStyle
diseñado por Horacio Bella y adaptado por un servidor.
Feed entradas