Archivo

Entradas Etiquetadas ‘open source’

Mantenimiento de PingBlog: Versión 1.1

Jueves, 28 de agosto de 2008
Comentarios desactivados

Bueno,

En una tarde de ocio me puse a jugar un poco con el código de PingBlog y corregí un mundo de cosas que no me gustaban. Ya descargué las versiones binarias y fuentes de PingBlog en Source Forge y por supuesto actualice las copias que pueden ser ejecutadas usando Java Webstart desde Kodegeek.com

¡Que lo disfruten!

Buscar en otros sitios:

Blogalaxia:, , ,
Technorati:, , ,
To2blogs:, , ,
Del.icio.us:, , ,

java , , ,

LWUIT: Sexy and OpenSource Java

Jueves, 28 de agosto de 2008
Comentarios desactivados

Si esto se puede hacer en un teléfono normal sin necesidad de comprar el telefono de Jesus (si, en Ingles suena mejor, The Jesus Phone) entonces de verdad se ve interesante (aquí tienen otro video con menor detalle).

Definitivamente el mercado de los teléfonos celulares es la siguiente arena a conquistar; Todo el mundo tiene uno y cada vez son más poderosos. El hecho de que hayan herramientas como LWUIT, Android, todas escritas en Java, y otros dice algo sobre que debemos aprender para estar montados en esta nueva ola :D

Buscar en otros sitios:

Blogalaxia:, , ,
Technorati:, , ,
To2blogs:, , ,
Del.icio.us:, , ,

java , , ,

Ardunio + España = Squidbee

Martes, 1 de julio de 2008
Comentarios desactivados

Bueno, ¿qué más se puede pedir cuando se hace una combinación de hardware y software abierto, con sabor Español?

Hola,
he visto en tu blog kodegeek que te interesan las redes sensoriales y
por este post
http://kodegeek.com/2008/05/ms-java-y-hardware-arduino.shtml, que
buscabas alternativas open source. Me gustaría que le echases un ojo a
SquidBee (www.squidbee.org) el cual es un proyecto de software y
hardware libre basado en arduino que hemos hecho. Fue pensado con fines
docentes e investigadores, lo cual se nota (no sólo en su bajo precio)
sino en las listas de correo squidbee_news y squidbee_hacking, el propio
wiki de squidbee en contínuo crecimiento (el último tutorial muestra
cómo poder hacer desde 0 tu propio SquidBee:
http://www.libelium.com/squidbee/index.php?title=Projects. En este link,
existen otros tutoriales relacionados con el mote:
http://www.sensor-networks.org.

Por cierto, el diseño que aparece en Making Things Talk de ArduinoXbee
es nuestro ;-).

Espero que la información te sirva. Un saludo y enhorabuena por el blog,


Alicia Asín Pérez
Tlf: +34 976 54 74 92
http://www.libelium.com

Vaya, realmente en Europa y Norteamerica el Arduino está volando alto. Pero y para los que vivimos fuera de Europa, ¿como hacemos?:

Nosotros estamos en España y los kits pueden adquirirse en http://www.libelium.com/tienda/catalog/index.php?cPath=22. La opción más económica es comprar un SquidBee from scratch y soldárselo uno mismo. Hay un tutorial de cómo hacer esto en www.sensor-networks.org. Por otra parte, hay una opción de envío muy económica por correo postal, tarda un poquito más en llegar pero es barato.

Así que la imaginación es el límite. Por cierto, en al página web tienen un modelo para ponerle un GPS, la cabeza me quedó dando vueltas de sólo pensar las cosas que se pueden hacer :D

Buscar en otros sitios:

Blogalaxia:, , ,
Technorati:, , ,
To2blogs:, , ,
Del.icio.us:, , ,

Sin categoría , , ,

¡Resulta que ahora Java es socialista!

Lunes, 23 de junio de 2008

Bueno, hay ciertos temas que uno da por acabados (si, el enlace a mi articulo es del 2005), sobre todo cuando hay evidencias de sobra que indican que debería ser así, y sin embargo estos vuelven a aparecer. En este caso es el empeño de Satanizar al lenguaje (el cual ahora es Open Source y cuenta con una distribución completamente funcional en Fedora Core, llamada IceTea). El anuncio me llegó por el grupo de Yahoo SoftwareVen:

Como parte del trabajo de estudios de las tecnologías libres el Centro
Nacional de Desarrollo e Investigación en Tecnologías Libres -
CENDITEL [0] ha publicado un documento titulado “Pertinencia de la
tecnología Java por y para el Estado Venezolano” [1].

El mismo esta a disposición para el análisis y discusión sobre la
temática, sean bienvenidos a participar y compartir ideas en el foro
de discusión de CENDITEL [2] en la temática destinada para esto
llamada “Publicado documento tecnología Java” [3].

[0] http://www.cenditel.gob.ve/FundacionCenditel
[1] http://www.cenditel.gob.ve/files/u1/PertinenciaJavaVenezuela.pdf
[2] http://www.cenditel.gob.ve/foros/
[3] http://www.cenditel.gob.ve/foros/viewtopic.php?p=28#28

Atentamente

T.S.U. Leonardo Caballero
E-Mail: leonardocaballero at gmail.com, lcaballero at linuxmail.org

Debo comenzar diciendo que me fastidia de sobre manera el fanatismo de los programadores. No sólo Leonardo Caballero se empeña en pintar a Sun como la corporación que se va a encarga de quitarle a Venezuela su autonomía tecnológica sino que además ignora (a estas alturas) la existencia de implementaciones completamente funcionales como IceTea y Classpath en Linux.

Este trabajo insiste en mezclar nacionalismo, tendencias politicias como el socialismo pero sin llegar a proponer alternativas ya que sólo se limita a nombrar ciertos proyectos de software libre como Linux, Ruby, Subversion entre otros. Incluso se atreve a catalogar al lenguaje como mediocre en diseño:

El tema se planteó recientemente en la lista de discusión de SOLVE, y allí José Luis Rey (2008) argumentó que el lenguaje de programación Java “es un lenguaje
mediocre, que no permite implementar técnicas de programación, que todo programador debería conocer y dominar. Lo peor es que ahora estoy seguro de que eso es así por imposición”. Señala que aunque el diseñador de Scheme fue contratado en la concepción de Java, en el resultado final se eliminaron todas las capacidades poco convencionales como la herencia múltiple, para evitar que el lenguaje fuera demasiado avanzado. Así, Java la mediocridad de java no es casual sino intencionada5. Además, el lenguaje Java cuenta con un sistema de tipo de datos estático y simplista que no permite el manejo de características más
avanzadas como metaprogramación o programación funcional.

El pasaje está genial. Ignora completamente el hecho de que Java fué diseñado para simplificar el desarrollo de aplicaciones y que es una mejora sustancial sobre su predecesor, C++. Por ejemplo:

  • Java es un lenguaje mediocre: Seguro, soporte de un API completo como Swing para el desarrollo de interfaces gráficas (más completo que TK y más fácil de usar que Motiff), soporte de Threads, Networking y Garbage Collection dentro del mismo lenguaje. Ah, y que puede correr en cualquier dispositivo ya que todos los sistemas operativos importantes tienen una máquina virtual de Java. Si se refiere a que ciertas caracteristicas sintacticas del lenguaje no están allí (como Schema) es un asunto diferente. ¿Porqué caer en los excesos? La comparación no es objetiva, y eso es malo.
  • Datos de tipo estático: Creo que estos dos han pasado demasiado tiempo escribiendo scripts. Yo en particular me siento comodo sabiendo de antemano de que tipo de datos son mis variables y que el compilador me pueda decir que hay asignaciones equivocadas. Si quiero utilizar scripts con su sintaxis relajada, entonces tengo BeanShell (Java pero con sintaxis más relajada, sin declaración de variables), JRuby, Jython, etc. Si, mis “scripting languajes” corriendo sobre una máquina virtual conocida y probada :)
  • Herencia múltiple: ¿Usted realmente la necesita? Con un diseño cuidadoso y el uso de Interfaces se consigue lo mismo. Herencia múltiple no es mala (de hecho es muy útil) pero cuando se usa hay que ser cuidadoso, sabiendo que es lo que se quiere al final. También ignora el hecho de que utilizar herencia todo el tiempo para extender código es malo y que existen otros patrones de diseño que favorecen más la estabilidad del código en contra de cambios de la clase padre como la agregación (por ejemplo, el patrón de diseño Decorator).
  • No soporta programación funcional: Java no es un lenguaje de programación funcional, sin embargo hay implementaciones de lenguajes funcionales que corren sobre la máquina virtual de Java como Scala. En particular es irritante como los detractores de Java se empeñan es decir que “one size fits all” (un sólo tamaño para todo) cuando deberian ser más pragmaticos diciendo que hay herramientas para cada problema.

Si usted alguna vez ha desarrollado código del lado del servidor o cliente usando Java, se encontrará agradecido que el lenguaje tenga un manejo elegante de Threads, Networking (con varios protocolos), y sobre todo el manejo de memoria automático usando Garbage Collection.

Todo el mundo sabe que Java no es perfecto y la escogencia del lenguaje a la hora de resolver un problema sigue dependiendo de la tarea, presupuesto y nivel de experticia de quienes van a desarrollar la solución. También en las Universidades deberian seguirse enseñando no uno sino varios lenguajes de programación, entre ellos C y C++ (pueden decir lo que quieran de esos dos lenguajes pero Linux, manejadores de dispositivos y muchas otras cosas aún están escritas en esos lenguajes).

¿Pero que tiene que ver eso con la “muestra independencia tecnológica”? Si usted lee con cuidado el articulo, se dará cuenta que el escrito es un arroz con mango de tecnología, sazonada con politica. Nada le prohibe a Venezuela desarrollar su propio lenguaje de programación, e incluso su propia implementación del lenguaje Java, como hizo la gente de Kafee:

Kaffe is a clean room implementation of the Java virtual machine, plus the associated class libraries needed to provide a Java runtime environment. The Kaffe virtual machine is free software, licensed under the terms of the GNU General Public License.

El nuevo OpenJDK o Kafee no cuentan con ninguna restricción de exportación, ya que están protegidos por la licencia GPL. Entonces, ¿que es lo que detiene a Venezuela en el desarrollo de una máquina virtual o lenguaje de programación?

Esa es la pregunta incomoda que ninguna de estas personas quiere responder.

No importa si usted decide no utilizar Java. Pero al menos hagalo por las razones correctas, entre ellas porque no es la mejor herramienta para el problema que quiere resolver, no porque se lo dijeron en la escuela y usted se tomó el “cool aid” sin pensarlo dos veces.

Buscar en otros sitios:

Blogalaxia:, , , , ,
Technorati:, , , , ,
To2blogs:, , , , ,
Del.icio.us:, , , , ,

java , , , , ,

No tan estupido: StupidZombie.com

Martes, 22 de abril de 2008

Vaya, hoy vengo de un día brutal en la oficina (y una cena en grupo la cual consistió en una deliciosa cena con comida Griega y su respectivo café), trabajando en un proyecto delicado (estoy acomodando todo el framework de compilación en instalación del nuestra aplicación de trading, un monstrico de 8 años de edad). No todo es aburrido, hoy por fin comienzo a trabajar en un proyecto directamente relacionado con la aplicación de trading, el la cual hay de todo: desde server side programming (sockets, threads y toda la parafernalia) hasta la interfaz gráfica en el lado del cliente.

¡Wooohooooo!

Pero no les quería hablar de eso, sino de como hace unos días escribí sobre la muerte de PingBlog.

¿Que significa dejar atrás PingBlog para mi? Varias cosas, entre ellas:

  • Aprendiender Subversion: Si, después de usar CVS y Clearcase (este último abandonado por Rational e IBM), es hora de probar el siguiente sistema más popular. Este proyecto es la excusa perfecta para aprender Subversion.
  • Hospedar el proyecto en Java.net. Si, Source Forge es quizas demasiado grande y este proyecto esta enfocado en el lenguaje Java. Quizas esta vez logre entusiasmar a alguien a trabajar conmigo en el proyecto sin necesidad de competir por tanta atención (además de que PingBlog estaba siendo manejado en CVS y una migración a Subversion no estaba en mis planes).
  • Mejor código: El tiempo ha pasado y tengo mejores ideas para esta versión. Además de que creo que mis trucos de programación han mejorado :)
  • Más código más rápido: Esta vez pienso pasar más tiempo escribiendo código perfecto y sólo voy a escribir código. Subversion me va a ayudar a echar para atrás esos errores :)

Asi que como ya ven, cosas buenas vienen para StupidZombie.

Buscar en otros sitios:

Blogalaxia:, , , ,
Technorati:, , , ,
To2blogs:, , , ,
Del.icio.us:, , , ,

java , , , ,

PingBlog: Q.E.P.D

Domingo, 20 de abril de 2008
Comentarios desactivados

Todas las cosas llegan a su fin y hoy, después de mucho tiempo me decidí a matar a PingBlog. Cuando comencé a trabajar en el proyecto estaba tratando de aprender cosas nuevas y creo que es hora de mover esta idea en otra dirección completamente diferente.

¿Esta realmente muerto o no?

Bueno, en unos días haré un anuncio aquí en el blog. Pero por ahora PingBlog está muerto de seguro :)

Buscar en otros sitios:

Blogalaxia:,
Technorati:,
To2blogs:,
Del.icio.us:,

Sin categoría ,

Convertidor de HTML a RSS para las noticias de Globovisión.

Domingo, 14 de octubre de 2007

Siguiendo con la fiebre de los Mashups hechos con Yahoo Pipes, llegué al punto en que decidí escribir un convertidor de HTML a RSS para Globovision. Como recordaran, Globovision no ofrece un feed RSS de sus noticias nacionales, lo cual es una verdadera lastima.

Asi que con un poco de imaginación decidí escribir este programa en Perl:

 1 #!/usr/bin/perl
2
3
use strict;
4 use LWP::UserAgent;
5 use HTML::Parser;
6 use XML::RSS;
7
8 my $rss = XML::RSS->new( version => '0.9' );
9
10 my $rssFile = "$ENV{HOME}/globovision.rss";
11
12 $rss->channel(
13 title => "Globovision.com Venezuelan News",
14 link => "http://globovision.com/",
15 description => "Globovision.com news -
Brough to you by http://KodeGeek.com"
);
16
17 # Be carefull with this one as nested elements can be ignored and
18 # HTML normally is not well formed!
19
my @ignore_tags = (
20 "head",
21 "h1",
22 "strong",
23 "form"
24 );
25
26 my $baseUrl = "http://globovision.com/";
27
28 # We are only interested on the news from the first page,
as more news come up it will push older news
29
my $newsUrl = "$baseUrl" . "history.php?cha=1&pag=1";
30
31 use constant DEFAULT_TIMEOUT
32 => 180;
33
34 my $agent = LWP::UserAgent->new({
35 agent => 'GlobovisionHtml2Rss.pl/kodegeek 0.1',
36 timeout => DEFAULT_TIMEOUT
37 });
38 my $response = $agent->get($newsUrl);
39 if (! $response->is_success) {
40 die sprintf "[ERROR]: Unable to retrieve the HTML
from '%s', Status: '%s'"
, $newsUrl, $response->status_line;
41 }
42 my $parser = HTML::Parser->new(
43 api_version => 3,
44 start_h => [ \&start_a, "tagname, attr" ],
45 text_h => [ \&get_headline, "dtext" ]
46 );
47 $parser->ignore_tags(@ignore_tags);
48 my $headlineFlag=0;
49 my $currUrl=undef;
50 $parser->parse($response->decoded_content());
51
52 $rss->save($rssFile);
53
54 # ****** Functions used on the script *******
55
56 # Get the headline
57
sub get_headline {
58 my $headline = $_[0];
59 if ($headlineFlag) {
60 $rss->add_item( title => $headline, link => $currUrl);
61 $headlineFlag = 0;
62 $currUrl=undef;
63 }
64 }
65
66 # Identify news items
67
sub start_a {
68 my $tagname = $_[0];
69 my %attr = %{$_[1]};
70 if ( ($tagname eq "a") && ($attr{href} =~ /^news.php?.nid=\d+/) ) {
71 my $url = $baseUrl . "/" . $attr{href};
72 $url =~ s/&/&/g;
73 $currUrl = $url;
74 $headlineFlag=1;
75 }
76 }
77 __END__
78 =head1 NAME
79
80 GlobovisionHtml2Rss.pl - Script to convert Globovision.com Venezuela
local news from HTML to RSS.

81
82 =head1 DESCRIPTION
83
84 I use a combination of Yahoo Pipes and Google Reader to keep me
updated about news of any kind. However, some websites like
85 Globovision.com still don't have a proper RSS feed, so one day
I decided to create my own mashup :).
86
87 =head1 AUTHOR
88
89 Jose Vicente Nunez Zuleta (josevnz@kodegeek.com)
90
91 =head1 BLOG
92
93 KodeGeek - http://kodegeek.com
94
95 =head1 LICENSE
96
97 GPL
98
99 cut

Lo más fastidioso de este ejercicio fué instalar EXPAT (para el procesamiento del XML del feed RSS) y el módulo parta crear el archivo RSS (me da un fastidio enorme aprender como es el formato resultante).

Mi proveedor de hosting gustosamente instaló el módulo XML::RSS. Después de probarlo un poco aquí les dejo las noticias de Globovisión para que la disfruten (planeo actualizar el lector de noticias cada 10 minutos para no matar a mi servidor).

Blogalaxia.com:globovision, rss, html to rss, perl, open source
Technorati.com:globovision, rss, html to rss, perl, open source

Sin categoría , , , ,

Echando código: ¿Como saber de que tipo es un archivo, desde JAVA?

Sábado, 22 de septiembre de 2007

Nock Nock Neo
Con JNI nos podemos ir a bajo nivel con el sistema operativo. Una rubia en la foto :)

En un articulo anterior les habia comentado como trabajar con JNI y Java. En esta ocasión escogí un problema un poco más complicado, ya que el anterior parecía más un “Hola Mundo” que otra cosa (si, pasos de bebé).

Así que como la necesidad es la madre de todas las invenciones, me decidí a probar un ejemplo que tenia ganas de poner en práctica desde hace tiempo. En este caso se trata de como obtener el tipo de un archivo utilizando la herramienta file en UNIX, pero primero veamos si Java puede hacer lo mismo.

En Java podemos utilizar Swing para obtener el tipo del archivo. Leí que clase JFileChooser de Swing te da información similar, pero es basado en la extensión del archivo:

–>

   1:import javax.swing.JFileChooser;
   2:import java.io.File;
   3:
   4:public class FileType {
   5:        public static void main(String [] args) throws Exception {
   6:                JFileChooser view = new JFileChooser();
   7:                String descr = view.getTypeDescription(new File(args[0]));
   8:                System.out.println("File type is: " + descr);
   9:        }
  10:}

Corriendo el programita:

[josevnz@localhost ~]$ javac FileType.java -d .
[josevnz@localhost ~]$ java FileType DS156_Complete.pdf
File type is: Generic File
[josevnz@localhost ~]$


Poco satisfactorio, por no decir otra cosa. Sin embargo todo el mundo sabe como obtener el tipo de un archivo desde unix, utilizando ‘file’:

[josevnz@localhost ~]$ file DS156_Complete.pdf
DS156_Complete.pdf: PDF document, version 1.3
[josevnz@localhost ~]$

File es una de mis herramientas favoritas. File consulta una base de datos en la cual están registrados los formatos y utilizando reglas heuristicas determina el verdadero tipo del archivo. Ahora, supongamos que quiero tener la misma funcionalidad desde uno de mis programas en Java, ¿como hacer?

Lo primero es averiguar como los verdaderos expertos lo hacen. Hay que utilizar JNI ya que quiero tomar ventaja de que el código de file va a utilizar la base de datos que viene con cada sistema operativo UNIX y no me importa sacrificar portabilidad.

Así que después buscar cuidadosamente en Google, finalmente encontré la página oficial del comando ‘file’.

Sin embargo ya alguién se topó con el problema y decidió hacer una interfaz en Java la cual hace todo el trabajo: Java shared mime info.

Así que esas son las opciones. Les dejo la de Java, aunque otros lenguajes ya tienen sus respectivas implementaciones.

Blogalaxia.com:file, java, linux, open source, venezuela, libmagic, jmimeinfo
Technorati.com:file, java, linux, open source, venezuela, libmagic, jmimeinfo

java , , , , , ,

Sitio de Fedora 7 en Venezuela

Lunes, 3 de septiembre de 2007



Bajate Fedora Linux

De nuevo y gracias a esos buscadores que tengo corriendo todo el tiempo, me conseguí con un grupo de usuarios de Fedora 7 en Venezuela.

El sitio luce interesante, falta ver que tanto les dura la mecha (como otros miles de sitios que comienzan hablando de Open Source en Venezuela y después se vuelven paja).

Les deseamos exito por acá, interesante iniciativa.

Blogalaxia.com:linux, fedora core, redhat, venezuela, open source
Technorati.com:linux, fedora core, redhat, venezuela, open source

Sin categoría , , , ,

MySQL y BitTorrent te hacen más dificil bajar el código fuente

Viernes, 10 de agosto de 2007

Una semana mala para el mundo Open Source.

Primero BitTorrent decide no dar el código fuente de su última versión (6.0). Al menos no fácilmente ya que hay que pedir una licencia de desarrollador (gratis).

MySQL es más agresivo aún. El código Enterprise no estará disponible por FTP sino BitTorrent, excepto para usuarios pagos.

Es una lastima como ciertas compañías cambian sus tácticas con los usuarios que los volvieron populares una vez que alcanzan cierta notoriedad o fama.

¿Está todo perdido? Para nada. Simplemente utilice Azureus (Open Source y mejor que el cliente de BitTorrent), y PostgreSQL (siempre ha sido más completo que MySQL).

Esa es la belleza del mundo Open Source, siempre hay alternativas.

Blogalaxia.com:mysql, bittorrent, open source, azureus, postgresql
Technorati.com:mysql, bittorrent, open source, azureus, postgresql

Sin categoría , , , ,

%d personas les gusta esto: