Developers/FAQ/lang-es

From OLPC
Jump to: navigation, search
  Please copy/paste "{{Translationlist | xx | origlang=en | translated={{{translated}}}}}" (where xx is ISO 639 language code for your translation) to Developers/FAQ/lang-es/translations HowTo [ID# 257215]  +/-  

Previo Siguiente

Esta página reúne preguntas que deberán eventualmente encontrar su camino en el cuerpo del manual de Desarrolladores (i.e. estas páginas de Developers/*), una vez que tengamos un buen lugar donde ponerlas.

Como hago redes en Sugar?

Patrones recomendados para redificar aplicaciones en las laptops OLPC estan usadas en sistemas de Tubes/Telepathy. Esto es basicamente un DBUS - RPC a traves de la red de Telepathy. El framework de Telepathy framework permite a las sesiones estabilizar y ruteo atraves de topoligias de red extrañas. Ver compartiendo actividades para un resumen y tutorial de colaboración.

Código de ejemplo:

Las laptops tendrán conectividad IPv6 y IPv4, ellos pueden usar internet "normal" primitivas disponibles en Python, Scheme y C.

  • Python soporta redes síncronas y asíncronas entre los que incluye servidores web y similares.
  • Twisted no estara disponible por defacto en las laptops pero instalaciones parciales en el framework pueden ser incluidas en tu actividad si deseas hacer muchas operaciones en red con multiples potocolos
  • PyRO (objetos remotos en python) es otro enfoque común de RPC usado en Python.
  • XMLRPC/SOAP pueden ser usados para crear servicios web
Puedo usar sockets sobre Tubos?

...para obetener NAT traversal y otras cosas, pero usar codigo de sockets antiguo?

Si, usas Stream Tubes, disponible en gabble y salut (pero no antes de Update.1).

Como creo un servidor/servicio persistente?

  • Como registro el tiempo de inicio de carga?
  • Existe algun servicio de evento en dbus para cargar unicamente cuando se responde un mensaje? Eso es, no cargar hasta que haya algún evento o haya dado un tipo tal como la presencia del evento?
    • Si, mas o menos, los servicios son definidos en un archivo de servicios, estos servicios se asemejan a un ejecutiable que provee un servicio. Aunque uno puede registrarlos para una peticion de manejo de algun servicio especifico, pero hasta ahora necesita que el servicio sea llamado por algo.

Como acceso al hardware especial?

Mientras Sugar corra en muchas maquinas, la OLPC-XO tiene cierto hardware especial el cual puede ser explotado por el software.

Cámara / Cámara como video (v4l2)

Ver GStreamer para instrucciones generales y OLPCGames para instrucciones especificas a Pygame.

Control pad direccionales/botones
  • Tiene sus propias nombres de teclas X
  • Ver OLPCGames para instrucciones especificas a Pygame, distribución llave y discusiones de uso del pad direccional para situaciones de juego
  • Mapeo del pad de juego a Inicio, Fin, Pagina-arriba, Pagina-abajo
  • Mapeo del pad direccion a las teclas de cursor (en el teclado numerico)
Touchpad / Sensor desplazamiento
  • Muestra como un mouse normal bajo X.
  • Este no es un sensor capaz de multi-toque
Pad de dibujo (pad con stylus)
  • Como cambiar dentro/fuera del modo stylus?
  • Como fijar parametros en la interpretación?
Configuración del puerto de audio

El mejor codigo de ejemplo disponible en el medición de actividad.

  • Como obtener acceso?
    • Configuras el mezclador ALSA (usando os.system en el código de ejemplo) y despues usas eventos gstreamer para procesar el audio-buffer receptor "handoff" usando una sincronización de datos simulado. Desempaqueta los datos de los valores de la cadena y obten el valor de los integros. (O simplemente usa la utileria de clase (AudioGrab) en la medición de actividad).
  • ¿Qué sucederá cuando tenga acceso (tomando en cuenta que (el desarrollador) probablemente no tiene el hardware actual disponible)?
    • Procesar un flujo de datos de audio. En el código de ejemplo vas a configurar gstreamer para producir una secuencia de números enteros a 48.000 Hz. Con ello debes ser capaz de producir el mismo efecto usando gstreamer en cualquier Linux através del puerto habitual de micrófono.
Modo de conmutación de código para la pantalla

Mucho de esto se controla a través del servicio HardwareManager en el DBUS. Hay un código de ejemplo para obtener una referencia al administrador de hardware en la actividad de lectura, a partir de ahí, sólo tiene que llamar a los métodos expuestos dbus para establecer los valores que desea. HardwareManager controla las operaciones:

  • Controlador de pantalla (DCON) origen de datos (CPU o DCON)
  • DCON congelar/descongelar
  • Brillo de la luz de fondo
  • Brillo de la luz del teclado
  • Modo de color blanco/negro

¿Cómo lo hacemos?:

  • Establecer las 8 (4 distintas) configuraciones para MODE_MONO_LUMA, MODE_CSWIZZLE, MODE_COL_AA (a diferencia de sólo el color/blanco y negro)
  • Consulta, cambia, y restringe la orientación de la pantalla
  • Cambiar a una resolución más baja para mejor rendimiento o la facilidad de ser portado, tales como 600x450 o 400x300

Véase también Display.

Como creo mi actividad en GUI?

  • Puedo usar directamente Cairo, Pygame o GTK?
    • PyGTK, Pango y PyCairo es el toolkit de interfaz gráfica recomendado para programar una nueva actividad ventana/botón/texto/vector.
    • Pygame es recomendado para juegos tipo videojuegos que necesitan de desempeño
    • Etoys puede ser usado para producir interfaces gráficas vía sofisticados objetos de script, con soporte para multimedia
  • Como puede una aplicación sin-GTK (o Qt) interactuar con Sugar?
    • De momento las actividades de API de bajo nivel son muy tediosas
    • Puede ser "areglado" pero crear wrapper con Python (e.g. la actividad ClassicGnome con una penalidad en el desempeño)
    • Puede escribir varios servicios de DBus usando los eventos ciclados de GTK para proveer los servicios de introspección necesarios (implica que GTK tambien debe ser cargado en por cada proceso, independiente de si es necesitado)
    • Can alter your core event loop to cooperate with an embedded GObject event loop (PyGame allows this, for instance), with the small concern that this requires loading GObject into your process' memory space
  • Que tan flexible debe ser la interfaz gráfica?
    • Debe ser capaz de manejar eventos de redimensión y rotación desde el servidor X
    • Debe ser capaz de manejar localización e internacionalización incluyendo scripts escritos de derecha-a-izquierda
  • Cual es el mejor enfoque de desarrollo:
    • Escribir fuera de Sugar, finalizar y debugear, y despues portar?
      • Para Macs antiguas basadas en PowerPc, esto es quizas el mejor enfoque
    • Escribir a Sugar, probar y debugear dentro del sistema?
      • Es usable si puedes arrancar un ambiente de emulación o para actualizar el sistema para soportar Sugar directamente
    • Escribir directamente en la XO
      • Útil se estas cómodo con las herramientas de edición en la linea de comando de Linux, o si quieres usar Etoys. Como el desarrollo se vuelve mas accesible esto se vuelve mas fácil de encarar.

Como empaqueto mi actividad?

  • Como trabajo de una actividad en-proceso (desarrollar registros)?
    • desarrollo setup.py
    • Puedes usar una actividad-sugar para comenzar la actividad, pero tienes que manualmente cerrarla (nota que por defacto no hay forma matar una actividad que no se comporta dentro de Sugar)
  • Como produzco una extensión binaria?
    • En una maquina de trabajo con Qemu, puedes crear un espacio de trabajo. (Usando Qemu con capas qcow que permiten hacer esto sin corromper la imagen base del sistema operativo). Within that work-space, compile the packages you want using gcc, yum, and all the traditional tools. Package and upload the results.
  • Como comparto códgio entre actividades?
    • Como uso paquetes de Python (grandes, comunes)?
      • El sistema unificiara archivos comunes atravez de los paquetes, asi que si tienes un gran paquete y otra actividad que tambien usa ese pauete entonces el sistema solo almacenara la copia del paquete (usando una comparación archivo por archivo).
      • Numpy
      • Matplotlib
      • MySQL o código de cliente PostgreSQL
      • Twisted
      • Interfaz Zope
      • Pygsear, PGU u otras extensiones PyGame
    • Como proveo de mis propios pauetes base sobre los cuales he escrito miles de aplicaciones?
      • Tal como en actividades comunes, el plan actual es tener un sistema unificado de paquetes en la laptop. Existe un costo en el que los paquetes deben contener copias completas de sus frameworks bases para cada actividad.

Como la publico para que los demas la descargen?

  • La pagina de Actividades es donde muchos de los usuarios iran a encontrar nuevas Actividades
  • Cualquier servidor http (web) puede usar y distribuir paquetes
    • Los usuarios pueden descargar tu paquete .xo, cuando el paquete complete la descarga, ellos usaran la actividad Journal para "resumir" el paquete de descarga
  • Como puedo decirle a mis usuarios sobre las actualizaciones del paquete?

Como comparto archivos entre las aplicaciones?

Planea en el momento tener handlers de compartición de archivos usando el sistema base. Eso es todo, el sistema simplemente notará que tienes archivos duplicados con las mismas propiedades y hash y los compartirá entre dos actividades.

Como pruebo una actividad en Sugar?

  • Use the standard logging module in Python where possible
  • Start your activity normally, its logs will be sent to the ~/.sugar/default/logs/ directory named after your Activity's DBUS service
  • You can use the built-in Log Viewer activity on production XO versions (build 649 and up), alternately you can just view the logs in a developer's console using less or vi
  • If you like you can also use:
sugar-jhbuild shell
sugar-activity YourActivityName

to run your activity from a shell and be able to drop into pdb or similar command-line debuggers.

Como debugeo una actividad con Sugar?

Puedes iniciar la actividad de Sugar desde la linea de comando (ver arriba), puedes insertar un Python estandar:

 import pdb
 pdb.set_trace() 

entra en tu actividad y despues usa el debugeador de Python para ir por pasos atravez del desempeño de tu actividad. Nota que esto "congelará" tu aplicación mientras estas trabajando, así que quizas tengas problemas de visualización.

Como edito con Emacs en una laptop?

Como monto una memoria USB?

Usualmente esto es hecho de forma automática por HAL cuando insertas una memoria flash USB en la laptop. Esta se mostrará en la parte inferior del Diario y como un directorio en el folder de /media. Si, sin embargo, has tenido una llave USB cuando comenzaste la maquina entonces HAL no reconocera la llave, quizas no haya ejecutado el proceso de montura. En este caso intenta montarlo de forma manual:

  • Inicia Terminal Activity
  • Conviertete en root: $ su
  • Crea un lugar para montarlo: $ mkdir /mnt/usb
  • Monta el drive: $ mount /dev/sda1 /mnt/usb
  • No te olvides desmontarlo antes de sacarlo: $ umount /mnt/usb
  • Si todo falla deberas editar tu archivo /etc/fstab para incluir el punto de montaje, y el sistema de archvios del periferico a montar.

Previo Siguiente