Yearly Archives: 2007

Formulario transparente con C# y VB

Desde C# podemos hacer fácilmente un formulario transparente o semitransparente. Un formulario de WindowsForms que están dentro del nombre de espacio System.Windows.Forms (lo que viene siendo el típico formulario) tiene una propiedad de tipo doble que se llama Opacity. Con esta propiedad, podemos indicar un valor entre 0 y 1, el valor 0 indica completamente transparente y 1 indica que es opaco (como son los formularios por defecto).

Este efecto puede ser útil para realizar efectos visuales que hagan mas agradable el uso de nuestra aplicación, como por ejemplo mostrar mensajes de alerta con un toque de transparencia con por ejemplo entre 90% y 95% de transparencia o por ejemplo capturar el evento cuando se mueve un formulario y efectuar una transparencia mientras este se encuentre en movimiento.

En CSharp

Form formulario = new Form();
formulario.Opacity = 0.50;
formulario.Show();

En Visual Basic

Dim formulario As New Form()
formulario.Opacity = 0.50
formulario.Show()

Corrección

aundlang comenta acertadamente que el formulario.Opacity es de 0 a 1 y no de 0 a 100. Corrijo la entrada

JOGL, OpenGL en Java

No hace mucho descubrí JOGL, es una librería de Java para poder acceder directamente a , gracias a los plugins de NetBeans. Con JOGL podemos crear desde juegos tridimensionales, en 3D, hasta aplicaciones con una mayor funcionalidad y mayor vistosidad en cuanto a gráficos se refiere.OpenGL

JOGL es una libreria que utiliza el JNI de Java para acceder a las funcionalides de C, por lo que el acceso a las funciones implementadas de OpenGL en JOGL, son realmente rápidas. Además de ofrecer todas las funciones de OpenGL, tiene una perfecta implementación con las librerías gráficas de Java AWT y Swing, por lo que podemos llegar a embeber OpenGL no solo dentro de la ventana, sino en controles, como por ejemplo crear efectos tridimensionales en botones.

Desde la página de plugins para NetBeans, podremos instalar el plugin de JOGL para NetBeans que nos ofrece ademas de una plantilla de aplicaciones JOGL, multitud de ejemplos para poder empezar a desarrollar. El sistema para instalar el plugin es descargar dicho plugin desde la página de NetBeans y luego en paquetes disponibles dentro de la sección de actualizaciónes (plugins) de NetBeans, encontramos una nueva categoría de JOGL desde la que podemos instalar todo lo que necesitamos. Si queremos instalar las librerías de JOGL independientemente de NetBeans o queremos ver algunos ejemplos o descargas como el JavaDoc de JOGL, que viene muy bien, podemos buscarlo en la página oficial del proyecto JOGL.

A partir de aquí, ya podemos empezar a realizar nuestras primeras pruebas y el resto ya depende de nosotros. Yo personalmente, tengo un libro de OpenGL para C y puedo decir que el 95% de las sentencias que aparecen en dicho libro, pueden implementarse sin dificultad en JOGL.

Nokia n70 en Ubuntu por USB

Hace algún tiempo cambié mi viejo movil por un Nokia n70. Este venía con un cable de USB y un software para sincronizarlo con el ordenador de Nokia, el Nokia PC Suite. Salvo algunos problemas menores con Windows, todo me ha ido de maravilla, pero en Linux viene el problema porque no sabía como hacerlo funcionar.

La primera y equivocada opción que pense para conectar mi n70 a mi Ubuntu fue por el Gnome Pilot, pero como ya he dicho, fue equivocada porque lo único que conseguí fue perder el tiempo. Después de investigar durante algún tiempo me topé con el protocolo OBEX que es el usado la comunicación por los moviles y algunas PDA's idependientes del medio de comunicación, lo que quiere decir que da igual si nos conectamos por USB, BlueTooth o IrDA (infrarrojos).

Gracias al Obex, encontré dos aplicaciones que vienen de perlas para conectar por USB al Nokia n70 en Linux y mas concretamente en mi caso en Ubuntu. La aplicación en cuestión es obexftp y obextool, ambos paquetes descargables desde los repositorios de Ubuntu por apt-get o Synaptic.

El primer paso en bajar los paquetes antes mencionados obexftp y obextool. Una vez nos hallamos bajado los paquetes vamos a buscar nuestro movil. En este caso, el mio es un Nokia n70, por lo que lo conecto por USB al ordenador y ejecuto la siguiente sentencia desde consola:

  sudo obexftp -u

Esta sentencia, que ha de ser ejecutada como root, por eso el sudo, nos encontrará en que interface se encuentra el dispositivo movil,

  Interface 0:

      Manufacturer: Nokia

      Product: Nokia N70

      Interface description: SYNCML-SYNC

  Interface 1:

      Manufacturer: Nokia

      Product: Nokia N70

      Interface description: PC Suite Services

Encontramos 2 interfaces, la 0 y la 1. En la 0, es como bien refleja la descripción para SYNC o sincronización, es decir, para intercambiar, contactos, tareas, etc. y la 1, que es la que nos interesa, es la de archivos.

Ya que tenemos reconocido el teléfono y sabemos donde esta, solo tenemos que ejecutar en la linea de comandos:

  sudo obexftp -u 1 -l

De esta forma, para realizar el ejemplo, nos mostrara en formato XML el listado de directorios que hay en el teléfono. Para más información sobre como poder conectar con el teléfono desde la consola, podemos ejecutar cualquiera de los 2 comandos siguiente:

  obexftp --help

  man obexftp

Una vez que ya podemos entrar en el dispositivo movil, vamos a ejecutar una sencilla herramienta gráfica para copiar archivos y explorar directorios. Si instalamos el paquete obextool, podremos ejecutar el siguiente comando en consola:

  sudo obextool --obexcmd "obexftp -u 1"

Desde esta herramienta, dispondremos de un sencillisimo explorador de archivos para poder conectarnos a nuestro telefono o cualquier dispositivo movil y subir o guardar archivos.

NetBeans 6.0 Beta 2 en PCLinuxOS

Como hace poco he reinstalado todo el sistema operativo y he sustituido mi Ubuntu 7.10 por PCLinuxOS que me va mucho mejor, estoy todavía instalando aplicaciones. Ya instalé como escribi en una entrada anterior juntando Eclipse con Aptana, pero ahora le toca el turno a NetBeans que me gusta más como editor de Java y como no, para probar los nuevos juguetes que tiene como el plugin de OpenGL de NetBeans 6 que promete mucho.

El caso es que cuando me bajo el instalador y lo ejecuto, sorprendentemente la ventana del instalador esta vacia. Todo esta en blanco, sin nada. Me daba algunos errores de ClearLook, pero el problema no era ese. Buscando y probando muchas cosas al final doy con la clave. El problema es que tengo Beryl corriendo (al parecer tambien ocurre con Compiz-Fusion) y parece ser que he ahí el problema, ya que tenemos que declarar la siguiente variable en el sistema:

AWT_TOOLKIT="MToolkit"

Esto lo haremos añadiendo la linea anterior en el archivo /etc/environment. Con esto ya podemos instalar NetBeans 6 Beta 2 con normalidad y usarla.

Habilitar la tecla Super (Windows) en PCLinuxOs

Tras configurar Beryl en PCLinuxOS, se hecha en falta la tecla <Super> que, a pesar de haber configurado el idioma del sistema en español, no funciona, perdiendo algunas funcionalidades del propio Beryl. La solución es mas que sencilla, lo que debemos de hacer es ir al Centro de Control (Control Center) de KDE y en el arbol de secciones, buscar la que pone Regionalidad y Accesibilidad. Una vez dentro vamos a Disposición del teclado cambiamos el teclo en formato americano por el nuestro en español (Spain) y aplicamos los cambios. Tras realizar el cambio, ya podemos usar la tecla <Super> la del logotipo de Windows para usarla, que para algo esta en el teclado.

Como conseguir el mejor IDE de desarrollo para la Web

Hace ya algunos años que me dedico a la programación en exclusiva de PHP en entornos web, pero a pesar de tratarse de entornos web, no son páginas web, sino webservices, donde la presentación gráfica esta de sobra porque todo se transmite por XML. Durante este tiempo he pasado por diferentes IDE's de programación, terminando en el Zend Studio 5.2 y 5.5, ya que para entornos de desarrollo complejos donde el numero de clases, interfaces, variables, etc. es enorme y se mueven multitud de datos, es el mejor con diferencia.

Es cierto que el Zend Studio es maravilloso si lo comparamos con el resto de IDE's de PHP que hay en el mercado, sobre todo y algo que los demás no tienen es el reconocimiento de las clases que nosotros mismos desarrollamos y su documentación al estilo PHPDoc. Hace algunos meses, redescubrí el plugin PDT de Eclipse, que había dejado de estar verde, para tener un autocompletado del código casi equiparable con el del propio Zend Studio, pero con la gran ventaja de ser mas ligero a pesar de que Eclipse consume más memoria  RAM.

Hace un par de días, vi por primera vez Aptana, un IDE basado en Eclipse que incorpora interesantes funcionalidades como una mejor cobertura del autocompletado de código en cuanto a HTML y CSS se refiere y algo que me ha maravillado, un autocompletado y reconocimiento de clases y funciones de Javascript. Esto me ha maravillado porque para desarrollar una web gráfica, es lo mejorcito que he visto.

Lo que había pensado y efectivamente se puede hacer, es que si PDT es un plugin de Eclipse y Aptana es otro plugin de Eclipse, quizás se pudieran mezclar creando un conjunto realmente bueno por no decir el mejor para el desarrollo web.  Lo más curioso, es que analizando un poco las funcionalidades de Aptana, me he dado cuenta o eso me ha parecido, que la parte de PHP usa el plugin PDT (al menos es igualito) pero de una versión vieja, que por mi experiencia creo que se trata de la 0.7. Así que aventurandome a mezclar los dos plugins y cruzando los dedos para que los apartados de PHP no se den de ostias, los instale.

El resultado de mi experimento es un Eclipse con el plugin de PDT y Aptana instalados a la perfección, si creo un nuevo proyecto de PHP con la vista de PHP (PDT) utiliza todo el entorno de PDT para las páginas PHP y el sitema de Aptana para todas las paginas de Javascript, HTML, CSS, etc. por lo que podemos tener el que sería para un profesional, el mejor IDE de desarrollo para PHP, HTML, CSS y Javascript que podemos encontrar, completamente gratuito y multiplataforma.

Traducir PCLinuxOs a español

Para los que no conozcan esta grandisima distribución, se trata de una distribución Linux basada en Mandriva. Para mi gusto, comparándola con el resto de distribuciones que he utilizado, es la más potente y la que mas se adapta en cuanto a entorno de escritorio se refiere (recalco que a mi parecer). El principal problema de esta distribución, es que por defecto, se instala en ingles ya que aún esta un poco verde. Esto puede parecer un problema aunque no lo es tanto, ya que la solución para traducirlo es muy sencilla. A continuación detallo los pasos a seguir bien estructurados sacados del foro oficial de PCLinuxOS.

Lo primero que debemos de hacer es abrir el Synaptic para descargar los siguientes paquetes: aspell-es, kde-il8n-es y locales-nl.

Una vez hayamos instalado los paquetes anteriores, es hora de ir al Control Center (Centro de Control) y seleccionar el apartado Regional & Accesibility y dentro de esta, la sección Country - Region & Language. A la derecha nos aparecera un menú desplegable con el texto Add Language, el cual nos permitira especificar Spanish. De paso y ya que estamos aquí podemos aprobechar para cambiar el Pais y ponerlo en el nuestro, España en mi caso, dentro de Europa Occidental.

Ahora debemos de buscar el archivo /etc/rpm/macros para indicar el idioma de instalación de las aplicaciones que instalemos. La forma de indicarlo sera separadas por dos puntos (:) indicar los formatos mas comunes de lenguaje preferidos, en nuestro caso para ponerlo en español podemos poner es:es_ES, lo que resultaria con el archivo el siguiente texto:

%_install_langs es:es_ES

Una vez hecho est, lo único que deberemos de hacer para traducir todas aquellas aplicaciones que no se hayan traducido automáticamente, sera reinstalarlas desde Synaptic.

Configuración de Compiz-Fusion en Ubuntu Gutsy 7.10

Acabo de actualizar mi Ubuntu Feisty 7.04 a Ubuntu Gutsy 7.10 desde el gestor de actualizaciones. Una vez lo he instalado y cerciorado de que todas mis aplicaciones funcionan como deben de funcionar, me he ido a lo mas suculento para mis ojos, Compiz-Fusion.

Dentro del menú Sistema->Preferencias-> Apariencia, encontramos una pestaña "Efectos visuales". Dentro de esta pestaña nos encontramos con 3 opciones: ninguno, normal y extra.

  • Ninguno: tendremos un escritorio normal y corriente.
  • Normal: tendremos un escritorio con algunos efectos.
  • Extra: tendremos un escritorio con muchos efectos.

El problema reside en que no se instala ninguna herramienta para la configuración de Compiz-Fusion, por lo que puede resultar muy triste sin ver los muchos efectos que tiene. La solución pasa por buscar en Synaptic el paquete compizconfig-settings-manager, el cual al instalarlo, nos mostrara una nueva opción en el menú en Sistema->Preferencias->Advanced Desktop Effects Setting, desde donde podremos configurar nuestro Compiz-Fusion o bien desde la opción de apariencia antes comentada, una nueva opción "personalizado" con un boton que indica, "preferencias de gtk"

Problema al instalar IIS en Windows XP

En mi empresa un proveedor nos ha proporcionado una herramienta de testeo de su WebService y esta estaba programada en ASP.Net. Por experiencia, se que este tipo de WebService que ha montado este proveedor son enormemente complicados, asi que quise hacer uso de su herramienta de test.

Al montarla me plantee 2 opciones, la primera y mas complicada y que por tanto rechace es un modulo de Apache que hace de pasarela entre ASP.Net y Apache. Esta opción la rechace porque era muy complicada, sobre todo cuando al integrar el módulo de apache este me decía un bonito mensaje de error de "Operation requested failed" y por tanto no podía arrancar apache.

Mi segunda opción y teoricamente más sencilla, era la de montarme un Internet Information Server (IIS) en mi flamante Windows XP Profesional con SP 2. Recalco lo de teóricamente porque las veces que he instalado un IIS ha sido, añadir complemento, instalar y a correr. Pero claro esta, estamos en una empresa de informática y como no, aquí todo debe de fallar, al menos, a la primera. Cuando insertando un "disco original de Windows" instalo el componente de IIS, este me da un error como el siguiente:

Programa de instalación no puede copiar el staxmem.dl_ de archivo.

Asegúrese de que el disco con etiqueta está en la unidad seleccionada abajo o proporcione la ubicación donde se puede encontrar el archivo

Por supuesto, el archivo staxmem.dl_ si que se encuentra en el disco y todo esta correcto, pero aún así, no funciona. Googleando durante algún tiempo, encuentro una referencia del soporte técnico de Microsoft con el título "Mensaje de error cuando el error intenta instalar componentes IIS en Windows XP". En esta página de referencia, lo que nos viene a decir es que hay una base de datos de seguridad corrompida y nos da un comando para repararla. El comando facilitado en cuestión es:

%windir%securitydatabasesecedit.sdb /p esentutl

Según el comando facilitado por Microsoft, secedit.sdb, que es la base de datos, lo debemos de ejecutar con los parámetros, pero realmente es una errata y es al revés, así que el comando sería el siguiente:

esentutl /p %windir%securitydatabasesecedit.sdb

De esta forma, nos aparecerá una ventana de dialogo, que nos preguntara que si queremos reparar la base de datos, así que pinchamos en Aceptar (Nota, no es aceptar, porque viene en ingles) y tras unos segundos, repara nuestra base de datos. No hace falta decir, que antes de hacer esto, hagais una copia de seguridad del archivo secedit.sdb por si las moscas.

Una vez reparada la base de datos de seguridad, ya podemos instalar nuestro IIS como si de cualquier otro componente se tratara.

Por último, vamos a registrar ASP.Net dentro de IIS para que funcione correctamente. Pare esto debemos de ejecutar el comando aspnet_regiis.exe con el parámetro -i para que funcione, tal que

%windir%Microsoft .NetFrameworkvX.xxxxxxxaspnet_regiis.exe -i

No hace falta decir, que antes de ejecutar este comando, deberemos de tener instalada alguna versión de .Net Framework en nuestro equipo.

Estos han sido los pasos que me han ayudado a instalar IIS con XP y ASP.Net, que aunque parezca una tontería, hay veces que puede llegar a complicarse.

Scripts personalizados para Nautilus

Quien no hecha de menos algunas opciones de Windows tales como Abrir con ..., que se iban almacenando en memoria y que podía llegar a personalizarse hasta cierto punto. Por ejemplo, imaginemos que tenemos un archivo en xml y disponemos de aplicación por defecto el Altova XmlSpy, ideal para trabajar con xml, pero además, queremos la posibilidad de abrirlo con el navegador web para que lo pinte de manera agradable para un vistazo rápido y ademas queremos la posibilidad de editarlo. Esto en Windows es bien facil, pero en Linux ¿Se complica la cosa? Pues no, es muy sencillo realizar unos cuantos script para con un simple click al boton derecho, podamos realizar diferentes operaciones sobre los archivos.

En primer lugar vamos a ir a la carpeta home del usuario y buscamos la carpeta oculta .gnome2, una vez dentro buscaremos la carpeta nautilus-scripts que es la carpeta donde se crean los scripts personalizados, tal que la ruta sea la siguiente: /home/%usuario%/.gnome2/nautilus-scripts.

Para este ejemplo voy a utilizar mis tres comandos favoritos y mas útiles que me pueden servir para mi día a día, por un lado ejecutar como administrador, por otro ejecutar en el navegador y por último, editar.

Dentro de la carpeta nautilus-scripts crearemos 3 archivos con los nombres de los comandos que vamos a utilizar, es decir "Ejecutar como root", "Abrir en el navegador" y "Editar". A continuación, editaremos los 3 archivos.

Ejecutar como root: dentro de este archivo colocamos la siguiente porción de código.

  for uri in $NAUTILUS_SCRIPT_SELECTED_URIS; do
     gksudo "gnome-open $uri" &
  done

Con esto haremos un gksudo, similar a lo que aparece cuando ejecutamos Synaptic por primera vez pidiendo la clave de administrador y así poder abrir carpetas y/o archivos como administrador. Realizamos un gnome-open para que abra por defecto la aplicación que tenga asociada el archivo o carpeta.

Abrir en el navegador: dentro colocamos el siguiente código.

  for uri in $NAUTILUS_SCRIPT_SELECTED_URIS; do
     gnome-www-browser $uri
  done

Utilizamos gnome-www-browser para que lo que abramos lo haga con la aplicación que tengamos asociada como navegador web por defecto en Gnome.

Editar: dentro colocamos el siguiente código.

  for uri in $NAUTILUS_SCRIPT_SELECTED_URIS; do
     gnome-text-editor $uri
  done

Utilizamos gnome-text-editor para que el archivo sea abierto con nuestro editor de textos configurado en Gnome.

Vemos que en todos los archivos hemos utilizado un for para ejecutar los scripts. Esto lo hacemos porque si seleccionamos un único archivo bien, pero si lo hacemos con varios archivos, como por ejemplo, queremos abrir estos tres archivos seleccionadolos todos y editandolos, podamos hacerlo sin necesidad de ir uno por uno.

Wine 0.9.46 ya esta en la calle

Hace un par de días salío la verisón 0.9.46 de wine con visibles mejoras.  Según la versión oficial, las mejoras son las siguientes:

  •  Arreglos y mejoras para Photoshop CS2.
  • Mayor soporte para la instalación de dispositivos.
  • Implementación de los nuevos textos Bidi que no dependen de libicu.
  • Mejoras sobre la implantación de Direct3D.
  • Comienzo de soporte de los puertos de I/O (Entrada y salida).
  • Errores varios de menor importancia corregidos.

Como ya expuse en otro artículo, existe una página desde la cual podemos descargar la última versión disponible en paquetes .deb y así ahorrarnos tener que compilar. Los paquetes de wine 0.9.46 para ubuntu los podeís descargar desde el enlace.

Me ha faltado poco tiempo para probar esta nueva versión y puedo decir que se ve alguna mejoría en cuanto al rendimiento de Direct3D, ya que este va ligeramente superior en cuanto a velocidad y se han arreglado algunos problemas que ocasinaban algunos efectos de luz, aunque no todos.

Instalar PHP-GTK 2 en Linux

Llevo ya bastante tiempo utilizando PHP-GTK 2 para hacer alguna que otra aplicación. En Windows me va de maravilla, ya que tienes Gnope que es autoinstalable y es de agradecer porque las primeras versiones de PHP-GTK 1 para mi eran un infierno. Otra alternativa son las últimas versiones compiladas de PHP-GTK para Windows, ya que es copiar y pegar, no hay que hacer nada para hacerlas correr.

Al dar el paso de Linux me encontre con un problema, y es que por mas que buscara, no había o no encontraba ningún paquete instalable de PHP-GTK. Buscando por internet veia como todo el mundo que lo utilizaba simpelemente hacia un:

  ./configure
  make
  make install

Al intentarlo yo, ingenuo de mi por ver la facilidad con que lo hacia el resto de la gente, lo intente, y lo único que consegui fue una consola llena de errores por todos lados.

Como me paso al compilar Wine, pense que podría ser que necesitara los sources de las diferentes librerias que quería instalar. Fui en busca de Synaptic e instale los paquetes dev de Gtk, SourceView, Mozilla Firefox, GtkHtml, GtkExtra, GtkExtra y LibSexy.

Una vez tengamos instalados todos estos paquetes dev (para el desarrollo), procedi a un configure completo, copilarlo e instalarlo.

  ./configure --enable-php-gtk --with-extra --with-html
     --with-libsexy --with-mozembed --with-sourceview
     --with-spell
  make
  make install

Aparte de esto, me aventure a crear mi primer paquete .deb que he hecho nunca, que a pesar de ser muy chapucero, al menos instala php-gtk en el sistema y funciona perfectamente, salvo por unas modificaciones de configuración que debemos de realizar a manita. Por si alguien se quiere ahorrar compilarlo, se puede descargar el paquete .deb de php-gtk 2.

Para finalizar la instalación deberemos de activar el modulo en el php.ini. En mi instalación de PHP, no hay un php.ini global, sino que hay uno pequeño y muchos, uno por cada extensión. Yo lo he creado donde las extensiones, creando un nuevo archivo que he llamado gtk.ini, pero podeis ponerlo en el php.ini principal. Lo unico que deberemos de hacer es añadir la linea:

  extension=php_gtk2.so

A continuación os detallo las librerias que se pueden encontrar con la instalación de PHP-GTK.

  • Gtk: todos los componentes básicos de Gtk, tales como GtkWindow por ejemplo, por decirlo de alguna manera, es lo básico para crear cualquier aplicación.
  • LibSexy: no lo he probado y me baso solo en la teoría que he visto por la web. Se trata de clases especiales para poner iconos en los GtkEntry, corrección ortografica, etc. (las pijerias).
  • GtkHtml: es un motor de renderización de HTML. El HTML lo pinta bien, pero los enlaces no funcionan, supongo que habrá que programar todos los posibles eventos que puedan surgir.
  • GtkExtra: tampoco lo he podido probar, pero supuestamente da Widget extra como los GtkSheet al estilo excel o algunos de diseño lineal que creo que no estan incluidos en PHP-GTK.
  • MozEmbed: se supone que es el motor de renderizado de HTML de Gecko (el de Mozilla Firefox), pero no he conseguido hacerlo funcionar ya que me da un error en el nucleo de GTK, que creo que es debido a que necesita unas cuantas librerias que utiliza el propio Firefox para que funcione.
  • SourceView: es una parte bastante interesante de Gtk, ya que se trata de un Widget que hereda directamente de GtkTextView pero que provee de un coloreado de sintaxis para multitud de lenguajes de programación, incluidos por supuesto PHP, C#, C, Java, Ruby, Xml, etc. Tambien provee de algunas mejoras al GtkTextView como una regla para marcar el número de linea o algunos eventos como el coloreado de la llave enlazada por ejemplo cuando es una función o clase. Este modulo funciona a la perfección.
  • GtkSpell: un corrector ortografico que subralla de una linea roja las palabras mal escritas. Lo he probado y funciona a la perfección, supongo que tendra soporte de lenguajes.

Si alguien quiere ver algo más de información sobre el tema, que le eche un vistazo a la página del proyecto PHP-GTK.