Índice general
¡ Programa en GNU/Linux !
Dr. Máximo Núñez - Fco. Javier Sánchez 1
¡Programa en GNU/Linux!
¡Programa en GNU/Linux! © Máximo Núñez Alarcón - Francisco Javier Sánchez Rodríguez © De la edición: INFORBOOK'S, S.L.
Se ha puesto el máximo interés en ofrecer al lector una información completa y precisa. Sin embargo, INFORBOOK'S, S.L. no asume ninguna responsabilidad derivada de uso, ni tampoco por cualquier violación de patentes y otros derechos de terceras partes que pudieran ocurrir estando este libro destinado a la utilización de aficionados o a la enseñanza. Las marcas o nombres mencionados lo son únicamente a título informativo, siendo propiedad de sus legales registradores.
Reservados todos los derechos.
Toda forma de reproducción, distribucción, comunicación pública o transformación de esta obra nada más puede ser realizada con la autorización de sus titulares, salvando la excepción prevista por la ley. Diríjase al editor si necesita fotocopiar o escanear algún fragmento de esta obra. Editado por:
INFORBOOK'S, S.L. c/ Muntaner, 181 08036 BARCELONA 934 394 055 e-mail: info@inforbooks.com web: http://www.inforbooks.com
ISBN 13: 978-84-15033-14-1 ISBN 10: 84-15033-14-1 Depósito legal: B-43860-2010 Maquetación: ServiDOC, S.L. Diseño cubierta: A.B.I.S.A.
IMPRESO EN ESPAÑA - PRINTED IN SPAIN 2
Índice general
A todos los que luchan por erradicar la pobreza, por un desarrollo sostenible y por un mundo más justo; por todos aquellos, que al fin y al cabo tratan de cambiar, ser diferentes y hacer de ésta, nuestra tierra, un lugar mejor.
Te presentamos dos pastillas para tomar: la verde y la gris. Si tomas la gris todo seguirá como siempre, vivirás en un mundo "cerrado", a merced de las políticas más o menos benévolas de tu proveedor de software en la oscuridad de la piratería. No te queremos engañar, la pastilla verde no es un mundo idílico, Sin embargo, tendrás libertad de elección en todo momento para, siguiendo los estándares abiertos, poder cambiar de programa o entorno de desarrollo en cualquier momento, adaptándote a tus necesidades, las de tus clientes y los requerimientos del proyecto. Construirás soluciones abiertas y flexibles, que podrán adaptarse a un entorno muy dinámico, abierto, multiplataforma y multidispositivo.
3
ยกPrograma en GNU/Linux!
4
Índice general
Índice general PARTE I: Introducción Introducción.............................................. 19 1.1. ¿Por qué comprar este libro? ...........................................19 1.2. ¿A quién va dirigido? .......................................................20 1.3. Acerca de los autores ......................................................20 1.4. Convenciones utilizadas en el libro .................................21 1.5. Agradecimientos .............................................................22
Una primera aproximación ........................ 23 2.1. ¿Qué es GNU/Linux? Características ..............................23 2.2 Distintas posibilidades para obtener Ubuntu ...................25 2.2.1 Wubi, una instalación sin particionar ............................................... 25 2.2.2 Instalación desde tu Pendrive ........................................................... 27 2.2.3 Emulando GNU/Linux en Windows con VirtualPC y VirtualBox ......... 31 2.2.4 Dos alternativas muy diferentes: Portable Ubuntu y eyeOS .............. 38
Instalación de Ubuntu ................................ 41 3.1. Un particionado con vistas ..............................................41 3.2. Sólo tengo una partición para Windows, ¿qué hago? .......43 3.3. Obtención de los CDs ......................................................46 3.4 Precauciones previas .......................................................46 3.5 Instalación clásica en el disco duro .................................48 3.6. Emulando Windows en GNU/Linux con Qemu y VirtualBox .......................................................................54 3.7. Pequeñas recetas: arreglar el arranque, recuperar la contraseña ......................................................................58 3.8. Tareas PostInstalación .....................................................61 5
¡Programa en GNU/Linux!
Primeros pasos .......................................... 63 4.1 Instalación de software. ....................................................63 4.1.1 Ailirus y Ubuntu Tweak .................................................................... 67
4.2 Añadiendo nuevos repositorios.........................................69 4.3 Instalar "casi" todo en GNU/Linux: deb, rpm, bin, tar.gz ................................................................................70 4.4 Cómo y dónde encontrar ayuda .......................................77 4.5 Personalización ................................................................82
PARTE II: PROGRAMACIÓN BASH La consola en GNU/LINUX ......................... 87 5.1. ¿Qué es una orden o comando? ......................................87 5.2. Comandos básicos: sudo, cd, ls, cp, mv, rm, mkdir, rmdir, man, more, clear ...................................................89 5.3. Diversión en la consola ....................................................97 5.4. Ejecución en segundo plano..........................................101 5.5. Editando archivos de texto ............................................102 5.6. Sé vago I: Terminación de palabra .................................104 5.7. Sé vago II: Utiliza el histórico de comandos ....................104 5.8. Sé vago III: Cortar y pegar selecciones ...........................104 5.9. Personalizando la consola: fuentes, tamaños, esquemas, etc. ...............................................................104 5.10. Otras consolas .............................................................107 5.11. Comodines, Redireccionamiento, Tuberías y Variables de entorno. ...................................................107 5.12. Realizando distintas tareas en la consola. ....................109
Programando BASH ..................................... 111 6.1. Creación de scripts........................................................111 6
Índice general
6.2 Variables y parámetros ...................................................112 6.3. Condiciones ..................................................................117 6.4. Estructuras de control ...................................................117 6.5. Funciones .....................................................................122 6.6. Interfaz gráfica de usuario en la consola .......................123 6.7 Un .bashrc avanzado y potente.......................................128
Scripts prácticos con avaricia .................. 131 7.1. Bienvenida molona........................................................131 7.2. Información del sistema ................................................132 7.3. "El algodón no engaña" .................................................134 7.4. Extractor de ficheros .....................................................136 7.5. Traductores y buscadores ..............................................137 7.6. Reloj y alarma ...............................................................141 7.7. Visualiza .......................................................................143 7.8. El más importante: la copia de seguridad ......................144 7.9. Personaliza el sistema en menos de un segundo...........147
PARTE III: HERRAMIENTAS E INGENIERÍA Utilidades para la Programación (I) .......... 151 8.1. Firefox. Toda la potencia de Internet al alcance de tu mano ....................................................................151 8.2. Traductores y diccionarios: Wordtrans, Stardict, gdrae ..155 8.3. Un poco de música mientras trabajas: Last.fm, StreamTurner y Rhythmbox ..........................................159 8.4. Tu biblioteca de programación bien organizada: Alexandria .....................................................................160
7
¡Programa en GNU/Linux!
8.5. Otras: Calculadora (SpeedCrunch), Salud en el trabajo (Workrave, RSIBreak, Workaholic), Notas (Zim, BasKet, Tomboy), etc. .................................................................162
Utilidades para la Programación (II) ......... 171 9.1. Editores: Vi, Vim, Nano Emacs, Geany ..........................171 9.2. Documentando nuestros programas: ManEdit, gmanedit y DocBook .....................................................176 9.3 Interfaz con Glade2 y Glade3 ........................................186
Ingeniería ................................................ 201 10.1. Mapas conceptuales: FreeMind, VYM, Semantik, XMind .........................................................................201 10.2 Modelado: Dia, Umbrello, Gaphor, ArgoUML, BOUML .204 10.2.1. Dia ............................................................................................... 204 10.2.1.1 Objetos. Tipos. Uso de los objetos .......................................................... 205 10.2.1.2 Veamos un ejemplo: un diagrama de clases en notación UML ............... 206 10.2.1.3 Plugins. ................................................................................................... 207 10.2.1.4 Generación de código .............................................................................. 208
10.2.2. Umbrello ....................................................................................... 209 10.2.3. Gaphor .......................................................................................... 210 10.2.4. ArgoUML ....................................................................................... 211 10.2.5. BOUML ......................................................................................... 212
10.3. Planificación de proyectos: Planner, Gantt Proyect, KPlato y TaskJuggler...................................................214 10.3.1. Instalación ................................................................................... 215 10.3.2.Creación de un proyecto ................................................................ 216 10.3.3. Calendario, recursos, tareas, subtareas y dependencias .............. 216 10.3.4. Diagramas de Gantt y recursos .................................................... 219
10.4. Gestión de costos: OpenOffice Calc, SLOC, Gnumeric y KSpread ...................................................................220
8
Índice general
PARTE IV: Programando en GNU/LINUX Aprendiendo a programar ......................... 223 11.1. KTurtle ........................................................................223 11.2. UCBLogo .....................................................................228 11.3. Squeak, aprendiendo el paradigma orientado a objetos .....................................................................229 11.4. Etoys, el lado más amable de Squeak ..........................237 11.5. ¡Programar es divertido con Scratch! ...........................239 11.5.1. Miles de ejemplos para aprender y disfrutar ................................. 243
Trabajando con diferentes paradigmas de programación ...................................... 245 12.1. Programación declarativa en Lisp con CLISP y Slime ..245 12.2. Programación lógica con GNU Prolog ...........................248 12.3. Programación funcional con Haskell ...........................250 12.4. Programación numérica con Octave ............................253 12.5. Programación estadística con R ...................................259 12.5.1. Análisis estadístico básico. Calculo de la media, mediana, varianza, desviación típica ........................................................... 259 12.5.2. Trabajando con gráficos ................................................................ 260 12.5.3. Ejemplos de contraste de hipótesis ............................................... 261 12.5.4. Invocando a R desde Python ......................................................... 263
Programación visual ................................ 265 13.1. Lazarus, el Delphy libre ..............................................265 13.1.1. Introducción e instalación ............................................................ 265 13.1.2. Nuestro primer programa ............................................................. 265
13.2. Gambas, ¿Visual Basic para Linux? ............................271 13.2.1. Definición. Características .......................................................... 271 13.2.2 Instalación .................................................................................... 271
9
¡Programa en GNU/Linux! 13.2.3. Creación de un proyecto visual: un Hola Mundo contestón ........... 272
PARTE V: PROGRAMACIÓN WEB Instalación y configuración de Apache, MySQL, FTP y acceso remoto ................... 279 14.1. Instalación de Apache2 ...............................................279 14.1.1. Configuración básica .................................................................... 279 14.1.2. Directorios y archivos de configuración ........................................ 280 14.1.3. Arranque y parada del servidor Web .............................................. 284 14.1.4. Modificación del directorio raíz y de la página por defecto ............. 284 14.1.5. Creación de dominios virtuales .................................................... 284 14.1.6. Personalizar la página de error ..................................................... 286 14.1.7. Protección de directorios. Creación de una zona privada .............. 287 14.1.8. Soporte para CGI. Utilizando Perl .................................................. 288
14.2. Trabajando con MySQL en modo consola y con PhpMyAdmin ..............................................................289 14.2.1. Introducción. Conceptos básicos ................................................... 289 14.2.2. Instalación de MySQL y phpMyAdmin ........................................... 290 14.2.3. Creación y borrado de una base de datos ...................................... 291 14.2.4. Gestión de usuarios ..................................................................... 292 14.2.5. Creación de tablas ........................................................................ 294 14.2.6. Utilizando la base de datos: introducir/eliminar/borrar y 14.2.6. recuperar información ................................................................. 296 14.2.7. Procedimientos almacenados ....................................................... 299 14.2.8. Consultas multitabla .................................................................... 302
14.3. Backup y restauración de la base de datos ..................304 14.4. Instalación, configuración y acceso a servidores FTP ...306 14.4.1. Introducción ................................................................................. 306 14.4.2. Instalación del servidor FTP VSFTPD ............................................ 306 14.4.3. Deshabilitando el acceso anónimo ............................................... 308 14.4.4. Clientes FTP: FileZilla, gFTP, yafc ................................................ 310
14.5. Acceso remoto .............................................................312 10
Índice general 14.5.1. Introducción. Conceptos básicos ................................................... 312 14.5.2. Instalación del servidor SSH ........................................................ 312 14.5.3. Clientes de acceso remoto: Putty, WinSCP ................................... 314 14.5.4. Ejecutando aplicaciones gráficas del servidor ............................... 316 14.5.5. Accediendo gráficamente: Vino, RealVNC y UltraVNC .................. 317
HTML/XHTML ......................................... 321 15.1. Introducción a HTML ...................................................321 15.2. KompoZer, un editor Web multiplataforma .................322 15.3. Primeros pasos ............................................................323 15.4. Dando formato al texto ................................................325 15.5. Los vínculos e hipervínculos ........................................326 15.6. Tratamiento de imágenes. Mapas sensibles .................328 15.7. Manejo de listas ..........................................................331 15.8. Creación de tablas.......................................................333 15.9. Trabajando con marcos ...............................................335 15.10. Formularios ...............................................................337 15.11. ¿Es HTML compatible? ..............................................339 15.11.1. Internet Explorer en GNU/Linux ................................................ 339 15.11.2. Distintos navegadores: Konqueror, Firefox, Chrome, Opera, Epiphany, SeaMonkey y en consola (Lynx, Links y w3m) ........... 341 15.11.3. Explotando Firefox: temas, plugins y extensiones ....................... 343 15.11.4. Configurando el navegador por defecto ....................................... 347 15.11.5. Cumpliendo con el estándar: validación ..................................... 347
15.12. Necesito DreamWeaver, ¿Qué hago? .........................348 15.13. La evolución del HTML el XHTML ..............................348
Una web con estilo CSS ............................ 353 16.1. Introducción. Conceptos básicos. Referencias .............353 16.2. Aplicando CSS mediante los selectores .......................355 16.3. El modelo de cajas o Box model ..................................358 11
¡Programa en GNU/Linux!
16.4. Construyendo páginas con CSS ..................................362 16.4.1. Aplicando CSS al texto .................................................................. 362 16.4.2. Aplicando CSS a las listas y viñetas ............................................. 368 16.4.3. Aplicando CSS a las tablas ............................................................ 371
16.5. Firebug y chuletas CSS. Recursos esenciales para el Webmaster ..............................................................374 16.6. CSSED, el editor CSS open source .............................376
JavaScript ............................................... 377 17.1. Introducción. Conceptos básicos. Referencias .............377 17.2. Inclusión de código JavaScript en las páginas web ......378 17.3. Aprendiendo el lenguaje .............................................379 17.3.1. Variables y operadores .................................................................. 380 17.3.2. Estructuras de control .................................................................. 382 17.3.3. Funciones, funciones y más funciones ........................................ 386 17.3.4. Controla todo lo que ves y no ves. El modelo DOM ......................... 389 17.3.4.1. Un ejemplo más complejo un visor de imágenes ................................... 392
17.3.5. Eventos: gestionando las acciones de los usuarios. ...................... 397 17.3.5.1. Manejadores de Eventos ........................................................................ 399
17.3.6. Una batería infinita de Scripts: Formularios, fechas, imágenes, etc. ............................................................................. 402
Ajax: La revolución .................................. 405 18.1. Introducción. Conceptos básicos. Referencias .............405 18.2. Análisis de nuestra primera página con AJAX ............407 18.2.1. Entrando en faena: El código en JavaScript .................................. 410
18.3. El objeto XMLHttpRequest: Métodos, propiedades y eventos .....................................................................419 18.4. Exprimiendo AJAX con Google Maps ..........................420 18.4.1. Construye un mapa para tu Web .................................................. 421 18.4.2. Quiero más: Conociendo la API's de Google .................................. 423 18.4.2.1. Trabajando con la API de Google Maps .................................................. 424
12
Índice general 18.4.2.2. Inicialización del mapa .......................................................................... 425 18.4.2.3. Añadiendo controles .............................................................................. 428 18.4.2.4. Construyendo Marcadores ..................................................................... 430
18.5. Nuestro primer Widget con Search API y recursos para trabajar con las API's de Google ............433 18.6. Aptana, un excelente IDE multiplataforma para desarrollo Web ............................................................435 18.7. Programando en GNU/Linux con Google Web Toolkit .........................................................................436
Java ........................................................ 439 19.1. Instalación de Java: JDK .............................................439 19.2. Eclipse, un potente IDE a tu servicio ...........................440 19.2.1 Definición. Características ........................................................... 440 19.2.2 Instalación .................................................................................... 440 19.2.3 Creación de proyectos con Eclipse ................................................. 440
19.3. Introducción a Java .....................................................442 19.3.1. Un lenguaje orientado a objetos "puro". Características ............... 442 19.3.2. Mi primer programa en Java ........................................................ 442 19.3.3. Variables, tipos, operadores, estructuras de control y arrays ........ 444 19.3.4. Clases .......................................................................................... 448 19.3.5. La herencia en Java .................................................................... 452 19.3.6. Creando tu primer applet: "Hola Mundo Libre". ............................. 456
Java avanzado ......................................... 469 20.1. Apache Tomcat, soporte a JSP y Servlets.....................469 20.2. Mi primer Servlet ........................................................471 20.3. Primeros pasos con JSP ..............................................476 20.4. Separando la interfaz de la capa de negocio con Java Beans ..........................................................................479 20.5. JBoss, un servidor de aplicaciones Open Source ........483 20.6. Accediendo a bases de datos con JDBC ......................486
13
¡Programa en GNU/Linux!
20.7. Muchas tecnologías a tu alcance: Java Mail, RMI, JNDI, JNI, Java2D, Java3D, Hibernate..................................489 20.8. Otras alternativas: Perl, Python y Ruby .......................490 20.9. Desarrollando aplicaciones para Android ....................497
Creando páginas dinámicas con PHP ........ 503 21.1. Introducción. Conceptos básicos. Referencias .............503 21.2. Instalación y configuración de PHP .............................504 21.3. Nuestra primera página. "Hola mundo libre con PHP" .506 21.4. Aprendiendo el lenguaje .............................................506 21.4.1. Variables y constantes ................................................................. 506 21.4.2. Constantes y variables predefinidas ............................................. 511 21.4.3 Ámbito de las variables. Funciones ............................................... 513 21.4.4. Interactúa con el usuario. Formularios ........................................ 515 21.4.5. Estructuras de control .................................................................. 519 21.4.5.1 Estructuras de control condicionales ...................................................... 520 21.4.5.2 Estructuras de control repetitivas .......................................................... 523
21.5. Funciones, funciones y más funciones .......................526
PHP avanzado .......................................... 529 22.1. Introducción ................................................................529 22.2. Conexión a bases de datos .........................................529 22.2.1. Obtención de datos ....................................................................... 532 22.2.2. Inserción de datos ........................................................................ 534 22.2.3. Actualización de datos .................................................................. 535 22.2.4. Borrado de datos ........................................................................... 535 22.2.5. Trabajando con procedimientos almacenados ............................... 536 22.2.6. Funciones de bases de datos ........................................................ 537
22.3. Subiendo ficheros al servidor ......................................538 22.3.1. Consideraciones previas .............................................................. 538 22.3.2. El formulario para el usuario ........................................................ 538
14
Índice general 22.3.3. Lo que el usuario no ve: El proceso en php .................................... 539
22.4. Trabajando con gráficos ...............................................541 22.4.1. Creando estadísticas profesionales con Libchart .......................... 545
22.5. Controlando al usuario con las sesiones .....................547 22.6. Nuevas tendencias: el modelo vista controlador ...........549 22.6.1. Un Frameworks para PHP: Symfony .............................................. 549
Explotando WordPress ............................. 551 23.1. Tu blog con WordPress. Introducción ..........................551 23.2. Instalación ..................................................................551 23.3. Configuración elemental .............................................553 23.4. Agregando contenido. Organizando tu Blog ................555 23.5. Personaliza tu Blog: cambiando de tema, modificación 23.5. de las imágenes del tema y de su template .................559 23.6. Instalación de Widgets ................................................561 23.7. Programando tus propios Widgets ...............................563
Programación avanzada ........................... 569 24.1. Trabajando en las trincheras con C/C++ y gcc ............569 24.2. Ejemplo sencillo ..........................................................569 24.3. Compilando varias fuentes ..........................................570 24.4. Creación de librerías ...................................................571 24.5. Entornos de desarrollo: Anjuta, Geany, Code::Blocks, Kdevelop .....................................................................573 24.5.1. Anjuta .......................................................................................... 574 24.5.2. Kdevelop ....................................................................................... 576 24.5.3. Iniciación a wxWidgets con Code::Blocks ...................................... 578
Mono, el C# libre ...................................... 593 25.1. ¿Qué es Mono? ...........................................................593
15
¡Programa en GNU/Linux!
25.2. Mi primer programa en Mono ......................................593 25.3. Introducción a Windows Forms en GNU/Linux ...........594 25.4. Descubriendo la potencia de Gtk# en Mono ................597
Python .................................................... 607 26.1 Tcl/Tk, un primer ejemplo de lenguaje de script ..........607 26.2. ¿Qué es Python? .........................................................607 26.3. Sintaxis básica de Python ...........................................608 26.4. Clases en Python ........................................................612 26.5. GUI con wxPython .......................................................616 26.6. Módulos para todas las necesidades ............................628
Python II ................................................. 631 27.1. Tratamiento de imágenes en Python ...........................631 27.2. Tratamiento de ficheros ...............................................632 27.3. Boa y Python: Jugando con serpientes .......................634 27.4. Programación funcional en Python .............................639 27.5. Sage, el gran desconocido ...........................................642 27.6. Python para cálculo científico ......................................646
Python III, su cara más lúdica .................. 651 28.1. Introducción a PyGame ...............................................651 28.2. Nuestro primer programa en PyGame .........................651 28.3. Un clon de Snake ........................................................653 28.4. Una última versión refinada ........................................659 28.5. Pintando con PyGame .................................................664 28.6. Python para los peques: La tortuga contraataca ..........666
16
Índice general
Python IV ................................................ 669 29.1. Manejo de bases de datos en Python...........................669 29.2. Automatizando las pruebas en Python. .......................671 29.3. Distintos entornos de desarrollo en Python ................674 29.3.1. DrPython, simple y eficiente ........................................................ 674 29.3.2. SPE, otra posibilidad. Introducción a la persistencia ..................... 675 29.3.3. Otras alternativas ........................................................................ 677
29.4. Control de versiones y trabajo en equipo con Bazaar y Lauchpad .....................................................678 29.5. Documentar en Python ...............................................680 29.6. Distribuyendo nuestras aplicaciones ..........................684 29.7. Mejorando el acceso a bases de datos: Una clase que encapsula la interfaz con SQLite3 ...............................688 29.8. Python y Glade ...........................................................690 29.9. Introducción a Django .................................................694
Bibliografía...................................... 703 BIBLIOGRAFÍA BÁSICA EN LINUX: ........................................................... 703 BIBLIOGRAFÍA GENERAL LINUX: .............................................................. 703 SOFTWARE LIBRE: ................................................................................... 705 PROGRAMACIÓN GENERAL: ..................................................................... 705 INGENIERÍA: ............................................................................................ 707 RECURSOS PARA EL DESARROLLADOR ................................................... 707 PAGINAS OFICIALES DE LENGUAJES E IDES: .......................................... 709 ADMINISTRACIÓN: .................................................................................. 710 LIBROS SOBRE LINUX, PROGRAMACIÓN Y SOFTWARE LIBRE: ................. 711
17
ยกPrograma en GNU/Linux!
18