¿Qué son el cloud computing y google app engine?:
¿QUÉ SON EL CLOUD COMPUTING Y GOOGLE APP ENGINE?
1 Introducción
Sin duda alguna, y lo que es peor, sin avisar, un nuevo término ha llegado para pasar a formar parte de nuestro ya de por sí extenso vocabulario tecnológico. Un concepto nuevo, o quizá no tanto, que se ha colado en multitud de sitios y que se ha propagado por la red, por los portales de tecnología, por la prensa escrita e, incluso, por la lista de tutoriales de adictosaltrabajo. Me refiero al cloud computing.
Pero, ¿qué es el cloud computing?, ¿a qué nos referimos con eso de “la nube”?, ¿por qué tantas voces predicen que es “el futuro”?, ¿es simplemente una técnica comercial o realmente hay algo “detrás”?. El presente tutorial trata de responder a todas estas preguntas centrándose en una nube muy de moda, el Google App Engine
Pero antes de explicar qué es el Google App Engine y para qué sirve es necesario dar un repaso teórico al concepto de cloud computing, la computación en la nube o “la nube” a secas y, de este modo, saber qué es, de dónde viene y dónde va.
2 ¿Qué es el cloud computing?
Hay tantas definiciones de la nube como autores han tratado de definirla, y es que parte del problema de comprender qué es el cloud computing es, precisamente, que no posee una definición concreta. En este tutorial no nos inventaremos una enésima definición del concepto y utilizaremos la de la wikipedia como referencia:
“La computación en nube, del inglés cloud computing, es un paradigma que permite ofrecer servicios de computación a través de Internet. La nube es una metáfora de Internet.”
Esta definición, como podréis ver, es tan amplia que prácticamente cabe cualquier cosa. Si yo en el trabajo conecto a través de Internet con el ordenador de mi casa para ver cómo van mis descargas, ¿estaría siguiendo el paradigma de la computación en la nube?, me temo que no
¿Pero porqué no, si estoy accediendo a un servicio a través de internet? La nube se apoya en tecnologías que llevan varias décadas funcionando que seguramente no tengas en tu casa y que no son para nada nuevas. De hecho el cloud computing es, en realidad, una remodelación del concepto de grid computing.
2.1 Grid computing
Citando de nuevo a la wikipedia:
“La computación grid es una tecnología innovadora que permite utilizar de forma coordinada todo tipo de recursos (entre ellos cómputo, almacenamiento y aplicaciones específicas) que no están sujetos a un control centralizado. En este sentido es una nueva forma de computación distribuida, en la cual los recursos pueden ser heterogéneos (diferentes arquitecturas, supercomputadores, clusters…) y se encuentran conectados mediante redes de área extensa (por ejemplo Internet)”
Nosotros, ingenuos usuarios, hacemos peticiones pensando que lo que habrá “al otro lado” será un ordenador que se dedicará a atendernos a nosotros, cuando en realidad nuestra petición es dividida en varias tareas que serán atendidas por varias máquinas dentro de una red donde puede haber cientos o miles de ordenadores.
Las diferencias entre este enfoque y el clásico modelo cliente-servidor son varias. En un modelo cliente-servidor clásico hay uno o varios clientes que conectan con un único servidor de gran capacidad. Gracias a la computación en grid lo que ponemos en el lado del servidor no es un único ordenador con mucha capacidad sino una red de ordenadores con varios cientos o miles de máquinas de menor capacidad. Esta infraestructura tiene una serie de ventajas entre las cuales destacamos:
-
Posibilita el funcionamiento de aplicaciones a gran escala. De hecho para aumentar la capacidad tan sólo deberíamos añadir nuevos ordenadores a la red.
-
Facilita el acceso a recursos distribuidos desde nuestros ordenadores.
-
Consiguen una mayor disponibilidad, ya que en caso de fallar una máquina del grid el resto de ellas siguen funcionando y dando servicio.
Pero no todas las máquinas de la red se dedican a los mismos usos. Hay máquinas especializadas en la realización de cálculos, máquinas que contienen los datos de las bases de datos, máquinas donde se albergan ficheros, etc.
Pero, ¿qué tiene que ver todo esto con el cloud computing? Muy sencillo, que todas todas todas las aplicaciones que se encuentran en “la nube” están funcionando sobre una arquitectura basada en grid.
Entonces, ¿qué diferencia hay entre cloud computing y grid computing?. Una vez hemos visto qué es el grid, vamos a ver las distintas capas de la nube para encontrar nosotros mismos las semejanzas y las diferencias entre ambos tipos.
2.2 Capas del Cloud Computing
Aunque otros autores suelen utilizar un número de capas menor, nosotros vamos a utilizar el modelo de cinco capas. Las vamos a colocar en forma de pirámide para recalcar el hecho de que las capas inferiores poseen mayor número de elementos que las superiores.
Como ya comenté en la introducción de este tutorial nos vamos centrar en el Google App Engine así que explicaremos cada una de las capas utilizando esta nube como ejemplo. Sin embargo tenemos que tener en mente que hay otros tipos de nubes cuyas capas pueden tener usos o funcionalidades diferentes.
Dicho esto, comencemos a explicar las capas.
2.2.1 Hardware
A la vista de la pirámide podréis ver que está en la parte inferior y que es la más grande de todas. Como su nombre indica en esta capa se encuentran todos los dispositivos físicos que hacen funcionar a la nube: pasillos y pasillos con miles y miles de ordenadores unos apilados encima de otros:
En el caso que nos ocupa todo este hardware se encuentra en los datacenters de Google. Os recomiendo ver este vídeo para que os hagáis una idea de lo que es uno sólo de los muchos datacenters que Google tiene alrededor del mundo:
http://www.youtube.com/watch?v=zRwPSFpLX8I
Esta es la parte física del grid. Algunos de los ordenadores estarán destinados a almacenar datos, otros a procesar información, otros a almacenar archivos, etc. Todas nuestras búsquedas, nuestros correos de gmail, nuestros calendarios y últimamente hasta nuestros documentos se encuentran en esos ordenadores.
Todos ellos son fácilmente reemplazables y si queremos ampliar la capacidad tan sólo deberemos añadir más ordenadores o construir otro nuevo datacenter.
2.2.2 Virtualización
Como en todos los ordenadores y en todo tipo de dispositivos en general nos encontramos con que justo encima de la capa hardware se encuentra la del sistema operativo.
Otras nubes lo que hacen es instalar un sistema operativo muy reducido sobre el hardware y sobre ese sistema operativo reducido instalar máquinas virtuales con VMWare, VirtualBox, etc. Todo esto, como es natural, conlleva una pérdida de rendimiento.
Google no hace eso. Google utiliza sistemas operativos linux modificados con un sistema de ficheros propio: GFS (Google File System).
http://labs.google.com/papers/gfs.html
Con ello no sólo no pierde rendimiento sino que además va más allá de lo que un sistema de ficheros tradicional permite llegar, y es que el sistema de ficheros de Google:
-
Es un sistema de ficheros distribuido en el que participan cientos o miles de ordenadores.
-
Se diseñó pensando que los fallos en el hardware no son la excepción sino la norma.
-
Generalmente maneja ficheros con tamaños de varios gigas que pueden llegar a los terabytes.
-
Al escribir datos en disco lo normal no es modificar los que ya existen sino crear datos nuevos.
-
Los ficheros, una vez escritos, sólo se leen y por lo general de manera secuencial.
Como veis en ningún momento se menciona para nada la palabra “borrar”
. Es un sistema de ficheros en el que sólo guardas, guardas y guardas, y además ficheros de tamaños enormes que se encuentran distribuidos en varios ordenadores, que luego se leen prácticamente de un tirón con lo que ahorras al disco el trabajo y el tiempo de tener que buscar sectores en concreto.
De este modo GFS consigue un objetivo claro: una capacidad de almacenamiento ilimitada.
2.2.3 IAAS (Infraestructure as a service)
Bueno, de momento tenemos una red enorme de ordenadores organizados en datacenters que tienen un sistema operativo reducido y un sistema de ficheros hecho a medida. El siguiente paso es especializar a los ordenadores que se encuentren en esa red, de tal modo que algunos de ellos se encarguen de almacenar ficheros, otros de guardar bases de datos, etc, y de esta manera continuar construyendo nuestra nube basada en una estructura grid.
Si Google quiere destinar un conjunto de ordenadores al almacenamiento de ficheros lo tiene fácil, tiene máquinas y un sistema de ficheros propio muy adaptado a sus necesidades.
Pero, ¿y si quiere dedicar máquinas a almacenar datos como si de una base de datos se tratara? Si por algo es famoso Google es por sus búsquedas, así que “algo” tendrá donde poder almacenar información, ¿verdad?
Al igual que tiene su propio sistema de ficheros, también tiene su propio sistema de almacenamiento de información. Este sistema NO ES UNA BASE DE DATOS y se le conoce con el nombre de Bigtable
http://labs.google.com/papers/bigtable.html
Bigtable es un sistema de almacenamiento de datos distribuido diseñado para almacenar cantidades de datos del tamaño de ¡petabytes! en miles de ordenadores. No sigue un modelo relacional, aunque los datos se encuentran estructurados, y todas las relaciones entre elementos se encuentran desnormalizadas.
En Bigtable, como en GFS, no se borra nada, y además las actualizaciones suponen crear nuevos registros, nunca actualizar los ya existentes. Pensad que los datos están desnormalizados: cada vez que se actualiza algo se pueden estar escribiendo muchísimos datos nuevos.
De este modo la estructura de Bigtable consigue un objetivo claro: un tiempo de respuesta mínimo.
|
Una vez hemos llegado a este punto hemos cubierto todos los apartados presentes en una arquitectura basada en grid, que “casualmente” son las tres primeras capas de la computación en la nube.
Tenemos alta disponibilidad, recursos ilimitados y una capacidad de almacenamiento infinita. Una vez tenemos la infraestructura aparecen los elementos propios de la nube.
|
2.3 PAAS (Plataform as a Service)
Una vez hemos llegado hasta aquí, ¿qué hacemos con los recursos de los que disponemos?, ¿cómo podemos utilizarlos?, ¿qué podemos hacer para explotarlos?
En este nivel aparece una capa que te da acceso a la plataforma que hay por debajo pero ocultándote los detalles. De este modo desarrollaremos aplicaciones utilizando una capa que usará unos recursos hardware a los que nosotros nunca podremos acceder. El almacenamiento infinito, los recursos ilimitados, la alta disponibilidad, etc ya están garantizadas gracias al grid, lo que nos encontraremos ahora serán facilidades y recursos que nos permitirán utilizarlas.
En este sentido PAAS (plataforma como servicio) actúa como una especie de API. Tus aplicaciones estarán programadas para funcionar bajo un determinado marco que te permitirá hacer cosas con esa increíble infraestructura que hay por debajo, pero no podrás hacer cualquier cosa, tan sólo podrás hacer las cosas que te estén permitidas hacer.
Y es aquí donde entra en juego el Google App Engine:
Si usas Google App Engine:
-
Tus aplicaciones se ejecutarán en los ordenadores de los datacenters de Google.
-
Tus ficheros se almacenarán usando GFS.
-
Tus datos se guardarán en bigtable.
Y además sin tener que preocuparte de nada, tan sólo de programar una aplicación que siga las reglas que exige Google App Engine.
Esto que acabamos de comentar sirve únicamente para poder ubicar a Google App Engine en su sitio y para saber qué es realmente. Más adelante hablaremos de nuevo de Google App Engine y generaremos más tutoriales a los que podréis acceder, como de costumbre, en adictosaltrabajo.com
2.4 SAAS (Software as a service)
Y con esta capa llegamos a la parte superior de la pirámide. Tenemos una infraestructura y una serie de facilidades a nuestro alcance con un único objetivo: el de poder crear aplicaciones que puedan ser utilizadas por nuestros usuarios finales o nuestros clientes. Y es que si no tenemos ni usuarios ni clientes que utilicen las aplicaciones no hay razón por la cual crear la nube.
Para entender mejor qué es el SAAS (software como servicio) vamos a intentar describir la situación actual de las aplicaciones que se utilizan en muchas empresas.
Cuando una empresa contrata un desarrollo a medida éste suele permanecer en un servidor que se encuentra físicamente dentro del propio edificio de la organización. Se contrata el desarrollo, éste se va haciendo, y cada cierto tiempo algunas personas van a las instalaciones del cliente a instalar una nueva versión del software en su servidor.
Para ello el cliente tiene en sus instalaciones un servidor dedicado a albergar la aplicación y, ocasionalmente, un segundo servidor en el que poder mantener la base de datos con la información. También necesita tener a alguien responsable de gestionar sus sistemas, aunque su modelo de negocio no tenga nada que ver con la informática.
Este responsable de sistemas tendrá que encargarse de realizar las copias de seguridad, de que los equipos funcionen correctamente, de tener repuestos por si alguno de los sistemas fallase, etc.
Suele ocurrir, además, que este tipo de aplicaciones son utilizadas por empleados que posiblemente no se encuentren en el mismo edificio en el que esté el servidor de la aplicación, con lo que hay que mantener una conexión a Internet que funcione constantemente, hay que disponer de un ancho de banda adecuado, hay que tener una serie de medidas de seguridad, etc.
Y si la aplicación se hace más grande, la base de datos crece mucho, o se empiezan a almacenar muchos ficheros de gran tamaño posiblemente el servidor en el que está funcionando la aplicación tenga que ser sustituido por otro.
El otro enfoque es el de SAAS, que aprovecha las ventajas de la nube para eliminar todos estos problemas. Dicho enfoque apuesta por hacer que tú como cliente no tengas que tener sistemas dedicados a tener funcionando tu aplicación, sido que te facilitan los medios necesarios en los que poder hacer funcionar tu software.
De este modo el propio equipo encargado de crear la aplicación puede ir actualizando el software sin tener que desplazarse al edificio del cliente, y es el personal de la nube quien se encarga de realizar las copias de seguridad, de poner los medios para que no te quedes sin espacio en disco, de poner las máquinas necesarias para que no tengas que cambiar de servidor, etc. Aparte no te tienes que preocupar de tener una conexión a internet que funcione constantemente con un ancho de banda grande.
El SAAS para los clientes supone despreocuparse de las infraestructuras necesarias para hacer que la aplicación funcione y de los problemas técnicos que éstas puedan acarrear y, para la empresa desarrolladora de software, supone disponer de un entorno conocido y accesible con el que es más fácil poder publicar nuevas versiones del software y detectar posibles errores.
3 Google App Engine
Como hemos visto, Google App Engine es una plataforma que nos permite acceder a los recursos de Google con el objetivo de crear aplicaciones que funcionen en la nube. Se sitúa por tanto en la capa PAAS de la pirámide.
http://code.google.com/intl/es-ES/appengine/
Dichas aplicaciones, por naturaleza, funcionarán siguiendo el paradigma del SAAS (Software como servicio) y dispondrán de una disponibilidad asegurada en unos recursos prácticamente infinitos.
http://code.google.com/intl/es/appengine/docs/whatisgoogleappengine.html
El tener nuestra aplicación en la nube, como clientes, nos supondrá despreocuparnos por la infraestructura que hace que funcione nuestra aplicación pero, también como clientes, hará que nos planteemos algunas dudas, como por ejemplo ¿qué costo tiene todo esto?, ¿puedo usarlo gratis?, ¿qué tamaño pueden tener mis aplicaciones antes de empezar a pagar?
La última de las preguntas tiene su respuesta en este enlaces:
http://code.google.com/intl/es-ES/appengine/docs/quotas.html
Como podéis ver el máximo gratuito es muy muy alto:
-
1.300.000 solicitudes diarias o 7.400 por minuto.
-
10 GB de subida y de bajada de datos diaria o 56 MB por minuto.
-
1 GB de almacenamiento en el almacén de datos (el datastore).
-
10.000.000 llamadas al almacén de datos diarias o 57.000 por minuto.
-
7.000 llamadas al API de correo diarios o 32 llamadas por minuto.
-
2.000 destinatarios de correo electrónico diarios u 8 por minuto.
-
…
Aparte, las aplicaciones desarrolladas con Java se encuentran con los siguientes límites:
http://code.google.com/intl/es-ES/appengine/docs/java/runtime.html#Quotas_and_Limits
-
Solicitudes máximas de 10 MB.
-
Respuestas máximas de 10 MB.
-
1000 archivos de aplicación como máximo.
-
1000 archivos estáticos como máximo.
-
10 MB como tamaño máximo de un archivo de aplicación.
-
10 MB como tamaño máximo de un archivo estático.
-
La aplicación completa debe ocupar, como mucho, 150 MB.
En caso de ser necesarios más recursos estos se pueden contratar y así aumentar los límites, de hecho las tarifas tienen unos precios económicos.
http://code.google.com/intl/es-ES/appengine/docs/billing.html
Como desarrolladores dispondremos de una plataforma muy potente cuyo hardware no será accesible. En dicha plataforma existen una serie de facilidades que nos permitirán poder crear aplicaciones eliminándonos muchos problemas y facilitándonos muchos servicios pero, a su vez, limitándonos en otros aspectos.
Los lenguajes con los que podremos crear aplicaciones para el Google App Engine son Python y Java y los servicios a los que podremos acceder desde el Google App Engine son los siguientes:
-
Almacén de datos (el datastore), donde podremos almacenar toda la información que nuestra aplicación necesite para funcionar.
-
Despliegues, con lo que podremos poner a nuestra aplicación en funcionamiento.
-
Cuentas de Google, que facilitará la autenticación de usuarios.
-
Extracción de URL, que permite acceder a recursos de internet.
-
Correo, ya que las aplicaciones podrán enviar correos electrónicos.
-
Manipulación de imágenes, para poder rotarlas, recortarlas, ajustar su tamaño, etc.
-
Memcache, que permite un acceso muy rápido a datos que no se encuentren en el almacén de datos.
-
Programación de tareas, servicios que se vayan a a ejecutar a intervalos regulares.
http://code.google.com/intl/es/appengine/docs/whatisgoogleappengine.html
No nos tendremos que preocupar del mantenimiento de estos servicios, únicamente de usarlos. Aparte Google facilita un kit de desarrollo con el que facilitarnos el desarrollar para su plataforma.
http://code.google.com/intl/es/appengine/downloads.html
Sin embargo la propia plataforma define sus límites, los cuales al programar con Java son los siguientes:
http://code.google.com/intl/es-ES/appengine/docs/java/runtime.html
-
Las aplicaciones se deben basar únicamente en un principio de petición-respuesta.
-
El tiempo máximo para procesar peticiones es de 30 segundos. Las operaciones que superen ese máximo no terminarán.
-
No se pueden utilizar ni hilos ni grupos de hilos en las aplicaciones, al igual que tampoco se pueden crear temporizadores.
-
La aplicación no puede crear nuevos ficheros dentro de su propio ámbito de aplicación.
-
Hay métodos de la clase java.lang.System que no hacen nada y cuya invocación es inútil.
-
Se puede utilizar la reflexión en nuestras propias clases sin ninguna limitación, pudiendo mediante este mecanismo incluso cambiar los modificadores de acceso y ejecutar métodos privados. Sin embargo esto último no puede hacerse en las clases del JRE y del API. Puedes utilizar la reflexión contra esas clases pero no cambiar sus modificadores de acceso, con lo que no podrás ejecutar sus métodos privados.
Todo esto es debido a que Google utiliza su propia versión de la JVM, la cual es compatible con Java 6 pero posee algunas restricciones.
En la siguiente dirección tenéis un enlace a una pequeña aplicación creada con el Google App Engine:
http://adictosaltrabajo.com/tutoriales/tutoriales.php?pagina=Tutorial-basico-google-application-engine
4 Conclusiones
Una vez el CEO de Sun, Jonathan Schwartz, comparó la evolución del suministro eléctrico con la evolución del suministro computacional. Hace mucho tiempo cada fábrica disponía de generadores de electricidad propios con los que poder abastecer sus necesidades industriales. Dichos generadores tenían que estar encendidos todo el día, poseían una capacidad máxima que no podían sobrepasar y ante cualquier avería la fábrica dejaba de funcionar.
Con el tiempo las centrales eléctricas llegaron a las industrias y muchas fábricas abandonaron los generadores para añadirse a la red eléctrica. Gracias a ella ya no tenían que encargarse del funcionamiento y mantenimiento de los generadores y podían demandar más energía si la necesitaban.
La computación posiblemente todavía se encuentre en esa primera fase en la cual las empresas poseen servidores con los cuales poder controlar su negocio. Esto supone tener personal dedicado a mantenerlo, estar limitados a lo que el hardware permita y tener que asegurarse de que desde fuera nuestros empleados pueden utilizar el software.
La nube vendría a ser lo que es ahora mismo la central eléctrica. Hay una parte que es muy importante para mi negocio que tengo fuera, que puedo utilizar sin preocuparme por la disponibilidad, que puedo ampliar fácilmente en caso de necesitarlo y que no necesito mantener.
En este sentido, ¿es la nube el futuro de la computación?. La tendencia actual parece indicar que sí, ya que lo más sensato es no distraer nuestro negocio por cuestiones tecnológicas y centrarnos en lo que tenemos que hacer, dejando a otros la responsabilidad de velar por nuestras aplicaciones y nuestra información. Actualmente hay medios y oferta para conseguir que esto sea así, así que, ¿por qué no intentarlo?, ¿vamos a tener generadores en nuestras fábricas toda la vida?
5 Referencias
http://www.siliconewhisperer.com/index.php/2009/11/24/understanding-the-layers-within-cloud-computing/
http://www.siliconewhisperer.com/index.php/2009/05/13/what-type-of-cloud-is-right-for-your-business/
http://google.dirson.com/post/3944-google-app-engine/
http://es.debugmodeon.com/articulo/introduccion-a-google-app-engine
http://www.error500.net/articulo/que-es-cloud-computing
http://www.error500.net/desarrollo/plataforma-como-servicio-paas-cloud-computing
http://www.error500.net/software/infraestructura-como-servicio-iaas-cloud-computing
Anímate y coméntanos lo que pienses sobre este TUTORIAL:
Puedes opinar o comentar cualquier sugerencia que quieras comunicarnos sobre este tutorial; con tu ayuda, podemos ofrecerte un mejor servicio.
[...] Codeman38 has created Python version that works on Macs and I assume Linux. Posted in code, powershell | Tags: close, dfxp, Instant [...]
Pingback by Netflix subtitles | Josh Erickson — 29-Jul-2010 @ 12:44 pm
[...] reading Codeman38‘s blog edit I figured I can’t leave my Windows brethren behind in the dust when it [...]
Pingback by Srt2DFXP v0.2 and a GUI! | Josh Erickson — 29-Jul-2010 @ 11:22 pm
Thank you for your help. I went to Josh’s site and could follow his guide. Much grateful.
Comment by Osvaldo — 24-Aug-2010 @ 12:44 am
@Osvaldo: Glad I could help! This is a feature that seriously needs to be publicized more, since Netflix and/or the studios can’t be bothered to provide their own subtitle files when the feature exists…
Comment by codeman38 — 24-Aug-2010 @ 12:46 am
This is awesome. I’m on a Mac platform so I downloaded the Python script in the comments above & it looks like I’m able to convert the SRT to DFXP, but when I try to load it in the player menu, I get “Custom: Not Supported”. I got the SRT from opensubtitles.org. Just hoping to get some troubleshooting steps…
Comment by Chris — 29-Aug-2010 @ 11:23 am
@Chris: There’s probably a formatting error in the subtitle, like an italics tag that’s opened or closed twice. I’ve had this issue with a few subs from SubScene.
Comment by codeman38 — 29-Aug-2010 @ 11:25 am
@codeman38 You’re right. I played around with it some more and realized I could get it to work. Depends on the subtitle I downloaded. Do you prefer any particular subtitle site over another? I also thought it’d be nice to wrap this script into a GUI via Xcode or maybe even a Safari Extension if Safari Extensions support it.
Comment by Chris — 06-Sep-2010 @ 1:18 pm
@Chris: No preference on subtitle sites; I’ve used SubScene, OpenSubtitles and TVSubtitles depending on the movie/show.
I’ve actually been considering writing a GUI wrapper for it myself, when I actually have some time to do that – though you’re welcome to contribute anything; I should set up a GitHub site or something. Don’t know if a Safari extension would be so easy, at least if you’re wanting to convert subtitles directly from downloads; most of the sites I’ve seen zip their subtitle files before transferring them, and I’m not entirely sure Safari extensions can handle that.
Comment by codeman38 — 06-Sep-2010 @ 1:22 pm
@codeman38 I’d definitely be interested in helping make a GUI, only problem is I’ve never done it before.
This would be as good a motivation as any to learn though. Such as, at first the plan would be to get a GUI working & then maybe later add the ability to search for & download the subtitles, by searching the main subtitle sites.
One of the major issues I’m having is getting the timing right. Seems to take me quite a few times. That’s why I wonder if any one subtitle is better than another.
Comment by Chris — 06-Sep-2010 @ 1:41 pm
@Chris: Yeah, my GUI experience is mainly in Linux (GTK) and Windows (WinForms). I’ve toyed around with designing GUIs in Interface Builder a bit, but I still need to learn how to interface that with Python.
As for timing, my experience has been that the timing is pretty much the same on all the sites. Typically the issue is that Netflix gets a different print from the studios for streaming than what’s used on the DVD.
Comment by codeman38 — 06-Sep-2010 @ 4:33 pm
Would it be possible for you to post a few screenshots of what it should look like before and after you run the command? I’m not very tech-savvy and I’m having trouble figuring out what I’m supposed to type to get the program to work. I’m typing in what’s shown on this page but with a different file name and it’s just not working! Also, where is the .srt supposed to be saved to so that the program can find it?
Comment by shelly — 23-Sep-2010 @ 10:28 am
@shelly: If you’re not familiar with the Terminal, the best idea is to put both the .srt and the Python script in your home directory. Then it should work pretty much as described. If that doesn’t work, try “python srt2dfxp.py” instead of “./srt2dfxp.py”.
I really need to write a GUI version, but I’m far too busy with other stuff to really be able to concentrate on it– the shell-script version used enough of my time.
Comment by codeman38 — 23-Sep-2010 @ 10:30 am
[...] which means Windows only, but a talented Python developer also found the same blog ahead of me and ported the script to python for us Mac OS or Linux users. Also worth noting that Josh has developed a GUI for the script that [...]
Pingback by Netflix Subtitles « Hearn’s Blog — 27-Sep-2010 @ 6:30 pm
I think I might be able to save some you some time on the GUI project. There’s an easy way to convert the .srt files to .dfxp. (I was trying to fix the “Custom: Not Supported” problem and stumbled across it)
1. Download Jubler from http://www.jubler.org/
2. Open the subtitle file you wish to convert in Jubler
3. Save the file in a W3C Timed Text format with UTF-8 encoding
4. Change the extension of your newly created file to .dfxp
Comment by David — 30-Sep-2010 @ 5:14 pm
@David: Ooh, good catch! I’ve even used Jubler, and never noticed that its DFXPs were Netflix-compatible.
Comment by codeman38 — 30-Sep-2010 @ 10:48 pm
@David — Nice catch! It doesn’t seem to be working on my Mac at the moment.. When I convert the file and rename it, Netflix doesn’t recognize the file. Could this be a mac thing?
Comment by DaFyre — 14-Nov-2010 @ 1:22 am
@DaFyre: Make sure that you’re saving it with UTF-8 encoding.
Comment by codeman38 — 14-Nov-2010 @ 1:31 am
[...] which means Windows only, but a talented Python developer also found the same blog ahead of me and ported the script to python for us Mac OS or Linux users. Also worth noting that Josh has developed a GUI for the script that [...]
Pingback by Netflix Subtitles | churnd — 18-Nov-2010 @ 7:42 pm