Archivo para la categoría "Open Source"

[Resuelto] Problema al instalar los Guest Additions de VBox en Fedora 13   Leave a comment

Ya que necesito una distro que se instale rápido y no tenga mucha complicación para manejar paquetes decidí usar Fedora porque en el trabajo lidio bastante con RHEL/CentOS y Ubuntu no me agrada (para los que pregunten :P).

La instalación del sistema fue muy suave, no hubo mayor complicación, pero al tratar de instalar los paquetes adicionales de VirtualBox el Wizard de consola no pudo compilar los módulos del Kernel y eso que tenía instalados los Kernel-Headers, Kernel-Debug y gcc, el error decía que mi máquina no tenía lo necesario para compilar los módulos. Luego de buscar un buen rato di con la solución en éste foro:

http://forums.virtualbox.org/viewtopic.php?f=3&t=26376

La solución es usar el Kernel PAE en ves del que trae por defecto. Para simplificar el comando sería:

yum install kernel-headers kernel-PAE.i686 kernel-PAE-devel.i686 gcc

Correr el instalador de los Guest Additions, verificar los módulos cargados:

lsmod | grep vbox

y finalmente reiniciar el X 🙂

Publicado agosto 22, 2010 por Sergio D. Rodríguez Inclan en Linux, Open Source

Etiquetado con

Enviar un correo usando el SMTP de Gmail, y Ruby + ActionMailer   3 comments

Desde hace muchos dias he estado buscando la manera de enviar correos usando Ruby, probe con varios ejemplos de internet, usando gemas y demas, ninguno funciono, hasta ahora.

El principal problema de usar Gmail, es que necesita autentificar por SSL/TLS, pero encontre un codigo en la lista de usuarios de Rails de Vancouver, lo modifique un poco, lo probe y voila! funciona de mil maravillas.

Aqui esta el archivo de correo (message.rb):

require action_mailer
require smtp_tls

class AnnounceMailer < ActionMailer::Base

def message(recipient)
from tu_correo@loquesea.com
recipients recipient
subject Aca va el subject
body <<EOS
Hola,

Este es un mensaje de muestra.

Saludos.
EOS
end
end

# Probar si se creo bien imprimiendo el mensaje.
puts AnnounceMailer.create_message( receptor@loquesea.com )

ActionMailer::Base.smtp_settings = {
:address => smtp.gmail.com,
:port => 587,
:authentication => :plain,
:user_name => tuUsuariode@gmail.com,
:password => secreto
}

# Enviar el mensaje
AnnounceMailer.deliver_message( receptor@loquesea.com )

Y aqui esta la libreria para manejar el SMTP con TLS (smtp_tls.rb):

<font color=”#a020f0″>require</font>&nbsp;<font color=”#6a5acd”>&quot;</font><font color=”#ff00ff”>openssl</font><font color=”#6a5acd”>&quot;</font><br>
<font color=”#a020f0″>require</font>&nbsp;<font color=”#6a5acd”>&quot;</font><font color=”#ff00ff”>net/smtp</font><font color=”#6a5acd”>&quot;</font><br>
<br>
<font color=”#2e8b57″><b>Net</b></font>::<font color=”#2e8b57″><b>SMTP</b></font>.class_eval <font color=”#a52a2a”><b>do</b></font><br>
<font color=”#a52a2a”><b>private</b></font><br>
<font color=”#a020f0″>def</font>&nbsp;<font color=”#008b8b”>do_start</font>(helodomain, user, secret, authtype)<br>
<font color=”#a52a2a”><b>raise</b></font>&nbsp;<font color=”#2e8b57″><b>IOError</b></font>, <font color=”#6a5acd”>'</font><font color=”#ff00ff”>SMTP session already started</font><font color=”#6a5acd”>'</font>&nbsp;<font color=”#a52a2a”><b>if</b></font>&nbsp;<font color=”#008b8b”>@started</font><br>
check_auth_args user, secret, authtype <font color=”#a52a2a”><b>if</b></font>&nbsp;user <font color=”#a52a2a”><b>or</b></font>&nbsp;secret<br>
<br>
sock = timeout(<font color=”#008b8b”>@open_timeout</font>) { <font color=”#2e8b57″><b>TCPSocket</b></font>.open(<font color=”#008b8b”>@address</font>, <font color=”#008b8b”>@port</font>) }<br>
<font color=”#008b8b”>@socket</font>&nbsp;= <font color=”#2e8b57″><b>Net</b></font>::<font color=”#2e8b57″><b>InternetMessageIO</b></font>.new(sock)<br>
<font color=”#008b8b”>@socket</font>.read_timeout = <font color=”#ff00ff”>60</font>&nbsp;<font color=”#0000ff”>#@read_timeout</font><br>
<font color=”#0000ff”>#@socket.debug_output = STDERR #@debug_output</font><br>
<br>
check_response(critical { recv_response() })<br>
do_helo(helodomain)<br>
<br>
<font color=”#a52a2a”><b>if</b></font>&nbsp;starttls<br>
&nbsp;&nbsp;<font color=”#a52a2a”><b>raise</b></font>&nbsp;<font color=”#6a5acd”>'</font><font color=”#ff00ff”>openssl library not installed</font><font color=”#6a5acd”>'</font>&nbsp;<font color=”#a52a2a”><b>unless</b></font>&nbsp;<font color=”#a52a2a”><b>defined?</b></font>(<font color=”#2e8b57″><b>OpenSSL</b></font>)<br>
&nbsp;&nbsp;ssl = <font color=”#2e8b57″><b>OpenSSL</b></font>::<font color=”#2e8b57″><b>SSL</b></font>::<font color=”#2e8b57″><b>SSLSocket</b></font>.new(sock)<br>
&nbsp;&nbsp;ssl.sync_close = <font color=”#ff00ff”>true</font><br>
&nbsp;&nbsp;ssl.connect<br>
&nbsp;&nbsp;<font color=”#008b8b”>@socket</font>&nbsp;= <font color=”#2e8b57″><b>Net</b></font>::<font color=”#2e8b57″><b>InternetMessageIO</b></font>.new(ssl)<br>
&nbsp;&nbsp;<font color=”#008b8b”>@socket</font>.read_timeout = <font color=”#ff00ff”>60</font>&nbsp;<font color=”#0000ff”>#@read_timeout</font><br>
&nbsp;&nbsp;<font color=”#0000ff”>#@socket.debug_output = STDERR #@debug_output</font><br>
&nbsp;&nbsp;do_helo(helodomain)<br>
<font color=”#a52a2a”><b>end</b></font><br>
<br>
authenticate user, secret, authtype <font color=”#a52a2a”><b>if</b></font>&nbsp;user<br>
<font color=”#008b8b”>@started</font>&nbsp;= <font color=”#ff00ff”>true</font><br>
<font color=”#a52a2a”><b>ensure</b></font><br>
<font color=”#a52a2a”><b>unless</b></font>&nbsp;<font color=”#008b8b”>@started</font><br>
&nbsp;&nbsp;<font color=”#0000ff”># authentication failed, cancel connection.</font><br>
&nbsp;&nbsp;<font color=”#008b8b”>@socket</font>.close <font color=”#a52a2a”><b>if</b></font>&nbsp;<font color=”#a52a2a”><b>not</b></font>&nbsp;<font color=”#008b8b”>@started</font>&nbsp;<font color=”#a52a2a”><b>and</b></font>&nbsp;<font color=”#008b8b”>@socket</font>&nbsp;<font color=”#a52a2a”><b>and</b></font>&nbsp;<font color=”#a52a2a”><b>not</b></font>&nbsp;<font color=”#008b8b”>@socket</font>.closed?<br>
&nbsp;&nbsp;<font color=”#008b8b”>@socket</font>&nbsp;= <font color=”#ff00ff”>nil</font><br>
<font color=”#a52a2a”><b>end</b></font><br>
<font color=”#a020f0″>end</font><br>
<br>
<font color=”#a020f0″>def</font>&nbsp;<font color=”#008b8b”>do_helo</font>(helodomain)<br>
&nbsp;<font color=”#a52a2a”><b>begin</b></font><br>
&nbsp;&nbsp;<font color=”#a52a2a”><b>if</b></font>&nbsp;<font color=”#008b8b”>@esmtp</font><br>
&nbsp;&nbsp;&nbsp;&nbsp;ehlo helodomain<br>
&nbsp;&nbsp;<font color=”#a52a2a”><b>else</b></font><br>
&nbsp;&nbsp;&nbsp;&nbsp;helo helodomain<br>
&nbsp;&nbsp;<font color=”#a52a2a”><b>end</b></font><br>
<font color=”#a52a2a”><b>rescue</b></font>&nbsp;<font color=”#2e8b57″><b>Net</b></font>::<font color=”#2e8b57″><b>ProtocolError</b></font><br>
&nbsp;&nbsp;<font color=”#a52a2a”><b>if</b></font>&nbsp;<font color=”#008b8b”>@esmtp</font><br>
&nbsp;&nbsp;&nbsp;&nbsp;<font color=”#008b8b”>@esmtp</font>&nbsp;= <font color=”#ff00ff”>false</font><br>
&nbsp;&nbsp;&nbsp;&nbsp;<font color=”#008b8b”>@error_occured</font>&nbsp;= <font color=”#ff00ff”>false</font><br>
&nbsp;&nbsp;&nbsp;&nbsp;<font color=”#a52a2a”><b>retry</b></font><br>
&nbsp;&nbsp;<font color=”#a52a2a”><b>end</b></font><br>
&nbsp;&nbsp;<font color=”#a52a2a”><b>raise</b></font><br>
<font color=”#a52a2a”><b>end</b></font><br>
<font color=”#a020f0″>end</font><br>
<br>
<font color=”#a020f0″>def</font>&nbsp;<font color=”#008b8b”>starttls</font><br>
getok(<font color=”#6a5acd”>'</font><font color=”#ff00ff”>STARTTLS</font><font color=”#6a5acd”>'</font>) <font color=”#a52a2a”><b>rescue</b></font>&nbsp;<font color=”#a52a2a”><b>return</b></font>&nbsp;<font color=”#ff00ff”>false</font><br>
<font color=”#a52a2a”><b>return</b></font>&nbsp;<font color=”#ff00ff”>true</font><br>
<font color=”#a020f0″>end</font><br>
<br>
<font color=”#a020f0″>def</font>&nbsp;<font color=”#008b8b”>quit</font><br>
<font color=”#a52a2a”><b>begin</b></font><br>
&nbsp;&nbsp;getok(<font color=”#6a5acd”>'</font><font color=”#ff00ff”>QUIT</font><font color=”#6a5acd”>'</font>)<br>
<font color=”#a52a2a”><b>rescue</b></font>&nbsp;<font color=”#2e8b57″><b>EOFError</b></font>, <font color=”#2e8b57″><b>OpenSSL</b></font>::<font color=”#2e8b57″><b>SSL</b></font>::<font color=”#2e8b57″><b>SSLError</b></font><br>
<font color=”#a52a2a”><b>end</b></font><br>
<font color=”#a020f0″>end</font><br>
<font color=”#a52a2a”><b>end</b></font><br>
</font><

require openssl
require net/smtp

Net::SMTP.class_eval do
private
def do_start(helodomain, user, secret, authtype)
raise IOError, SMTP session already started if @started
check_auth_args user, secret, authtype if user or secret

sock = timeout(@open_timeout) { TCPSocket.open(@address, @port) }
@socket = Net::InternetMessageIO.new(sock)
@socket.read_timeout = 60 #@read_timeout
#@socket.debug_output = STDERR #@debug_output
check_response(critical { recv_response() })
do_helo(helodomain)
if starttls
raise openssl library not installed unless defined?(OpenSSL)
ssl = OpenSSL::SSL::SSLSocket.new(sock)
ssl.sync_close = true
ssl.connect
@socket = Net::InternetMessageIO.new(ssl)
@socket.read_timeout = 60 #@read_timeout
#@socket.debug_output = STDERR #@debug_output
do_helo(helodomain)
end
authenticate user, secret, authtype if user
@started = true
ensure
unless @started
# authentication failed, cancel connection.
@socket.close if not @started and @socket and not @socket.closed?
@socket = nil
end
end

def do_helo(helodomain)
begin
if @esmtp
ehlo helodomain
else
helo helodomain
end
rescue Net::ProtocolError
if @esmtp
@esmtp = false
@error_occured = false
retry
end
raise
end
end

def starttls
getok(STARTTLS) rescue return false
return true
end

def quit
begin
getok(QUIT)
rescue EOFError, OpenSSL::SSL::SSLError
end
end
end

Para que funcione, se necesita la libreria OpenSSL instalada y la gema ActionMailer o Ruby On Rails que la trae en el paquete, si se usa Windows podria probar con Cygwin.

Espero les sea de utilidad.

PD: Siento las faltas ortograficas estoy en teclado ingles y sin ganas de modificar las X a espaniol 😛

Codigo  original de  http://bit.ly/9r8cx1

Publicado enero 31, 2010 por Sergio D. Rodríguez Inclan en General, Open Source, Ruby & Rails

Etiquetado con

Gwibber 2.0 upcoming   5 comments

I have been working maintaining the Gwibber package on Gentoo for a while as a proxy, piteously, it could not get the main tree over the 0.7 version, but it is actively maintained on my personal repository at Gitorious. But what is Gwibber? for all the people who don’t know what is it, this is the definition given in it’s main page at Launchpad:

Gwibber is an open source microblogging client for GNOME developed with Python and GTK. It supports Twitter, Jaiku, Identi.ca, Facebook, Flickr, Digg, and RSS.

What is microblogging? you are invited to check Wikipedia (click here) for a better definition. Twitter, Identi.ca, etc., are networks where you can post tiny commentaries (less than 240 characters) but it’s completely adictive (it keeps me away from posting to my blog :/ ), you can follow any number of persons just adding them to your account, and, if your commentaries are interesting, other people will add you to their accounts. Actually Gwibber supports more networks than that definition says.

Last days two good things happened, the first was the dev (neurogeek) which does the commits for me went back from his vacations so newer versions of Gwibber will be available on the tree, the second is the upcoming of the 2.0 version with a new UI (commented by @BUGabundo), right now Gwibber looks like this:

Gwibber 1.2.0

Forget the missing icons I was hacking it a bit and lost them 😛

Any time soon Gwibber 2.0 will arribe with new UI, new functionalities and of course new networks to join, here you have a picture of what it is gonna be:

Gwibber 2.0

Gwibber 2.0

As you can see, a lot of UI improvementes were done, a side bar with all the network streams, new icons and … many more.

If you want to follow the development and the releases here are a few links you can visit:

Gwibber’s wishlist:
https://bugs.launchpad.net/gwibber/+bug/325046

Montly Snapshot I make of Gwibber and it’s dependencies:
http://dev.gentooexperimental.org/~zerox/

Gwibber’s open bug at Gentoo’s Bugzilla:
http://bugs.gentoo.org/show_bug.cgi?id=261160

My overlay on Gitorious:
http://gitorious.org/gentoo-ebuilds-maintenance/

Segphault’s screenshots:
http://www.scrnshots.com/users/segphault/screenshots/171554

La queja del mes   Leave a comment

Sí he de quejarme… pues de un tiempo a esta parte me he hecho un usuario asíduo de Twitter; he estado usando Twitterfox que cumple bastante bien su función, pero, ya tengo casi llena la barra de applets de mi Firefox. He buscado por todo portage y ni un solo cliente para Twitter instalable… por lo menos en estable y ~arch; no he buscado en overlays. “What a shame!”

Pero, después de todo, no hay nada que me impida instalarme un cliente en mi repositorio local, y me dí a la tarea de buscar por Google un buen cliente; no hay muchos que me hayan gustado, terminé eligiendo a 2, pwytter y gtwitter, el primero ¡no funciona!, está codificado en Windows y… no funciona por lo menos en Gentoo. El segundo, funciona bien, salvo que agrega medio Gnome y mil librerías de Mono :/ y ¡NO! voy a instalar esa desgracia derivada de .NET incluído Gnome así que sólo lo probé en un chroot; pero además está roto, no recupera los mensajes de mi lista de contáctos, una vez más, qué desilusión, de todas maneras está disponible en Sunrise.

Gracias a mi amigo Juanfra que me sugirió Gwibber, aunque está en python y es otro de los que agregan medio Gnome, por lo menos no usa Mono y tiene una pinta muy bonita; actualmente ya está en disponible ¡en Portage! junto con la librería pywebkitgtk, todo gracias a Neurogeek que aceptó hacer de proxy para que yo la mantenga.

Aquí está una captura de Gwibber recién salido del horno 🙂

De Screenshots

Actualmente y también gracias a JuanFra, estoy probando qwit, otro cliente pero en base a Qt4, aún está verde, pero espero terminarlo pronto.

Publicado diciembre 8, 2008 por Sergio D. Rodríguez Inclan en General, Gentoo, Linux, Open Source, Software Libre

Etiquetado con , , ,

Coloquio 2008 finalizado   Leave a comment

El día de ayer se realizó exitosamente el Coloquio organizado por el canal #supremos y Puntolibre.org. Las exposiciones se llevaron a cabo con total normalidad y los asistentes aportaron gran cantidad de preguntas interesantes; por mi parte realicé una pequeña charla de Gentoo en terminos generales, he de decir que la mayoría de los usuarios piensan aún que es un sistema muy difícil de manejar… tenemos que trabajar en ese aspecto 😉

Los logs de las conferencias pueden encontrarlos acá.

Opino que deberían organizarse más actividades como ésta así los usuarios noveles puedan adentrarse más en los conceptos tanto técnicos e ideológicos del Software Libre.

Publicado diciembre 1, 2008 por Sergio D. Rodríguez Inclan en Gentoo, Linux, Open Source, Software Libre

Etiquetado con , ,