Fedora en Virtual Box: Kernel Panic


Si están instalando un Linux Fedora x86 (ej. Fedora 7 ) sobre una máquina virtual con VirtualBox con arquitectura de 64 bits, es muy probable que obtengan el siguiente mensaje al booteo de la instalación:

"Kernel panic - not syncing: Attempted to kill init!"

Ante está situación, lo que tenemos que hacer es habilitar en el Virtual Box, la opción Sistema –> IO APIC.

 

Liberando código fuente: Descarga de padrones ARBA


Esta es mi primera liberación de código fuente, y pensando en que código liberar, me puse a revisar y encontré algo exótico. Algo que muchas empresas utilizan bastante hoy en día y que si solicitan su desarrollo, seguramente resulte bastante caro…

Así es que aquí está la disponible para todo el mundo el código fuente del algoritmo de comunicación con los servidores de ARBA para la descarga de padrones de recaudación por sujeto.

Este es el link: https://code.google.com/p/gestion-arba/ y está bajo licencia GNU GPL v3

Espero que esto anime a mas desarrolladores a liberar código fuente que sea útil para mejorar la productividad.

 

Control de Acceso del Personal con Linux


Alguna vez se encontraron en la situación en la que deben implementar algún sistema de control de acceso del personal, es decir, registrar horarios de entrada y salida del personal, pero no tienen accesorios o software específico para realizar esta tarea ?

Una solución para estas situaciones es muy simple: utilizar el sistema linux donde trabaja el usuario, registrando los horarios de logueo – deslogueo del sistema. Es decir, sus entradas / salidas, son los logueos / deslogueos de su  sistema linux.

Como verificamos después el registro de entradas /salidas ? con el comando last :

$ last | grep loginusuario

Obtenedremos una salida similar a la siguiente:

hvivani tty1         :0               Fri Feb 24 07:07 - 15:15  (08:07)    
hvivani tty1         :0               Thu Feb 23 07:28 - 15:58  (08:30)    
hvivani tty1         :0               Mon Jan 30 07:13 - 16:02  (08:49)    
hvivani tty1         :0               Tue Jan 17 07:11 - 15:58  (08:46)    
hvivani tty1         :0               Tue Jan  3 07:09 - 15:58  (08:49)    
hvivani tty1         :0               Wed Dec 28 07:05 - 15:58  (08:52)    
hvivani tty1         :0               Fri Dec 23 07:11 - 14:59  (07:48)    
hvivani tty1         :0               Mon Dec 19 07:14 - 15:59  (08:44)    
hvivani tty1         :0               Wed Dec  7 07:47 - 15:55  (08:07)

Vean que podemos obtener el horario de logueo / deslogueo y el tiempo trabajado.

OpenUpload: Instalando tu propio servidor de descargas


OpenUpload es ideal para tener en tu propio servidor toda la funcionalidad de un servidor de descargas similar a YouSenIt, MegaUpload or RapidShare.

La instalación es bastante simple en Fedora/CentOS/RedHat:

1) descargamos el paquete de instalación desde sourceforge.

2) decomprimimos y copiamos a nuestro www:

# tar -zxvf openupload-0.4.2.tar.gz
# mv openupload-0.4.2 /var/www/html/openupload

3) Editamos la configuración de nuestro archivo config.inc.php.sample:

vi /var/www/html/openupload/www/config.inc.php.sample

Modificando basicamente las siguiente entradas:

/* Define the installation folder */
$CONFIG['INSTALL_ROOT']='/var/www/html/openupload';

/* define http:// address */
$CONFIG['WWW_SERVER']='http://www.hvivani.com.ar';
/* define the additional web path i.e. /openupload */
$CONFIG['WWW_ROOT']='/openupload/www';

/* Detail for dbconnection */
$CONFIG['database']['host']='localhost';
$CONFIG['database']['user']='useropenupload';
$CONFIG['database']['password']='passopenupload';
$CONFIG['database']['name']='openupload';

Guardamos la configuración en este archivo y lo renombramos:

mv /var/www/html/openupload/www/config.inc.php.example /var/www/html/openupload/www/config.inc.php

4) Ahora configuramos la base de datos, recordando que php-mysql tiene que estar instalado.

# mysql -uroot
create database openupload;
grant all privileges on openupload.* to openupload@localhost ideintified by 'passopenupload';

Importamos los esquemas configurando el servidor para uso privado:

mysql openupload -u openupload -p passopenupload< sql/mysql/1_structure.sql
mysql openupload -u openupload -p passopenupload< sql/mysql/2_base.sql
mysql openupload -u openupload -p passopenupload< sql/mysql/3_mode_private.sql

En este paso, para otros modos de uso como público, restringido u otros importamos la estructura de base de datos que corresponda en vez del 3_mode_restricted.

Con esto ya estamos listos para apuntar nuestro navegador a http://localhost/openuploade ingresar con usuario admin, passwd admin.

Aquí tenemos los archivos para agregar el idioma español que no viene por default.

Cargar archivos grandes en PHP con .htaccess / Uploading large(big) files in PHP using .htaccess


Hay veces que tenemos alguna aplicación que corre en nuestro apache y que necesita poder cargar archivos grandes. Esto podemos modificarlo en la configuración del PHP, pero en ese caso estaríamos permitiendo la carga de archivos grandes en todos nuestros sitios.

Para que esto no pase, podemos hacerlo a través de un archivo .htaccess creado en la carpeta de nuestro www con el siguiente contenido:

php_value upload_max_filesize 100M
php_value post_max_size 100M
php_value max_execution_time 200
php_value max_input_time 200

Otra cosa que tenemos que tener en cuenta es deshabilitar el Output Buffering, dado que sinó, el php comenzará con consumir tanta memoria como el tamaño del archivo. Esto lo podemos hacer agregando la siguiente línea en el mismo .htaccess:

php_value output_buffering off

 

MySql change root password


Es importante establecer la password de root de mysql antes de comenzar a utilizar el este motor de base de datos, mas aún si se va a utilizar para almacenar información de sitios web.

Para establecer la password de root de un servidor mysql, podemos hacerlo por consola con el siguiente comando:

$ mysqladmin -u root password XXXXX

Ahora, si lo que queremos es cambiar la password de root del mysql:

$ mysqladmin -u root -p'viejapassword' password newpassword

De la misma manera podemos cambiar la  password de root para otros usuarios:

$ mysqladmin -u hernan -p viejapassword password newpassword

 

Sincronizar Calendario de Evolution con Google Calendar


Evolution ya viene con funcionalidad para mantener sincronizado el calendario con Google Calendar.

Solo tenemos que hacer  Archivo –> Nuevo –> Calendario y allí en Tipo de Calendario elegimos “Google”.

Colocamos el nombre de nuestra cuenta, jose@gmail.com, al aceptar nos pedirá la contraseña de la cuenta.

Marcamos la opción “Marcar como calendario predeterminado” y podemos también tildar la opción “Copiar contenido del calendario localmente para trabajar desconectado” para tener una copia sincronizada en todo momento.

Con esto ya tenemos el calendario sincronizado.

 

Reemplazo de disco en Software RAID


Cuando tenemos armado un RAID por soft y tenemos algún problema con un disco, la primer pregunta que se nos viene a la cabeza es: cuál es el disco quie está fallando ???

Este no es un dato que salte a la vista y debemos determinarlo bien, ya que si comenzamos a cambiar discos desordenadamente seguramente terminemos destruyendo el RAID.

La manera de determinar que disco está fallando es consultar en el sistema los números de serie de los discos activos y luego, verificar estos números con las etiquetas de los discos.

Como consultamos los números de serie de los discos ?

# smartctl -i /dev/sdb1

ó

# hdparm -i /dev/sda1

ó

# ls -l /dev/disk/by-id/

Como añadimos un disco fisico nuevo a un raid donde se removio el disco ?

# mdadm --manage -a /dev/md1 /dev/sdb

Como consultamos el estado de un RAID o el avance de su reconstrucción ?

# mdadm --detail /dev/md1

ó

# cat /proc/mdstat

 

 

Hola Mundo en Android


1) Instalamos las herramientas de desarrollo:
Descargamos Eclipse desde http://www.eclipse.org/downloads/
Yo elegí la versión “Eclipse IDE for Java Developers”.
Extraemos:

 $ tar -zxvf eclipse-java-indigo-SR2-linux-gtk-x86_64.tar.gz
 instalamos:
 $ sudo mv eclipse /opt/Eclipse

2) Descargamos e instalamos el plugin para Eclipse ADT.
Abrimos Eclipse (podemos poner esta llamada en el menú de aplicaciones):

 $ /opt/Eclipse/eclipse

Luego en el menú “Help –> Install New Software” agregamos la siguiente dirección en el cuadro de dialogo:

 https://dl-ssl.google.com/android/eclipse/

Marcamos “Developer Tools” y le damos “Siguiente”

Aceptamos las licencias y le damos “Finalizar” para completar la instalación.
Nos pedirá reiniciar Eclipse.
3) Después de reiniciar, automaticamente nos consultará por la instalación de los Android SDK.
Seleccionamos las versiones que necesitemos y el programa descargará e instalará el SDK.

4) Configuramos el plugin ADT:
En Eclipse vamos a Window –> Preferences, seleccionamos Android y le damos Aceptar.
5) Configuramos una nueva maquina virtual donde correremos nuestras aplicaciones:
Vamos a Window–>ADV Manager, presionamos New y ponemos los datos de la nueva máquina virtual.

6) Ya estamos en condiciones de escribir nuestra primer linea de código:

Vamos a File–>New –> Android Project

Definimos nombre del proyecto, nombre del paquete y versión de android con que se ejecutará.

Luego podremos desplegar en el arbol del proyecto las partes mas importantes de una aplicación Android:

AndroidManifest: Es un archivo de tipo XML, en este archivo definimos la versión de nuestra aplicación, los activities de los que consta y los permisos que debe de tomar la aplicación (conexión a internet, mensajeria, contactos, etc).

Res/Layout/Main.Xml: Define toda la interfaz gráfica de la aplicación, por defecto crea la inicial con un layout simple.

Res/Values/Strings.Xml: Define un cadena de caracteres a ser llamada desde nuestra aplicación Java.Resulta mas útil que estar escribiendo variables en la propia aplicación. Por defecto nos crea un string que resuelve el nombre de la aplicación.

Res/Drawable: Aquí encontramos todos los iconos e imágenes que vamos a usar en nuestra aplicación.

Src/Package/Aplicación.java: Todo el código en Java de nuestra aplicación.

Ahora bien, para escribir nuestra linea “Hola Mundo”, definimos en el archivo strings.xml:

<string name=”hello”> HolaMundo!</string>

Ahora mostramos el valor de esta variable llamandola desde el archivo de interfaz “main.xml”:

<TextView
android:layout_width=”fill_parent”
android:layout_height=”fill_parent”
android:text=”@string/hello”
/>

con fill_parent le estamos diciendo que ocupe todo el espacio disponible a lo ancho y a lo alto.

Ahora ya podemos ejecutar nuestra aplicación con “Run”. Arrancará la máquina virtual y mostrará el resultado.

7) Para instalar esta aplicación en nuestro dispositivo Android, copiamos el /bin/holamundo.apk a nuestro dispositivo e instalamos.

 

RBL (Real Time Block List) con qmail


La implementación de RBL en qmail es bastante simple en la instalación estandard. Solo debemos modificar el script qmail-smtpd agregando las lineas “-r algun_rbl”.

Este es un ejemplo de la parte del exec del script:

exec /usr/local/bin/softlimit -m 30000000 
 /usr/local/bin/tcpserver -v -R -l "$LOCAL" -x /etc/tcp.smtp.cdb -c "$MAXSMTPD" 
 -u "$QMAILDUID" -g "$NOFILESGID" 0 smtp 
 /usr/local/bin/rblsmtpd -b -r list.dsbl.org 
 -r cbl.abuseat.org 
 -r combined.njabl.org 
 -r relays.ordb.org