Archive for category Internet

Recolectando Datos de Internet

La cantidad de datos en Internet es enorme. Pero que los datos existan no significa que podamos obtener un beneficio de ellos inmediatamente. Se necesitan herramientas para obtenerlos y analizarlos. En este relanzamiento del blog de Ingeniería Simple, vamos a revisar algunas técnicas sencillas y útiles para obtener datos de Internet, analizarlos y convertirlos en información y conocimiento que tenga valor para todos.

Crear hoja electrónica en Google Drive

Paso 1: Crear hoja electrónica en Google Drive

Las hojas electrónicas modernas como Microsoft Excel, Google Spreadsheet, o LibreOffice Calc, incluyen ambientes de programación integrados que son especialmente adecuados para esta tarea. Claro, si la cantidad de datos es muy grande entonces puede ser necesario pasarlos a una base de datos especializada, pero para lo que nos proponemos hacer ahora el uso de VBA en Excel o JavaScript en Google Apps o en Calc será suficiente.

Empezaremos recolectando tweets de una cuenta de Twitter y colocándolos en una hoja electrónica de Google. Al final tendremos una hoja electrónica en la que se escribe el usuario de la cuenta de Twitter en la primera celda y con una opción de menú se obtienen los últimos 20 tweets de esa cuenta.

Para recolectar los tweets se necesita leer la página del usuario en Twitter, limpiarla de otros contenidos, y escribirlos de regreso en la hoja electrónica debajo del nombre del usuario. El código que lo hace debe ir dentro de una función que para ser ejecutada debe llamarse al seleccionar una opción de menú.

Así que el primer paso es crear una hoja electrónica en Google Drive ponerle un nombre adecuado y acceder al editor de scripts. La secuencia de imágenes incluida en este artículo muestra cómo hacer esto.

Cambiar nombre a hoja electrónica

Paso 2: Cambiar o poner nombre a hoja electrónica

Ingresar al editor de scripts

Paso 3: Ingresar al editor de scripts

El tipo de script es el de hoja electrónica, solo lo pregunta una vez

Paso 4: El tipo de script es el de hoja electrónica, solo lo pregunta una vez

Cambiar el nombre del proyecto

Paso 5: Cambiar el nombre del proyecto, es importante para saber siempre dónde se codifica

Código que se ejecuta al abrir la hoja electrónica

Paso 6: Revisar el código que se ejecuta al abrir la hoja electrónica y que Google incluye automáticamente

La función onOpen se ejecuta automáticamente cada vez que se abre el documento de hoja electrónica, así que es el lugar ideal para realizar ajustes iniciales como agregar una opción de menú que permita listar los tweets de un usuario.

Es necesario modificar el código de la función onOpen para que la opción de menú luzca mejor e indique de qué se trata esta funcionalidad:

function onOpen() {
 var spreadsheet = SpreadsheetApp.getActiveSpreadsheet();
 var entries = [{
 name : "Read tweets",
 functionName : "readTweets"
 }];
 spreadsheet.addMenu("Tweet Collector", entries);
};

El código de la función readTweets() busca en la celda A1 el nombre del usuario para leer sus tweets y si no lo encuentra entonces lo pregunta directamente, luego llama a la función que recupera los tweets del usuario, de la que recibe un vector con la lista de tweets, que recorre poniéndolos en celdas sucesivas debajo del nombre de usuario en la hoja electrónica, queda así:

function readTweets() {
  var tweetCell = SpreadsheetApp.getActiveSheet().getRange("A1");
  var TwitterUser = tweetCell.getValue();
  if (!TwitterUser) {
    TwitterUser = Browser.inputBox(
      "Twitter User", 
      "Enter the Twitter username to read tweets", 
      Browser.Buttons.OK_CANCEL);
    if (TwitterUser == "cancel")
      TwitterUser = null;
    else
      tweetCell.setValue(TwitterUser);
  }
  if (TwitterUser) {
    var arrTL = readTwitterTL(TwitterUser);
    for (var i = 0; i < arrTL.length; i++)
      tweetCell.offset(i+1, 0).setValue(arrTL[i]);
    tweetCell.activate();
  }
}

Como se ve la función clave es finalmente readTwitterTL que recibe como parámetro el nombre del usuario de Twitter. Esta función, con comentarios en cada paso para ayudar a su interpretación es como sigue:

function readTwitterTL(fromUsr) {
  // Obtener el texto de la página de Twitter del usuario
  var TLText = UrlFetchApp.fetch("https://twitter.com/" + fromUsr).getContentText("UTF-8");
  
  // Acumular todos los tweets en allTweets
  var allTweets = "";
  
  // Cada tweet ocurre dentro de un "p" clase "ProfileTweet-text js-tweet-text u-dir" 
  while (TLText.indexOf("ProfileTweet-text js-tweet-text u-dir") > -1) {
    TLText = TLText.substr(TLText.indexOf("ProfileTweet-text js-tweet-text u-dir")-10);
    // Leer una línea a la vez en oneLine hasta llegar a marca /p
    // acumulando el texto en fullTweet
    var oneLine = "";
    var fullTweet = "";
    do {
      oneLine = TLText.substr(0,TLText.indexOf("\n"));
      TLText = TLText.substr(oneLine.length+1);
      fullTweet += oneLine.replace("\n","");
    } while (oneLine.indexOf("</p>") == -1);
    // Limpiar tweets de código html
    allTweets += fullTweet.replace(/<[^<>]*>/g,"").replace("&nbsp;","") + "\n";
  }
  // Devolver todos los tweets en un vector
  allTweets = allTweets.substr(0,allTweets.length-1);
  return(allTweets.split("\n"));
}

El resultado visto en la hoja electrónica llamando al código desde la opción de menú luce como se muestra en la siguiente imagen:

Lista de tweets generada por el código

Lista de tweets generada por el código para el usuario @IngSimple

Probablemente el procedimiento que se ha mostrado aquí no es el que Twitter mismo aconsejaría para leer las líneas de tiempo pues tiene la enorme desventaja de basarse en una característica del código HTML con el que se devuelven los resultados que puede cambiar de un día a otro y volverlo obsoleto, sin embargo ilustra muy bien dos puntos importantes:

  1. Recolectar datos de Internet a veces requiere algo de ingenio para crear una solución que funciona de momento (hay que “hackear”)
  2. La utilidad de las herramientas de recolección de datos puede ser tan efímera como la de los datos mismos

Lo que subsiste es el principio: los datos están ahí y pueden recolectarse accediendo al código HTML que los presenta. En próximas entregas analizaremos otras formas de acceso a esos mismos datos.

La hoja electrónica desarrollada en este artículo se encuentra en el siguiente enlace:

https://docs.google.com/spreadsheets/d/1l34k75EGt3iEMhNgmSQ5uEe60nu_4gZoAU5fFAzgFp8/edit?usp=sharing

No Comments

Educación gratuita en línea

El profesor Scott Klemmer anuncia el curso gratuito en línea sobre Interacción Humano-Computador.

El jueves recién pasado, 24 de Mayo de 2012, recibí un mensaje muy agradable, daría inicio el curso virtual de Interacción Humano-Computador impartido por el profesor Scott Klemmer miembro del Stanford HCI Group, empezando el lunes 28 de Mayo de 2012, el día de publicación de esta entrada. Por supuesto me matriculé. El curso es gratuito.

La educación superior gratuita en línea está cobrando auge en todo el mundo. También la educación técnica gratuita. Una parte de la explicación de este fenómeno la da Ruti Polachek en su excelente artículo “¿Está Bajo el Índice de Empleo? ¿Y qué tal si le Enseñamos Ciencias de Computación a las Masas?” (“Employment Down? Why Not Teach Computer Science to the Masses?”). Su lógica es sencilla: “En la raíz de todo está la educación. Si se le enseña a programar a un millón de personas el desempleo se reducirá” y aún más: “No hay que enseñarle a un millón de personas a programar, mejor aún es enseñarle a programar a un millón de profesores – y podríamos estar levantando una generación entera de avances tecnológicos”. Hace sentido.

En el caso del curso de HCI (Human Computer Interaction) en el que me matriculé, el soporte tecnológico viene provisto por Coursera, una empresa que está promoviendo cursos en línea para diversas universidades, incluyendo Princeton, Stanford, California, Berkeley, Michigan-Ann Arbor y Pensilvania. Pero no es la única, está también Udacity, que recientemente hizo historia al ofrecer un curso en línea de introducción a la inteligencia artificial en el que se inscribieron más de 160,000 participantes. MITx empezó ofreciendo los cursos del MIT y recientemente se le unió Harvard en la iniciativa edX. Carnegie Mellon tomó la delantera hace algunos años con OLI.

Y la lista continúa con emprendimientos fuera del ámbito universitario como la muy exitosa Khan Academy y otras. (Lamento no tener a mano más enlaces de iniciativas similares en Español y en Latinoamérica, pero investigaré para incluirlas).

Bueno, de momento solo me queda desear encontrarme con alguno de los amables lectores de este blog como compañero de clase en las aulas virtuales. Pero si deciden no matricularse, trataré de ir contando algo de la experiencia en mi blog personal en Tumblr.

No Comments

Limbo Legal a 2.4 Ghz

Un módem y un punto de acceso para proporcionar Internet Inalámbrico

Un módem y un punto de acceso para permitir conexiones inalámbricas a Internet

Es difícil imaginar que un acto tan familiar en nuestra era como es conectarse a Internet pueda estar reñido con la ley. Sin embargo, de la forma en que muchísimos guatemaltecos lo hacemos actualmente, esto es, instalando un enrutador o punto de acceso inalámbrico, que utiliza la frecuencia 2.4GHz según el estándar IEEE 802.11 (b, g, ó n), sin obtener ningún permiso o concesión, podríamos estar sujetos a una multa por parte de la Superintendencia de Telecomunicaciones – SIT – pues la Ley General de Telecomunicaciones – LGT – la faculta para imponerla por “utilizar las bandas de frecuencia reguladas o reservadas sin la obtención previa del derecho de usufructo o derecho de uso, respectivamente” (artículo 81, numeral 2, inciso c de la LGT) “sin perjuicio de deducir las responsabilidades penales y civiles que correspondan” (artículo 81, párrafo final) por lo que además de la multa podrían imponerse otras sanciones.

En muchos países del mundo, especialmente en los desarrollados, la situación es distinta. La frecuencia 2.4GHz está comprendida entre las denominadas bandas ISM – Industrial, Scientific and Medical – destinadas a usos en aparatos industriales, científicos y médicos cuyas emisiones son de alta potencia pero no con fines relacionados a telecomunicaciones. Los hornos de microondas y otros procesos de calentamiento mediante radiofrecuencias operan en ellas y generan interferencia para la transmisión de información si se intenta en estas frecuencias y por lo mismo no se otorgan licencias para telecomunicaciones en esos rangos. Pero precisamente por ello son frecuencias “sin licenciamiento” que pueden utilizarse libremente siempre que se tenga presente que habrá interferencia.

Multitud de fabricantes de teléfonos inalámbricos, controles remotos, teclados y otros dispositivos de entrada, especialmente usando Bluetooth, aprovechan la frecuencia para transmisiones de corto alcance y baja potencia, sorteando el problema de la interferencia con protocolos y técnicas como Frequency-Hopping Spread Spectrum o FHSS (Espectro Ensanchado por Saltos de Frequencia) de forma que lo más probable es que la mayoría de guatemaltecos la usemos aunque no tengamos conexiones inalámbricas a Internet.

Los dispositivos WiFi están garantizados por la Wi-Fi Alliance para operar correctamente en el estándar 802.11 de IEEE que fue desarrollado tomando en cuenta las múltiples formas de interferencia que pueden presentarse dados los usos peculiares de la frecuencia en que operan. Así que la disponibilidad de estas bandas sin licencia, lejos de producir un caos en las transmisiones y una lucha destructiva por aumentar la potencia para desplazar a quienes pretendan usarla concurrentemente, ha forzado la adopción de protocolos cooperativos y que maximizan su redimiento aún en presencia de interferencia y transmisiones simultáneas.

Sin embargo, cuando en 1996 se promulgó la primera versión de la LGT, todos estos hechos no fueron tomados en cuenta y la frecuencia 2.4GHz, junto con otras de similares características como 5.7GHz y 900MHz, fueron subastadas y se otorgaron los correspondientes TUFs – Títulos de Usufruto de Frecuencias – a las empresas que hicieron la mejor oferta.

El resultado llano es una especie de limbo legal para quienes utilizan los dispositivos WiFi. Por un lado es claro que es ilegal utilizar la frecuencia, pero por otro es muy poco probable causar interferencia en los equipos de los usufructuarios legítimos y por lo mismo es improbable una intervención de la SIT. La gran cantidad de personas que se conectan también dificultaría una eventual persecución.

Esta situación no es saludable para nadie. El usufructuario tiene un título que no le garantiza exclusividad y solo en casos excepcionales puede hacerlo valer para evitar interferencias serias, sin mencionar el hecho de que trabaja en una banda que es bien conocida y por la que pueden intentarse ataques con cierta facilidad. El ente regulador, la SIT, colocó a Guatemala en una situación de desventaja y retraso respecto a otros países, es actualmente incapaz de proporcionar un entorno de certeza legal para miles de usuarios de equipos Wi-Fi a quienes no puede ni prohibirles su uso ni permitírselos tajantemente y no tiene un plan de acción claro para solucionar la situación. Los usuarios, la mayoría de ellos sin ningún conocimiento del entuerto legal en el que operan, orillados a una situación de ilegalidad indeseable y absurda, pueden trabajar sin problemas mientras no intenten algo de mayor trascendencia como ofrecer servicios públicos de conexión basados en tecnología inalámbrica porque si lo hicieran los niveles de potencia que requerirían los pondrían en peligro de producir alguna interferencia o llamar la atención de la SIT.

Las soluciones al problema requieren la recuperación de las frecuencias por parte de la SIT, con el respectivo resarcimiento a sus actuales usufructuarios que ni siquiera se verían obligados a dejar de emplearla, y su posterior colocación en un estatus que le permita a cualquier guatemalteco utilizarla con plena confianza. Los inconvenientes de interferencia e intromisiones en las transmisiones se pueden solucionar sin intervención de la SIT, como la situación actual lo demuestra.

7 Comments

Una historia de tres juegos: programación en lenguajes para niños (IV de IV)

Primer intento en SmallBasic. Se puede jugar controlando el movimiento del corredor con las flechitas del teclado. La versión local funcionaba bien, al subirla note ciertos fallos

Small Basic es un lenguaje de reciente invención. En este caso me refiero a la versión de Microsoft, ya que no hay que confundirlo con otro Small Basic que existe y que está disponible en Sourceforge.

La gente de Microsoft está haciendo un excelente trabajo en el desarrollo de este producto, con una buena idea en mente: devolver la diversión a la programación (Microsoft Small Basic puts the “fun” back into computer programming), pero hay que reconocer que todavía tiene camino por recorrer.

Small Basic no provee al programador con ninguna librería de imágenes prediseñadas, aunque es muy fácil cargar una imagen almacenada localmente o desde cualquier sitio de Internet con el objeto ImageList y luego mostrarla con el objeto Shapes. Se hace así:

CoPNG = ImageList.LoadImage("http://ingenieriasimple.com/smallbasic/Corredor01.png")
CoSh = Shapes.AddImage(CoPNG)

La primera instrucción carga la imagen y devuelve su nombre, que queda almacenado en la variable CoPNG, la segunda agrega la imagen cargada a la lista local de imágenes, la muestra en pantalla y devuelve un identificador de la imagen que queda almacenado en la variable CoSh.

De los tres lenguajes estudiados Small Basic es probablemente el menos intuitivo, las dos “fáciles” instrucciones recién listadas son un ejemplo. Pero una vez uno se ha familiarizado con los objetos disponibles, la verdadera diversión empieza, aunque no son pocos objetos, ImageList y Shapes son solo un par de una larga lista que incluye: Array, Clock, Controls, Desktop, Dictionary, File, Flickr, GraphicsWindow, File, Math, Mouse, Network, Program, Sound, Stack, Text, TextWindow, Timer y Turtle, además de los que el usuario decida agregar instalando complementos y para llegar a conocerlos hay que revisar la documentación que es muy buena.

Segundo intento en SmallBasic. Se corrigió la distancia a la que el corredor debe estar de los terrones para empezar a subir.

Además Small Basic provee al programador de “Intellisense” que es un sistema que en cuanto se empieza a escribir un comando, provee de ayuda inteligente, como complemento de la instrucción y sus parámetros, descripción del comando, ejemplos, etc. Sin eso la programación aquí sería más que complicada.

Siguiendo con el desarrollo del juego, procedí a preparar todas las imágenes que necesitaría para el programa. De un proyecto anterior tenía un archivo GIF animado de un corredor. El GIF almacena una imagen por cada etapa del movimiento, así que solo tuve que separar cada imagen para cargarla en el programa y luego mostrarlas y ocultarlas secuencialmente para dar la impresión de movimiento. El corredor jugaría el papel de la bolita de Rapid Roll, así que le programé movimiento permanente a la izquierda y derecha, controlado por las flechas del teclado y movimiento hacia abajo. Se dice fácil pero ¡vaya que no lo fue!

Cuando intenté poner en línea la primera versión descubrí que las imágenes GIF no funcionan y tuve que cambiarlas a formato PNG. La gente del foro de Small Basic me ayudó para ello y tengo que reconocer que están prestos a ayudar, lo cual es muy bueno. A ellos también les sirvió pues se enteraron que las imágenes GIF no funcionan y supongo que en alguna versión posterior lo arreglarán.

Small Basic provee un sistema de ayuda en línea llamado Intellisense

Small Basic provee un sistema de ayuda en línea llamado Intellisense con el que se facilita la programación

Decidí dibujar unos terrones triangulares para que jugaran el papel de las barras ascendentes de Rapid Roll. Luego les programé el movimiento permanente hacia arriba empezando desde una posición aleatoria en la parte baja de la pantalla, y luego moviéndose hacia arriba y al llegar al borde superior repiten.

Después agregué la programación para que el corredor se pare sobre los terrones y suba con ellos.

Parte de la dificultad de todo esto es que Small Basic no maneja simultaneidad, es decir no tiene instrucciones para ejecutar dos procesos simultáneamente, como Alice o Scratch. Lo más cercano es utilizar el evento Tick del Timer. Se le indica al Timer que emita un Tick cada 160 milisegundos (ese fue el número que mejor me funcionó) y se coloca todo el código que maneja el movimiento de todos los elementos en el manejador del evento. Nuevamente, se dice fácil pero…

El juego funcionó bien localmente pero al ponerlo en línea me encontré que se maneja con Silverlight (el producto de Microsoft que compite con Flash de Adobe) y tiene algunas idiosincrasias que me obligaron a modificar el código fuente local.

De los tres lenguajes usados encontré que Small Basic puede ser el más complicado, de hecho el juego quedó menos terminado en este lenguaje que en los otros dos. En todo caso, el experimento fue todo un éxito, aprendí, me divertí, saqué conclusiones  y me quedaron ganas de seguir, así que ¡a programar!

7 Comments

Reactos, el sucesor de Windows

 

El escritorio de ReactOS

El escritorio de ReactOS

Por Juan Manuel
Editado por Leonel

ReactOS (React Operating System) es un proyecto de código abierto para crear un sistema operativo compatible con aplicaciones y controladores de Windows en general. Esto significa que se podrá instalar en una computadora común y corriente y podrá correr todos los programas que le sirven a un usuario de Windows.

Parte de su código está basado en el proyecto Wine, que es un esfuerzo similar para implementar todo el API de Windows (Application Programming Interface, el conjunto de funciones que hacen correr los programas de Windows) en ambientes Linux, de forma que Wine también se beneficia de los avances de ReactOS.

La historia

La utilidad de los sistemas operativos de Microsoft es indiscutible. Sin embargo, el tema de las licencias – o la falta de ellas – siempre significó una dificultad más o menos importante. Las alternativas existentes nunca fueron totalmente compatibles y ni siquiera estaban ampliamente disponibles.

Por ello desde el principio siempre flotó en el aire la idea de un sistema operativo 100% compatible y 100% libre. Muchas personas sabían que esto era posible.

En 1996 un grupo de programadores comenzaron un proyecto llamado Freewin95 el cual consistía en implementar un clon de Windows 95 pero completamente libre, sin embargo éste atravesó por una serie de problemas cuando solo se había implementado la capa compatible con MS-DOS. Para 1997 el proyecto no había lanzado ninguna versión así que los miembros del proyecto coordinados por Jason Filby lo reiniciaron completamente y cambiaron el núcleo del sistema compatible con MS-DOS y de ahí en adelante lo basaron en uno compatible con Windows NT ya con el nombre actual (ReactOS).

El cambio de MS-DOS a Windows NT fue una buena idea ya que este último fue el primer sistema de Microsoft que no corría sobre DOS, de la misma forma en que las versiones más recientes – XP, Vista, etc. – tampoco necesitan más de DOS.

¿Clon de Windows?

Definitivamente que no. ReactOS es un sistema operativo compatible con Windows. Una importante diferencia es que no se trata de un sistema cerrado sino abierto (open source) en el que cualquier persona tiene acceso a revisar los fuentes en caso de errores o funcionamiento inadecuado, lo cual no sucede con su contraparte comercial de código cerrado.

También es importante tomar en cuenta que no se necesita ninguna licencia para instalar y ejecutar ReactOS.

Situación actual

Después de 10 años trabajando en el desarrollo del producto, ReactOS se encuentra actualmente en su fase de pruebas alfa, es decir, en pruebas que se realizan por usuarios en ambientes controlados por los desarrolladores. Las razones son varias, pero vamos a comentar dos como principales. Primera: el código del modelo que se está intentando copiar (Windows) es cerrado, de forma que no hay manera de revisar cómo ha sido implementado, el alcance de sus funciones y el comportamiento exacto de cada porción de código. Es como intentar emular una caja negra, el comportamiento debe ser igual pero la única forma de conseguirlo es probando qué resultados se obtienen para el mayor rango posible de entradas. Segunda: trabajar en un sistema operativo es una tarea increiblemente compleja y los programadores que la realizan ofrecen su tiempo de forma voluntaria sin ningún cargo, lo cual no significa que no estén comprometidos con el proyecto, pero no necesariamente es tu tarea prioritaria.

La primer versión de ReactOS vio la luz el 25 de enero de 2004 y la más reciente (0.3.11) el 16 de diciembre de 2009, se espera que pronto se llegue a la versión 0.5 ya considerada como beta, es decir, liberada para pruebas fuera de los ambientes controlados por los desarrolladores.

¿Desea probarlo?

Estudiantes, investigadores, centros educativos, laboratorios, etc., que deseen probar ReactOS pueden obtenerlo en su dirección oficial: http://www.reactos.org/ que contiene una sección de descarga. Se recomienda utilizar algún paquete de virtualización – como VirtualBox -, instalar una máquina virtual y trabajar en ella, de forma que cualquier fallo afecte lo menos posible.

Se puede seguir las instrucciones que se proveen aquí:

http://reactos.wordpress.com/2008/11/12/instalar-reactos-037-en-virtualbox-sobre-windowsxp/

http://reactos.wordpress.com/2008/11/15/instalar-reactos-037-en-virtualbox-sobre-windowsxp-ii/

Puede que el título de “sucesor de Windows” suene un poco ambicioso para ReactOS, pero en el fondo, y pensándolo un poco más allá de lo obvio, hay que reconocer que el modelo de software libre y abierto sobre el que se construye ReactOS bien puede ser el verdadero sucesor del modelo comercial detrás de Windows.

9 Comments

¿Qué son y para qué sirven las aplicaciones portables?

Por Juan Manuel

3 Instancias de IE de diferente versión corriendo al mismo tiempo

3 Instancias de IE de diferente versión corriendo al mismo tiempo gracias a que están disponibles como aplicaciones portables


Por aplicación portable o portátil en informática definimos a aquel programa o conjunto de programas que pueden ejecutarse en una computadora sin necesidad de realizar instalación alguna de sus componentes en el sistema de directorios del sistema operativo instalado.

Típicamente al instalar alguna aplicación por ejemplo Microsoft Office, debemos realizar una serie de pasos para tener el conjunto de programas que lo componen funcionando, como son:

1.- Tener a la mano el paquete o asistente de instalación del sistema de programas que componen Microsoft Office.

2.- Iniciar el instalador, ingresar la clave de instalación, seleccionar los programas que queremos instalar y ingresar la ruta donde queremos instalar el paquete de programas.

3.- Esperar a que el asistente copie todos los archivos necesarios al disco duro de la computadora y registre los programas en las entradas de menús del sistema, asocie los programas con determinados tipos de archivos, etc., para que sean completamente funcionales.

Durante el proceso de copiado de los archivos al disco de la máquina el asistente los acomodará en diferentes partes del mismo, por ejemplo archivos de programa, system32, etc., resultando muy complicado determinar cuales archivos han sido copiados a tal o cual localización pues generalmente estos antes de ser copiados se encuentran en archivos comprimidos y tal vez encriptados si se trata de una aplicación de tipo comercial. Además resulta difícil exportar esa aplicación ya instalada a otra computadora pues no se conoce con precisión que archivos en el disco duro la componen ni donde se encuentran ubicados, peor aún podría haber dependencias al registro de Microsoft Windows que si no se encuentran presentes al momento de mover todo el conjunto de programas a un nuevo destino no funcionarían correctamente.

Entonces para que una aplicación pueda ser designada “portable” debe evitar que todo el conjunto de programas/archivos que la componen sean distribuidos en el conjunto de directorios del sistema operativo en curso y de ser posible no requerir la existencia de determinados registros en las bases de datos del mismo y tampoco depender de la existencia de ciertos programas, archivos u otra información previamente instalada en la computadora destino para poder funcionar correctamente.

Lamentablemente esto no siempre se cumple pues muchos de los programas denominados “portables” están programados en Java o VB.Net los cuales requieren que se encuentre previamente instalada la máquina virtual que los hace funcionar, pero minimizando este problema nos encontramos con verdaderos programas que son capaces de funcionar en cualquier computadora (por ahora solo probado con Microsoft Windows instalado) únicamente copiando a una carpeta en el disco duro los archivos que componen la aplicación, pero realmente no es necesario pues la mayoría de ellos puede funcionar desde una memoria o pendrive usb, lo cual los hace útiles para casos necesarios como por ejemplo rescate del sistema o ejecutar sistemas operativos alternos al actual sin tener que instalar absolutamente nada en el disco duro de la computadora.

Ahora veamos el proceso de instalación de la versión portable de OpenOffice a nuestro sistema operativo en curso, aclarando que la aplicación OpenOffice requiere un proceso de instalación similar a la de Microsoft Office pero con algunos ajustes es posible generar una versión que no requiere de instalación en el disco duro, pudiendo ejecutarse sin problemas desde un pendrive.

1.- Tener a la mano el paquete o asistente de instalación del sistema de programas que componen OpenOffice.

2.- Iniciar el instalador, ingresar la ruta donde queremos instalar el paquete de programas y esperar a que el asistente copie todos los archivos necesarios al disco duro de la computadora, con la ventaja que una vez copiados todos ellos podemos simplemente copiar la carpeta donde fueron instalados a otra ubicación (carpeta, o incluso otra computadora) y nuestra aplicación con todos los programas que la componen es funcional al 100%, es decir no se requiere hacer uso del asistente de instalación de nuevo.

Por supuesto no todo podría ser ventajas en las aplicaciones portables, estas tienen ventajas y desventajas que se resumen en esta lista:

Ventajas: Desventajas:
1.- Poder migrar fácilmente la instalación de una aplicación portable a otra computadora manteniendo la configuración previa. 1.- Algunos programas requieren Java o .Net Framework instalado previamente para funcionar.
2.- Si es necesario formatear y reinstalar el sistema operativo no es necesario reinstalar nuevamente los programas, basta con copiarlos nuevamente al disco duro de la computadora para tenerlos funcionando tal cual estaban antes del formateo. 2.- La mayor parte de ellos no son auto actualizables, teniendo que esperar a que se libere la siguiente versión portable y teniendo que bajar el asistente nuevamente para reemplazar la instalación anterior.
3.- No utilizan el registro de Microsoft Windows.  
4.- Poder utilizar al mismo tiempo varias versiones del mismo programa sin conflictos por la instalación (véase la imagen de éste post, la cual muestra a los navegadores IE 5.5, 6 y 7 ejecutándose al mismo tiempo sin conflictos debido a la instalación).  

¿Son legales?

Si, pero dependen de la versión del programa original, si el programa es freeware no hay ningún problema en crear una versión portable, podemos decir lo mismo de programas con licencias libres como GPL, BSD, etc., pues la misma licencia permite la distribución gratuita como comercial de los mismos. Sin embargo, existen diversos programas que en la red se distribuyen como “portables” teniendo como sinónimo “gratis”, cuando en realidad son de carácter comercial y se le han hecho modificaciones para ejecutarlos sin necesidad de instalación y clave de activación, por lo cual si los usamos estamos incurriendo en el delito de piratería; por lo que es recomendable mirar previamente la licencia del programa original antes de buscar su versión portátil.

¿Dónde conseguirlos?

En la red abundan los sitios de descargas de programas portables sin costo alguno, una buena opción son los siguientes enlaces:

http://portableapps.com/apps
http://appsportables.blogspot.com/
http://www.pendriveapps.com/

¿Cómo crear aplicaciones portables?

Existen en la red varios programas para transformar cualquier aplicación común (instalable) en portable, pues estos analizan el programa y miran todas las dependencias y automáticamente hacen los cambios necesarios para crear un ejecutable que pueda ser exportado sin problemas a otra computadora, a través de éste link http://www.taringa.net/posts/ebooks-tutoriales/1990237/Crear-Programa-Portable-%28Portatil%29.html podemos darnos una idea del uso de un software llamado Thinstall que nos será de ayuda para crear nuestras propias versiones portables.

En resumen:

Las aplicaciones portables son aquellas que no requieren de una instalación en disco duro para funcionar, lo cual las hace candidatas a llevar a todas partes en un pendrive usb y trabajar con ellas con las configuraciones que se hagan a las mismas. También presentan la enorme ventaja de que al no requerir instalación pueden servir para reinstalar con rapidez los programas de uso común en la computadora cuando se reinstala el sistema operativo. Sin embargo no todas las aplicaciones portables existentes en la red son 100% legales pues muchas de ellas en realidad son comerciales y al crear una versión portátil se está violando los derechos de la misma con lo cual nos podemos hacer acreedores a sanciones administrativas. Valen la pena utilizarlas.

Fuentes de consulta para más información

Aplicación portátil

http://es.wikipedia.org/wiki/Aplicaci%C3%B3n_port%C3%A1til

Crear programa portátil

http://www.taringa.net/posts/ebooks-tutoriales/1990237/Crear-Programa-Portable-%28Portatil%29.html

¿Programas portables?

http://es.answers.yahoo.com/question/index?qid=20090315075526AALroU7

Ventajas o beneficios de los programas portables

http://darkub.wordpress.com/2008/05/08/ventajas-o-beneficios-de-los-programas-portables/

8 Comments

Programación de animaciones con Alice 2.2

Alice 2.2 fue puesto a disposición el 10 de Junio de 2009

Alice 2.2 fue puesto a disposición el 10 de Junio de 2009

Llevo varios años utilizando el ambiente de programación Alice 2.0 que sirve para desarrollar animaciones en 3 dimensiones y me gusta bastante. Considero que es una herramienta ideal para enseñar a programar a jóvenes de secundaria y bachillerato. De hecho le tengo dedicada una página dentro de Ingeniería Simple.

Hace unos días me enteré de que ya han puesto a disposición de todos (porque desde el principio se ha tratado de un software gratuito) la versión 2.2 que incluye algunas mejoras respecto a la 2.0, por ejemplo trae una opción que permite guardar el video de la animación en formato MOV.

Lo que me sorprendió es que precisamente fue puesta en línea precisamente el 10 de junio de 2009, ¡el día de mi cumpleaños! Por supuesto no creo que haya sido a propósito. Seguramente la gente de Carnegie Mellon ni siquiera me conoce, mucho menos podría saber que ese día fue mi cumpleaños, pero como uno tiende a darle significado a este tipo de cosas (¡es una señal! Je je je) pues decidí probar esta nueva versión lo más pronto posible.

He aquí el video de una animación muy sencilla que puede hacerse en poco tiempo con Alice:

He subido el código fuente de esta animación (3.6 MB) a la página de Alice en Ingeniería Simple, por si alguien lo quiere revisar.

41 Comments

Cierra GeoCities: el fin de una era

Aviso del cierre de GeoCities

Aviso del cierre de GeoCities

Hoy recibí un correo que me sorprendió. Se trata del aviso oficial de Yahoo! de que cierra el que alguna vez fuera uno de sus servicios insignia: GeoCities. A partir del 26 de Octubre de 2009 ya no será posible consultar sus páginas.

Mi primera página en Internet – de la que ya hablé un poco en el post sobre los blogs dentro de 20 años – estuvo en GeoCities, más o menos en el año 1999. ¡Era fantástico! Uno tenía un espacio decente de 10 MB que en ese tiempo era un montón para un sitio, además tenía acceso por FTP, se podían crear sub-directorios y con el tiempo aumentaron el espacio a 15 MB. Todo totalmente gratis.

En sus orígenes el concepto era el de una gran ciudad virtual con barrios y suburbios. Uno escogía el barrio en donde iba a poner su casa y tenía vecinos. Nosotros estuvimos en Las Praderas de La Tierra del Corazón (geocities/heartland/prairie) que se era exclusiva para cuestiones familiares.

Luego vino Yahoo! y compró el sitio en la increíble cantidad de 4 mil millones de dólares, en pleno auge de las empresas punto com (después vino la burbuja).

Con la compra vinieron cambios poco agradables, empezó a aparecer más publicidad en las páginas, restricción de servicios, en las cuentas en inglés por ejemplo ya no se permitió el acceso por FTP, se eliminó la organización por barrios y suburbios y otras cosas que a muchos no nos gustaron.

El sitio se convirtió en algo totalmente diferente a lo que habían ideado sus fundadores David Bohnett y John Rezner. Los días de gloria de GeoCities – en Junio de 1997 era el cuarto sitio más visitado de Internet – se fueron.

Es posible ver cierto paralelismo entre esta historia y la de Hotmail. En ambos casos se trató de ideas innovadoras, exitosas, con mucho potencial pero que al ser adquiridas por un gigante no pudieron mantener el ritmo de innovación y perdieron su magia.

Animaciones "de aquel tiempo"Animaciones "de aquel tiempo"

Animaciones "de aquel tiempo"

GeoCities pudo haberse renovado, incorporar blogs, correo electrónico, una red social, permitir contenido multimedia, etc., etc., pero su evolución se estancó y se fue apagando.

Con todo, a muchos nos quedan recuerdos de esa época en la que las animaciones eran en formato gif, las páginas se actualizaban muy de cuando en cuando y uno podía poner su correo electrónico en la página con toda confianza. En más de una ocasión el disponer de ese espacio en línea me ayudó en situaciones complicadas, permitiéndome poner un archivo “grande” en línea por ejemplo, ya que en ese entonces los servicios de correo electrónico eran muy limitados.

Por eso digo que el cierre de GeoCities marca el fin de una era.

16 Comments

Publicando en Internet

La revista electrónica Ingeniería Primero ha sido un esfuerzo del Ing. Federico Salazar.

La revista electrónica Ingeniería Primero ha sido un esfuerzo del Ing. Federico Salazar.

Se me ocurrían algunas ideas al terminar de escribir un pequeño artículo para el blog del grupo de científicos que participan en una comunidad en línea que se llama Ciencia en Guatemala.

Como era un artículo sobre computación cuántica y eso es algo que tiene mucho que ver con física moderna, decidí pedirle a Enrique Pazos Avalos, que escribe regularmente allí y que estudia un doctorado en física, que le echara una miradita antes de ponerlo en línea, no fuera a ser que tuviera alguna metida de pata.

Pedirle a alguien que lea lo que uno escribe para obtener una opinión es bastante usual y de hecho yo lo he hecho varias veces para otros artículos que he publicado en otros medios. Cuando no lo hago, por prisa, o por llevármelas de muy pilas, usualmente termino metiendo la pata, como cuando en un artículo para la revista electrónica de la Facultad de Ingeniería de la URL escribí que Heiderberg era el postulador del principio de incertidumbre, cuando el nombre correcto es Heisenberg, eso fue en el artículo titulado “Entradas y Salidas”.

En esa ocasión estaba un poco presionado, no tenía mucho tiempo para escribir y se me estaba terminando el plazo para entregar el artículo. La prisa es mala consejera.

Ahora salió también publicado en la misma revista otro artículo mío siempre sobre computación cuántica que Enrique gentilmente también accedió a revisar.

El blog de Ciencia en Guatemala.

El blog de Ciencia en Guatemala.

Gracias a las tecnologías modernas, cualquier cosa que uno escriba para ponerla en línea es susceptible de recibir una mejor retroalimentación que la que se daba cuando las ideas se ponían exclusivamente en impresos en papel. Lo escrito se puede buscar y encontrar, y al leerlo es posible al menos escribir un mensaje al autor para comentarle cualquier idea.

Pero definitivamente lo mejor es el tipo de discusión que se genera en torno a los blogs. Con ellos uno no puede escribir a la ligera, si es que quiere escribir en serio, ya que cualquier error eventualmente será descubierto por alguien y rebatido. Entre más serio el medio más cuidado hay que poner.

Por eso me gustaría más que Ingeniería Primero, la revista de la URL que mencioné, tuviera un foro donde se pudiera discutir cada artículo. Seguro en el futuro será así. De momento si alguien quiere echarle una mirada a lo que escribo y comentar, pongo aquí la lista de mis artículos:

Hackeando Guatemala sobre el papel de los Hacers en una sociedad como la chapina.

Todos Somos Expertos en Algo sobre un experimento de publicación en Internet llamado Squidoo.

Ingeniería de Sistemas sobre cuáles son las peculiaridades de esta rama de la ingeniería, en este artículo me ayudó Arturo Rivera con la revisión.

Harry Potter y los Lenguajes de Programación es como una especie de interpretación de los libros de Harry Potter desde la óptica de programación y sistemas. Este es mi artículo favorito.

Entradas y Salidas sobre la teoría de sistemas y la definición de sistema. Este es el que tiene el error que apunté arriba sobre Heisenberg.

Computación Cuántica sobre las posibilidades de esta forma de computación.

Espero no haber omitido ninguno. Y bueno, también espero publicar más en el futuro.

No Comments

Mi diseño para Imagine Cup 2009

Primera diapositiva de la presentación que envié a Imagine Cup 2009

Primera diapositiva de la presentación que envié a Imagine Cup 2009

Desde que me enteré de que existía algo llamado Imagine Cup, en el 2006, gracias al excelente papel que hicieron los Health Defenders de la URL (saludos Alejandro, José Pablo, Miguel, Maria Reneé y Sergio) me llamó la atención y deseé participar algún día, pero como es una competencia de estudiantes, o sea para poderse inscribir hay que estar estudiando en alguna universidad ya sea licenciatura o post-grado, no podía en ese momento.
Pero cuando empecé a ver cómo hacía para terminar la maestría que había empezado en 1995 en la Galileo, me di cuenta que tenía oportunidad de hacerlo.
Me matriculé en la U en el 2007 y cursé el último curso que necesitaba en el primer trimestre de 2008 y con eso ya estaba habilitado para participar en el 2009. Pude haber participado en la edición del 2008 pero perdí esa oportunidad.
El tema para Imagine Cup 2009 es “imagine a world where technology helps solve the toughest problems facing us today” y básicamente de lo que se trata es de entrarle a los problemas que se deben resolver para alcanzar las metas del milenio, o sea, reducir el hambre y la pobreza, proveer educación primaria universal, promover la equidad de género, reducir la mortalidad infantil, etc., es decir, problemas bien complicados.
Pero eso es parte del atractivo de Imagine Cup, que no solo dejan que uno se imagine cualquier idea, sino que tiene que ser algo que pueda tener resultados bien concretos.
Hay varias categorías de competencia, la más difícil es Software Design, que es en la que no solo hay que diseñar el software sino que construirlo y hacer que funcione.
A mi me había llamado más la atención la categoría de Interface Design, por ser algo a lo que desde hace rato le había dedicado bastante atención. Es una competencia menos reñida, y con menos premios, pero igual muy interesante.
El asunto es que el año pasado después de anunciar la convocatoria resultó que habían eliminado esa categoría, lo cual fue una sorpresa no muy agradable para mí.
Ya me había resignado a que de plano no participaba cuando apareció una nueva categoría: “Design” o sea, diseño, sólo diseño. Viendo las descripciones y reglas vi que podía ser adecuada para participar porque al final casi era lo mismo que la desaparecida Interface Design.
Había que pensar una idea, luego preparar una presentación en Power Point y enviarla.
Pasé varios días de Diciembre y Enero aprovechando mis caminatas al trabajo para pensar y concretar algo que pudiera tener alguna posibilidad de presentar para competir. De alguna forma me había planteado varios requerimientos o restricciones para el diseño a formular: tenía que involucrar a la radio, porque es el medio de más penetración en las áreas alejadas, y también al celular, por lo fácil que es llevarlo a esos lugares.
La idea tiene que ver con unir a las personas que están en línea con las que están "menos que en línea"

La idea tiene que ver con unir a las personas que están en línea con las que están menos que en línea


Finalmente se me ocurrió una idea que consideré que valía la pena, armé la presentación que quedó de 36 dispositivas, la descripción en menos de 100 palabras y la metí a la competencia.
Después me enteré que hay participantes que mandaron presentaciones de 60 diapositivas… ¡Ups! Espero no haber sido demasiado escueto. También hay otros que vienen con la experiencia de 4 competencias anteriores en las que han llegado a las finales. No será entonces tan fácil como habría podido esperar.
La competencia es en tres rondas, la primera se acaba de cerrar el pasado 1 de abril, los resultados los dan el 20 de este mes y empieza la ronda 2 entre los que hayan calificado. La ronda final, o sea las finales, son en Egipto y solo llegan los que hayan calificado de la segunda ronda y en principio serán sólo 6.
En lo personal me siento un poco mayorzón para andar en estos rollos. Si ven las fotos de la competencia se podrán dar cuenta de que los participantes son bien patojos, y yo ya estoy por entrar a los 40, debería pensar más bien en ser tutor de participantes, pero dado que los requisitos están cumplidos le hago ganas.
A ver qué tal.

No Comments