Developers/Stack/lang-es: Difference between revisions

From OLPC
Jump to navigation Jump to search
 
(7 intermediate revisions by 2 users not shown)
Line 43: Line 43:
=== Componentes de navegador ===
=== Componentes de navegador ===


The built-in Browser is actually just a thin wrapper around the Gecko control. You can use the Gecko control yourself and create web-browser derived activities, either using XUL or Python/PyGTK to instantiate the browser. This gives your Activity access to system services and hardware, at the cost of considerably more complexity.
El navegador integrado es de hecho solo una capa delgada alrededor del control Gecko. Tu mismo puedes usar el control Gecko y crear actividades derivadas del navegador web, ya sea usando XUL o Python/PyGTK para instanciar el navegador. Esto provee de acceso a tu Actividad, a los servicios del sistema y al hardware, con un costo considerablemente mayor de complejidad.


Ver: ??? para empezar a usar XULRunner/controles web y desarrollar para el OLPC.
Ver: ??? para empezar a usar XULRunner/controles web y desarrollar para el OLPC.
Line 49: Line 49:
== Python/PyGTK ==
== Python/PyGTK ==


Python and GTK based activities are the "standard" way to write software for the OLPC. Using Python and PyGTK is strongly encouraged so that the "View Source" button will normally show the same language wherever the user invokes it. The use of the same language throughout also means that code can often be factored out of one project to be shared with another.
Actividades de Python y GTK basado en las formas "estandares" para escribir software para la OLPC. Usando Python y PyGTK es ampliamente acomplejado para que el botón de "Ver fuente" muestre el mismo lenguaje cuando el usuario lo vea. El uso del mismo lenguaje significa que el código puede tomarse de un proyecto y ser compartido con otro.


El soporte para escribir actividades provistas por el core de sistemas de Sugar (el cual esta en gran medida escritas en Python) esta casi siempre expuesta primeramente por librerías Python. En la plataforma Sugar, PyGTK tiene acceso a las siguientes librerías mayores:
The support for writing activities provided by the core Sugar system (which is itself largely written in Python) is almost always exposed first through Python libraries. On the Sugar platform, PyGTK has access to the following major libraries:


* [[Cairo]] -- librería de alto desempeño de postscript para dibujar gráficos de vectores con RSVG y libreria para renderear SVG.
* [[Cairo]] -- high performance postscript-like library for drawing vector graphics, with the RSVG SVG-rendering library
* [[Pango]] -- flexible text layout system capable of dealing with complex internationalization issues
* [[Pango]] -- sistema de diseño flexible de texto capaz de tratar con problemas de internacionalización complejas
* [[D-BUS]] -- inter-process communications
* [[D-BUS]] -- comunicación inter-proceso
* Telepathy -- inter-machine RPC and presence management with network traversal and discovery logic (activities are encouraged to use Telepathy's Tubes where practical)
* Telepathy -- RPC inter-maquina y gestión de presencia con redes transversales y lógica de descubrimiento (se acoseja usar los Tubes de Telepathy en tus actividades cuando sea practico usarlo)
* [http://numpy.scipy.org/ NumPy] -- standard high performance numeric analysis and array-handling module
* [http://numpy.scipy.org/ NumPy] -- modulo estándar para alto desempeño de análisis numérico y manejo de matrices (arrays)
* [[CSound]] -- acoustically modelled sound-synthesis engine (seen in the [[TamTam]] activity)
* [[CSound]] -- motor sintetizador de sonido de modelado acústico (ver actividad en [[TamTam]])
* [[GStreamer]] -- general purpose media streaming platform, used for accessing the video camera and playing media
* [[GStreamer]] -- plataforma multimedios general, usada para accesar la camara de video y reproducir medios
* [[IPython]] -- enhanced interactive Python interpreter with syntax highlighting, command-completion and the like
* [[IPython]] -- interprete optimizado de python con marcado de sintaxis, autocompletado de comando y similares


===Controles GTK:===
GTK Controls:


* [[Web]] Browser Control ([[HulaHop]]) -- Gecko 1.9 web browser as a simple embeddable control with Python DOM access
* Controles de navegador [[Web]] ([[HulaHop]]) -- navegador web Gecko 1.9 como un control incrustado sencillo usando acceso DOM con Python
* [[Write|AbiWord]]/AbiCollab Control -- AbiWord word processor as an embeddable control with the ability to collaboratively edit with another user
* Controles [[Write|AbiWord]]/AbiCollab -- Procesador de textos AbiWord como un control incrustado con la habilidad de editar colaborativamente con otro usuario
** Esta versión de AbiWord también incluye soporte para la sintaxis marcada y edición de código fuente colaborativo.
** This version of AbiWord also includes support for syntax-colouring and collaborative source-code editing
* [[Evince]] Control -- PDF and EBook-reading control
* Controles de [[Evince]] -- control de lector de PDF y E-Books
* [[#OLPCGames|Pygame]] -- game development engine based on SDL (see OLPCGames), not exactly a control, but close...
* [[#OLPCGames|Pygame]] -- motor de desarrollo de juegos basado en SDL (ver OLPCGames), no es precisamente un control, pero parece...


aparte de la librerías estándares de Python, las cuales incluyen mucha funcionalidad pre-instalada. Un modulo estándar es el de la base de datos de SQLite, este provee una base de datos uni-usuario, la cual puede ser usada para almacenar datos por las actividades.
in addition to the Python standard library, which includes rather a lot of built-in functionality. One key standard library module is the SQLite database engine, which provides a basic single-user SQL database which can be used by activities for storage.


See: [[API Reference]] for a more exhaustive set of pointers to libraries available with links to their documentation
Ver: [[API Reference|Referencia del API]] para una lista más completa de apuntadores a librerías disponibles con vínculos a la documentación


See: [[Activity tutorial]] to develop in Python (with PyGTK) for the OLPC.
Ver: [[Activity tutorial|Tutorial de actividades]] para desarrollar en Python (con PyGTK) para la OLPC.


Las actividades pueden usar extensiones comunes de Python la cuales son instaladas dentro del directorio de la Actividad. Quizas desees considerar re-escribir áreas que atacan el mismo problema en tu actividad como [[#Low Level|extensiones C]]. esto puede ahorrarte mucho tiempo de procesamiento y dependencias en la memoria dependiendo de la naturaleza de tu extensión. Recuerda que la optimización prematura no siempre es una buena idea; primero el código; optimizar después. También puedes usar extensiones para envolver actividades existentes (aquellas que normalmente están basadas en Sugar o Python) creando un control GTK, envolviendo el nucleo de tu actividad.
Activities can use common Python extensions which are installed into their Activity directory. You may also consider rewriting areas that profiling say are problems in your activity as [[#Low Level|C extensions]]. This can save both processor load and memory depending on the nature of the extension. Keep in mind, though, that premature optimization is generally not a good idea; code first, optimize later. You can also use extensions to wrap already-existing activities (those not normally Sugar or Python based) by creating a GTK control wrapping your activity's core.


Ver: [[#Low Level|Bajo nivel]] para una discusión de las extensiones de bajo nivel y probelmas de lenguajes de programación.
See: [[#Low Level]] for a discussion of extensions lower-level programming-language issues


=== OLPCGames (juegos) ===
=== OLPCGames (juegos) ===


[[Pygame]] es una envoltura a alto nivel sobre las librerías [[SDL]] en C, el cual provee soporte de bajo nivel para el desarrollo de juegos. Pygame permite crear rasters (gráficas basadas en pixeles) para juegos con un desempeño bastante bueno gracias a SDL.
[[Pygame]] is a high-level wrapper around the C [[SDL]] library, which provides low-level support for developing games. Pygame allows you to easily create raster (pixel-based) graphics for games with reasonable performance thanks to SDL.


[[OLPCGames]] is a Python package which allows you to create Sugar Activities using Pygame with access to the special features of the laptop. This includes the Telepathy presence and communications infrastructure and the Pango/Cairo graphics capabilities.
[[OLPCGames]] es un paquete de python el cual permite crear actividades en Sugar usando Pygames para acceder a herramientas especiales de la laptop. Por ejemplo el uso de ''presencia'' en Telepathy y comunicaciones de infraestructura en las capacidades graficas de Pango/Cairo.


See: [[Game development HOWTO]] to start using Python, Pygame and OLPCGames to develop for the OLPC.
Ver: [[Game development HOWTO|COMO desarrollar video juegos]] para comenzar a usar Python, Pygame y OLPCGames para desarrollar para la OLPC.


See: [[Game templates]] for a set of simple templates intended to allow students to create "genres" of games easily
Ver: [[Game templates|Plantillas de juego]] para un set de plantillas simples pensadas para permitir a estudiantes crear "generos" de juegos fácilmente


See also [http://wiki.sugarlabs.org/go/Development_Team/Sugargame Sugargame], a different implementation.
Ver también [http://wiki.sugarlabs.org/go/Development_Team/Sugargame Sugargame], es una implementación diferente.


== Flash ==
== Flash ==


Sugar incluye el motor de [[Gnash]] de forma predeterminada, y el motor reproductor [[Adobe Flash]] puede ser instalado. En este momento no tenemos una herramienta editora de archivos Flash que pueda ser distribuida en las laptops. Sin embargo, si tienes contenido basado en flash, puede ser posible mostrar simplemente ejecutando Gnash en Sugar.
Sugar inlcuye un motor llamado [[Gnash]] de forma predeterminada, y el motor reproductor [[Adobe Flash]] puede ser instalado. En este momento no tenemos una herramienta editora de archivos Flash que pueda ser distribuida en las laptops. Sin embargo, si tienes contenido basado en flash, puede ser posible mostrar simplemente ejecutando Gnash en Sugar.


== Bajo nivel ==
== Bajo nivel ==


Being a regular Fedora 7 Linux machine, the OLPC-XO can run regular Linux i386 executables. However, integration with the Sugar shell is currently a non-trivial exercise. It is often easier to wrap your C/C++/Assembly/Whatever activity in a (normally Python) wrapper than to attempt to implement the entire [[Low-level Activity API]] yourself.
Siendo una maquina común que corre Fedora 7, la OLPC-XO puede correr cualquier ejecutable Linux i386. Sin embargo, la integración con Sugar no es un ejercicio trivial. Muchas veces es mas fácil empaquetar la actividad hecha en C/C++/Assembly/Whatever en una envoltura (usualmente en Python) en vez de implementar la [[Low-level Activity API|API de bajo nivel]] tu solo.


See: [[Low-level Activity API]] for the most extensive and up-to-date available discussion of how to integrate a low-level activity manually
Ver: [[Low-level Activity API| API de bajo nivel]] para una discusión mas profunda y actualizada de como integrar actividades a bajo nivel de forma manual


See: [[Sugarizing]] for a (somewhat fragmentary) discussion of how to wrap an existing native-code executable/library with a Python wrapper.
Ver: [[Sugarizing|Sugarizando]] para una discusión (algo fragmentada) de como envolver ejecutables y librerias en codigo nativo en una envoltura (wrapper) de Python.


See: [http://dev.laptop.org/git?p=users/albert/sugarize;a=tree;f=xlogo.activity;hb=HEAD Sugarize Demo] for a shared library loader hack that provides much of the X11-level functionality for general X11 activities, allowing them to be run largely unchanged on the XO. Most of the special features of the laptop will not be available, but this approach allows for quick porting/testing of activities.
Ver: [http://dev.laptop.org/git?p=users/albert/sugarize;a=tree;f=xlogo.activity;hb=HEAD Demo de sugarización] para el hack a un cargador de librerías compartidas haciendo que provea mucha de la funcionalidad de X11-level para actividades X11, permitiendo que ejecute sin muchos cambios en la XO. Muchas de las funcionalidades especiales de la laptop no estarán disponibles, pero este enfoque permite portarlo y probarlo de forma más rápida estas actividades.


When coding in Python, you will occasionally want access to a C or C++ extension, either one already written, or one written to optimize some part of your activity. You can build these extensions for use under Sugar by using the normal Python distutils with GCC tool chain.
Cuando programas en Python, ocasionalmente querras accesar a extensiones en C o C++, quizás ya una este escriba, o una se escriba para optimizar parte de tu actividad. Puedes construir estas extensiones para su uso dentro de Sugar usando distuils en Python con una cadena de GCC.


Make sure that you are aware (and respect) the [[Geode instruction set]]. It is about the same as the original Athlon instruction set. See the Geode data book linked in the [[Geode instruction set]] page.
Asegurate que estas conciente (y respetas) las [[Geode instruction set|instrucciones del procesador Geode]]. Es muy similar a las instrucciones del procesador Athlon. ver el libro de datos de Geode en la página de [[Geode instruction set]].


La mejor manera (mas compatible y confiable) es generalmente compilar a una imagen oficial, usando yum para instalar las herramientas requeridas. Hacer esto en una XO no es tan buena idea ya que la compilación tiende a generar muchas escrituras al disco y puede reducir la longevidad del chip en flash.
The best (most reliable and compatible) approach is generally to compile on an official image, using Yum to install the tools required. Doing this on an actual XO, however, is probably '''not''' a good idea, as compilation will tend to cause lots of writes to the disk and reduce the longevity of your flash storage chip.


See: [[Developers/Setup#Emulation for Compilation/Experiments|Emulation for Compilation]] for a tip on how to compile using emulation
See: [[Developers/Setup#Emulation for Compilation/Experiments|Emulación en compilaciones]] para tips de como compilar usando emulación.


= librerias comunes no disponibles =
= librerias comunes no disponibles =

Latest revision as of 10:11, 15 June 2011

  Please copy/paste "{{Translationlist | xx | origlang=en | translated={{{translated}}}}}" (where xx is ISO 639 language code for your translation) to Developers/Stack/lang-es/translations HowTo [ID# 257081]  +/-  

Previo Siguiente

Existe una serie de enfoques (stack de software) al desarrollar software para lel ambiente OLPC. El stack que escoja sera fuertemente influenciado en el tipo de configuracion que se necesite y que el desarrollo principal mostrara.

Plataforma base

Ver tambien componentes de software para una discusión sobre el software instalado en la OLPC.

El stack operativo de la OLPC se ve como esto:

  • Hardware -- Normalmente una OLPC-XO, pero puede ser otra maquina con Sugar instalada o compilada de forma cruzada.
  • Sistema operativo basado en Fedora Core 7 modificado fuertemente
    • Linux Kernel (2.6.22 con algunos parches 2007-12-15)
  • Sistema X Window - tecnología estándar de video X11
  • Matchbox - un gestor de ventanas minimalista
  • Bitfrost -- Sistema de seguridad
  • Servicios D-BUS -- varios servicios específicos a la plataforma (muchas de las operaciones en hardware son expuestas via D-BUS en la XO)
  • Sugar -- GUI de Shell (escritorio)

Stack del desarrollo de la actividad

esta sección intenta describir a grandes rasgos el stack disponible para el desarrollo de actividades en el ambiente Sugar.

Smalltalk/Etoys

Etoys es una aplicación escrita en Squeak, un ambiente de desarrollo libre hecho en Smalltalk. Smalltalk es uno de los primeros lenguajes orientados a objetos, esto quiere decir, que se ha usado por decadas, y es el resultado de una gran cantidad de componentes y contenido pre-instalado y con recursos que pueden ser usados para crear nuevas actividades.

El ambiente de Etoys es realmente fácil de programar vía una interfaz gráfica de interacciones, y componentes con acceso a funcionalidades especificas del hardware en la laptop. Puedes crear proyectos fascinantes y utiles demostraciones con solo unos clics del puntero y con un poco de lógica.

Ver: Desarrollo de Smalltalk en la XO para comenzar a usar Squeak para desarrollo de la OLPC.

Navegador

Sugar incluye una actividad de Navegador Web basada en Gecko de Mozilla. este navegador incluye HTML, XHTML, Javascript y soporte de SVG. Puedes configurar un simple servidor web en una laptop usando Python, o los niños pueden accesar a las aplicaciones hosteadas en un servidor web público (pero ten en mente que los niños tendrán muy poca conectividad).

Puede desarrollar con esta plataforma sin un hardware en particular o configuración especial, puedes probar usando el Firefox regular durante las etapas iniciales. Es muy fácil portar tu trabajo de donde sea a este stack, y es fácil exportar tu trabajo fuera del proyecto OLPC. El ambiente es, sin embargo, limitado, sin acceso a mucho del hardware o software especial que contiene la laptop.

Componentes de navegador

El navegador integrado es de hecho solo una capa delgada alrededor del control Gecko. Tu mismo puedes usar el control Gecko y crear actividades derivadas del navegador web, ya sea usando XUL o Python/PyGTK para instanciar el navegador. Esto provee de acceso a tu Actividad, a los servicios del sistema y al hardware, con un costo considerablemente mayor de complejidad.

Ver: ??? para empezar a usar XULRunner/controles web y desarrollar para el OLPC.

Python/PyGTK

Actividades de Python y GTK basado en las formas "estandares" para escribir software para la OLPC. Usando Python y PyGTK es ampliamente acomplejado para que el botón de "Ver fuente" muestre el mismo lenguaje cuando el usuario lo vea. El uso del mismo lenguaje significa que el código puede tomarse de un proyecto y ser compartido con otro.

El soporte para escribir actividades provistas por el core de sistemas de Sugar (el cual esta en gran medida escritas en Python) esta casi siempre expuesta primeramente por librerías Python. En la plataforma Sugar, PyGTK tiene acceso a las siguientes librerías mayores:

  • Cairo -- librería de alto desempeño de postscript para dibujar gráficos de vectores con RSVG y libreria para renderear SVG.
  • Pango -- sistema de diseño flexible de texto capaz de tratar con problemas de internacionalización complejas
  • D-BUS -- comunicación inter-proceso
  • Telepathy -- RPC inter-maquina y gestión de presencia con redes transversales y lógica de descubrimiento (se acoseja usar los Tubes de Telepathy en tus actividades cuando sea practico usarlo)
  • NumPy -- modulo estándar para alto desempeño de análisis numérico y manejo de matrices (arrays)
  • CSound -- motor sintetizador de sonido de modelado acústico (ver actividad en TamTam)
  • GStreamer -- plataforma multimedios general, usada para accesar la camara de video y reproducir medios
  • IPython -- interprete optimizado de python con marcado de sintaxis, autocompletado de comando y similares

Controles GTK:

  • Controles de navegador Web (HulaHop) -- navegador web Gecko 1.9 como un control incrustado sencillo usando acceso DOM con Python
  • Controles AbiWord/AbiCollab -- Procesador de textos AbiWord como un control incrustado con la habilidad de editar colaborativamente con otro usuario
    • Esta versión de AbiWord también incluye soporte para la sintaxis marcada y edición de código fuente colaborativo.
  • Controles de Evince -- control de lector de PDF y E-Books
  • Pygame -- motor de desarrollo de juegos basado en SDL (ver OLPCGames), no es precisamente un control, pero parece...

aparte de la librerías estándares de Python, las cuales incluyen mucha funcionalidad pre-instalada. Un modulo estándar es el de la base de datos de SQLite, este provee una base de datos uni-usuario, la cual puede ser usada para almacenar datos por las actividades.

Ver: Referencia del API para una lista más completa de apuntadores a librerías disponibles con vínculos a la documentación

Ver: Tutorial de actividades para desarrollar en Python (con PyGTK) para la OLPC.

Las actividades pueden usar extensiones comunes de Python la cuales son instaladas dentro del directorio de la Actividad. Quizas desees considerar re-escribir áreas que atacan el mismo problema en tu actividad como extensiones C. esto puede ahorrarte mucho tiempo de procesamiento y dependencias en la memoria dependiendo de la naturaleza de tu extensión. Recuerda que la optimización prematura no siempre es una buena idea; primero el código; optimizar después. También puedes usar extensiones para envolver actividades existentes (aquellas que normalmente están basadas en Sugar o Python) creando un control GTK, envolviendo el nucleo de tu actividad.

Ver: Bajo nivel para una discusión de las extensiones de bajo nivel y probelmas de lenguajes de programación.

OLPCGames (juegos)

Pygame es una envoltura a alto nivel sobre las librerías SDL en C, el cual provee soporte de bajo nivel para el desarrollo de juegos. Pygame permite crear rasters (gráficas basadas en pixeles) para juegos con un desempeño bastante bueno gracias a SDL.

OLPCGames es un paquete de python el cual permite crear actividades en Sugar usando Pygames para acceder a herramientas especiales de la laptop. Por ejemplo el uso de presencia en Telepathy y comunicaciones de infraestructura en las capacidades graficas de Pango/Cairo.

Ver: COMO desarrollar video juegos para comenzar a usar Python, Pygame y OLPCGames para desarrollar para la OLPC.

Ver: Plantillas de juego para un set de plantillas simples pensadas para permitir a estudiantes crear "generos" de juegos fácilmente

Ver también Sugargame, es una implementación diferente.

Flash

Sugar inlcuye un motor llamado Gnash de forma predeterminada, y el motor reproductor Adobe Flash puede ser instalado. En este momento no tenemos una herramienta editora de archivos Flash que pueda ser distribuida en las laptops. Sin embargo, si tienes contenido basado en flash, puede ser posible mostrar simplemente ejecutando Gnash en Sugar.

Bajo nivel

Siendo una maquina común que corre Fedora 7, la OLPC-XO puede correr cualquier ejecutable Linux i386. Sin embargo, la integración con Sugar no es un ejercicio trivial. Muchas veces es mas fácil empaquetar la actividad hecha en C/C++/Assembly/Whatever en una envoltura (usualmente en Python) en vez de implementar la API de bajo nivel tu solo.

Ver: API de bajo nivel para una discusión mas profunda y actualizada de como integrar actividades a bajo nivel de forma manual

Ver: Sugarizando para una discusión (algo fragmentada) de como envolver ejecutables y librerias en codigo nativo en una envoltura (wrapper) de Python.

Ver: Demo de sugarización para el hack a un cargador de librerías compartidas haciendo que provea mucha de la funcionalidad de X11-level para actividades X11, permitiendo que ejecute sin muchos cambios en la XO. Muchas de las funcionalidades especiales de la laptop no estarán disponibles, pero este enfoque permite portarlo y probarlo de forma más rápida estas actividades.

Cuando programas en Python, ocasionalmente querras accesar a extensiones en C o C++, quizás ya una este escriba, o una se escriba para optimizar parte de tu actividad. Puedes construir estas extensiones para su uso dentro de Sugar usando distuils en Python con una cadena de GCC.

Asegurate que estas conciente (y respetas) las instrucciones del procesador Geode. Es muy similar a las instrucciones del procesador Athlon. ver el libro de datos de Geode en la página de Geode instruction set.

La mejor manera (mas compatible y confiable) es generalmente compilar a una imagen oficial, usando yum para instalar las herramientas requeridas. Hacer esto en una XO no es tan buena idea ya que la compilación tiende a generar muchas escrituras al disco y puede reducir la longevidad del chip en flash.

See: Emulación en compilaciones para tips de como compilar usando emulación.

librerias comunes no disponibles

Mientras que el ambiente de Sugar es rico, no puede incluir todas las posibles librerias o extensiones que aun puedan caber en 200MB. La siguiente lista muestra librerias comunes que no estan disponibles en la XO:

  • OpenGL/MESA
  • bases de datos relacionales con servidor (MySQL, PostgreSQL)
  • Qt/KDE
  • Gnome
  • Many Kernel-level Linux Drivers (you can build missing drivers yourself, preferably in a throw-away emulator overlay)

Ver tambien

  • La pagina de Java incluye una discusión por que java no esta disponible y el prospecto de incluirlo (resumen: la versión libre de Java no estaba disponible hasta hace poco, y ahora que esta, aun falta mucho trabajo para eliminar lo inflado y hacer la experiencia del usuario para que encaje en el paradigma de Sugar).

Previo Siguiente