Archivo

Archivo para enero, 2009

Google libera nuevo Servlet Engine: GSE

Miércoles, 28 de enero de 2009

Google liberó el 27 una nueva implementación de un seervlet engine llamada GSE. Por los momentos y según las propias palabras de sus creadores no hay ninguna razón para cambiarse de Tomcat.

The “toy” servlet engine supplied with the test suites would have the same core http processing code (as far as possible) as the servlet engine which powers GMail etc. For folks outside of Google, there’s really no compelling argument to drop Apache Tomcat/Jetty, etc. in favor of OpenGSE’s reference servlet engine, but anyone interested in servlet engine and servlet spec compliance would have a fantastic learning resource available to them.

La palabra clave aquí es ver el mecanismo interno de la especificación. Como es tan pequeño y sencillo quizas es un excelente punto de partida para aprender como funcionan las cosas, una implementación sencilla (al menos comparada con el venerable Tomcat el cual tiene un montón de funcionalidad).

Blogalaxia:, , , , ,
Technorati:, , , , ,
To2blogs:, , , , ,
Del.icio.us:, , , , ,

java, kodegeek, opensource , , , , ,

Curso grátis de JavaFX (JavaPassion)

Martes, 27 de enero de 2009

James Weaver y San Shin están ofreciendo un curso grátis sobre JavaFX. Tuve la oportunidad de conocer a James en javaOne (excelente instructor) y Shang Shin tiene tiempo escribiendo muy buenos cursos sobre Java en línea.

Gratis y bueno, no me lo pierdo :)

Blogalaxia:, , ,
Technorati:, , ,
To2blogs:, , ,
Del.icio.us:, , ,

java, programación , ,

¿Como encontrar el último día hábil del mes en Java?

Lunes, 26 de enero de 2009

Quizas a usted alguna vez le toco programar como encontrar el último día hábil del mes. La definición:

Es el último día del mes, que no cae un fin de semana y que no es un día feriado.

Para trabajar este ejemplo utilizaremos fechas de los Estados Unidos, mercado de finanzas. En el caso de los días feriados, vamos a utilizar el calendario de OCC (Options Clearing Corporation). Dependiendo del área y país en donde usted trabaje el calendario de las fechas será distinto (por ejemplo Estados Unidos y Venezuela).

La solución en Java es sencilla, usando la clase Calendar. Después de jugar un poco al final terminé escribiendo esta clase que muestra el último día hábil del mes y le dice a usted si la fecha entrada por el teclado es un día hábil o no:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
package com.kodegeek.blog.finance;
 
import java.text.DateFormat;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
import java.util.HashSet;
import java.util.ResourceBundle;
import java.util.Scanner;
import java.util.Set;
import java.util.logging.Logger;
 
/**
 * Helper date methods tailored for the financial industry.
 * License: LGPL
 * BLOG: http://kodegeek.com
 * @author josevnz@kodegeek.com
 *
 */
public final class DateHelper {
 
	private final static ResourceBundle BUNDLE;
	private final static Logger log;
	private static final Set holidays;
 
	static {
 
		BUNDLE = ResourceBundle.getBundle(DateHelper.class.getName());
 
		log = Logger.getLogger(DateHelper.class.getName());
 
		// Populate the holidays set
		holidays = new HashSet();
		for (String dateStr: BUNDLE.getString("com.kodegeek.blog.finance.DateHelper.holidays").split(";\\s*", -1)) {
			try {
				holidays.add(DateFormat.getDateInstance(DateFormat.DEFAULT).parse(dateStr));
			} catch (ParseException e) {
				log.warning(String.format(BUNDLE.getString("com.kodegeek.blog.finance.DateHelper.error.badDate"), dateStr));
				continue;
			}
		}
 
	}
 
	/**
	 * Default constructor
	 */
	private DateHelper() {
		// Only static methods go on this class
	}
 
	/**
	 * Check if a given date is the last business day of the month
	 * @param aDate The date to test
	 * @return True if is the last day of the month, false otherwise
	 */
	public final static boolean isLastBusinessDayOfMonth(final Date aDate) {
		boolean isLastBusinessDay = false;
 
		// Can do a comparison?
		if (aDate == null) {
			return isLastBusinessDay;
		}
 
		Calendar calendar = Calendar.getInstance();
 
		// Current date on a weekend
		calendar.setTime(aDate);
		int day = calendar.get(Calendar.DAY_OF_MONTH);
		int month = calendar.get(Calendar.MONTH);
		int year =  calendar.get(Calendar.YEAR);
 
		int lastbusinessDayOfMonth = getLastBusinessDayOfMonth(month, year);
		if (lastbusinessDayOfMonth == day) {
			isLastBusinessDay = true;
		}
 
		return isLastBusinessDay;
	}
 
	/**
	 * Get the last business day of the month for a given month / year combination
	 * @param month The month
	 * @param year The year
	 * @return The last business day
	 */
	public static int getLastBusinessDayOfMonth(final int month, final int year) {
		int day = -1;
		Calendar calendar = Calendar.getInstance();
		calendar.set(Calendar.MONTH, month);
		calendar.set(Calendar.YEAR, year);
		calendar.set(Calendar.DAY_OF_MONTH, calendar.getActualMaximum(Calendar.DAY_OF_MONTH));
 
		// Keep looking backwards until the day is not a weekend or a holiday
		while(true) {
			if (calendar.get(Calendar.DAY_OF_WEEK) == Calendar.SATURDAY) {
				calendar.add(Calendar.DAY_OF_MONTH, -1);
				continue;
			} else if (calendar.get(Calendar.DAY_OF_WEEK) == Calendar.SUNDAY) {
				calendar.add(Calendar.DAY_OF_MONTH, -2);
				continue;
			} else if (holidays.contains(calendar.getTime())) {
				calendar.add(Calendar.DAY_OF_MONTH, -1);
				continue;
			}
			break;
		} // End while
		day = calendar.get(Calendar.DAY_OF_MONTH);
		return day;
	}
 
	/**
	 * Unit test, load today date and check if is a end of the month
	 * @param args The date to test from the command line
	 * @throws Exception If the date is invalid for the given local
	 */
	public static void main(String [] args) throws Exception {
		Scanner scan = new Scanner(System.in);
		do {
			String currDateStr = null;
			SimpleDateFormat format = new SimpleDateFormat("yy-M-d");
			try {
				System.out.println("Please enter a date to check (YYYY-MM-DD, Ctrl-C to exit):");
				currDateStr = scan.nextLine();
				Date date = format.parse(currDateStr);
 
				if (date != null) {
					Calendar calendar = Calendar.getInstance();
					calendar.setTime(date);
					int month = calendar.get(Calendar.MONTH);
					int year =  calendar.get(Calendar.YEAR);
					System.out.println(String.format("Last business day of the month: %d", getLastBusinessDayOfMonth(month, year)));
					System.out.println(String.format("%s %s", currDateStr,isLastBusinessDayOfMonth(date) == true? "Is the last business day": "Is not the last business day"));
				}
			} catch (ParseException pExp) {
				System.err.println(String.format("Ignoring bad date: '%s'", currDateStr));
			}
		} while (true);
	}
 
}

El resource bundle lo único que contiene son los días feriados:

1
2
3
# Bank holidays per OCC calendar 2009 - http://www.optionsclearing.com/market/infomemos/2008/oct/24961.pdf
com.kodegeek.blog.finance.DateHelper.holidays=Jan 01, 2009;January 19, 2009; Feb 26, 2009;Apr 10, 2009;May 25, 2009;July 3, 2009; Sep 7, 2009; Nov 26, 2009; Dec 25, 2009; Oct 12, 2009; Nov 11, 2009
com.kodegeek.blog.finance.DateHelper.error.badDate=Got bad date '%s' from property

La idea es buscar el último día del mes y de allí contar hacia atrás, esquivando fines de semana y días feriados.

Please enter a date to check (YYYY-MM-DD, Ctrl-C to exit):
2009-02-27
Last business day of the month: 27
2009-02-27 Is the last business day

En una siguiente entrega les mostraré como hacer lo mismo en Ruby.

Blogalaxia:, , ,
Technorati:, , ,
To2blogs:, , ,
Del.icio.us:, , ,

java, linux, programación, ruby , , ,

Opiniones de Linus sobre Git, KDE y el Kernel

Domingo, 25 de enero de 2009

Siguiendole la pista a un enlace desde Slashdot, Computer World publicó una breve entrevista sobre Linus hablando sobre cosas como Git contra Subversion, el Kernel y su desencanto con KDE.

En particular no veo con importancia que Linus se haya cambiado de KDE a Gnome. Una cosa que mucha gente no se da cuenta es que la interfaz gráfica es algo que tiene que funcionar tan bien que uno no se da cuenta que está allí. En Linux, independientemente si es Gnome o KDE es una vaina que no tiene el nivel de refinamiento de (preparense) Windows ni mucho menos OSX.

Es hora de que Linux cuente con un sólo frente de desarrollo, ya sea KDE o Gnome. El hecho de que hayan dos grupos de desarrolladores jugando a mejorar dos entornos es un desperdicio. La mayoría de los usuarios de Linux como yo nos vale un bledo que es lo que estamos usando, sólo nos interesa que funcione.

O como decía Linux refieriendose al estado programas como CVS o Subversion:

I want all my code to be open source, but I will use the best tool for the job and BitKeeper was the best tool and at the time the alternatives sucked so bad they were shit. When the alternatives are so bad I will take proprietary code. Proprietary was a downside, but what choice did I have? Hey, I usually do my presentation slides in PowerPoint.

Ahh, pragmatico Linus. Por eso es que Linus llegó tan lejos, imaginense si Richard Stallman la hubiera pegado con Hurd :) (Si, ya escucho a la orda de pendejos rasgandose las vestiduras por este tipo de comentarios)

Blogalaxia:, , , , ,
Technorati:, , , , ,
To2blogs:, , , , ,
Del.icio.us:, , , , ,

linux, opensource , , , , ,

Barak Obama, el super heroe

Jueves, 22 de enero de 2009

Barak Obama - Spider Man

Barak Obama y el Hombre Araña

Al menos que usted viva como las avestruces y haya tenido la cabeza enterrada los últimos 2 años seguro sabe quien es Barak Obama. El hecho de ser el primer presidente afroamericano lo converte en un hecho historico para las minorias en los Estados Unidos.

Curioso hecho es que la gente Marvel ha sacado una edición especial del Hombre Araña junto con Obama (Enero 2009), combatiendo al super villano camaleón, antes de su nominación como presidente.

El mundo de los comics no ha estado tranquilo en los últimos dos años; Quizas porque las ventas han sufrido con la creciente crisis económica global o quizas porque de verdad incrementa el consumo, tanto Marvel como DC Comics se han dado a la tarea de traer un par de cambios en sus tiras cómicas.

Batman - R.I.P
La muerte de Batman

El más reciente fué la muerte del Batman original (Diciembre 2008); Bruce Wayne muere después de varios años de combatir a los criminales, agobiado por múltiples enemigos. En mi opinión un destino triste para el hombre murciélago (aunque como en todos los comics, nuestros heroes siempre vuelven de alguna manera)

Captain America - Civil War
El mundo le dice adios al Capitan America

Otro super héroe que mordió el polvo fué el Capitan America (Abril 2007). Parte de lo que se conoce como “Civil Wars” (con analogías muy directas al entorno político del gobierno de George Bush), abrió la historia del mundo de los super heroes, quizas mostrando que en la realidad actual ya no hay espacio para alguien con la mentalidad del Capitan America.

Death of Colossus - Legacy Virus
Colossus se sacrifica por todos los mutantes del universo de Marvel

Es curioso  como los comics capturan el sentimiemto de las epocas, aún en sus formas más distorsionadas; Ya para dejarlos le muestro uno de los primeros comics de mi colección, en este caso es la muerte de Colossus (parte de los X-Man) el cual se sacrifica para liberar a la raza mutante de un virus letal llamada el “Legacy Virus”. No es casualidad los paralelos entre el virus de los mutantes y los miedos irracionales hacia los enfermos de HIV (El comic es del 2001).

comics, kodegeek , , , , , ,

Cuando Subversion no es suficiente: Git

Miércoles, 21 de enero de 2009

CVS tuvo su momento. Luego Subversion apareció y se convirtió en un estandarte corporativo (al menos en Wall Street, con CVS y otros mordiendo el polvo). Sin embargo los Alpha Geek llevan rato utilizando Git (ya el pana Sdelmont me lo había mencionado una vez, y el lo usa todo el tiempo tal y como lo hacen los desarrolladores de Ruby Rails).

Git es la respuesta de Linus Torwalds a CVS. Es distribuido (no centralizado como Subversion), OpenSource y aparentemente ganando mucha tracción (ya muchos proyectos OpenSource como Perl o Linux se movieron). No voy a hacer una comparación oficial de las ventajas o desventajas de cada uno, más bien los dejo con la versión oficial de Git contra Subversion.

Ya me he topado con varios proyectos que requieren Git, así que me di a la tarea de montarlo en OS X. Por suerte, los chamos de Google ya tienen unos binarios listos para usar. Lo otro es que hay buen soporte para Eclipse (aún no lo he probado).

¿Y que hay de sitios que hospeden código gratuito con Git? No creo que muevo el código de Kodegeek.com fuera de CVS en SF.net para ponerlo en github.com (solamente soportan 100 MB, lo cual apenas alcanzaría para el proyecto).

¿Saben de algún proveedor bueno para Git que tenga espacio ilimitado como Sf.net?

Blogalaxia:, , , ,
Technorati:, , , ,
To2blogs:, , , ,
Del.icio.us:, , , ,

opensource, programación , , , ,

Hola mundo en Java: Static

Martes, 20 de enero de 2009

Una forma alternativa de escribir hola mundo en Java, sin usar el método ‘main’:

1
2
3
4
5
6
public class Hello {
    static {
        System.out.println("Hola mundo");
        System.exit(0);
    }
}

Todo tiene que ver con como funcionan los inicializadores estáticos en Java. Divertido ver una forma alternativa de como escribir el programa más popular de todos los tiempos ;)

Blogalaxia:, ,
Technorati:, ,
To2blogs:, ,
Del.icio.us:, ,

java, programación , ,

UML y Violeta: Un editor práctico de UML

Lunes, 19 de enero de 2009

Recuerdo hace años cuando en mi primer trabajo comenzamos a usar Rational Rose (Hoy end día IBM) para hacer el modelado de UML; En ese entonces no habían muchos productos (buenos) en el mercado y al final pagamos una suma generosa por varias licencias, al menos para quienes hacíamos el diseño de las aplicaciones web.

En aquel entonces UML era la moda y ningún desarrollador respetable podía hacer un diseño o implementación sin este; Si bien los diagramas de clase y casos de uso nos resultaron super útiles para establecer las bases del diseño (Nosotros usabamos RUP para el desarollo), pronto nos encontramos con que no queríamos generar código directamente de los diagramas UML, además de que la versión de Rational Rose que utilizabamos en aquel entonces no era lo más rapida que digamos.

Los tiempos han cambiado y creo que la gente ahora se preocupa más por entregar código que sirve en vez de mortificarse mostrando dibujos (perdón, diagramas UML).

Pero no sólo eso. También hay mejores herramientas gratuitas, como Argo UML (el cual tiene mucha funcionalidad) o Violet.

En particular Violet me encanta porqué es sencillo (si, no tiene el %99 de las cosas que un proyecto mediano no necesita), corre rápido, se puede integrar con Eclipse y es OpenSource (si usted se siente inclinado a mejorarlo, pues nada a echar código).

Y ustedes, ¿qué utilizan para sus diagramas en UML?

Blogalaxia:, , , ,
Technorati:, , , ,
To2blogs:, , , ,
Del.icio.us:, , , ,

java, opensource , , ,

Kodegeek ahora en Facebook

Sábado, 17 de enero de 2009

El grupo Kodegeek fué creado en Facebook. La idea es que participar y escribir en temas relacionados con programación, Internet, informática. Todo entre amigos.

¿Porqué este grupo y no otro grupo? Bueno, la idea es que solamente gente que se conozca integre este grupo. Eso hace el grupo más personal, nada de “trolls” o sabelotodos. También tienen mi garantia que de las direcciones de correo o información de los integrantes no va a ser explotada de manera comercial.

Lo invito entonces a que se una al grupo.

Por cierto, ¿les comente que estoy buscando moderadores?

Blogalaxia:,
Technorati:,
To2blogs:,
Del.icio.us:,

kodegeek, linux, programación , ,

Instalando Fedora Core 10 en mi laptop, algo me dice que este no es el año de Linux en el escritorio

Sábado, 10 de enero de 2009

En este momento estoy trabajando en un proyecto personal con Veronica, tal y como se los comentaba en una entrada anterior. Si bien la máquina que tengo corriendo OS X es muy poderosa, prefiero utilizar Linux para correr ciertos procesos ya que está mejor equipado para tareas en el lado del servidor (paquetes preparados, es un sistema operativo robusto, etc).

Sin embargo Fedora Core 10 me ha dado dolores de cabeza en su configuración; El primero de ellos es la configuración automática del entorno gráfico, el cual acepta la resolución correcta pero congela (literalmente) todo la laptop cuando termina de cargar. Es un error increíblemente bizarro, el cual no tiene trazas de error y que no ocurre por ejemplo si instaló Ubuntu 7 (si, es la versión que tenia a la mano). Sin embargo para lo que yo necesito no requiero X Windows en la laptop (de hecho ahorro memoria matando al servidor X) así que durante la instalación le dije al instalador que usara el modo de texto:

image=vmlinuz.initrd text

La instalación transcurrió sin problemas, hasta que llegó el momento de detectar mis dispositivos de red: La tarjeta de red inalámbrica (modelo Linksys Wireless-G WPC54G) fué reconocida, pero el firwmare no cargó, ya que no viene distribuido con ninguna distribución de Linux (la tarjeta de red usa un manejador de Broadcom el cual es propietario y posiblemente nunca será abierto).

La tarjeta PCI fué reconocida

[root@hplaptop ~]# lspci|grep -i wire
02:00.0 FireWire (IEEE 1394): Texas Instruments TSB43AB22/A IEEE-1394a-2000 Controller (PHY/Link)
07:00.0 Network controller: Broadcom Corporation BCM4306 802.11b/g Wireless LAN Controller (rev 03)
[root@hplaptop ~]#

Esto es básico, no está tan mal. Pero hubo un problema en la inicialización del dispositivo:

Jan  7 19:27:40 localhost kernel: firmware: requesting b43/ucode5.fw
Jan  7 19:27:40 localhost kernel: b43-phy0 ERROR: Firmware file “b43/ucode5.fw” not found
Jan  7 19:27:40 localhost kernel: b43-phy0 ERROR: You must go to http://linuxwireless.org/en/users/Dr
ivers/b43#devicefirmware
and download the latest firmware (version 4).Jan  7 19:27:40 localhost firmware.sh[2051]: Cannot find  firmware file ‘b43/ucode5.fw’

Jan  7 19:27:40 localhost NetworkManager: <info>  (eth0): carrier now OFF (device state 3)Jan  7 19:27:40 localhost NetworkManager: <info>  (eth0): device state change: 3 -> 2
Jan  7 19:27:40 localhost NetworkManager: <info>  (eth0): deactivating device (reason: 40).

Ni corto ni perezoso me dirigí al sitio web, tal y siguiendo las instrucciones para la versión del kernel de Fedora Core 10 copié los archivos a la laptop (recuerden, la laptop funcionaba sin problemas con el cliente DHCP usando ethernet con cable). Del log /var/log/messages:

Jan 10 17:02:38 localhost avahi-daemon[2027]: Loading service file /services/ssh.service.
Jan 10 17:02:38 localhost kernel: firmware: requesting b43/pcm5.fwJan 10 17:02:38 localhost kernel: firmware: requesting b43/b0g0initvals5.fw
Jan 10 17:02:38 localhost kernel: firmware: requesting b43/b0g0bsinitvals5.fwJan 10 17:02:38 localhost kernel: b43-phy0: Loading firmware version 410.2160 (2007-05-26 15:32:10)
Jan 10 17:02:38 localhost kernel: Registered led device: b43-phy0::txJan 10 17:02:38 localhost kernel: Registered led device: b43-phy0::rx
Jan 10 17:02:38 localhost kernel: Registered led device: b43-phy0::radioJan 10 17:02:38 localhost avahi-daemon[2027]: Network interface enumeration completed.

¡Muy bien! Ahora sólo tengo que revisar si la interfaz inalámbrica funciona bien. Lo primero es ver si puede detectar las redes vecinas:

[root@hplaptop ~]# iwlist wlan0 scan
wlan0     Scan completed :
Cell 01 – Address: 00:1F:F3:C4:CC:C4
ESSID:”tepuyes2″
Mode:Master
Channel:1
Frequency:2.412 GHz (Channel 1)
Quality=78/100  Signal level:-52 dBm  Noise level=-66 dBm
Encryption key:on
IE: WPA Version 1
Group Cipher : TKIP
Pairwise Ciphers (1) : TKIP
Authentication Suites (1) : PSK
IE: IEEE 802.11i/WPA2 Version 1
Group Cipher : TKIP
Pairwise Ciphers (2) : CCMP TKIP
Authentication Suites (1) : PSK
IE: Unknown: 2D1A2C0217FFFF000000000000000000000000000000000000000000
Bit Rates:1 Mb/s; 2 Mb/s; 5.5 Mb/s; 11 Mb/s; 6 Mb/s
9 Mb/s; 12 Mb/s; 18 Mb/s; 24 Mb/s; 36 Mb/s
48 Mb/s; 54 Mb/s
Extra:tsf=000000010a58699c
Extra: Last beacon: 656ms ago

Cell 02 – Address: 00:1E:52:79:34:74
ESSID:”Botart’s Network”
Mode:Master
Channel:3
Frequency:2.422 GHz (Channel 3)
Quality=71/100  Signal level:-58 dBm  Noise level=-66 dBm
Encryption key:on
IE: WPA Version 1
Group Cipher : TKIP
Pairwise Ciphers (1) : TKIP
Authentication Suites (1) : PSK
IE: IEEE 802.11i/WPA2 Version 1
Group Cipher : TKIP
Pairwise Ciphers (2) : CCMP TKIP
Authentication Suites (1) : PSK
IE: Unknown: 2D1A4C101BFFFF000000000000000000000000000000000000000000
Bit Rates:1 Mb/s; 2 Mb/s; 5.5 Mb/s; 11 Mb/s; 6 Mb/s
9 Mb/s; 12 Mb/s; 18 Mb/s; 24 Mb/s; 36 Mb/s
48 Mb/s; 54 Mb/s
Extra:tsf=000000001bbc0180
Extra: Last beacon: 518ms ago

Nada mal, mi red sale en la lista.  ¿Y que tal el estado de la interfaz wlan0?

No está conectada aún. Bueno, hay que configurarla a mano asegurándonos de que pueda ver la red inalámbrica con el SSID adecuado:

[root@hplaptop ~]# cat /etc/sysconfig/network-scripts/ifcfg-wlan0
# Broadcom Corporation BCM4306 802.11b/g Wireless LAN Controller
DEVICE=wlan0
HWADDR=00:0c:41:2e:b2:18
USERCTL=yes
ONBOOT=yes
BOOTPROTO=dhcp
TYPE=Wireless
MODE=Managed
#ESSID=tepuyes2
RATE=54Mb/s

En mi caso utilizo WPA, y así que tengo que configurarlo para que la comunicación de los certificados digitales trabaje bien:

[root@hplaptop ~]# cat /etc/wpa_supplicant/wpa_supplicant.conf
ctrl_interface=/var/run/wpa_supplicant
ctrl_interface_group=wheel
network={
ssid=”tepuyes2″
psk=”XXXX”
}
[root@hplaptop ~]#

Después de reiniciar un par de veces, volví a revisar la configuración básica:

[root@hplaptop ~]# iwconfig
lo        no wireless extensions.

eth0      no wireless extensions.

wmaster0  no wireless extensions.

wlan0     IEEE 802.11bg  ESSID:”NETGEAR”
Mode:Managed  Frequency:2.462 GHz  Access Point: 00:09:5B:C2:F6:5A

Bit Rate=2 Mb/s   Tx-Power=27 dBm
Retry min limit:7   RTS thr:off   Fragment thr=2352 B
Encryption key:off
Power Management:off
Link Quality=63/100  Signal level:-65 dBm  Noise level=-66 dBm
Rx invalid nwid:0  Rx invalid crypt:0  Rx invalid frag:0
Tx excessive retries:0  Invalid misc:0   Missed beacon:0

pan0      no wireless extensions.

¿Ya tengo dirección IP?

root@hplaptop ~]# ifconfig -a
eth0      Link encap:Ethernet  HWaddr 00:02:3F:2F:38:D2
inet addr:10.0.1.194  Bcast:10.0.1.255  Mask:255.255.255.0
inet6 addr: 2002:4577:929d:0:202:3fff:fe2f:38d2/64 Scope:Global
inet6 addr: fe80::202:3fff:fe2f:38d2/64 Scope:Link
UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
RX packets:382 errors:0 dropped:0 overruns:0 frame:0
TX packets:196 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:38391 (37.4 KiB)  TX bytes:38171 (37.2 KiB)

lo        Link encap:Local Loopback
inet addr:127.0.0.1  Mask:255.0.0.0
inet6 addr: ::1/128 Scope:Host
UP LOOPBACK RUNNING  MTU:16436  Metric:1
RX packets:0 errors:0 dropped:0 overruns:0 frame:0
TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:0 (0.0 b)  TX bytes:0 (0.0 b)

pan0      Link encap:Ethernet  HWaddr 56:58:74:F3:A2:B1
BROADCAST MULTICAST  MTU:1500  Metric:1
RX packets:0 errors:0 dropped:0 overruns:0 frame:0
TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:0 (0.0 b)  TX bytes:0 (0.0 b)

wlan0     Link encap:Ethernet  HWaddr 00:0C:41:2E:B2:18
inet6 addr: fe80::20c:41ff:fe2e:b218/64 Scope:Link
UP BROADCAST MULTICAST  MTU:1500  Metric:1
RX packets:0 errors:0 dropped:0 overruns:0 frame:0
TX packets:1 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:0 (0.0 b)  TX bytes:108 (108.0 b)

wmaster0  Link encap:UNSPEC  HWaddr 00-0C-41-2E-B2-18-F4-EF-00-00-00-00-00-00-00-00
UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
RX packets:0 errors:0 dropped:0 overruns:0 frame:0
TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:0 (0.0 b)  TX bytes:0 (0.0 b)

[root@hplaptop ~]#

Aún no :( . También hay varios indicadores de la tarjeta inalambrica los cuales me hacen pensar que hace falta algo más:

[root@hplaptop ~]# iwlist wlan0 power
wlan0     Current mode:off

[root@hplaptop ~]# iwlist rate
lo        no bit-rate information.

eth0      no bit-rate information.

wmaster0  no bit-rate information.

wlan0     unknown bit-rate information.
Current Bit Rate=2 Mb/s

pan0      no bit-rate information.

[root@hplaptop ~]# iwlist key
lo        no encryption keys information.

eth0      no encryption keys information.

wmaster0  no encryption keys information.

wlan0     2 key sizes : 40, 104bits
4 keys available :
[1]: off
[2]: off
[3]: off
[4]: off
Current Transmit Key: [1]

pan0      no encryption keys information.

Mucho se ha escrito sobre lo difiicil que es configurar una tarjeta de red en Linux usando manejadores propietarios, y hay mucha información en la red sobre como configurar y resolver problemas de instalación.

Mis recomendaciones por ahora:

  • No compre tarjetas que no funcionan con manejadores nativos de Linux. NDIS y otros proyectos son un parche encima de la incompetencia de los vendedores en proveer manejadores abiertos. En particular la tarjeta que compré fué un gasto de $20 (yo me confié pensando que Linksys por hacer otros productos OpenSource seguro haría lo mismo con la tarjeta de red. Tremendo error).
  • No descarte su enlace por Ethernet si está configurando su laptop.
  • Busque ayuda en la red usando Google y otros buscadores. Avance lo más que pueda y después pida ayuda (eso le permitirá entender mejor el problema, a la vez que aprende).

Por ahora sólo me queda pedir ayuda en la lista de Fedora Core en laptops, para tratar de resolver mi problema de la tarjeta de video y la conexión inalambrica. Mientras sigo intentando tengo conectada la laptop al puerto Ethernet de mi Time Capsule de Apple, con lo cual me puedo concentrar en instalar las aplicaciones que quería montar desde el principio y sobre todo en trabajar en mi proyecto.

¿Y usted que opina, tiene algún consejo que quiere compartir?

Blogalaxia:, ,
Technorati:, ,
To2blogs:, ,
Del.icio.us:, ,

kodegeek, linux, opensource , ,