Recent twitter entries...

  •  

Premios Fiasco 2010 (Fiasco Awards)

Posted by | Posted in noticias | Posted on 13-02-2010

0

Aquí os traigo los premios Fiasco 2010, que valoran los mayores errores de las compañías del año pasado.

Los finalistas son:

  • DRM
  • GOOGLE WAVE
  • HD-DVD
  • La interactividad de la TDT
  • iPAD
  • Videollamada
  • PSP GO!
  • XING

Yo ya lo tengo claro…. ¿¿y tú?? (Recuerda que tienes que votar entre el 9 de febrero y el 10 de marzo!!!)

Google Earth, ciudades en 3D (Madrid ya está!!!)

Posted by | Posted in Google Maps, noticias | Posted on 13-02-2010

0

No se por qué hace dos días se me ocurrió volver a instalar el Google Earth, de esas cosas que llevaba sin utilizar muchos, pero MUCHOS años…… Y sinceramente, vi que más o menos seguía igual, con unas pocas diferencias más o menos significativas:

  • Ahora se puede explorar las profundidades marinas (estuve viendo en 3D el titanic).
  • Hay muchas más ciudades en 3 dimensiones.
  • Se puede visitar no sólo la Tierra, sino también la luna, Marte y las constelaciones.

Pero bueno, a lo que vamos, casualmente, una ciudad que ha sido añadida hace menos de dos semanas al apartado de ciudades en 3 dimensiones ha sido Madrid. En el blog del equipo de Google Earth podéis verlo.

Y ya sin más, os dejo el resultado de estar 1 horilla jugando con la aplicación:

¿¿Sabéis a donde pertenece cada fotografía??

Bye Bye de Veoh

Posted by | Posted in noticias | Posted on 13-02-2010

0

Ayer se anunció la bancarrota de una de las empresas que más ha desarrollado el streaming en el mundo.
Para resumirlo en poco tiempo, decir que tuvieron problemas legales con (cómo no) una discográfica, y aunque fueron rebatidos y ganados los juicios en los tribunales, provocó su declive y ahuyentó a los posibles inversores.
Si queréis leer más acerca de ello, aquí tenéis la noticia.

Hello world de Twitter

Posted by | Posted in Video | Posted on 11-02-2010

0

Ahora os dejo un vídeo que encontré en un nuevo blog que ha abierto la gente del Twitter. El post de donde lo saqué es el siguiente.

En este vídeo se representa cómo ha evolucionado desde cero la archiconocida empresa Twitter, cómo ha comenzado con 2 programadores pasándose ficheros de uno a otro, como han ido apareciendo más programadores, como a lo largo del tiempo muchos han desaparecido…… Vamos, una forma visual de cuál ha sido la historia de la compañía desde abril del 2006 hasta enero del 2010 y cómo se ha producido el intercambio de ficheros entre todos.

CakePHP: Cómo subir aplicaciones a tu hosting

Posted by | Posted in Dominios, php | Posted on 10-02-2010

0

Hoy me he encontrado ante el problema siguiente: el navegador me daba error al probar una aplicación en remoto que funcionaba perfectamente en local. Esto es debido a que no había modificado el archivo index situado en la carpeta www (public_html) del host. Ese archivo index tiene que ser el siguiente:

/* SVN FILE: $Id$ */
/**
 * Short description for file.
 *
 * Long description for file
 *
 * PHP versions 4 and 5
 *
 * CakePHP(tm) :  Rapid Development Framework (http://www.cakephp.org)
 * Copyright 2005-2008, Cake Software Foundation, Inc. (http://www.cakefoundation.org)
 *
 * Licensed under The MIT License
 * Redistributions of files must retain the above copyright notice.
 *
 * @filesource
 * @copyright     Copyright 2005-2008, Cake Software Foundation, Inc. (http://www.cakefoundation.org)
 * @link          http://www.cakefoundation.org/projects/info/cakephp CakePHP(tm) Project
 * @package       cake
 * @subpackage    cake.app.webroot
 * @since         CakePHP(tm) v 0.2.9
 * @version       $Revision$
 * @modifiedby    $LastChangedBy$
 * @lastmodified  $Date$
 * @license       http://www.opensource.org/licenses/mit-license.php The MIT License
 */
/**
 * Use the DS to separate the directories in other defines
 */
	if (!defined('DS')) {
		define('DS', DIRECTORY_SEPARATOR);
	}
/**
 * These defines should only be edited if you have cake installed in
 * a directory layout other than the way it is distributed.
 * When using custom settings be sure to use the DS and do not add a trailing DS.
 */

/**
 * The full path to the directory which holds "app", WITHOUT a trailing DS.
 *
 */
	if (!defined('ROOT')) {
		define('ROOT', DS.'home'.DS.'USUARIO'); // TODO Usuario
	}
/**
 * The actual directory name for the "app".
 *
 */
	if (!defined('APP_DIR')) {
		define('APP_DIR','NOMBREdelaCARPETA'); // TODO Nombre Carpeta
	}
/**
 * The absolute path to the "cake" directory, WITHOUT a trailing DS.
 *
 */
	if (!defined('CAKE_CORE_INCLUDE_PATH')) {
		define('CAKE_CORE_INCLUDE_PATH',
		DS.'home'.DS.'USUARIO');} // TODO Usuario

/**
 * Editing below this line should NOT be necessary.
 * Change at your own risk.
 *
 */
	if (!defined('WEBROOT_DIR')) {
		define('WEBROOT_DIR', basename(dirname(__FILE__)));
	}
	if (!defined('WWW_ROOT')) {
		define('WWW_ROOT', dirname(__FILE__) . DS);
	}
	if (!defined('CORE_PATH')) {
		if (function_exists('ini_set') && ini_set('include_path', CAKE_CORE_INCLUDE_PATH . PATH_SEPARATOR . ROOT . DS . APP_DIR . DS . PATH_SEPARATOR . ini_get('include_path'))) {
			define('APP_PATH', null);
			define('CORE_PATH', null);
		} else {
			define('APP_PATH', ROOT . DS . APP_DIR . DS);
			define('CORE_PATH', CAKE_CORE_INCLUDE_PATH . DS);
		}
	}
	if (!include(CORE_PATH . 'cake' . DS . 'bootstrap.php')) {
		trigger_error("CakePHP core could not be found.  Check the value of CAKE_CORE_INCLUDE_PATH in APP/webroot/index.php.  It should point to the directory containing your " . DS . "cake core directory and your " . DS . "vendors root directory.", E_USER_ERROR);
	}
	if (isset($_GET['url']) && $_GET['url'] === 'favicon.ico') {
		return;
	} else {
		$Dispatcher = new Dispatcher();
		$Dispatcher->dispatch($url);
	}
	if (Configure::read() > 0) {
		echo "";
	}

Notas:

  • La carpeta de la aplicación y la carpeta del cake tienen que ir en el directorio raiz de nuestro hosting, y la carpeta public_html debe contener lo que en local poseíamos en la carpeta webroot, y que contenía todos los css, javascript,…. (y en el que se encontraba también el index que había que modificar).
  • Recordar que el archivo database.php es necesario modificarlo con los datos adecuados para enlazar la aplicación creada con la base de datos (esto es una nota para que no se me olvide).

Como añadir un subdominio en localhost con XAMPP

Posted by | Posted in Dominios | Posted on 09-02-2010

6

Pues hoy ante el problema que me encontré fue el del redireccionamiento desde el navegador de una página local.
Quería que simplemente insertando quesabesdelosnuevoscores.localhost directamente me dirigiera hacia la carpeta en donde se encuentra la página que estoy creando.

Pasos que seguí:

  1. Ejecutar en modo administrador el notepad.
  2. Abrir el archivo hosts que se encuentra en c:\Windows\System32\Drivers\etc
  3. Añadir la siguiente nueva línea: “127.0.0.1 quesabesdelosnuevoscores.localhost”.
  4. Abrir el archivo httpd-vhosts.conf que se encuentra en C:\xampp\apache\conf\extra\
  5. Añadir las siguientes líneas en la última parte del archivo.
<VirtualHost *:80>
DocumentRoot "C:/xampp/htdocs/proyectos/intel20minutos/webroot/"
ServerName quesabesdelosnuevoscores.localhost
</VirtualHost>

Modificando la ruta que va posterior al DocumentRoot y que corresponderá a la ruta local que tengas.

Nota:
Si es la primera vez que añades un subdominio es necesario también lo siguiente:

  • Modifica el archivo C:\XAMPP\apache\conf\httpd.conf descomentando la línea del rewrite (descomentar significa eliminar el # que tiene al comienzo). La línea quedaría de la siguiente forma: LoadModule rewrite_module modules/mod_rewrite.so

Google Maps, cómo insertar una marca en un mapa

Posted by | Posted in Google Maps | Posted on 08-02-2010

1

Insertar una marca en un mapa de Google Maps puede decirse que es el primer paso que ha de tomarse antes de intentar hacer ninguna otra tarea con su API. El código que os presento hoy es el siguiente:

function load() {
    if (GBrowserIsCompatible()) {
      var map = new GMap2(document.getElementById("map"));
      map.setCenter(new GLatLng(40.41689826118782,-3.7034815549850464), 17);
      map.addControl(new GLargeMapControl());
      map.setMapType(G_SATELLITE_MAP);
      var point = new GPoint (-3.7034815549850464, 40.41689826118782);
      var marker = new GMarker(point);
      map.addOverlay(marker);
   }
}

Si nos ponemos a explicar el código veremos que hemos seguido varios pasos:

  1. Creación del mapa.
  2. Configuración del centro y tipo de mapa,…
  3. Creación del punto.
  4. Creación de una marca con el punto que habíamos creado.
  5. Añadir esa marca al mapa mediante .addOverlay.

El resultado es el siguiente.

Como suscribirse al RSS de una página

Posted by | Posted in Web en general | Posted on 08-02-2010

0

La primera pregunta que nos podemos hacer es….. ¿Qué es el RSS de una página?
Básicamente, RSS es un conjunto de formatos de archivo diseñados para la distribución de contenidos. Algunos de los formatos son Rich Site Summary (RSS 0.9x), RDF Site Summary (RSS 0.9 y 1.0) y Really Simple Syndication (RSS 2.x).

¿Para qué sirve?
Lo interesante de este formato es que está pensado para las páginas web que suministran noticias o cuyos contenidos cambian a menudo, como por ejemplo periódicos o blogs. Para cada noticia, el autor genera un archivo RSS que puede ser capturado por cualquier programa preparado para ello (navegador, programa de coreo, agregador, etc). En mi caso voy a empezar a utilizar el suscriptor del navegador ópera para enterarme de las nuevas actualizaciones que se producen.
Y… ¿Por qué el del navegador ópera? Porque es el que me parece más limpio y ordenado (comparándolo con el de Firefox).

¿Por qué debería de utilizarlo?
En mi caso(esto es totalmente personal) porque es necesario que me encuentre enterado de nuevas noticias de determinadas páginas tecnológicas. Sino, ¿cómo podría “intentar” estar a la vanguardia de este mundillo? Y de esta forma, si me gusta un autor de blog, en vez de periódicamente ir a su página a ver si ha modificado algo, simplemente miro si hay algo nuevo en la pestaña de titulares (en el caso del navegador ópera).

Adsense de dominios, como ganar dinero sin necesidad de hosting

Posted by | Posted in Dominios | Posted on 08-02-2010

2

Hoy hablaré de una forma de ganar dinero gracias a adsense simplemente con la compra de un dominio. Eso significa que en ningún momento será necesario comprar el hosting para dicho dominio. Vamos, resumiendo aun más, que por alrededor de 6 euros al año ya puedes empezar a ganar dinero.

Podéis ver mi ejemplo en el dominio que contraté www.tarjetadecreditoonline.com. Si accedéis a él veréis que está lleno de publicidad gracias a una opción que hay dentro de adsense llamada adsense de dominio, que sólo solicita que redirecciones el dominio a los servidores de Google (Todos esos pasos se resumen en esta página). Entonces, cada vez que alguien llegue a dicha página y clique en la publicidad obtendré unos céntimos de euro.

Mi consejo en el caso de que queráis tener algún tipo de ingreso con ello es el de echarle imaginación y conseguir un nombre de dominio que pueda ser utilizado frecuentemente por la gente y que debido a ello los usuarios accedan frecuentemente a él. Ejemplo: si mi dominio se llamara www.facebok.com seguro que obtengo muchísimos más ingresos que si mi dominio se llama www.pepitogrillo2e.com. Ya sabéis a qué me refiero.

Nota: si tienes contratado el dominio con 1&1 como me pasó a mi tendrás un problemilla y será necesario que crees una cuenta en everydns.net (por ejemplo). Apuntar el dominio en 1&1 a esta cuenta de everydns y de ahí a los servidores de google.

Google Maps: Distancias entre dos puntos

Posted by | Posted in Google Maps | Posted on 06-02-2010

4

Hace unos días me encontraba ante el problema de cómo obtener la distancia entre dos puntos con la tecnología de Google Maps.

La solución que al final implementamos es la que puedes ver en esta página.

Tiene dos funciones principales, que son:
Initialize, que se ejecutará nada más cargar la página.

function initialize() {
  geocoder = new GClientGeocoder();
}

ShowLocation, que se ejecutará en el momento en que pulsemos el botón de calcular las distancias. Se encargará de tomar las direcciones, obtener el punto donde se encuentran y llamar a la función calculateDistance.

function showLocation() {
  geocoder.getLocations(document.forms[0].address1.value, function (response) {
    if (!response || response.Status.code != 200){
      alert("Lo siento, pero hemos sido incapaces de geolocalizar la primera dirección");
    } else {
      location1 = {lat: response.Placemark[0].Point.coordinates[1], lon: response.Placemark[0].Point.coordinates[0], address: response.Placemark[0].address};
      geocoder.getLocations(document.forms[0].address2.value, function (response) {
        if (!response || response.Status.code != 200){
          alert("Lo siento, pero hemos sido incapaces de geolocalizar la segunda dirección");
        } else {
          location2 = {lat: response.Placemark[0].Point.coordinates[1], lon: response.Placemark[0].Point.coordinates[0], address: response.Placemark[0].address};
          calculateDistance();
        }
      });
    }
  });
}

calculeDistance es la función que se encarga de calcular dicha distancia en kilómetros y en millas y sustituir el p con id results por una cadena con dicha información.

function calculateDistance(){
  try{
    var glatlng1 = new GLatLng(location1.lat, location1.lon);
    var glatlng2 = new GLatLng(location2.lat, location2.lon);
    var miledistance = glatlng1.distanceFrom(glatlng2, 3959).toFixed(1);
    var kmdistance = (miledistance * 1.609344).toFixed(1);
    document.getElementById('results').innerHTML = 'Dirección 1: ' + location1.address + ' (' + location1.lat + ':' + location1.lon + ')
Dirección 2: ' + location2.address + ' (' + location2.lat + ':' + location2.lon + ')
Distancia: ' + kmdistance + ' kilómetros (o ' + miledistance + ' millas)';
  } catch (error) {
    alert(error);
  }
}

Nota: Recuerda que si quieres exportarla a tu máquina local o a tu propia web necesitas modificar la clave API.