Permalink
Browse files

Spanish: Translation notes (chapter 15)

  • Loading branch information...
1 parent 9ce849d commit 5e215e21f11bed3150d07cf995fc965d8f05d3bb @spametki spametki committed Apr 3, 2013
@@ -216,7 +216,7 @@ web2py se desarrolló inicialmente como una herramienta para enseñanza, con las
- web2py resuelve proactivamente los problemas de seguridad más importantes que plagan a muchas aplicaciones web modernas, según el análisis de OWASP``owasp``:cite que se puede consultar más abajo.
- web2py es liviano. Su núcleo de librerías, incluyendo la Capa de Abstracción de la Base de Datos, el lenguaje de plantillas, y el conjunto completo de ayudantes pesan 1.4MB. El código fuente completo incluyendo aplicaciones de ejemplo e imágenes pesa 10.4MB.
- web2py tiene una huella (''footprint'') pequeña y es realmente rápido. Utiliza el servidor WSGI Rocket ``rocket``:cite desarrollado por Timothy Farrell. Es tan rápido como Apache con mod_wsgi, y además tiene soporte para SSL y IPv6.
-- web2py usa sintaxis Python para modelos, controladores y vistas, pero no importa modelos y controladores (a diferencia del resto de los framework) - sino que los ejecuta. Esto significa que las app pueden instalarse, desinstalarse y modificarse sin tener que reiniciar el servidor web (incluso en producción), y aplicaciones diferentes pueden coexistir sin que sus módulos interfieran entre sí.
+- web2py usa sintaxis Python para modelos, controladores y vistas, pero no importa modelos y controladores (a diferencia del resto de los marcos de desarrollo) - sino que los ejecuta. Esto significa que las app pueden instalarse, desinstalarse y modificarse sin tener que reiniciar el servidor web (incluso en producción), y aplicaciones diferentes pueden coexistir sin que sus módulos interfieran entre sí.
- web2py utiliza una Capa de Abstracción de la Base de Datos (DAL) en lugar del ''mapeo objeto-relacional'' (ORM). Desde un punto de vista conceptual, esto significa que distintas tablas de bases de datos se asocian (``map``) en diferentes instancias de una clase ``Table`` y no en distintas clases, mientras que los registros se asocian o mapean a instancias de una clase ``Row``, no a instancias de la clase de la tabla correspondiente. Desde un punto de vista práctico, significa que la sintaxis SQL se asocia en una relación uno a uno en la sintaxis de DAL, y no es necesaria una "caja negra" con programación compleja de metaclases como es común en los ORM más populares, que implicaría un incremento de la latencia.
@@ -40,7 +40,7 @@ Si no tienes Python 2.5 (o las posteriores 2.x) pre-instalado, tendrás que desc
La opción ``-S welcome`` de línea de comando ordena a web2py que ejecute la shell interactiva como si los comandos se ejecutaran en un controlador para la aplicación **welcome**, la aplicación de andamiaje de web2py. Esto pone a tu disposición casi todas las clases, objetos y funciones de web2py. Esta es la única diferencia entre la línea de comando interactiva de web2py y la línea de comando normal de Python.
-La interfaz administrativa además provée de una shell basada en web para cada aplicación. Puedes acceder a la de la aplicación "welcome" en:
+La interfaz administrativa además provee de una shell basada en web para cada aplicación. Puedes acceder a la de la aplicación "welcome" en:
``
http://127.0.0.1:8000/admin/shell/index/welcome
``:code
@@ -50,7 +50,7 @@ Puedes seguir todos los ejemplos en este capítulo utilizando una shell normal o
### help, dir
``help``:inxx ``dir``:inxx
-El lenguaje Python provée de dos comandos para obtener documentación sobre objetos definidos en el scope actual, tanto los incorporados como los definidos por el usuario.
+El lenguaje Python provee de dos comandos para obtener documentación sobre objetos definidos en el scope actual, tanto los incorporados como los definidos por el usuario.
Podemos pedir ayuda (``help``) acerca de un objeto, por ejemplo "1":
``
@@ -819,7 +819,7 @@ En la distribución estándar de Python, conocida como CPython, las variables so
-------
-------
-Cuando utilizas web2py, no sabes dónde se ubica el directorio actual, porque eso depende de la forma en que se halla configurado el framework. La variable ``request.folder`` contiene la ruta (path) a la aplicación actual. Las rutas poueden concatenarse con el comando ``os.path.join``, del hablamos más adelante.
+Cuando utilizas web2py, no sabes dónde se ubica el directorio actual, porque eso depende de la forma en que se halla configurado el marco de desarrollo. La variable ``request.folder`` contiene la ruta (path) a la aplicación actual. Las rutas poueden concatenarse con el comando ``os.path.join``, del hablamos más adelante.
-------
### ``exec``, ``eval``
@@ -36,7 +36,7 @@ Importante: para correr la distribución de código fuente de web2py en Windows
El programa web2py acepta varias opciones de la línea de comandos que se describen más adelante.
-Por defecto, al iniciar, web2py muestra una pantalla de inicio y luego un widget de la GUI que pide que elijas una una contraseña temporaria de administrador, la dirección IP de la interfaz de red a utilizar para el servidor web, y un número de puerto desde el cual se servirán las solicitudes. Por defecto, web2py corre su servidor web en 127.0.0.1:8000 (puerto 8000 en localhost), pero puedes correrlo en cualquier dirección IP y puerto disponible. Puedes consultar la dirección IP de tu interfaz de red abriendo una consola y tipeando ``ipconfig`` en Windows o ``ifconfig`` en OS X y Linux. En adelante asumiremos que web2py está corriendo en localhost (127.0.0.1:8000). Utiliza 0.0.0.0:80 para correr web2py públicamente en cualquiera de tus interfaces de red.
+Por defecto, al iniciar, web2py muestra una pantalla de inicio y luego un widget de la GUI que pide que elijas una una contraseña temporaria de administrador, la dirección IP de la interfaz de red a utilizar para el servidor web, y un número de puerto desde el cual se servirán las solicitudes. Por defecto, web2py corre su servidor web en 127.0.0.1:8000 (puerto 8000 en localhost), pero puedes correrlo en cualquier dirección IP y puerto disponible. Puedes consultar la dirección IP de tu interfaz de red abriendo una consola y escribiendo ``ipconfig`` en Windows o ``ifconfig`` en OS X y Linux. En adelante asumiremos que web2py está corriendo en localhost (127.0.0.1:8000). Utiliza 0.0.0.0:80 para correr web2py públicamente en cualquiera de tus interfaces de red.
[[imagen @///image/en400.png center 306px]]
@@ -98,7 +98,7 @@ web2py también viene con un **asistente**, descripto más adelante en este cap
Aquí, como ejemplo, crearemos una app web simple que muestre el mensaje "Hola desde MiApp" al usuario. Llamaremos a esta aplicación "miapp". Además añadiremos un contador que realice un conteo de cuántas veces el mismo usuario visita la página.
-Puedes crear una nueva aplicación con sólo tipear su nombre en el formulario de la parte superior derecha de la página **site** en **admin**.
+Puedes crear una nueva aplicación con sólo escribir su nombre en el formulario de la parte superior derecha de la página **site** en **admin**.
[[imagen @///image/en800.png center 447px]]
@@ -2999,7 +2999,7 @@ La directiva "handlers" especifica el tipo de historial y, para el ejemplo, la s
``WSGI``:inxx
web2py y WSGI tienen una relación de amor-odio. Nuestra opinión es que WSGI fue desarrollado como protocolo para conectar servidores web a aplicaciones web en forma portátil, y lo usamos con ese fin. web2py en su núcleo es una aplicación WSGI:
-``gluon.main.wsgibase``. Algunos desarrolladores han llevado a WSGI a sus límites como protocolo para comunicaciones middleware y desarrollan aplicaciones web en forma de cebolla, con sus múltiples capas (cada capa es un middleware desarrollado en forma independiente de la totalidad del framework). web2py no adopta esta estructura en forma interna. Esto se debe a que creemos que las funcionalidades del núcleo de los framework (manejo de las cookie, sesión, errores, transacciones, manejo de las URL o ''dispatching'') se pueden optimizar para que sean más seguras y veloces si son manejadas por una única capa que las incluya.
+``gluon.main.wsgibase``. Algunos desarrolladores han llevado a WSGI a sus límites como protocolo para comunicaciones middleware y desarrollan aplicaciones web en forma de cebolla, con sus múltiples capas (cada capa es un middleware desarrollado en forma independiente de la totalidad del marco de desarrollo). web2py no adopta esta estructura en forma interna. Esto se debe a que creemos que las funcionalidades del núcleo de los marcos de desarrollo (manejo de las cookie, sesión, errores, transacciones, manejo de las URL o ''dispatching'') se pueden optimizar para que sean más seguras y veloces si son manejadas por una única capa que las incluya.
De todos modos, web2py te permite el uso de aplicaciones WSGI de terceros y middleware en tres formas (y sus combinaciones):
- Puedes editar el archivo "wsgihandler.py" e incluir cualquier middleware WSGI de terceros.
@@ -307,7 +307,7 @@ Los ayudantes también pueden serializarse como cadenas, indistintamente, con lo
``
``Document Object Model (DOM)``:inxx
-El mecanismo de ayudantes en web2py es más que un sistema para generar HTML sin métodos de concatenación. Este provée una representación del lado del servidor del Document Object Model (DOM).
+El mecanismo de ayudantes en web2py es más que un sistema para generar HTML sin métodos de concatenación. Este provee una representación del lado del servidor del Document Object Model (DOM).
Los componentes de los ayudantes se pueden recuperar por su posición, y los ayudantes funcionan como listas con respecto a sus componentes:
@@ -2463,7 +2463,7 @@ db.producto.categoria.widget = SQLFORM.widgets.autocomplete(
request, db.categoria.nombre, limitby=(0,10), min_length=2)
``:code
-Donde ``limitby`` le indica al widget que no muestre más de 10 sugerencias por vez, y ``min_lenght`` le indica que el widget debe ejecutar un callback Ajax para recuperar las sugerencias sólo después de que el usuario haya tipeado al menos 2 caracteres en el campo de búsqueda.
+Donde ``limitby`` le indica al widget que no muestre más de 10 sugerencias por vez, y ``min_lenght`` le indica que el widget debe ejecutar un callback Ajax para recuperar las sugerencias sólo después de que el usuario haya escrito al menos 2 caracteres en el campo de búsqueda.
El segundo caso es más complicado:
@@ -692,7 +692,7 @@ Esta subsección fue creada por Chris Prinos con la ayuda de Luke Kenneth Casson
#### AMFRPC
``PyAMF``:inxx ``Adobe Flash``:inxx
-AMFRPC es el protocolo para Llamadas a Procedimientos Remotos usado por los clientes de Flash para comunicación con un servidor. web2py soporta AMFRPC, pero requiere que corras web2py desde el código fuente y que previamente instales la librería PyAMF. Esto se puede instalar desde una consola de Linux o en una shell de Windows tipeando:
+AMFRPC es el protocolo para Llamadas a Procedimientos Remotos usado por los clientes de Flash para comunicación con un servidor. web2py soporta AMFRPC, pero requiere que corras web2py desde el código fuente y que previamente instales la librería PyAMF. Esto se puede instalar desde una consola de Linux o en una shell de Windows escribiendo:
``
easy_install pyamf
@@ -44,8 +44,8 @@ Este archivo se incluye en el encabezado HEAD de la plantilla "layout.html" por
"web2py.js" hace lo siguiente:
- Define una función ``ajax`` (que utiliza $.ajax de jQuery).
- Hace que todo DIV de la clase "error" o cualquier ayudante html con clase "flash" se despliegue.
-- Evita el tipeo de enteros inválidos para campos INPUT con clase "integer".
-- Evita el tipeo de valores float en INPUT de clase "double".
+- Evita la escritura de enteros inválidos para campos INPUT con clase "integer".
+- Evita la escritura de valores float en INPUT de clase "double".
- Asocia los campos INPUT de tipo "date" con la ventana emergente ''date picker''.
- Asocia los campos INPUT de tipo "datetime" con un date picker para datetime.
- Asocia los campos INPUT de tipo "time" con un date picker para la hora.
@@ -97,7 +97,7 @@ Si se envía un formulario con errores, el servidor devuelve la página con el f
El color de los errores está configurado en el código CSS en "layout.html".
-El código en web2py.js evita que tipées un valor ilegal en el campo de ingreso de texto. Esto tiene lugar antes y como un agregado, no como sustituto, de la validación del lado del servidor.
+El código en web2py.js evita que escribas un valor ilegal en el campo de ingreso de texto. Esto tiene lugar antes y como un agregado, no como sustituto, de la validación del lado del servidor.
El código de web2py.js muestra una herramienta para seleccionar fechas cuando ingresas a un campo INPUT de tipo"date", y muestra una herramienta para selección de fecha y hora cuando ingresas a un campo INPUT de tipo "datetime". He aquí un ejemplo:
@@ -464,7 +464,7 @@ jQuery("#mes").keyup(function(){
</script>
``:code
-El script de jQuery en la vista activa la solicitud Ajax cada vez que el usuario tipea algo en el campo de datos "mes". El valor del campo de datos se envia con una solicitud Ajax a la acción "seleccion_mes". Esta acción busca una lista de nombres de mes que comiencen con el texto enviado (seleccionado), crea la lista de DIV (cada uno contiene una sugerencia de nombre de mes), y devuelve una cadena serializada con los DIV. La vista muestra la respuesta HTML en el DIV "suggestions". La acción "seleccion_mes" genera tanto las sugerencias como el código JavaScript embebido en los DIV que se se debe ejecutar cuando el visitante hace clic en cada sugerencia. Por ejemplo cuando el visitante tipea "M", la acción callback devuelve:
+El script de jQuery en la vista activa la solicitud Ajax cada vez que el usuario escribe algo en el campo de datos "mes". El valor del campo de datos se envia con una solicitud Ajax a la acción "seleccion_mes". Esta acción busca una lista de nombres de mes que comiencen con el texto enviado (seleccionado), crea la lista de DIV (cada uno contiene una sugerencia de nombre de mes), y devuelve una cadena serializada con los DIV. La vista muestra la respuesta HTML en el DIV "suggestions". La acción "seleccion_mes" genera tanto las sugerencias como el código JavaScript embebido en los DIV que se se debe ejecutar cuando el visitante hace clic en cada sugerencia. Por ejemplo cuando el visitante escribe "M", la acción callback devuelve:
``
<div>
@@ -633,7 +633,7 @@ He aquí una iniciación a la sintaxis markmin:
Observa que los link, archivos de imagen, audio y video se incrustan automáticamente. Para más información sobre la sintaxis MARKMIN, consulta el capítulo 5.
-Si la página no existe, la app te solicitará que crées una.
+Si la página no existe, la app te solicitará que crees una.
La página de edición te permite agregar adjuntos a las páginas (por ejemplo archivos estáticos)
@@ -873,7 +873,7 @@ Esta es la lista de todos los widget actualmente disponibles:
read(tabla,record_id=None)
``:code
-Lée y muestra un registro
+Lee y muestra un registro
- ``tabla`` es el nombre de la tabla
- ``record_id`` es un número de registro
@@ -41,7 +41,7 @@ Según el sitio web de Lighttpd, "Lighttpd es utilizado por gran cantidad de sit
web2py provee de un archivo ``fcgihandler.py`` para la interfaz con FastCGI.
-Además web2py incluye un script ``gaehandler.py`` para la interfaz con el servicio Google App Engine (GAE). Sobre GAE, las aplicaciones corren "en la nube". Esto significa que el entorno o ''framework'', abstrae completamente todo detalle del hardware. La aplicación web es automáticamente replicada tantas veces como sea necesario para servir todas las solicitudes simultáneas. Replicación en este caso quiere decir más que múltiples hilos en el mismo servidor; también implica múltiples procesos en distintos servidores. GAE logra este nivel de escalabilidad bloqueando el acceso de escritura al sistema de archivos, y toda información permanente se debe almacenar en el sistema BigTable de Google o en memcache.
+Además web2py incluye un script ``gaehandler.py`` para la interfaz con el servicio Google App Engine (GAE). Sobre GAE, las aplicaciones corren "en la nube". Esto significa que el marco de desarrollo abstrae completamente todo detalle del hardware. La aplicación web es automáticamente replicada tantas veces como sea necesario para servir todas las solicitudes simultáneas. Replicación en este caso quiere decir más que múltiples hilos en el mismo servidor; también implica múltiples procesos en distintos servidores. GAE logra este nivel de escalabilidad bloqueando el acceso de escritura al sistema de archivos, y toda información permanente se debe almacenar en el sistema BigTable de Google o en memcache.
Salvo en plataformas como GAE, la escalabilidad es una cuestión que hay que resolver, y puede llegar a tomar más de un reajuste en las aplicaciones web2py. La forma más común de lograr escalabilidad es usando múltiples servidores detrás de un balanceador de carga o ''load-balancer'' (un simple algoritmo de selección o algo más sofisticado recibiendo pulsaciones de los distintos servidores).
@@ -106,7 +106,7 @@ Los dos script deberían andar en forma instantánea, pero cada instalación de
En esta sección, usaremos Ubuntu 8.04 Server Edition como plataforma de referencia. Los comandos de configuración son realmente parecidos a los de otras distribuciones de Linux basadas en Debian, pero pueden diferir para los sistemas basados en Fedora (que usan ``yum`` en lugar de ``apt-get``).
-Primero, asegúrate de que se han instalado los paquetes para Python y Apache tipeando los siguientes comandos en la consola:
+Primero, asegúrate de que se han instalado los paquetes para Python y Apache escribiendo los siguientes comandos en la consola:
``
sudo apt-get update
@@ -13,3 +13,4 @@
12: Componentes y agregados
13: Recetas de implementación
14: Otras recetas
+15: Notas de traducción

0 comments on commit 5e215e2

Please sign in to comment.