viernes, octubre 02, 2009

Programas a Instalar en Ubuntu Jaunty Jackalope

Tomado de:
http://www.taringa.net/posts/linux/1564593/Programas-a-Instalar-Luego-de-Instalar-Ubuntu-Intrepid-Ibex.html

Ubuntu Jaunty Jackalope


Linux es un sistema operativo libre y gratuito, hay muchas distribuciones linux disponibles, algunas de ellas son Ubuntu, Mandriva, Debian, Suse y miles mas. Ubuntu "Jaunty Jackalope" es una distribución linux, libre y gratuita. Descarguen la imagen iso gratuitamente desde este enlace, pueden escoger la versión para 32 bits (los procesadores mas comunes), la versión de 64 bits si el procesador de la computadora es de 64 bits, o powerpc si se usa una apple o un ps3.

Graben la imagen iso en un cd o dvd, con cualquier grabador cd/dvd y un programa para grabación (K3b, Brasero, Toast Titanium, Burn4free, Nero), con la opción grabar imagen (quemar iso). Tienen toda la libertad de regalar la imagen iso o el cd/dvd, hacerle miles de copias si quieren, usarlas, regalarlas, venderlas, etc.

Dejan el cd o dvd en la computadora, reinician y comienza la instalación. Actualmente también se puede instalar Ubuntu desde windows, el instalador wubi permite instalar y desinstalar Ubunttu desde Windows.

Antes de instalar linux se recomienda grabar todos tus documentos importantes en un disco duro (o en cd/dvd) por si acaso. Es recomendable crear una partición nueva para que en esa nueva partición se instale linux (aunque esto es opcional). Al instalar linux hay que tener cuidado con no borrar la partición de windows o mac (con todos sus programas instalados y documentos).

La ventaja del dvd es que trae muchos programas para instalar, cuando no se quiera perder tiempo en descargar programas, o si no se tiene conexión a internet, así los programas se instalan en segundos. Con el programa synaptic se puede instalar cualquier progrma de ubuntu en el disco o en la red con solo dos clicks.



Acá es conveniente crear una copia de seguridad del disco, hay dos opciones Back in Time y TimeVault, que se descarga desde su página web, fuente.

Cambiar la Apariencia al Sistema.


El escritorio en ubuntu puede ser modificado facilmene, es cuestión de ir a System->Preferencias->Apariencia, seleccionar el tema que se quiera usar entre los que vienen instalados (o instalar en el caso que se descargue otro tema).

Los temas son gratuitos y pueden descargarse de: http://www.gnome-look.org/

Por ejemplo: Instalar el tema de vista en ubntu, tambien pueden cambiar la apariencia del escritorio Gnome por la del escritorio de Leopard, mas explicado y mas modificaciones en el post anterior.

Nota: Compiz Fusion ya viene instalado y activado, puede desactivarse o agregar mejores efectos. Un ejemplo de como puede quedar el escritorio modificandolo un poco:


[align=center][/align]

Extra: Activar "Cube reflection and Deformation" en Compiz

Macopix: Una mascota anime virtual para tu escritorio (se instala desde synaptic).

Kiconedit - Hacer íconos - Alternativa libre a iconcooleditor. Descarga


=========================================================================================================

Si ya escogistes el tema, agregale extras:

1.- Gdesklets y sus widgets:

Se instalan desde synaptic, instalar gdesklets y gdesklets-data.

2.- Un dock como el que tiene Mac OS: Escoger entre: AWN, Kiba-dock, Kool-dock.

=========================================================================================================

La siguiente es una lista de varios programas a instalar en ubuntu 8.04, es algo extensa, además está incompleta, aunque tiene algunos programas que pueden ser de utilidad:

Internet.


Firefox 3.5: El mas completo navegador web, ya viene instalado, la última versión se instala en ubuntu, abriendo la terminal y escribiendo lo siguiente: cp -r ~/.mozilla/firefox/ ~/firefox_backup | wget -O - http://releases.mozilla.org/pub/mozilla.org/firefox/releases/3.5/linux-i686/es-ES/firefox-3.5.tar.bz2 | tar xj -C ~ Fuente.

Konqueror : Un navegador web muy liviano y eficiente, además administrador de archivos, se instala desde synaptic.

Opera para Linux

Giver

FilePhyle 1.4

Google Earth para Linux

Google Gears 0.4.15.0: Usa servicios web como Google Reader sin conexión a internet

Java VM: Solamente instalar los restricted extras desde synaptic, para ver si funcina entrar a chatear en http://www.elchat.com/, si se puede chatear se instaló correctametne.

Café con Leche: Software para cibercafes

VisualRoute: Ofrece la posibilidad de ver gráficamente, a través de un mapa del mundo, por dónde está viajando la información cuando envías o recibes datos de un ordenador conectado a Internet, y que puede estar a miles de kilómetros de distancia.

Glubble 1.0.1.5: Controla lo que tus hijos pueden ver en internet

Mensajeros:

* Kopete: Mensajero multiprotocolo, es el mejor, soporta voip y videoconferencia.
* aMSN: Otro mensajero con soporte de audio y video.
* Pidgim 2.6 (El antiguo Gaim): Messenger multiprotocolo, ahora con soporte para videoconferencia.
* MsnStatus 1.0.0: Descubre el estado real de tus contactos de messenger
* Yahoo Messenger para Linux

Voip y Videoconferencias: Skype para Ubuntu Jaunty Jackalope y Ekiga (ya viene instalado).

VoipStunt y VoipBuster (llamadas internacionales gratuitas): Ambos servicios funcionan con el programa libre sjphone.
Usar el programa es fácil, está explicado aquí, para obtener nombre y contraseña solo hay que ir a la página web y ellas para escoger un nombre y escribir contraseña. Como usar voipbuster y voipstunt

Servidores:

Apache HTTP server - Mejor servidor web

Mysql - Mejor servidor de bases de datos multiusuario

Instalación apache2, php, mysql, phpmyadmin en Ubuntu

Red5: Es un servidor flash opensource y gratuito, desarrollado en Java, algunas de las funcionalidades que ofrece son: Streaming de audio y vídeo (FLV y MP3), Grabación de streams del cliente (sólo FLV), Shared Objects, Live Stream Publishing, Remoting (AMF). Fuente, Descarga.

Gestores de Contenido:

Drupal: Es un gestor de: contenidos, blogs, webs, foros y de portales. Sistema de administración de contenidos y motor de blogging basado en PHP.

Joomla: Sistema de administración de contenidos (CMS), heredero directo de Mambo. Está basado en el potente lenguaje de programación PHP.

Internet Anónima:

* Tor: Un sistema anonimo de comunicacion por Internet.
* Scatterchat: Un gaim para que chatear sin revelar su dirección ip. Un mensajero anónimo. (bajo wine).
* Torpark y xerobank browser: Dos navegadores anónimos (bajo wine)

Programas P2P

Amule (elinks, edk): Se instala desde synaptic
LimeWire
Deluge (torrents): Se instala desde synaptic. Deluge es libre y recomendado ya que no trae vulnerabilidades conocidas.
Pando: Descargar archivos pando
Transmision (otro programa libre para descargas por torrents): Tambien se instala desde synaptic.
Ktorrent: Otro programa para descargas por torrents.

Gestores de descargas:

Cualquiera de los siguientes:

1. Jdownloader: Es el mejor, funciona con rapidshare, megaupload y todos los demás.
2. Tucan Manager
3. cURL
4. Downloader 4 X
5. GNOME Gwget (Wget)
6. KGet (Ideal para usar con el navegador konqueror)
7. wxDownload Fast
8. Multiget http://mesh.dl.sourceforge.net/sourceforge/multiget/multiget_1.1.2-0getdeb1_i386.deb
9.- Aria.

Si usan firefox como navegador les conviene instalar flashgot.

Descargas y Subidas FTP

* Prozilla
* Filezilla

Utilidades.


Quemadores CD/DVD:

k3b: El mejor grabador multisesiones libre.
Brasero: Otro buen grabador de discos.
NeroLinux 3.4: En linux ya existe brasero y k3b que son libres y gratuitos, pero tambien existe nero.

Nota: Para grabar en HD-DVD y Blu-Ray por los momentos hay que recurrir a Nero Linux.

Particiones

Gparted y qtparted: Programas para crear y modificar particiones, se instalan desde synaptic.
NTFS-3g: Permite ver y escribir en las particiones de windows incluso desde el livecd antes de instalar ubuntu.

Paragon ntfs: Permite crear y gestionar particiones NTFS desde Linux, gracias al uso nativo de ntfs.sys se consigue un acceso total tanto en lectura como escritura a NTFS.

Testdisk: Escanea las particiones del disco duro y repara posibles daños.

Crear, Convertir y Cargar Imágenes Iso, Cue, Bin, etc.

* Acetoneiso: Para montar imágenes iso, se instala desde synaptic.
* ISOmorphin
* bchuck - Convierte .bin (con su respectivo .cue) y .raw a formato .iso.
* bin2iso - Lo mismo que el anterior.
* PowerISO Después de descomprimir ejecuten el archivo poweriso.
* Gisomount. Después se instala desde terminal, solo citar: sudo apt-get install gisomount
Para hacerlo funcionar citar: gisomount. Con este programa graficamente montaras archivos .iso para leerlos como si fueran cualquier carpeta. Fuente. Leer también

Otros.

Virtualbox: Permite crear máquinas virtuales en linux, a estas máquinas podemos instalarles Linux, Mac OS, Windows, FreeBSD, Solaris, etc.

Samba: Permite a tu ordenador con Ubuntu compartir archivos e impresoras con otras computadoras de una misma red local.
Mirage: Un excelente de visor imágenes.
Nautilus: Es el administrador de archivos de gnome, ya viene instalado.
Wine: Este programa permite instalar programas para windows en linux. Como instalar programas.ex con wine

Crossover 7 (Un wine modificado): Permite ejecutar aplicaciones populares de Windows en un sistema Linux. Instalación y Uso de Crossover 7 Descarga

VMware: Para instalar varios sistemas operativos utilizables desde el mismo windows. Antes de instalar vmware primero instalen Linux Headers, g++, xinetd y el parche 106.

Descarga por rapidshare, también se puede descargar de la página web oficial y después pegar la licencia.

Cedega 6.0: Programa para instalar los juegos de windows en linux. Descarga, fuente

IE 4 Linux: Internet Explorer para Linux.
Hdadvance: Pasar los juegos del ps2 al disco duro.
Hoz: El hacha de linux.
Mathematica para linux
Picasa para linux
Google desktop para linux

Rar Linux: La versión de winrar para linux RAR Archiver 3.7b1. Descargar
Filleroller, Ark, 7z - Compresores de archivos, se instalan desde synaptic.
Cairo Clock: Se instala desde synaptic.
Cronómetro: Cairo Clock y algunos widgets.

Java 2 Platform, Standard Edition (J2SE): Incluye la máquina virtual Java, librerías runtime y un lanzador de aplicaciones Java necesarios todos ellos para poder ejecutar programas escritos en el lenguaje de programación java. Se instala desde synaptic.

DEBORPHAN Y Localepurge: Son herramientas que te ayuda a mantener tu sistema en perfecto estado haciendo una limpieza a fondo que mejora el rendimiento general y aumenta el espacio libre en disco. Ubuntu-es, Documentación.

Nota: Linux no necesita desfragmentar el disco duro.

Calendarios, Agendas de Contactos, Listas de Tareas, Contabilidad Doméstica

Thunderbird: Programa de organización ofimática y cliente de correo electrónico, soporta IMAP/POPTML/RSS/etiquetas, tiene un corrector ortográfico incorporado.
Sunbird: Calendario, agenda y lista de tareas en un solo programa.
Rúbrica: Una agenda de contactos.
Task y psyched: Gestores de tareas por hacer.

Sports Tracker: Es una completa agenda de todas las actividades deportivas que realizas día a día, ayudándote a recopilarlas y analizarlas. Basta con descargar el archivo .jnlp que solo pesa 1 kb (Requiere tener instalado JRE, desde synpatic o adept).

Pondus: Programa para controlar tu peso (o sobrepeso) instala Pondus desde synaptic o adept con un click. Está accesible desde aplicaciones, accesorios.

HomeBank: Aplicacion para llevar un poco mas controladas los ingresos y gastos de tus cuentas de ahorro.

GnuCash 2.2.5: Completa solución para organizar tus finanzas y cuadrar tus activos y pasivos sin problemas.

Inglés.


Los mejores cursos para aprender inglés con linux son los siguientes:

* Cursos de inglés en video:

- Inglés sin barreras: Son 12 videos de 2 horas, mas cds de audio, mas manuales y cuadernos.
- Interchange Third Edition 1.

* Cursos en MP3:

- Curso de Inglés de la BBC
- Autoinglés
- Berlitz premier
- Pimsleur - English
- Triunfando con el Ingles

Programas para estudiar inglés con linux: Jalingo, babiloo, etc.
Otra forma es utilizando las redes sociales usando skype para comunicarse por texto, voz y video.

Varios Cursos (Descarga, Clic acá).

- jVLT: Herramienta de vocabulario, Fuente y detalles.

Audio y Video.


* Totem: Es el reproductor de películas y música, ya viene instalado, si falta un codec lo instalará en un segundo.

* XMBC es un excelente centro multimedia, esta nueva version se llama “Atlantis”, entre las novedades un atractivo skin para la version de Linux.

* Adobe: Adobe flash player (o gnash swf player), Adobe air, etc.
* Vlc y Mplayer: Dos reproductores libres que incluyen casi todos los codecs multimedia, se instalan desde synaptic.
* LinDVD.

Para quienes tengan que escuchar wma, dvds, ver wmv o dix, desde synaptic instalen: Libxine-extracodecs, totem-xine y W32codecs.

* Ogle: Reproductor dvd
* Flowplayer: Reproductor de archivos flash.
* Amarok (reproductor de audio): Se instala desde synaptic.
* Rhythmbox (escuchar audio)
* Dragon Player: Se instala desde synaptic. La alternativa a totem de kde.
* Podracer: Agregador de podcast con soporte http, ftp y bittorrent.
* Freevo - Graba programas de televisión en el disco duro -Alternativa libre a Tivo, fuente.
* Livestation - Web TV y los mejores canales de TV del mundo, en tus manos. Descarga.

Codecs.


Para instalar todos los codecs, flash player, dvd, Java RE, etc basta con instalar un solo paquete, los restricted extra:

* Click en aplicaciones, luego añadir y quitar.
* En mostrar escoger Todas las aplicaciones disponibles.
* Buscar y marcar: Ubuntu Restricted Extra. (Kubuntu Restricted Extra si se usa Kubuntu).
* Aplicar Cambios, eso es todo, así de fácil, después de eso se puede ver cualquier video, escuchar cualquier formato de audio desde totem o dragon player.

Para ver si se instaló correctamente java instalar el programa sportstracker (requiere java re para instalarse).

Edición de Imagen.


Gimp 2.6: Programa para manipulación de imagen, soporta muchos formatos.

Inkscape 0.46: Programa para ilustración y dibujo vectorial fácil de usar (se instala desde synaptic).

Sk1: Programa para ilustración con soporte CDR, CMYK y muchos otros.
Scribus: Potente herramienta de maquetación, soporte CYMK, creación de PDF, utilidades de dibujo vectorial.
Kontour (Antes Killustrator): Otra herramienta de dibujo vectorial.

Mypaint: Es un programa para dibujar, es una aplicación pensada para garabatear la pantalla en blanco sin pensar demasiado. El programa se ha diseñado para tablets PC aunque también puede manejarse con el ratón. Se pueden elegir los tipos de trazos, que son sensibles a la velocidad del cursor y la presión del lápiz óptico.
Kolourpaint: Herramienta de dibujo básica.

X-Sane: Interfaz gráfica que usa la API para obtención de imágenes escaneadas Sane.
F-Spot: La alternativa libre a picasa.
Imagemagick (conversor de formatos de imágen), Squash (redimensionado masivo de imágenes).

Edición de audio.


* Audacity: Editor de audio por excelencia, graba audio y editalo de la forma mas fácil posible.
* Ardour: Es un programa multiplataforma de grabación multipista de audio y midi a disco duro.
* XOWave.

* Rosegarden: Es un secuenciador profesional de audio y MIDI, editor de partituras y entorno general para edición y composición de música. Programa secuenciador y editor de partituras para Linux - Alternativa a cubase. Ofrece capacidades completas de composición y grabación a los músicos que prefieren utilizar la notación clásica.

* Hydrogen: Es un completo y avanzado sintetizador de batería que te permite programar sencillos patrones de ritmo con resultados verdaderamente profesionales.

* Sound Juicer: Para ripear cds de audio.
* Soundkonverter y sox: Dos conversores de formatos de audio.
* Mp3gain - Programa libre para normalizar mp3 en masa.
* Cdex: Ripear audio.

* Terminatorx: Es un sintetizador de audio en tiempo real que permite hacer scratch (rayar) los datos de audio muestreados digitalmente (*.wav, *.au, *.mp3, etc.) del mismo modo que los DJs manipulan los discos de vinilo.

- Otras opciones (que incluyen mas opciones): Fx, Echo, Lowpass, Stereo FX, etc.
- Puesdes Trabajar con mas de 30 turntables (click a turntables,a add turntable), opción para borrar todos los eventos.

Software Dj:

* Mixxx y Djplay - Mezcladores digital - Alternativa libre a Deejaysystem MK II.

Una alternativa libre para cuando quieras animar alguna fiesta. La apariencia parece sencilla (ahora tienen un fondo blanco) pero tiene muchas funciones:

Tempo syncronization, Control de playback rate, Flanger: Depth, delay, lfo, Pre gain, highpass, bandpass, lowpass. Full screen, Headphone.

Otros programas no tan conocidos:

* Dbmix, Jay’O'rama, GDAM,
* Bpmdj, Beatforce, Gjay, Mixere
* Freewheeling, MuteVJ, Tactile12000, Veejay
* Deekstasy, SooperLooper, Xwax, Cheestronic

De paga: Ultramixer (en su versión para linux) y Djmix.

Rockbox: Es un firmware para reproductores mp3 que permite reproducir cualquier codec de audio.

Fuente: Openjay.org

Edición de Video.


* Kdenlive: Editor de video muy completo, soporta varias pistas de audio, video, cortar, pegar, etc etc. Además es muy liviano.
* Cinelerra: Programa profesional para edición de video (libre y gratuito).
Otros editores de video: Lives, kdenlive, Avidemux, kino, virtualdub.

* Byzanz, capturador de escritorio en gif.
* Orange Slice, Gsubedit y Ksubtitle - Editores de subtítulos.
* Istambul: Capturar en video de la pantalla.
* Winff y Avidemux: Dos conversores de videos, se instalan desde Synaptic.
* Konverter - Conversor de formatos de video.
* Xinerama: Para usar dos o mas monitores como si fueran uno solo.
* Themonospot: Para saber el codec que requiere un video y otros datos.

Autoria DVD.


* DVDStyler - Autoria y grabación de dvds. Con DVDStyler DVDStyler podrás crear tus propios discos con tu colección de películas o tus últimas vacaciones organizadas con menús totalmente personalizados.

* ManDVD 2.4: Podrán añadir tantos clips de vídeo como desees para generar un DVD con capítulos, subtítulos, efectos de transición, ajustes de contraste y luminosidad, etc...

* Varsha, Dvdauthor y Qdvdauthor

Img2vcd es un script que convierte tus fotos (jpg) en video (mpg) para poder ver las fotos en el dvd, también puede crear efectos de transición entre las fotos (Blend).

* DVDRip
* Dvd95: Ripear dvd.

Efectos Especiales.


* Jahshaka: Editor de vídeo y efectos especiales con el que podrás trabajar en tiempo real, y que además cuenta con la ventaja de ser de código libre.

* Xmorph: Morphing y wharphing

Animación 2d y 3d.


* StopMotion y Ktoon: Animación 2d profesional.
* Syngf - Animación 2d basada en vectores.
* Flash for linux : Programa para crear animaciones flash.
* Blender 2.49: Programa de modelado y animación 3d, editor de audio y video, creación de videojuegos 3d.
* MakeHuman: Programa para crear humanos en 3d, modificarlos y cambio de poses.
* Jpatch
* FreeWRL - Visualizador de realidad virtual (VRML) libre., Screenshots

Alternativas Libres.
Encuesta: Mejores programas para linux.

Algunos programas comerciales para edición de imágen, audio y video


1.- Autodesk Discreet Inferno: Programa para creación de efectos especiales de video, con el que se han hecho varios videos musicales, películas como X-Men, Piratas del caribe, etc.

2.- Shake (De apple): Un programa para creación de efectos 2D y 3D, animación y composición.

3.- Anime Studio Pro 6 (Antiguo Moho): Es una completa suite de creación de dibujos animados, basada en vectores 2D. Un editor de dibujo que requiere que pintemos cada uno de los frames que compondrán nuestras animaciones y nos permitirá supervisar cada etapa de la producción.

Con una interfaz intuitiva y cargados de pre-animaciones, personajes entre otras cosas, Anime Studio Pro ofrece avanzadas herramientas de animación y muchos efectos sorprendente tales como:

1. Crear animaciones profesionales.
2. Bone - Puede añadir un esqueleto de una imagen simple y darle vida!
3. Importar tus propios Artwork.
4. Vector Grafico - Imágenes sin pérdida de calidad.
5. Manejo intuitivo del tiempo.
6. Soporte de audio.
7. Pen Tablet. Dibuja con lapiz y tableta para recrear la sensación de dibujar sobre la hoja.

4.- Maya para linux: Diseño y animación 3d.

5.- Pixel: Software comercial de edición de imágen para linux:

* Se integra a la arquitectura de SANE en Linux
* Soporte de Impresión.
* Manejo de formatos: GIF, PNG, JPG, TIFF, BMP, PSD; etc..
* Soporte de capas, trayectorias, canales, mascaras y selecciones.
* Puede manejar administración de color por RGB, CMYK, escala de grises, HDR
* Efectos para capas en tiempo real.
* Visualización y busqueda de archivos de imagenes.
* Brochas y herramientas para retoque y efectos especiales.
* Optimizaciones de imagenes para web.
* Soporte de mapas de imagenes web.

Clic acá para mayor información, compra, descarga de versión de demostración, soporte y más características.

6.- MainActor: Es un paquete de edición multimedia potente y profesional que cuenta con el secuenciador de vídeo MainActor Sequencer y el editor de animaciones y vídeo MainActor.

7.- Renoise: Tracker o secuenciador con el que puedes abrir y crear archivos IT, MOD, XM y también MID. El programa se compone de un editor de muestras de audio, de instrumentos, un mezclador y un editor de partituras. Se pueden añadir efectos, modificar paning, volumen y otros automatismos mediante curvas y además soporta la entrada MIDI y el uso de instrumentos y efectos VST.

8.- Linux Video Studio 0.1.5
9.- Arcad: Mejor que Autocad, viene en el dvd de suse linux, pesa unos 600 mb.
10.- Varicad 2008 3.01: Similar a Arcad, compatible con los formatos de autocad, demo funcional por 30 dias.
11.- Bricscad 9: Similar a Arcad.
12.- ENVI (Gisits): Programa para el procesamiento de imágenes geográficas.
13.- Eagle (cadsoft): Diseño de esquemas electrónicos.
14.- Digital Video Recorder (DVR) 2.6

Diseño Web


* Amaya.
* Kompozer.
* Quanta.
* Bluefish.
* Codetch, entre otros.

Fuente: Proyecto Pingüino, Guadalinex

Programación


* 1.- GCC: Es un paquete de compiladores llamado Gnu Compiler Collection. Para programar con lenguaje C, C++, Fortran, Java, basta escribir el código de nuestro programa en un editor de texto, luego solo se necesita un compilador para crear el archivo ejecutable, en este caso, GCC que se instala desde synaptic. Libro: El lenguaje de programación en C.

Pueden instalar Build-essential que es en realidad un metapaquete, o lo que es lo mismo, un paquete que contiene otros paquetes: g++, g++-3.3, gcc, gcc-3.3, libstdc++5-3.3-dev.

* 2.- Kdevelod, Glade y Anjuta: Son IDEs (entorno de desarrollo integrado, consiste en un editor de código, un compilador, un depurador y un constructor de interfaz gráfica GUI.) para desarrollo en C, C++, Java, Phyton, Ada, Sql, Perl, Pascal, etc. Se instalan desde synaptic.

* 3.- Gambas - Entorno gráfico para programación visual. El libro de Gambas

* 4.- Eclipse: Es una potente y completa plataforma de programación, desarrollo y compilación de elementos tan variados como sitios web, programas en C, C++, desarrollo Java EE (Se instala desde synaptic). Manual de eclipse, tutorial de eclipse.

* 5.- Realbasic: Un IDE fácil de usar y tremendamente potente para el lenguaje BASIC orientado a objetos. Es gratuito para linux, no se necesita serial. Descarga Directa 89 MB. Manual de Realbasic en español.

* 6.- Mono: Hace que los programas compilados con .NET corran sobre Linux y UNIX, incluye un compilador (2 versiones: mcs para net 1.1 y gmcs para net 2.0) y una maquina virtual (llamada mono). Mono es una maquina virtual que emula al .NET y trata de emular a Java en ser multiplataforma. Se instala desde synaptic. Libro para desarrolladores en Mono.

* 7.- Lazarus: Se instala desde synaptic. Tutorial Lazarus.

* 8.- Blitz 3d (antes blitz Basic): Es una poderosa herramienta de creación de videojuegos tanto en 2d como en 3D, soporta mallas estáticas y animadas de extensión .3DS, .X, .MD2 y su nativa .B3D, etc.

* 9.- Sun sdk: Kit de desarrollo de java, se instala desde synaptic.

Software libre para empresas.


* Abanq: Completo programa de planificación de recursos empresariales (ERP), orientado a la administración, gestión comercial, finanzas. Es multiplataforma, funciona en linux, mac y windows, utiliza el estándar ODF.

* OpenBravo. Sus dos aplicaciones aplicaciones OpenBravo ERP y OpenBravo punto de ventas (OPS) son libres y gratuitas.

* Codeka: Programa ERP para PYMES con interfaz web, desarrollado en PHP 5, el gestor de base de datos que utiliza es MySQL y utiliza como servidor web el programa Apache. para facturación, control de almacén, etc. Es una aplicación para controlar la facturación y gestionar el almacén de una pequeña o mediana empresa. Su gran virtud está en la facilidad de uso y en cubrir las necesidades de las pymes.

* Turbogears y Django - Programas para crea tu cibertienda. Cómo usar TurboGears para crear una tienda electrónica.

* Fisterra: Un programa ERP de esfuerzo español.

* CK-ERP: Programa de contabilidad, ERP y administración basada en la relación con nuestros clientes (CRM), , planificación de requerimientos de materiales (MRP), disponible en español.

* OpenERP: Es un sistema ERP y CRM con licencia libre (GPL), tiene componentes separados en esquema Cliente-servidor. Dispone de interfaces XML-RPC, y SOAP. Anteriormente se le conoció como TinyErp.

* Sugar Comunity Edition: Es un paquete de administración de clientes (CRM) online, está basado en LAMP (Linux-Apache-MySql-Php), desarrollado por la empresa SugarCRM.

* BulmaGes: Programa informático de contabilidad y gestión empresarial, tiene cuatro áreas principales:

- Contabilidad - BulmaCont
- Facturación - BulmaFact
- Terminal Punto de Venta modular y escalable - BTPV
- Gestión de Nóminas.

* KEME-Contabilidad: Aplicación multiplataforma open-source para llevar contabilidades. Es multipuesto, multiempresa y se ha liberado sin ninguna limitación. Manual en español.

* Gestión Linex: Es un paquete de gestión para la PYME con aplicaciones destinadas satisfacer las necesidades de cualquier empresa para la gestión y desarrollo de sus actividades, permite controlar el movimiento de todo el almacén, la caja, la facturación y manejar la contabilidad de la empresa, todo ello con un coste más competitivo derivado del ahorro que supone una licencia de software libre. Fuente.

Además tenemos los siguientes: ADempiere™, Compiere, OpenXpertya.

Mas de 380 compañias trabajan con ubuntu alrededor del planeta, la lista sigue creciendo, el objetivo inicial es completar la lista de mil empresas, Fuente.

Software comercial para empresas.


1.- Sage ERP X3: El ERP para la mediana y la gran empresa, disponible para windows, linux y mac. Trabaja con SQL server y oracle.

2.- IBM Lotus Symphony: Es un conjunto de aplicaciones para la creación, edición y compartición de documentos de texto, hojas de cálculo y otros documentos. Soporta el formato OpenDocument (ODF), así como los formatos de Microsoft Office y Lotus SmartSuite, y puede exportar archivos PDF (Portable Document Format). IBM Lotus Symphony es un conjunto de aplicaciones que incluye:

* IBM Lotus Symphony Documents, un procesador de textos.
* IBM Lotus Symphony Spreadsheets, una hoja de cálculo.
* IBM Lotus Symphony Presentations, un programa de presentación.

3.- 50 Programas desarrollados por la empresa mckesson. En un esfuerzo por reducir los costes a los servicios IT, desde 2004 la compañía está migrando sus aplicaciones a Linux. En la actualidad, ofrece 50 de sus 70 aplicaciones sanitarias más populares, como facturación, registro de farmacias, personal, pedidos médicos o de admisión, reduciendo el coste para hospitales y oficinas médicas.

4.- Oracle express: Ahora en .deb!!! Una base de datos completa pero con el de uso limite de 1 procesador, 1Gb de memoria y 4 Gb de espacio en los tablespaces.

5.- EuroGes: Es una revolucionaria solución de gestión empresarial que proporciona a la pyme un nivel de rendimiento, seguridad, fiabilidad, sencillez y conectividad únicos.

6.- EuroRest: Un programa para restaurantes con manejo de pantala tactil. Proporciona un sistema agil, manejable, intuitivo y con posibiliadad de terminales inalambricos.

7.- EuroCluster: Una revolucionaria solución para la replicación y duplicación de base de datos cuyo funcionamiento es totalmente independiente tanto de la red/es local/es como del/os sistema/s operativo/s en el/los que se quiera implantar.

8.- EuroInstall: es un programa para generar instalaciones sencillas a programas.

9.- GanttProject: Software para diseñar diagramas Gannt!
10.- Sybase: Sybase Adaptive Server Enterprise - Motor de Bases de Datos.
11.- IBM DB2 para Linux: Motor de Bases de Datos.
12.- Wingware: Wing IDE es un entorno de desarrollo totalmente integrado para Python.
13.- Vmware Server (gratuito) y Workstation (comercial): Crear y ejecutar máquinas virtuales en tu escritorio.
14.- Parallels Workstation: Competencia de Vmware Workstation (También tenemos a Virtualbox, Quemu y Xen).

15.- Control Tower (HP): Para la gestión de blades Linux, HP Control Tower viene a completar su oferta al permitir a los usuarios desplegar y monitorizar más fácilmente sus servidores HP BladeSystem en entornos Linux.


Oficina


OpenOffice.org 3.1: Suite de oficina libre y gratuita, viene instalado en Ubuntu, incluye las siguientes aplicaciones:

- Writer: Procesador de textos y páginas web.

- Calc: Hoja de cálculo, puede exportar hojas de cálculo en formato PDF.

- Impress: Programa de presentaciones de diapositivas, puede exportar presentaciones al formato SWF, crear archivos PDF y leer archivos en PowerPoint (ppt).

- Base: Programa de base de datos, permite la creación y manejo de bases de datos, elaboración de formularios e informes que proporcionan a los usuarios finales un acceso fácil a los datos. Es capaz de trabajar como un front-end para diversos sistemas de bases de datos tales como el de Access (JET), fuente de datos ODBC y MySQL/PostgreSQL.

- Draw: Editor de gráficos vectoriales y herramienta de diagramación, ofrece "conectores" entre las formas, que están disponibles en una gama de estilos de línea y facilitan la construcción de los dibujos, como diagramas de flujo, puede exportar sus creaciones al formato PDF y al estándar SVG.

- Math: Programa para la creación y edición de fórmulas matemáticas, las fórmulas pueden ser incorporadas dentro de otros documentos de OpenOffice.org, tales como los creados por Writer, soporta múltiples fuentes y puede exportar a PDF.

Descarga directa de OpenOffice.org 3.1, clic acá.

Koffice: Suite de oficina muy eficiente, una seria competencia para OpenOffice.org, se instala desde synpatic en ubuntu y desde adept en kubuntu.

Softmaker Office 2008: Potente suite de oficina para ubuntu.

* Dia: Editor de diagramas, gráficos, organigramas, etc.- Alternativa libre a Edge diagramer.
* Gooby: Editor de texto colaborativo, permite la edición de textos por varios usarios desde cualquier lugar en la red.
* Ppdftk: Escribe, crea y modifica documentos pdf.
* Kpdf, Xpdf, Evince: Lectores archivos pdf creados con OpenOffice.org o cualquier otro programa.

Orangoo: Corrector ortográfico online, también software libre, permite corregir la ortografía de cualquier texto en hasta 27 idiomas, desde cualquier pc conectado a la red, sin importar el sistema operativo que utilicemos o qué navegador. Lo mejor que es gratis.

* Software OCR: Para convertir texto a imágenes, hay varios disponibles, es cuestión de elegir: GOCR, Ocrad, OCRopus, Tesseract, Ocre.

Acrobat Reader 8.1.5.deb en español (49 MB).

Cmusphinx 1.0 para Linux: Escribir es cosa del pasado, solo dicta y el programa escribe. Descarga, Versión 1.0 (28 de junio de 2006). Se han desarrollado varias versiones de sphinx, cada una con usos diferentes. Sphinx Base, Sphinx2, Sphinx3 y Sphinx4. Para controlar sphinx se puede instalar Perlbox o tambien el programa Transcriber que convierte el audio en texto, fuente.

Gervoice: Permite controlar el escritorio gnome con la voz.

Otros programas relacionados:

Festival - Sintetizador de voz.

Perlbox Voice: Programa de dictado por voz y reconocimiento de voz.



Es una aplicación perl-Tk que utiliza festival para generar habla y Sphinx-2 para convertir órdenes habladas de un diccionario a órdenes que la máquina entiende, abrir una ventana, lanzar navegador, etc. Tutorial.

* KTTS - Un Lector de textos para kde! Permite leer cualquier texto de cualquier aplicación que estés ejecutando, en el idioma que hayamos configurado, primero hay que descargar una voz para festival en español o en el idioma que se necesite.

* Abiword : Procesador de textos (liviano)
* Gnumeric: Hojas de cálculo (liviana).

Educación/Investigación.


* Maxima: Es el programa libre para mateméticas y cálculo (recuerdan a derive 6).

* Stellarium: Software espectacular para astronomia, para saber como se verá el cielo desde cualquier lugar del planeta, a cualquier hora y en cualquier fecha, identifica las estrellas, los planetas, las lunas, las constelaciones y galaxias.

* Celestia: Programa para conocer y viajar por el universo, muestra detalles de cada planeta, satélite, estrella, galaxia, etc. Permite viajar por el universo a varios años luz por segundos y movernos en forma completamente 3d, ver las órbitas de los planetas en nuestro sistema solar, viajar a ellos, viajar a otras estrellas o galaxias, es excelente. Todo controlado por el teclado, el ratón o el joystick.

* MM5: Sistema de Predicción Meteorológica de predicción a corto plazo más ampliamente extendidos entre la comunidad internacional de modelización atmosférica. Es la quinta generación del llamado Mesoscale Model. Se puede aplicar a cualquier zona del mundo, ya que es posible desarrollar la información de entrada (campos meteorológicos, topografía y uso de suelo) necesaria para su funcionamiento, inclusive para zonas con alta resolución espacial que con topografía compleja, como la ZMVM, fuente.

* Pspp: programa de análisis estadístico de datos muestreados.
* SagCAD: Herramienta de dibujo y diseño de planos en 2d y 3d, permite importar/exportar archivos desde/hacia AutoCAD.
* GRETL: Software para análisis econométrico - Alternativa libre a Eviews.
* Geda: Diseño de esquemas electrónicos y Emulador de circuitos.
* Wikipedia completa en español de junio de 2008 para la descarga, muy útil en donde no se cuenta con internet.
* Xnbc: Simulador de Redes neuronales biológicas.
* Ecg2png: Visualizador para Electrocardiogramas.
* Xdrawchem: Programas de dibujo de estructuras químicas.

* Inteligencia artificial libre: Alice bot (Open Source), solo hay que descargar el código fuente y compilar el programa, también pueden chatear en línea con Alice.

Seguridad: Antivirus, firewall, etc.


Antivirus y Firewall Libres:

Virus scanner, chrootkit, rootkithunter. Eliminan solamente los virus para linux, no pierde tiempo en buscar los 60 mil virus para windows.

Firestarter: Un Firewall libre.

Antivirus Comerciales

1.- Bitdefender Linux Edition.

2.- Pandas antivirus para linux (freeware).

3.- Sophos antivirus para linux.

4.- NoScript 1.7.9: Protege tu navegación web de scripts maliciosos

Niños


Tuxpaint y Tuxpaint Sellos de Goma: Se instala desde synaptic.
Tuxmath.
GnuSolfege: Tambien se instala desde synaptic.

Juegos para todas las edades.


Juegos Libres para Linux que requieren menos de 1 ghz, 256 mb de ram y 8 mb de video - E instalables con dos clicks desde synaptic en ubuntu.

Hay varios juegos 2d y 3d que no son requieren de un equipo tan potente para jugar, algunos son los siguientes:

1.- Frozzen bubble:
2.- Ajedrez (ya viene instalado)
3.- gbrainy: Un excelente juego de entrenamiento mental: Lógica, Memoria, Cálculo, etc.
4.- Tuxpaint y tuxpaint sellos de goma (mencionado arriba).
5.- Sudoku
6.- Jumpnbump
7.- Neverball
8.- Trigger
9.- Val-and-Rick
10.- X-moto
11.- Powermanga
12.- Xgalaga
13.- Kobodeluxe
14.- ACM
15.- Airstrike
16.- Cartas: PokerTH - Poker Texas Hold'Em.
17.- Amoebax
18.- Angry Drunken Dwarves
19.- Armagetron
20.- Berusky.
21.- GridWars
22.- Eat the whistle.

Juegos Clónicos:

17.- Wormux
18.- Kasteroids
19.- Lincity Ng
20.- Pingus
21.- Freeciv
22.- Xarchon

Los Juegos no nativos pueden jugarse con implementaciones de la API de Windows con los programas Wine y Cedega. Algunos juegos de Windows que Pueden instalarse en linux: Todos estos juegos han sido probados con Wine y funcionan perfectamente.

* Warcraft 3.
* World of Warcraft.
* World of Warcraft: The Burning Crusade (Expansión).
* GTA Vice City.
* GTA San Andreas.
* Simcity 4 deluxe Edition.
* Trackmania United Forever.

Tambien hay varios juegos hechos por hispanos con blender, para usarlos hay que instalar blender y después cargar el archivo .blend:

1.- Tiko: El Maestro (creado por maléfico):

Me recuerda a zelda o a mario 64, tiene misiles de magia, camina hacia enfrente, puede girar a los lados, cuerpo humanoide. La barra de sangre indica cuanto te queda de vida, si te matan se cierra el juego. Puedes levitar, tiene una barra de magia, es entretenio.

Descarga del juego. Lo descomprimen, luego lo abren con blender y a jugar.

2.- Kart (Creado por fisicomolon). Descarga, fuente 1, fuente 2.

3.- YoFrankie: Es un nuevo juego se está desarrollando en el Blender Institute con Blender y Cristal Space. Fuente.

Juegos nativos para linux 3d que requieren equipos un poco mas potentes, etc:

Aventura

* Excalibur: Morgana’s Revenge v3.0

Acción

* OpenArena 2008.
* True Combat Elite
* Tremulous 1.1.0.
* Americas Army.
* Warsow.
* Urban Terror
* Vendetta
* Alien Arena 2006: Gold Edition.
* World of Padman
* Nexuiz 1.5.
* Cube.
* Assault Cube.
* Sauerbraten
* Enemy Territory.
* The Hunted Chronicles.
* Adanaxis.

Arcade

* No Gravity.
* Critical mass.
* Trip on the funny boat.
* Wörms of Prey.
* Pang.

Clásicos

* Tux Racer.
* Armagetron Advanced.
* SuperTux.
* Tuxkart.
* Pingus.

Cultura y Turismo

* Nimuh - juego en el que se conoce los lugares y la cultura de Andalucía.

Deportivos

* Yoda Soccer.
* Free Tennis.
* Ping pong.
* Canon Smash
* BillarGL.
* FooBillard: http://foobillard.sunsite.dk/

Estrategia

* TA Spring.
* Bos Wars
* Warzone
* Spring
* FreeCiv.
* Attal: Lords of Doom.
* Globulation.
* Advanced Strategic Command.
* Glest - Medieval, clon del Warcraft 3, tiene muchos mods.
* 8 Kingdoms
* Battle for Wesnoth
* Scourge
* Boson
* Scorched 3d.

Juegos de rol (en inglés Role Playing Game, RPG):

* Scorched 3d
* NeverWinter Nights
* Enrapture

MMORPG

Juegos de rol multijugador masivo en línea:

* Ember.
* Battle Tank
* Stendhal.
* Planeshift.
* The Mana World.

Plataformas

* Tux Racer.
* SuperTux.
* Scorched 3D.

Simuladores

* Second Life
* Danger from the Deep - Submarinos.
* Flightgear - Aviones.
* Lincity - Comunidades.
* Reaper - Combate aéreo y espacial en 3D.
* Frets on Fire - El Guitar Hero libre.
* UltraStar Delux - El singstar libre (un karaoke que da puntuaciones tu forma de cantar)

Carreras

* Trigger.
* TORCS.
* Mania Drive
* Racer.
* VDrift.

Emuladores, Roms e Isos

* Kxmame - El Emulador por excelencia de videojuegos de otras plataformas para GNU/Linux.
* Zsnes: El mejor emulador para Super Nintendo, se instala desde synaptic.
* Snes 9x - Otro emulador libre para super nintendo
, se instala desde synaptic.
* Mupen64 - Emulador de nintendo 64, se instala desde synaptic. Hay una versión mejorada que se dice Mupen64Plus.
* PCSX2 - Emulador de PlayStation 2. Requiere ordenador potente.
* ScummVM - Emulador de los juegos de Lucas Arts.
* Visual Boy Advance.
* iNes - Emulador de Nintendo.
* ePSXe - Emulador de PlayStation 1, mas difícil de configurar que Psx Emulator, pero con mejores gráficos.
* Psx Emulator - Emulador de Playstation 1, funciona sin plugins, muy facil de configurar.
* Yabause: Emulador de juegos para Sega Saturn.

Roms para los emuladores:

* 800 Roms de super nintendo,

* Todos los juegos de Nes, Snes, y N64,

* 2615 Roms de Nintendo 64, Softredmania.

* Muchas isos para Psx.

Juegos Freeware

UFO: Alien Invasion
Privateer Gemini Gold

Lemmingball Z

Juegos Comerciales

En linux algo que abunda son los videojuegos, por ejemplo los siguientes son algunos de los juegos comerciales para linux:

1.- Postal Plus
2.- Rune: Halls of Vallaha
3.- Tribes 2
4.- Sid Meier’s Alpha Centauri with Alien Crossfire expansion pack
5.- Heavy Meltal F.A.K.K.2
6.- Mind Rover
7.- Rune
8.- Kohan: Inmortal Sovereings
9.- Deus Ex
10.- Soldier of Fortune
11.- Unreal Tournament
12.- Descent3
13.- Civilization: Call to Power
14.- Heavy Gear II
15.- SimCity 3000 Unlimited
16.- Eric’s Ultimate Solitaire
17.- Heretic II
18.- Heroes of Might and Magic III
19.- Myth II: Soulblighter
20.- Railroad Tycoon II

Fuente: Lokigames (Página sobre los juegos y descargas de demos).

21.- Knights and Merchants
22.- Nuts & Scrap
23.- Northland
24.- Cold War
25.- Gorky 17
26.- Robin Hood
27.- Airline Tycoon Deluxe
28.- Barkanoid 2
29.- Postal 2: Apocalypse Weekend
30.- Quake 4
31.- Lugaru
32.- Ballistics
33.- Astromenace.

Guadagames: Es otra página con imágenes, descripción, requerimientos, demos y precio de los juegos.

Algunos juegos anime:

33.- Adagio
34.- At Sumer’s End
35.- Flood of Thears
36.- HaniHani
37.- Itsdta
38.- Narcisu
39.- OMGWTFOTL
40.- Panda Samurai
41.- Poor Little Bird
42.- RedShift
43.- Resonance
44.- VFTOS

Fuente y descarga de demos: http://www.insani.org

Otros juegos para los inconformes: http://www.linuxjuegos.co

45.- Doom 3 http://zerowing.idsoftware.com/linux/doom/
46.- X-Plane: http://www.x-plane.com/sysreq.html

Nota: Existe varias distribuciones Linux que trae muchos juegos, entre ellas están las siguientes:

* Ubuntu Ultimate Gamers Edition 1.9. Descarga.

* LG-Live: Una distro live dvd con todos 23 juegos instalados para todos los gustos. Descarga.

Fuentes: The Inquirer, Documentación de ubuntu, Ubuntulife.

Otros Programas Interesantes Para Ubuntu.


Sony Ericsson Themes Creator 3.27: Crea temas visuales para tu Sony Ericsson en segundos.
Mouse Gestures 1.5.2: Usa tu ratón para manejar tu navegador web.
FilmShelf (Cataloga tus vídeos y películas, sea cual sea el soporte original).
Acrobat Distiller Server (Adobe)
Adobe Reader 7.0 (este es que lee el texto con sintetizador de voz)
Adobe Air
Palm pilot sync (se instala con synaptic): Programa para sincronización con palms.
Opengl3.0: Esta libreria que se instala automáticame al instalar ubuntu.

Recuperación de Archivos

* debugfs y e2undel: Recuperan archivos de las particiones ext2.
* R-linux: Recuparar archivos de particiones ext3, se instala con wine.

* Magic Rescue: Programa para recuperar archivos borrados de las particiones ext3, leer también.

* Authopsy: Utilidad para recuperar archivos de particiones ext3. página. Fuente.

* Gtkrecovery y photorec: Recuperar archivos de las particiones ext 2, y archivos de tarjetas borradas.

Programas Para Windows Instalables con Wine.


Hay muchos programas que se instalan en linux usando el programa wine (se instala desde synaptic con dos clicks), algunos emplos son los siguientes):

* Winrar.exe.
* Photoshop CS3
* Dreamweaver 8
* Microsoft Office 2007
* Microsoft Visio 2003
* Pixmaker Pro (convertir varias fotos en una de 360 grados)
* Mediacoder 0.6 (es gratis y convierte absolutamente a cualquier codec).
* Reason de Propellerheads.

Luego de descargar los archivos quemenlos en un dvd o mejor pasenlos a un disco duro ya que no se raya.

Guía de estilo del código Python

Tomado de:
http://mundogeek.net/traducciones/guia-estilo-python.htm


Por Guido van Rossum, Barry Warsaw
Traducción al castellano por Raúl González Duque
el día 10 de Agosto de 2007

Introducción

En este documento se listan distintas convenciones utilizadas en el código Python comprendido en la librería estándar de la distribución principal de Python. Por favor refierase al PEP que describe las guías de estilo del código C para la implementación en C de Python[1].

Este documento es una adaptación del ensayo original de Guido Guía de Estilo de Python[2], con algunos añadidos de la guía de estilo de Barry[5]. En los puntos en los que exista conflicto, se aplican las reglas de estilo de Guido para los propósitos de este PEP. Este PEP puede estar aún incompleto (de hecho, es posible que nunca llegue a completarse ).
La Consistencia Estúpida es el Demonio de las Mentes Pequeñas

Una de las ideas clave de Guido es que el código se suele leer mucho más de lo que se escribe. Las guías de estilo que proporciona este documento están dirigidas a mejorar la legibilidad del código y hacerlo consistente a lo largo del amplio espectro del código Python. Como dice el PEP 20[6], "La legibilidad cuenta".

Una guía de estilo nos ayuda a lograr consistencia. Ser consistente con esta guía de estilo es importante. La consistencia dentro de un proyecto es aún más importante. La consistencia dentro de un módulo o función es la más importante.

Pero lo más importante es saber cuándo ser inconsistente -- algunas veces la guía de estilo simplemente no es aplicable. Cuando tengas dudas, usa tu juicio. Mira ejemplos y decide qué te parece mejor. ¡Y no dudes en preguntar!

Dos buenas razones para romper una regla en particular son:

1. Que al aplicar la regla el código se haga menos legible, incluso para alguien que esté acostumbrado a leer código que sigue las normas.
2. Para ser consistente con código relacionado que también la rompe (quizás por razones históricas) -- aunque esto también es una oportunidad de arreglar el desaguisado de otra persona (al más puro estilo XP).

Formateo del código
Indentación

Usa 4 espacios por cada nivel de indentación.

Para código realmente antiguo que no quieras estropear, puedes continuar usando tabuladores de 8 espacios.
¿Tabuladores o espacios?

Nunca mezcles tabuladores y espacios.

La forma más popular de indentar en Python es utilizar sólo espacios. La segunda forma más popular es usar sólo tabuladores. El código indentado con una mezcla de tabuladores y espacios debería reformatearse y usar espacios exclusivamente. Cuando se invoca el intérprete de línea de comandos de Python con la opción -t, este muestra avisos sobre código que mezcla tabuladores y espacios. Cuando se utiliza -tt estos avisos se convierten en errores. ¡Estas opciones son altamente recomendables!

Para nuevos proyectos, se recomienda firmemente el uso de espacios en lugar de tabuladores. La mayoría de los editores tienen características que hacen esto bastante sencillo.
Tamaño máximo de línea

Limita todas las líneas a un máximo de 79 caracteres.

Todavía existen muchos dispositivos por ahí que están limitados a 80 caracteres por línea; además limitando el ancho de las ventanas a 80 caracteres posibilitas el tener varias ventanas una al lado de otra. El ajuste de línea por defecto en este tipo de dispositivos no da buenos resultados. Por lo tanto, por favor limita todas las líneas a un máximo de 79 caracteres. Para cadenas de texto largas (cadenas de documentación o comentarios), es aconsejable limitar el ancho a 72 caracteres.

La forma preferida de dividir líneas largas es utilizar la característica de Python de continuar las líneas de forma implícita dentro de paréntesis, corchetes y llaves. Si es necesario, puedes añadir un par de paréntesis extra alrededor de una expresión, pero algunas veces queda mejor usar una barra invertida. Asegurate de indentar la línea siguiente de forma apropiada. Algunos ejemplos:

class Rectangle(Blob):

def __init__(self, width, height,
color='black', emphasis=None, highlight=0):
if width == 0 and height == 0 and \
color == 'red' and emphasis == 'strong' or \
highlight > 100:
raise ValueError("sorry, you lose")
if width == 0 and height == 0 and (color == 'red' or
emphasis is None):
raise ValueError("I don't think so")
Blob.__init__(self, width, height,
color, emphasis, highlight)

Líneas en blanco

Separa las funciones no anidadas y las definiciones de clases con dos líneas en blanco.

Las definiciones de métodos dentro de una misma clase se separan con una línea en blanco.

Se pueden usar líneas en blanco extra (de forma reservada) para separar grupos de funciones relacionadas. Las líneas en blanco se pueden omitir entre un grupo de funciones con una sola línea (por ejemplo, con un conjunto de funciones sin implementación).

Usa líneas en blanco en las funciones, de forma limitada, para indicar secciones lógicas.

Python acepta el caracter control-L (o lo que es lo mismo ^L) como un espacio en blanco; muchas herramientas utilizan este caracter como separador de páginas, por lo que puedes usarlos para separar páginas de secciones relacionadas en tu archivo.
Codificación de caracteres (PEP 263)

El código de la distribución base de Python siempre debería utilizar las codificaciones ASCII o Latin-1 (también conocida como ISO-8859-1). Para Python 3.0 y superiores, se recomienda UTF-8 en lugar de Latin-1, ver PEP 3120.

Los archivos que usan ASCII (o UTF-8, para Python 3.0) no deberían tener una línea de especificación del juego de caracteres. Sólo debería usarse Latin-1 (o UTF-8) cuando se necesite mencionar a un autor cuyo nombre requiera de caracteres Latin-1 en un comentario o cadena de documentación; si no es así, la forma adecuada de incluir datos no ASCII en literales de cadena es mediante los caracteres de escape \x, \u y \U.

Para Python 3.0 y superiores, se recomienda la siguiente política para la librería estándar (ver PEP 3131): Todos los identificadores en la librería estándar Python DEBEN usar sólo caracteres ASCII, y DEBERÍAN usar palabras en ingĺés siempre que esto sea posible (en muchos casos se utilizan abreviaturas y términos técnicos que no forman parte del inglés). Además, los literales de cadena y los comentarios también deben estar en ASCII. Las únicas excepciones son (a) baterías de pruebas que comprueben las características no ASCII, y (b) nombres de autores. Los autores cuyos nombres no estén basados en el alfabeto latino DEBEN proporcionar una transcripción de sus nombres a este alfabeto.

Se recomienda a los proyectos de código abierto con audiencia global que adopten políticas similares.
Imports

*

Normalmente los imports deberían colocarse en distintas líneas, por ejemplo:

Sí:

import os
import sys

No:

import sys, os

aunque también es correcto hacer esto:

from subprocess import Popen, PIPE

*

Los imports se colocan siempre en la parte superior del archivo, justo después de cualquier comentario o cadena de documentación del módulo, y antes de las variables globales y las constantes del módulo.

Los imports deberían agruparse siguiendo el siguiente orden:
1. imports de la librería estándar
2. imports de proyectos de terceras partes relacionados
3. imports de aplicaciones locales/imports específicos de la librería

Deberías añadir una línea en blanco después de cada grupo de imports.

Si es necesario especificar los nombres públicos definidos por el módulo con __all__ esto debería hacerse después de los imports.
*

Es muy desaconsejable el uso de imports relativos para importar código de un paquete. Utiliza siempre la ruta absoluta del paquete para todos los imports. Incluso ahora que el PEP 328 [7] está totalmente implementado en Python 2.5, el usar imports relativos se desaconseja seriamente; los imports absolutos son más portables y normalmente más legibles.
*

Cuando importes una clase de un módulo, normalmente es correcto hacer esto

from myclass import MyClass
from foo.bar.yourclass import YourClass

Si esto causa colisiones de nombres con objetos locales, utiliza en su lugar

import myclass
import foo.bar.yourclass

y usa "myclass.MyClass" y "foo.bar.yourclass.YourClass" en el código

Espacios en blanco en expresiones y sentencias

Evita espacios en blanco extra en las siguientes situaciones:

*

Inmediatamente después de entrar en un paréntesis o antes de salir de un paréntesis, corchete o llave.
Sí:

spam(ham[1], {eggs: 2})

No:

spam( ham[ 1 ], { eggs: 2 } )

*

Inmediatamente antes de una coma, punto y coma, o dos puntos:
Sí:

if x == 4: print x, y; x, y = y, x

No:

if x == 4 : print x , y ; x , y = y , x

*

Inmediatamente antes de abrir un paréntesis para una lista de argumentos de una llamada a una función:
Sí:

spam(1)

No:

spam (1)

*

Inmediatamente antes de abrir un paréntesis usado como índice o para particionar (slicing):
Sí:

dict['key'] = list[index]

No:

dict ['key'] = list [index]

*

Más de un espacio alrededor de un operador de asignación (u otro operador) para alinearlo con otro.
Sí:

x = 1
y = 2
long_variable = 3

No:

x = 1
y = 2
long_variable = 3

Otras Recomendaciones

*

Rodea siempre los siguientes operadores binarios con un espacio en cada lado: asignación (=), asignación aumentada (+=, -= etc.), comparación (==, <, >, !=, <>, <=, >=, in, not in, is, is not), booleanos (and, or, not).
*

Usa espacios alrededor de los operadores aritméticos:
Sí:

i = i + 1
submitted += 1
x = x * 2 - 1
hypot2 = x * x + y * y
c = (a + b) * (a - b)

No:

i=i+1
submitted +=1
x = x*2 - 1
hypot2 = x*x + y*y
c = (a+b) * (a-b)

*

No uses espacios alrededor del signo '=' cuando se use para indicar el nombre de un argumento o el valor de un parámetro por defecto.
Sí:

def complex(real, imag=0.0):
return magic(r=real, i=imag)

No:

def complex(real, imag = 0.0):
return magic(r = real, i = imag)

*

Generalmente se desaconsejan las sentencias compuestas (varias sentencias en la misma línea).
Sí:

if foo == 'blah':
do_blah_thing()
do_one()
do_two()
do_three()

Preferiblemente no:

if foo == 'blah': do_blah_thing()
do_one(); do_two(); do_three()

*

Aunque a veces es adecuado colocar un if/for/while con un cuerpo pequeño en la misma línea, nunca lo hagas para sentencias multi-clausula.
Preferiblemente no:

if foo == 'blah': do_blah_thing()
for x in lst: total += x
while t < 10: t = delay()

Definitivamente no:

if foo == 'blah': do_blah_thing()
else: do_non_blah_thing()

try: something()
finally: cleanup()

do_one(); do_two(); do_three(long, argument,
list, like, this)

if foo == 'blah': one(); two(); three()

Comentarios

Los comentarios que contradicen el código son peores que no tener ningún comentario. ¡Manten siempre como prioridad el mantener los comentarios actualizados cuando cambies el código!

Los comentarios deberían ser frases completas. Si un comentario es una frase o sentencia, la primera palabra debería estar en mayúsculas, a menos que sea un identificador que comience con una letra en minúsculas (¡nunca alteres el identificador sustituyendo mayúsculas o minúsculas!).

Si un comentario es corto, se puede omitir el punto al final. Los comentarios de bloque generalmente consisten en uno o más párrafos construidos con frases completas, y cada frase debería terminar con un punto.

Deberías usar dos espacios después de un punto de final de línea.

Cuando escribas en inglés, aplica las reglas de Strunk y White (N.T: Los autores de "The Elements of Style", un conocido libro de estilo de escritura en inglés).

Para los programadores en Python que no sean de países de habla inglesa: por favor escribe tus comentarios en inglés, a menos que estés un 120% seguro de que el código nunca será leído por gente que no hable tu idioma.
Comentarios de bloque

Los comentarios de bloque generalmente se aplican al código que se encuentra a continuación, y se indentan al mismo nivel que dicho código. Cada línea de un comentario de bloque comienza con un # y un único espacio (a menos que haya texto indentado dentro del comentario).

Los párrafos dentro de un comentario de bloque se separan por una línea conteniendo un único #.
Comentarios en línea

Utiliza comentarios en línea de forma moderada.

Un comentario en línea es un comentario que se encuentra en la misma línea que una sentencia. Los comentarios en línea deberían separarse por al menos dos espacios de la sentencia que comentan. Deberían comenzar con un # y un espacio.

Los comentarios en línea son innecesarios y de hecho sólo sirven para distraer si indican cosas obvias. No hagas cosas como esta:

x = x + 1 # Incrementa x

Aunque a veces, algo como esto puede ser de utilidad:

x = x + 1 # Compensa por el borde

Cadenas de Documentación

Las convenciones para escribir buenas cadenas de documentación (también llamados "docstrings") se inmortalizaron en el PEP 257 [3].

*

Escribe docstrings para todos los módulos, functiones, clases, y métodos públicos. Los docstrings no son necesarios para métodos no públicos, pero deberías tener un comentario que describa lo que hace el método. Este comentario debería aparecer antes de la línea "def".
*

El PEP 257 describe las convenciones para buenas cadenas de documentación. Es importante notar, que el """ que finaliza un docstring de varias líneas debería situarse en una línea separada, y preferiblemente precederse por una línea en blanco, por ejemplo:

"""Return a foobang

Optional plotz says to frobnicate the bizbaz first.

"""

*

Para cadenas de documentación de una línea, es adecuado mantener el """ de cierre en la misma línea.

Mantenimiento de datos de versión

Si necesitas incluir datos de Subversion, CVS, o RCS en tus archivos de código fuente, hazlo de la siguiente forma.

__version__ = "$Revision: 56036 $"
# $Source$

Estas líneas deberían incluirse antes de la cadena de documentación del módulo, antes de cualquier otro código, y separadas por una línea en blanco encima y debajo.
Convenciones de nombres

Las convenciones de nombres de la librería de Python son un pequeño desastre, así que nunca conseguiremos que sea completamente consistente -- aún así, aquí tenéis los estándares de nombrado recomendados en la actualidad. Los nuevos módulos y paquetes (incluyendo los frameworks de terceras personas) deberían acomodarse a estos estándares, pero donde exista una librería con un estilo distinto, se prefiere la consistencia interna.
Descriptivo: Estilos de Nombrado

Hay un montón de estilos de nombrado distintos. Ayuda el poder reconocer qué estilo de nombrado se utiliza, independientemente de para lo que se utilice.

Podemos encontrarnos con los siguientes estilos de nombrado más comunes:

*

b (una sola letra en minúsculas)
*

B (una sola letra en mayúsculas)
*

minusculas
*

minusculas_con_guiones_bajos
*

MAYUSCULAS
*

MAYUSCULAS_CON_GUIONES_BAJOS
*

PalabrasEnMayusculas (CapWords o CamelCase -- llamado así por el parecido de las mayúsculas con las jorobas de los camellos[4]). Algunas veces también se llaman StudlyCaps.

Nota: Cuando se usan abreviaturas en CapWords, mantén en mayúsculas todas las letras de la abreviatura. Por lo tanto HTTPServerError es mejor que HttpServerError.
*

capitalizacionMezclada (¡se diferencia de PalabrasEnMayusculas porque la primera letra está en minúsculas!)
*

Mayusculas_Con_Guiones_Bajos (¡feo!)

También existe un estilo en el cuál se utiliza un prefijo único corto para agrupar nombres relacionados de forma conjunta. Esto no se suele utilizar mucho en Python, pero se menciona con el objeto de que el texto sea lo más completo posible. Por ejemplo, la función os.stat() devuelve una tupla cuyos elementos tradicionalmente han tenido nombres como st_mode, st_size, st_mtime y similares. (Esto se hace para enfatizar la correspondencia con los campos de la estructura de la llamada a sistema POSIX, lo cual es de utilidad para los programadores que están familiarizados con ella.)

La librería X11 utiliza una X inicial para todas sus funciones públicas. En Python, este estilo generalmente se considera innecesario porque los atributos y métodos se preceden por el objeto al que pertenencen, y los nombres de funciones se preceden del nombre del módulo.

Además se reconocen las siguientes formas especiales usando guiones bajos al inicio o final del nombre (generalmente estos se pueden combinar con cualquier convención de capitalización):

*

_guion_bajo_al_inicio: indicador débil de "uso interno". Por ejemplo "from M import *" no importa objetos cuyos nombres comiencen con un guión bajo.
*

guion_bajo_al_final_: usado por convención para evitar conflictos con palabras clave de Python, por ejemplo

Tkinter.Toplevel(master, class_='ClassName')

*

__doble_guion_bajo_al_inicio: cuando se use para nombrar un atributo de clase, invoca la característica de "planchado de nombres" (dentro de la clase FooBar, __boo se convierte en _FooBar__boo; ver abajo).
*

__doble_guion_bajo_al_inicio_y_fin__: objectos "mágicos" o atributos que viven en espacios de nombres controlados por el usuario. Por ejemplo __init__, __import__ o __file__. Nunca inventes nombres como estos; utilizalos sólo como están documentados.

Prescriptivo: Convenciones de Nombrado
Nombres a Evitar

Nunca utilices los caracteres 'l' (letra ele minúscula), 'O' (letra o mayúscula), o 'I' (letra i mayúscula) como nombres de variables de un solo caracter.

En algunas fuentes, estos caracteres son indistinguibles de los numerales uno y cero. Cuando estes tentado de usar 'l', utiliza una 'L' en su lugar.
Nombres de Paquetes y Módulos

Los módulos deberían tener nombres cortos formados en su totalidad por letras minúsculas. Se puede utilizar guiones bajos en el nombre del módulo si mejora la legibilidad. Los paquetes Python también deberían tener nombres cortos formados de letras minúsculas, aunque se desaconseja el uso de guiones bajos.

Dado que los nombres de los módulos se mapean a nombres de archivos, y algunos sistemas de ficheros no diferencian entre mayúsculas y minúsculas y truncan los nombres largos, es importante que los nombres de los módulos que se elijan sean suficientemente cortos -- esto no es un problema en Unix, pero puede ser un problema cuando el código se porta a versiones antiguas de Mac o Windows, o a DOS.

Cuando un módulo de extensión escrito en C o C++ tenga un módulo Python asociado que proporcione una interfaz de más alto nivel (por ejemplo, más orientado a objetos), el módulo C/C++ debería comenzar con un guión bajo (por ejemplo _socket).
Nombres de Clases

Casi sin excepciones, los nombres de clases usan la convención CapWords. Las clases de uso interno tienen además un guión bajo al principio del nombre.
Nombres de Excepciones

Dado que las excepciones deberían ser clases, se aplica la convención relativa al nombrado de clases. De todas formas, deberías usar el sufijo "Error" en los nombres de las excepciones (si la excepción es realmente un error).
Nombres de Variables Globales

(Esperamos que estas variables estén destinadas a ser usadas sólo dentro de un módulo.) Las convenciones son prácticamente las mismas que para las funciones.

Los módulos diseñados para ser utilizados usando "from M import *" deberían usar el mecanismo __all__ para prevenir que se exporten variables globales, o bien usar la convención antigua de añadir un guión bajo como prefijo a dichas variables globales (puede que quieras hacer esto para indicar que estas variables son "variables no públicas del módulo").
Nombres de Funciones

Los nombres de funciones deberían estar en letras minúsculas, con palabras separadas mediante guiones bajos según sea necesario para mejorar la legibilidad.

Sólo se acepta capitalizacionMezclada en contextos en los que ya se trate del estilo principal (por ejemplo threading.py), para mantener la compatibilidad hacia atrás.
Argumentos de funciones y métodos

Utiliza siempre 'self' como primer argumento de los métodos de instancia.

Utiliza siempre 'cls' como primer argumento de métodos de clase.

Si el nombre de un argumento de una función colisiona con una palabra reservada, generalmente es mejor añadir un guión bajo al final del nombre en lugar de usar una abreviatura o modificar la grafía. Por lo tanto "print_" se considera mejor que "prnt". (Quizás utilizar sinónimos sea una forma incluso mejor.)
Nombres de métodos y variables de instancia

Utiliza las reglas de los nombres de funciones: minúsculas con palabras separadas por guiones bajos cuando sea necesario para mejorar la legibilidad.

Utiliza guiones bajos al inicio sólo para métodos no públicos y variables de instancia.

Para evitar colisiones de nombres con subclases, utiliza dos guiones bajos al principio del nombre para invocar las reglas de planchado de nombres de Python.

Python une estos nombres con el nombre de la clase: si la clase Foo tiene un atributo llamado __a, no se puede acceder utilizando Foo.__a. (Un usuario insistente podría acceder utilizando Foo._Foo__a.) Generalmente, sólo se debería usar un doble guión al inicio para evitar conflictos de nombres con atributos en clases diseñadas para que se herede de ellas.

Nota: existe controversia sobre el uso de __nombres (ver debajo).
Diseñar para la herencia

Decide siempre si los métodos y variables de instancia de una clase (llamados de forma colectiva "atributos") deberían ser públicos o no públicos. Si dudas, elige que sea no público; es más sencillo convertirla en público más tarde que hacer no público un atributo que antes era público.

Los atributos públicos son aquellos que esperas que sean utilizados por los clientes de tu clase, y para los cuales te comprometes a evitar cambios que provoquen incompatibilidades hacia atrás. Los atributos no públicos son aquellos que no están destinados a que sean utilizados por terceras personas; no ofreces ninguna garantía de que los atributos no públicos no vayan a cambiar o a eliminarse.

No utilizamos el término "privado" aquí, dado que ningún atributo es realmente privado en Python (sin un trabajo añadido generalmente innecesario).

Otra categoría de atributos son aquellos que son parte de la "API de las subclases" (a menudo llamado "protected" en otros lenguajes). Algunas clases se diseñan para que se herede de ellas, bien para extender o bien para modificar aspectos del comportamiento de la clase. Cuando se diseña una clase de esta forma, es necesario tomar algunas decisiones explícitas sobre qué atributos van a ser públicos, cuáles son parte de la API de la subclase, y cuáles están pensados para ser utilizados exclusivamente dentro de la clase actual.

Teniendo esto en cuenta, aquí están las líneas a seguir:

*

Los atributos públicos no deberían tener guiones bajos al inicio del nombre.
*

Si el nombre de tu atributo público colisiona con el de una palabra reservada, añade un único guión bajo al final del nombre del atributo. Esto es preferible a abreviar o cambiar la grafía de la palabra.

Nota 1: Ver la recomendación anterior para métodos de clase.
*

Para campos públicos simples, es mejor exponer sólo el nombre del atributo, sin complicaciones de métodos para accederlos y modificarlos (accessors y mutators). Ten en cuenta que Python proporciona una forma sencilla de modificarlo, en caso de que dentro de un tiempo lo necesites. En ese caso, utiliza propiedades para ocultar la implementación funcional con una sintaxis simple de acceso a atributos de datos.

Nota 1: Las propiedades sólo funcionan en las nuevas clases.

Nota 2: Intenta mantener el comportamiento funcional libre de efectos colaterales, aunque funcionalidad colateral como el cacheo generalmente es aceptable.

Nota 3: Evita usar propiedades para realizar operaciones que requieran de grandes cálculos; el utilizar la notación de atributos hace que la persona que accede al atributo piense que el acceso es (relativamente) barato en tiempo computacional.

Recomendaciones para la programación

*

El código debería escribirse de forma que no pusiera en desventaja otras implementaciones de Python (PyPy, Jython, IronPython, Pyrex, Psyco, y similares).

Por ejemplo, no te apoyes en la eficiencia de la implementación de la concatenación de cadenas con a+=b o a=a+b en CPython. Estas órdenes se ejecutan más lentamente en Jython. En partes de la librería en las que el rendimiento sea importante, se debería utilizar en su lugar la forma ''.join(). Esto asegura que el tiempo necesario para la concatenación es del mismo orden en diferentes implementaciones.
*

Las comparaciones con singletons como None siempre deberían llevarse a cabo con 'is' o 'is not', nunca con operadores de igualdad.

También es importante tener cuidado con escribir "if x" cuando lo que realmente queríamos decir es "if x is not None" -- por ejemplo, cuando comprobemos si a una variable o argumento que tiene como valor por defecto None se le ha dado otro valor. ¡El otro valor podría tener un tipo (como un contenedor) que podría ser falso en un contexto booleano!
*

Utiliza excepciones basadas en clases.

Las excepciones en forma de cadenas están prohibidas en el código nuevo, dado que esta característica del lenguaje se eliminará en Python 2.6.

Los módulos o paquetes deberían definir sus propias clases excepción específicas para el dominio del problema, las cuales deberían heredar de la clase Exception. Incluye siempre una cadena de documentación para la clase. Por ejemplo:

class MessageError(Exception):
"""Base class for errors in the email package."""

En este caso se aplican las convenciones de nombrado de las clases, aunque deberías añadir el sufijo "Error" a las clases excepción, si la excepción se trata de un error. Las excepciones que no sean errores, no necesitan ningún sufijo especial.
*

Cuando lances una excepción, utiliza "raise ValueError('mensaje')" en lugar de la forma antigua "raise ValueError, 'mensaje'".

Se prefiere la forma con paréntesis porque cuando los argumentos de la excepción son largos o incluyen formateo de cadenas, no necesitas usar caracteres para indicar que continúa en la siguiente línea gracias a los paréntesis. La forma antigua se eliminará en Python 3000.
*

Cuando captures excepciones, menciona excepciones específicas cuando sea posible en lugar de utilizar una clausula 'except:' genérica.

Por ejemplo, utiliza:

try:
import platform_specific_module
except ImportError:
platform_specific_module = None

Una cláusula 'except:' genérica capturaría las excepciones SystemExit y KeyboardInterrupt, complicando el poder interrumpir el programa usando Control-C, y pudiendo ocultar otros problemas. Si quieres capturar todas las excepciones relativas a errores en el programa, utiliza 'except Exception:'.

Una buena regla a seguir es limitar el uso de las claúsulas 'except' genéricas a dos casos:
1.

Si el manejador de la excepción imprimirá o registrará el traceback; de esta forma al menos el usuario sabrá que ha ocurrido un error.
2.

Si el código tiene que realizar algún trabajo de limpieza, pero en ese caso tenemos que hacer que la excepción se propague hacia arriba usando 'raise'. La construcción 'try...finally' es una mejor forma de tratar con este caso.
*

Adicionalmente, para todas las clausulas try/except, es necesario limitar la clausula 'try' a la mínima expresión de código necesaria. De nuevo, esto se hace para evitar ocultar bugs.
Sí:

try:
value = collection[key]
except KeyError:
return key_not_found(key)
else:
return handle_value(value)

No:

try:
# ¡Demasiado amplio!
return handle_value(collection[key])
except KeyError:
# También capturará la excepción KeyError lanzada por handle_value()
return key_not_found(key)

*

Utiliza métodos de cadenas en lugar del módulo string.

Los métodos de las cadenas son siempre mucho más rápidos y comparten la misma API con las cadenas unicode. Ignora esta regla si es necesaria compatibilidad hacia atrás con versiones de Python anteriores a la 2.0.
*

Utiliza ''.startswith() y ''.endswith() en lugar del particionado de cadenas para comprobar prefijos y sufijos.

startswith() y endswith() son más limpios y menos propensos a errores. Por ejemplo:
Sí:

if foo.startswith('bar'):

No:

if foo[:3] == 'bar':

La excepción a esta norma se da si es necesario que el código funcione con Python 1.5.2 (¡esperemos que no lo necesites!).
*

Las comparaciones del tipo de objeto siempre deberían utilizar isinstance() en lugar de comparar tipos directamente.
Sí:

if isinstance(obj, int):

No:

if type(obj) is type(1):

Cuando comprobemos si un objeto es una cadena, ¡hay que tener en cuenta que puede que se trate de una cadena unicode! En Python 2.3, str y unicode tienen una clase padre común, basestring, por lo que puedes usar:

if isinstance(obj, basestring):

En Python 2.2, el módulo types define el tipo StringTypes para este propósito en concreto, por ejemplo:

from types import StringTypes
if isinstance(obj, StringTypes):

En Python 2.0 y 2.1, tendríamos que hacer:

from types import StringType, UnicodeType
if isinstance(obj, StringType) or \
isinstance(obj, UnicodeType) :

*

Para secuencias, (cadenas, listas, tuplas), aprovecha el que las secuencias vacias son equivalentes al falso booleano.
Sí:

if not seq:
if seq:

No:

if len(seq)
if not len(seq)

*

No compares valores booleanos con True o False usando ==
Sí:

if greeting:

No:

if greeting == True:

Peor:

if greeting is True:

Referencias

[1] PEP 7, Guía de Estilo para Código C, van Rossum

[2] http://www.python.org/doc/essays/styleguide.html

[3] PEP 257, Convenciones para Cadenas de Documentación, Goodger, van Rossum

[4] http://www.wikipedia.com/wiki/CamelCase

[5] Guía de estilo de GNU Mailman de Barry http://barry.warsaw.us/software/STYLEGUIDE.txt

[6] PEP 20, El Zen de Python

[7] PEP 328, Imports: Multi-Line and Absolute/Relative

Interfaces Gráficas de usuario en PYTHON

Tomado de:
http://mundogeek.net/archivos/2008/11/24/interfaces-graficas-de-usuario-en-python/


En esta entrada veremos algunos de los toolkits para creación de interfaces gráficas de usuario (GUIs) con Python más populares: TkInter, wxPython, PyGTK y PyQt.
TkInter

TkInter (de TK Interface) es un módulo que nos permite construir interfaces gráficas de usuario multiplataforma en Python utilizando el conocido toolkit Tk. Python incluye este módulo por defecto, lo que hace que sea un tookit muy popular. TkInter, además, es robusto, maduro y muy sencillo de aprender y de utilizar, contando con una amplia documentación.

Por otro lado hasta la versión 8.5 Tk era famoso por lo poco atractivo de sus widgets (cosa que se podía solucionar hasta cierto punto gracias a Tile). No es hasta esta versión que contamos con cosas tan básicas como textos con antialiasing en X11 o widgets como Treeview. En esta versión también se incluye Tile por defecto, por lo que contamos con un mejor aspecto general para todas las plataformas.

Sin embargo Python no se distribuye con Tk 8.5 hasta la versión 2.6, por lo que, para versiones de Python anteriores, es necesario recompilar TkInter para Tk 8.5 por nuestra cuenta, o bien usar Tile si no necesitamos ninguna de las nuevas características.

Es más, para poder usar la mayor parte de las nuevas características de Tk 8.5 es necesario instalar una librería que actúe como wrapper de Ttk (el nombre con el que han dado en llamar al conjunto de los nuevos widgets y temas de Tk), como puede ser pyttk.

TkInter se distribuye bajo la PSFL (Python Software Foundation License) una licencia compatible con la GPL creada para la distribución de software relacionado con el proyecto Python. La PSFL carece de la naturaleza viral de la GPL, por lo que permite crear trabajos derivados sin que estos se conviertan necesariamente en software libre.

Por último, veamos una pequeña aplicación de ejemplo escrita con TkInter, sin uso de eventos y con solo unos pocos widgets, que nos servirá para comparar el aspecto de los distintos toolkits.

# from Tkinter import *
#
# root = Tk()
#
# frame = Frame(root)
# frame.pack()
#
# label = Label(frame, text="Hola mundo")
# c1 = Checkbutton(frame, text="Uno")
# c2 = Checkbutton(frame, text="Dos")
# entry = Entry(frame)
# button = Button(frame, text="Aceptar")
#
# label.pack()
# c1.pack()
# c2.pack()
# entry.pack()
# button.pack()
#
# root.mainloop()




Pros: Popularidad, sencillez, documentación.
Contras: Herramientas, integración con el sistema operativo, lentitud.
Recomendado para: ¿Prototipos rápidos?
wxPython

wxPython es un wrapper open source para el toolkit anteriormente conocido como wxWindows: wxWidgets. wxPython es posiblemente el toolkit para desarrollo de interfaces gráficas en Python más popular, superando incluso a TKinter, que, como comentamos, se incluye por defecto con el intérprete de Python. wxPython cuenta con más y mejores widgets que TKinter, y ofrece un muy buen aspecto en todas las plataformas, utilizando MFC en Windows y GTK en Linux.

wxPython cuenta además con herramientas muy interesantes como wxGlade, una aplicación RAD para diseñar las interfaces gráficas de forma visual.

Sin embargo, la API adolece de una cierta falta de consistencia y un estilo muy alejado de Python y más cercano a C++, ya que, de hecho, uno de sus objetivos es no distanciarse demasiado del estilo de wxWidgets. Esto ha provocado que hayan aparecido distintos proyectos para abstraer al programador de los entresijos del toolkit, como Dabo o Wax, aunque estos han tenido un éxito muy comedido.

Tanto wxPython como wxWidgets se distribuyen bajo una licencia “wxWindows Licence”, que consiste esencialmente en una LGPL con la excepción de que las obras derivadas en formato binario se pueden distribuir como el usuario crea conveniente.

Algunos ejemplos de aplicaciones conocidas creadas con wxPython son DrPython, wxGlade, Boa Constructor, Stani’s Python Editor y ABC.

Finalmente, a continuación podéis consultar el código de la aplicación de ejemplo:
view plaincopy to clipboardprint?

1. import wx
2.
3. class Frame(wx.Frame):
4. def __init__(self):
5. wx.Frame.__init__(self, parent=None)
6. panel = wx.Panel(self)
7. text = wx.StaticText(panel, -1, "Hola mundo")
8. c1 = wx.CheckBox(panel, -1, label="Uno")
9. c2 = wx.CheckBox(panel, -1, label="Dos")
10. t = wx.TextCtrl(panel)
11. b1 = wx.Button(panel, -1, label="Aceptar")
12.
13. sizer = wx.BoxSizer(wx.VERTICAL)
14. sizer.Add(text, 0, wx.ALL, 0)
15. sizer.Add(c1, 0, wx.ALL, 0)
16. sizer.Add(c2, 0, wx.ALL, 0)
17. sizer.Add(t, 0, wx.ALL, 0)
18. sizer.Add(b1, 0, wx.ALL, 0)
19. panel.SetSizer(sizer)
20. panel.Layout()
21.
22. app = wx.App(redirect=True)
23. Frame().Show()
24. app.MainLoop()

import wx

class Frame(wx.Frame):
def __init__(self):
wx.Frame.__init__(self, parent=None)
panel = wx.Panel(self)
text = wx.StaticText(panel, -1, "Hola mundo")
c1 = wx.CheckBox(panel, -1, label="Uno")
c2 = wx.CheckBox(panel, -1, label="Dos")
t = wx.TextCtrl(panel)
b1 = wx.Button(panel, -1, label="Aceptar")

sizer = wx.BoxSizer(wx.VERTICAL)
sizer.Add(text, 0, wx.ALL, 0)
sizer.Add(c1, 0, wx.ALL, 0)
sizer.Add(c2, 0, wx.ALL, 0)
sizer.Add(t, 0, wx.ALL, 0)
sizer.Add(b1, 0, wx.ALL, 0)
panel.SetSizer(sizer)
panel.Layout()

app = wx.App(redirect=True)
Frame().Show()
app.MainLoop()

GUIs en Python con wxPython

Pros: Popularidad, herramientas, multiplataforma.
Contras: API muy poco pythonica.
Recomendado para: Desarrollo multiplataforma.
PyGTK

Posiblemente PyGTK sea la segunda opción más utilizada para la creación de interfaces gráficas con Python, solo por detrás de wxPython, con la que compite de tú a tú. PyGTK, como podemos suponer por su nombre, es un binding de GTK, la biblioteca utilizada para desarrollar GNOME.

PyGTK cuenta con una API muy clara, limpia y elegante y es, además, muy sencillo de aprender, solo superado en ese aspecto por Tkinter. PyGTK también cuenta con grandes herramientas para construir la interfaz de forma gráfica, como Glade o Gazpacho.

Un punto negativo es que, hasta hace poco, era necesario instalar X11 para poder usar PyGTK en Mac OS, dado que GTK no había sido portado. Actualmente se puede utilizar el GTK+ OS X Framework que se encuentra todavía en versión beta.

PyGTK se distribuye bajo licencia LGPL.

Algunas aplicaciones escritas con PyGTK son Deluge, Exaile, Listen, Envy, WingIDE, DeVeDe o emesene.

Veamos el código de la aplicación de ejemplo en PyGTK:
view plaincopy to clipboardprint?

1. import pygtk
2. import gtk
3.
4. window = gtk.Window(gtk.WINDOW_TOPLEVEL)
5. window.connect("destroy", gtk.main_quit)
6.
7. box = gtk.VBox(False, 0)
8. window.add(box)
9.
10. label = gtk.Label("Hola Mundo")
11. c1 = gtk.CheckButton(label="Uno")
12. c2 = gtk.CheckButton(label="Dos")
13. entry = gtk.Entry()
14. button = gtk.Button("Aceptar")
15.
16. box.add(label)
17. box.add(c1)
18. box.add(c2)
19. box.add(entry)
20. box.add(button)
21.
22. window.show_all()
23.
24. gtk.main()

import pygtk
import gtk

window = gtk.Window(gtk.WINDOW_TOPLEVEL)
window.connect("destroy", gtk.main_quit)

box = gtk.VBox(False, 0)
window.add(box)

label = gtk.Label("Hola Mundo")
c1 = gtk.CheckButton(label="Uno")
c2 = gtk.CheckButton(label="Dos")
entry = gtk.Entry()
button = gtk.Button("Aceptar")

box.add(label)
box.add(c1)
box.add(c2)
box.add(entry)
box.add(button)

window.show_all()

gtk.main()

GUIs en Python con PyGTK

Pros: Popularidad, sencillez, herramientas.
Contras: Ligeramente más complicado de instalar y distribuir en Mac OS.
Recomendado para: Cualquier tipo de aplicación. Especialmente interesante para Gnome.
PyQt

Es posible que PyQt, el binding de Qt para Python, sea la menos popular de las cuatro opciones, aunque es un toolkit sencillo de utilizar y con muchas posibilidades. Es especialmente interesante para el desarrollo en KDE, dado que Qt es la librería utilizada para crear este entorno.

No obstante el interés en Qt no se limita a KDE, sino que es una biblioteca multiplataforma que, además, desde la versión 4, utiliza widgets nativos para las distintas plataformas (anteriormente Qt emulaba el aspecto de la plataforma en la que corría).

Como aplicación de RAD se puede utilizar Qt Designer.

PyQt utiliza un modelo de licencias similar al de Qt, con una licencia dual GPL/PyQt Commercial. Si nuestro programa es compatible con la licencia GPL, es decir, si vamos a publicar el código fuente y permitir a los usuarios modificar nuestra aplicación, podremos usar PyQt sin más preocupaciones. En caso contrario tendremos que pagar para obtener una licencia comercial.

Un par de ejemplos de aplicaciones que usan PyQt son Eric y QTorrent.

El código de la aplicación de ejemplo en PyQt tendría el siguiente aspecto:
view plaincopy to clipboardprint?

1. import sys
2. from PyQt4.QtCore import *
3. from PyQt4.QtGui import *
4.
5. class Form(QWidget):
6. def __init__(self):
7. QWidget.__init__(self)
8.
9. layout = QVBoxLayout()
10. layout.addWidget(QLabel("Hola mundo"))
11. layout.addWidget(QCheckBox("Uno"))
12. layout.addWidget(QCheckBox("Dos"))
13. layout.addWidget(QLineEdit())
14. layout.addWidget(QPushButton("Aceptar"))
15.
16. self.setLayout(layout)
17.
18. app = QApplication(sys.argv)
19. form = Form()
20. form.show()
21. app.exec_()

import sys
from PyQt4.QtCore import *
from PyQt4.QtGui import *

class Form(QWidget):
def __init__(self):
QWidget.__init__(self)

layout = QVBoxLayout()
layout.addWidget(QLabel("Hola mundo"))
layout.addWidget(QCheckBox("Uno"))
layout.addWidget(QCheckBox("Dos"))
layout.addWidget(QLineEdit())
layout.addWidget(QPushButton("Aceptar"))

self.setLayout(layout)

app = QApplication(sys.argv)
form = Form()
form.show()
app.exec_()

GUIs en Python con PyQt

Pros: Sencillez, herramientas, multiplataforma.
Contras: Ligeramente más complicado de instalar y distribuir en Mac OS. Licencia.
Recomendado para: Cualquier tipo de aplicación. Especialmente interesante para KDE.

Pysqlite3 2.4.1 py25
http://rapidshare.com/files/172199009/pysqlite-2.4.1.win32-py2.5.exe

PySerial 2.2 py25
http://rapidshare.com/files/172199051/pyserial-2.2.win32.exe

PyGTK 2.10 py25
http://rapidshare.com/files/172199702/pygtk-2.10.6-1.win32-py2.5.exe

PyCurl 7.16.4 py25
http://rapidshare.com/files/172199899/pycurl-ssl-7.16.4.win32-py2.5.exe

PyCairo 1.4.12 py25
http://rapidshare.com/files/172199936/pycairo-1.4.12-1.win32-py2.5.exe

Py2Exe 0.6.6 py25
http://rapidshare.com/files/172200000/py2exe-0.6.6.win32-py2.5.exe

NumPy 1.0.4 py25
http://rapidshare.com/files/172200921/numpy-1.0.4.win32-p3-py2.5.exe

NumArray 1.5.2 py25
http://rapidshare.com/files/172201307/numarray-1.5.2.win32-py2.5.exe

MatPlot 0.91.2
http://rapidshare.com/files/172202658/matplotlib-0.91.2.win32-py2.5.exe

jueves, octubre 01, 2009

Ayudas para Instalar Jboss y Alfresco

Tomado de:
http://www.ajpdsoft.com/modules.php?name=News&file=print&sid=422#instalaciondefinitiva


Artículos relacionados

* Instalación de Alfresco Community Edition en Linux Ubuntu Server 9.04.
* Instalar Alfresco Open Source CMS ECM en Windows Server 2003.
* Traducir Alfresco Community Edition al castellano (en GNU Linux Ubuntu Server).
* Instalar GNU Linux Ubuntu Server 9.04 virtualizado en VMware 2.0.
* Virtualización con VMware Server 2.0, acceso remoto a máquinas virtuales.
* Instalar un sistema operativo dentro de una máquina virtual (virtualización).
* Virtualización con Sun xVM VirtualBox del sistema operativo OpenSolaris
* Instalar Linux Ubuntu Server 8.04.1.
* Comandos básicos para GNU Linux y ejemplos de utilización.
* Instalación y configuración de Windows XP Service Pack 3.
* Instalación y configuración de Nagios para monitorizar la red.
* Instalación de Windows Server 2003 Enterprise Edition SP2.
* Artículos del Proyecto AjpdSoft sobre Alfresco.
* Artículos del Proyecto AjpdSoft sobre el sistema operativo GNU Linux.
* Artículos del Proyecto AjpdSoft sobre los sistemas operativos de Microsoft Windows.
* Artículos del Proyecto AjpdSoft sobre Virtualización.
* Artículos del Proyecto AjpdSoft sobre Windows.
* Definición CMS.
* Definición URL.
* Definición Mozilla Firefox.
* Definición RAM.
* Definición LAN.





Instalar GNU Linux Fedora 9 con Ingres Database, JBoss y Alfresco CMS
Fecha Jueves, 03 septiembre a las 21:44:55
Tema CMS, ECM, Gestor de contenidos web

Os mostramos cómo instalar GNU Linux Fedora 9, este paquete incluye además el motor de base de datos Ingres de código abierto, el servidor de aplicaciones J2EE de código abierto JBoss y el sistema de gestión de contenido (CMS) empresarial Alfresco de código abierto (que utiliza JBoss e Ingres en este caso). Todo ello viene instalado de forma automática al instalar Fedora. Además, este paquete es un Live DVD, lo que permite iniciar GNU Linux Fedora y Alfresco sin instalar nada en el equipo, arrancando y cargando el sistema operativo desde el DVD.


* Algunas definiciones iniciales.
o Definición GNU Linux Fedora.
o Definición JBoss.
o Definición Ingres Database.
o Definición Alfresco CMS.
* Requisitos y algunos datos de acceso para Fedora, JBoss, Ingress y Alfresco.
o Requisitos hardware mínimos y recomendados.
o Datos acceso a Fedora, JBoss, Ingres y Alfresco.
* Descarga y prueba del Live DVD de Fedora, JBoss, Ingres y Alfresco.
* Instalación definitiva de GNU Linux Fedora con JBoss, Ingres y Alfresco.
* Preparar GNU Linux Fedora para acceso externo a Alfresco.
* Artículos relacionados.
* Créditos.

Algunas definiciones iniciales
Definición GNU Linux Fedora

Fedora es una distribución GNU Linux para propósitos generales basada en RPM (RPM Package Manager, originalmente Red Hat Package Manager), que se mantiene gracias a una comunidad internacional de usuarios que informan de fallos y prueban nuevas tecnologías. Cuenta con el respaldo y la promoción de Red Hat. El proyecto no busca sólo incluir software libre y de código abierto en su distribución, sino ser el líder en ese ámbito tecnológico.

El Proyecto Fedora fue creado a finales del 2003 cuando Red Hat Linux fue descontinuado. Red Hat Enterprise Linux (RHEL) continuaría siendo la distribución Linux oficialmente soportada por Red Hat, mientras que Fedora sería un proyecto comunitario.

El nombre de Fedora deriva de Fedora Linux, un proyecto creado por voluntarios que proveía software adicional a la distribución Red Hat Linux. Fedora Linux fue finalmente absorbido en el Proyecto Fedora. Fedora es una marca registrada de Red Hat.
Definición JBoss

JBoss es un servidor de aplicaciones J2EE de código abierto implementado en Java. JBoss puede ser utilizado en cualquier sistema operativo que soporte Java. Los principales desarrolladores de JBoss trabajan para JBoss Inc., adquirida por Red Hat, fundada por Marc Fleury, el creador de la primera versión de JBoss. El proyecto está apoyado por una red mundial de colaboradores. Los ingresos de la empresa están basados en un modelo de negocio de servicios.

JBoss implementa todo el paquete de servicios de J2EE
Definición Ingres Database

Ingres es un sistema de gestión de base de datos de código abierto (open source), destinada a soportar aplicaciones comerciales de gran tamaño y aplicaciones gubernamentales. El código fuente de Ingres es completamente abierto, con una comunidad mundial de desarrolladores cada vez mayor. Aunque es Ingres Corporation la que controla el desarrollo de Ingres y la que pone a disposición de los usuarios las descargas certificadas, además de dar soporte en todo el mundo.
Definición Alfresco CMS

Alfresco es un sistema de administración de contenidos de código libre (Open Source), basado en estándares abiertos y de escala empresarial para Windows y sistemas operativos similares a Unix (como GNU Linux). Está diseñado para usuarios que requieren un alto grado de modularidad y rendimiento escalable.

Alfresco es la alternativa principal del código abierto para la gestión del contenido empresarial (ECM). El modelo de código abierto permite a Alfresco utilizar las tecnologías y las contribuciones de la comunidad del código abierto para conseguir un software de alta calidad produciéndolo mas rápidamente con un costo mucho más bajo.

Alfresco está formado principalmente por un equipo de miembros de Documentum y de Interwoven con amplia experiencia en la gestión de contenido empresarial (ECM), incluyendo el co-fundador de Documentum.

Algunas de las características principales de Alfresco:

* Gestión de Contenido Empresarial (ECM).
* Gestión Documental.
* Gestión de Contenidos Web.
* Colaboración.
* Gestión de Información.
* Gestión de Expedientes.
* Gestión de Imágenes.
* Repositorio Alfresco JSR 170.

Los beneficios principales de usar Alfresco:

* Fácil de usar.
* Productividad del desarrollador.
* La mejor práctica de colaboración.
* Productividad del administrador.
* Gestor de búsqueda avanzada.
* Arquitectura distribuida.
* Algunas de las especificaciones técnicas de Alfresco:
* Sistemas operativos soportados: Linux, MacOS, Unix, Windows.
* Base de datos soportadas: MySQL, Oracle, cualquier otra base de datos apoyada por Hibernate.
* Servidor de aplicaciones: JBoss Application Server, Apache Tomcat, J2SE 5.0 (JRE 5.0).
* Navegadores: Mozilla Firefox, Internet Explorer.
* Portales: Liferay, JBoss Portal, JSR-168.
* Tecnologías usadas: Java, Spring Aspect-Oriented Framework, ACEGI – Aspect-Oriented Security Framework, MyFaces JSF Implementation, Hibernate ORM Persistence, Lucene Text Search Engine, JLAN, , POI File Format Conversion, PDFBox – PDF Conversion, OpenOffice, jBPM, Rhino JavaScript engine.
* Interfaces soportadas: CIFS/SMB Microsoft File Share Protocol, JSR-168 Portlet Specification, JSR-127 Java Server Faces, FTP, WebDAV, Web Services, REST.

Existen dos distribuciones o versiones diferenciadas de este software:

* Alfresco Community Edition: recomendado para desarrolladores y técnicos que no requieran entornos críticos. Válido para pequeñas y medianas organizaciones.
* Alfresco Enterprise Edition: versión de pago, es recomendable para grandes empresas, gobiernos y otras organizaciones que busquen escalabilidad y con entornos críticos.

Requisitos y algunos datos de acceso para Fedora, JBoss, Ingress y Alfresco
Requisitos hardware mínimos y recomendados

Los requisitos mínimos (características del equipo) son:

* Procesador: Dual core o Quad core.
* 1 GB de memoria RAM.
* No es necesario disponer de disco duro (para el Live DVD).

Los requisitos hardware recomendados son:

* Procesador Quad core con 1.3 GHz/core.
* 2 GB de memoria RAM.

En nuestro caso, hemos realizado varias pruebas, la primera de ella con un equipo con 500MB de RAM y el sistema arrancaba pero excesivamente lento. Con 1GB de RAM va a una velocidad razonable. Por supuesto, las pruebas las hemos realizado con tres usuarios conectados concurrentemente (a la vez). A mayor número de usuarios mayores serán los requisitos hardware.
Datos acceso a Fedora, JBoss, Ingres y Alfresco

Usuarios para el sistema operativo Fedora:

* root (superusuario): contraseña "root".
* fedora (sin contraseña).

Usuario para Alfresco:

* admin: contraseña "admin".

Usuario de Fedora para Ingres:

* ingres: contraseña "ingres".

Usuario de Fedora para JBoss:

* jboss: contraseña "jboss".


Descarga y prueba del Live DVD de Fedora, JBoss, Ingres y Alfresco
Descargaremos el fichero Fedora-9-Ingres.iso de 1,09GB, mediante un navegador web (como Mozilla Firefox) desde la URL:

http://esd.ingres.com/product/Icebreaker_ECM

Nota: se requiere registro previo de usuario en www.ingres.com, es gratuito.

Pulsaremos en "Icebreaker ECM Appliance" y en "HTTP" para iniciar la descarga:

AjpdSoft Instalar GNU Linux Fedora 9 con Ingres Database, JBoss y Alfresco CMS

Si queremos utilizar un DVD para la instalación de este sistema (Fedora - JBoss - Ingres - Alfresco) en un equipo podremos seguir los pasos de la parte inicial de este artículo:

Instalar Linux Ubuntu Server 8.04.1

Que explica cómo crear un DVD con Infra Recorder y el fichero ISO descargado.

A continuación introduciríamos este DVD en el equipo, si no arranca el equipo desde el DVD tendremos que configurar la BIOS apropiadamente, como indica este manual:

Opciones de arranque de la BIOS

En nuestro caso no generaremos el DVD puesto que instalaremos este sistema operativo virtualizado en VMWare Server 2.0. Por ello, símplemente copiaremos el fichero Fedora-9-Ingres.iso a la carpeta Datastore de VMWare, para ver cómo crear una máquina virtual e indicar que arranque desde un fichero ISO podéis ver esta parte de este artículo:

Preparación de VMware para virtualizar GNU Linux Ubuntu Server

Iniciaremos la máquina virtual creada, si todo es correcto arrancará desde el Live DVD de GNU Linux Fedora:

AjpdSoft Instalar GNU Linux Fedora 9 con Ingres Database, JBoss y Alfresco CMS

Cuando el sistema operativo haya cargado podremos seleccionar el idioma en "Language":

AjpdSoft Instalar GNU Linux Fedora 9 con Ingres Database, JBoss y Alfresco CMS

Seleccionaremos, en nuestro caso, "Español (España)" y pulsaremos "OK". A continuación, para iniciar sesión pulsaremos en "Log in" o en "Automatic login":

AjpdSoft Instalar GNU Linux Fedora 9 con Ingres Database, JBoss y Alfresco CMS

Se terminará de cargar el modo gráfico y demás opciones de GNU Linux Fedora:

AjpdSoft Instalar GNU Linux Fedora 9 con Ingres Database, JBoss y Alfresco CMS

Y ya tendremos, sin instalar nada, GNU Linux Fedora 9, con JBoss, Ingres y Alfresco instalados. Para probarlo haremos doble clic sobre "Alfresco Web Client":

AjpdSoft Instalar GNU Linux Fedora 9 con Ingres Database, JBoss y Alfresco CMS

Se iniciará Alfresco, introduremos el usuario "admin" y la contraseña "admin" y pulsaremos "Login":

AjpdSoft Instalar GNU Linux Fedora 9 con Ingres Database, JBoss y Alfresco CMS

Y accederemos al espacio de trabajo del usuario "admin" de Alfresco, desde el que podremos crear más usuarios, espacios de trabajo, etc.:

AjpdSoft Instalar GNU Linux Fedora 9 con Ingres Database, JBoss y Alfresco CMS

Podremos administrar la base de datos Ingres pulsando en "Ingres Database Workbench":

AjpdSoft Instalar GNU Linux Fedora 9 con Ingres Database, JBoss y Alfresco CMS

Podremos administrar JBoss pulsando en "JBoss Management Console":

AjpdSoft Instalar GNU Linux Fedora 9 con Ingres Database, JBoss y Alfresco CMS



Por supuesto, al tratarse de un inicio del sistema operativo GNU Linux, no es conveniente realizar tareas de configuración ni añadir documentos a Alfresco en esta modalidad, puesto que los cambios se perderán al reiniciar la máquina virtual. Sirve como prueba y testeo de Alfresco sin tener que instalar nada, ni sistema operativo, ni motor de base de datos, ni el propio Alfresco, puesto que ya vienen instalados.

Es una buena forma de probar Alfresco sobre GNU Linux Fedora, incluso teniendo un sistema operativo Windows. De hecho, en nuestro caso, hemos utilizado VMWare para virtualizar el arranque del Live DVD de Fedora, todo ello sobre Windows XP.

Instalación definitiva de GNU Linux Fedora con JBoss, Ingres y Alfresco

Para instalar de forma definitiva GNU Linux Fedora en el equipo realizaremos lo siguiente. Desde el inicio del Live DVD de Fedora, pulsaremos en "Aplicaciones" - "Herramientas del sistema" - "Terminal":

AjpdSoft Instalar GNU Linux Fedora 9 con Ingres Database, JBoss y Alfresco CMS - Instalación definitiva de GNU Linux Fedora con JBoss, Ingres y Alfresco

Cambiaremos al usuario "root" con el comando:

su - root

Ejecutaremos el siguiente fichero "liveinst" ubicado en "/usr/bin" para iniciar el asistente de instalación:

/usr/bin/liveinst

AjpdSoft Instalar GNU Linux Fedora 9 con Ingres Database, JBoss y Alfresco CMS - Instalación definitiva de GNU Linux Fedora con JBoss, Ingres y Alfresco

Se iniciará el asistente "Fedora Installer", pulsaremos "Next":

AjpdSoft Instalar GNU Linux Fedora 9 con Ingres Database, JBoss y Alfresco CMS - Instalación definitiva de GNU Linux Fedora con JBoss, Ingres y Alfresco

Seleccionaremos el idioma del teclado, en nuestro caso "Spanish", pulsaremos "Next":

AjpdSoft Instalar GNU Linux Fedora 9 con Ingres Database, JBoss y Alfresco CMS - Instalación definitiva de GNU Linux Fedora con JBoss, Ingres y Alfresco

Estableceremos las propiedades de red (IP, Puerta de enlace o gateway, DNS, etc.) o bien, si disponemos de un servidor de DHCP, dejaremos la configuración del asistente por defecto "DHCP":

AjpdSoft Instalar GNU Linux Fedora 9 con Ingres Database, JBoss y Alfresco CMS - Instalación definitiva de GNU Linux Fedora con JBoss, Ingres y Alfresco

Seleccionaremos la zona horaria (en nuestro caso Europe/Madrid):

AjpdSoft Instalar GNU Linux Fedora 9 con Ingres Database, JBoss y Alfresco CMS - Instalación definitiva de GNU Linux Fedora con JBoss, Ingres y Alfresco

Introduciremos la contraseña para el superusuario root, en nuestro caso "ajpdsoft":

AjpdSoft Instalar GNU Linux Fedora 9 con Ingres Database, JBoss y Alfresco CMS - Instalación definitiva de GNU Linux Fedora con JBoss, Ingres y Alfresco

Si el disco duro es nuevo (no tiene otro sistema operativo) nos indicará que la tabla de particiones no puede ser leída y que se perderán todos los datos de este dispositivo si se continúa con el proceso. En nuestro caso, al tratarse de una máquina virtual con VMWare, el disco duro virtual está vacío y sin formato, por lo que muestra este mensaje:

AjpdSoft Instalar GNU Linux Fedora 9 con Ingres Database, JBoss y Alfresco CMS - Instalación definitiva de GNU Linux Fedora con JBoss, Ingres y Alfresco

Con el texto: "The partition table on device sda was unreadable. To create new partitions it must be inicialized, causing the loss of ALL DATA on this drive. This operation will override any previous installation choices about which drivers to ignore. Would you like to initialize this drive, erasing ALL DATA?".

Pulsaremos "Yes" en la ventana anterior si estamos seguros de que no tenemos información importante en el disco duro destino de la instalación de GNU Fedora.

A continuación podremos seleccionar el tipo de particionamiento:

* Remove all partitions on selected drivers and create default layout.
* Remove Linux partitions on selected drives and create default layout.
* Resize existing partition and create default layout in free space.
* Use free space on selected drives and create default layout.
* Create custom layout.

Para más información sobre el particionamiento en GNU Linux se puede consultar este manual:

El particionamiento de discos en GNU Linux Ubuntu Dekstop 9.04

(aunque no es la misma distribución de GNU Linux, las opciones de particionamiento son similares)

En nuestro caso, al disponer de un disco duro nuevo (vacío), seleccionaremos "Remove all partitions on selected drivers and create default layout":

AjpdSoft Instalar GNU Linux Fedora 9 con Ingres Database, JBoss y Alfresco CMS - Instalación definitiva de GNU Linux Fedora con JBoss, Ingres y Alfresco

Antes de iniciar el proceso que eliminará todos los datos del dispositivo de disco seleccionado como destino de la instalación de GNU Linux Fedora, nos avisará con un mensaje como este:

AjpdSoft Instalar GNU Linux Fedora 9 con Ingres Database, JBoss y Alfresco CMS - Instalación definitiva de GNU Linux Fedora con JBoss, Ingres y Alfresco.

Con el texto: "The partitioning options you have selected will now be written to disk. Any data on deleted or reformatted partitions will be lost".

Para continuar, en la ventana anterior, pulsaremos "Write changes to disk".

El asistente Fedora Installer creará las particiones indicadas, las formateará y copiará los ficheros necesarios al disco duro para instalar el sistema operativo:

AjpdSoft Instalar GNU Linux Fedora 9 con Ingres Database, JBoss y Alfresco CMS - Instalación definitiva de GNU Linux Fedora con JBoss, Ingres y Alfresco

Tras la instalación, Fedora Installer, nos mostrará una ventana como la siguiente, con el texto "Congratulations, the installation is complete". Pulsaremos "Close", retiraremos el DVD de Fedora y reiniciaremos el equipo:

AjpdSoft Instalar GNU Linux Fedora 9 con Ingres Database, JBoss y Alfresco CMS - Instalación definitiva de GNU Linux Fedora con JBoss, Ingres y Alfresco

Y ya tendremos el sistema operativo GNU Linux Fedora 9 con JBoss, Ingress y Alfresco instalados y preparados para su uso real.

Tras el primer reinicio deberemos seleccionar algunas opciones de configuración, pulsaremos "Forward":

AjpdSoft Instalar GNU Linux Fedora 9 con Ingres Database, JBoss y Alfresco CMS - Instalación definitiva de GNU Linux Fedora con JBoss, Ingres y Alfresco

Leeremos los términos de licencia, si estamos de acuerdo pulsaremos "Forward":

AjpdSoft Instalar GNU Linux Fedora 9 con Ingres Database, JBoss y Alfresco CMS - Instalación definitiva de GNU Linux Fedora con JBoss, Ingres y Alfresco

Crearemos un usuario, pues no se recomienda utiizar el superusuario "root", por lo que introduciremos los siguientes datos:

* Username: nombre de usuario (por ejemplo "ajpdsoft").
* Full Name: introduciremos el nombre completo del usuario, por ejemplo "AjpdSoft".
* Password: introduciremos la contraseña.
* Confirm Password: volveremos a introducir la contraseña.

AjpdSoft Instalar GNU Linux Fedora 9 con Ingres Database, JBoss y Alfresco CMS - Instalación definitiva de GNU Linux Fedora con JBoss, Ingres y Alfresco

Seleccionaremos la fecha y la hora:

AjpdSoft Instalar GNU Linux Fedora 9 con Ingres Database, JBoss y Alfresco CMS - Instalación definitiva de GNU Linux Fedora con JBoss, Ingres y Alfresco

El asistente de Fedora generará un perfil de hardware, si queremos ayudar a la mejora de este sistema operativo podremos enviarlo marcando "Send Profile", en caso contrario marcaremos "Do not send profile":

AjpdSoft Instalar GNU Linux Fedora 9 con Ingres Database, JBoss y Alfresco CMS - Instalación definitiva de GNU Linux Fedora con JBoss, Ingres y Alfresco

Si hemos seleccionado "Do not send profile" nos mostrará un mensaje como el siguiente, pulsaremos "No, do not send" para continuar:

AjpdSoft Instalar GNU Linux Fedora 9 con Ingres Database, JBoss y Alfresco CMS - Instalación definitiva de GNU Linux Fedora con JBoss, Ingres y Alfresco

Con el texto: "Are you sure you wouldn't like to send the profile? Submitting your profile is a valuable source of information for our development and can help troubleshoot issues that may come up with your hardware".

Se iniciará el sistema operativo, se cargarán todos los servicios:

AjpdSoft Instalar GNU Linux Fedora 9 con Ingres Database, JBoss y Alfresco CMS - Instalación definitiva de GNU Linux Fedora con JBoss, Ingres y Alfresco

Seleccionaremos el usuario con el que iniciaremos sesión (para ver todos los acceso directos de Ingres, Alfresco y JBoss seleccionaremos el usuario "fedora"):

AjpdSoft Instalar GNU Linux Fedora 9 con Ingres Database, JBoss y Alfresco CMS - Instalación definitiva de GNU Linux Fedora con JBoss, Ingres y Alfresco

Seleccionaremos el idioma con el que iniciaremos sesión:

AjpdSoft Instalar GNU Linux Fedora 9 con Ingres Database, JBoss y Alfresco CMS - Instalación definitiva de GNU Linux Fedora con JBoss, Ingres y Alfresco

Si el usuario tiene contraseña, la introduciremos:

AjpdSoft Instalar GNU Linux Fedora 9 con Ingres Database, JBoss y Alfresco CMS - Instalación definitiva de GNU Linux Fedora con JBoss, Ingres y Alfresco

Y si hemos accedido con el usuario "fedora" podremos ver los accesos directos de "Ingres Database Workbench" (para administración de la base de datos Ingres en modo gráfico), "Ingres Command Prompt" (para administración de la base de datos Ingres en modo consola), JBoss Management Console (para administrar el servidor de aplicaciones web JBoss), Alfresco Web Client (para administrar y acceder a Alfresco):

AjpdSoft Instalar GNU Linux Fedora 9 con Ingres Database, JBoss y Alfresco CMS - Instalación definitiva de GNU Linux Fedora con JBoss, Ingres y Alfresco

Pulsando en "Alfresco Web Client" veremos que ya tenemos instalado (sin hacer nada) Alfresco Community Edition:

AjpdSoft Instalar GNU Linux Fedora 9 con Ingres Database, JBoss y Alfresco CMS - Instalación definitiva de GNU Linux Fedora con JBoss, Ingres y Alfresco

Preparar GNU Linux Fedora para acceso externo a Alfresco

Puesto que Alfresco ya viene preinstalado y configurado con GNU Linux Fedora, utilizando como motor de base de datos Ingres y como servidor web JBoss, lo único que necesitaremos es abrir el puerto 8080 en el cortafuegos (firewall) de GNU Linux Fedora, para ello accederemos al menú "System" (Sistema) - "Administration" (Administración) - "Firewall" (cortafuegos). Nos mostrará una ventana para que introduzcamos la contraseña del superusuario "root", la introduciremos y pulsaremos "OK":

AjpdSoft Instalar GNU Linux Fedora 9 con Ingres Database, JBoss y Alfresco CMS - Preparar GNU Linux Fedora para acceso externo a Alfresco

En la parte izquierda seleccionaremos "Other Ports", en la parte derecha pulsaremos "+ Add", en la ventana de "Port and Protocol" marcaremos la opción "User Defined", en "Port" introduremos "8080" y en "Protocol" seleccionaremos "tcp", pulsaremos "OK":

AjpdSoft Instalar GNU Linux Fedora 9 con Ingres Database, JBoss y Alfresco CMS - Preparar GNU Linux Fedora para acceso externo a Alfresco

Pulsaermos el botón "Apply" para aplicar los cambios en el cortafuegos y abrir el puerto 8080 de Alfresco (JBoss):

AjpdSoft Instalar GNU Linux Fedora 9 con Ingres Database, JBoss y Alfresco CMS - Preparar GNU Linux Fedora para acceso externo a Alfresco

Nos mostrará un aviso como el siguiente, indicando que se modificará la configuración actual del cortafuegos, pulsaremos en "Yes":

AjpdSoft Instalar GNU Linux Fedora 9 con Ingres Database, JBoss y Alfresco CMS - Preparar GNU Linux Fedora para acceso externo a Alfresco

Con el texto: Clicking the 'Yes' button will override any existing firewall configuration. Are you sure that you want to do this?"

Y ya podremos acceder desde cualquier otro equipo de la red al equipo con GNU Linux Fedora y servidor de Alfresco, Ingres, JBoss. Para ello abriremos un navegador web (como Mozilla Firefox) y escribiremos la URL:

http://ip_equipo_linux:8080/alfresco

Donde "ip_equipo_linux" será la IP del equipo con GNU Linux Fedora.

Y ya podremos tabajar con el CMS Alfresco, guardar documentos, consultar, crear usuarios, espacios de trabajo, etc., puesto que es un acceso web podremos acceder desde cualquier equipo de la LAN con cualquier sistema operativo (Windows, GNU Linux, etc.):

AjpdSoft Instalar GNU Linux Fedora 9 con Ingres Database, JBoss y Alfresco CMS - Preparar GNU Linux Fedora para acceso externo a Alfresco




Créditos

Artículo realizado íntegramente por Alonsojpd miembro fundador del proyecto AjpdSoft.


Revisado por AjpdSoft el 13-09-2009.



Este artículo proviene de AjpdSoft
http://www.ajpdsoft.com

La dirección de esta noticia es:
http://www.ajpdsoft.com/modules.php?name=News&file=article&sid=422

martes, septiembre 01, 2009

Validar Cedula o RUC - Ecuador

Parte-1


Parte-2


VALIDACION DE CEDULA DE IDENTIDAD (PERSONA NATURAL)


El ruc de una persona natural será 13 dígitos, sin letras, sin caracteres especiales , únicamente números, de los cuales los 10 primeros será la cédula de identidad.
El tercer dígito es menor a 6 ( 0,1,2,3,4,5 ).
Los tres últimos dígitos son 001,002,003 etc., dependiendo el número de establecimientos adicionales.
La validación de la cédula de Identidad pasa un algoritmo “Módulo 10”. Al número se lo divide en 13 partes, las 9 primeras son el número mismo, la 10 es el dígito autoverificador, y las 3 restantes indican si es principal o establecimiento adicional.
Las 2 primeras posiciones corresponden a la provincia donde fue expedida, por lo cual los dos primeros números no será mayor a 22 ni menor a 1.
Los 3 últimos bytes no podrán ser 000, ya que siempre por lo menos tendrá una principal.
Los coeficientes usados para verificar el décimo dígito de la cédula, mediante el algoritmo “Módulo 10”

COEFICIENTES = 2.1.2.1.2.1.2.1.2 ( cuando el residuo es 0 el digito verificador es 0)


Ejemplo: cédula = 1710034065

2 1 2 1 2 1 2 1 2 (Coeficiente)
1 7 1 0 0 3 4 0 6 (Número de Cédula)
2 7 2 0 0 3 8 0 12 = 25 (Multiplicar cada dígito de la cédula por el
3 coeficiente, si es mayor a 10 sumo entre dígitos).

sumar las multiplicaciones

Del resultado de la suma
25/10= 2 Residuo 5 10-5 = 5 (dígito verificador)

Nota: Cuando el residuo es cero(0) el dígito verificador es 0.


VALIDACION DEL NUMERO DE RUC

El ruc será 13 dígitos, sin letras, sin caracteres especiales.
El tercer dígito será 6 ó 9 dependiendo el tipo de persona.
Los tres últimos dígitos son 001,002,003 etc., dependiendo el número de establecimientos adicionales.
La validación de la cédula de Identidad pasa un algoritmo “Módulo 11”. Al número se lo divide en 13 partes, las 9 primeras son el número mismo, la 10 es el dígito autoverificador para las personas jurídicas y la posición 9 es el dígito autoverificador para las Instituciones públicas, y las 3 restantes indican si es principal o establecimiento adicional.
Las 2 primeras posiciones corresponden a la provincia donde fue expedida, por lo cual los dos primeros números no será mayor a 22 ni menor a 1.
Los 3 últimos dígitos no podrán ser 000 para las personas jurídicas y los últimos dígitos no podrán ser 0000 para las Instituciones públicas, ya que siempre por lo menos tendrá una principal.
Los coeficientes usados para verificar el décimo dígito de la cédula, mediante el algoritmo “Módulo 11”

Cuando el tercer dígito es 9:

COEFICIENTES = 4.3.2.7.6.5.4.3.2

Cuando el tercer dígito es 6:
En este caso el dígito verificador está en la posición 9.

COEFICIENTES = 3.2.7.6.5.4.3.2


Nota: Cuando el residuo es cero(0) el dígito verificador es 0,

Ejemplo: TERCER DIGITO 9

Ruc = 1 7 9 0 0 8 5 7 8 3 0 0 1
Coeficiente = 4 3 2 7 6 5 4 3 2
Resultado = 4 21 18 0 0 40 20 21 16 = 140 140/11= 12 Residuo=8
Luego resto 11 – residuo  11 – 8 = 3 (Módulo – Residuo) = dígito verificador


Ejemplo: TERCER DIGITO 6

3 2 7 6 5 4 3 2
1 7 6 0 0 0 1 0 4 0 0 0 1
3 14 42 0 0 0 3 0 = 62 62/11= 5 Residuo 7 11-7 = 4


Excepciones
Si el residuo es 0 es digito verificador 0.


Número de RUC: 0801895186001

Estructura: El número del RUC es un número de 13 dígitos, sin letras ni caracteres especiales, de los cuales los 10 primeros dígitos corresponden a la cédula de identidad

08 Los dos primeros dígitos corresponden al código de provincia siempre está entre 01 al 22
0 El tercer dígito es siempre menor a 6: 0, 1, 2, 3, 4, 5.
189518 Del cuarto al noveno dígito es un número consecutivo de 6 dígitos
6 El décimo dígito es el dígito verificador
001 Del décimo primer dígito al décimo tercer dígito, identifican en forma consecutiva el número de establecimientos. Empieza siempre con el 001

El número de RUC es: 0801895186001 independientemente del número de establecimientos que tenga el contribuyente, no existe un número de RUC tal como 0801895186002

La validación de la cédula de Identidad pasa un algoritmo "Módulo 10". Al número se lo divide en 13 partes, las 9 primeras son el número mismo, la 10 es el dígito auto verificador, y las 3 restantes indican si es principal o establecimiento adicional. Los coeficientes usados para verificar el décimo dígito de la cédula, mediante el algoritmo "Módulo 10" son: 2.1.2.1.2.1.2.1.2.

Para realizar la validación solo tomamos los 9 primeros dígitos del RUC y procedemos a realizar la multiplicación de la siguiente manera:
0 8 0 1 8 9 5 1 8
2 1 2 1 2 1 2 1 2
0 8 0 1 16 9 10 1 16

El resultado de esta multiplicación sumamos por digito no por resultado:
0+ 8+ 0+ 1+ 1+6 +9+1+0 +1+ 1+6 = 34

El Resultado de ésta suma que es 34 restamos de la decena más próxima, o sea 40.

40 - 34 = 6

Si resultado que nos da en esta resta "6" es igual al décimo número del RUC, este esta correcto caso contrario incorrecto.

Si el resultado de la resta es 0, y el décimo número del RUC también es 0, este esta correcto caso contrario incorrecto.