Esquemas de colores para Sublime 3

Captura de pantalla 2014-05-05 a la(s) 11.22.48

Sublime 3 se ha convertido, de lejos, en mi herramienta favorita de trabajo. No se cuantos cientos de horas llevo a la espalda con este editor de texto, pero desde luego cada día me gusta más: El hecho de que sea multiplataforma, tan completo y con posibilidad de añadir prácticamente cualquier funcionalidad que necesitemos hacen, para mi, que sea el mejor de todos.

Una de las cosas fundamentales a la hora de desarrollar código es el tema de los esquemas de colores y resaltado de sintaxis por parte del editor de textos. Una buena elección nos hará que trabajar durante horas y horas sea más cómodo e incluso más eficiente.

En este sentido, para Sublime 2 y 3 existen cientos de temas. Yo os recomiendo que os paséis por colorsublime.com, donde encontraréis un montón de temas.. que se instalan en un par de pasos.

Yo llevo unas semanas utilizando el tema peacock y FreshCut. Y la verdad es que estoy encantado con los contrastes en la paleta de colores y resaltado de sintaxis en PHP/HTML/JS y CSS, y eso se nota a la hora de trabajar.

Laravel 4.2: publicará su framework bajo un modelo freemium de pago

Imagen

 

Taylor Otwell, máximo responsable del framework Laravel, anunció en su blog  que la próxima versión Laravel 4.2 seguirá un modelo freemium de pago para algunas de sus características “no esenciales”:

The core of the framework should include only the components most web applications need. But, what about the stuff a lot of us need? There are some amazing packages I want to build in the next 5 months, and I think they will add some of the most amazing Laravel features yet! […] I’m calling them Laravel expansions, and I already have one of them written! […] These premiumopt-in features of Laravel […]

Así que a partir de la versión 4.2, algunas de las mejores funcionalidades de Laravel serán de pago. Esta decisión parece dar la razón a aquellos programadores preocupados con la financiación del proyecto Laravel.

Si es verdad que está decisión busca que el proyecto siga avanzando en principio no es malo, dado que en mi opinión, tener un market de pago para bundles y packages de pago, es bueno para todos nosotros, los desarrolladores. Veremos como acaba esto.

Fuente: http://symfony.es/noticias/2014/01/05/laravel-publicara-su-framework-bajo-un-modelo-freemium-de-pago/

Configurar nuestro propio nivel de log con Laravel

Una de las cosas que más podemos echar de menos en el fichero app.php de Larvel 4 es una variable donde podamos definir el nivel de log que queremos en nuestra aplicación.

Dado que en este fichero podemos añadir nuestras propias variables de configuración, vamos a crear nuestra propia variable de nivel de logs:

'log_level' => 'warning',

Donde los posibles valores para esta variable será uno de los siguientes [debug, info, notice, warning, error, critical, alert].

Por último, debemos indicarle a Laravel que utilice nuestras preferencias para logs, esto lo definiremos editando el fichero app/start/global, que es donde Laravel registra entre otras cosas la llamada a Logeador. Editamos esta línea:

Log::useDailyFiles(storage_path().'/logs/'.$logFile);

Pasándo ahora como parámetro nuestra variable definida anteriormente:

Log::useDailyFiles(storage_path() . '/logs/' . $logFile, 0, Config::get('app.log_level'));

Y listo, ya tenemos configurado nuestro propio nivel de Log con Laravel 🙂

Cacheando consultas con Laravel (Eloquent ORM && Query Builder)

Una funcionalidad tremendamente útil a la hora de mejorar el rendimiento de nuestras aplicaciones es el tema del cacheado de consultas a nuestro backend que se repiten en el tiempo.

Laravel nos permite cachear este tipo de consultas (bien sea a través de Eloquent o de consultas construidas con Query Builder) de una manera muy sencilla, tan sólo debemos hacer uso del método remember, veamos un ejemplo:

Company::where(‘sales’, ‘>’, ‘3000)->activities()->remember(60)->get()

En este caso, esta consulta, durante los 60 minutos posteriores a la ejecución, no consultará en la base de datos sino en el sistema de cacheado configurado (por defecto, alojará estas consultas en el directorio storage), optimizando de esta forma el rendimiento general de nuestra aplicación.

Obviamente debemos dejar este tipo de consultas para aquellos datos con un carácter estático a corto-medio plazo en el tiempo.

Comandos propios en artisan y trabajos programados en Laravel

Es normal que en nuestros proyectos nos encontremos con la necesidad de crear ciertas tareas que no responden a ningún evento, sino que deben ser ejecutadas regularmente para el funcionamiento del sistema. Los casos más típicos pueden ser por ejemplo borrar notificaciones leídas por el usuario con ciertos días de antigüedad o el envío de emails a ciertos usuarios.

En cualquier caso, aunque podríamos crearnos un script independiente a Laravel para estas tareas, vamos a ver como utilizar el código desarrollado para nuestra aplicación y ejecutar estas tareas de mantenimiento mediante nuestro propio comando personalizado para trabajar con laravel mediante artisan.

Para esta entrada, vamos a crear un comando de ejemplo llamado maintenance, que por ejemplo borre las notificaciones leídas de los usuarios, con fecha de creación anterior a 3 días desde la fecha actual.

1) Desde el terminal, creamos el comando artisan

php artisan command:make maintenance

2) En la carpeta app/command tendremos un nuevo fichero. Dentro de este fichero, el método fire será el que utilicemos para definir que debe hacer el comando cuando se ejecute desde el terminal. Por ejemplo, para nuestro ejemplo básico podría ser el siguiente:

/**
 * Execute the console command.
 *
 * @return void
 */
 public function fire()
 {
 $this->info('Deleting all readed notifications');
 
 $hour_limit = new DateTime('now');
 $hour_limit->modify('-1 day');
$not = Notification::where('readed', '=', 1)
 ->where('created_at','<', $hour_limit)
 ->delete();
 
 $this->info('Deleting finished');
 }

3) En el fichero app/start/artisan.php, debemos añadir una entrada para que artisan reconozca el comando:

Artisan::add(new maintenance);

4) Podemos probar nuestro comando ejecutando

php artisan command:maintenance

 

5) Por último, añadimos una entrada en el cron del sistema con la siguiente orden

sudo crontab -e

Teniendo el siguiente esquema de configuración del cron del sistema:

cron

 

Añadimos una entrada según las necesidades que tengamos. Por ejemplo, imaginemos que queremos ejecutar el comando maintenance una vez al día, cada día de la semana a las 16:45 horas:

45 16 * * * php /var/www/project/artisan command:maintenance

y eso es todo 🙂

Enlace de la documentación de Laravel recomendado: http://laravel.com/docs/commands

Laravel recipes

Captura de pantalla 2014-02-14 a la(s) 11.02.13

Os dejo con una web que me ha parecido interesante, encontrada en el grupo de desarrolladores de Laravel en la red social Linked in.

Tiene algunas cosas muy básicas y otras bastante interesantes. De momento no está abierta para que cualquier usuario pueda enviar su “receta” pero el creador dice que así lo hará en breve. Quizás acabe convirtiéndose en un sitio importante de consulta para Laravel, de momento os lo dejo por aquí.

http://laravel-recipes.com/

Envío de correo en Laravel con Mandrill

mandrill-pricing

Si necesitas enviar correo desde tu aplicación desarrollada con Laravel 4, tienes muchas alternativas, por ejemplo puedes utilizar tu cuenta de gmail para hacerlo.

Si tu aplicación va a realizar un envío masivo de correo, quizás tengas que plantearte otras opciones. Analizando el fichero de configuración de laravel, observé que por defecto tenían mailgun como servidor smtp, por lo que entré en su web para ver que precios tenían.

Tras hablar con mi amigo Jorge, me recomendó Mandrill (de la gente de MailChimp) y la verdad es que en condiciones está mejor que Mailgun:

– Mandril: 12,000 primeros correos gratis frente a los 10,000 gratuitos de Mailgun.
– 40.000 correos por 5,60$ en Mandrill frente a los 15$ de Mailgun, son números que convencen a cualquiera 🙂

En cualquier caso, para integrar mi aplicación con Mandrill, tan sólo he tenido que registrarme en su web, obtener mi API Key y configurar lo siguiente en app/config/mail.php

 

return array(

‘driver’ => ‘smtp’,

‘host’ => ‘smtp.mandrillapp.com’,

‘port’ => 587,

‘from’ => array(‘address’ => ‘YOUR-EMAIL’, ‘name’ => ‘YOUR NAME’),

‘encryption’ => ‘tls’,

‘username’ => ‘YOUR-EMAIL’,

‘password’ => ‘YOUR-MANDRILL-API-KEY’,

‘sendmail’ => ‘/usr/sbin/sendmail -bs’,

‘pretend’ => false,

);