revista código humano 005

Upload: coopsolpy

Post on 29-May-2018

220 views

Category:

Documents


0 download

TRANSCRIPT

  • 8/8/2019 Revista Cdigo Humano 005

    1/12

    Conocimiento Libre, Inteligencia Colectiva

    CODIGO HUMANOwww.codigohumano.com.ar

    Junio 2008 Ao II Nmero V

    Espritu GNU

    R i c h a r d S t a l l m a n

    J ov en I nf or m t ic o: Si tu novia no quiere escuchar m s c mo hiciste el overclocking de tu motherboard. Si no tienes novia porque vives en internetinvestigando como instalar GNU/Linux en tu Palm. Si pasas las nochesluciendo tus conocimientos en oscuros foros de internet. Si necesitascompartir con el mundo lo que sabes. Unete a nosotros!

    Buscamos colaboradores con conocimiento en algunos de los tantos temassobre software y que adem s sepan escribir dos palabras juntas.

    Env anos a [email protected] tu art culo.

    C d ig o H um an o t e e sp er a!

    mailto:[email protected]:[email protected]:[email protected]
  • 8/8/2019 Revista Cdigo Humano 005

    2/12

    Revista Cdigo HumanoRevista Cdigo Humano Junio 2008Junio 2008

    - Ao II - Nmero V- Ao II - Nmero VConocimiento Libre, InteligenciaConocimiento Libre, InteligenciaColectivaColectiva

    C digo Humano es una revista elaborada enteramente por estudiantes de Carreras del Departamento deCiencias e Ingenier a de Computaci n con el fin desde nuestro humilde lugar promover y difundir el usodel Software Libre.Nuestra intenci n es que mediante este medio podamos divulgar esta alternativa tan popular que es elSoftware Libre. Su aplicaci n en la Educaci n, Econom a, Seguridad y muchos otros importantes t picos.Adem s el poder analizar las ventajas y desventajas que presenta con su par, el software privativo , vistodesde distintos enfoques.Nuestro objetivo es poder reflejar al estudiante el esp ritu cooperativo y solidario que trasmite el SoftwareLibre. Un movimiento que plantea el acceso libre al conocimiento y nos ense a a compartir y a ayudar.Sobre este movimiento habla nuestra revista.

    Copyright 2008 C digo Humano. Se otorga permiso para copiar, distribuir y/o modificar estedocumento bajo los t rminos de la Licencia de Documentaci n Libre de GNU, Versi n 1.2 o cualquier

    otra versi n posterior publicada por la Free Software Foundation; sin Secciones Invariantes niTextos de Cubierta Delantera ni Textos de Cubierta Trasera. Puedes consultar una copia de la

    licencia en http://www.gnu.org/copyleft/fdl.html".

    4 - Drupal - Por Basili Eleonel.

    5 - Dos x Uno - Secci n Fija.

    6 - Hilos en GNU/Linux . Andr s y Danilo Borek.

    11 - Botiqun GNU/Linux - Secci n Fija.

    >>> INDICE

    Renuncia de responsabilidad : Todas las noticias, recomendaciones, art culos y comentarios expresados en C digo Humano son propias de sus autores y no necesariamente representan la opini n de C digo Humano. Los contenidos que se ofrecen en C digo Humano han sido aprobados por los autores, y no han presentado ning n inconveniente al realizarlos, pero a n as , C digo Humano y los autores no se responsabilizan por los da os o perdida de informaci n que lleve la realizaci n de estas instrucciones.

  • 8/8/2019 Revista Cdigo Humano 005

    3/12

    MNR Desafios La Agrupacin de los Estudiantes de la UNS

    [email protected]

    www.codigohumano.com.arVisita nuestro sitio y disfruta de todoel contenido de C digo Humano.

    http://www.mnrdesafios.com.ar/http://www.mnrdesafios.com.ar/
  • 8/8/2019 Revista Cdigo Humano 005

    4/12

    Drupal es un sistema de gesti n de contenido (CMS) modular ymuy configurable.Es software libre, con licencia GNU/GPL, escrito en PHP,desarrollado y mantenido por una activa comunidad de usuarios.Destaca por la calidad de su c digo y de las p ginas generadas,el respeto de los est ndares de la web, y un nfasis especial enla usabilidad y consistencia de todo el sistema.El dise o de Drupal es especialmente id neo para construir ygestionar comunidades en Internet. No obstante, su flexibilidad yadaptabilidad, as como la gran cantidad de m dulos adicionalesdisponibles, hace que sea adecuado para realizar muchos tiposdiferentes de sitio web.

    Caracter sticas de Drupal

    Gesti n de usuariosAutenticaci n de usuarios Los usuarios se pueden registrar e iniciar sesi n de forma local outilizando un sistema de autenticaci n externo como Jabber, Blogger, LiveJournal o otro sitioDrupal. Para su uso en una intranet, Drupal se puede integrar con un servidor LDAP.

    Gesti n de contenidoControl de versiones El sistema de control de versiones de Drupal permite seguir y auditar

    totalmente las sucesivas actualizaciones del contenido: qu

    se ha cambiado, la hora y lafecha, qui n lo ha cambiado, y m s. Tambi n permite mantener comentarios sobre lossucesivos cambios o deshacer los cambios recuperando una versi n anterior.

    BloggingSoporte de Blogger API La API de Blogger permite que un sitio Drupal sea actualizadoutilizando diversas herramientas, que pueden ser 'herramientas web' o 'herramientas deescritorio' que proporcionen un entorno de edici n m s manejable.

    Rendimiento y escalabilidadControl de congesti n Drupal incorpora un mecanismo de control de congesti n que permitehabilitar y deshabilitar determinados m dulos o bloques dependiendo de la carga del servidor.Este mecanismo es totalmente configurable y ajustable.

    Administraci n y An lisisAdministraci n v a Web La administraci n y configuraci n del sistema se puede realizarenteramente con un navegador y no precisa de ning n software adicional.

    PlataformaMultiplataforma Drupal ha sido dise ado desde el principio para ser multi-plataforma. Puedefuncionar con Apache o Microsoft IIS como servidor web y en sistemas como GNU/Linux,BSD, Solaris, Windows y Mac OS X. Por otro lado, al estar implementado en PHP, estotalmente portable.

    M s Sobre DrupalEl sitio principal de desarrollo y coordinaci n de Drupal es drupal.org , en el que participan activamentevarios miles de usuarios de todo el mundo.Existen muchos sitios y comunidades alrededor de todo el mundo. Algunos sitios para visitar:drupalargentina.com.ar, drupalweb.com, drupalmania.com.

    DrupalDrupal4

  • 8/8/2019 Revista Cdigo Humano 005

    5/12

    Te recomendamos dos alternativas libres por cada programa privativo. En cada cuadro encontrar s unabreve descripci n y la direcci n de la p gina web de cada programa para que puedas descargarlo.

    Winamp

    Nero

    CorelDraw

    AdobePhotoshop

    Amarok Es un excelente alternativa.Brinda muchos servicios. Recomendable.http://amarok.kde.org/

    Songbird. Dispone de versiones paraWindows, Mac OS X, y GNU/Linux.http://getsongbird.com/

    Brasero. Una aplicaci

    n que se destacapor su simplicidad y dise o minimalista.www.gnome.org/projects/brasero/

    Xara Xtreme .Sencillamente el mejorsoftware de dise o vectorial. Simple.www.xara.com

    Sk1. Poderosa y eficaz alternativa libre.Asombra la similitud con Corel Draw.www.sk1project.org/

    The Gimp. El editor de im genes.Versiones para Gnu/Linux, Mac y Win.www.gimp.org/

    K3b. Una aplicaci n muy respetableentre la lista de programas de grabaci n. www.k3b.org /

    sk1

    AdobeDreamweaver

    Quanta Plus. Asistentes, resaltado desintaxis, previsualizaci n, etc.http://quanta.kdewebdev.org/

    Cinepaint. Modificaci n del GIMP. Esutilizado en la industria cinematogr fica.www.cinepaint.org/

    Nvu. Est disponible para GNU/Linux,Mac OS X y Microsoft Windows.www.nvu.com/

    Dos X unoDos X uno5

  • 8/8/2019 Revista Cdigo Humano 005

    6/12

    Programacin en GNU/LinuxProgramacin en GNU/Linux

    ProcesosAntes de comenzar a explicar qu es un hilo, es necesario antes aclarar qu es un proceso. Para unsistema operativo, un proceso es un programa en ejecuci n, el cual tiene su c digo ejecutable, su propiapila, sus propios datos y sus registros. En GNU/Linux podemos conocer los procesos que est n siendoejecutados, a trav s del comando 'ps' (para m s informaci n, ejecutar en una terminal: 'man ps'). En unsistema multitarea, los procesos en ejecuci n se van "turnando" el uso de la CPU, es decir, a modo deejemplo, suponiendo que nuestro sistema tiene solamente tres procesos en ejecuci n (A,B,C), entoncessi A est utilizando el CPU, los procesos B y C est n "esperando", luego de consumir un determinadotiempo de ejecuci n, A sede la CPU al proceso B. Ahora A y C est n en espera. Luego B la sede a C,entonces A y B est n esperando. Finalmente, cuando termina el tiempo de ejecuci n de C, este vuele aceder la CPU al proceso A, entonces B y C quedan esperando y el ciclo comienza nuevamente.

    En este punto ser a necesario explicar much simas cosas, pero haremos hincapi en dosfundamentales, que son: prioridades y estados.En GNU/Linux los procesos tienen prioridades los cuales tienen un valor en el rango [-20,19], donde -20es la prioridad mas alta, al contrario de lo que uno podr a pensar.Por otro lado, existen los estados. Cada proceso posee un estado, este estado puede ser:

    Preparado (R): Indica que el proceso esta listo para ser ejecutado. Ejecutando (O): Indica que el proceso esta siendo ejecutado.

    Suspendido (S): Indica que el proceso esta esperando alg

    n tipo de evento. Parado (T): Indica que el proceso espera una se al para continuar su ejecuci n. Zombie (Z): Un proceso zombie es aquel que pide al proceso padre que lo elimine de la tablas de los

    procesos, pero este no env a nunca esta se al. El proceso consume memoria, pero no CPU.

    Por ltimo es necesario indicar que un proceso posee un PID, un identificador de proceso, que no esm s que un valor num rico asociado a un determinado proceso.

    ForkUn Fork es lo que se conoce como un proceso hijo. Es simplemente una copia exacta de un proceso,excepto en el PID, son iguales en todo menos en su identificador, es decir, para la tabla de procesos delkernel Linux, son dos procesos separados. Si un proceso A realiza un fork B, se dice que A es elproceso padre de B, y B es el proceso hijo de A. En resumidas cuentas, un fork posee las siguientescaracter sticas:

    Es una copia de su proceso padre, excepto que posee otro PID. Tienen las mismas variables y ficheros abiertos.

    Padre e hijo poseen pilas propias. Ambos posee los mismos ficheros abiertos.

    Su sinopsis en el lenguaje C es la siguiente:

    #include #include

    pid_t fork(void);

    Hilos en GNU/Linux

    6

  • 8/8/2019 Revista Cdigo Humano 005

    7/12

  • 8/8/2019 Revista Cdigo Humano 005

    8/12

    Para crear un hilo utilizamos la funci n pthread_create. Su sinopsis en C es la siguiente:

    #include

    int pthread_create(pthread_t * thread, pthread_attr_t * attr, void * (*start_routine)(void *), void * arg);

    Donde: thread: el identificador del hilo. attr: los atributos del hilo. Si es NULL, se utilizan los atributos por defecto. (*start_routine)(void *): la funci n a ejecutar. arg: los argumentos de la funci n (hilo).

    Es importante aclarar que el valor de retorno de la funci n que pasemos a pthread_create debe ser void yque debe aceptar como nico argumento un void* (puntero a void).

    Pasemos al ejemplo:

    // Copyright (C) 2008 Andr s Jos Borek & Danilo Vladimiro Borek

    #include #include

    #include

    int entero = 0; // (1)

    void hilo(void *argumento){

    entero = entero + (int)(argumento); // (2)printf("El valor de entero desde el hilo es: %i\n", entero);

    }

    int main(int argc, char *argv[]){

    int aux = 1;printf("El valor inicial de entero es: %i\n", entero); (3)pthread_t hiloID;

    // Nos aseguramos de que sea posible crear el hilo.if(pthread_create(&hiloID, NULL, (void*)hilo, (void*)aux)) (4){

    perror("No se pudo crear el hilo.\n");exit(1);

    }s leep(1); // (5)printf("El valor final de entero es: %i\n", entero); (6)

    return 0;}

  • 8/8/2019 Revista Cdigo Humano 005

    9/12

    La salida por pantalla es la siguiente:El valor inicial de entero es: 0El valor de entero desde el hilo es: 1El valor final de entero es: 1

    En (1) declaramos e inicializamos la variable 'entero' con el valor 0. El hilo modifica el valor de 'entero'sum ndole el valor de 'aux' (2). En (3) mostramos el valor de entero, que es 0. En (4) se ejecuta el hilo, elcual deber modificar el valor de 'entero'. En (5) hacemos una pausa de 1 segundo, para darle tiempo aejecutarse al hilo. Finalmente en (6) mostramos el valor de 'entero' y podemos ver que su valor ha sidomodificado, demostrando que la zona de memoria de las variables globales se comparte.Existen otras funciones m s que se utilizan para trabajar con hilos:

    pthread_exit: Su sinopsis es la siguiente: void pthread_exit(void *retval). Termina la llamada del hilo.Funciona como un return, se puede utilizar una constante. pthread_join: Su sinopsis es la siguiente: int pthread_join(pthread_t th, void **thread_return). Detiene laejecuci n del proceso hasta la finalizaci n del hilo indicado. th es el identificador del hilo por el cual

    esperaremos, en *thread_return se almacena el retorno del hilo. pthread_kill: Su sinopsis es la siguiente: int pthread_kill(pthread_t thread, int signo). Env a una se all aun hilo. 'thread' es el identificador del hilo y 'signo' el n mero de se al (#include ).

    Veamos un ejemplo que utilice todas las funciones hasta ahora vistas:

    // Copyright (C) 2008 Andr s Jos Borek & Danilo Vladimiro Borek

    #include #include

    #include #include

    int entero = 0; // (1)void *funcion(void* par metro){

    printf(" Dentro del hilo.\n");sleep(2); // (A)if((int)(argumento)){

    entero = entero + (int)(par metro);printf(" El valor de entero es: %i.\n", entero);pthread_exit((void*)(0));

    }else{

    perror(" No se acepta el valor 0 (cero) como par metro.");pthread_exit((void**)(1));

    }}

    // Continua en la siguiente p gina

  • 8/8/2019 Revista Cdigo Humano 005

    10/12

    int main(int argc, char *argv[]){

    pthread_t hilo;int aux = 0; // (2)int retorno; // (3)printf("El valor inicial de entero es: %i.\n", entero);

    if(pthread_create(&hilo, NULL, funci n, (void*)(aux))) // (4)perror("No se pudo ejecutar el hilo.");

    pthread_join(hilo,(void**)(&retorno)); // (5)printf("El valor de retorno es: %i.\n", retorno);aux = 1; // (6)if(pthread_create(&hilo, NULL, funcion, (void*)(aux)))

    perror("No se pudo ejecutar el hilo.");pthread_join(hilo,(void**)(&retorno));

    printf("El valor de retorno es: %i.\n", retorno);aux = 2;if(pthread_create(&hilo, NULL, funci n, (void*)(aux)))

    perror("No se pudo ejecutar el hilo.");sleep(1); // (7)pthread_kill(hilo, 0); (8)printf("El valor final de entero es: %i.\n", entero); (9)return 0;

    }

    La salida por pantalla es la siguiente:

    El valor inicial de entero es: 0.Dentro del hilo.

    No se acepta el valor 0 (cero) como argumento.: SuccessEl valor de retorno es: 1.

    Dentro del hilo.El valor de entero es: 1.

    El valor de retorno es: 0.Dentro del hilo.

    El valor final de entero es: 1.

    (1) Inicializamos el valor de 'entero' en 0. (2) Inicializamos 'aux' en 0, la cual utilizaremos como argumentopara 'funci n'. (3) Declaramos la variable 'retorno' que utilizaremos para obtener el retorno del hilo. (4)Ejecutamos el hilo. (5) Interrumpimos la ejecuci n del proceso hasta la finalizaci n del hilo. (6)Establecemos el valor de 'aux' en 1. (7) Lo utilizamos para que el hilo pueda mostrar el mensaje antes deser "asesinado" por pthread_kill en (8). (9) Mostramos el valor final de entero y vemos que el hilo no tuvotiempo para modificar su valor.

    Nota de los autores: Los autores de este art culo autorizan la utilizaci n de los c digos presentados bajolos t rminos y condiciones de la versi n 3 de la GNU General Public License (GNU General PublicLicense Version 3) de la Free Software Foundation, Inc. Para obtener una copia de la licencia dirigirse a lasiguiente direcci n http://www.gnu.org/licenses/ .

  • 8/8/2019 Revista Cdigo Humano 005

    11/12

    En GNU/Linux es habitual el montaje de archivos de imagen iso. Para hacer esto debemos pasar algunospar metros al comando 'mount' (man mount).Suponiendo que estamos en el directorio principal del usuario (/home/) y quedeseamos montar el iso en el directorio ISO:

    codigo@debian:~$ mount -t iso9660 -o loop archivo.iso ISO

    Pero qu hacemos si la imagen es nrg?. Para solucionar este problema utilizamos el programa nrg2iso, el cual transforma una imagen nrg en iso. Este programa se puede encontrar facilmente en el repositoriode cualquier distribuci n popular. Su sintaxis es la siguiente:

    codigo@debian:~$ nrg2iso [archivo.nrg] [archivo.iso]

    Y si el archivo es img, ccd, sub o cue?:

    codigo@debian:~$ ccd2iso [archivo.img] [archivo.iso]

    Y si es mdf o mds?:

    codigo@debian:~$ mdf2iso [archivo.mdf] [archivo.iso]

    Y si es un archivo bin?

    codigo@debian:~$ bin2iso [archivo.bin]

    Al igual que nrg2iso, bin2iso, ccd2iso y mdf2iso, son aplicaciones comunes en todos los repositoriosde las distribuciones populares, excepto bin2iso que no est dentro de ninguno de los paquetes de los 4DVD's oficiales de Debian Etch.

    Como hacer una imagen iso de un CD/DVD desde consola?

    codigo@debian:~$ dd if=/dev/cdrom of=imagen.iso

    C mo grabar una imagen iso en un CD/DVD desde consola?: Para un CD:

    codigo@debian:~$ cdrecord -v dev=0,0,0 fs=16M speed=30 imagen.iso

    Los valores de 'fs' y 'speed' pueden aumentar o disminuir, estos valores son "seguros". Ser a buenoecharle una mirada al archivo /etc/wodim.conf. Para un DVD:

    codigo@debian:~$ growisofs -Z /dev/dvd -R -J imagen.iso

    Botiqun GNU/LinuxBotiqun GNU/Linux 11

  • 8/8/2019 Revista Cdigo Humano 005

    12/12