Monthly Archives: Enero 2012

La muerte de symbian

En el año 2010, escribí un artículo que dio un tanto de que hablar, el artículo en concreto fue Los sistemas operativos móviles para smartphones: Android vs iOS vs Symbian vs Windows Phones. Es curioso ver como si se leen los comentarios, la gente va pasando de defensores de Symbian frente al resto de sistemas a poco a poco, ir queriendo actualizar a iOS o a Android. Bueno, escribo esto como aclaratoria, Symbian finalmente murió, y Symbian ha muerto no por que lo diga yo, sino por los hechos. Nokia compro el 100% de Symbian, por lo que el resto de marcas se interesaron por otros sistemas mas estables para los teléfonos de última generación (de todos es sabido los problemas de Symbian y los telefonos táctiles). La propia Nokia, por si aun queda algún defensor de este sistema operativo para móvil, abandono Symbian para utilizar Windows Phone, increíble pero cierto. Los planes de futuro de Symbian, en teoría mantenido con respiración asistida hasta 2016, son para teléfonos de baja gama de Nokia, el típico teléfono que tu madre se compraría.

Tengo que decir que es una lastima, ya que todos hemos crecido con Symbian, pero en la vida hay que ser fuerte y reconocer una derrota, solo nos queda mirar a los nuevos sistemas como Windows Phone, Android, iOS, etc.

Deploy de ASP.Net MVC en Apache con mod_mono

Lo que voy a escribir aquí no es una guía de como instalar Mono ASP.Net con MVC sobre apache con mod_mono, aunque la escribiré, sino como hacer el deploy de una aplicación. Cuando montamos un sistema Mono ASP.Net con MVC sobre apache con mod_mono, hay que tener 3 cosas en cuenta para su correcto funcionamiento, son pequeños detalles pero que te pueden dar algún que otro quebradero de cabeza. Las 3 cosas a tener en cuenta son:

  • Apache no entiende que tu app es MVC, por lo que hay que decirselo.
  • Apache ni mod_mono son capaces de dictaminar tu index
  • Siempre hay que tener algo para recompilar el backend en caso de cacheo o fallo (generalmente cuando desarrollamos).

Bueno, expliquemos cada una, en primer lugar apache no sabe que tu app es un MVC de ASP.Net, por lo que cuando hagamos un deploy o creemos un proyecto nuevo de Mono ASP.Net con MVC, lo primero a crear es un .htaccess forzando a que es un MVC. El código del htaccess es:

ForceType application/x-asp-net

Con esto ya  podemos poner a funcionar nuestra aplicación web. El siguiente paso para hacer las cosas bien, sería crear un index, ¿Por qué? ¿Acaso no saben cual es mi index? Pues no, todas las pruebas, tanto en Linux como en Mac OS X, es que mod_mono no es capaz de entender cual es el index que definimos en el global.asax, por lo que lo mejor es crear un index.aspx que cargue nuestro HomeController, o el que queramos. El index estaría en el raiz del proyecto y su código sería:

<%@ Page Language="C#" Inherits="System.Web.Mvc.ViewPage" %>
<%
   this.Context.RewritePath("Home", false);

   IHttpHandler httpHandler = new MvcHttpHandler();
   httpHandler.ProcessRequest(this.Context);
%>

Lo que hacemos con este index.aspx es decirle que cuando cargue la home (el index) cargue automáticamente el HomeController. Ahora solo nos falta crear un sistema de reseteo de backend por si se queda en cache y queremos cambiar algo. Para ello creamos una carpeta, por ejemplo, reset-mono-backend y creamos un .htaccess dentro de esa carpeta. Cabe decir que al htaccess lo podemos otorgar de un sistema de autentificación y cosas por el estilo para acceder, pero como esto es un ejemplo, será lo más básico. El contenido del .htaccess será:

ForceType None
SetHandler mono-ctrl

Al entrar en /nuestroproyecto/reset-mono-backend, nos aparecerá una interfaz que nos permitirá entre otras cosas, resetear el backend. Otro día explicaré como se instala el sistema en si.

Buscar por tag, clase e id en jquery

Hace tiempo escribí un artículo hablando de rendimiento de jQuery y el uso de selectores dobles con jQuery, pero lo que no he hecho es explicar como funciona un selector de jQuery. La idea es que esto no sea "la guía definitiva de jQuery", ni nada por el estilo, sino un breve apunte para los lectores, la visión mas básica del uso de jQuery.

En este artículo voy a exponer como seleccionar de forma mas que simple utilizando un tag (etiqueta de html), una clase de css y un id. jQuery es un ente muy inteligente y por tanto, sabrá si lo que le estamos pidiendo es que convierta una etiqueta a jQuery o que la busque.

  • Buscar por tag con jQuery: este junto con el de clase, son métodos de búsqueda de poco rendimiento y que pueden dar como resultado varios objetos (ya que un tag se puede repetir), se indicaría a jQuery el nombre del tag.
  • Buscar por clase con jQuery: al igual que el anterior, es de bajo rendimiento y dará como resultado un array de objetos, ya que una clase se puede repetir.
  • Buscar por id con jQuery: es el mas optimo y el que se ha de usar siempre que sea posible. Devolverá un único objeto ya que los id's en teoría no se repiten.

Ahora vista un poco la teoría viene la practica. Lo primero es entender como se hace la llamada a jQuery, que tiene 2 formas, la original que es usando la función jQuery o la corta que es usando su alias a la función $. Veamos un ejemplo genérico de esto y luego uno por cada selector.

var selectorjQuery = jQuery("#mi_id_a_seleccionar");
var selectorAlias = $("#mi_id_a_seleccionar");

En el ejemplo anterior, el resultado sería el mismo, ya que es similar utilizar la función jQuery que la función $. Ahora veamos un ejemplo con los selectores, con un código en html y otro de código javascript.

<p>
   <a href="#">Mi link 1</a>
   <a href="#" class="enlace">Mi link 2</a>
   <a href="#" class="enlace" id="myLink">Mi link 3</a>
</p>

Ahora vamos a hacer lo siguiente, con estos enlaces, vamos a poner el color del enlace en negro para todos los enlaces, rojo para los enlaces que tienen una clase enlace y azul para el id myLink

//ponemos todos los enlaces a negro
$("a").css("color", "#000");
//los enlaces con la clase .enlace los dejamos en rojo
$(".enlace").css("color", "#ff0000");
//el enlace con el id myLink lo ponemos azulado
$("#myLink").css("color", "#336699");

Como podemos observar, las etiquetas se indican con su nombre, las clases como si de css se tratase, con un punto delante, al igual que los ids, que al igual que css utilizan una almohadilla.