Gente desesperada

17 10 2008

Una compañera que está buscando compañera de piso se ha topado con este anuncio esta mañana…
screenshot005.png

El enlace aquí, pero no se lo que durará…

Entradas relacionadas




Plantilla para mostrar Google Maps en 4images

15 10 2008

¿Usas 4images y necesitas añadir una plantilla a tu template para mostrar archivos kml en la galería?

Copia el siguiente código en un archivo de texto, guardalo como kml.html y súbelo al directorio /media dentro de la carpeta del template que estés utilizando, y habilita los archivos kml como extensión válida de archivos que se pueden subir, en el panel de control de 4images.
Recuerda que debes sustituir donde pone “tuKeyDeGoogleMaps” en la primera línea por una clave que te proporciona google para permitir tener mapas en tu dominio.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
<div id="map" style="width: 700px; height: 500px">
</div>
<script src="http://maps.google.com/maps?file=api&v=2&key=tuKeyDeGoogleMaps" type="text/javascript"></script>
<script languaje="javascript">
	map = new GMap2(document.getElementById("map"));
	map.setCenter(new GLatLng(43.337164854911,-3.8960266113281),2,G_SATELLITE_MAP);
	map.addControl(new GSmallZoomControl());
	url = "{media_src}";
	url = "http://www.ambiental-hitos.com/4images/"+url.substr(2);
	geo = new GGeoXml(url, function cargado(){
		if (geo.loadedCorrectly()) {
		    geo.gotoDefaultViewport(map);
			if(map.getZoom() > 15){
				map.setZoom(15);
			}
		  }
	});
	map.addOverlay(geo);
</script>

y quedaría así:
captura www.ambiental-hitos.com/4images

Entradas relacionadas




Emular el selector max-width en IE con expression

14 10 2008

Hace poco descubrí la existencia de la etiqueta expression en los archivos CSS que permiten ejecutar una sentencia de javascript para dar valor a un selector.

Bien, lo primero decirte que evites esto totalmente salvo que sea realmente necesario, siempre que puedas, hazlo con cosas estándar.

Lo segundo, esto puede venir bien a la hora de limitar el ancho o alto máximo o mínimo de un elemento html en IE6 o anteriores ya que la etiqueta max-width no existe en ellos.

Un ejemplo extraído de aquí nos dice como usarlo:

1
2
3
4
5
6
7
8
9
10
11
<html>
<style>
p {
border:1px solid red;
width:width:expression(document.body.clientWidth > 800? "800px": "auto" );
}
</style>
<body>
<p>
[mucho texto]
</p>

De esta manera decimos que si el ancho de la ventana cliente es mayor que 800px, la mantenemos en 800px o si es menor, la dejamos automática. Ejemplo

Entradas relacionadas




Insertar imagenes en Excel desde C#

13 10 2008

Siguiendo con los post sobre cachitos de código que te hacen las vida más fácil (y que por lo visto hacen que aumenten las visitas del blog) hoy voy a hablar sobre como insertar una imagen en una hoja de Excel desde C# .NET

Todos estos fragmentos de código que voy subiendo solucionan problemillas concretos con los que me topo en los proyectos en los que trabajo y sobre los cuales tampoco encuentro información relevante en Google.

Empecemos, escribo el código y lo comento:

1
2
3
4
5
6
7
8
9
10
11
12
object oMissing = System.Reflection.Missing.Value;
Application apl = new Excel.ApplicationClass();
Workbook libro = apl.Workbooks.Open(@"c:\temp\archivoexcel.xls", oMissing, oMissing, oMissing, oMissing,
                  oMissing, oMissing, oMissing, oMissing, oMissing, oMissing, oMissing, oMissing, oMissing, oMissing);
 
#region Insertar imagen en excel
Excel.Worksheet sheet = (Excel.Worksheet)libro.Sheets[1];
System.Drawing.Image logo1 = System.Drawing.Image.FromFile(@"c:\temp\logoAena.png");
sheet.Shapes.AddPicture(@"c:\temp\logoAena.png", MsoTriState.msoFalse, MsoTriState.msoCTrue, 1f, 1f, logo1.Width, logo1.Height);
#endregion
 
libro.SaveAs(@"c:\temp\excel.xls", Excel.XlFileFormat.xlExcel9795, null, null, false, false, Excel.XlSaveAsAccessMode.xlNoChange, Excel.XlSaveConflictResolution.xlLocalSessionChanges, false, null, null, 0);

Vamos a ver línea por línea que hace cada cosa

2
3
4
Application apl = new Excel.ApplicationClass();
Workbook libro = apl.Workbooks.Open(@"c:\temp\archivoexcel.xls", oMissing, oMissing, oMissing, oMissing,
                  oMissing, oMissing, oMissing, oMissing, oMissing, oMissing, oMissing, oMissing, oMissing, oMissing);

Con estas lineas abrimos un archivo de Excel desde código, notaremos como se abre un proceso Excel.exe en el Administrador de Tareas, es necesario tener Excel Instalado e incluir la referencia al objeto COM: Excel Objects 11.0

7
8
9
Excel.Worksheet sheet = (Excel.Worksheet)libro.Sheets[1];
System.Drawing.Image logo1 = System.Drawing.Image.FromFile(@"c:\temp\ArchivoImagen.png");
sheet.Shapes.AddPicture(@"c:\temp\logoAena.png", MsoTriState.msoFalse, MsoTriState.msoCTrue, 1f, 1f, logo1.Width, logo1.Height);

Con esas líneas seleccionamos la primera hoja del libro que hemos abierto, luego cargamos una imagen en un objeto Image y con sheet.Shapes.AddPicture añadimos la imagen en las coordenadas 1,1 (ojo, no son celdas, son coordenadas en pixeles (y de tipo float)

12
libro.SaveAs(@"c:\temp\excel.xls", Excel.XlFileFormat.xlExcel9795, null, null, false, false, Excel.XlSaveAsAccessMode.xlNoChange, Excel.XlSaveConflictResolution.xlLocalSessionChanges, false, null, null, 0);

Con esa línea salvamos el archivo con el nombre que queramos y ya está, ya tenemos un excel con una imagen. No hace falta que el Excel esté vacío, podemos abrir un excel con contenido y poner la imagen donde queramos.

¿Te ha servido? Apoya este blog:

Entradas relacionadas




Capitalize string en javascript

9 10 2008

He encontrado por ahí una función muy útil para capitalizar cada palabra de un string en javascript, viene con autor y sitio web

1
2
3
4
5
6
7
//+ Jonas Raoni Soares Silva
//@ http://jsfromhell.com/string/capitalize [rev. #1]
String.prototype.capitalize = function(){
    return this.replace(/\w+/g, function(a){
        return a.charAt(0).toUpperCase() + a.slice(1).toLowerCase();
    });
};

Uso:
capitalizada = cadena.capitalize();
Ejemplo:
a="hola MUNDO mua hahahaha haha ha";
a.capitalize();
Devuelve:Hola Mundo Mua Hahahaha Haha Ha

objeto.prototype.metodo permite añadir métodos nuevos a objetos que antes no los tenian, así String.prototype.capitalize hace que se añada al objeto string un nuevo método llamado capitalize, el cual decimos que es una función con capitalize=function(){…}

/\w+/g es una expresion regular que hace que busquemos en la cadena cualquier dígito, letra o guión bajo (no espacios)(mediante \w), que haya almenos un carácter (con +) y que esté al comienzo (mediante /g).

Así por cada palabra llamamos a la función que hace mayúscula la primera letra y minúscula las demás y las devolvemos.

y si solo queremos poner en mayúsculas la primera letra de todo el string

1
2
3
String.prototype.capitalize2 = function(){
       return this.charAt(0).toUpperCase() + this.slice(1).toLowerCase();
};

Uso:
frase=cadena.capitalize2();
Ejemplo:
a="hola MUNDO mua hahahaha haha ha";
a.capitalize2();
Devuelve:Hola mundo mua hahahaha haha ha

¿Te ha gustado? ¿Un clic aquí?

Entradas relacionadas




Recursos para diseño web

8 10 2008

Para aquellos que nos gusta diseñar aplicaciones web o tenemos un blog en wordpress, vía Anieto2K encuentro un par de enlaces a 15000 iconos divididos en 7500 y otros 7500 y 70 temas para wordpress, a ver si algún día me animo y hago mi propio tema, aunque para variar ando enfrascado en varios proyectos :)

Y para aquellos que quieran depurar javascript pero no usan Firefox y no pueden descargarse la maravillosa e imprescindible extensión Firebug para depuración y desarrollo web, existe JSComandlet, para depurar javascript con javascript y es virtualmente funcional en cualquier navegador que soporte javascript (si, depurar javascript en internet explorer)

Anieto2k es un blog muy interesante para desarrolladores web ya que se tratan multitud de temas sobre javascript, CSS, Wordpress entre otras aplicaciones interesantes destinadas a la web.

Entradas relacionadas




Picasa Web Albums

7 10 2008

Picasa logo
Picasa es el organizador de fotos de Google, el cual te organiza las fotos por tags, favoritos, cronología, etc. Además tiene algunas virtudes como corregir automáticamente los ojos rojos de las fotos o el brillo y el contraste con un simple clic.

Al margen de estas cosas que siempre vienen bien, yo quería hablar de los álbumes web de picasa, que como habéis podido comprobar, me gusta usar. Desde el propio programa se pueden seleccionar las fotos de la biblioteca que queremos subir a internet para guardar o compartir con los amigos o con internet en general. Una vez subidas en su álbum apropiado, tiene una serie de características que lo hacen tremendamente interesante y que he estado trasteando con ellas recientemente.

Una de ellas es la posibilidad de geolocalizar nuestras fotos en caso de que no se incluyan datos geográficos en el EXIF de la imagen. Esta característica ya la tenía flickr aunque yo creo que se usa mejor en Picasa.

Otras dos opciones que hasta ahora sólo he visto en la versión inglesa de la aplicación, que siempre añaden las funcionalidades nuevas antes que el resto (yendo a settings y cambiando el idioma a Inglés USA), son: la posibilidad de incrustar (embed) un álbum en un sitio web mediante una presentación en flash la mar de resultona, y la posibillidad de detectar las caras de los individuos que aparecen en las fotos y etiquetarlos para su posterior identificación.

Me ha encantado la segunda, ya que los temas de reconocimiento facial me llaman mucho la atención, porque encuentra muy acertadamente las caras, aunque sean muy pequeñas dentro de la foto, y cuando no está seguro de a quién pertenece la cara, te muestra sugerencias bastante acertadas sobre de quién puede ser la cara que estás etiquetando. Aunque también me ha dado unos cuantos positivos tales como una llanta y una antena de una casa, al margen de pinturas y estatuas, he de decir que es muy acertado, y la verdad es que con la base de datos de imagenes de Google, sería super interesante poder buscar en internet todas las fotos con la cara de una persona, aunque como siempre, aunque no se hasta que punto, se estaría invadiendo la intimidad del individuo, aunque siendo fotos públicas, no debería ser demasiado grave salvo que esas fotos estén ahí sin su conocimiento/consentimiento.

Al menos hasta donde yo he visto, las caras que etiquetas en Picasa no son públicas salvo que tu decidas hacerlas, aunque si haces pública la cara de otra persona ya estás otra vez vulnerando la intimidad de la persona…

Entradas relacionadas




Fotos de Italia

7 10 2008

Estaba probando la presentación de fotos de los álbumes web de picasa y he decidido añadirla a la página de fotos de mi blog para que todos puedan ver las fotos del viaje sin necesidad de entrar a Picasa.

Dentro de poco haré un post contando el viaje, mientras tanto podéis ver las fotos aquí

Un aperitivo:

Un clic?

Entradas relacionadas




Social jBox, seleccion democrática de canciones

2 10 2008

Después de la Campus Party en la que participé con un juego programado entre 3 en 72 horas, me animé en aquello de los concursos de desarrollo y encontré un concurso de OpenMovilForum que también hacían acto de presencia y un concurso en la Campus.

Este concurso consistía en hacer un mashup con varias librerías de movistar que ellos proporcionaban y orientadas a servicios de terminales móviles tales como Envio/Recepción de SMS y MMS, Localización geográfica, videollamada, CopiAgenda, etc.

Me animé a participar, mayormente motivado por los suculentos premios de 6000€, y dos de 2000€ que otorgaban a los ganadores y que veía asequible de obtener al menos el tercer puesto (y que no fue así).

Para ello diseñé una aplicación de escritorio orientada a Bares y Pubs. Los usuarios envían un SMS a un número de teléfono proporcionado por el pub para hacer una de las dos siguientes cosas:

Una de ellas consiste en enviar un mensaje de texto con una palabra clave y ese mensaje es mostrado cada cierto tiempo en pantallas y monitores instalados en el local, de una manera similar a los mensajes de texto que se muestran en la parte baja de la pantalla del televisor durante los programas de debate. Dispone de una lista de palabras para filtrar los SMS con contenido ofensivo.

Otra de las opciones es poder elegir de forma democrática las canciones que suenan en el local al más puro estilo de jukebox (caja de música). Para ello hay listas publicadas en el local donde se muestra un código y una canción y los asistentes envían una SMS con la palabra clave seguida del código de la canción para agregarla a la lista de reproducción que está sonando en el local.

Para motivar a los asistentes a enviar estos SMS, se les premia con cupones de descuento o 2×1 o lo que se desee al enviar determinado número de SMS, que se les envía al móvil con el código del cupón. La idea inicial era enviar un MMS con el logo del local y el código pero por falta de tiempo solo se envía un SMS con el código.

Empleé SqLite como motor de base de datos por ser ligero, sencillo y no requerir instalación de ningúna cosa.
Para proyectar los SMS se usa Adobe AIR (como el Flash pero con acceso a base de datos) que lee los mensajes del fichero de sqlite y los muestra con fundidos en negro en una ventana.
Las librerías que originalmente estaban en PHP, Ruby y C++ se pasaron a C# (.NET Framework 2.0)
Se usa OpenPOP para acceder a una cuenta de correo donde llegan los SMS

Como digo no gané pero aprendi unas cuantas cosas interesantes y la aplicación funciona y es código libre bajo licencia Apache 2.0.

El wiki de proyecto se encuentra aquí
Los participantes aquí
Los ganadores aquí
El código y el instalador del proyecto aquí

De todos modos, si algún propietario está interesado en el proyecto, que contacte conmigo y veremos la forma de comercializarlo y sacarle partido así como mejorarlo y adaptarlo :)

Un clic aqui?

Entradas relacionadas




Me cago en…Spam

2 10 2008

Buenas!
Estamos de vuelta tras un pequeño parón debido a un problema con la base de datos. Resulta que teníamos un foro de phpbb por ahí abandonado pero como siempre, alcanzable por el omnipresente Google, y que algún maldito spammer había aprovechado para inundarlo de spam hasta tal punto que una tabla ocupaba 400MB y contenía más de 17.200.000 registros y que por supuesto ha sido purgada y el foro eliminado para evitar estos problemas.

Y es que no entiendo por qué sigue en aumento el Spam, cuando es evidente que no funciona, todos discernimos ya cuando un mensaje es de spam y lo borramos, filtramos, eliminamos, suprimimos y nos cagamos en el spammer, en su madre, y en toda su familia, le quemamos el coche y le plantamos una bomba en su casa.

Además como su nombre indica, es correopublicidad no deseada y que no vamos a hacer clic porque no nos interesa, para eso tenemos AdSense que por lo menos es publicidad contextual relacionada con lo que estás leyendo y que sí que puede ser de tu interés, como el siguiente anuncio:

que de paso podríais pinchar para apoyar este blog :)

Nos vemos!

Entradas relacionadas








¿Quieres ahorrar en tus viajes? ¡Ahora puedes!
Hoteles en Madrid |  Hoteles en Barcelona |  Vuelos baratos |  Ofertas de viaje