Subscribirse al RSS Feed
(CodeAR)

codeAR es un Agregador de Noticias que intenta capturar los blogs de los desarrolladores Argentinos. Para saber que piensan, que están desarrollando, que están leyendo, que están imaginando.
Si tenes un blog sobre desarrollo de sistemas o relacionado al tema, te invitamos a participar de este Planeta, envianos un mail con la dirección de tu blog.

May 12, 2008

Semana cargada de eventos

desde SerialBlogger por dfgonzalez

Esta semana, para el que todavía no se entero está llena de eventos y reuniones de “gente del palo” :P

Para los emprendedores e inversores Endeavor, para los desarrolladores, marketineros, y todos los que quieran acercarse a conocer gente que este relacionada a la web en Argentina, PalermoValley 3, y finalmente las charlas del Día de Internet.

Nos vemos! :-)

May 12, 2008

Usando CSS: HTML es para contenido

desde Tordek por Tordek

Estoy hasta las pelotas de los comentarios de “Dise??ar con CSS es dif??cil”.

Para hacer un dise??o con CSS, hay que entender la separaci??n de contenido y presentaci??n: HTML es para contenido. CSS es para presentaci??n. Es obvio que es imposible que est??n absolutamente separados —para algo est??n las classes y los ids— pero hay que empezar por separar lo que se puede.

El contenido es Rey

Empez?? por imaginarte que no existe el CSS, que no existen los atributos style, y que tenes que pagar $100 cada vez que usas una tabla (no, usar tablas no est?? mal, pero usarlas para lo que no se debe est?? mal).

Tus tags: h1-h7, p, strong, em, a, ul, ol, li y opcionalmente hr.1 Pon?? tus t??tulos en h1, subt??tulos en h2, etc. Cada parrafo envuelto en <p></p>. Listas con ul/ol y li. Si quer??s resaltar una palabra, em o strong. Dado que un men?? es una “lista de links”, obviamente, us?? una lista. Y, obviamente, head y title para el t??tulo de la p??gina, body envolviendo todo el contenido, y un html encerrando todo.

Listo. Con eso tendr??as que hacer TODA tu p??gina. Hay muy pocas excepciones para esa regla.

Obviamente que no es lo m??s lindo del mundo. Pero el punto, ahora mismo, no es que sea lindo; es que tenga sentido. Los t??tulos son t??tulos porque los envolviste en h1/2/lo que sea, no porque “tienen una fuente m??s grande”. Las cosas marcadas tienen sentido cuando las marcas as??. Eso es el HTML: un lenguaje de MARCAS (Markup).

??Y ahora? Ahora creas tu CSS.

Estructurando

El primer paso es armar tu estructura. Tu p??gina hasta ahora no se presta demasiado para la estructura, as?? que te presento un nuevo elemento: div. Este elemento sirve para determinar las ??reas de tu p??gina: Envolve en divs (uno por seccion) a lo que sea tu encabezado, tu pie, el contenido principal, men??es, etc., mientras a cada uno le pon??s el atributo id correspondiente a su secci??n.2

Con tus areas definidas, pod??s empezar a definir la estructura.3 Y eso queda para el pr??ximo art??culo.

  1. Seguro me olvido de alguno.
  2. div no hace magia. Reduc?? su uso s??lo para donde sea ??til y necesario.
  3. En este momento yo recomendar??a mucho usar un CSS reset, para evitar dolores de cabeza porque los m??rgenes son cualquiera. Reset Reloaded, de Eric Mayer es bueno, pero tambi??n toca cosas como el tama??o de los headers, as?? que ojo.
May 12, 2008

Applet para ayudarte a probar pequeños programas

desde Apuntes, son solo apuntes por Fernando Bordignon (noreply@blogger.com)
.
Si estás aprendiendo programación y estás haciendo tus primeros pasos, hay un applet de la empresa EduTool que podría llegar a ayudarte. La idea es que en forma visual puedas ver la ejecución de un programa que vos ingreses.
May 12, 2008

Rapidshare se puso muy exclusivo.

desde Apuntes, son solo apuntes por Fernando Bordignon (noreply@blogger.com)
.
Se comenta que Rapidshare se ha puesto bastante selectivo con respecto a sus usuarios gratuitos. En particular apunta a alumnos y profesores Universitarios. Si no me creen miren el siguiente captcha con el que he encontrado



Vía Microsiervos
May 12, 2008

off topic. Monty Python: Un partido de futbol entre griegos y alemanes

desde Apuntes, son solo apuntes por Fernando Bordignon (noreply@blogger.com)
.
Monty Python como solo ellos pueden hacerlo nos presentan (con subtìtulos y todo) la síntesis de un partido de fulbol entre hombres famosos de Grecia y de Alemania. La formaciones son

Alemania
1 LEIBNIZ, 2 I.KANT, 3 HEGEL, 4 SCHOPENHAUER, 5 SCHELLING, 6 BECKENBAUER, 7 JASPERS, 8 SCHLEGEL, 9 WITTGENSTEIN, 10 NIETZSCHE, 11 HEIDEGGER

Grecia:
1 PLATÓN, 2 EPICTETO, 3 ARISTÓTELES, 4 SOFOCLES, 5 EMPÉDOCLES DE AGRIGENTO, 6 PLOTINO, 7 EPICURO, 8 HERÁCLITO, 9 DERÁCLITO, 10 SÓCRATES, 11 ARQUÍMEDES

Si te gusta le Luthier Monty Phyton te va a fascinar.



Vía Taringa
May 12, 2008

Chin Chin!!! Este es el post 1002.

desde Apuntes, son solo apuntes por Fernando Bordignon (noreply@blogger.com)
.
Gracias a todos por leer este espacio personal y por sus contribuciones.

Fernando Bordignon
May 11, 2008

desde Blog de UsabilidadWeb.com.ar por Carlos (noreply@blogger.com)

Una bombilla en California bate récord mundial al llevar 107 años encendida


Ha iluminado durante más de un millón de horas la estación de bomberos de Livermore-Pleasanton

Es una reliquia de una época en las que las cosas se hacían para durar: una bombilla en Livermore (California) lleva 107 años encendida, un récord mundial, y hoy es una de las principales atracciones turísticas de la ciudad. Se trata además de uno de los primeros ejemplares de una tecnología en extinción, pues las bombillas tal y como las conocemos van siendo sustituidas por soluciones energéticas más eficientes como las lámparas con OLED o las bombillas de bajo consumo

La bombilla de Livermore ha iluminado durante más de un millón de horas la estación de bomberos de Livermore-Pleasanton y aunque su potencia es muy baja -sólo 4 vatios- para los bomberos de la comunidad simboliza el valor de estar de servicio 24 horas al día.

"Cada día vienen varios grupos a verla, puede decirse que es un monumento de la ciudad ", dijo a EFE Brandt Jorgenson, miembro de este cuerpo de bomberos, que ha instalado una cámara web (www.centennialbulb.org) para que los internautas comprueben que la bombilla no se apaga nunca.

La "bombilla centenaria", como se la conoce en EEUU, ha entrado en el libro Guiness de los récords y superado la anterior marca en poder de una bombilla tejana encendida por primera vez en 1908. "Yo creo que el secreto de nuestra bombilla es cómo está fabricada", dijo Jorgerson. "Además, nunca se enciende ni se apaga con lo que se elimina el calentamiento".

Más de un siglo de historia

La bombilla fue fabricada por la hoy desaparecida Shelby Electric y su filamento de carbono está perfectamente aislado por la ampolla de vidrio. El filamento opera en vacío y no en un espacio relleno de algún gas noble, como las bombillas que conocemos hoy.

Cuando la encendieron por primera vez, iluminaba una arcaica estación de bomberos donde los coches iban aún tirados por caballos El objetivo era permitir que los bomberos pudieran encender sus lámparas de queroseno cuando se producía una emergencia por la noche.

Durante los años 50 y 60 varias generaciones de bomberos la utilizaron como blanco para prácticas de baloncesto y otros deportes, afortunadamente con escasa puntería. Hasta los años 70, cuando la prensa local empezó a interesarse por la lámpara incandescente, los bomberos no se percataron de su valor histórico.

Superviviente de un traslado

Aunque las autoridades de Livermore aseguran con orgullo que ha estado siempre encendida durante estos 107 años, la bombilla estuvo en realidad apagada durante 22 minutos en 1976, cuando el cuerpo de bomberos trasladó su sede.

Según contaron los bomberos de la localidad al diario Los Angeles Times, el traslado requirió un convoy policial y la habilidad del electricista oficial del ayuntamiento, que construyó un caja especial de madera para transportar la bombilla y su casquillo.

Cuando volvieron a conectarla, no se encendió y todos contuvieron la respiración pensando que había sido un error trasladarla...hasta que el electricista accionó un interruptor y la luz anaranjada y tenue de la bombilla volvió a iluminar la sala.

Fuente: www.elpais.com
May 10, 2008

Terminé mi carrera…o mi caminata

desde Gastón Ramos - Ruby, Rails... por Gastón Ramos

La semana pasada aprobé la última materia de la carrera Analista en Informática Aplicada, después de muuuucho tiempo al fin me recibí, todavía recuerdo cuando recién comenzaba a estudiar, tenía muchas energías y ganas de aprender más y más acerca de todo lo que tenga que ver con computadoras y debo reconocer que aprendí varias cosas en esa casa estudios pero también tengo que decir que las cosas que considero más importantes las aprendí afuera. En mi caso particular hace bastante tiempo que me vengo dedicando al desarrollo de software más que nada al desarrollo web, he trabajado en varios lugares/empresas y también hice algunos proyectos personales que publiqué con licencia GPL. En la facultad tuve materias como: Fundamentos de Programación, Programación I, Programación II, Ingeniería de Software, Bases de datos y Optativa y Proyecto final, los lenguajes que conocí en esas materias fueron: Pascal, Delphi, Java, C++ y Visual Basic, sin embargo los lenguajes en con los cuales yo he venido trabajando son: PHP, Perl, Ruby y algo de Shell Scripting… es cierto que en este último tiempo en mi trabajo me están obligando a usar java (uno de los motivos que hace que este lugar se torne bastante aburrido para mí). Debo decir que la mayoría de estas materias (de programación) estaban centradas en enseñar la sintaxis del lenguaje que se daba o en cuales botones había que hacer “click” para compilar con netbeans o como generar un reporte con el asistente de Visual Basic xx, otro detalle importante eran los exámenes, a excepción de proyecto final todos los exámenes se hacían en papel y para aprobar bastaba con que el programa “funcione” sin importar la forma de resolverlo.
Acá les dejo el último exámen que rendí, el de Optativa y proyecto final:
Este es el enunciado:
Examen proyectofina 1/2
Exámen proyecto fina 2/2

El título dice “Recuperatorio 2do parcial” se ve que fué reutilizado :), bueno acá les dejo mi solución:

class Plancuenta  :Plc_id

  def self.calcular_nro_siguiente cuenta
    Plancuenta.find(:all).select{|p| p.Plc_IdPadre == cuenta}.
      sort{|x,y| x.Plc_NroAux  y.Plc_NroAux}.last.Plc_NroAux + 1
  end

  def self.agrega_plan plc_idpadre, plc_desc
    plc_nroaux = self.calcular_nro_siguiente(plc_idpadre)
    @plan_nuevo = Plancuenta.new( :Plc_IdPadre =>  plc_idpadre,
                                   :Plc_NroAux => plc_nroaux,
                                   :Plc_Desc => plc_desc)
    @plan_nuevo.save
  end

  def self.pone_puntos_intermedios nro
    str = ''
    nro.to_s.each_byte{|b| str += b.chr + "."}
    str
  end

  def self.cuentas_imputables
    ci = Plancuenta.find_by_sql("select * from plancuenta where id NOT IN
                      (select Plc_IdPadre from plancuenta)")
  end

  def before_save
    self.Plc_id = (self.Plc_IdPadre.to_s + self.Plc_NroAux.to_s).to_i
    self.Plc_Cod =  (Plancuenta.pone_puntos_intermedios(self.Plc_id) +
                               self.Plc_NroAux.to_s)
  end

end
class Asientos  :Plc_Id

  def self.hacer_caja
    str = ''
    Plancuenta.cuentas_imputables.each{|c|
      str += "Cuenta: #{c.Plc_id} Saldo: #{Asientos.saldo(c.Plc_id)}\n"
    }
    puts str
  end

  def self.saldo cuenta
     Asientos.find_all_by_Plc_Id(cuenta).collect{|a| a.Asi_Debe}.sum - \
      Asientos.find_all_by_Plc_Id(cuenta).collect{|a| a.Asi_Haber}.sum
  end

end

Esos son los dos modelos que hice para la solución que me llevó 2hs, el código se podría mejorar bastante pero me quedé bastante conforme, recuerden que estaba bajo la presión de rendir un exámen y no tenía mucho tiempo, además el prosefor me entregó la estructura de la base de datos en un archivo .mdb (de MS Access) y como yo uso Linux me la tuve que rebuscar para leer ese archivo y meterlo dentro de una db en Mysql.
Bueno la nota que me saqué fué 9 (sobresaliente).
Que experiencia tuvieron uds. en sus facultades? espero comentarios….

May 10, 2008

Recursos de Grid Computing

desde Angel "Java" Lopez por lopez

Desde el año pasado, y más en estas últimas semanas, he estado investigando sobre Grid Computing, buscando enlaces, recursos, "papers", implementaciones. Este post es el resultado de esa investigación.

Como siempre, un artículo de la Wikipedia:

http://en.wikipedia.org/wiki/Grid_computing

Si Ud. se está iniciando en el mundo de Grid Computing, estas son buenas introducciones

New to Grid Computing

Grid Computing according IBM

The anatomy of the grid

The physiology of the grid  

Interesante lista de lecturas para desarrolladores en Grid

Recommended reading list for grid developers

Grid Café tiene varios artículos y recursos

Grid Cafe Grid Projects in the world  

Grid Cafe The place for everybody to learn about the Grid  

What is "the Grid"?  

Grid @ CERN 

Sobre el estado de la industria:

http://www.gridtoday.com/ (un poco demasiado abarcativo, no es sólo sobre grid computing)

http://www.gridblog.com/

La lista completa de enlaces que mantengo, en:

http://del.icio.us/ajlopez/gridcomputing

Algunos productos para examinar:

http://www.gridgain.com
http://www.digipede.net algo más sobre Digipede en http://dotnetjunkies.com/WebLog/stefandemetz/archive/2006/12/09/Free_Grid_Computing_software.aspx
http://www.gridgistics.net/

http://sourceforge.net/projects/ngrid/

Algo relacionado, que comienza a "estar de moda":

http://en.wikipedia.org/wiki/Cloud_computing

He escrito artículos en este blog sobre Grid Computing:

http://msmvps.com/blogs/lopez/archive/tags/Grid+Computing/default.aspx

y en "Anglish", Angel's English:

http://ajlopez.wordpress.com/category/grid-computing/

donde hay algunas implementaciones sencillas de ideas a seguir explorando, como AjAgents, y AjMessages.

Esta lista de recursos, en Anglish, desde:

Grid Computing Resources

Angel "Java" Lopez
http://www.ajlopez.com

May 09, 2008

Mikrotik: Liberada v3.9

Algo raro debe haber pasado en la versión v3.8 que solo pasaron algunas horas para que la v3.9 viera la luz, al parece ha habido un problema con el driver de la AR5212 y cuando el router trabaja en bridge, por lo menos eso dice el changelog oficial.

Hay algunos post en los foros que comenta que la versión del proxy desde la 3.4 en adelante no esta funcionando para cachear .exe, .iso, etc, solo esta cacheando las imagenes. Yo he estado haciendo algunas pruebas y no he tenido ese problema pero es bueno saberlo. 

Por cierto, han agregado muchos mirrors a las descarga. 

What's new in 3.9:
*) bridge could make router busy even without traffic;
*) fixed route redistribution in RIP (bug introduced in 3.8);
*) fixed AR5212 kernel crash on setting change;

Mikrotik Download Routeros 

Tags: ,

May 09, 2008

Alojamiento gratuito para sitios Plone

desde Apuntes, son solo apuntes por Fernando Bordignon (noreply@blogger.com)
.
Estos días estoy probando un nuevo sitio gratuito que me han asignado a los efectos de probar el CMS Plone. La gente de Objectis es la que me provee este servicio gratis que permite alojar una o varias aplicaciones Zope o Plone. Aquellos que quieren aprender lo fabuloso del mundo de objetos de Zope y sus aplicaciones puede estar seguro que en esta plataforma va a poder hacerlo.


Plone Según Wikipedia

Plone
es un Sistema de Gestión de Contenidos o CMS por sus siglas en inglés (Content Management System), basado en Zope (que tiene miles de desarrolladores en todo el mundo) y programado en Python. Es un desarrollo basado en código abierto. Puede utilizarse como servidor intranet o extranet, un Sistema de Publicación de documentos y una herramienta de trabajo en grupo para colaborar entre entidades distantes. Frecuentemente es utilizado también como CRM, aun cuando no fue diseñado como tal.

El proyecto Plone comenzó en 1999 por Alan Runyan, Alexander Limi, y Vidar Andersen. Rápidamente se convirtió en uno de los populares y poderosos Sistemas de Gestión de Contenido de Código Abierto. En el 2004 se creó la Fundación Plone para proteger y promover el uso de Plone.

El estilo "Monobook" de la Wikipedia está basado parcialmente en el estilo de las páginas de Plone.


Zope según Wikipedia

Zope
es un servidor de aplicaciones web de código abierto escrito en el lenguaje de programación Python. Puede ser manejado casi totalmente usando una interfaz de usuario basada en páginas Web.

Un sitio web de Zope está compuesto de objetos en lugar de archivos, como es usual con la mayoría de los otros sistemas de servidores web. Las ventajas de usar objetos en lugar de archivos son:

  • Combinan el comportamiento y los datos en una forma más natural que los archivos de texto plano.
  • Alientan el uso de componentes estándares que se ocupan de una parte particular de las que forman una aplicación Web, permitiendo flexibilidad y buena descomposición.
  • Posibilitan procesos automáticos de gestión de información.

Lo más característico de Zope es su base de datos orientada a objetos, llamada ZODB o Zope Object Database. Esta base de datos almacena objetos ordenados en un sistema similar a un sistema de ficheros, pero cada objeto tiene propiedades, métodos u otros objetos. Esta aproximación es muy diferente de las base de datos relacionales habituales. Sin embargo, Zope dispone de múltiples conectores para las diferentes bases de datos relacionales y ofrece sistemas básicos de conexión y consulta abstrayéndolos como objetos.

Actualmente existen dos ramas principales, zope2 y zope3. Este último es una reimplementación del servidor zope, donde se ha tratado de volcar toda la experiencia adquirida en zope2. Zope3 no trae compatibilidad hacia atrás, por lo que los componentes hechos para zope2 no funcionan. Aún se está en un proceso de adaptación hacia este nuevo zope, para lo cual está usando un componente llamado five, con el cual desde zope2 pueden tener la facilidad de zope3.

May 09, 2008

Quiero tocar!!!!!!!!!!!

desde Buanzolandia por Buanzo

Listo. Eso. necesito entrar a la sala de ensayo a tocar.

Carajo.

May 08, 2008

10 consejos de wireless

Free Web Hosting

En LaFlecha he leído un artículo que habla de los 10 consejos que se deben tomar al poner un access point en alguna casa u oficina. Son consejo que dio Edimax que se aplica a la mayoría de los sistemas inalámbricos.

10 consejos de wireless 

Tags: , ,

May 08, 2008

Concatenación de cadenas en Java: Optimizaciones realizadas por el compilador

desde Le Funes por lefunes
La máquina virtual de Java no conoce al operador de concatenación (+) a la hora de ejecutar nuestro código. Por este motivo el compilador se encarga de traducir los lugares donde este operador aparece por el código necesario que permite cumplir con el mismo propósito y de forma óptima. Veremos cuales son las traducciones realizadas por el compilador y como podemos aprovecharlas a nuestro favor.
May 08, 2008

Agentes en Grid

desde Angel "Java" Lopez por lopez

El año pasado participé del desarrollo de una aplicación que se ejecuta en una grilla de máquinas sin disco. Este año, estoy volviendo a actualizar el proyecto, espero poder bloggear sobre el resultado dentro de un mes. Mientras, quisiera escribir sobre algunas ideas a explorar.

En este post, uso el término "agente", de una forma algo libre. No definiré precisamente el concepto, quiero usarlo como término base a refinar en el futuro (llegando en algún momento a tratar el tema de agentes autónomos, que me parece más interesante). Por ahora, exploremos algunas ideas básicas (¿ingenuas?) para entender mejor los problemas relacionados con agentes y aplicaciones en grid. Algunas de las ideas acá presentadas pueden ser vistas como ingenuas, pero siento que es un ejercicio necesario, para aprehender los conceptos clave y los problemas a ser resueltos en este tipo de aplicaciones. Al final de este post, presentaré algunas sugerencias de implementación.

He descripto algunas aplicaciones para ejecutar en una grid en mis anteriores post:

Grid Computing Programming

Más programando para una grid

Programando para una Grid

Conceptos de Agentes

En este post, un agente es una pieza de software, con conducta y estado. Se ejecuta en un host de agentes, una aplicación que provee los servicios de base para que el agente pueda "vivir" y trabajar. Representaremos al agente con esta figura:

Patrones de comunicación de agentes

Hay mucha literatura sobre comunicación de agentes, desde simples técnicas hasta elaborados contratos, negociaciones, y más. Podemos tener agentes con creencias, deseos e intenciones. En este post, un agente es más simple: sólo tiene estado, puede enviar y recibir mensajes. Puede recibir estímulos de otros agentes y desde el ambiente de su host.

El más simple patrón de comunicación es un agente enviando un mensaje a otro agente:

Algunas notas:

- El agente enviador conoce al agente receptor. Quiero decir, alguna forma de identidada debe ser implementada. El mensaje no es enviado a cualquiera: el que envía intenta enviar el mensaje a un determinado agente.

- El mensaje transporta datos, y debe ser entendido por el receptor, posiblemente procesado por uno de sus métodos de implementación.

- En enviador no espera por una respuesta. No está interesado en un mensaje de respuesta inmediato.

- Los agentes pueden residir en diferentes máquinas en la grila, y la comunicación se produce tanto local como remota.

Durante su vida un agente puede enviar muchos mensajes a distintos agentes, que debe conocer de alguna manera:

Algunas veces, el agente enviador recibirá un mensaje desde el agente receptor, notificando algun trabajo hecho, o enviando algún dato procesado. Dependiendo de la aplicación, el mensaje de respuesta podría acarrear información para identificar al mensaje original:

En este caso, el enviador original debe estar preparado para recibir la respuesta de una manera asincrónica. Esto podría ser un interesante problema a resolver: un agente puede enviar varios mensajes, y sería mejora si puede seguir ejecutando sin recibir todas las respuestas a tiempo. Por ejemplo, en una aplicación de un juego de tablero, un agente puede delegar la exploración de un árbol de jugadas a otros agentes, y, luedo de un tiempo, sería posible tomar una decisión, con sólo algunas respuestas recibidas.

Nubes ("clouds") en el cielo de la grilla

Otro caso: un agente puede estar interesado en enviar un mensaje, pero no a un receptor determinado. Al contrario, quiere enviarlo a una "nube" de agentes, así cualquiera interesado en el mensaje tendría la oportunidad de procesarlo.

Esta característica puede ser implementada usando estas estrategias:

- Un agente envía un mensaje a un sistema de pizarra (blackboard), que otros agentes están vigilando.

- Una agente enviaría una mensaje a la aplicación host, indicando un tópico (como en una cola de mensajes), así cualquier agente subscripto recibirá el mensaje. Una variante: sólo algunos subscriptores reciben el mensaje, dependiendo de parámetros de aplicación.

- Un agente podría enviar un mensaje dirigido a alguna definición de proveedor de servicio. Un proveedor de servicio es un agente, que declara al comienzo de su vida, sus capacidades y los servicios que puede proveer. 

Un ejemplo, tomemos una aplicación de un juego de tablero, ajedrez o go. Un agente en esa aplicación puede enviar un mensaje reclamando resolver cierta posición de ataque. En un sistema de pizarra, publicará el pedido. En un sistema de tópicos, lo enviaría al tópico "ataques". En una estrategia de proveedor de servicio, envía el mensaje a uno o más de los proveedores del servicio AttackResolver.

Como en el patrón anterior, un agente puede recibir una respuesta asincrónica, ahora desde "la nube":

 

Duplicación de agentes

Un agente tiene conducta y estado. Si el agente puede dividir su trabajo, podría tomar el camino de duplicarse a sí mismo:

Es algo extraño, pero podría ser útil, dependiendo de la aplicación a desarrollar.

Agentes y la Grilla

Cada agente puede ser albergado en un nodo de la grilla. El mecanismo de envío de mensajes debe ser capaz de enviar un mensaje a otro nodo. La aplicación host mantiene una lista de agentes por identidad, y conoce cúal  es local o remoto. Una prueba ácida: una aplicación de grilla con agentes debe ser capaz de correr en una sola máquina, o en una grilla, sin cambiar el código o el algoritmo.

 

Como en otras implementaciones de grilla (discutidos en los post que mencioné al principio), un servidor central está a cargo de la distribución de las tareas entre los nodos de la grilla. "Grid as a Service" es una nueva frase que podemos aplicar a esta situación.

Moviendo al Agente

Un agente puede iniciar sus actividades en un node. Pero en algún momento, puede decidir de continuar su trabajo en otro nodo (la aplicación host que lo alberga también puede tomar esa decisión, independientemente del agente). Entonces, su estado sería enviado de un nodo a otro (otro caso: podría querer duplicarse y que su clon siga el trabajo en otra máquina).

Noten que la conducta del agente (que puede estar compilada o puede estar escrita en un lenguaje dinámico o de agente), no viaja. Pero bien podría ser que viaje, incluso, que haya agentes que vayan adaptando su conducta en el tiempo.

Inyectando conducta

La conducta de cada agente podría ser expresada en código compilado (archivos .jar en Java, assemblies en .NET). Otras alternativas son posibles: la conducta podría ser especificada en un lenguaje de scripting dedicado a agentes (pienso en una adaptación del AjBasic, por ejemplo).

Si la conducta se expresa en forma compilada, uno o varios servers puede tomar la responsabilidad de almacenar y distribuir esos componentes:

Ideas de implementación

Muchas de estas ideas pueden ser implementadas en cualquier lenguaje/tecnología apropiada, como Java y .NET, que soporte múltiples threads, invocación remota, serialización de mensajes, etc...

En los últimos tiempos estuve trabajando en mis projectos AjMessages y AjAgents, más información enestos post:

AjMessages: a message processor

Agents using Concurrency and Coordination Runtime (CCR)

AjMessages- hacia un procesador de mensajes

Agentes usando Concurrency and Coordination Runtime (CCR)

Algoritmos Genéticos con AjAgents y Concurrency and Coordination Runtime (CCR)

Genetic Algorithms with AjAgents and Concurrency and Coordination Runtime (CCR)

(Tengo otro proyecto, AjGrid, no publicado aún). Para este post, creo que el AjAgents podría ser una implementación de esas ideas. AjMessages tiene ahora soporte de ejecución remota, pero está más orientado a un proceso tubería ("pipeline"): es más difícil de implementar en semejante sistemas las ideas de este post.

Estoy agregando algunas características a AjAgents (ahora, AjAgents trabaja sólo en local):

- Configuración: Carga y creación de agentes en ejecución, según alguna información de configuración, ya sea al inicio o en el medio de la ejecución.

- Assembly remoto: Así un nodo de grilla pueder ser inyectado con nuevos agentes.

- Identificación de Agente: Para identificar al agente de manera única (un UID debería bastar).

- Transporte de mensaje: Windows Communication Foundation es un candidato, otro podría ser DSSP.

Un posible camino es tomar Decentralized System Services (DSS) del Microsoft Robotics Developer Studio. Un agente podría ser implementado como un servicio de DSS, ejecutando en un host DSS. La comunicación entre máquinas puede ser implementada usando DSSP como protocolo.

"Stay tuned", vendrá más código.

(Esta es una actualización y traducción de mi post en "Anglish", Angel's English:

Agents in a Grid

)

Angel "Java" Lopez
http://www.ajlopez.com/en

May 08, 2008

Mujer imaginaria

desde brunovilches.com.ar por Bruno

Me enamoré de una
mujer imaginaria.

Inventé un molde
        redondo
pero su figura era
        cuadrada.

Encontré cosas
donde no las había.
Inventé historias
que no existían.

Cuando callaste
penoso te miraba
porque ya sabía
el final que
me esperaba.

 

May 07, 2008

desde Blog de UsabilidadWeb.com.ar por Carlos (noreply@blogger.com)

Sun no cerrará el código de MySQL


Hace un tiempo la comunidad de código abierto se vio seriamente ofendida cuando Sun propuso cerrar partes del código MySQL para ofrece opciones pagadas a sus clientes corporativos. Luego de recibir una gran cantidad de duras críticas la compañía dijo que reconsideraria estos planes.

Recientemente el equipo de MySQL anunció oficialmente que no cerrará porciones de esta popular aplicación para bases de datos con el afán de mantener el acceso libre a todos sus componentes, incluyendo los diferentes mecanismos de codificación y compresión. Además, continuarán permitiendo add-ons comerciales de código cerrado creados por otras compañías junto con los add-ons gratuitos desarrollados por la comunidad. Este cambio es bienvenido por mucho, especialmente por aquellos que pensaba que este nuevo modelo tenía el potencial para destruir a MySQL.

Fuente: www.techspot.com
May 07, 2008

Oferta laboral

desde Argentina On Rails - Home por peterpunk

Hace un tiempo no era sencillo encontrar este tipo de ofertas laborales, ahora tampoco ;-)

Estamos buscando un programadro Rails con experiencia para un proyecto en funcionamiento, buen clima de trabajo, zona de microcentro y relación de dependencia con posiblidad de crecimiento para una empresa de telecomunicaciones.

Experiencia en BDD rspec,REST y OpenId es un plus.

Enviar mail con cv a jobs [ arroba ] virtualizar.com.ar

May 07, 2008

Inicializaci&oacute;n no estandar de objetos ActiveRecord

desde netFlux por nelson

Me estuve peleando con un modelo de ActiveRecord, porque tenía que manejar ciertos estados internos del modelo que no están en campos de la base de datos, sinó que son datos calculados cuando se carga un registro de la base de datos.

El primer intento lo hice haciendo una sobre escritura del método initialize de ActiveRecord pero muy pronto me di cuenta de que no funcionaba cuando se buscaba por un objeto con algún método find.

Luego de hacer muchas pruebas y que ninguna funcionara, terminé mirando la implementación de ActiveRecord a ver si encontraba alguna pista y si, ahí estaba.

Cuando se utiliza algún método de búsqueda, los objetos se instancian con un método llamado ‘instantiate’ y al finalizar se llama a dos callbacks si existen en la clase del modelo, que son :after_find y :after_initialize

Así que todo lo que tuve que hacer fue; mover el código de cálculo de estado del modelo a un método llamado ‘after_initialize’, y ahora anda todo perfecto !

May 07, 2008

PVN3 , que ganas de ir!

desde Santiago Lobos por Santiago Lobos

Nuevamente l@s chic@s de PalermoValley Nigh ya tienen fecha, hora y lugar para su tercer reunión, la cual se realizará el Jueves 15 de Mayo en el RestoLounge “GODOY” ubicado en Godoy Cruz y Paraguay (Capital Federal).

Así como ediciones anteriores, lamentablemente, tendré que dejarlo pasar por motivos laborales. De todas formas no descarto mi participación tarde o temprano.

Para quienes deseen participar, recomiendo se den una vueltita por Confirmá tu asistencia a la PalermoValley Night 3!.

En fin, espero sea la próxima …

May 06, 2008

Este blog ahora habla!

Como habrán podido observar hacen algunos días le puse un plugin al blog que permite poder escuchar con una voz sintetizada el texto escrito. El servicio es de vozme y me parece muy bueno, ya que se puede entender sin problemas todo el habla. Tiene varios idiomas para elegir entre ello el español.

Solo hace falta hacer click en "escuchar este post" y listo.

Si entramos al sitio directamente nos permite pegar o escribir un texto y escuchar el mismo. También hay herramientas para webmaster y un acceso directo que al ponerlos en favorito, nos hace traducir el texto que tengamos elegido.

El servicio esta bueno y me pareció interesante!. 

Vozme 

Tags:

May 06, 2008

Integrar Jad a NetBeans mediante NBJAD

desde Le Funes por lefunes
Si deseamos integrar el decompilador Jad dentro de NetBeans podremos hacerlo mediante el plugin NBJAD. En este post veremos como realizar esta integración
May 06, 2008

Bye, bye COM

desde Angel "Java" Lopez por lopez

La tecnología Component Object Model (COM) de Microsoft hace años que prácticamente no la uso, más que de forma escondida. En la situación actual de .NET y otras herramientas, no parece hacer falta más. Pero como por una década a todos nos enseñaron sobre componentes COM distribuidos, y stateless y stateful, y transacciones requeridas, y esas cosas (como Apartment Threading Model, algo que sólo existe en el universo donde un runtime de Visual Basic no es reentrante), creo interesante poner algunos puntos de la situación actual. No soy un experto en todo COM, pero recuerdo haber devorado su implementación, y la curiosa IUnknown, que fue una solución pragmática a la diversidad de lenguajes, a la resolución de binding en runtime, y la necesidad de comunicar programas:

- COM Surge de OLE, y éste de DDE, que a su vez nacen de Office y el embebido de documentos en otros documentos, para tener componentes que binariamente, sin dependencia de lenguaje y de otros temas, se puedan comunicar entre si, como cajas negras, mediante una interfaz bien definida, o descubrible en runtime.

- Aparecen componentes COM visibles, luego llamados ActiveX Controls, que cumplen una serie de interfaces para poder ser albergados en cualquier contenedor de ActiveX controls, como el Visual Basic clásico.

- Aparecio COM distribuido, con los conceptos de tener marcados los metodos o componentes, para manejar transacciones (Required, Required New....) Habrán visto aparecer también esos conceptos en J2EE y otros lados, en los noventa del siglo pasado.

- Pero la realidad, es que hoy por hoy, todo se puede hacer sin COM, incluso el manejo de transacciones. En .NET 1.x dependiamos de System.Enterprise (no recuerdo el namespace) que interactuaba con COM, pero con .NET 2, practicamente no se necesita COM (nada más en lo de más abajo, sin verlo directamente).

- Los componentes visuales ahora son .NET, y hay varias empresas que migraron sus ActiveX controls a .NET "puro", desde hace años.

- El manejo de transacciones ahora esta en System.Transaction (muy interesante que haya transacciones en objetos, y que tus objetos puedan tener un "rollback")

- El manejo de threads es hermoso en .NET .... a la Java... ;-)

- El manejo de comunicacion distribuida, con seguridad y demas, esta en manos de Windows Communication Foundation, o por lo menos, con Web Services o Remoting (este ultimo se le esta "soltando la mano" de parte de MS, todo esta puesto en WCF).

- La necesidad de registrar el componente en el Registry, y solamente una versión del componente, ha conseguido crear el infierno de las DLL (DLL Hell), que en .NET es prácticamente inexistente.

Asi que, de alguna manera, COM no es indispensable. Puedo hacer todo lo de COM con esto que fue apareciendo con el tiempo.

Aunque se recomienda tomar con pinzas lo que aparece en Wikipedia, leemos ahí sobre COM:

The COM platform has largely been superseded by the Microsoft .NET initiative, and Microsoft now focuses its marketing efforts on .NET. COM was often used to hook up complex, high performance code to front end code implemented in Visual Basic or ASP.

To some extent, COM is now deprecated in favor of .NET. Since .NET provides rapid development tools similar to Visual Basic for both Windows Forms and Web Forms with just-in-time compilation, back-end code can be implemented in any .NET Language including C#, Visual Basic and C++.

Le dan algo de esperanza:

Despite this, COM remains a viable technology with an important software base. As of this writing, Microsoft has no plans for discontinuing either COM or support for COM. It is also ideal for script control of applications such as Office or Internet Explorer since it provides an interface for calling COM object methods from a script rather than requiring knowing the API at compile time. The GUID system developed for COM has wide uses any time a unique ID is needed.

Información sobre COM en Microsoft:

http://www.microsoft.com/com/default.mspx

Seguiremos teniendo COM en varios programas de Microsoft, pero no parece haber necesidad de incorporarlos en nuestros propios desarrollos.

Nos leemos!

Angel "Java" Lopez
http://www.ajlopez.com/

May 05, 2008

Nic.ar delega dominios .edu.ar

NIC Argentina ha delegado la responsabilidad del control y la disponibilidad de los dominios .edu.ar a ARUI, la Asociación Redes de Interconexión Universitaria. Esta entidad ahora es la encargada de proveer todo lo referente a este dominio, al igual que agilizar la registración, modificación y actualización de los dominios.

Ojala ellos mejoren el sistema de registración que tienen.

 

Tags: , , , , , ,

May 05, 2008

Confusión: la red y la posmodernidad

desde Hipertextos [desde La Plata] por Christian Silva

Estoy confundido y me gusta. Me gusta por la calidad y la complejidad de la confusión. Confusión constructiva: de esas que si se clarifican abren muchas perspectivas, aportan lucidez o terminan en otra confusión derivada mucho más interesante aunque más difícil de dilucidar.

Todo empezó después de leer el post “Nada ya fue” de Rafael Cippolini. Un texto denso y estimulante, cargado de referencias. Donde plantea una serie de ideas muy interesantes que fundamentan una visión, desde mi punto de vista, posmoderna:

“Que maravillosa sensación saber que nada es para siempre, que lo universal es sólo una idea y que los rastros de toda esa provisoriedad pueden emocionarnos cuando deseamos. Claro, ya no es aquel pasado. Es otra materia. Las coyunturas de entonces quedaron momificadas y el presente linkea las nuevas audiciones y visiones con experiencias y un estado del mundo que entonces ni prefigurábamos.”

Y aquí es donde se presenta la confusión, porque tengo una mirada negativa de la posmodernidad, quizá influenciado por cierta lógica Saerina:

“Para mí la posmodernidad es un movimiento de reacción contra la vanguardia, digo bien “contra la vanguardia”, no después de la vanguardia, al decir pos pareciera que hubiese una fatalidad cronológica, pero es una reacción contra la vanguardia, creo que la vanguardia con sus actitudes excluyentes (a mi modo de ver totalmente justificadas) generó mucho resentimiento (…) entonces se produjo una reacción, al mismo tiempo el posmodernismo está muy ligado al mercado porque es la repetición al infinito de las formas y de los géneros ya perfectamente consolidados que tienden a transformarse en productos industriales.”

Y sin embargo no puedo estar más de acuerdo con la visión coherente y acertada que propone Cippolini, sobre todo, cuando plantéa un panorama tan claro de la red:

“Vivimos en una época de gigantesco redireccionamiento crítico. Como nunca, compartir información es ofrecerle un giro, situarla en otro espacio, exhibirla en un contexto diferente aunque siempre personalizado. La red es eso: un esquema de redireccionamientos ininterrumpidos e instantáneos, de producción de distorsiones customizadas.”

Quizá estoy mezclando peras con manzanas. Quizá son visiones complementarias. Quizás tenga que cambiar mi concepción de la posmodernidad. ¿…?

May 05, 2008

Popego autoblog

Some days ago, Popego launched a very interesting teaser for those with Friendfeed account. The idea is to show a very interesting view of your interests and the future of Popego. I recommend to take a peak to it, here is my public page. The idea of the autoblog is only to show the great functionalities of Popego. I think that these guys are doing great in providing a way con concentrate the interests of people digital self. Even when there are some other Web 2.0 (or Web 3.0 ?) sites that tries to do the same, Popego seems to find the right balance between al the components that are important for the matter. The functionality, design and the usability (a very important subject for the user) are incredible and will let the user have an amazing user experience. Send me your autoblogs in order to se the results.
May 05, 2008

Paradigma 08

desde Tordek por Tordek

S??bado y domingo 10 y 11 de mayo se realizar?? en Corrientes Capital Paradigma 08, Convenci??n de Anime, Manga, Comics y Juegos, en la Sociedad Japonesa, Rivadavia 1753, de 14 a 22.

Va a haber cosplay, karaoke, bandas, y, de las garras de la Quimera, mesas de Rol.

S??, se??ores, la Quimera sigue viva; ha despertado de su largo letargo (no hac??amos nada desde el ??ltimo V??rtice, en diciembre), y se viene con fuerza.

A todos los que est??n por la zona y les interese el tema, los invito a darse una pasada por el Stand de Quimera.

May 04, 2008

El último pelo

desde aurelianito por aurelianito (noreply@blogger.com)
Este hilarante blog habla de los calvos. Sus problemas y soluciones. Envidias y resentimientos. Gracias y tristezas. Recomiendo ampliamente a este blog, que es el único que conozco que tiene su propia canción. En fin, tómense unos minutos y ríanse un rato. Yo, como buen calvo que soy, lo recomiendo.

Happy hacking,
Aureliano.
May 03, 2008

Instalación de Hardy en la Macbook

desde Gabriel Patiño por Gabriel Patiño (noreply@blogger.com)
Estuve probando la instalación de Ubuntu Hardy en modo 32 bits en la MacBook, ya que había encontrado algunos problemas con la paca wifi al actualizar la versión de 64 bits.

La instalación fue sorprendentemente rápida, en unos 25 minutos la máquina estaba instalada y corriendo con la versión de 32 bits, pero tuve los mismos problemas con la placa wifi. Tuve que compilar los módulos a mano, pero no se asusten que es algo muy simple, solo un par de comandos.

Por ahora parece que me quedo con los 32 bits. El consumo de memoria es un poco menor, y aparentemente debe haber alguna diferencia en los drives de video (placa intel) ya que el X levanta un poquito más rápido.

Más allá del problema de la placa wifi, cabe destacar lo fácil y rápido que es instalar Ubuntu. En menos de media hora tenés un sistema funcionando con un sistema operativo de última generación, en el idioma que hayas elegido, y con todas las aplicaciones que un usuario normal pueda necesitar: suite de oficina, un navegador como la gente, mensajería instantánea, reproductor de medios, etc, etc.
May 03, 2008

Oí al pasar IX

desde brunovilches.com.ar por Bruno

Nunca estuve muy seguro de lo que las mujeres quieren decir cuando me miran. A veces creo que me interrogan y al cabo de un tiempo caigo en la cuenta de que en realidad me estaban respondiendo.

 

May 02, 2008

¿Apolíticos?

desde Hipertextos [desde La Plata] por Christian Silva
“En realidad, la filosofía nunca me importó, pero ése no es un problema. Su pregunta es: ¿por qué me interesa tanto la política? Si pudiera responder de una forma muy sencilla, diría lo siguiente: ¿por qué no debería interesarme? Es decir, qué ceguera, qué sordera, qué densidad de ideología debería cargar para evitar el interés por lo que probablemente sea el tema más crucial de nuestra existencia, esto es, la sociedad en la que vivimos, las relaciones económicas dentro de las que funciona y el sistema de poder que define las maneras, lo permitido y lo prohibido de nuestra conducta. Después de todo, la esencia de nuestra vida consiste en el funcionamiento político de la sociedad en la que nos encontramos.”

Michel Foucault en La naturaleza humana: justicia versus poder. Un debate con Noam Chomsky

Tener un espacio en la web: un blog o bitácora, implica ciertos riesgos. Y aunque afortunadamente no está en juego la integridad física, si lo está la integridad ética y moral. Es bastante común encontrar bloggers explícitamente apolíticos, que defienden argumentos y posturas desde una supuesta neutralidad. Ingenuos. Cómplices de una lógica perversa.

Martín Varsavsky es un blogger político, sus opiniones sobre la educación de elites, por ejemplo, evidencian una postura con la cual podemos estar de acuerdo o no, pero es una postura política evidente al fin.

Son lamentables aquellas opiniones (que no vale la pena mencionar) que postulan su actitud, supuestamente, apolítica como un valor, sin darse cuenta que la tienen y que lamentablemente no comprenden en su real dimensión. Hasta los posts más triviales que comentan un encuentro, un producto, un servicio, por ejemplo, son políticos.

Esta es una dimensión (¿casualmente?) poco valorada de los nuevos medios de publicación. Tener un blog implica que nos tengamos que cuestionar: que vamos a publicar, de que manera, en que momento, con que sentido.

No es ninguna novedad pero vale la pena repetirlo: no existen los apolíticos.

May 02, 2008

Load balancer minimalista en ruby (parte 2)

desde aurelianito por aurelianito (noreply@blogger.com)
En el post anterior mostré un load balancer que implementé en ruby. Ahora le agregué algo de manejo de errores y algo de fail-over para que sea más estable.

Este es el código nuevo:

#!/usr/bin/env ruby
require 'socket'

def usage
puts "Very simple balancer"
puts "balancer.rb port host1:port1 [host2:port2 ....]"
exit
end

def build_targets(argv)
argv.map do
|param|
result = param.split(":")
result[1] = result[1].to_i
result
end
end

class Balancer
def initialize(port, *targets)
@descriptors = []
@next_step = {}

@serverSocket = TCPServer.new( "", port )
@serverSocket.setsockopt( Socket::SOL_SOCKET, Socket::SO_REUSEADDR, 1 )
puts("Balancer started on port #{port}")

@descriptors << @serverSocket

@targets = targets
@current_out = 0
end

def next_out
out_socket = nil
until out_socket
begin
@current_out = (@current_out + 1) % @targets.length
descr = @targets[@current_out]
out_socket = TCPSocket.new(descr[0], descr[1])
rescue
# do nothing on purpose
end
end
out_socket
end

def accept_new_connection

incoming = @serverSocket.accept
outgoing = next_out

@next_step[incoming] = outgoing
@next_step[outgoing] = incoming

@descriptors += [ incoming, outgoing ]
end

def propagate(sock)
next_sock = @next_step[sock]
next_sock.write(sock.read_nonblock(1000 * 1000))
end

def finish_connection(sock)
next_sock = @next_step[sock]
[sock, next_sock].each do
|s|
begin
s.close
rescue Object => e
puts "Error closing socket: #{e.inspect}"
end
@descriptors.delete(s)
@next_step.delete(s)
end
end

def run
loop do
connections = select( @descriptors )
if connections
connections[0].each do
|sock|
if sock == @serverSocket then
accept_new_connection
else
begin
if sock.eof? then
finish_connection(sock)
else
propagate(sock)
end
rescue
finish_connection(sock)
end
end
end
end
end
end
end

trap("SIGINT") do
exit
end

usage if ARGV.length < 2
port = ARGV.shift.to_i
targets = build_targets(ARGV)

Balancer.new(port, *targets).run


Me parece que ahora pueden llegar a usarlo.

Happy hacking,
Aureliano.
May 02, 2008

Load balancer minimalista en ruby

desde aurelianito por aurelianito (noreply@blogger.com)
Update: Puse la versión más nueva en este post.

Ayer estuve inspirado y dediqué un poquito de mi tiempo a aprender un poco más sobre cómo manejar sockets. Hacía mucho tiempo que no programaba sockets en bajo nivel y nunca había necesitado usar select para manejar muchos al mismo tiempo. De hecho, la última vez que tuve que hacer algo parecido a un server que acepte muchas conexiones TCP lo hice en java 1.3, y en java 1.3 no hay select (agregaron algo parecido en java.nio, que apareció después).
Así que puse manos a la obra e hice un minicloncito de un load balancer en ruby.
Por supuesto que no hice todo. En particular, me comí el manejo de errores. Pero si hace round robin de conexiones y tiene menos de 100 líneas de código, lo que creo que lo hace un buen ejemplo de juguete sobre como manejar sockets en ruby.
Bueno, basta de cháchara, acá va el código completo:

#!/usr/bin/env ruby
require 'socket'

def usage
puts "Very simple balancer"
puts "balancer.rb port host1:port1 [host2:port2 ....]"
exit
end

def build_targets(argv)
argv.map do
|param|
result = param.split(":")
result[1] = result[1].to_i
result
end
end

class Balancer
def initialize(port, *targets)
@descriptors = []
@next_step = {}

@serverSocket = TCPServer.new( "", port )
@serverSocket.setsockopt( Socket::SOL_SOCKET, Socket::SO_REUSEADDR, 1 )
puts("Balancer started on port #{port}")

@descriptors << @serverSocket

@targets = targets
@current_out = 0
end

def next_out
@current_out = (@current_out + 1) % @targets.length
@targets[@current_out]
end

def accept_new_connection
out_descriptor = next_out

incoming = @serverSocket.accept
outgoing = TCPSocket.new(out_descriptor[0], out_descriptor[1])

@next_step[incoming] = outgoing
@next_step[outgoing] = incoming

@descriptors += [ incoming, outgoing ]
end

def propagate(sock)
next_sock = @next_step[sock]
next_sock.write(sock.read_nonblock(1000 * 1000))
end

def finish_connection(sock)
next_sock = @next_step[sock]
[sock, next_sock].each do
|s|
s.close
@descriptors.delete(s)
@next_step.delete(s)
end
end

def run
loop do
connections = select( @descriptors )
if connections
connections[0].each do
|sock|
if sock == @serverSocket then
accept_new_connection
else
if sock.eof? then
finish_connection(sock)
else
propagate(sock)
end
end
end
end
end
end
end

trap("SIGINT") do
exit
end

usage if ARGV.length < 2
port = ARGV.shift.to_i
targets = build_targets(ARGV)

Balancer.new(port, *targets).run

Para usarlo, copien todo el codigo a un archivo (como balancer.rb) y fijense en el cartel que explica los parámetros. El primer parámetro es el puerto donde escucha y los otros son pares host:port a los que tiene que conectarse alternativamente.

Bueno, eso es todo por ahora.

Happy hacking,
Aureliano.
May 02, 2008

Dell vende hardware con Ubuntu en Latinoamérica!

desde El Blog de Marcelo! por Marcelo (noreply@blogger.com)
Me parece que voy a ir guardando monedita por monedita... Dell está vendiendo a partir de ahora computadoras (la notebook Inspiron 1525 y la PC de escritorio 530MT) con Ubuntu 7.10 instalado!



A diferencia de algunas cadenas de electrodomésticos que venden PCs "con Linux" con la firme intención de que luego el cliente instale Windows sin licencia (ya que no están configuradas y ni siquiera todo el hardware funciona), en este caso ocurre lo contrario.

Dell certifica el SO con su hardware y ofrece soporte profesional (opcional) del SO por parte de Canonical (al menos en EEUU y Europa) de hasta 1 año. Ya es posible comprar, aunque por el momento por teléfono solamente, la opción de compra por la web estará disponible en unos días.

Link:
http://dellendirecto.com/archive/2008/02/21/la-espera-ha-terminado-dell-con-ubuntu-7-10-ya-est-disponible-en-latinoam-rica.aspx

Según un comentario del post de Dell, son bastante más baratas que las que vienen con Windows:

"Bueno, he llamado.

Luego de una espera de algunos minutos, muy amablemente el operador de dell me pasó el precio para la Inspiron 1525, con quemador de DVD y webcam integrada, por AR$ 2.870. Esta misma configuración con Windows cuesta casi 3.200, por lo que el ahorro es importante..."

Es más, están en precio! :-)

Y yo que no tenía notebook y estaba esperando a que Dell trajera esto para acá...

Actualización (02/05/2008):

Sólo para decir de que el comentario no es mío, sino sacado del mismo hilo de comentarios de la URL de Dell.

Por otra parte, ya está disponible la opción de comprar estos equipos con Ubuntu desde la misma web de Dell Argentina, con lo que se puede "jugar" con las diferentes opciones de configuración. Además, agregaron a la oferta de Dell+Ubuntu la línea XPS de notebooks (la de la gama más alta).

Jugando con las opciones del "carrito" de compras, llegué a una notebook Inspiron 1420 con Ubuntu contra una Inspiron 1525 con Windows Vista. Los resultados fueron que con exactamente el mismo equipamiento, la notebook Ubuntu valía AR$250 menos (no recuerdo bien cuánto, pero era algo así como AR$ 3500 contra AR$ 3750 de la que tenía Vista).

Para darse una idea, con esos AR$ 250 podía agregarle un disco de 160GB y un screen de "alta calidad" a 1440x900 (a diferencia del disco de 120GB y el screen de 1200x800, respectivamente).

Disclaimer: No tengo nada que ver con Dell, pero debo reconocer que les tengo simpatía porque son los únicos que me venden un producto que me gustaría (y mucho) comprar. Y eso que nunca compré nada de ellos....

Saludos!
Marcelo
May 01, 2008

desde Blog de UsabilidadWeb.com.ar por Carlos (noreply@blogger.com)
Disponibles solo para distribución comercial

Sun cerrará algunos componentes nuevos de MySQL


Por largo tiempo, todo el sistema MySQL ha sido distribuido en la modalidad de código abierto. Sun se dispone ahora a cerrar parte del código.

En el marco de una conferencia sobre MySQL realizada recientemente en Florida, Estados Unidos, trascendió que algunas partes de MySQL sólo serían ofrecidas a clientes corporativos que paguen una suscripción por el sistema de base de datos, y que éstos componentes sólo estarían disponibles como código abierto cerrado. Esto se aplicaría a determinadas soluciones de copias de seguridad, que serán incorporadas en la versión 5.1 de MySQL, que pronto será lanzada.

Durante muchos años, MySQL ha sido ofrecido como sistema de código fuente abierto. Sun, que anteriormente compró MySQL, ha recalcado en varias oportunidades que no tiene intención alguna de cambiar tal tradición.

Después de los anuncios hechos en Florida, Sun ha sido criticada en diversos blogs de partidarios del código abierto, que consideran que MySQL “podría alejarse de sus raíces".

David Axmark, cofundador de MySQL, intentó durante el fin de semana explicar los planes reales de Sun. Según especificó la compañía sólo intenta ofrecer algunos plug-ins, o extensiones, como una modalidad de código fuente cerrado.

“Estamos trabajando con la idea de que los plug-ins para usos como el cifrado y compresión, podrían ser de código cerrado. Sin embargo, continuará habiendo una API (Application Programming Interface) abierta, de forma que quienes lo deseen pueden hacer sus propias implementaciones también. Usted podrá seguir descargando todo el producto con una licencia GPL (GNU General Public License). La única excepción será estas extensiones, declaró Axmark, citado por ZD Net UK.

Según Axmark, la decisión de ofrecer MySQL propietario fue hecha con el fin de contribuir a la facturación de Sun.

Fuente: diarioti.com
April 30, 2008

Mikrotik News 9

Mikrotik ha sacado la revista bisemanal no. 9 con algunos anuncios interesantes:

Entre ellos los nuevos RouterBoard RB411A y RouterBoard RB433, el primero es una mejora del anterior 411 ya que tiene el doble de memoria (64MB) y trae una licencia Level4. El otro router será el que reemplazará al RB133 y el RB333, la perfomance el routerboard este es buena según las pruebas realizadas. También traer 64MB de ram.

Otro RB que hace su presentación es el RB450, este reemplazará al RB150 ya que es 5 veces mas rápido y encima cuesta lo mismo, además cabe en el mismo case y tiene los mismos esqueñas de montaje. Este dispositivo estará disponible en el mes de mayo. 

La revista también cuenta que el RB1000 ya esta liberado para su venta general, anteriormente costaba conseguir algún prototipo de estos, pero ahora ya esta masivamente en todos lados. 

Tags: , , , ,

April 30, 2008

desde Blog de UsabilidadWeb.com.ar por Carlos (noreply@blogger.com)

Masivo "hackeo" golpeó más de medio millón de páginas


Un hackeo masivo de páginas web ha ocurrido en las últimas horas afectando a medio millón de páginas web, incluyendo algunas tan importantes como la del Departamento de Seguridad Nacional de los EEUU.

Reseña el informativo especializado en tecnología Wired que el ataque, del tipo conocido como Inyección SQL (SQL Injection), se manifestó únicamente en sitios que utilizan el servidor web de Microsoft, IIS.

El servidor IIS permite la ejecución de comandos genéricos que no requieren el conocimiento de la estructura de las tablas de base de datos, pero la vulnerabilidad debe achacarse no a Microsoft sino a la falta de seguimiento de los estándares de programación por parte de los desarrolladores de los sitios web afectados, que debieron filtrar y “sanear” apropiadamente todos los espacios donde los usuarios pueden introducir data, tales como planillas y formularios.

El ataque comienza introduciendo en las bases de datos del site un código JavaScript. Cuando la base de datos vuelca su contenido en una página web, este código JS se ejecuta y solicita un script externo que podría afectar el computador de un usuario que visite esa página web.

"El ataque en sí mismo inyecta código malicioso JavaScript en cada uno de los campos de texto en su base de datos, y este JavaScript carga un script externo que puede comprometer el computador de un usuario" reseña Wired.

"La mayor parte de los sitios afectados han reparado sus problemas y aseguran haber solucionado los problemas subyacentes en el código. Sin embargo, si deseas no correr el riesgo hay una manera simple de evitar el problema: usar Firefox con la extensión NoScript. Dado que el ataque carga un script desde un dominio distinto al visitado, NoScript evitará que se corra" agrega.

Las personas afectadas que residan en los EEUU, recomienda el ejecutivo de Microsoft Bill Sisk, deberían llamar al FBI a reportar los ataques. No sabemos si esto lo dice Microsoft por “política”, o si efectivamente el organismo gubernamental puede hacer algo, especialmente si estos ataques se planearon desde fuera de los EEUU.

Fuente: Cadena Global
April 30, 2008

1 razón para no elegir a Firefox 3

Usa menos memoria que cualquier otro navegador, por lo que aumentarás la vida útil de tu ordenador

Visto en 10 razones para elegir Firefox 3.

April 30, 2008

Cobranzas truchas de Aguas Argentinas S.A - e.l. ???

desde Buanzolandia por Buanzo

Estimados lectores,

Es la 2da vez que recibo en mi casa una “intimacion” a pagar una deuda por parte de una empresa especializada en cobranzas llamada “Dottavio, Novello y Asociados”.

Es muy raro, porque es un papel amarillo, doblado en tres, pegado con un ganchito, enviado por la empresa “Fast Mail S.R.L” de Boulogne.

Nombran un 0800 al cual llamar, una direccion, que van a hacer acciones judiciales, etc, y en letra muy chica, aclarando “Encontramos oporturno informarle que si quiere, puede pagar en cuotas, evitando los gatos que implicaria el i nicio de acciones legales”. Je.

Y obvio, dicen que podes pagar por Pago Facil… pero la cartita no tiene ni un codigo de barras…

Quieren verla? Aqui esta, hagan click para verla. El reverso es 100% amarillo sin escrituras.

Esto suena a avivada criolla, porque la anterior cartita la recibi hace 6 meses.

Que onda esto?

April 30, 2008

Tren para todos

desde Exequiel Catalani por exequielc
Salió una nota de Pino Solanas frente al perjudicial anuncio del contrato del “tren bala”. Por Pino Solanas La sociedad argentina padece uno de los más caros e inseguros sistemas de transporte, con catastróficas consecuencias humanas y económicas. En 2007 el transporte vial le ocasionó al país la mayor cantidad de accidentes de su historia, con más [...]