miércoles, 8 de mayo de 2013

WP - KMOD y AKMOD

Un kmod, o Kernel Drive Module (Módulo de Kernel para Controlador) es una interfaz pre-compilada de software de bajo nivel, que sirve como interfaz entre el kernel y un driver. Éstos módulos son cargados automáticamente por demanda en la memoria RAM, siendo incluidos en el Kernel en ejecución. La desventaja de los kmod es que son propios de un kernel específico, por lo que no funcionarán en ningún otro kernel. Esto es un grave inconveniente, ya que se pierde su funcionalidad al actualizar el kernel del sistema operativo, y se hace necesario recompilar el módulo para el nuevo kernel, o bien obtener el compilado correspondiente.

Los akmod representan una solución a este problema de dependencia, ya que al iniciar el sistema operativo, éstos revisan si falta algún kmod compatible con el kernel en ejecución, y si es así, recompilan el kmod para dicho kernel. La dessventaja de éstos (relativamente baja diría yo en comparación con la ventaja que ofrece) es que presentan mayor sobrecarga que los paquetes kmod normales, debido a que requieren herramientas de desarrollo para poder compilar los módulos “al vuelo”. En el caso de Fedora, se requieren los paquetes kernel-devel propios del kernel a utilizar. También existe la posibilidad de que los módulos compilados automáticamente no sean totalmente compatibles con el kernel utilizado.

Referencias

 Enlaces de interés


Publicado originalmente el 10/03/2012, en http://itsouvenirs.wordpress.com/2012/03/10/kmod-y-akmod/.

viernes, 19 de abril de 2013

WP - Desinstalar instancia de SQL Server u otros componentes

Para ingresar ventana de desinstalación de componentes de SQL Server debe ejecutarse el siguiente comando:

ARPWrapper.exe /Remove

Esta aplicación se encuentra ubicada en la carpeta Setup Bootstrap, ubicada en la carpeta de instalación de la instancia de SQL Server. Por ejemplo, en el caso de tratarse de SQL Server 2005, esta carpeta se encuentra por defecto en la siguiente ruta:

C:\Archivos de programa\Microsoft SQL Server\90\Setup Bootstrap

Me disculpo porque de momento no tengo instalado SQL Server correctamente en mi computadora, por lo que no puedo mostrarles con más detalle los pasos para desinstalar una instancia de SQL Server, u otros componentes.

Publicado originalmente el 09/03/2012, en http://itsouvenirs.wordpress.com/2012/03/09/desinstalar-instancia-de-sql-server-u-otros-componentes/.

WP - Tutorial de Symfony 2 - 1. ¿Qué es Symfony?

Creo que la mejor forma de iniciar el tutorial es a partir de la pregunta: ¿qué es Symfony? Bueno, yendo al grano, Symfony es un Famework de desarrollo web para PHP. Creo que esta definición no es suficiente ¿verdad?. Entonces, adéntremonos un poco más en el concepto, historia y personalidad (por así decirlo) de Symfony, partiendo desde el concepto básico de framework.

1. Framework de desarrollo

La primera pregunta que viene a nuestra mente es: ¿qué es un framework?. Un framework (Marco de trabajo, en español), dentro del ámbito de la computación, es una metodología, es decir, un conjunto de pautas a seguir para el desarrollo de una aplicación. Estas pautas también se extienden a la estructura y funcionamiento interno de una aplicación, ya que incluyen patrones que deteminan su arquitectura. Sin embargo, un framework no se queda solamente en un concepto abstracto, sino que también provee un conjunto de componentes de software prefabricados de fácil integración, que permiten poner en práctica dichos patrones, y permiten dar forma a la aplicación de una manera más sencilla.

2. Framework de desarrollo web PHP

El concepto de framework es extenso y aplicable a múltiples áreas de la computación, por lo que hay que delimitarlo a nuestro caso en particular. Symfony es un framework orientado específicamente al desarrollo web, es decir, a la construcción de sitios web robustos con contenido generado dinámicamente. Adicionalmente, Symfony es un framework creado especialmente para ser utilizado con el lenguaje de programación PHP, que es un lenguaje de programación interpretado del lado del servidor, y permite generar el contenido que se muestra en las páginas web de forma dinámica. Y no solamente eso, sino que Symfony en sí mismo ha sido desarrollado propiamente en PHP.

3.Un poco de historia…

Symfony fue creado originalmente por Fabien Potencier, fundador y dueño de la compañía francesa de software Sensio Labs, con el objetivo de facilitar y hacer más rápido el desarrollo de sitios web dentro de su compañía, a través de la automatización de tareas comunes. Fabien se basó en los framework Mojavi y Ruby On Rails, para la creación del framework.

Logo de Symfony usado en las versiones 1.x
La creación de Symfony inició en el año 2003. La primera versión del framework fue lanzada en el año 2005, y se utilizó para la creación de un sitio de comercio electronico. Luego de ser utilizado en otros proyectos más, Symfony fue lanzado bajo la licencia MIT como software libre, con el objetivo de donarlo a la comunidad creciente de programadores web, y además aprovechar su retroalimentación para la corrección de defectos y el enriquecimiento del proyecto.

La primera edición de Symfony continuó siendo mejorada hasta llegar a la versión 1.4. Cabe mencionar que paara esta primera versión, miembros de la empresa Sensio Labs crearon  una documentación bastante práctuca y detallada, en la que se incluyen las muy conocidas guías prácticas Askeet y Jobeet. Posteriormente se inició la creación de una segunda versión del framework, que fue lanzada en el año 2011, y cuya última versión estable hasta la fecha es la que utilizaremos en el presente tutorial.

¿Por qué lo llamaron “Symfony” y no “CualquierNombreFramework”? Porque Fabien quería una nombre corto que tuviera una letra ‘s’ (de Sensio) y una letra ‘f’ (de framework), que fuera fácil de recordar y que no estuviera asociado a otra herramienta de desarrollo. Además, no le gustan las mayúsculas. “Symfony” era muy parecido a lo que estaba buscando, aunque no es una palabra correcta en el idioma inglés (la palabra correcta es “symphony”), y además estaba libre como nombre de proyecto. La otra alternativa era “baguette”. (Symfony 1.2, la guía definitiva)

Actualmente Symfony es utilizado, en sus distintas versiones, en una amplia gama de sitios web, como Yahoo! Bookmarks, Delicious, Dailymotion, Opensky, eRepublik, entre otros.

4. Symfony como filosofía y comunidad

Creo que ya se aclaró un poco más la definición de Symfony como framework, y además se conoció brevemente su historia. Pero en realidad Symfony es algo más que un framework, es también una filosofía y una comunidad. Es una filosofía porque es provisto bajo una licencia de código abierto, con el ideal de que otros desarrolladores lo personalicen y enriquezcan con su propia imaginación. Por otra parte, es una comunidad, ya que tras Symfony, existe un amplio conjunto de desarrolladores que hacen posible su existencia, no solo dentro de Sensio Labs, sino alrededor del mundo.

5. Referencias

6. Enlaces de interés

Publicado originalmente el 25/02/2012, en http://itsouvenirs.wordpress.com/2012/02/25/tutorial-de-symfony-2-1-que-es-symfony/.

WP - Tutorial de Symfony 2

Symfony, un framework de PHP creado por Fabien Potencier (Francia) y desarrollado por una amplia comunidad de programadores alrededor del mundo.

Finalmente me estoy tratando de organizar y hacer tiempo para aprender a usar Symfony 2, el cual es un Framework para PHP que me ha llamado mucho la atención. Descubrí este Framework hace un par de años, cuando tenía intenciones de aprender a programar en PHP, y tuve el gusto de usar la versión 1.4 de este Framework en mi proyecto de graduación el año pasado, quedando fascinado de todas las facilidades que este Framework brinda.

Mientras vaya aprendiendo, iré elaborando un pequeño tutorial paso a paso que incluirá desde la preparación del ambiente de desarrollo en Linux (particularmente Fedora 16), hasta la elaboración de una pequeña aplicación web. Espero ir compartiendo periódicamente mis avances en este blog.

Publicado originalmente el 19/02/2012, en http://itsouvenirs.wordpress.com/2012/02/19/tutorial-de-symfony-2/.

jueves, 4 de abril de 2013

WP - Configuraciones iniciales de Ubuntu 9.0.4 en VirtualBox 3.0.4

A continuación describiré como instalar las “Guest additions” de VirtualBox en el sistema operativo huésped (guest) Ubuntu 9.0.4, y luego compartir una carpeta con el sistema operativo anfitrión (host) Windows XP. Estos pasos posiblemente apliquen a versiones superiores de VirtualBox y de los sistemas operativos mencionados.

1. Instalar las “Guest Additions”

Las “Aplicaciones del huésped” son herramientas que permiten una interacción fluida entre el sistema operativo anfitrión (host) y el huésped virtualizado (guest), así como el uso apropiado del hardware que posee nuestra máquina. Entre las ventajas que permiten estas aplicaciones, figura la integración del mouse entre el huésped y el anfitrión, así como el ajuste de resolución automático del huésped, y otras opciones de vídeo.

A continuación se listan los pasos para la instalación de las aplicaciones del huésped (en nuestro caso, Ubuntu 9.0.4), virtualizado en VirtualBox 3.0.4:

a) Iniciar el sistema operativo Ubuntu en VirtualBox, y iniciar sesión.

b) Una vez iniciada la sesión de usuario en Ubuntu, en el menú de VirtualBox, elegir Dispositivos > Instalar Guest Additions (Aplicaciones del huésped). Esto montará una imagen de disco CD-ROM en Ubuntu.

c) Abrir una ventana de terminal, y moverse a la carpeta media, que es la carpeta en donde aparecen los dispositivos extraíbles.

cd ../../media

d) Abrir el CD, y ver el contenido de éste, para elegir la versión de aplicaciones de huésped que mejor se ajuste a nuestra computadora.

cd cdrom

El contenido del CD es el siguiente:

$ ls
32Bit        VBoxLinuxAdditions-amd64.run    VBoxWindowsAdditions.exe
64Bit        VBoxLinuxAdditions-x86.run      VBoxWindowsAdditions-x86.exe
AUTORUN.INF  VBoxSolarisAdditions.pkg
autorun.sh   VBoxWindowsAdditions-amd64.exe

Para nuestro caso, ya que la versión de Ubuntu es para sistemas operativos de 32 bits, se instalará el paquete de herramientas VBoxLinuxAdditions-x86.run, mediante el siguiente comando:

sudo sh ./VBoxLinuxAdditions-x86.run

Para continuar la instalación, se solicitará ingresar la contraseña de administrador.

e) Una vez finalizada la instalación, se debe reiniciar el sistema operativo huésped.

2. Crear un directorio compartido

Es muy posible que querramos acceder a archivos o carpetas de nuestro sistema operativo anfitrión. Por ello, el uso de carpetas compartidas resulta útil, pues permite tener un fácil acceso a tales contenidos, sin las complicaciones de tener copias extra de éstos archivos en nuestro disco duro virtual, consumiendo espacio innecesariamente.

a) Para poder utilizar los directorios compartidos, elegimos en el menú de VirtualBox, la opción Dispositivos > Directorios compartidos. Luego, hacemos clic en el botón “Add new shared folder” (dibujo de una carpeta con un signo +), y en la ventana “Agregar compartición”, seleccionamos la carpeta que queremos compartir de nuestro sistema operativo anfitrión (en Folder Path), y le asignamos un nombre (en Folder Name). De preferencia debe ser un nombre fácil de recordar, en minúsculas, y sin caracteres extraños. Finalmente, elegimos la opción de “Hacer permanente”, para que este directorio siempre esté disponible.

b) Luego, abrimos una ventana de terminal en el sistema operativo huésped, y creamos una nueva carpeta, con permisos de administrador, en cualquier directorio. Si la carpeta compartida será pública, recomiendo colocarla en el directorio /media, para que esté disponible para todos los usuarios de Ubuntu. Para crear la carpeta se ejecuta el siguiente comando:

sudo mkdir nombre_carpeta_compartida

Y finalmente, para montar la carpeta compartida:

sudo mount -t vboxsf folder_name nombre_carpeta_compartida

Cabe notar que folder_name corresponde al nombre asignado a la carpeta en el paso a), en la sección de Folder Name. Luego de ello, ya tenemos disponible nuestro directorio compartido, en la carpeta elegida de nuestro sistema operativo huésped.

Publicado originalmente el 19/02/2012, en http://itsouvenirs.wordpress.com/2012/02/19/configuraciones-iniciales-de-ubuntu-9-0-4-en-virtualbox-3-0-4/.

lunes, 1 de abril de 2013

WP - Reducir el tamaño de un disco duro virtual VDI de VirtualBox

1. Desfragmentar el disco duro dentro del sistema operativo guest en la máquina virtual.
2. Colocar el programa nullfile-1.02.exe (http://www.feyrer.de/g4u/nullfile-1.02.exe) en la raíz del disco duro dentro del sistema operativo guest, y ejecutarlo. Este programa coloca caracteres nulos en el espacio libre del disco duro.
3. Apagar el sistema operativo guest. Luego ejecutar la operación compact de la herramienta VBoxManage, en la línea de comandos desde la carpeta de instalación de Virtual Box, sobre el disco duro virtual, así:

vboxmanage modifyvdi “C:\Users\Guille\.VirtualBox\HardDisks\discoduro.vdi” compact

Actualización:
El comando modifyhd ya está obsoleto, y ha sido sustituido por el comando modifyhd, por lo que el comando completo del ejemplo anterior sería:

vboxmanage modifyhd “C:\Users\Guille\.VirtualBox\HardDisks\discoduro.vdi” compact

Publicado originalmente el 19/02/2012, en http://itsouvenirs.wordpress.com/2012/02/19/reducir-el-tamano-de-un-disco-duro-virtual-vdi-de-virtualbox/.

WP - Enviar mensajes a sesiones de terminal server desde línea de comandos

Anoche se presentó un problema en mi trabajo. Debido al incremento de trabajo por parte de los usuarios conectados vía Terminal Server a uno de los servidores de la empresa, este se quedó sin recursos suficientes para poder iniciar otra sesión más. Se decidió reiniciar el servidor, pero era necesario informar a los usuarios. ¿Cómo enviar un mensaje directo vía Terminal Server, sin iniciar sesión en el servidor ni entrar al administrador de TS? Una opción sencilla y directa es hacer uso del comando msg desde la línea de comandos en una computadora conectada a dicho servidor:

msg { nombre_usuario | id_sesion_ts | * } [/SERVER:servidor] “mensaje”

El primer parámetro puede ser el nombre del usuario, el ID de la sesión, o asterisco, que indica que el mensaje se enviará a todas las sesiones activas en la computadora. El segundo parámetro, que es el de servidor es opcional, y puede colocarse el nombre del equipo o bien la IP. Si no se especifica, el mensaje se enviará a todas las sesiones activas en la computadora local. El parámetro final es el mensaje, que debe especificarse entre comillas dobles en caso de poseer caracteres de espacio en blanco.

Por ejemplo:

msg juanperez “Hola mundo”
msg DOMINIO\juanperez /SERVER:mi-servidor “Hola mundo”

Cabe mencionar que no he especificado todas las opciones del comando msg. Para consultar todas las opciones que ofrece este comando, basta con digitar msg en la línea de comandos de Windows, y presionar Enter. Si no me equivoco, este es el comando que se recomienda usar en vez de NET SEND a partir de Windows XP y Windows Server 2003 (corríjanme si me equivoco, jejeje).

Publicado originalmente el 19/02/2012, en http://itsouvenirs.wordpress.com/2012/02/19/enviar-mensajes-a-sesiones-de-terminal-server-desde-linea-de-comandos/.

WP - Social Coding

Al ver este título, alguien por allí me dirá que soy un transculturizado. Creo que todos los de informática somos así, y yo me considero de los más conservadores. Bueno, antes de continuar, les comento que iré desarrollando este tema poco a poco, posiblemente en esta misma entrada (o post, como le llamarían los transculturizados, jejeje). Comenzando con el tema, considero apropiado partir de una definición:

Social Coding (Programación Social) se refiere al desarrollo de software por parte de una “comunidad” de personas. Aunque usualmente todo proyecto de software se lleva a cabo por un conjunto de desarrolladors, este término ha sido acuñado a partir del auge de las redes sociales, por lo que ese conjunto se extiende a una comunidad virtual, variada y distribuida de personas.

Otra de las características que diferencia la programación social es que rompe con las barreras de la colaboración, ya que abre la posibilidad a que sea la comunidad quien se autodirija en el desarrollo del proyecto, pues la idea desarrollada por alguien puede ser materializada, mejorada y revisada por toda la comunidad. Ello permite crear productos de software robustos en corto tiempo.

Publicado originalmente el 13/02/2012, en http://itsouvenirs.wordpress.com/2012/02/13/social-coding/.

WP - ¡Renovación del blog!

Después de casi  3 años de inactividad (y luego de un año de haberme convertido en ermitaño aislado de la web, jejeje), he decidido revivir este blog. Más que revivirlo, extenderlo para que pase de un blog dedicado a una de mis materias preferidas en la universidad, que fue Programación Funcional, a un compendio de aquellas cosas que he aprendido y siga aprendiendo a lo largo de mi carrera en el área de informática, que actualmente se orienta mayormente al desarrollo de software.

Básicamente este es el inicio de uno de mis sueños, que es compartir aquellas cosas de mi carrera que me emocionan, y también aquellas cosas que me han sido útiles, principalmente con las nuevas generaciones (no es que esté viejo, aún estoy empezando a explorar estos vastos territorios…). Debo mencionar que esto es algo que he admirado primeramente de mis profesores (desde primaria hasta la universidad), y de todas aquellas personas que se toman un momento de su ajetreado día en compartir su conocimiento a través de la web. Si no fuera por ellos, mi trabajo diario sería inmensurablemente más largo de lo que ya es.

Espero poco a poco ir llenando este blog con información que les sea de mucha utilidad, les ayude en sus estudios y trabajos, y se convierta poco a poco en una de esas bibliotecas en línea de recursos de informática a la que tranquilamente puedan acudir.

Muchas gracias a mis apreciables educadores, y también a todos ustedes que se toman un momento para visitar este blog. Que el Señor Jesús les bendiga mucho y les regale muchos éxitos en su vida.

Atentamente.

Guillermo.

Publicado originalmente el 13/02/2012, en http://itsouvenirs.wordpress.com/2012/02/13/renovacion-del-blog/.

WP - Programación funcional 01-2009 - Práctica No. 3

Tristemente, y como muchos de ustedes, estoy en parciales 😟 Así q no me queda mucho tiempo. De momento sólo les dejo este enlace:

http://www.dccia.ua.es/dccia/inf/asignaturas/LPP/2007-2008/tema-07.html

La verdad es que contempla totalmente lo que se pretendía abarcar con la tercera práctica, más un par de cosas extras. El objetivo de la práctica era aprender a construir funciones que permitieran utilizar una cantidad de parámetros variable, por lo que, para efectos del curso, no es necesario leer lo de la introducción, quasiquotation y unquote-splicing, aunque son cosas interesantes que podrían serles útiles en algún futuro (cercano, lejano, o infinitamente lejano, o sea, nunca). También hay algunos ejemplos un poco más elevados, como hacer su propio let o su propio cond.

Hasta dentro de una semana tendré tiempo de continuar con el blog, y de revisar las tareas, asi que les pido las disculpas del caso. Hasta entonces, les debo las explicaciones de estas últimas prácticas.

Publicado originalmente el 25/04/2009, en http://itsouvenirs.wordpress.com/2009/04/25/practica-no-3/.

viernes, 29 de marzo de 2013

WP - Programación funcional 01-2009 - Práctica No. 1


Debido a que no tengo mucho tiempo, y que los primeros dos problemas fueron resueltos satisfactoriamente en la práctica, he decidido mostrar acá solamente la resolución del tercer problema. El correspondiente enunciado dice lo siguiente:
Construya un programa que lea desde teclado las coordenadas reales de tres puntos del plano cartesiano, y las coordenadas de un cuarto punto, del mismo plano, que diga en pantalla si el cuarto punto está o no dentro del triángulo (si está sobre los lados o vértices, está adentro). Cada punto se ingresará mediante dos números reales que representan la coordenada X y la coordenada Y. Asuma que los puntos forman efectivamente un triángulo.
Del enunciado hay que notar lo siguiente:

WP - ¡Hola mundo!

Ya habrán oído ese famoso programa “Hola mundo”, que pareciera tener una versión para cada lenguaje de programación existente en el mundo. Sin embargo, el título es pura casualidad, así estaba por defecto cuando creé el blog, y decidí dejarlo, porque me pareció irónico.

Bueno, continuando… Bienvenidos a este improvisado blog de DrScheme. Espero que la información que publique aquí les resulte interesante, y les sea de utilidad durante el presente ciclo. Aquí trataré de mostrar resúmenes de las prácticas, ejemplos curiosos y un par de enlaces que les sirvan de apoyo para su aprendizaje.

También, si ustedes me lo permiten, publicaré algunas de las soluciones a las tareas propuestas por ustedes. E incluso, si desean colaborar con algún otro ejercicio, enlace o cualquier tipo de información, el aporte será bien recibido.

Éxitos, y que disfruten de este blog.

Guillermo.

Publicado originalmente el 25/03/2009, en http://itsouvenirs.wordpress.com/2009/03/25/hello-world/.

jueves, 28 de marzo de 2013

Hola Mundo

Volcán de San Salvador (Enero de 2008) - Yo tomé la foto, pero no tiene nada que ver, jejeje...
¡Hola mundo! Bienvenidos a mi segundo blog sobre informática. Bueno, en realidad no es mi segundo blog, sino más bien una continuación del primero. Estoy considerando trasladar mi blog de Wordpress hacía acá, a blogger, por cuestiones monetarias, ya que aparentemente acá se me permite hacer uso de AdSense, y creo que sería conveniente intentar hacer algo de dinero con ello. Claro que seguiría el blog por amor al arte, mientras haya hosting gratuito, pero creo que es conveniente hacer el intento XD.

Inicialmente republicaré todos mis posts de Wordpress tal y como están, solamente añadiendo las siglas WP al título, para identificarlos. Los nuevos posts los publicaré en paralelo en ambos blogs. Sin embargo, poco a poco espero irme trasladando hacia acá, en cuyo caso cerraré el blog de Wordpress. Todo dependerá de las opciones y herramientas que descubra en Blogger.

Sin más que decir, les doy la más cordial bienvenida a mi blog: IT Souvenirs - Recuerdos de un programador y otras cosas... Acá encontrarán algunas cosas útiles que he aprendido y sigo aprendiendo a lo largo de mi carrera, y que me gustaría compartir, así como otras cosas variadas que se me ocurra publicar, jejeje... Espero que lo que encuentren en este lugar les sea de utilidad, y que lo disfruten.

Feliz día, y "happy coding".

Posdata: Nuevamente, el título del primero post lo dejo como "Hola Mundo", en honor a esa famosísima primera pieza de código fuente que encontramos para cada lenguaje de programación del mundo. Por cierto, según cuenta la historia, el uso de las palabras “hello world” como ejemplo introductorio de un lenguaje de programación, apareció por primera vez en la literatura de la computación en el libro “A Tutorial Introduction to the Language B” de Brian Kernighan. Esta frase luego se popularizó al aparecer en el libro “Programming in C: A Tutorial” (Kernigham, 1974), y más tarde en el muy conocido libro “The C Programming Language”, escrito también por Kernigham, junto a Dennis Ritchie, creador de C.



Con la tecnología de Blogger.