Junio 3rd, 2009

Unir tablas sin + SQL

La mayoría de los proyectos en los que he trabajado, siempre han tenido bases de datos mysql o oracle en su defecto, pero ultimamente estoy trabajando con PostgreSQL. Esta tiene ventajas como Triggers, herencias y demás que son motivos de por si solas para un nuevo artículo. Lo que voy a comentar en este, es que en oracle tenía la posibilidad de hacer una unión externa con el simbolo (+) en los elementos seleccionados.  Así consigo seleccionar los elementos que no tienen un reciproco en otra tabla. Mi duda era como hacer esto tanto en mysql como en postgreSQL aquí la respuesta

SELECT d.departamento, e.empleado
FROM dept d
LEFT JOIN emp e ON e.departamento = d.departamento

Lo que se hace, es invertir las para que la de la “izquierda” (LEFT join) se convierta en la más importante. También, la claúsula WHERE se encuentra eliminada y ahora el criterio de unión está en la claúsula “ON” del LEFT JOIN.

Marzo 16th, 2009

Columnas con la misma altura

El problema que planteo es el siguiente: tu creas tu layout con tres columnas y luego quieres que tus columnas, aunque dos de ellas no tengan contenido, lleguen siempre hasta la altura de la que más contenido tenga. Normalmente obtienes algo así:

Comlumnas css

¡No se alargan las columnas como quieres!, es debido a que lo normal, es que las columnas se expandan según el contenido que tengan. Una opción rápida y chapuzas, sería poner un display:block a cada columna con el height deseado. Pero ¿Y si este es el layout general?, ¡entonces tendríamos que cambiarlo a todas nuestras páginas internas!, vamos una locura y algo muy feo..

¿La solución?

Asignar a las tres columnas, un padding bajo muy grande (32768px es el número máximo de pixeles posibles) y a su vez un margin negativo igual de grande. A su vez, deberemos crear un contenedor global que oculte lo que sobra.

#izquierda, #central, #derecha {
padding-bottom: 32768px;
margin-bottom: -32768px
}

#contenedor {overflow: hidden}

Desventajas

  • Requiere de un contenedor div extra
  • Si vas a usar anclas en la misma página ( <a name=”seccion”></a> ) y este ancla estiviera dentro de esta columna, el contenido que esté antes de ese ancla desaparecerá y permanecerá invisible.
  • Me da un poco de rabia no haberlo encontrado antes :)

Febrero 6th, 2009

Esquinas Redondeadas

Con la llegada de los estándares CSS3, han surgido nuevas opciones para diseñar nuestras páginas. Entre ellas, las más interesantes que encuentro están, las transparencias, los degradados y las esquinas redondeadas.

Voy a hablar de estas últimas, es algo que los diseñadores siempre han conseguido insertando imágenes redondas al borde y listo. Actualmente, y gracias a los estándares css3 también lo podemos realizar mediante código css con estas instrucciones:

border-radius (estándar css)
-moz-border-radius (cuando se trataba de mozilla, aunque desde la versión 3.0 ya lo hacemos con la instrucción anterior)
-webkit-border-radius (safari y chrome)

El problema de hacerlo de este modo, es el de siempre, el maldito Internet Explorer, que ni en su versión 8 implementa estos estándares.
Una solución para tener las esquinas redondeadas en todos los navegadores, incluido Internet Explorer es usar JQuery Corners.
jQuery Corners es un plugin que nos permite realizar esquinas redondeadas de una manera bastante sencilla, sin imágenes o maquetación adicional y engorrosa en el código. Simplemente se define una clase y se aplica a un elemento HTML. Veamos como hacerlo:

  • Primero descarga jQuery y jQuery corners y haz el llamado dentro de las etiquetas y :
<script src="jquery.js" type="text/javascript"></script>
<script src="jquery.corner.js" type="text/javascript"></script>
  • Luego define la clase la cuál creará las esquinas redondeadas de la siguiente forma:
<script type="text/javascript">
<!--
$(document).ready( function(){
$('.redondas').corners();
});
// -->
</script>
  • Y por último simplemente aplica la clase a cualquier elemento HTML, como por ejemplo a un típico selector DIV:
<div class="redondas">
Contenedor con esquinas redondeadas.
</div>

Esta es la forma más básica de usar el script aunque posee varias opciones de configuración, como puede ser el radio de curvatura general o para cada una de las esquinas o también podemos aplicar el script a botones de un formulario. Todas estas las podemos consultar en el sitio oficial de jQuery Corners
Es soportado por la mayoría de los navegadores e inclusive por el iPhone.

Links | jQueryjQuery Corners

Enero 29th, 2009

Buscar y Reemplazar en Linux

Esta es una instrucción sencilla que quería compartir, y es que muchas veces me ha salvado incluso la vida, o por lo menos me ha quitado un dolor de cabeza, puesto que cambiar una palabra en un fichero es fácil, pero cuando se tratan de 100 ficheros…

grep -rlZ 'textoareemplazar' /ruta/ | xargs -r0 perl -pi -e 's/textoareemplazar/textonuevo/g'

Sirve sobre todo en servidores con mucha “morralla histórica” en la que queramos cambiar una frase/instrucción que se repite. Eso si, cuidado con su uso, si reemplazamos algo que no debemos podemos tener un caos!

Diciembre 15th, 2008

Vida Messenger

Aunque no usar videos de youtube para el blog, este video me ha traído muchos recuerdos. Está protagonizado por muchos de los miembros de los Antrifrikis, y comento. Los Antifrikis, en la facultad fueron los eternos rivales de los Sanakas, de donde yo era miembro. Dos buenos grupos de amigos, dos tipos de vidas paralelas y dos equipos de futbol que competían en la Liga Interna de la Facultad de informática.
Ellos estudiaban ITIS, nosotros ITIG, en algunas optativas, como en IAG donde hicimos algunas prácticas en OpenGl muy divertidas. Destaco que esta optativa fue la mejor de todas, tanto en FIG (Fundamentos de Interfaz Gráfica) como en IAG (Informática Gráfica Aplicada) se profundiza mucho en programación y son muy interesantes.

Navegando por YouTube, los he encontrado de casualidad en este video, y la verdad es que es original y muy bueno. Aquí dejo mi granito de arena haciéndolo un poco más público si cabe.

ACTUALIZACION: También salían miembros de los emoticonos, ellos ganaron la liga interna un año. Saludos a Ángel (compañero desde bachillerato y miembro de ese equipo), que crack!.

Link | Prácticas OpenGL

Diciembre 10th, 2008

Hacer miniaturas de Imágenes

Miniaturas

Quien no ha tenido alguna vez que crear una miniatura (Thumbnails), de sus imágenes automáticamente. Una opción puede ser añadirle el tamaño por css, o en la misma etiqueta <img, pero las imagenes se verían mal, puesto que están redimensionadas a tamaño completo.

Una opción muy buena, sin usar php y sin hacerlo manualmente, sería usar JQuery u JThumbs. Mediante el siguiente script tendremos las deseadas miniaturas:

<script type="text/javascript">
$(document).ready(function() {

// aquí realmente hacemos la miniatura
$("a.thumb, img.thumb").jThumb();
// Posicionar imagen (opcional)
$("a.thumb img, img.thumb").jThumbImg();
});
</script>

Lo unico que necesitamos es en enlace previo a nuestro framework favorito jquery:

<script type="text/javascript" src="jquery.js"></script>

Ventajas:

  • No sobrecargamos el servidor con otro script php.
  • Es un proceso automático.

Desventajas

  • La imagen carga entera (aunque visualmente satisfactoria).

Descarga | JQueryJThumb

Diciembre 10th, 2008

Oxite, el Gestor de contenidos de Microsoft

Logo Oxite

Microsoft ha lanzado Oxite, una gestor de contenidos de código abierto (como joomla, wordpress, oscommerce, etc) de producción propia. Las fuentes las podemos conseguir en la web de CodePlex bajo Microsoft Public License.
Este Gestor de Contenidos (GMS), está desarrollado C#, y se puede integrar con algunas herramientas de desarrollo tales como ASP.Net o Visual Studio. Todavía se encuentra en un estado alfa, por lo que por el momento, está destinado todavía a programadores interesados en depurarlo.
Oxite esta pensado para albergar tanto blogs, como sites más complejos como MIX Online, y pese a no estar finalizado, permite a los usuarios ya realizar comentarios, disponer de RSS y también permite a los los webmasters realizar pingbacks y trackbacks. También posee editores WYSIWYG.

Link | Oxite
Descargar | CodePlex – Oxite

Octubre 17th, 2008

Cajas de Igoogle

Llevo bastante tiempo intentando lograr hacer el efecto de arrastrar y soltar de las cajas de igoogle, hay poquísima información en la red respecto a cómo se consigue crear este efecto, a pesar de que es algo muy interesante a nivel de diseño.

Cajas Igoogle

¿Como he conseguido lograr el efecto? La base de todo es la clase prototype que podeis descargar desde ese link. Prototype es un framework hecho en JavaScript que se sirve para ayudar a un desarrollo sencillo y dinámico de aplicaciones web (como cualquier framework) con el uso de técnicas Ajax.
Luego mediante CSS, y definiendo las capas en el init() de javascript (se encuentr todo en el fichero index.html) podremos adaptarlo como queramos.

Enlaces |DemoPrototype

Octubre 13th, 2008

Estructurar una web con css

Cuando maquetamos una web, lo primero siempre es tener una estructura definida bien sólida 2 columnas -3 filas, 4 filas- 2 columna,.. etc. Siempre he defendido el trabajo sin tablas, y si eres iniciado y crear estas filas y columnas te cuesta, puedes optar por descargártelas desde  este link. Los chicos de IronMyers se han molestado en crear una serie de plantillas con muchas combinaciones.

estructuras

Como verás, el código quedará más limpio y estructurado, con la consecuente perdida de peso en nuestro site que nos ayudará a que cargue más rápido.

Octubre 2nd, 2008

Vuelta a la ciudad

Fry FuturamaDespués de 3 meses en órzola, he vuelto de nuevo a Arrecife, y con mi vuelta he decidido retomar el trabajo en mi blog. Lo había dejado aparcado debido a que en el pueblo del norte de Lanzarote no poseía ninguna conexión a internet. Realmente esto de que no me conecté es una verdad a medias puesto que aunque allí no tenía conexión si me conectaba en diversos lugares, como el trabajo, los días que bajaba a arrecife para ir al cine, etc.

En toda mi semi-ausencia del mundillo de la red, el principal cambio que he encontrado ha sido el navegador google chrome, y es que google nos deja caer que está trabajando, a largo plazo eso si, en un sistema operativo, ya que detalles como su ya consolidado gmail, el desarrollo de un s.o. para dispositivos portátiles (android), un nuevo navegador cuya novedad es el campo es un administrador de tareas, y el anuncio de que la próxima versión de ubuntu se hará en instalaciones de google,  denotan el objetivo de futuro que tiene la empresa con sede en California.

Otra de las novedades, es el 10º aniversario de lanzarote.com ( que coincide con el de google) la veteranía de estas webs, y el valor que google da a esto, es lo que hace que competir con ella a nivel de buscadores sea algo ya imposible. Para celebrarlo, hemos lanzado una nueva versión del site con novedades como rent a car en ajax, un sistema de rss por xml en todas las secciones importantes del site, integración de blogs con inserción de artículos  a las secciones del site, nueva cartelera de cine en ajax con visión de trailers oficiales, maquetación total con css y ninguna tabla :D , guía de viajes en ajax, etc.

Dejando el tema online, mi verano se ha centrado más que nunca en el deporte, hubieron buenos momentos para recordar, como las rutas órzola -  tabayesco – órzola (esa caída! edgar shh!).

Algo importante de este verano, ha sido descubrir mi afición por la carrera continua, llegando a pasar de 4 km en 28 minutos a los 10km en 58 de final de verano (esta cifra la dejamos en 50 en navidad ayo! el ritmo de cata pa verano xD). Esta afición por la carrera ha hecho que haya adquirido un Polar RS 200, compra que he realizado en sport area, cuando lo tenga en mis manos ya contaré que tal me va con el.

No quería terminar el artículo sin mencinar a el jodio mahoony, y a yeray y su propuesta de ruta del pingüino eso si es una ruta y no la de tabayesco de edgar. Mahoony a día de hoy me sigues debiendo un gym xD.

PS: ninguno de los personajes aquí descritos sabe de la existencia de mi blog jojo así que los podría haber puñalado un poco más. Un puñal que no sería por la espalda puesto que, ¡coño lo he publicado en la red!

PS2: La segunda parte de mi anterior post scriptum es una parida :S