Sebastian Bassi: La bajada mas rápida de la historia

   Publicado:

Esta bajada fue tan pero tan rápida que no lo van a poder creer: 20Mb en menos de 1 segundo. Para darse una idea, es mucho mas rápido que si hubiese transferido archivos entre mis computadoras.
Vean:

root@ubuntu:~/yacy# wget http://javadl.sun.com/webapps/download/AutoDL?BundleId=31611
--18:23:30-- http://javadl.sun.com/webapps/download/AutoDL?BundleId=31611
=> `AutoDL?BundleId=31611'
Resolving javadl.sun.com... 72.5.124.92
Connecting to javadl.sun.com|72.5.124.92|:80... connected.
HTTP request sent, awaiting response... 302 Moved Temporarily
Location: http://dl8-cdn-01.sun.com/s/[EDITADO]=jre-6u14-linux-i586.bin [following]
--18:23:31-- http://dl8-cdn-01.sun.com/s/[EDITADO]=jre-6u14-linux-i586.bin
=> `jre-6u14-linux-i586.bin?e=124[EDITADO]=jre-6u14-linux-i586.bin'
Resolving dl8-cdn-01.sun.com... 68.142.123.45, 68.142.123.166
Connecting to dl8-cdn-01.sun.com|68.142.123.45|:80... connected.
HTTP request sent, awaiting response... 200 OK
Length: 20,851,822 (20M) [application/octet-stream]

100%[====================================>] 20,851,822 71.24M/s

18:23:31 (71.24 MB/s) - `jre-6u14-linux-i586.bin?e=1248[EDITADO]=jre-6u14-linux-i586.bin' saved [20851822/20851822]

Nota: Puse [EDITADO] en algunos lugares para que no se vaya el texto tan a la derecha y tape datos de la columna que está ahi.

Mi única explicación es que mi servidor (que está en Linode) esté en el mismo datacenter que el sitio que estoy bajando (sun.com). ¿Como puedo saber si sun.com está en el mismo datacenter de Linode.com? Linode está en "The Planet".

Carlos Joel Delgado Pizarro: Hello world!

   Publicado:

En este blog iré publicando todo lo que vaya aprendiendo en Python desde lo mas sencillo, hasta lo mas lejos que llegue, todo lo que haga estará sobre Linux (Ubuntu, Mandriva, Debian).


print "Hello world"


Sebastian Bassi: Montando la ola (Google Wave) [EDITADO]

   Publicado:

Me acaba de llegar la confirmación que podré probar Google Wave como developer, me llegó un email con un link para llenar un formulario (hecho con Google Docs) y al final dice que me darán el user y el password:


Si no conocen que es Google Wave, les recomiendo este video:



En resumen es una combinación entre email, foro, wiki, IM y procesador de texto en un solo programa, lo que crearia toda una nueva dinamica de trabajo, al menos para quienes puedan adaptarse a ella, ya que no preveo facil al transición (todavia hay gente que rechaza toda herramienta colaborativa mas alla de enviar .docs adjuntos por email). Otra ventaja es que tendrá una implementación de referencia open source cosa que cualquier pueda instalarlo en su servidor asi no existe mas la excusa (válida por cierto) de "no quiero dejarle los datos a Google".

Nuevos datos:

Ya la empecé a usar. Es realmente increible, a pesar de lo buggy que está!. Amplien la foto de abajo para ver como es:


Sebastian Bassi: Lo que necesitas saber de los conectores de video

   Publicado:

Escribi este Knol sobre los conectores de video. Me refiero a esas fichas de colores que hay detras de los TV, proyectores, receptores satelitales (DirecTV), DVDs, etc.


Mi grabador de DVD tiene estos (A quien le importara?):






Sebastian Bassi: El cumpleaños de la gripe A

   Publicado:

dsc02861
Originally uploaded by sbassi
No es que la gripe cumpla un año, sino que como hay epidemia (o pandemia), Máximo hizo un minicumpleaños con solo 2 amigos (y nosotros).
La torta pidio que sea "de Fangio" (???). Los signos de pregunta son porque no sabemos como se le ocurrió eso, quizas porque sea Balcarceño?
Aca está el albúm del cumple:
Album cumple Maximo 2009

San Cayetano: Momentos del SanCa

   Publicado:

¡Y dale con el mismo título! ¿No tenés otro para ponerle?
Lo importante es el momento, no el título. XD

 

Cada jornada que pasa va poniendo más interesante al curso. Ahora estamos en receso vacacional y por la gripe A nos tocó un mes completo. Cada uno en nuestras casas estamos realizando tareas para no perder el ritmo y seguir caminando hacia la meta que se va acercando un poquito más.

Hace poquito dejamos a un costado la CLI y empezamos a programar ventanitas, también conocida como GUI con la ayuda de wxpython.

Dos fotos que ilustran un momento de la merienda colectiva donde festejamos el cumpleaños de un compañero.

Cumpleaños en el SanCa

Cumpleaños en el SanCa


Cumpleaños en el SanCa

Cumpleaños en el SanCa


Francisco Malbrán: Cuchillas en las sienes

   Publicado:

Llueve a pedradas la hipocresía
En este desierto sin sombra
Va haciendo trizas la carne
Sin pudor ni refreno

Ruge ya el sismo entre las certezas
Cuchillas nadando en las sienes
Sangra la fe de los creyentes
Aúlla el poder del pederasta

¿Quién será el gran afortunado
que reciba hoy tu infortunio?
Tu ofrenda de ojos vendados
Tu delirio humano más puro

La paradoja del sacrificio
Por una causa especulada
Fluye como si no entendiera
Lo incoherente de su esencia

Ay, corazón inocente
Cómo esquivar la locura
De ver tu construcción gentil
Fermentada de sarcasmo

Ay, corazón imbécil
Admirable hasta el desprecio
Loable hasta la traición
Inconciente hasta la muerte

Toma la aguja espinada
Y otra vez cría suturas
Toma el líquido sediento
Y otra vez
Cierra una herida con fuego

San Cayetano: WIDGETS

   Publicado:

Estos son los Widgets que venimos aprendiendo hasta el momento.
Le saque foto a cada cosa para qe qede mas lindo..
espero ke les guste..

WX.FRAME


# -*- coding: UTF8 -*-

import wx

class App(wx.App):
    def OnInit(self):
        self.ventana = wx.Frame(parent = None, title = u'Examen Medico', size = (300,400), pos = (320,150))
        self.ventana.Show()
        return True
aplicacion = App()
aplicacion.MainLoop()

wxFrame

WX.PANEL


# -*- coding: UTF8 -*-

import wx

class App(wx.App):
    def OnInit(self):
        self.ventana = wx.Frame(parent = None, title = u'Examen Medico', size = (300,400), pos = (320,150))
        panel = wx.Panel(self.ventana, -1)
        self.ventana.Show()
        return True
aplicacion = App()
aplicacion.MainLoop()

wxPanel

WX.STATICTEXT


# -*- coding: UTF8 -*-

import wx

class App(wx.App):
    def OnInit(self):
        self.ventana = wx.Frame(parent = None, title = u'Examen Medico', size = (300,400), pos = (320,150))
        panel = wx.Panel(self.ventana, -1)
        datos = wx.StaticText(panel, -1, u'Datos del empleado: ', pos = (20,20))
        apellido = wx.StaticText(panel, -1, u'Apellido: ', pos = (20,50))
        self.ventana.Show()
        return True
aplicacion = App()
aplicacion.MainLoop()

wxStaticText

WX.TEXTCTRL


# -*- coding: UTF8 -*-

import wx

class App(wx.App):
    def OnInit(self):
        self.ventana = wx.Frame(parent = None, title = u'Examen Medico', size = (300,400), pos = (320,150))
        panel = wx.Panel(self.ventana, -1)
        datos = wx.StaticText(panel, -1, u'Datos del empleado: ', pos = (20,20))
        apellido = wx.StaticText(panel, -1, u'Apellido: ', pos = (20,50))
        self.cuadro_apellido = wx.TextCtrl(panel, -1, '', pos = (90 , 45), size = (150,-1))
        ventana.Show()
        return True

aplicacion = App()
aplicacion.MainLoop()

wxTextCtrl

WX.TEXTCTRL (con multilinea)


# -*- coding: UTF8 -*-

import wx

class App(wx.App):
    def OnInit(self):
        self.ventana = wx.Frame(parent = None, title = u'Examen Medico', size = (300,400), pos = (320,150))
        panel = wx.Panel(self.ventana, -1)
        datos = wx.StaticText(panel, -1, u'Datos del empleado: ', pos = (20,20))
        apellido = wx.StaticText(panel, -1, u'Apellido: ', pos = (20,50))
        self.cuadro_apellido = wx.TextCtrl(panel, -1, '', pos = (90 , 45), size = (150,-1))
        observaciones = wx.StaticText(panel, -1, u'Obs: ', pos = (20,110))
        cuadro_obs = wx.TextCtrl(panel, -1, '', pos = (90,105), size = (150,80), style = wx.TE_MULTILINE)
        self.ventana.Show()
        return True

aplicacion = App()
aplicacion.MainLoop()

wxtextctrlmultilinea

WX.BUTTON


# -*- coding: UTF8 -*-

import wx

class App(wx.App):
    def OnInit(self):
        self.ventana = wx.Frame(parent = None, title = u'Examen Medico', size = (300,400), pos = (320,150))
        panel = wx.Panel(self.ventana, -1)
        datos = wx.StaticText(panel, -1, u'Datos del empleado: ', pos = (20,20))
        apellido = wx.StaticText(panel, -1, u'Apellido: ', pos = (20,50))
        self.cuadro_apellido = wx.TextCtrl(panel, -1, '', pos = (90 , 45), size = (150,-1))
        boton_aceptar = wx.Button(panel, -1, u'Aceptar', pos = (200,350))
        boton_cancelar = wx.Button(panel, -1, u'Cancelar', pos = (100,350))
        ventana.Show()
        return True

aplicacion = App()
aplicacion.MainLoop()

wxButton

WX.COMBOBOX


# -*- coding: UTF8 -*-

import wx

class App(wx.App):
    def OnInit(self):
        self.ventana = wx.Frame(parent = None, title = u'Examen Medico', size = (300,400), pos = (320,150))
        panel = wx.Panel(self.ventana, -1)
        datos = wx.StaticText(panel, -1, u'Datos del empleado: ', pos = (20,20))
        apellido = wx.StaticText(panel, -1, u'Apellido: ', pos = (20,50))
        self.cuadro_apellido = wx.TextCtrl(panel, -1, '', pos = (90 , 45), size = (150,-1))
        sexo = wx.StaticText(panel, -1, u'Sexo: ', pos = (20,80))
        sexolista = [u'F', u'M']
        cuadro_sexo = wx.ComboBox(panel, -1, '', (90,75), (150,-1), sexolista, wx.CB_DROPDOWN | wx.CB_READONLY)
        boton_aceptar = wx.Button(panel, -1, u'Aceptar', pos = (200,350))
        boton_cancelar = wx.Button(panel, -1, u'Cancelar', pos = (100,350))
        ventana.Show()
        return True

aplicacion = App()
aplicacion.MainLoop()

wxcombobox

WX.COMBOBOX (editable.. se puede agregar algo)


# -*- coding: UTF8 -*-

import wx

class App(wx.App):
    def OnInit(self):
        self.ventana = wx.Frame(parent = None, title = u'Examen Medico', size = (300,400), pos = (320,150))
        panel = wx.Panel(self.ventana, -1)
        datos = wx.StaticText(panel, -1, u'Datos del empleado: ', pos = (20,20))
        apellido = wx.StaticText(panel, -1, u'Apellido: ', pos = (20,50))
        self.cuadro_apellido = wx.TextCtrl(panel, -1, '', pos = (90 , 45), size = (150,-1))
        sexo = wx.StaticText(panel, -1, u'Sexo: ', pos = (20,80))
        sexolista = [u'F', u'M']
        cuadro_sexo = wx.ComboBox(panel, -1, '', (90,75), (150,-1), sexolista, wx.CB_DROPDOWN )
        boton_aceptar = wx.Button(panel, -1, u'Aceptar', pos = (200,350))
        boton_cancelar = wx.Button(panel, -1, u'Cancelar', pos = (100,350))
        ventana.Show()
        return True

aplicacion = App()
aplicacion.MainLoop()

wxcombobox

WX.MESSADEDIALOG y WX.EVT.BUTTON (ponerle funcion a los botones!)


# -*- coding: UTF8 -*-

import wx

class App(wx.App):
    def OnInit(self):
        self.ventana = wx.Frame(parent = None, title = u'Examen Medico', size = (300,400), pos = (320,150))
        panel = wx.Panel(self.ventana, -1)
        datos = wx.StaticText(panel, -1, u'Datos del empleado: ', pos = (20,20))
        apellido = wx.StaticText(panel, -1, u'Apellido: ', pos = (20,50))
        self.cuadro_apellido = wx.TextCtrl(panel, -1, '', pos = (90 , 45), size = (150,-1))
        sexo = wx.StaticText(panel, -1, u'Sexo: ', pos = (20,80))
        sexolista = [u'F', u'M']
        cuadro_sexo = wx.ComboBox(panel, -1, '', (90,75), (150,-1), sexolista, wx.CB_DROPDOWN)
        observaciones = wx.StaticText(panel, -1, u'Obs: ', pos = (20,110))
        cuadro_obs = wx.TextCtrl(panel, -1, '', pos = (90,105), size = (150,80), style = wx.TE_MULTILINE)
        edad = wx.StaticText(panel, -1, u'Edad: ', pos = (20,200))
        self.cuadro_edad = wx.SpinCtrl(panel, -1, pos = (90,195))
        self.cuadro_edad.SetRange(0,100)
        fecha_nacimiento = wx.StaticText(panel, -1, 'F Nac', pos = (20,230))
        cuadro_nacimiento = wx.DatePickerCtrl(panel, -1, pos = (90,225), size = (150, -1))
        boton_aceptar = wx.Button(panel, -1, u'Aceptar', pos = (200,350))
        boton_cancelar = wx.Button(panel, -1, u'Cancelar', pos = (100,350))
        self.Bind(wx.EVT_BUTTON, self.OnSalir, boton_cancelar)
        self.Bind(wx.EVT_BUTTON, self.OnAceptar, boton_aceptar)
        self.ventana.Show()
        return True

    def OnSalir(self, evt):
        self.ventana.Close()

    def OnAceptar(self, evt):
        ingresoapellido = self.cuadro_apellido.GetValue()

        dialogo = wx.MessageDialog(self.ventana, u'Estimado/a %s, sus datos fueron guardados' % (ingresoapellido), u'Información', wx.OK | wx.ICON_INFORMATION)
        dialogo.ShowModal()
        dialogo.Destroy()

aplicacion = App()
aplicacion.MainLoop()

mesagedialog

WX.SPINCTRL


# -*- coding: UTF8 -*-

import wx

class App(wx.App):
    def OnInit(self):
        ventana = wx.Frame(parent = None , title = u'Ingreso' , size = (300,300) , pos = (250,250))
        panel = wx.Panel(ventana , -1)
        texto_edad = wx.StaticText(panel, -1, u'Edad: ', pos = (20,25))
        cuadro_edad = wx.SpinCtrl(panel, -1, pos = (90,20))
        cuadro_edad.SetRange(0,110)
        boton_aceptar = wx.Button(panel, -1, u'Aceptar', pos = (200,240))
        ventana.Show()
        return True

aplicacion = App()
aplicacion.MainLoop()

spinctrl

WX.DATEPICKERCTRL


# -*- coding: UTF8 -*-

import wx

class App(wx.App):
    def OnInit(self):
        self.ventana = wx.Frame(parent = None, title = u'Examen Medico', size = (300,400), pos = (320,150))
        panel = wx.Panel(self.ventana, -1)
        datos = wx.StaticText(panel, -1, u'Datos del empleado: ', pos = (20,20))
        apellido = wx.StaticText(panel, -1, u'Apellido: ', pos = (20,50))
        self.cuadro_apellido = wx.TextCtrl(panel, -1, '', pos = (90 , 45), size = (150,-1))
        sexo = wx.StaticText(panel, -1, u'Sexo: ', pos = (20,80))
        sexolista = [u'F', u'M']
        cuadro_sexo = wx.ComboBox(panel, -1, '', (90,75), (150,-1), sexolista, wx.CB_DROPDOWN)
        observaciones = wx.StaticText(panel, -1, u'Obs: ', pos = (20,110))
        cuadro_obs = wx.TextCtrl(panel, -1, '', pos = (90,105), size = (150,80), style = wx.TE_MULTILINE)
        edad = wx.StaticText(panel, -1, u'Edad: ', pos = (20,200))
        self.cuadro_edad = wx.SpinCtrl(panel, -1, pos = (90,195))
        self.cuadro_edad.SetRange(0,100)
        fecha_nacimiento = wx.StaticText(panel, -1, 'F Nac', pos = (20,230))
        cuadro_nacimiento = wx.DatePickerCtrl(panel, -1, pos = (90,225), size = (150, -1))
        boton_aceptar = wx.Button(panel, -1, u'Aceptar', pos = (200,350))
        boton_cancelar = wx.Button(panel, -1, u'Cancelar', pos = (100,350))
        self.Bind(wx.EVT_BUTTON, self.OnSalir, boton_cancelar)
        self.Bind(wx.EVT_BUTTON, self.OnAceptar, boton_aceptar)
        self.ventana.Show()
        return True

    def OnSalir(self, evt):
        self.ventana.Close()

    def OnAceptar(self, evt):
        ingresoapellido = self.cuadro_apellido.GetValue()

        dialogo = wx.MessageDialog(self.ventana, u'Estimado/a %s, sus datos fueron guardados' % (ingresoapellido), u'Información', wx.OK | wx.ICON_INFORMATION)
        dialogo.ShowModal()
        dialogo.Destroy()

aplicacion = App()
aplicacion.MainLoop()

dtaepickerctrl


San Cayetano: instalate algo

   Publicado:

Hablamos muchísimo de los ejercicios que realizamos en el curso, pero omitimos en todo momento información sobre que usamos para llevar a cabo esos ejemplos de python. Y como una gran mayoría de usuarios no tiene la posibilidad de contar con computadoras equipadas con software libre. La idea de este post es ayudar a quienes tienen otras cosas a instalar las aplicaciones que van a necesitar para aprender lo que estamos aprendiendo. En este ejemplo los aplicativos corren en Windowrs. Asi que ahi vamos.

Python
Bueno en el caso nuestro, el curso se orienta a aprender a programar utilizando como lenguaje Python

Para poder disfrutar de este lenguaje podemos seguir el siguiente tutorial que explica como instalarlo

Geany
Como editor sencillo para andar probando estas cuestiones de codigo utilizamos uno que es genial. Geany. Para instalarlo pueden visitar la zona de descarga de la pagina oficial, para descargar geany

ipython
Cuando nos cansamos (literalmente) de los colores de la terminal saltamos a probar una vuelta de tuerca al asunto. ipython salio a resolvernos el tema de andar probando comandos o pequeñas lineas que nos podían solucionar el planteo inicial.

MySQL, phpMyAdmin
A medida que fuimos avanzando con el tema vimos en varias oportunidades el manejo de un sistema de bases de datos como el de MySQL y llegamos a utilizar un buen manejador y administrador de bases de datos como phpMyAdmin.

Una buena opción para poder manejar esa artillería de herramientas bajo estas condiciones es contar con la ayuda de XAMPP.

Y como siempre para instalarlo podemos seguir el siguiente tutorial.

wxPython
Y por ultimo y no por algo en particular nos toca la herramienta que estamos aprendiendo a los golpes que es ni mas ni menos que wxPython

Para poder disfrutar de esta herramienta tenemos que instalar el siguiente archivo. Y una ves instalado no tenemos excusa para seguir aprendiendo.


San Cayetano: Momentos del SanCa

   Publicado:

Volvíamos de la merienda de todos los días. Nuestras cabezas estaban todavía con los planteos de los ejercicios 76 y 75. Con la energía renovada nos sentamos en nuestros escritorios y acometimos con la tarea. Éstas son algunas de las imágenes de tan importante gesta.

El ejercicio75 consiste en que a través de un menú generar altas y consultas a una base de datos MySQL desde python. El ejercicio 76 consiste en que a partir de dos tuplas, una con nombre y otra con apellido, presentar esos datos por pantalla en una tabla con cabecera y los datos.

 

Momentos del SanCa

Momentos del SanCa

 

Momentos en el SanCa...

Momentos en el SanCa...

 

Momentos del SanCa...

Momentos del SanCa...


Share