Archivo Diciembre, 2009

Sintaxis JavaScript: var = function

Hace ya tiempo que abandoné JavaScript por otros lenguajes “más potentes” pero la curiosidad y firebug para firefox me la han recordado.

Me llama la funcion las formas en las que se puede delcarar una funcion en javascript. Hay que decir que en este lenguaje, en el que ningun desarrollador cumple el estandar, todo es un poco de todo.

En los lenguajes debilmente tipados las variables (var a;) pueden ser entero, float, string o cualquier otra cosa, su tipado es tan debil que ni siquiera es necesario declarar las variables con la palabra reservada var.

La definicion de una funcion tipica en JS es la siguiente:

function product(a,b){
   return a*b;
}

document.write(product(5,6));

Como ya hemos dicho JS es debilmente tipado, y una variable puede ser de cualquier tipo. En JS pueden ser incluso funciones. Así que podemos indicar que una variable es igual a una funcion con su declaracion de parámetros y las instrucciones entre llaves:

product= function(a,b){
   return a*b;
}

document.write(product(5,6));

Podemos indicar que es una variable con var o no, funcionará de todos modos.

var product= function(a,b){
   return a*b;
}

document.write(product(5,6));

En JavaScript este concepto se puede abstraer más y le podemos asignar a una variable distintos componentes siendo estos funciones. Los que sepan C no les sesultará esto muy distinto a un struct pero con funciones, en definitiva un objeto como los de C++.

mat= {
   product: function(a,b){
      return a*b;
   }
}

document.write(mat.product(5,6));

Para incluir varios elementos los separamos por comas:

var mat= {
   product: function(a,b){
      return a*b;
   },
   sum: function(a,b){
      return a+b;
   },
}

document.write(mat.product(5,6));
document.write(mat.sum(5,6));

Conceptualmente esto tambien es un array, aunque un array siendo puristas se declararía con corchetes en este caso se declara con llaves y se asocia un nombre a cada posición. El siguiente codigo tambien funcionaria aunque la invocacion sea algo diferente:

var mat = [1,2,function(){return 3;}];
document.write(mat[0]);
document.write(mat[1]);
document.write(mat[2]());

Hay que tener cuidado a la hora de invocar a las funciones. Como vemos las del ejemplo anterior tienen parametros y al incluir los parentesis son invocadas como funciones, pero al ser una variable de cualquier tipo podemos invocar funciones, no como su resultado, si no como el texto que está escrito en ellas. En wl siguiente código vemos dos variables y una función dentro del objeto

var mat = {
a:1,
b:2,
c: function(){return 3;},
}

Ejecutando esta llamada

document.write(mat.b+" "+mat.a+" "+mat.c());

obtenemos:

2 1 3

Pero si el elemento c no es invocado como función, es decir sin parametros:

document.write(mat.b+" "+mat.a+" "+mat.c);

obtenemos:

2 1 function(){return 3;}

Así nos responde con el texto que está asociado al elemento c, ya que sin parámetros no lo considera una función. En determinados casos no es así, de modo que hay que tener cuidado cuando se invoca una función con parámetros o sin ellos.

No es cuestion de ir declarando objetos por gusto, pero esto si que nos puede dar mucha potencia a la hora de montarnos una biblioteca potente donde todo esté empaquetado en un objetos. Por ejemplo para las comunicaciones asincronas (Ajax) lo suyo es montarse un objeto que haga todo lo que queramos y despues llamarlo desde Html. Hay que decri que para el caso de Ajax ya hay muchas bibliotecas hechas, así que si te quieres hacer una por practicar está bien, pero lo usual es utilizar una ya hecha y muy provada.

Strings en JavaScrit: métodos Quirksmode.org

Como consulta: muy básico w3schools.com

Al final en JavaScript parace que todo es un poco todo a la vez, por eso para programar directamente en JS hay que aceptar que según la vision del programador las funciones y las variables a veces son lo mismo.

, ,

1 Comentario

Moxicode. Para escribir guay en tu CMS

Moxicode es una empresa sueca que hace tiempo que me llama la atencón. Se dedican al negocio de la web, pero haciendo productos en javascript, php y .Net creo que también (el blog de Moxicode).

El producto estrella de moxicode es el tinyMCE. Para el que no sepa lo que es, en pocas palabras, es el compedino de código javascript que hace que escribas guay en tu wordpress xD.

Parece muy genérico pero es así. TinyMCE es el wysiwing más usado en los gestores de contenidos. En el último post sale una lista bastante larga de software web que incluye (por defecto o que se puede añadir) como editor de textos el tinyMCE.

En los premos a los CMS del 2009 el tinyMCE aparece incluido por defecto en:
Wordpress
Joomla
ImpressCMS
Pixie
Drupal
Plone
dotCMS
mojoPortal
SilverStripe
MODx

No menciono nada sobre otro software para la web que lo incluya (que creo será bastante) porque en estos premios no se menciona nada. Pero me parece que esto es lo que le hace a la gente “no tecnológica” que pueda escribir en un formato enriquecido sin tener ni idea de maquetación web.

La forma en que Moxicode monetiza su tinyMCE y sus otros productos relacionados es mediante el servicio de soporte. Su negocio es el del software libre, es decir, vender servicios no programas.

Si eres una empresa que aporta el servicio de generar contenido a tus usuarios te interesa una herramienta de estas. No tiene que ser solo para blogs, cualquier cosa del estilo google docs, o redes sociales (profesionales o de ocio) pueden estar interesadas en incluirlo. Y todos los que tengan intereses comerciales sobre el producto puede que necesite un asesoramiento de experto. Aquí es donde ellos son expertos, y sus precios (1700 euros por año para tinyMCE ) lo veo más que asequible para una empresa que gana usuarios (=dinero) por usar el software.

A parte de esto tienen otros servicos cerrados, pero que no siguen el sistema anterior, en parte porque están ofrecidos en su hosting propio y venden licencias de uso. Aunque en esta parte no esté tan de acuerdo, me gusta el hecho de que hay gente apostando (aunque sea en parte) por el software libre.

, ,

No hay Comentarios

Acerca del Sofware Libre: Cooperación sin mando

En este articulo[pdf] se mencionan tanto la historia como particularidades de la creacion de softare libre. Resumiendo las principales claves:

El software es una producción inmaterial del cerebro humano y tal vez una de las estructuras más complicadas que la humanidad conoce. El software permite poner en relación al ser humano y a la máquina y también a las máquinas entre sí.

La colaboración forma parte desde antiguo de los hábitos de la comunidad científica. Era tan normal como compartir recetas de cocina y ni siquiera se hablaba de “software libre”. Pero, a principios de los años ochenta, ese modelo entra en crisis, y rápidamente comienza a emerger un modelo privatizador y mercantilista.

El proyecto GNU nace de la mano de Richard M. Stallman, un hacker del emblemático Laboratorio de Inteligencia Artificial del Massachussets Institute Technology. El proyecto gnu se propuso a la sazón una tarea titánica: construir un sistema operativo libre completo.

El tío Stallman inventa el concepto de copyleft, con el propósito políıtico de garantizar la libre circulación de los saberes contenidos en el software y la posibilidad de que todos contribuyan a su mejora. La Licencia Pública General es la plasmación jurídica del concepto copyleft.

El tío Richard

El tío Richard

En los años noventa el proyecto GNU contaba con con un sistema operativo gnu ya casi completo. Faltaba el kernel o núcleo de sistema, una pieza fundamental y muy compleja. Sin ninguna relación con la Free Software Fundation (creada por Stallman), un estudiante finlandés llamado Linus Torvalds decide ponerse a escribir un kernel que pueda funcionar y sacar todo el partido de la arquitectura de 32 bits de los nuevos procesadores i386.

Muchas otras utilidades y aplicaciones basadas en software libre operan en servidores de todo el mundo y, de modo silencioso y transparente para el usuario de a pie, garantizan el funcionamiento cotidiano de Internet. El 62% de los servidores web de Internet se basa en un software libre llamado Apache, o en alguna versión modificada del mismo.

Linus Torvalds

El principal modelo de desarrollo del software libre es el “modelo bazar”, este modelo se contrapone al denominado “modelo catedral” basado en la necesidad de un arquitecto al mando de un staff rígidamente estructurado y jerarquizado y el estricto control de errores previo a la publicación. El modelo bazar de programación se resume en tres máximas:

  1. liberar rápido y a menudo
  2. distribuir responsabilidades y tareas todo lo posible
  3. ser abierto hasta la promiscuidad para estimular al máximo la cooperación.

Con bazar o sin él y más allá de su demostrado éxito a nivel organizativo y técnico, el software libre desafía la lógica interesada y mercantilista que parecía definitivamente asentada en lo social.

El clásico dilema entre “bien colectivo” versus “actitud egoísta” es superado por un axioma que recuerda vagamente al “dilema del prisionero” de la teoría de juegos.

Según el politólogo estadounidense Robert Axelrod: siempre acaban ganando las estrategias amables y clementes y siempre salen derrotadas las estrategias “sucias”. Por su parte, biólogos, genetistas y etólogos están cada vez más convencidos de que la “cooperación egoísta” es la dominante en la naturaleza.

La confusión con el tema de las licencias está debilitando progresivamente la filosofía de fondo del software libre, por eso la fsf se esfuerza tanto en explicar las diferencias entre unas y otras.

Por su parte, la Open Source Initiative (osi) no ha ayudado mucho a aclarar este panorama. Proponen el código abierto como sustituto del software libre sin incidir en las libertades de libre copia y libre redistrubución. Así han creado una ambigüedad aun mayor.

<digresión>

En mi opinión el desarrollo de software libre aporta claramente un beneficio a la sociedad. Es importante tener en cuenta las connotaciones éticas que esto conlleva. Es importante le desarrollo de un software eficiente, moderno, barato y amigable con el usuario, pero es principal que los bienes intelectuales como es el software seas accesibles a toda la humanidad y no solo a aquellos que puedan pagarlo.

</digresión>

1 Comentario

El blog simple (digresión)

La union de los distintos blogs generaría un blog completisimo con muchisimas funcionalidades.

Si nos ponemos a listar caracteristicas seguro que podemos sacar un diagrama de Venn de los blog en el que tuviesemos Wordpress, Movile Type y otros que también puedan ser interesantes por ejemplo.

Digo ya Wordpress y Movile Type porque ellos solos se llevan la mitad de blogs del top 100 de technorati.

La notica la vi en uberbin.net y si quereis ver la lista está en 21andy.com, muy interesante por cierto, aunque el blog sea asiatico la lista se lee claramente.

En post de pingdom post que intentaba sacar una estadistica similar también daban a wordpress como ganador, sin embargo estan las plataformas Typepad y Blogsmith antes de Movile Type. Pero solo enfoca blogs de lengua inglesa.

Recientemente me he encontrado con un blog que no buscaba, bueno no lo buscaba porque está escrito en Ruby on Rails y lo que quería era algo en PHP (ya que lo controlo más). Pero bueno no me cierro la posibilidad de aprender Ruby en el futuro cercano.

El blog al que me refiero es SimpleLog. La última versión es la 2.0.2, es decir que es algo ya maduro y supongo estable. Es simple en su uso pero no en su construcción.

Mi reciente descubrimiento me a dado que pensar en que podria ser lo minimo para tener un blog. ¿Cuantas clases/ficheros hacen falta para consturir uno?. Com esto es algo demasiado abstacto definamos mejor la pregunta. ¿Que características son indispensables para un blog?. Desde luego para cada uno seran unas, y en un mundo de plugins como es este seguro que cada cual le añade las particularidades que más le gustan. Pero en definitva lo MINIMO que tiene que tener un blog ¿que es?.

1- Que permita escibir posts (bueno, sin esta no seria un blog)

2- Que permita comentarios (algo de interacción con los lectores)

3- Manejo de Categorías/Etiquetas (en realidad si no fuese por tecnicas de busceda las etiquetas irian fuera, pero bueno podemos elegir solo una)

4- Apariencia personalizada (que esto no es el ataque de los clones todos iguales)

5- RSS (cuando uno tiene un agragador para leer quiere no tener que entrar a la página para leer los nuevos articulos)

En realidad el 4 y el 5 se pueden considerar opuestos, pero cada uno sigue una linea de lectores, los que prefieren una sensación visual a demas de la información, y los que unicamente miran el contenido.

Estas lineas definen lo que es un blog. Lo que tienen TODOS los blogs.

(Con el tiempo intentaré actulizar esta lista pero solo en caracteristicas indispensables para un blog) Si se os ocurre algo más también podeis comentar. Si es algo que cumplan TODOS los blog lo incluiré en la lista.

No hay Comentarios

Sistemas operativos en la nube

¿Serán el futuro todos los sistemas operativos basados en nube?
google-chromeChrome OS es el que más ha llamado la atención últimamente. Por supuesto se basa en toda la tecnología que google ha ido creando con el paso del tiempo.

Google en general siempre se está moviendo mucho no solo con el Chrome OS ( también con el lenguage GO ) y con el Chrome Browser y tenia que llegar el momento en que toda la plataforma google fuera servida para el usuario final. Es importante decir que el Chrome Browser para instalar en gnu/linux era bastante pesadilla.

Y no es que google siempre acierte (visto en mename), pero si se mueve por estos lares significa que hay un negocio emergente por el tema del sistema operativo en cloud.

JoliCloud

Jolicloud “un nuevo y guay OS para tu netbook” dicen. Recientemente han anunciado en su blog la pre-beta y aseguran que es compatible con el 98% de los netbooks.

Actualización: Yá está en beta y se puede descargar desde su página (descargar jolicloud) y también desde torrent ( torrent de jolicloud) que seguramente funcione mejor. Son aproximadament 600 megas.

En su manifiesto apoyan el tema del software “abierto” e internet, y creen que es el futuro.  Tienen una visión interesante:

El mundo en línea está tomando el poder de procesamiento fuera de nuestra computadoras, por lo que no se necesitarán máquinas costosas en el futuro. La web se mejora, por lo que no es necesario que reemplazar las máquinas todo el tiempo para ser capaz de ejecutar versiones más reciente de sistemas operativos o suites de oficina.

En definitiva no se distancian mucho de la postura que los diseñadores de sistemas operativos para nube tienen, pero lo orientan a maquinas baratas en el cliente ya que se obvia un servidor con potencia.

La primera alternativa de software libre que surgió fué EyeOS. Para que funcione el servidor solo necesitas Apache y PHP5. Así que para las empresas con pocos recursos este es una gozada. A demás es una iniciativa española que está interesando mucho en el extranjero.

Esta llegando la era de la información en la nube. Parece que se mueve gracias a las aportaciones del sofware libre, alta conexión a internet (cosa que en españa poco) y ordenadores de bajo coste. Aunque bueno esto último es relativo, lo que hoy es caro mañana es barato.

¿Nos veremos dentro de 10 5 años con un ordenador en el que no tengamos nada y todo esté en ‘internet’? Muy probablemente sí, aunque es muy radical decir que esa será la norma, por supuesto que no. Pero dentro de un tiempo, con ordenadores que pesan menos de 1 Kg y pueden ejecutar en Netbeans y el Eclipse a la vez sin atrancarse (xD eficacia probada) ¿por que no aventurarse a decir que sí?. Es algo que ahora tenemos parcialmente.

Con una cantidad de wi-fi’s urbanas gratuitas cada vez mayor, y servicios de ofimática como el google docs (ya se que es cutre pero para compartir documentos de forma sencilla es una caña) tienes bastantes problemas solucionados.

La teoría de que se puede vivir con aplicaciones web ya la he oído antes. Si me es posible redactaré una lista con productos sencillos. Y en general la ofimática está cubierta. El siguiente paso es programar vía navegador, compilar y probar vía web, es algo que ya no creo que se desarrolle o tenga exito.

, ,

No hay Comentarios