La canción de la semana
Escuchala mientras lees los artículos del blog

Ene 5
Política nacional
Iñaki Gabilondo entrevista al Gran Wioming. No os perdais esta interesante pieza de video para entender al humorista y a una generación. El Gran Wioming ese médico, showman, músico, actor o/y gran comunicador que ha alcanzado grandes dosis de popularidad. El video no tiene desperdicio, no os lo perdais.


Publicado por Abraham Covelo

Mar 8
Articulos programación Sphinx es un motor para la búsqueda de textos open source (licencia GPLv2). Está desarrollado en C++ lo que lo diferencia claramente de su competidor Lucene que está desarrollado en java. El nombre Sphinx es un acrónimo inglés que significa SQL Phrase Index (índice de frase de SQL).

Sphinx es un paquete de software independiente que proporciona búsquedas en textos rápidas y relevantes. Como su nombre índica ha sido especialmente diseñado para integrar información almacenada en bases de datos SQL, y para ser fácilmente accesible por lenguajes de script (guión). Sin embargo, Sphinx no depende o requiere de ninguna base de datos específica para su funcionamiento y puede emplear otras fuentes de datos, como por ejemplo XMLs.

Las aplicaciones pueden acceder al servicio de búsqueda (llamado searchd) usando diversos métodos: API nativa (SphinxAPI), una implementación propia del protocolo de red de MySQL (empleando un subconjunto de instrucciones mySQL llamadas SphinxQL) o mediante un servidor MySQL empleando su propio motor de almacenamiento (SphinxSE)

Existe implementaciones nativas oficiales para PHP, Perl, Ruby y Java que están incluidos en el paquete de distribución pero ha sido portado a más lenguajes (Perl, C#, Haskell, Ruby-on-Rails, ...etc).

Sphinx soporta de manera nativa información procedente de MySQL, PostgreSQL y XML



Publicado por Abraham Covelo

Feb 26
Articulos programación Existen muchos puntos fuertes para el desarrollo de aplicaciones para móviles empleando PhoneGap. Pero los más interesantes son estos dos:

1) Phonegap te permite desarrollar en diferentes plataformas móviles y tablets empleando prácticamente el mismo código: Android, iPhone, iPad, Windows mobile, Bada, blackberry, symbian, ...
2) Phonegap no emplea nuevos lenguajes, simplemente utiliza javascript (interacción), html5, css3 (presentación).

Cualquier desarrollador web podría comenzar a crear aplicaciones móviles multiplataforma sin que supusiera un gran handicap. Además el desarrollador podría emplear la API del móvil pudiendo tener acceso a la geolocalización, camara, multimédia, vibrador, acelerómetros, brújula, contactos del móvil, archivos, redes, notificaciones, vibrador, etc

Además existen ya varios frameworks que te ayudarán a salvar las diferencias entre la web y la aplicación móvil en cuanto a interacción, presentación y usabilidad como por ejemplo xuijs, jQTouch y jQuery Mobile.

Para comenzar a utilizar phonegap basta con tener listo el SDK para el desarrollo para móviles de tu plataforma favorita. Para android por ejemplo basta con tener instalado eclipse 3.4 o posterior junto con una copia del SDK para android (http://developer.android.com/sdk/index.html) y el complemento ADT de eclipse.

A continuación hay que descargarse phonegap y comenzar un proyecto android en el eclipse.

1) Se crean los directorios /libs y /assets/www
2) De phonegap descargado se copian los archivos phonegap.js en /assets/www y phonegap.jar en /libs
3) En la clase Activity inicial del proyecto debe cambiar el extend Activity por extend DroidGap
4) Sustituir setContentView() por super.loadUrl("file:///android_asset/www/index.html");
5) Añadir el principio del fichero el import : import com.phonegap.*;
6) Añadir los permisos que vayas a utilizar para la aplicación (En el archivo AndroidManifest.xml debajo de versionName)
7) Colocar el archivo plugins.xml de phonegap en la carpeta /res/xml/

Y listos para programar en tu fichero index.html en /assets/www

Si tienes problemas y no quieres liarte con crear entornos de desarrollo para todas las plataformas puedes empezar a desarrollar directamente empleando PhoneGap build en http://build.phonegap.com/
Aquí puedes enviar tu código y recibir una aplicación lista para publicar en Market, ya sea IOS, Android, webOS, Symbian, BlackBerry, Windows Phone u otros dispositivos.


Para empezar a programar basta entender una lista de nuevos eventos y API que permiten acceder a las funcionalidades del móvil empleando sólo javascript

Como ejemplo, en phonegap está disponible el evento onDeviceReady:

<script type="text/javascript">
document.addEventListener("deviceready", onDeviceReady, false);

function onDeviceReady()
{
//llamada inicial a la API de phonegap
}
</script>


Este evento índica que se ha cargado el DOM del documento HTML y ya podemos comenzar a ejecutar nuestro código. Además tenemos estos nuevos eventos javascript disponibles en phonegap

backbutton
deviceready
menubutton
pause
resume
searchbutton
online
offline

Que permiten detectar los eventos propios asociados a un móvil para poder actuar en consecuencia. Creo que los nombres son bastante autoexplicativos.

Para acceder a toda la funcionalidad del móvil basta con estudiar la documentación de la API http://docs.phonegap.com/en/2.4.0/index.html (cuando escribí este articulo era la 2.4.0). Donde puedes ver como acceder a todo las funcionalidades del móvil empleando solamente javascript.

Espero que este artículo te sirva para atreverte con esta nueva tecnología


Robot volador logo de phoneGap

Publicado por Abraham Covelo

Ago 22
Articulos programación A pesar de que php es un lenguaje con un tipado débil. Esto significa que, para los tipos primitivos de datos, estos son convertidos automáticamente para poder operar con ellos sin que el programador tenga que hacer nada. Por lo tanto en la mayoría de las ocasiones esta operación de convertir int a string no es realmente necesaria. Sin embargo es posible que nos encontremos con algunos casos en la que si lo sea. Existen varias posibilidades para realizar esta operación:

Type casting

Basta con forzar la conversión empleando el cast (string). Exemplo:

$a = (string)345;
var_dump($a);

Funcion strval:

Directamente convierte una variable (no tiene porque ser un entero) en un string

$a = strval(354);
var_dump($a);


Conversión forzada
Forzar la conversión a cadena (string) empleando alguna operación que lo requiera

Podemos encontrar diversos ejemplos de esta técnica

$a = 456.""; //concatenación de cadenas

$b = 567;
$a = "$b"; //formación de cadenas


Benchmark

Haciendo un benchmark de todos estos métodos con una version de php 5.2.5

Este sería el código empleado:

<?php

echo 'PHP version: '.phpversion()."\n\n";

$microtime = microtime(true);
for($i=0;$i<1000000;$i++) $a = (string)567;
echo 'Método cast: '.(microtime(true)-$microtime)." segundos\n";


var_dump($a);

$microtime = microtime(true);
for($i=0;$i<1000000;$i++) $a = strval(343);
echo 'Función strval: '.(microtime(true)-$microtime)." segundos\n";


var_dump($a);


$b = 456;
$microtime = microtime(true);
for($i=0;$i<1000000;$i++) $a = $b.""; //concatenación de cadenas
echo 'Concatenación de cadenas: '.(microtime(true)-$microtime)." segundos\n";

var_dump($a);

$b = 567;
$microtime = microtime(true);
for($i=0;$i<1000000;$i++) $a = "$b"; //formación de cadenas
echo 'Formación de cadenas: '.(microtime(true)-$microtime)." segundos\n";


var_dump($a);
?>

Y estos los resultados obtenidos en mi caso:

PHP version: 5.2.5

Método cast: 6.115082025528 segundos
string(3) "567"
Función strval: 6.3874759674072 segundos
string(3) "343"
Concatenación de cadenas: 6.1379280090332 segundos
string(3) "456"
Formación de cadenas: 6.1571230888367 segundos
string(3) "567"


El método cast es el más rápido y la función strval la más lenta quizás debido a que este método tiene más funcionalidades. Los otros métodos parecen ligeramente inferiores en rapidez.

Tenemos otra artículo relacionado con este por si estas interesado en la conversión de int a string en java. Java es un lenguaje con el tipado más estricto que php por lo que conocer esta conversión de tipos para este lenguaje puede serte útil también.






Publicado por Abraham Covelo

(Página 1 de 37, en total 146 entradas)