Dell Studio 1558: Ubuntu 10.04

Hoy llegó la nueva laptop que compré. Decidí comprar una Dell studio 15 pues ya he comprado otras Dell y me han dejado un buen sabor de boca.

Instalé Ubuntu 10.04 sin mayores problemas. No he podido probar todo con detenimiento pero aquí está lo que funcionó y no funcionó hasta ahora:

  • Monitor 15.6″ de 1080p: el control de brillo no funciona (funciona tras instalar el kernel que viene aquí)
  • Tarjeta integrada Intel HD: No tiene un desempeño genial, pero funciona.
  • Intel i3: funciona
  • teclado luminoso back-lit: funciona
  • trackpad multitouch:  funcionó con configuración adicional que pongo abajo.
  • puerto HDMI: no lo he probado
  • windows 7 home premium (bueno, tenía)
  • tarjeta WiFi Broadcom: funcionó después de ejecutar el asistente
  • sonido: funciona
  • webcam: funciona
  • micrófono: no funcionaba hasta que noté que estaba en mute, jeje
  • ethernet: funciona
  • lector de discos ‘sin charola’: parece tener comportamiento extraño ocasionalmente pero funciona.
  • lector de tarjetas sd: funciona
  • bluetooth: funciona

Mientras vaya probando iré actualizando la entrada.

Saludos

Update. los babotas de Dell mandaron la laptop con 3gb de ram en lugar de 4gb. Voy a tener que hablar para reclamar.

Update 2: Por error instalé la versió nde 32bits en lugar de 64. por eso solo me aparecián 3gb.

la configuración para el multitouch es sencillo. Creen un archivo con este contenido, denle permisos de ejecución (chmod +x) y ejecutenlo

#!/bin/bash
#
# list of synaptics device properties http://www.x.org/archive/X11R7.5/doc/man/man4/synaptics.4.html#sect4
# list current synaptics device properties: xinput list-props '"SynPS/2 Synaptics TouchPad"'
#
sleep 5 #added delay...
xinput set-int-prop "SynPS/2 Synaptics TouchPad" "Device Enabled" 8 1
xinput --set-prop --type=int --format=32 "SynPS/2 Synaptics TouchPad" "Synaptics Two-Finger Pressure" 4
xinput --set-prop --type=int --format=32 "SynPS/2 Synaptics TouchPad" "Synaptics Two-Finger Width" 9 # Below width 1 finger touch, above width simulate 2 finger touch. - value=pad-pixels
xinput --set-prop --type=int --format=8 "SynPS/2 Synaptics TouchPad" "Synaptics Edge Scrolling" 1 1 0 # vertical, horizontal, corner - values: 0=disable 1=enable
xinput --set-prop --type=int --format=32 "SynPS/2 Synaptics TouchPad" "Synaptics Jumpy Cursor Threshold" 250 # stabilize 2 finger actions - value=pad-pixels
#xinput --set-prop --type=int --format=8 "SynPS/2 Synaptics TouchPad" "Synaptics Tap Action" 0 0 0 0 1 2 3 # pad corners rt rb lt lb tap fingers 1 2 3 (can't simulate more then 2 tap fingers AFAIK) - values: 0=disable 1=left 2=middle 3=right etc. (in FF 8=back 9=forward)
xinput --set-prop --type=int --format=8 "SynPS/2 Synaptics TouchPad" "Synaptics Two-Finger Scrolling" 1 0 # vertical scrolling, horizontal scrolling - values: 0=disable 1=enable
#xinput --set-prop --type=int --format=8 "SynPS/2 Synaptics TouchPad" "Synaptics Circular Scrolling" 1
#xinput --set-prop --type=int --format=8 "SynPS/2 Synaptics TouchPad" "Synaptics Circular Scrolling Trigger" 3
exit

El archivo lo conseguí en este post de los foros de Ubuntu.

Curso de capacitación de Spring

El viernes terminamos en la oficina el curso de capacitación de spring. Fueron 40 horas distribuidas en 4 semanas en las que vimos más de lo que hubiera esperado de un curso de iniciación al framework. No solo revisamos el contenedor de inyección (lo único con lo que tenía experiencia), también nos dimos una vuelta por web services, aspectos,SpringMVC, manejo de bases de datos con hibernate y jdbc y varias cosas más.

El curso fue impartido por los amigos de synergyj de forma bastante acertada. Además tengo entendido que el precio fue bueno (que no me consta, lo pagó la empresa). Creo que el objetivo se alcanzó. Solo espero que la empresa sepa aprovechar al máximo el framework para volvernos más productivos.

Obteniendo otro contexto en java

Un proyecto del trabajo me hizo investigar mucho sobre como compartir recursos entre aplicaciones que se encuentran en un contenedor (tomcat en mi caso). Encontré que la forma más sencilla es acceder al contexto ajeno y leer información desde ahi (desde un atributo del contexto por ejemplo). Desgraciadamente esto no funciona tal cual. Tenemos que permitirle a nuestra aplicación meter las narices donde no lo han invitado. La parte buena es que es fácil, solo hay que poner un archivo context.xml dentro del directorio META-INF con algo como esto:

<?xml version=’1.0′ encoding=‘utf-8′?>

<Context crossContext=“true”>
</Context>

 

Al desplegar la aplicación ya podremos hacer cosas locas como :

ServletContext ctx=

this.getServletContext().getContext(“/alla”);
RequestDispatcher rd=ctx.getRequestDispatcher(“/aculla/el/recurso.jsp”);
rd.include(request, response);

 

  

 

 

 

ORM en PHP con POG

<?php
/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
include “objects/class.usuario.php”;
include “objects/class.database.php”;
include “configuration.php”;
$us= new Usuario();
$us->usuario=”santiagozky”;
$us->password=”secreto”;
$us->nombre=”‘; drop table usuario;–”;
if($us->Save()){
echo “genial “;
} else{ “owww “;}
$us2= new Usuario();
$us2->nombre=”santi”;
$us2->Get($us->usuarioId);
echo “$us2->nombre”;
?>

Wow, demasiados acrónimos en el título…

Estos últimos años básicamente me he dedicado a desarrollar todo lo que hago en java. El problema es que he dejado de lado muchas alternativas, incluso aquellas sumamente usadas como PHP.

Para solucionar esta situación decidí hacer unos cuantos experimentos en PHP. Nada muy elegante, solo algunas cosas útiles y pequeñas como validaciones, conexiones a bases de datos, etc. Este fin de semana me dió por investigar sobre soluciones ORM para php
Sin duda hay bastantes. Sin embargo no he encontrado ninguna que ofresca algo tan completo como hibernate o el JPA. La mayoría requiere de correr procesos que autogeneran tus clases en base a un schema o algun otro tipo de configuración.

Lo mejorcito que he probado (que no ha sido demasiado debo decir) fue POG (PHP Object Generator) que es un sistema que te permite crear tus clases con sus metodos CRUD (eso es ‘create’,'retrieve’,'update’ y ‘delete’) para manejarlas.

Pueden probar el sistema en su página. La verdad fue facilísimo hecharlo a andar. En mi caso cree una clase Usuario con unos cuantos atributos, después solo hay que configurar un archivo con los datos de tu base de datos y entrar al directorio setup desde el navegador.

Una vez que se instaló la base cree un pequeño script para ver que funcionara. Nada del otro mundo, pero sufiente como prueba de concepto:

<?php

include “objects/class.usuario.php”;

include “objects/class.database.php”;

include “configuration.php”;

$us= new Usuario();

$us->usuario=”santiagozky”;

$us->password=”secreto”;

$us->nombre=”‘santiago”;

if($us->Save()){

echo “genial “;

} else{ “owww “;}

$us2= new Usuario();

$us2->Get($us->usuarioId);

echo “$us2->nombre”;

?>

Como ven, nada complicado.

Pueden ver más documentación aquí.

Comenzando con Spring

Para cierto proyecto en mi trabajo he tenido que comenzar a usar Spring. Todavía no lo comienzo a usar formalmente, pero he leido mucho y ha sido muy interesante.

Debo admitir que había leido mucho sobre IoC (inversión de control o inyección de dependencias) pero no lo había entendido bien hasta que probé un demo de Spring.

La documentación que mas me fue útil es un manual de MyEclipse y la documentación de Spring

Primeros pasos con LaTeX

LaTeX es un lenguaje para edición de textos científicos. Yo conocía de su existencia desde hace mucho pero nunca había intentado usarlo, sin embargo decidí probarlo para un documento para mi clase de métodos formales en ingeniería de software y quedé bastante satisfecho.

Los primeros pasos fueron un suplicio. Empezé editando a mano todo, buscando cada vez la etiqueta que necesitaba (era una tarea sobre teoría de conjuntos) pero después de un rato mi profesor me recomendó TeXmacs que es un editor WYSISYG (lo que ves es lo que obtienes) y me gustó bastante.

Para que se den una idea de como es un documento LaTeX vean mi tarea (solo es un fragmento)

\item Ejercicio 6

$n \in \mathbbm{N}, 4| (5^n – 1)$

$m = nk$ donde $m = 5^5 – 1$ y $n = 4$ \

Entonces $5^n – 1 = 4 k$, $k \in \mathbbm{N}$

…….

\item Ejercicio 7

$\sum_{i = 0}^n i^3 = \frac{n^2 (n + 1)^2}{4}$

Para n=0: 0=0.

Nuestra H.I: $\sum_{i = 0}^n i^3 = \frac{n^2 (n + 1)^2}{4}$

Por demostrar: $\sum_{i = 0}^{n + 1} i^3 = \frac{(n + 1)^2 (n + 2)^2}{4}$

$\frac{n^2 (n + 1)^2}{4} + (n + 1)^3 = \frac{(n + 1)^2 (n + 2)^2}{4}$

$A \cup (B \cap C) = (A \cup B) \cap (A \cup C)$

Si $x \subseteq A$ entonces $x \subseteq (A \cup B)$ y $x \subseteq (A \cup
C)$.

Como esta en ambos entonces $x \subseteq (A \cup B) \cap (A \cup C)$.

Si $x \subseteq (B \cap C)$ entonces $x \subseteq (A \cup B)$ y $x \subseteq
(A \cup C)$, asi que $x \subseteq (A \cup B) \cap (A \cup C)$.

Por estas dos afirmaciones demostramos que $A \cup (B \cap C) \subseteq (A
\cup B) \cap (A \cup C)$.

Si $x \subseteq A$ entonces $x \subseteq A \cup (B \cap C)$.

Si $x \subseteq B$ entonces $x \subseteq C$, por lo que x$\subseteq (B \cap
C)$.

Por lo tanto $A \cup (B \cap C) \supseteq (A \cup B) \cap (A \cup C)$.

As\’{\i} que $A \cup (B \cap C) = (A \cup B) \cap (A \cup C)$.

Parece complicado, y al principio lo es, pero después de un rato empieza a ser intuitivo y es mucho mas rápido que usar algun otro editor al estilo word.

Tentaciones

Ver en el update manager el mensaje “New distribution realease ’8.04 LTS’ is available” supone una gran tentación para mi, pero estoy seguro de que sucumbir antes de que terminen clases será desastroso. Tengo una configuración bastante peculiar como para ponerme a experimentar a días de entregar proyectos finales.

Actualización

Perfecto… No había notado que la función de obtener la carátula de los discos desde amazon dejó de funcionar, al parecer ya funciona en la versión 1.4.9 pero solo está en hardy. Mas tentaciones.

Sun y sus compras

Muchos ya sabrán que Sun Microsystems compró MySQL hace poco en una movida que llamó bastante la atención. Bien, pues hoy me entero en Entre Tuxes y Pepinos que Sun acaba de comprar también la compañía Innotek, los creadores de VirtualBox (Virtualización).

Dos grandes compras en menos de un mes es sin duda algo importante. Algo me dice que Sun busca posicionarse bien en el mercado de servidores en los próximos años. Ya cuenta con la tecnología Java que ha tenido bastante éxito y si le sumas un excelente manejador de base de datos y un sistema de virtualización la cosa se pone interesante. Ahora Sun cuenta con todo lo necesario para ofrecer una exelente plataforma para servidores: Solaris, Virtualización (que tan de moda está), un excelente gestor de DB y java encima del pastel. Sin duda una excelente propuesta.

Estaré al tanto de próximos movimientos para avisarles que pasa