En estos dias he tenido la necesidad de instalar una copia de Symfony en un host compartido. Yo ya había instalado dicho software en un par de máquinas pero de forma totalmente libre y standard, cosa que no ocurre en los hosting compartidos donde, normalmente, existe una estructura fija que no responde a las necesidad del framework.
En este caso, mi proyecto Symfony consistía en una estructura “de manual”:
myproject
+—apps
¦ +—backend
¦ ¦ +—config
¦ ¦ +—i18n
¦ ¦ +—lib
¦ ¦ +—modules
¦ ¦ +—templates
¦ +—frontend
¦ +—config
¦ +—i18n
¦ +—lib
¦ +—modules
¦ +—templates
+—batch
+—cache
¦ +—frontend
¦ +—dev
¦ ¦ +—config
¦ ¦ +—i18n
¦ ¦ +—apps
¦ +—prod
¦ +—config
¦ +—i18n
¦ +—apps
+—config
+—data
¦ +—model
¦ +—sql
+—doc
+—lib
¦ +—model
¦ +—map
¦ +—om
+—log
+—plugins
+—test
¦ +—bootstrap
¦ +—functional
¦ ¦ +—backend
¦ ¦ +—frontend
¦ +—unit
+—web
+—css
+—images
+—js
+—uploads
+—assets
+—thumbnail
Al acceder al hosting me encuentro con una estructura donde:
El primer paso fue tomar conciencia de que era imposible instalar mi aplicación de esa forma. Symfony tiene un directorio web al que debe apuntar el virtual host y todo el resto de la aplicación debe estar por detrás de este.
En la empresa de hosting (servergrove) fueron muy gentiles, comprendieron el problema y me habilitaron un directorio por debajo de httpdocs para instalar mi aplicación. De esa forma, solo debería hacer que Symfony entendiera que su directorio web, normalmente dentro del árbol de la aplicación, estaba fuera de este, en httpdocs, algo que era posible por configuración.
Ahora el problema pasaba a ser la instalación de Symfony.
Primero intenté instalarlo a mano, descargando un tarball y poniéndolo en un directorio del host. Luego de muchas pruebas me rendí ya que no logré que eso funcionara.
La instalación normal y recomendada es utilizando PEAR y, dado que el hosting tenía PEAR instalado, imaginé que no vendría mal que hicieran la instalación ellos. Nuevamente la gente de servergrove me solucionó el problema y Symfony quedó instalado de forma standard en un directorio accesible por Apache y en el path.
Ahora ya podía ejecutar comandos de Symfony (por ejemplo limpiar el cache con symfony cc) dentro del directorio de mi aplicación. Y funcionaba !.
El siguiente paso consistía en indicarle a Symfony que el directorio web pasaría a ser httpdocs. Para hacer esto, es necesario ir al archivo index.php de nuestra aplicación y modificar lo siguiente:
define(’SF_ROOT_DIR’, dirname(__FILE__).’/../myproject’);
De forma tal que SF_ROOT_DIR apunte a nuestra aplicación.
Luego, en el archivo config/config.php de nuestra aplicación hay que modificar dos paths:
sfConfig::add(array(
’sf_web_dir’ => SF_ROOT_DIR.DIRECTORY_SEPARATOR.’www’,
’sf_upload_dir’ => SF_ROOT_DIR.DIRECTORY_SEPARATOR.’www’.DIRECTORY_SEPARATOR.sfConfig::get(’sf_upload_dir_name’),
));
De forma tal que quede así:
sfConfig::add(
array(
’sf_web_dir’ => SF_ROOT_DIR.DIRECTORY_SEPARATOR.’..’.DIRECTORY_SEPARATOR.’httpdocs’,
’sf_upload_dir’ => SF_ROOT_DIR.DIRECTORY_SEPARATOR.’..’.DIRECTORY_SEPARATOR.’httpdocs’.DIRECTORY_SEPARATOR.sfConfig::get(’sf_upload_dir_name’),
));
Cabe destacar que el archivo config a modificar es el de cada aplicación (por ej: myproject/apps/frontend/config.php) y no el del proyecto (myproject/config/config.php) porque el objeto sfConfig no esta disponible en el config del proyecto.
La instalación de Symfony tambien requiere establecer un alias en la definición del virtual host para algunos scripts y librerías que utiliza. Dado que esto es imposible en un hosting compartido, una solución sencilla es copiar el directorio sf de PEAR/symfony/ al directorio web de nuestra aplicación, en este caso httpdocs.
Con estos pasos, la aplicación esta lista para funcionar.
Normalmente, los DVD de fútbol son copias de alguna transmición, grabadas en formato DVD pero sin ningún tipo de protección (algo que no ocurre, por ejemplo, con las películas, las cuales deben ser desencriptadas con DVDDecrypt).
Si ese es el caso, hay que copiar el contenido de la carpeta video_ts del DVD, a una carpeta de nuestro disco duro. En este caso yo me hice una carpeta llamada tuto. La copia demora unos minutos, dependiendo de cuan rápida sea nuestra computadora y del tamaño de los archivos a transferir.
Una vez transferidos los archivos deberemos usar DGIndex, para comenzar el ripeo.
Paso 1 - Abrimos DGIndex y nos va a aparecer una ventana como la siguiente:
Vamos al menú File -> open
Y allí seleccionamos todos los archivos que acabamos de copiar.
y nos aparecerá una ventana con los archivos seleccionados
Una vez cargados los archivos, veremos en la pantalla principal la imagen de lo que estamos ripeando. Podemos verificar que la película/partido esta completo, deslizando la barra que aparece en la parte de abajo de la venta de DGIndex.
Cuando estemos seguros de que todo va bien, iremos al menú audio -> output method y verificaremos que este marcada la opción Demux all tracks.
Luego verificaremos que los settings de video esten igual que en la siguiente imagen:
Una vez verificado todo pasaremos a salvar nuestro proyecto como muestra la siguiente imagen:
El proyecto comenzará a guardarse mostrando una ventana similar a esta:
Cuando haya terminado, nos quedarán varios archivos. Por un lado las pistas de audio (.mp3, .mpa, .ac3, .wav) y el archivo de nuestro proyecto para hacer el rip (.d2v), como muestra la imagen de abajo.
Ya hemos terminado con DGIndex. Lo cerramos y ahora procesaremos el audio con BeLight.
Paso 2 - Abrimos BeLight y cargamos el archivo de audio que usaremos para el rip (el generado con DGIndex en los pasos anteriores). En la zona de la derecha veremos que hay varias solapas, elegiremos la última que nos permitirá transformar nuestro audio a wav, como muestra la imagen.
Luego hacemos click en Start Processing y esperamos a que termine (el proceso no suele ser muy largo.
Cerramos BeLight y ahora pasaremos a retocar nuestro video con GordianKnot.
Paso 3 - Abrimos GK y elegimos el archivo de nuestro proyecto d2v (el generado con DGIndex).
Eso nos abrirá una ventana que mostrará al video que pretendemos ripear como se ve en la siguiente figura:
Allí podremos ver que el video tiene areas que no contienen video (bandas negras) las cuales no necesitamos ripear. Lo que intentaremos es cortar esas partes (crop) para quitarlas de nuestro rip y al mismo tiempo adaptar el tamaño del video al corte que estamos haciendo.
Para eso nos iremos a la ventana principal y allí a la solapa llamada Resolution. A la derecha marcaremos Smart Crop All y hacemos click en Auto Crop tal cual muestra la siguiente figura.
Volvemos a la ventana que muestra el video y verificamos, moviendo la barra inferior para recorrer la imagen, que el crop haya sido correcto. Lo mejor en estos casos es buscar areas de video claras para poder apreciar si aún quedan bandas negras.
Si es así, podremos ajustar el corte usando los botones que estan a la derecha en la zona resaltada en la siguiente figura.
Hay cuatro áreas que representan las zonas de arriba, abajo, izquierda y derecha de la imagen. Valores mas altos implican mas corte de imagen; valores bajos, obviamente lo contrario.
Ahora haremos los ajustes finales de acuerdo a la siguiente imagen.
La idea es adaptar la imagen de la mejor forma al nuevo formato que ha adquirido luego de los cortes. Eso lo lograremos moviendo la barra que esta marcada con color rosa. A medida que la vamos moviendo, veremos que los valores de ancho y alto (width y height) de la zona roja van cambiando.
Debemos lograr que el tamaño quede en un formato aceptable (un ancho no menor a 320) con un error de aspecto (marcado en la zona verde) lo mas cercano a 0 y que los bits por pixel/frame no sean menores a 0.2 ni mayores a 0.3.
Cuando tenemos eso listo, hacemos click en la solapa bitrate y nos aseguraremos de que las opciones esten como se destaca en la siguiente imagen:
En la zona donde dice Total File Size, pondremos 700 MB si queremos que el rip entre en un CD. Eso nos dará un número en Average Bit Rate el cual debemos apuntar para usarlo luego.
Con todo listo vamos nuevamente a la ventana del video y hacemos click en File -> Save & Encode y luego verificamos de tener las opciones como se muestran aqui:
Finalmente haremos click en Save y cerraremos GordianKnot.
Ahora tenemos un archivo llamado .avs.
Paso 4 - Abrimos el fichero avs con el Notepad (Bloc de Notas) y veremos algo asi:
Luego de la línea que dice:
mpeg2source(”C:\TUTO\thewall.d2v”)
Debemos agregar estas dos líneas:
audio = WAVSource(”capture.wav”)
AudioDub(video, audio)
De forma tal de que el texto quede así:
Ahora vamos a nuestro explorador de windows y nos fijamos el nombre del archivo de audio (.wav) que hemos generado con BeLight. En mi caso el archivo se llama thewall T01 3_2ch 384Kbps DELAY 0ms.wav. Copiamos el nombre y luego vamos al Notepad y lo pegamos en la línea que dice WavSource y delante de la línea que dice mpeg2source ponemos video = , de forma tal de que quede así:
Ahiora ya podemos iniciar el proceso final con VirtualDub.
Paso 5 - Abrimos VirtualDub y vamos a File -> Open y buscamos el archivo .avs que acabamos de editar.
Su hemos hecho todo bien, se abrirá el video que estamos intentanto procesar en la ventana de VirtualDub.
Ahora debemos configurar Xvid, que es el codec que utilizaremos para comprimir. Usamos Xvid porque es compatible con DivX, es mejor que este y encima es freeware.
Vamos a Video -> Compression
Allí nos aparecerá una lista de codecs y elegiremos Xvid y luego haremos click en el botón configure de la derecha.
Primero nos dedicaremos a configurar VirtualDub, pero debemos recordar que esta paso hay que hacerlo solo una vez.
Tal cual deciamos arriba, al hacer click en el botón Configure se abre una ventana como esta:
Allí elegiremos en Profile Level el Advanced Simple L5 y luego haremos click en el botón More de esa misma línea donde nos aparecerá una nueva ventana que nos debe quedar igual a la siguiente:
Cuando la tenemos lista hacemos click en Ok lo que nos lleva a la ventana anterior.
Allí vamos a la parte inferior, y en Quality preset ponemos User Defined, para luego hacer click en el botón de la derecha More. Eso nos llevará a una ventana como esta:
Debemos dejar todas las opciones tal cual se ve en la imagen de arriba y luego hacer click en la solapa Quantization, lo cual nos llevará a una ventana como la siguiente:
donde nuevamente dejaremos los settings tal cual se ven en la imagen para luego hacer click en el botón Ok.
—————- continuará ——————————–
Jacarezinho, aviao, Jacarezinho, aviao
Cuidado com o disco voador
Tira essa escada daí,
Essa escada é pra ficar aqui fora
Eu vou chamar o síndico
Tim Maia! Tim Maia! Tim Maia! Tim Maia!
O trem corre no trilho da Central do Brasil
O trem corre no trilho da Central do Brasil
Incluindo “Paixao Antiga” e aquele beijo quente
Que eu ganhei da sua amiga
E o que que deu? Funk na cabeça.
e o que que deu? Funk na cabeça
Alo, alo, W/Brasil, alo, alo, W/Brasil
Jacarezinho, aviao, Jacarezinho, aviao
Cuidado com o disco voador
Tira essa escada daí,
Essa escada é pra ficar aqui fora
Eu vou chamar o síndico
Tim Maia! Tim Maia! Tim Maia! Tim Maia!
E o que que deu? Funk na cabeça
E o que que deu? Funk na cabeça
Deu no New York Times
Fernando, o belo, nao sabe se vai participar
Do próximo campeonato de surf ferroviário
Surfista de trem, surfista de trem
Deu no New York Times
A feira de Acari é um sucesso,
Tem de tudo, é um mistério
Deu no New York Times
Dizem que Cabral 1 descobriu a filial
Dizem que Cabral 2 tentou e se deu mal
Amor, dor, dor,
Lá da rampa mandaram avisar
Que todo dinheiro será devolvido
Quando setembro chegar
Num envelope azul índigo
Num envelope azul índigo
Chama o síndico!
Tim Maia! Tim Maia! Tim Maia! Tim Maia!
Alo, alo, W/Brasil, alo, alo, W/Brasil
Da central passando pela Mangueira
Dando uma volta na Pavuna e chegando em Madureira,
E lá que o samba rola de primeira.
E lá que o samba rola de primeira.
Alo, alo, tia Lea
Se tiver ventando muito nao venha de helicóptero
Alo, alo tia Lea
Se tiver ventando muito nao venha de helicóptero
Alo, alo, W/Brasil, alo, alo W/Brasil
Alo telefonista, me desperte i s 7h15,
Por favor Rádio Táxi 9h30 se nao o bicho pega,
Eu também quero graves, médios e agudos!
Eu vou chamar
Jacarezinho, aviao, Jacarezinho, aviao
Cuidado com o disco voador
Tira essa escada daí,
Essa escada é pra ficar aqui fora
Jorge Ben
| M | T | W | T | F | S | S |
|---|---|---|---|---|---|---|
| « Dec | ||||||
| 1 | 2 | 3 | 4 | 5 | 6 | |
| 7 | 8 | 9 | 10 | 11 | 12 | 13 |
| 14 | 15 | 16 | 17 | 18 | 19 | 20 |
| 21 | 22 | 23 | 24 | 25 | 26 | 27 |
| 28 | 29 | 30 | 31 | |||