miércoles, 28 de septiembre de 2011

La guerra entre Narcotraficantes y Zetas en México


Esto es algo de lo que se vive en México, véanlo y que cada quién formule su propia opinión acerca de Narcotraficantes y Zetas.



jueves, 15 de septiembre de 2011

Packs de Wallpappers que vendrán en Ubuntu y Lubuntu 11.10

Hace poco mencioné en el blog que ya se habían elegido los wallpappers en un grupo en Flickr para el nuevo Ubuntu 11.10, ahora se han publicado 6 wallpappers ganadores para la versión ligera, Lubuntu:

Las imagenés para Lubuntu son ligeras pero bonitas

Bonita selección para Oneric Ocelot

Enlaces
Descarga el pack de Wallpappers para Lubuntu 11.10
Las imagenes las encuentras al descomprimir el archivo en:
/ubuntu-artwork-0.17/usr/share/lubuntu/wallpapers 


Descarga 44 Wallpappers que traerá Ubuntu 11.10

martes, 13 de septiembre de 2011

Feliz dia del programador!

Yo no sabía que existía éste día hasta hoy, Felicidades a todos aquellos programadores que hacen nuestra vida diaria más fácil y entretenida, gracias por los juegos aplicaciones etc. etc... 
Felicidades también a los noveles y a quienes apenas empezamos o lo hacen por entretenimiento.

Les dejo unos chistes gráficos para pasar el rato:


lunes, 12 de septiembre de 2011

Mi primera aplicación en Python: Calculadora de Ingeniería Económica

Desde hace tiempo había leído de este maravilloso lenguaje, sus ventajas sobre los demás como su facilidad, que es libre y sobre todas las cosas que es multiplataforma. Sin duda es el ideal para comenzar a programar, he aquí un ejemplo.

Investigando un poco y con ayuda de algunos tutoriales pude hacer mi primera aplicación gráfica en python. Por el momento no es la gran cosa, pero espero tener tiempo y sobre todo paciencia para terminar un proyecto personal, me gustaría hacer algo así como una suite para Ingenieros multiplataf, para los que conozcan WinQSB sería algo paracido, con herramientas para diferentes áreas como Investigación de Operaciones e Ingeniería Económica por mencionar sólo algunos.

Algunos botones aún no funcionan, pero ya resuelve operaciones como en el ejemplo.

El código fue escrito con ayuda de wxGlade y SPE Stani's Python Editor que puedes encontrar en el Centro de Software Ubuntu, el libro Python para todos, un tutorial de Ubuntu Life, y una calculadora básica en Python.
Para resolver un problema de este tipo por ejemplo en Excel o alguna calculadora científica se necesita teclear algo como esto :
VA= 1500*((.14*(1+.14)^5)/(((1+.14)^5)-1) 
Hay muchas más posibilidades de equivocarse, algo que no te puede pasar por ejemplo en un examen final...

Aquí el código:

#!/usr/bin/env python
# -*- coding: utf-8 -*-
# generated by wxGlade 0.6.3 on Tue Aug 16 18:36:57 2011


import wx


# begin wxGlade: extracode
# end wxGlade


class Ventana_calculadora(wx.Frame):
    def __init__(self, *args, **kwds):
        # begin wxGlade: Ventana_calculadora.__init__
        kwds["style"] = wx.DEFAULT_FRAME_STYLE
        wx.Frame.__init__(self, *args, **kwds)
        
        # Menu Bar
        self.Calculadora_menubar = wx.MenuBar()
        wxglade_tmp_menu = wx.Menu()
        wxglade_tmp_menu.Append(11, "Borrar", "", wx.ITEM_NORMAL)
        wxglade_tmp_menu.AppendSeparator()
        wxglade_tmp_menu.Append(22, "Salir", "", wx.ITEM_NORMAL)
        self.Calculadora_menubar.Append(wxglade_tmp_menu, "Archivo")
        wxglade_tmp_menu = wx.Menu()
        wxglade_tmp_menu.Append(55, "Acerca de", "", wx.ITEM_NORMAL)
        self.Calculadora_menubar.Append(wxglade_tmp_menu, "Ayuda")
        self.SetMenuBar(self.Calculadora_menubar)
        # Menu Bar end
        self.entrada_datos = wx.TextCtrl(self, -1, "", style=wx.TE_MULTILINE and wx.ALIGN_RIGHT)
        self.entrada_datos.SetFocus()
        self.lblEjemplo = wx.StaticText(self, -1, "Ejemplo de Entrada: 1200(VP/VF,15%,6)", style=wx.ALIGN_CENTRE)
        self.btnVPVF = wx.Button(self, -1, "VP/VF")
        self.btnVFVP = wx.Button(self, -1, "VF/VP")
        self.btnVAVF = wx.Button(self, -1, "VA/VF")
        self.btnIRetroceso = wx.BitmapButton(self, -1, wx.Bitmap("/dos/Documentos/Programacion en Phyton/Proyecto Personal/btnretroceso2.png", wx.BITMAP_TYPE_ANY), style=wx.BU_AUTODRAW)
        self.btnVPVA = wx.Button(self, -1, "VP/VA")
        self.btnVFVA = wx.Button(self, -1, "VF/VA")
        self.btnVAVP = wx.Button(self, -1, "VA/VP")
        self.btnIgual = wx.Button(self, -1, "=")
        self.btn7 = wx.Button(self, -1, "7")
        self.btn8 = wx.Button(self, -1, "8")
        self.btn9 = wx.Button(self, -1, "9")
        self.btnMas = wx.Button(self, -1, "+")
        self.btn4 = wx.Button(self, -1, "4")
        self.btn5 = wx.Button(self, -1, "5")
        self.btn6 = wx.Button(self, -1, "6")
        self.btnMenos = wx.Button(self, -1, "-")
        self.btn1 = wx.Button(self, -1, "1")
        self.btn2 = wx.Button(self, -1, "2")
        self.btn3 = wx.Button(self, -1, "3")
        self.bx = wx.Button(self, -1, "x")
        self.btnPunto = wx.Button(self, -1, ".")
        self.btn0 = wx.Button(self, -1, "0")
        self.btnComa = wx.Button(self, -1, ",")
        self.btnDivision = wx.Button(self, -1, "/")
        self.btnRaiz = wx.Button(self, -1, "Raiz")
        self.btnPotencia = wx.Button(self, -1, "Potencia")
        self.btnParentesis1 = wx.Button(self, -1, "(")
        self.btnParentesis2 = wx.Button(self, -1, ")")
        self.panel_1 = wx.Panel(self, -1)
        self.btnBorrar = wx.Button(self, -1, "Borrar")
        self.btnSalir = wx.Button(self, -1, "Salir")
        self.static_line_1 = wx.StaticLine(self, -1)
        
        #Se ponen los metodos que activa el evento de cada boton
        self.btnIgual.Bind (wx.EVT_BUTTON,self.Resolver)
        self.btn1.Bind(wx.EVT_BUTTON,self.Uno)
        self.btn2.Bind(wx.EVT_BUTTON,self.Dos)
        self.btn3.Bind(wx.EVT_BUTTON,self.Tres)
        self.btn4.Bind(wx.EVT_BUTTON,self.Cuatro)
        self.btn5.Bind(wx.EVT_BUTTON,self.Cinco)
        self.btn6.Bind(wx.EVT_BUTTON,self.Seis)
        self.btn7.Bind(wx.EVT_BUTTON,self.Siete)
        self.btn8.Bind(wx.EVT_BUTTON,self.Ocho)
        self.btn9.Bind(wx.EVT_BUTTON,self.Nueve)
        self.btn0.Bind(wx.EVT_BUTTON,self.Cero)
        self.btnIRetroceso.Bind(wx.EVT_BUTTON,self.Retroceso)
        
        self.btnVPVF.Bind(wx.EVT_BUTTON,self.VPVF)
        self.btnVPVA.Bind(wx.EVT_BUTTON,self.VPVA)
        self.btnVFVP.Bind(wx.EVT_BUTTON,self.VFVP)
        self.btnVFVA.Bind(wx.EVT_BUTTON,self.VFVA)
        self.btnVAVP.Bind(wx.EVT_BUTTON,self.VAVP)
        self.btnVAVF.Bind(wx.EVT_BUTTON,self.VAVF)
        self.btnParentesis1.Bind(wx.EVT_BUTTON,self.Parentesis1)
        self.btnParentesis2.Bind(wx.EVT_BUTTON,self.Parentesis2)
        self.btnPunto.Bind(wx.EVT_BUTTON,self.Punto)
        self.btnComa.Bind(wx.EVT_BUTTON,self.Coma)


        
        self.__set_properties()
        self.__do_layout()
        # end wxGlade
        
    def Resolver(self, evento=None):
        strCadenaEntrada=self.entrada_datos.GetValue()
        print strCadenaEntrada
        lstValores = strCadenaEntrada.split(",")
        numValor = lstValores[0].split("(")
        lstValores[0]=float(numValor[0])
        numNPeriodos=lstValores[2].split(")")
        lstValores.append(int(numNPeriodos[0]))
        print lstValores[3]
        lstValores[2]= float(lstValores[1])
        lstValores[1]=numValor[1]
        # lstValores contiene los valores por separado de la cadena de entrada
        # van en orden, ejemplo lstValores[2] es la tasa i, y lstValores[3]Periodos
        if lstValores[1]== "VF/VP" or lstValores[1]=="F/P":
            resultado=float(lstValores[0]*((1+lstValores[2])**lstValores[3]))
            self.entrada_datos.SetValue(str(resultado))
        elif lstValores[1]== "VF/VA" or lstValores[1]=="F/A":
            resultado=float(lstValores[0]*((((1+lstValores[2])**lstValores[3])-1)/lstValores[2]))
            self.entrada_datos.SetValue(str(resultado))
        elif lstValores[1]== "VP/VF" or lstValores[1]=="P/F":
            resultado=float(lstValores[0]*(1/((1+lstValores[2])**lstValores[3])))
            self.entrada_datos.SetValue(str(resultado))
        elif lstValores[1]== "VA/VF" or lstValores[1]=="A/F":
            resultado=float(lstValores[0]*(lstValores[2]/(((1+lstValores[2])**lstValores[3])-1)))
            self.entrada_datos.SetValue(str(resultado))
        
            
    def Uno (self,evento=None):
        self.entrada_datos.AppendText('1')
    def Dos (self,evento=None):
        self.entrada_datos.AppendText('2')
    def Tres (self,evento=None):
        self.entrada_datos.AppendText('3')    
    def Cuatro (self,evento=None):
        self.entrada_datos.AppendText('4')
    def Cinco (self,evento=None):
        self.entrada_datos.AppendText('5')  
    def Seis (self,evento=None):
        self.entrada_datos.AppendText('6')
    def Siete (self,evento=None):
        self.entrada_datos.AppendText('7')
    def Ocho (self,evento=None):
        self.entrada_datos.AppendText('8')
    def Nueve (self,evento=None):
        self.entrada_datos.AppendText('9')
    def Cero (self,evento=None):
        self.entrada_datos.AppendText('0')
    def VFVP (self,evento=None):
        self.entrada_datos.AppendText("VF/VP")
    def VAVP (self,evento=None):
        self.entrada_datos.AppendText("VA/VP")
    def VPVF (self,evento=None):
        self.entrada_datos.AppendText("VP/VF")
    def VPVA (self,evento=None):
        self.entrada_datos.AppendText("VP/VA")
    def VAVF (self,evento=None):
        self.entrada_datos.AppendText("VA/VF")
    def VFVA (self,evento=None):
        self.entrada_datos.AppendText("VF/VA")
    def Parentesis1 (self,evento=None):
        self.entrada_datos.AppendText("(")
    def Parentesis2 (self,evento=None):
        self.entrada_datos.AppendText(")")   
    def Punto (self,evento=None):
        self.entrada_datos.AppendText(".")
    def Coma (self,evento=None):
        self.entrada_datos.AppendText(",")
    def Retroceso (self,evento=None):
        strCadenaEntrada=self.entrada_datos.GetValue()
        self.entrada_datos.SetValue(strCadenaEntrada[:-1])
        
    def __set_properties(self):
        # begin wxGlade: Ventana_calculadora.__set_properties
        self.SetTitle("Calculadora")
        self.entrada_datos.SetFont(wx.Font(20,wx.DEFAULT, wx.NORMAL, wx.LIGHT, 0, "Purisa"))
        self.btnVPVF.SetBackgroundColour(wx.Colour(252, 255, 223))
        self.btnVFVP.SetBackgroundColour(wx.Colour(252, 255, 223))
        self.btnVAVF.SetBackgroundColour(wx.Colour(254, 255, 244))
        self.btnIRetroceso.SetBackgroundColour(wx.Colour(255, 233, 237))
        self.btnIRetroceso.SetSize(self.btnIRetroceso.GetBestSize())
        self.btnVPVA.SetBackgroundColour(wx.Colour(252, 255, 223))
        self.btnVFVA.SetBackgroundColour(wx.Colour(252, 255, 223))
        self.btnVAVP.SetBackgroundColour(wx.Colour(252, 255, 223))
        self.btnIgual.SetBackgroundColour(wx.Colour(185, 255, 196))
        self.btnMas.SetBackgroundColour(wx.Colour(228, 235, 255))
        self.btnMenos.SetBackgroundColour(wx.Colour(228, 235, 255))
        self.bx.SetBackgroundColour(wx.Colour(228, 235, 255))
        self.btnPunto.SetBackgroundColour(wx.Colour(228, 235, 255))
        self.btnComa.SetBackgroundColour(wx.Colour(228, 235, 255))
        self.btnDivision.SetBackgroundColour(wx.Colour(228, 235, 255))
        self.btnRaiz.SetBackgroundColour(wx.Colour(228, 235, 255))
        self.btnPotencia.SetBackgroundColour(wx.Colour(228, 235, 255))
        self.btnParentesis1.SetBackgroundColour(wx.Colour(228, 235, 255))
        self.btnParentesis2.SetBackgroundColour(wx.Colour(228, 235, 255))
        # end wxGlade


    def __do_layout(self):
        # begin wxGlade: Ventana_calculadora.__do_layout
        sizer_1 = wx.BoxSizer(wx.VERTICAL)
        grid_sizer_2 = wx.GridSizer(2, 4, 0, 0)
        grid_sizer_1 = wx.GridSizer(8, 4, 0, 0)
        sizer_1.Add(self.entrada_datos, 0, wx.ALL|wx.EXPAND, 10)
        sizer_1.Add(self.lblEjemplo, 0, wx.ALL|wx.EXPAND|wx.ALIGN_CENTER_HORIZONTAL|wx.ALIGN_CENTER_VERTICAL, 0)
        grid_sizer_1.Add(self.btnVPVF, 0, wx.EXPAND, 0)
        grid_sizer_1.Add(self.btnVFVP, 0, wx.EXPAND, 0)
        grid_sizer_1.Add(self.btnVAVF, 0, wx.EXPAND, 0)
        grid_sizer_1.Add(self.btnIRetroceso, 0, wx.EXPAND, 0)
        grid_sizer_1.Add(self.btnVPVA, 0, wx.EXPAND, 0)
        grid_sizer_1.Add(self.btnVFVA, 0, wx.EXPAND, 0)
        grid_sizer_1.Add(self.btnVAVP, 0, wx.EXPAND, 0)
        grid_sizer_1.Add(self.btnIgual, 0, wx.EXPAND, 0)
        grid_sizer_1.Add(self.btn7, 0, wx.EXPAND, 0)
        grid_sizer_1.Add(self.btn8, 0, wx.EXPAND, 0)
        grid_sizer_1.Add(self.btn9, 0, wx.EXPAND, 0)
        grid_sizer_1.Add(self.btnMas, 0, wx.EXPAND, 0)
        grid_sizer_1.Add(self.btn4, 0, wx.EXPAND, 0)
        grid_sizer_1.Add(self.btn5, 0, wx.EXPAND, 0)
        grid_sizer_1.Add(self.btn6, 0, wx.EXPAND, 0)
        grid_sizer_1.Add(self.btnMenos, 0, wx.EXPAND, 0)
        grid_sizer_1.Add(self.btn1, 0, wx.EXPAND, 0)
        grid_sizer_1.Add(self.btn2, 0, wx.EXPAND, 0)
        grid_sizer_1.Add(self.btn3, 0, wx.EXPAND, 0)
        grid_sizer_1.Add(self.bx, 0, wx.EXPAND, 0)
        grid_sizer_1.Add(self.btnPunto, 0, wx.EXPAND, 0)
        grid_sizer_1.Add(self.btn0, 0, wx.EXPAND, 0)
        grid_sizer_1.Add(self.btnComa, 0, wx.EXPAND, 0)
        grid_sizer_1.Add(self.btnDivision, 0, wx.EXPAND, 0)
        grid_sizer_1.Add(self.btnRaiz, 0, wx.EXPAND, 0)
        grid_sizer_1.Add(self.btnPotencia, 0, wx.EXPAND, 0)
        grid_sizer_1.Add(self.btnParentesis1, 0, wx.EXPAND, 0)
        grid_sizer_1.Add(self.btnParentesis2, 0, wx.EXPAND, 0)
        sizer_1.Add(grid_sizer_1, 6, wx.ALL|wx.EXPAND, 0)
        grid_sizer_2.Add(self.panel_1, 1, wx.EXPAND, 0)
        grid_sizer_2.Add(self.btnBorrar, 0, wx.EXPAND, 0)
        grid_sizer_2.Add(self.btnSalir, 0, wx.EXPAND, 0)
        sizer_1.Add(grid_sizer_2, 0, wx.EXPAND, 2)
        sizer_1.Add(self.static_line_1, 0, wx.EXPAND, 0)
        self.SetSizer(sizer_1)
        sizer_1.Fit(self)
        self.Layout()
        # end wxGlade
        
# end of class Ventana_calculadora
    
if __name__ == "__main__":
    app = wx.PySimpleApp(0)
    wx.InitAllImageHandlers()
    Calculadora = Ventana_calculadora(None, -1, "")
    app.SetTopWindow(Calculadora)
    Calculadora.Show()
    app.MainLoop()




Cabe mencionar que el código aún no es perfecto, pero si deseas hacer algún comentario, modificación, o tienes duda de alguna parte del código, puedes hacerlo en los comentarios, o por medio de un correo electrónico a ubuntu.latino@gmail.com

miércoles, 7 de septiembre de 2011

Como cambiar las dependencias de un paquete .deb

Después del Centro de Software Ubuntu, los paquetes .deb son la forma más fácil de instalar programas, pero en ocasiones los paquetes .deb no se pueden instalar por que no se satisfacen las dependencias, esto es por que algunas veces los instaladores .deb hacen referencia a paquetes obsoletos, más recientes, etc.

Esto fue precisamente lo que me ocurrió cuando quise instalar Boxee desde un paquete .deb que baje de la página oficial de Boxee, en este caso la dependencia que no se satisfacía era con el paquete libxmlrpc-c3, que en Natty Narwhal cambió por libxmlrpc-c3-0.

Voy a utilizar el ejemplo del paquete deb de Boxee para explicar como cambiar las dependencias, para ello abre una terminal y ocupa los siguientes comandos:

  1. dpkg-deb -x Boxee.deb tmpdir
  2. dpkg-deb --control Boxee.deb tmpdir/DEBIAN
  3. nano tmpdir/DEBIAN/control
  4. Se te abren en la terminal las dependencias, sólo tienes que modificar las dependencias que necesites, en mi caso modifique libxmlrpc-c3 por libxmlrpc-c3-0. Guardas con Ctrl+O y cierras con Ctrl +X.
  5. dpkg -b tmpdir Boxee_modificado.deb
Se te abren en la terminal las dependencias, sólo tienes que modificar las dependencias que necesites, en mi caso modifique libxmlrpc-c3 por libxmlrpc-c3-0. 


Nota: Ten cuidado con lo que modificas, y que puedes desestabilizar tu sistema, lo más recomendable es que si vas a cambiar una dependencia, sea por un paquete más reciente para evitar errores.

Existe un script que si haces muchos cambios en las dependencias te puede servir, pero si sólo lo vas a hacer una vez, quizá no sea muy práctico, pero les dejo el enlace por si desean probar ésta segunda opción.

Enlace: Script para cambiar dependencias de paquetes .deb


Si te sirvió regalame un +1, RT, o un Me gusta aquí abajo :)

lunes, 5 de septiembre de 2011

Hackean servidor de Linux kernel.org



Justo en los 20 años de aniversario de Linux, ocurre esto, pero les dejo la noticia traducida (espero se entienda) del sitio kernel.org donde explican como y que fue lo que ocurrió:
Kernel.org ya tomó cartas en el asunto
Violación de la seguridad en kernel.org

A principios de este mes, un número de servidores en la infraestructura de kernel.org se vio comprometido. Descubrimos esto el 28 de agosto. Actualmente creemos que los repositorios de código fuente no se vieron afectados, estamos en proceso de verificar de esto y tomar medidas para mejorar la seguridad de toda la infraestructura de kernel.org.

¿Qué pasó?

  • Intrusos tuvieron acceso root en el servidor de Hera. Creemos que puede haber obtenido este acceso a través de una credencial de usuario comprometida, ¿cómo se las arreglaron para explotar esto y acceder como root, se desconoce y se está investigando.
  • Archivos que pertenecen a ssh (OpenSSH, openssh-server y openssh-clientes) se han modificado funcionando en live.
  • Un archivo de inicio troyano fue introducido en el sistema inicio de scripts.
  • Se han registrado interacciones de usuarios, así como un código de explotación. Hemos mantenido esto por ahora.
  • El Troyano, descubierto inicialmente por el mensaje de error Xnest / dev / mem w / o Xnest instalado; se ha visto en otros sistemas. No está claro si los sistemas que presentan este mensaje son susceptibles al peligro o no. Si los desarrolladores ven esto, y  no tienes instalado Xnest, por favor, investiguen.
  • Al “aparienciar” el 3.1-rc2 podría haber bloqueado el exploit de inyección, no sé si esto es intencional o un efecto secundario de otro de corrección de errores o cambios

Qué se ha hecho hasta ahora

  • Ahora hemos puesto las cajas off line para hacer una copia de seguridad y está en proceso la reinstalación completa.
  • Hemos notificado a las autoridades de los Estados Unidos y Europa para ayudar en la investigación
  • Vamos a hacer una reinstalación completa en todas las cajas en kernel.org
  • Estamos en el proceso de hacer un análisis sobre el código dentro de git, y confirmar que paquetes no se han modificado.

La comunidad de Linux y kernel.org toman la seguridad de los dominios kernel.org muy en serio, y están llevando a cabo todas las vias para investigar este ataque y prevenir  futuros ataques.

Sin embargo, también es útil señalar que el daño potencial de kernel.org grietas es mucho menor que los repositorios de software típico. Eso es porque el desarrollo del kernel se realiza mediante el sistema de control distribuido git revisión, diseñado por Linus Torvalds. Para cada uno de los cerca de 40.000 archivos en el kernel de Linux, una seguridad criptográfica hash SHA-1 se calcula únicamente para definir el contenido exacto de dicho archivo. Git está diseñado para que el nombre de cada versión del kernel dependa de la historia de desarrollo completo que conduce a esa versión. Una vez que se publica, no es posible cambiar las versiones antiguas sin que se note.

Los archivos y los valores hash correspondiente existen no sólo en la máquina de kernel.org y sus mirrors, en los discos duros de cada uno de los desarrolladores del kernel de varios miles, la distribución, y otros usuarios de kernel.org. Cualquier alteración de cualquier archivo en el repositorio de kernel.org se da cuenta cada desarrollador inmediatamente, ya que actualiza su repositorio personal, la mayoría lo hacemos a diario.
Actualmente estamos trabajando con los 448 usuarios de kernel.org para cambiar sus credenciales y cambiar sus claves SSH.
También estamos de auditoría todas las políticas de seguridad para hacer kernel.org más seguro, pero confiamos en que nuestros sistemas, en concreto git, tienen un diseño excelente para prevenir el daño real de este tipo de ataques.

Personalmente y como dicen en kernel.org, pienso que linux no es invencible como muchos piensan, pero es este tipo de cosas lo que fortalece más a la comunidad y al kernel. Además de que se ha desmostrado que la forma en como se administra el kernel funciona, ya que fue un muy poco tiempo el que se necesitó para dar respuesta ante el ataque, comparado con por ejemplo Sony u otras compañias que llegan a tardar meses en solucionar problemas derivados de ataques.
Seguiré informando de la situación y las novedades.

Fuente: www.kernel.org

viernes, 2 de septiembre de 2011

Ubuntu 11.10 Beta 1 a Fondo: Cambios y Características

En muchos blogs y sitios se han ido publicando los cambios y características que traerá Ubuntu 11.10, pero en Mi Ubuntu Latino aún no se ha mencionado nada al respecto, es por eso que decidí hacer un "resumen" de todos estos cambios por si aún no te has enterado. Bien, comencemos:

  • Unity greeter es el tema por default para LightDM luce así:

Imagen tomada de WebUpd8

  • El botón "Ubuntu Start " que en Natty venía en la parte superior izquierda, ahora está incluido en el lanzador.
  • Cambia el menú de redes sociales, mensajero instantáneo y cuenta de correo, ahora incluye los cambios de estado y se elimina el menú del usuario.
  • Nuevo menú donde se encontraba el apagado, que incluye acceso a todas las configuraciones del sistema.

  • El Dash tiene un efecto Blur, que hace que se vea transparente y se pueda ver lo que tenemos de fondo además de incluir otras opciones que en las netbook no se puede apreciar debido al tamaño de la pantalla.
Así se ve el dash en una netbook
Asi luce normalmente
  • Aplicaciones que vienen: 

Firefox 7.0 beta 3, Thunderbird 7.0 beta 1, Nautilus 3.1.4, LibreOffice 3.4.2, Gedit 3.1.4, Totem 3.0.1, Banshee 2.1.3, Empathy 3.1.5.1, Shotwell 0.11, Gwibber 3.1.6, Transmission 2.33 y Deja Dup 19.90. El beta 1 utiliza el  Linux Kernel 3.0.0-9.15 y Xorg server 1.10.3 rc2.
Ubuntu 11.10 Utiliza el canal beta de Firefox
La versión más actualizada de LibreOffice,
que trae corrección de miles de bugs aumentando
su estabilidad y desempeño.


  • El centro de software Ubuntu cambia de apariencia por completo, se asemeja más a una App Store.
Mas adelante se llamará Ubuntu App Store?...

  • Thunderbird sustituye a Evolution al ganarle en pruebas de usabilidad.
  • El cambiador de fondos de escritorio y temas, luce diferente, mostrando una miniatura de como se verá la imagen.
Se ve bien, pero aún no descubro donde cambiar los iconos...

  • El cambiador alt+tab muestra una miniatura de las aplicaciones.

Aplicaciones que ya no vienen:
  • Pitivi ha sido removido como editor de vídeo debido a que su desarrollo se ha estancado
  • El Gestor de Limpieza también ha sido removido debido a que causaba más problemas de los que solucionaba.
En el instalador:
Lo siguiente no lo he podido comprobar, ya que utilizo una live USB para probar los cambios y no instalo nada, pero esto es lo que he leído:
  • No cambia la forma de crear particiones como se quería que se hiciera
Ésta era la propuesta

Sigue siendo como en Natty

  • Te pregunta si deseas tomarte una foto para usarla en la información del usuario
Ahora instalar Ubuntu 11.10 pide un requisito: Estar peinado ;) 

Estos son sólo algunos de todos los cambios y características que trae consigo Oneric Ocelot, espero no se me haya pasado algo importante, pero si es así puedes comentarnos algún cambio que hayas notado o que no ésta en este post


jueves, 1 de septiembre de 2011

Beta 1 Ubuntu 11.10 Disponible para descargar

Se va cumpliendo el ciclo de desarrollo de Oneric Ocelot, y hoy ya está disponible para su descarga la Beta 1 con correción de bugs y las características congeladas de todo lo que vendrá en el próximo Ubuntu.
Uno de los 42 Fondos finalistas, velos aquí


 Si deseas saber las fechas de cuando se liberan versiones de programas, películas u otras cosas, consulta el Google Calendar que está en el panel lateral.

 Recuerda: No es la versión final, pero si lo quieres probar es bajo tu propio riesgo. (Yo te recomiendo probarlo mediante una Live USB para no tener problemas de cualquier tipo)

 Enlaces: 
Descarga Ubuntu 11.10 Beta 1
42 Fondos que vendrán en Ubuntu 11.10