Tag Archives: php

micro notas

Micro notas #10

A través de estas micro notas hablo brevemente de aquellas noticias o enlaces que me han parecido curiosas y relevantes al mundo de la programación y la tecnología.

The technology behind preview photos – Interesante explicación de como los ingenieros de Facebook trabajan con la previsualización de imágenes en sus diferentes productos.

Microsoft/WinObjC: Objective-C for Windows – Propuesta de Microsoft para convertir aplicaciones de iOS a Windows 10. Un proyecto que recién comienza y se espera que de mucho de qué hablar.

46 useful PHP code Snippets that can help you with your PHP projects – Usualmente utilizo este tipo de listas para practicar como trabaja el lenguaje que estoy usando. Me parece haber vistos alguno que otro snippet interesante. Especialmente los que utilizan la librería de CURL. Aunque ojo con los de MySQL.

How Instagram closed my account and gave it to a football celebrity – A veces el precio de la fama es el problema de otro. Interesante historia con un final feliz.

Symantec: Spam falls below 50% of all email for the first time since 2003 – Buenas noticias para todos aquellos que odiamos tener que ver nuestro buzón de correo lleno de spam.

micro notas

Micro notas #9

A través de estas micro notas hablo brevemente de aquellas noticias o enlaces que me han parecido curiosas y relevantes al mundo de la programación y la tecnología.

Open Source .net libraries that make your life easier – A parte de los Top 100 packages que podemos encontrar en Nuget Thomas Van Machelen ha compilado una corta pero productiva lista de librerías de código abierto que son de gran utilidad para proyectos en .Net.

PHP vs ASP.NET – El eterno debate de nunca acabar. Aunque reconozco que el autor del artículo expone varios puntos interesantes. Muy buena lectura para aquellos que desarrollan en ambas plataformas.

Rankings de los lenguajes de programación durante el año 2014 – Aunque vayamos a mitad del 2015 nunca es tarde estudiar este tipo de información. En programación no es bueno dejarse llevar por tendencias pero no está demás visualizar a donde se está moviendo la industria.

SQLite, donde lo encajo? – En la misma documentación del proyecto te lo contestan. Buen recurso para cuando te encuentras en la disyuntiva de escoger si pasar todo el trabajo de instalar/configurar MySQL o SQL Server Express en vez de usar algo mas ligero como SQLite.

Michigan Micro Mote (M3) – Sorprendente logro de poder miniaturizar un ordenador en apenas algunos milímetros. Con la popularidad que esta alcanzando el IoT este es uno de esos proyectos que debemos mantener en el radar. Microsiervos le ha reseñado brevemente y hay un video donde explican muchas de sus utilidades.

How to Read Source Code – Spoiler de la vida de un programador… en múltiples ocasiones tendrás que leer código que no ha sido escrito por ti y llorarás, restallarás cosas de tu escritorio, suspirarás y rogarás no querer pasar por eso pero así es esto. Aria Stewart comparte una serie de consejos que harán de esta tarea una mas llevadera. Muy buena lectura si deseas aportar a proyectos open source.

programación

HTTP Routing a través de Laravel

Uno de los fundamentos de cualquier aplicación web es el enrutado de componentes. Por conveniencia usaremos el anglicismo router en vez de enrutador y lo acompañaremos del protocolo básico que permite el routing entre los componentes de nuestra aplicación, el famoso HTTP.

El enrutamiento o routing se refiere a la determinación de como una aplicación responde a una petición de cliente a un punto final particular, que es un URI (o ruta) y un método de solicitud HTTP específico (GET, POST, y así sucesivamente).

Conocer cómo funciona el método de routing en tu framework favorito te provee el mecanismo para crear y modificar las URLs de tu aplicación para que sean más leíbles a los usuarios, mas convenientes a los motores de búsqueda o para proporcionar un URL más corto y/o relevante al momento de enlazar a otras webs o servicios.

La técnica de routing también añade una capa de abstracción entre los archivos que componen la aplicación y la dirección URL que se presenta al mundo exterior. Eso de crear un website o un web application reflejando la estructura de folders y archivos 1-a-1 resulta un poco inconveniente a la hora de crear una web moderna y robusta. En otras palabras el routing nos ayuda a que no se exponga el funcionamiento interno de un sitio web a los usuarios.

Para entender afondo todo esto del routing vamos a definir algunos ejemplos básicos usando como base el framework de Laravel. En Laravel la mayoría del routing se define en el archivo app/Http/routes.php. Cada uno de los ejemplos que usaremos son los ejemplos utilizados en la documentación de Laravel.

Basic Routing

Esta es la manera más básica de crear un URL.

Route::get('/', function () {
    return 'Hello World';
});

Este código se traduce a mostrar la frase “Hello World” en la pagina principal que es equivalente a visitar www.ejemplo.com/index.php. Si deseamos crear una sección o una ruta al login podemos hacerlo de la siguiente manera:

Route::get('login', function () {
    return 'Esto será nuestro login page.';
});

Route Parameters

Si deseamos capturar algún valor de nuestro URL podemos hacerlo de la siguiente manera:

Route::get('user/{id}', function ($id) {
    return 'User '.$id;
});

Este routing se traduce en el siguiente URL, http:///www.ejemplo.com/user/1.
En Laravel podemos definir x cantidad de parámetros según necesitemos.

Route::get('posts/{post}/comments/{comment}', function ($postId, $commentId) {
    //
});

El código anterior se transformaría en algo similiar a http:///www.ejemplo.com/post/1/comments/21.

Habrá momento que vamos a desear que el parámetro sea opcional. Esto lo logramos usando el carácter “?” como parte del parámetro, {name}.

Route::get('user/{name?}', function ($name = null) {
    return $name;
});

Route::get('user/{name?}', function ($name = Jaime) {
    return 'Soy ' . $name;
});

Regular Expression

Si deseamos restringir el valor de los parámetros podemos utilizar un regular expression para tener mayor control. Para aprovechar esta funcionalidad utilizaremos el método where de la instancia del router.

Route::get('user/{name}', function ($name) {
    //
})
->where('name', '[A-Za-z]+');

Muy convenientemente podemos mezclar diferentes tipo de expresiones regulares:

Route::get('user/{id}/{name}', function ($id, $name) {
    //
})
->where(['id' => '[0-9]+', 'name' => '[a-z]+']);

Named Routing

A través de esta técnica podemos crear diferentes URLs y redirigirlas usando otro nombre dentro de nuestra aplicación. Este mecanismo es muy práctico para evitar el trago amargo de tener que cambiar los URLs a través de todo el código de nuestra aplicación. Esto lo logramos pasando un arreglo al segundo argumento en la instancia del router.

Route::get('user/profile', ['as' => 'profile', function()
{
    //
}]);

En este ejemplo nuestro si el URL ‘user/profile’ cambia, no habrá problema porque nuestra aplicación lo conoce como ‘profile’. En nuestro código podemos usar este URL o redireccionar de la siguiente manera:

$url = route('profile');
$redirect = redirect()->route('profile');

Route Groups

Si deseamos aplicar algún atributo que aplique a un grupo de URLs podemos hacerlo a través del método Route::group. En Laravel estos atributos esta reunidos en un arreglo que fácilmente podemos usar en nuestro método. Los atributos disponibles son:

  • Middleware
  • Namespaces
  • Domain
  • Prefix

Middleware

Para aplicar uno o varios middleware a todos nuestros URLs podemos hacerlo listando en un arreglo los nombres de cada uno. Estos se ejecutaran en el orden en que los escribas.

Route::group(['middleware' => ['check1', ' check2']], function()
{
    Route::get('/', function()
    {
        // Has check1 And check2 Middleware
    });

    Route::get('user/profile', function()
    {
        // Has check1 And check2 Middleware
    });

});

Namespaces

Un uso para este método es asignar un namespace a un grupo de controllers. Esto es un excelente mecanismo para mantener nuestro código lo más organizado posible.

Route::group(['namespace' => 'Admin'], function()
{
    // Controllers Within The "App\Http\Controllers\Admin" Namespace

    Route::group(['namespace' => 'User'], function()
    {
        // Controllers Within The "App\Http\Controllers\Admin\User" Namespace
    });
});

Sub-Domain Routing

¿Necesitas trabajar algún sub-dominio? No te preocupes Laravel también proveer un método para esto. Inclusive puedes asignar parámetros a los diferentes URLs.


Route::group(['domain' => '{account}.myapp.com'], function () {
    Route::get('user/{id}', function ($account, $id) {
        //
    });
});

Route Prefixes

Si deseamos aplicar un prefijo a un grupo determinado de URLs podemos hacerlo pasando el prefijo como un arreglo al metodo del router. Veamos el ejemplo:

Route::group(['prefix' => 'admin'], function () {
    Route::get('users', function () {
        // Matches The "/admin/users" URL
    });
});

También podemos usar el prefijo junto al un parámetro para asociar el valor de ese parámetro a un grupo de URLs:

Route::group(['prefix' => 'accounts/{account_id}'], function () {
    Route::get('detail', function ($account_id) {
        // Handles Requests To admin/user
    });
});

Básicamente hemos cubiertos lo básico del HTTP routing en Laravel. Aunque hayamos trabajado el routing directamente en el archivo router.php a traves utilizando Closures lo ideal es que la ruta puede tener una o más funciones de controlador, o sea las rutas deben apuntar a los controladores de nuestra aplicación. De pues de todo la arquitectura de Laravel se basa el modelo MVC.

micro notas

Micro notas #6

La primera micro nota de 2015. Estos son algunos de los artículos o referencias sobre el tema de la programación que han capturado mi atención durante esta semana.

Building Your Resume Like a Boss With CI – Recientemente anda flotando por mi cabeza la idea de crear un resume bastante geek Creo que con esta iniciativa de Steven Edouard estoy listo para realizar uno que otro experimento. Así de una vez sigo puliendo el tema del Continuous Integration.

Los Top 10 Projects de Michael Fogleman durantel el año 2014 – En este artículo podrás leer un poco sobre el tema de OpenGL. Pero lo genial del asunto es ver como Michael Fogleman se las ha ingeniado para mezclar arte, programación, trigonometría, hubicación de satelites GPS entro otros temas, en pequeños proyectos que ha desarrollado durante el 2014. Sin duda alguna da gusto pasar por su GitHub para revisar el código.

Why Instagram Worked – Este otro artículo es de esas lecturas inspiracionales sobre start-ups. Obviamente que ya todos sabemos el desenlace de esta start-up. De todas formar es interesante repasar los momentos históricos por los cuales atravesaron el equipo de Instagram hasta llegar a ser la red social que es hoy en día.

¡Libros gratis! PHP The Right Way: The Book y Speaking JavaScript – El primero es la última revisión de la versión ebook del website PHP The Right Way y el segundo trata sobre Javascript. Son gratis así que no hay nada que perder. Por el contrario ambos son excelentes referencias.

Papers We Love – Papers We Love es una colección de tesis que trata virtualmente sobre cada tema relacionado al Computer Science. Estos son esos documentos que cuando lees no entiendes o si entiendes algo te hacen cuestionar toda tu ética y andamiaje como programador o científico. Por ejemplo podrás encontrar el paper de Roy Fielding, Architectural Styles and the Design of Network-based Software Architectures en donde se desarrollan las bases para la arquitectura tipo REST. Ya saben, eso que la mayoría de los API de hoy en día utilizan.

programación

Refactoring Loops and Conditionals por Adam Wathan

En muchas ocasiones para aprender un concepto es mejor observar a otro haciendo el trabajo. Refactoring Loops and Conditionals es una excelente demostración sobre el tema de refactoring de la mano de Adam Wathan. Es interesante ver el proceso mental y la lógica envuelta a la hora de escoger las técnicas para hacer refactoring. Muestra además un buen ejemplo de lo que es programación funcional en PHP. Sin duda es un video que no solo aplica a los desarrolladores que usan PHP sino a todo programador interesando en el tema del refectoring. Observar el proceso “en vivo y a todo color” no tiene precio.

tecnología

PuPHPet: como construir fácilmente una máquina virtual usando Vagrant y Puppet

Introducción
Seamos honestos ¿cuántos de nosotros hemos perdido horas de sueño tratando de crear un ambiente de desarrollo para crear aplicaciones web usando PHP? Creo ver muchos asintiendo con su cabeza. Con PuPHPet (y algunas otras cosillas más) esas horas podrán ser reducidas a minutos.
Continuar la lectura…