Jan 29

Introducción

El problema mas común que impide que se pueda acceder correctamente a un sitio o aplicación web que se está instalando o desarrollando es que los archivos y directorios no cuenten con los permisos de acceso apropiados para que el servidor de páginas (Apache por ejemplo) pueda accederlos correctamente.  En estos casos se obtiene un mensaje de error similar al  mostrado a continuación.

failed to open stream: Permission denied in /ruta/al/proyecto/index.php on line xx

La solución

En términos generales, los directorios deben contar con permisos 755 (drwxr-xr-x) y los archivos -como .php- 644 (-rw-r–r–).  Esta modificación puede realizarse de manera recursiva aprovechando la flexibilidad del comando find de la siguiente manera.

$ find /ruta/al/proyecto -type d -exec chmod 755 {} \;
$ find /ruta/al/proyecto -type f -exec chmod 644 {} \;

Inclusive es posible establecer filtros a los nombres de los recursos actualizados para mayor precisión en el cambio.

$ find /ruta/al/proyecto -type f -name '*.php' -exec chmod 644 {} \;
Tagged with:



En January 29 de 2012, Jorge Iván Meza Martínez escribió acerca de Permisos de archivos/directorios incorrectos para el servidor de páginas en GNU/Linux.
Jan 29

Introducción

Intentando utilizar un software web que incluía un .htaccess y este se aprovechaba de la funcionalidad del RewriteEngine de Apache2, obtenía siempre el siguiente mensaje de error.

Invalid command 'RewriteEngine', perhaps misspelled or defined by a module not included in the server configuration

Solución

Activar el módulo del RewriteEngine de Apache2.

$ sudo a2enmod rewrite

Reiniciar Apache2 para que tenga en cuenta al módulo recién activado.

$ sudo service apache2 restart

Tagged with:



En January 29 de 2012, Jorge Iván Meza Martínez escribió acerca de Invalid command 'RewriteEngine' con Apache2.
Jan 22

Introducción

Unity 5.0 es actualmente la última versión del ambiente de escritorio desarrollado por Canonical para Ubuntu su distribución de GNU/Linux.  Está versión que trae mejoras en su desempeño, se incluirá con la versión 12.04 ("Precise Pangolin") a liberarse en el mes de abril del 2012.

A continuación se describe el procedimiento necesario para instalar y desinstalar (no se ha probado aún) la versión mas reciente de Unity en Ubuntu 11.10.

Instalación

$ sudo add-apt-repository ppa:unity-team/ppa
$ sudo apt-get update && sudo apt-get dist-upgrade

*Anotación* Si desea instalar los paquetes mas recientes que aún no cuentan con las pruebas de aceptación utilice el repositorio ppa:unity-team/staging.

Desinstalación

$ sudo apt-get install ppa-purge
$ sudo ppa-purge ppa:unity-team/ppa
Tagged with:



En January 22 de 2012, Jorge Iván Meza Martínez escribió acerca de Instalando Unity 5.0 en GNU/Linux Ubuntu 11.10.
Jan 11

Introducción

Simple-OpenNI es una librería de Processing que actúa como un recubrimiento (wrapper) para utilizar fácilmente OpenNI desde este lenguaje de programación.

La distribución binaria de esta librería puede ser descargada directamente desde el sitio web del proyecto.  En el presente artículo se describirán los pasos necesarios para construír esta librería a partir de su distribución de fuentes lo cual resulta interesante para garantizar compatibilidad con las versiones de las librerías nativas instaladas y mantener la última versión disponible, así como utilizar arquitecturas cuyas distribuciones binarias no se encuentren disponibles.

Prerequisitos

Para poder construír la librería bajo GNU/Linux Ubuntu es necesario contar con los siguientes requisitos previamente instalados.

  1. OpenNI y NITE
  2. Java Development Kit.
    $ sudo aptitude install openjdk-6-jdk openjdk-6-jre openjdk-6-jre-headless openjdk-6-jre-lib
    Activar la versión recién instalada: /usr/lib/jvm/java-6-openjdk/jre/bin/java
    $ sudo update-alternatives –config java
  3. CMake
    $ sudo aptitude install cmake
  4. Swig >= v2.0.2
    $ sudo aptitude install swig
  5. Eigen >= v3.0
    $ sudo aptitude install libeigen3-dev
  6. Boost >= v1.46 (use the static build)
    $ sudo aptitude install libboost-all-dev

Procedimiento

Obtener la última versión del código fuente de la librería.

$ svn checkout http://simple-openni.googlecode.com/svn/trunk/ simple-openni-read-only

$ cd simple-openni-read-only/SimpleOpenNI/

Ajustar el script de construcción modificando la invocación a cmake de la siguiente manera.  (Ajustar las rutas que se consideren convenientes, en especial a DP5_JAR)

$ vi buildLinux32.sh

(actualizar)

cmake -DOPEN_NI_INCLUDE=/usr/include/ni/ \
      -DXN_NITE_INCLUDE=/usr/include/nite/ \
      -DXN_NITE_LIB=/usr/lib/ \
      -DEIGEN3D_INCLUDE=/usr/include/eigen3/ \
      -DP5_JAR=~/Processing/2.0a4/lib/core.jar \
      -JAVA_INCLUDE_PATH=/usr/lib/jvm/java-6-openjdk/include/ \
      -JAVA_INCLUDE_PATH2=/usr/lib/jvm/java-6-openjdk/include/linux \
      ..

Realizar la construcción de la librería.

$ ./buildLinux32.sh

Instalar la librería recién construída.

$ ./installLinux.sh

Verificar la instalación de la librería

El procedimiento anterior construye e instala la librería de Simple-OpenNI bajo ~/sketchbook/libraries/SimpleOpenNI/ dejándola lista para ser utilizada con Processing.

$ tree -d ~/sketchbook/libraries/SimpleOpenNI/

/home/jimezam/sketchbook/libraries/SimpleOpenNI/
├── documentation
│   ├── resources
│   └── SimpleOpenNI
├── examples
│   ├── eclipse
│   ├── Nite
│   │   ├── CircleCtrl
│   │   ├── Hands
│   │   └── Slider2d
│   └── OpenNI
│       ├── AlternativeViewpoint3d
│       ├── DepthImage
│       ├── DepthImageXml
│       │   └── data
│       ├── DepthInfrared
│       ├── DepthMap3d
│       ├── Hands3d
│       ├── MultiCam
│       ├── RecorderPlay
│       ├── Scene
│       ├── SceneDepth
│       ├── Threaded
│       ├── User
│       ├── User3d
│       ├── User3dCallback
│       ├── UserSaveCalib
│       └── UserScene3d
└── library

Enlaces

Tagged with:



En January 11 de 2012, Jorge Iván Meza Martínez escribió acerca de Construcción de la librería Simple-OpenNI para Processing bajo Ubuntu de 32 bits.
Jan 09

Introducción

NodeJS es  una plataforma de desarrollo de alta escalabilidad para aplicaciones en red basada en un único hilo de ejecución, una arquitectura orientada a eventos y un manejo asíncrono de E/S.  Esta plataforma se programa utilizando Javascript del lado del servidor.

En el presente artículo se describen los pasos realizados para su instalación siguiendo dos estrategias diferentes.

Instalación

Utilizando el gestor de paquetes

En este caso la instalación es mas rápida y sencilla ya que el gestor de paquetes, apt/aptitude en este caso, se hace cargo de la descarga e instalación del software y sus dependencias.

Utilizando los repositorios por defecto

Los repositorios incluídos por defecto con el sistema operativo permiten instalar a NodeJS sin embargo no en su versión mas reciente sino un par de números atrasada.

Versión de NodeJS disponible en los repositorios de Ubuntu

Versión de NodeJS disponible en los repositorios de Ubuntu

Para realizar su instalación se debe ejeuctar el siguiente comando.

$ sudo aptitude install nodejs

Utilizando los repositorios del proyecto

Este método permite actualizar los repositorios del sistema operativo con el repositorio oficial del proyecto de donde se podrán descargar versiones mas recientes.  Para hacer esto se deben ejecutar los siguientes comandos.

$ sudo apt-get install python-software-properties
$ sudo add-apt-repository ppa:chris-lea/node.js
$ sudo apt-get update

Versión de NodeJS disponible en los repositorios del proyecto

Versión de NodeJS disponible en los repositorios del proyecto

Una vez incluído el nuevo repositorio se procede a instalar el paquete normalmente.

$ sudo aptitude install nodejs

Desde el código fuente

Este método permite compilar una distribución de NodeJS para la versión específica del sistema operativo que se está utilizando.  Esto requiere que se cuente con el soporte requerido de las herramientas de desarrollo y dependencias necesarias para construír el proyecto.

Descargar el código fuente de la última versión disponible (la 0.6.7 en este caso) desde la siguiente ubicación.

http://nodejs.org/#download

$ wget http://nodejs.org/dist/v0.6.7/node-v0.6.7.tar.gz

$ tar zxvf node-v0.6.7.tar.gz $ cd node-v0.6.7/

$ ./configure --prefix=/home/jimezam/nodejs/0.6.7

Aviso!  Si desea instalar NodeJS en una ubicación central haciéndolo disponible para todos los usuarios del sistema operativo, omita el parámetro –prefix de la ejecución anterior, de lo contrario ajuste su ruta según la ubicación específica donde desee instalarlo.

Checking for program g++ or c++          : /usr/bin/g++
Checking for program cpp                 : /usr/bin/cpp
Checking for program ar                  : /usr/bin/ar
Checking for program ranlib              : /usr/bin/ranlib
Checking for g++                         : ok  
Checking for program gcc or cc           : /usr/bin/gcc
Checking for program ar                  : /usr/bin/ar
Checking for program ranlib              : /usr/bin/ranlib
Checking for gcc                         : ok  
Checking for library dl                  : yes
Checking for openssl                     : yes
Checking for library util                : yes
Checking for library rt                  : yes
Checking for fdatasync(2) with c++       : yes
'configure' finished successfully (0.776s)

El siguiente paso consiste en construír la distribución compilando su código fuente.

$ make

Y finalmente se debe instalar la distribución recién construída en la ubicación elegida.

$ make install

Aviso!  Si se eligió instalar NodeJS en una ubicación central, la ejecución del comando anterior deberá ser hecha por el usuario root de la siguiente manera: sudo make install.

Actualizar el PATH para que incluya la ubicación de las herramientas de NodeJS recién instaladas.  Realizar esta modificación en el .bash_profile/.bashrc del usuario o /etc/profile para tener un alcance global y garantizar que esta modificación persista cada vez que se inicia la máquina.

$ PATH=/home/jimezam/nodejs/0.6.7/bin:$PATH

Si el ajuste fue exitoso la aplicación node ya podrá ser accedida directamente desde la línea de comando.

$ which node

/home/jimezam/nodejs/0.6.7/bin/node

Prueba de funcionamiento: Hola Mundo NodeJS!

Crear el siguiente archivo de código Javascript para crear un servicio extremadamente simple que responda "Hola Mundo" ante las peticiones web de los clientes a través de navegadores.

$ vi prueba.js

var http = require('http');
http.createServer(function (req, res) {
    res.writeHead(200, {'Content-Type': 'text/plain'});
    res.end('Hola Mundo NodeJS!\n');
}).listen(7777, '127.0.0.1');
console.log('Servidor ejecutándose en http://127.0.0.1:7777');

Para iniciar el servicio se debe invocar el comando node de la siguiente manera.

$ node prueba.js

Servidor ejecutándose en http://127.0.0.1:7777

Desde un navegador web acceder a la dirección mencionada.

Hola Mundo consultándose desde NodeJS

Hola Mundo consultándose desde NodeJS

 

Enlaces

Tagged with:



En January 9 de 2012, Jorge Iván Meza Martínez escribió acerca de Instalación de NodeJS en GNU/Linux Ubuntu/Mint.
Jan 06

Introducción

Aprovechando los últimos días de vacaciones decidí rehacer el sketch de TheFallingThings que había creado hace un tiempo.  Esta nueva versión es muy similar en su funcionalidad pero tiene un código mejor orientado a objetos y mas limpio, de igual manera que su antecesora fue implementada utilizando el lenguaje de programación Processing.

El objetivo del sketch sigue siendo el mismo, atrapar con el paddle las cosas que caen desde el cielo.  El usuario puede controlar el paddle utilizando el teclado (flechas izquierda y derecha) o el ratón.

Las variables del sketch pueden ser controladas durante su ejecución: cantidad de cosas que caen (teclas +/-) y la velocidad de las cosas que caen (flechas arriba y abajo).  Otras teclas útiles son r (reset) para reiniciar el sketch, p (pause) para pausarlo y q (quit) para salír de él.

Screenshot

The Falling Things v0.1

The Falling Things v0.1

 

Enlaces

Tagged with:



En January 6 de 2012, Jorge Iván Meza Martínez escribió acerca de The Falling Things (reloaded) con Processing.
Dec 26

Introducción

A diferencia de otros portátiles Dell que había configurado en el pasado, el mío tenía algo particular con su tarjeta de red inalámbrica.  Esta aparecía referenciada por la interfaz eth1 en lugar de la habitual wlan0.  

$ iwconfig


eth1
IEEE 802.11bg ESSID:off/any

Mode:Managed Access Point: Not-Associated Tx-Power=20 dBm
Retry long limit:7 RTS thr:off Fragment thr:off
Power Management:off

A pesar de esto funcionaba aparentemente de manera correcta utilizando el driver STA, sin embargo empecé a tener problemas cuando quise hacer algunos ajustes a la interfaz así que tuve que darme a la tarea de solucionar este problema.

Como mencioné inicialmente, la tarjeta de red inalámbrica es una Broadcom BCM4312.

$ sudo lspci -vk

08:00.0 Network controller: Broadcom Corporation BCM4312 802.11b/g LP-PHY (rev 01)
Subsystem: Dell Wireless 1397 WLAN Mini-Card
Flags: bus master, fast devsel, latency 0, IRQ 17
Memory at f0600000 (64-bit, non-prefetchable) [size=16K]
Capabilities: [40] Power Management version 3
Capabilities: [58] Vendor Specific Information: Len=78 <?>
Capabilities: [e8] MSI: Enable- Count=1/1 Maskable- 64bit+
Capabilities: [d0] Express Endpoint, MSI 00
Capabilities: [100] Advanced Error Reporting
Capabilities: [13c] Virtual Channel
Capabilities: [160] Device Serial Number df-3d-0d-fd-fd-dd-0d-2d
Capabilities: [16c] Power Budgeting <?>

La situación

Aparentemente esto se debe a la utilización del controlador incorrecto de la tarjeta de red inalámbrica.

La solución

Mediante la aplicación de Additional Drivers (/usr/bin/jockey-gtk) desactivar el controlador STA que se venía utilizando.

Remover los paquetes relacionados con el controlador STA (recomendado).

$ sudo aptitude remove broadcom-sta-common broadcom-sta-source bcmwl-kernel-source

Instalar el firmware apropiado para la tarjeta de red.

$ sudo aptitude install b43-fwcutter firmware-b43-installer

En mi caso resultó que la tarjeta era de bajo consumo -Low-Power (LP-PHY)- por lo cual recibí el siguiente mensaje de error.

An unsupported BCM4312 Low-Power (LP-PHY) device was found.
Use b43 LP-PHY firmware (firmware-b43-lpphy-installer package) instead.

Por este motivo se deben instalar los siguientes paquetes en cambio.

$ sudo aptitude install b43-fwcutter firmware-b43-lpphy-installer

Reiniciar el equipo para que sean tenidos en cuenta los cambios en la configuración recién hechos.

$ sudo reboot

La verificación

Contrario a lo que esperaba, el nuevo controlador (b43) no aparece listado en la aplicación de Additional Drivers, sin embargo la interfaz ya aparece con su nombre correcto y es posible realizar la conexión a redes inalámbricas cercanas (por ejemplo utilizando el NetworkManager).

 

 

Tagged with:



En December 26 de 2011, Jorge Iván Meza Martínez escribió acerca de Problema con la interfaz de red inalámbrica Broadcom en Ubuntu: eth1 en lugar de wlan0.
Dec 20

Los cursos listados a continuación hacen parte de la Maestría en Software Libre de la Universidad de Cataluña y que han sido publicados bajo la licencia de Creative Commons a través de su sitio de OpenCourseWare.

50039 – Fundamentos de fotografía e imagen digital
50051 – Sistemas de vídeo y de tratamiento de la imagen
50070 – Laboratorio de PHP y MySQL
75143 – Trabajo final de carrera .NET
75555 – Prácticas de programación
75591 – Estructura de redes de computadores
75611 – Fundamentos físicos de la informática
75614 – Iniciación a las matemáticas para la ingeniería
76514 – Imagen y lenguaje visual
76517 – Arquitectura de la información
76521 – Redes Multimedia
76526 – Composición digital
76529 – Interfaces para sistemas multimedia
76531 – Animación 3D
76532 – Fotografía digital
81504 – Física I
89018 – Trabajo final de carrera de telecomunicación
93133 – Introducción a la creación de páginas web
93134 – Marcadores sociales, una herramienta para organizar la Red
93149 – Fotografia de viajes
B0019 – Estética y narrativa en medios digitales
B0762 – Servicios OGC
B0763 – Programación y Personalización SIG
M1302 – Ingeniería de la usabilidad
M1308 – Tecnología y desarrollo en dispositivos móviles
M2101 – Introducción al software libre
M2102 – Sistema operativo GNU/Linux básico
M2103 – Administración avanzada del sistema operativo GNU/Linux
M2104 – Implantación de sistemas de software libre
M2105 – Redes de computadores
M2107 – Aspectos avanzados de seguridad en redes
M2108 – Desarrollo de aplicaciones web
M2109 – Bases de datos
M2110 – Introducción al desarrollo de software
M2111 – Conceptos avanzados en desarrollo de software libre
M2112 – Ingeniería del software en entornos del software libre
M2113 – Utilidades y herramientas de software libre
M2114 – Aspectos legales y de explotación del software libre
M2114 – Aspectos legales y de explotación del software libre (b)
M2115 – Aspectos económicos y modelos de negocio del software llibre
M2117 – El software libre en el sector público
M2123 – Proyecto web
M2124 – Desarrollo de proyectos de software libre
M2125 – Proyecto de dirección de sistemas de información
M2132 – Proyecto en Administración de Redes y Sistemas Operativos basados en GNU/Linux
M2150 – Administración de sistemas GNU/Linux

Enlaces

Tagged with:



En December 20 de 2011, Jorge Iván Meza Martínez escribió acerca de Cursos de la Maestría en Software Libre de la UOC.
Dec 20

Los cursos listados a continuación hacen parte de la Maestría en Software Libre de la Universidad de Cataluña y que han sido publicados bajo la licencia de Creative Commons a través de su sitio de OpenCourseWare.

50039 – Fundamentos de fotografía e imagen digital
50051 – Sistemas de vídeo y de tratamiento de la imagen
50070 – Laboratorio de PHP y MySQL
75143 – Trabajo final de carrera .NET
75555 – Prácticas de programación
75591 – Estructura de redes de computadores
75611 – Fundamentos físicos de la informática
75614 – Iniciación a las matemáticas para la ingeniería
76514 – Imagen y lenguaje visual
76517 – Arquitectura de la información
76521 – Redes Multimedia
76526 – Composición digital
76529 – Interfaces para sistemas multimedia
76531 – Animación 3D
76532 – Fotografía digital
81504 – Física I
89018 – Trabajo final de carrera de telecomunicación
93133 – Introducción a la creación de páginas web
93134 – Marcadores sociales, una herramienta para organizar la Red
93149 – Fotografia de viajes
B0019 – Estética y narrativa en medios digitales
B0762 – Servicios OGC
B0763 – Programación y Personalización SIG
M1302 – Ingeniería de la usabilidad
M1308 – Tecnología y desarrollo en dispositivos móviles
M2101 – Introducción al software libre
M2102 – Sistema operativo GNU/Linux básico
M2103 – Administración avanzada del sistema operativo GNU/Linux
M2104 – Implantación de sistemas de software libre
M2105 – Redes de computadores
M2107 – Aspectos avanzados de seguridad en redes
M2108 – Desarrollo de aplicaciones web
M2109 – Bases de datos
M2110 – Introducción al desarrollo de software
M2111 – Conceptos avanzados en desarrollo de software libre
M2112 – Ingeniería del software en entornos del software libre
M2113 – Utilidades y herramientas de software libre
M2114 – Aspectos legales y de explotación del software libre
M2114 – Aspectos legales y de explotación del software libre (b)
M2115 – Aspectos económicos y modelos de negocio del software llibre
M2117 – El software libre en el sector público
M2123 – Proyecto web
M2124 – Desarrollo de proyectos de software libre
M2125 – Proyecto de dirección de sistemas de información
M2132 – Proyecto en Administración de Redes y Sistemas Operativos basados en GNU/Linux
M2150 – Administración de sistemas GNU/Linux

Enlaces

Tagged with:



En December 20 de 2011, Jorge Iván Meza Martínez escribió acerca de Cursos de la Maestría en Software Libre de la UOC.
Dec 15

Introducción

LightDM (Light Display Manager) es el display manager para GNU/Linux introducido con Ubuntu 11 y que reemplaza al muy utilizado hasta ahora GDM.

Para modificar el papel tapiz utilizado como fondo es posible instalar temas que modifican su apariencia o alterar directamente el archivo de la imagen que se utiliza.  Esto último es posible hacerse de manera manual o utilizando una aplicación para tal fin.

Procedimiento #1: asistido

La forma mas cómoda de hacer esto es utilizando una aplicación ayudante para realizar esta tarea.  La instalación se realiza desde un PPA de la siguiente manera.

$ sudo apt-add-repository ppa:claudiocn/slm
$ sudo apt-get update
$ sudo apt-get install simple-lightdm-manager

Si no se siente cómodo agregando nuevos repositorios es posible descargar directamente el paquete de la siguiente ubicación e instalarlo como se muestra a continuación.

https://launchpad.net/%7Eclaudiocn/+archive/slm/+packages

$ sudo aptitude install python-launchpad-integration
$ sudo dpkg -i simple-lightdm-manager_0.2-public7_all.deb

Para utilizar esta aplicación ejecute el siguiente comando y elija el fondo y el logo que desea que se desplieguen.

$ /usr/bin/simple-lightdm-manager

Simple LightDM Manager

Simple LightDM Manager


Procedimiento #2: manual

Es posible realizar este ajuste fácilmente de manera manual.  Para esto edite el siguiente archivo.

$ vi /etc/lightdm/unity-greeter.conf

Modifique las siguientes ubicaciones con las rutas absolutas de las imágenes que desea utilizar.

[greeter]
background=/home/jimezam/Desktop/.simpleLigtDMManager/file.jpg
logo=/home/jimezam/Desktop/.simpleLigtDMManager/logo.jpg

En caso de no utilizar al tema unity-greeter, editar a su correspondiente archivo bajo /etc/lightdm.

Tagged with:



En December 15 de 2011, Jorge Iván Meza Martínez escribió acerca de Cambiar el fondo de lightdm en Ubuntu 11.x.