martes, octubre 04, 2011
comic creado en HTML5
comic creado en HTML5
martes, septiembre 20, 2011
Symfony 2 liberado
Más de 250 desarrolladores han contribuido de una manera o de otra en esta nueva versión final en una muestra del buen estado de la comunidad que rodea a Symfony.
Symfony es un framework PHP diseñado para optimizar el desarrollo de aplicaciones web y que entre sus principales características destaca su escalabilidad, seguridad, rendimiento y soporte extendido (3 años con una continua corrección de errores).
Interesados en conocer las principalesdiferencias que separan a Symfony1 de Symfony 2 pueden acceder asymfony.com.
Symfony es unicamente compatible con PHP 5, funciona con todas las bases de datos comunes (MySQL, PostgreSQL, SQLite, Oracle, MS SQL Server) y no presenta una excesiva complejidad en la instalación y configuración en sistemas Windows, Mac y Linux.
Aquellos que lo deseen pueden acceder a más información ydescarga de Symfony 2.
How Symfony2 differs from symfony1
The Symfony2 framework embodies a significant evolution when compared with the first version of the framework. Fortunately, with the MVC architecture at its core, the skills used to master a symfony1 project continue to be very relevant when developing in Symfony2. Sure, app.yml is gone, but routing, controllers and templates all remain.
In this chapter, we'll walk through the differences between symfony1 and Symfony2. As you'll see, many tasks are tackled in a slightly different way. You'll come to appreciate these minor differences as they promote stable, predictable, testable and decoupled code in your Symfony2 applications.
So, sit back and relax as we take you from "then" to "now".
Directory Structure¶
When looking at a Symfony2 project - for example, the Symfony2 Standard - you'll notice a very different directory structure than in symfony1. The differences, however, are somewhat superficial.
The app/ Directory¶
In symfony1, your project has one or more applications, and each lives inside the apps/directory (e.g. apps/frontend). By default in Symfony2, you have just one application represented by the app/ directory. Like in symfony1, the app/ directory contains configuration specific to that application. It also contains application-specific cache, log and template directories as well as a Kernel class (AppKernel), which is the base object that represents the application.
Unlike symfony1, almost no PHP code lives in the app/ directory. This directory is not meant to house modules or library files as it did in symfony1. Instead, it's simply the home of configuration and other resources (templates, translation files).
The src/ Directory¶
Put simply, your actual code goes here. In Symfony2, all actual application-code lives inside a bundle (roughly equivalent to a symfony1 plugin) and, by default, each bundle lives inside the src directory. In that way, the src directory is a bit like the plugins directory in symfony1, but much more flexible. Additionally, while your bundles will live in the src/directory, third-party bundles may live in the vendor/bundles/ directory.
To get a better picture of the src/ directory, let's first think of a symfony1 application. First, part of your code likely lives inside one or more applications. Most commonly these include modules, but could also include any other PHP classes you put in your application. You may have also created a schema.yml file in the config directory of your project and built several model files. Finally, to help with some common functionality, you're using several third-party plugins that live in the plugins/ directory. In other words, the code that drives your application lives in many different places.
In Symfony2, life is much simpler because all Symfony2 code must live in a bundle. In our pretend symfony1 project, all the code could be moved into one or more plugins (which is a very good practice, in fact). Assuming that all modules, PHP classes, schema, routing configuration, etc were moved into a plugin, the symfony1 plugins/ directory would be very similar to the Symfony2 src/ directory.
Put simply again, the src/ directory is where your code, assets, templates and most anything else specific to your project will live.
The vendor/ Directory¶
The vendor/ directory is basically equivalent to the lib/vendor/ directory in symfony1, which was the conventional directory for all vendor libraries and bundles. By default, you'll find the Symfony2 library files in this directory, along with several other dependent libraries such as Doctrine2, Twig and Swiftmailer. 3rd party Symfony2 bundles usually live in thevendor/bundles/.
The web/ Directory¶
Not much has changed in the web/ directory. The most noticeable difference is the absence of the css/, js/ and images/ directories. This is intentional. Like with your PHP code, all assets should also live inside a bundle. With the help of a console command, theResources/public/ directory of each bundle is copied or symbolically-linked to theweb/bundles/ directory. This allows you to keep assets organized inside your bundle, but still make them available to the public. To make sure that all bundles are available, run the following command:
php app/console assets:install web
This command is the Symfony2 equivalent to the symfony1plugin:publish-assets command.
Autoloading¶
One of the advantages of modern frameworks is never needing to worry about requiring files. By making use of an autoloader, you can refer to any class in your project and trust that it's available. Autoloading has changed in Symfony2 to be more universal, faster, and independent of needing to clear your cache.
In symfony1, autoloading was done by searching the entire project for the presence of PHP class files and caching this information in a giant array. That array told symfony1 exactly which file contained each class. In the production environment, this caused you to need to clear the cache when classes were added or moved.
In Symfony2, a new class - UniversalClassLoader - handles this process. The idea behind the autoloader is simple: the name of your class (including the namespace) must match up with the path to the file containing that class. Take the FrameworkExtraBundlefrom the Symfony2 Standard Edition as an example:
namespace Sensio\Bundle\FrameworkExtraBundle; use Symfony\Component\HttpKernel\Bundle\Bundle; // ... class SensioFrameworkExtraBundle extends Bundle { // ...
The file itself lives atvendor/bundle/Sensio/Bundle/FrameworkExtraBundle/SensioFrameworkExtraBundle.php. As you can see, the location of the file follows the namespace of the class. Specifically, the namespace, Sensio\Bundle\FrameworkExtraBundle, spells out the directory that the file should live in (vendor/bundle/Sensio/Bundle/FrameworkExtraBundle). This is because, in the app/autoload.php file, you'll configure Symfony to look for the Sensionamespace in the vendor/bundle directory:
// app/autoload.php // ... $loader->registerNamespaces(array( // ... 'Sensio' => __DIR__.'/../vendor/bundles', ));
If the file did not live at this exact location, you'd receive a Class"Sensio\Bundle\FrameworkExtraBundle\SensioFrameworkExtraBundle" doesnot exist. error. In Symfony2, a "class does not exist" means that the suspect class namespace and physical location do not match. Basically, Symfony2 is looking in one exact location for that class, but that location doesn't exist (or contains a different class). In order for a class to be autoloaded, you never need to clear your cache in Symfony2.
As mentioned before, for the autoloader to work, it needs to know that the Sensionamespace lives in the vendor/bundles directory and that, for example, the Doctrinenamespace lives in the vendor/doctrine/lib/ directory. This mapping is entirely controlled by you via the app/autoload.php file.
If you look at the HelloController from the Symfony2 Standard Edition you can see that it lives in the Acme\DemoBundle\Controller namespace. Yet, the Acme namespace is not defined in the app/autoload.php. By default you do not need to explicitly configure the location of bundles that live in the src/ directory. The UniversalClassLoader is configured to fallback to the src/ directory using its registerNamespaceFallbacksmethod:
// app/autoload.php // ... $loader->registerNamespaceFallbacks(array( __DIR__.'/../src', ));
Using the Console¶
In symfony1, the console is in the root directory of your project and is called symfony:
php symfony
In Symfony2, the console is now in the app sub-directory and is called console:
php app/console
Applications¶
In a symfony1 project, it is common to have several applications: one for the frontend and one for the backend for instance.
In a Symfony2 project, you only need to create one application (a blog application, an intranet application, ...). Most of the time, if you want to create a second application, you might instead create another project and share some bundles between them.
And if you need to separate the frontend and the backend features of some bundles, you can create sub-namespaces for controllers, sub-directories for templates, different semantic configurations, separate routing configurations, and so on.
Of course, there's nothing wrong with having multiple applications in your project, that's entirely up to you. A second application would mean a new directory, e.g. my_app/, with the same basic setup as the app/ directory.
Read the definition of a Project, an Application, and a Bundle in the glossary.
Bundles and Plugins¶
In a symfony1 project, a plugin could contain configuration, modules, PHP libraries, assets and anything else related to your project. In Symfony2, the idea of a plugin is replaced by the "bundle". A bundle is even more powerful than a plugin because the core Symfony2 framework is brought in via a series of bundles. In Symfony2, bundles are first-class citizens that are so flexible that even core code itself is a bundle.
In symfony1, a plugin must be enabled inside the ProjectConfiguration class:
// config/ProjectConfiguration.class.php public function setup() { $this->enableAllPluginsExcept(array(/* some plugins here */)); }
In Symfony2, the bundles are activated inside the application kernel:
// app/AppKernel.php public function registerBundles() { $bundles = array( new Symfony\Bundle\FrameworkBundle\FrameworkBundle(), new Symfony\Bundle\TwigBundle\TwigBundle(), // ... new Acme\DemoBundle\AcmeDemoBundle(), ); return $bundles; }
Routing (routing.yml) and Configuration (config.yml)¶
In symfony1, the routing.yml and app.yml configuration files were automatically loaded inside any plugin. In Symfony2, routing and application configuration inside a bundle must be included manually. For example, to include a routing resource from a bundle calledAcmeDemoBundle, you can do the following:
# app/config/routing.yml _hello: resource: "@AcmeDemoBundle/Resources/config/routing.yml"
This will load the routes found in the Resources/config/routing.yml file of theAcmeDemoBundle. The special @AcmeDemoBundle is a shortcut syntax that, internally, resolves to the full path to that bundle.
You can use this same strategy to bring in configuration from a bundle:
# app/config/config.yml imports: - { resource: "@AcmeDemoBundle/Resources/config/config.yml" }
In Symfony2, configuration is a bit like app.yml in symfony1, except much more systematic. With app.yml, you could simply create any keys you wanted. By default, these entries were meaningless and depended entirely on how you used them in your application:
# some app.yml file from symfony1 all: email: from_address: foo.bar@example.com
In Symfony2, you can also create arbitrary entries under the parameters key of your configuration:
parameters: email.from_address: foo.bar@example.com
You can now access this from a controller, for example:
public function helloAction($name) { $fromAddress = $this->container->getParameter('email.from_address'); }
In reality, the Symfony2 configuration is much more powerful and is used primarily to configure objects that you can use. For more information, see the chapter titled "Service Container".
mas info:
jueves, agosto 25, 2011
Como hacer un podcast: tutorial paso a paso
Como hacer un podcast: tutorial paso a paso
CÓMO HACER PODCAST EN 3 SENCILLOS PASOS
(revisado y actualizado)
De forma muy resumida:
1.- Grabar el contenido (música, voz o ambas cosas... etc,) con tu programa de edición de audio preferido. Sugerencia: Audacity. Es Gratis y libre y está disponible para Windows, Mac, Linux. FreeBSD (Descargar Audacity) Ver guía rápida para grabar con Audacity.
2.- Convertir el archivo resultante a MP3 (si no lo grabas directamente en ese formato).
Existen algunas codificaciones recomendadas para que suene bien y no ocupe mucho:
Si es solo voz: 64kbps MONO
y si es Voz y música: 128kbps STEREO
Editar la etiqueta ID3 del archivo. Se puede hacer con el propio Audacity al exportar como MP3, con iTunes, con WinAmp y casi con cualquier reproductor de Mp3. Si puedes, procura usar ID3 v2.
(ver más información sobre Etiquetado ID3 tag al final de esta página)
3.- Subir el archivo a un servidor
Necesitas subir el archivo a un servidor de Internet para que lo puedan escuchar tus oyentes y que usando el protocolo HTTP puedan acceder a él. Es decir, que se pueda escuchar o descargar como si fuera una página web o una imagen. Además hay que hacer un archivo RSS para que se puedan suscribir.
Para tener todo esto disponible siguiendo unos sencillos pasos,,,,,
Pero no hemos acabado, ya que tenemos que optimizar el RSS. El RSS es el medio que utilizarán nuestros oyentes para subscribirse a nuestro podcast. Para poder escucharlo sin tener que visitar nuestro blog, por medio de iTunes, Google Reader o similares.
RSS en Feedburner
El RSS de Blogger mola, eso es innegable. Pero seguramente, si te has documentado sobre el tema, o alguien te ha explicado algo sobre esto, te habrán comentado que, para que el RSS pueda ser "entendido" por iTunes u otros programas para descargar podcasts, el audio debe estar incluido como "enclosure". ¿Te has perdido? Yo tampoco lo entiendo, pero me basta con saber que Feedburner convierte tu RSS en un RSS que a iTunes le gusta mucho, mucho.
Entramos en Feedburner, identificados con nuestra cuenta Google, y veremos una pantalla como la que sigue, en la que introduciremos la URL de nuestro recién creado blog de Blogger, y le diremos con orgullo que sí, ¡que somos Podcasters!
Ha encontrado dos Feeds. Escoged el que más rabia os dé.
Estupendo, elegimos el título del feed, y la URL con la que nuestros oyentes podrás subscribirse.
Hecho! Blablabla, Feedburner nos recuerda lo buenas personas que somos por usar Feedburner. Pulsamos Next.
Ahora tenemos que decirle si queremos que cree enclosures con cualquier tipo de fichero, o sólo con ficheros de audio. Piensa que en el futuro, igual te pones más creativo, y te da por hacer algún que otro vídeo :D "any rich media" está bien.
El resto de info es para iTunes. La imagen, que será la que aparezca en iTunes, requiere una URL. Eso implica que deberás tenerla en algún servidor. Puedes utilizar la imagen que introdujimos para acompañar el mp3 en blip.tv. Es cutre, pero es legítimo (de hecho, diría que yo lo hice así). Si no, puedes usar algún sistema de hosting de imágenes, o que te la suba un amigo... tú sabrás :D
El campo "Explicit" indica si tratarás temas adultos, o usarás un lenguaje no apto para menores. Etcétera.
Más info sin la que he podido vivir perfectamente, pero que podéis seleccionar.
Ya hemos creado nuestro feed supermolón, pero no sirve de nada si Blogger sigue mostrando nuestro feed antiguo. Vamos a arreglar eso.
Vamos a Blogger y, en nuestro recién creado blog, seleccionaremos Configuración > Feed del sitio. En Publicar URL redireccionada del feed pondremos el RSS de Feedburner que acabamos de crear. Y ya estamos. Nuestro podcast ya está listo para escuchar, subscribirse y muchas cosas más :D
miércoles, agosto 24, 2011
Lytro: ¿Revolución fotográfica
Lytro: ¿Revolución fotográfica o un simple hype más?
La fotografía ha sido dominada en los últimas décadas por compañías como Canon o Nikon, pero los próximos años prometen ser complicados para los grandes players por muy copado que tengan el sector profesional. Unido al auge de la fotografía con iPhone y otros móviles, alimentado por apps como Instagram, esta semana ha salido a la luz Lytro, un nuevo software y cámara que promete cambiar por completo el sector.
Pero entre tanto titular y alabanza que habla de revolución no es fácil determinar lo que ofrece. ¿Realmente es tan revolucionario o no es más que una buena acción de relaciones públicas para un buen producto? Repasamos algunos de los interrogantes de esta nueva tecnología.
¿Cómo funciona Lytro?
“Esta cámara contiene un montón de microlentes delante del sensor de la cámara. Es el equivalente sintético a las miles de pequeñas lentes que se encuentran en el ojo de una mosca. En vez de grabar una sola imagen determinada por los ajustes de tu cámara, el sensor graba una compleja secuencia de información que representa toda la luz que viene de todas las partes de la escena que se encuentra delante de ti. No solo la parte que has enfocado utilizando una cámara normal. La imagen se pasa a un software que lo descodifica”, explica Kit Eaton, en Fast Company.
Pero eso no es suficiente. Una vez que tomas la foto, requiere un software especial para poder sacar lo mejor de esa imagen, uno que la compañía ha desarrollado para ver todas las perspectivas y enfoques posibles con esa foto.
Ejemplo: Dos versiones de la misma foto. El enfoque se ajusta con un solo clic sobre la parte que se quiere destacar.
¿Cómo se diferencia de una cámara convencional?
“La gente dice que hacer una foto significa capturar un momento, pero la fotografía convencional no captura un momento. Captura un ángulo, un punto de luz, un enfoque es cada momento. Si eres un fotógrafo profesional, seguramente capturarás la mejor parte de un momento, pero si eres alguien como yo, lo más probable es que no sea el caso”, opina Ben Horowitz en su blog, uno de los principales inversores en el proyecto.
“Las cámaras normales trabajan de una forma similar al ojo, utilizando una lente en la parte delantera que recoge rayos de luz y lo proyecta sobre un sensor al igual que la retina en tu ojo. Para enfocar el ojo ajustas la lente en distintas formas para capturar rayos de luz de distintas partes de la escena. Esto añade complejidad y si se utiliza bien belleza la foto”, añade Eaton.
¿A qué viene tanto revuelo entonces?
Según The New York Times, lo que ha conseguido Lytro es “condensar algo que normalmente necesitaría 100 cámaras digitales en una cámara”. De acuerdo con sus defensores, es una nueva lanza a favor de la democratización de la buena fotografía al eliminar la necesidad de complejos programas y funcionalidades para hacer fotos decentes.
¿Quién está detrás de esta tecnología?
Ren Ng, CEO de la compañía, desarrolló esta tecnología durante su estancia en la Universidad de Stanford. Lo presentó a principios de 2005 en un artículo académico que más tarde convirtió en su tesis sobre lo que llama la fotografía plenóptica. Lytro traslada su investigación al mercado general con el lanzamiento de una cámara acompañado de un software especial para ajustar estas fotos.
La compañía, una startup con sede en Silicon Valley, ha conseguido más de 50 millones de dólares en financiación.
Este vídeo resume algunas de las conclusiones de su investigación:
¿Qué otros usos y ventajas se pueden encontrar para esta cámara?
Dado que cada imagen captura tanta información, las cámaras son muy apropiadas para crear imágenes 3D.
A la hora de procesar la imagen, te da muchas más opciones para retocarla.
La cámara es más rápida porque elimina la necesidad de esperar hasta que la foto esté enfocada.
En el futuro puede ofrecer nuevas oportunidades de experimentación para fotógrafos profesionales.
¿Cuánto costará la cámara?
“Lytro todavía no ha revelado el precio pero insiste que será por el mercado general. (…) Tampoco han revelado cuándo estará a la venta. Inicialmente se venderá en Amazon y la página web de Lytro”, según The New York Times.
¿Qué significa para la industria de la fotografía?
¿Realmente es tan revolucionario como dice ser o no es más que una buena campaña de relaciones públicas?
Se añadiran más opiniones al artículo según vayan llegando en la sección de comentarios:
Roc Canals, fotografo:
“Lo veo muy revolucionario por las posibilidades que ofrece. Hace un par de años ya leí algo sobre el tema, pero no pensaba que tardaría tan poco en salir. Aun así el sistema está muy verde aún para aplicarlo a la fotografía profesional. Va a permitir tomar fotos sin esfuerzo y por un precio situado en la gama alta de las compactas. Encuadra y dispara, sin enfoques ni parámetros de cámara. Solo un clic. Que es lo que piden muchos usuarios. ¡Yo quiero una!”.
José Luis Colomina, profesor de fotografía:
No creo que sea tan revolucionario. La fotografía plenóptica no es algo tan rutilantemente nuevo. Su uso es relativamente frecuente en fotografía científica y forense. Hace unos años la moda fue el HDR (High Dynamic Range), que combinaba varias fotos con distintas exposiciones para hacer visible todo en la imagen, desde las zonas más brillantes a las más oscuras. Incluso han empezado a aparecer cámaras que ofrecen este procesado directamente, sin necesidad de ordenador, pero no pasa de ser una curiosidad o un capricho que acaba hartando. Esto tiene una pinta parecida. Es estupendo poder enfocar una imagen en todos sus términos, pero tampoco es algo tan revolucionario. Las cámaras enfocan solas desde hace décadas, con o sin intervención del fotógrafo. Luego tampoco es que esta cámara vaya a resolver gran cosa. Parece ser la pérdida de resolución, y eso sí que puede ser algo grave en imagen. Supongo que esto se irá solucionando poco a poco.
Carlos Spottorno, fotógrafo
El mecanismo es bastante sencillo, en realidad. Lo que ocurre es que la cámara hace 19 fotos a la vez, cada una con el foco en un plano distinto. Luego tenemos todas esas fotos superpuestas, y escogemos dónde queremos el foco señalando el lugar específico. Adobe ya lo presentó hace tiempo:
A mí me parece revolucionario e interesantísmo. Supongo que es una tecnología que acabará instalándose en todas las cámaras. No compraría una Lytro. Compraré una Canon cuando Canon haya adquirido el derecho de uso de la patente y la haya adaptado a sus cámaras, dando la garantía de calidad de siempre. Porque una cosa es que el efecto funcione bien en pantalla y otra es que realmente pueda hacer grandes ampliaciones en soporte físico. Es probable que en este momento la calidad de la imagen sea más o menos como el de una compacta.
También es cierto que el mundo evoluciona hacia las pantallas y por lo tanto la cantidad media de megapíxeles que ofrezcan las cámaras baje. Quizás no sea necesaria más calidad que la que da una compacta.
Y ahora la gran pregunta: si es posible hacer una foto que no tenga pérdida de foco en ningún sitio, ¿para qué vamos a darle pérdida de foco artificialmente? La pérdida de foco es hoy por hoy un efecto completamente inevitable, derivado de las leyes de la física y la óptica. Si la electrónica encuentra la manera de evitar este efecto, mantenerlo sería equivalente a ponerle grano a una imagen, o a manchar un papel para que parezca antiguo… en definitiva, un “efecto foto antigua”.
Y sabemos lo mucho que nos gustan los “efectos foto antigua”. El gran éxito de la Hisptamatic y la Instagram reside precisamente en eso: la tecnología nos sirve para imitar y mejorar las limitaciones del pasado.
Gabriele Merolli, fotógrafo especializado en arquitectura:
La primera reacción ante algo nuevo, aunque no nos guste admitirlo es “¡pero si esto ya no es fotografía!, asi cualquiera puede hacer una foto bonita”. Pero en realidad es la enésima innovación que cambia el significado de la palabra fotografía, llevando al medio fotográfico a situarse cada vez más lejos del ojo humano y cada vez más cercano a la hiper vista. La fotografía de reportaje y deportiva se resentirá del hecho que podremos asignar un significado distinto a cada imagen después de haber hecho la foto.
Con la fotografía plenóptica el instante pierde su bidimensionalidad y se convierte en algo remodelable. Asume una tercera dimensión. Será para bien o para mal otro proceso más que se interpone a la captura de la imagen cada vez más alejada de la realidad. Pero quién ha dicho que la fotografía es solo un arte o que debería siempre intentar representar lo que ven nuestros ojos. No es solo una funcionalidad más. Es un instrumento muy potente para asignar un nuevo significado a nuestros recuerdos.
Fuente:
http://www.yorokobu.es/lytro-%C2%BFrevolucion-fotografica-o-otro-hype-mas/