coge la información y corre

Trucos para hacer diseños en CSS más rápido y mejor

17 de febrero del 2008 Escrito por Alex Barros

Enfrentarse a crear una plantilla de diseño desde cero puede ser muy duro y desmoralizante. Por eso he reunido una serie de trucos que conviene tener a mano, para agilizar el proceso, y hacerlo algo más agradable.

Las tres reglas de oro

Lo primero y principal antes de empezar a escribir la plantilla, es definir estas tres reglas de oro del CSS. Se colocan al principio del archivo CSS, y sirven para evitar las discrepancias principales entre navegadores. Así nos evitamos más de un susto al comprobar si se ve igual en todos los navegadores.

  1. * {
  2.         padding:0;
  3.         margin:0;
  4. }
  5. body {
  6.         font-size: 76%;
  7. }
  8. img {
  9.         border-width: 0;
  10. }

Lo que hacen es inicializar todos los márgenes internos y externos a cero (de TODOS los elementos), prefijar un tamaño de letra uniforme para todos los navegadores, y eliminar el borde de las imágenes.

Conocer más sobre las tres reglas de oro del CSS.

Suelo añadir esta cuarta regla, que evita que salga un recuadro alrrededor de los enlaces al pulsarlos.

  1. a {
  2.         outline-style: none;
  3. }

(más info)

Centrar contenedores (elementos div) en CSS

Para centrar un contenedor en CSS, además de definir un ancho determinado, debemos asignar el valor auto al margen izquierdo y derecho del contenedor. Esto no da resultado en Internet Explorer, que requiere de la propiedad text-align: center. Si usamos las dos, nos aseguramos la victoria.
HTML:

  1. [...]<body>
  2.  
  3. <div id="contenedor">
  4.       <h1>Titulo</h1>
  5.       <p>Texto…</p>
  6. </div>
  7.  
  8. </body>

CSS:

  1. body {
  2.         text-align: center;
  3. }
  4. #contenedor{
  5.         text-align: left;
  6.         margin: 10px auto;
  7.         width: 80%;
  8. }

(más info)

Hacer columnas con CSS

Para crear varias columnas en un skin, debemos colocar elementos de bloque (div, ul, form…) que las representen, de forma contigua (uno al lado de otro) en nuestro HTML. A continuación, en el CSS usaremos la propiedad float, que “flota” un elemento a la izquierda o a la derecha, sacándolo del flujo de contenido.

Hay varias formas de aprovechar la propiedad float para crear columnas, algunos ejemplos:

Usando propiedad Float de CSS Usando propiedad Float de CSS
Usando propiedad Float de CSS Usando propiedad Float de CSS

Las flechas indican si se ha flotado a izquierda o a derecha, aúnque resulta bastante obvio.

Ejemplo, el código CSS para hacer que todos los elementos li de una lista, esté flotados a la izquierda, con un tamaño de 100×100 px:

  1. li {
  2.         width: 100px;
  3.         height: 100px;
  4.         float: left;
  5. }

Evitar solapamiento en la propiedad Float

Da definicion en el estándar de CSS, hace que la propiedad float saque al elemento del flujo, y provoca que el resto de elementos “lo ignoren” en muchos aspectos, como que el elemento que lo contiene no adapta su ancho para incluirlo.

Lo que quiero:
Lo que quiero
Lo que ocurre:
Lo que ocurre

Esto lo podemos solventar muy fácilmente.

Si queremos que un elemento que va a continuación de un float, no se vea afectado, le podemos dar la propiedad clear: both

Pero si el problema es que tenemos elementos “flotados”, y queremos que el contenedor los envuelva, nada más fácil que aplicar al contenedor la propiedad overflow: hidden. La explicación la encontraréis aquí

Todas las propiedades a mano

Es muy importante tener siempre las propiedades a mano, y sobretodo conocer las 95 propiedades del CSS 2.1 para conocer las herramientas de que disponemos. Podéis encontrar un agradable listado, muy bien explicado (en inglés) en CulturedCode CSS 2.1 Reference (es un recurso alucinante, muy muy útil)

Usar estructuras prefabricadas

Podremos ahorrarnos tiempo, si partimos de estructuras prefabricadas en CSS y HTML.

  • Layout Gala contiene muchas estructuras combinando tres elementos principales, cabecera y pié de página.
  • Css Easy te ofrece las principales configuraciones para skins, listas para descargar y manipular.
  • En Listmatic encontraréis muchos tipos de lista, para aplicar a menús, o a lo que queráis.
  • En CSS Showcase podréis encontrar muchos ejemplos de barras de navegación.

Plantillas ya elaboradas

Otro recurso es acudir a skins completamente elaborados, y extraer lo que nos interese de ellos. Algunos enlaces:
OpenSourceWebDesigns, FreeCssTemplates, Free-css-templates, TheStyleArchive, TemplateWorld

O recurrir a sitios donde muestran plantillas únicamente para inspirarte:
Inspirational CSS, CSSBeauty, Elegant Desighns

Por último, en del.icio.us (tag: css) podéis encontrar muchos recursos interesantes de CSS, y en Webéame (categoria diseño) otros tantos.

Categorias: Código, CSS, Diseño, Estándar, HOWTO/CóMO, HTML, Web | 14 comentarios »

Lenguajes esotéricos

12 de febrero del 2008 Escrito por Alex Barros

Hola de nuevo.

Ya hemos acabado los exámenes, y podemos volver a la carga. Para abrir boca, os presento una curiosidad que me llamó la atención hace un tiempo: los lenguajes de programación esotéricos.

Cito de la Wikipedia

Existen muchos lenguajes de programación especialmente extraños, muchos de los cuales fueron desarrollados con el propósito de resultar divertidos (en vez de útiles) para los programadores. Estos lenguajes esotéricos (o exóticos) se crean como un pasatiempo para los desarrolladores, que intentan hacer lenguajes lo más alejados de la forma de razonar humana, pero que al mismo tiempo sean Turing completos [...]

Me gustaría destacar unos pocos:

Brainfuck

El lenguaje Brainfuck (jode-cerebros) fue diseñado por Urban Müller con la intención de que fuera lo más simple posible para tener un compilado rápido y sencillo.

Consta únicamente de 8 instrucciones de un sólo carácter: incrementar y decrementar puntero, incrementar y decrementar byte apuntado, introducir byte en la corriente de salida, tomar valor del byte, y dos más para representar bucles.

Ook!

El lenguaje Ook! es una parodia del brainfuck, teóricamente diseñado para orangutanes ¿?. Las instrucciones se generan con combinaciones de las palabras (Ook., Ook?, y Ook!). Muy similar al anterior.

Whitespace

El lenguaje whitespace consiste únicamente en espacios en blanco, tabulador y línea nueva. Sorprende ver el “resaltado de código”, y pensar que eso es código fuente.

Podéis ver más de estos extraños lenguajes en la wikipedia

Categorias: Código, Curioso, Geek | 2 comentarios »

Texto web con formas raras. Adios rectángulos?

20 de diciembre del 2007 Escrito por Alex Barros

Acaba de lanzarse una herramienta del todo curiosa y particular.

Se trata de un generador de un código especial, para que en tu web el texto se acople a determinada forma o figura.

csstextwrap_2.png

Símplemente tienes que dar la forma que quieres con dos líneas (el márgen izquierdo y el derecho) y dejar que genere el código necesario.

csstextwrap.png

Aúnque no muy ortodoxa, la técnica es perfectamente accesible en términos web. Ahora, que esto desemboque en una buena idea, o en la horterada 2.0 premio a la usabilidad nula del 2007, ya no depende del sistema.

Categorias: Aplicaciones, Código, Curioso, Diseño | No hay comentarios »

Desenfoque gaussiano: cómo funciona + filtro para Imaset

18 de diciembre del 2007 Escrito por Alex Barros

Me he propuesto realizar el filtro de Desenfoque Gaussiano, y lo he conseguido. A continuación os muestro el algoritmo, y la descarga del filtro para quienes usen Imaset 2.1

El algoritmo

El filtro gaussiano consiste en la mezcla de los colores de una imágen para conseguir un efecto de desenfoque. Esta es una explicación muy general, y por supuesto el algoritmo es más complejo que esto.

En primer lugar, consideraremos la imágen como una matriz de puntos (pixeles), con unos valores determinados de rojo, verde y azul. A partir de aquí, los valores de cada punto de la nueva imágen, serán una combinación de los puntos cercanos. De esta forma, si un punto es de color rojo, y cercano a él hay puntos negros, este rojo se oscurecerá (y los negros se enrojecerán).

Intercambio de color entre pixeles cercanos

Pero para determinar cuáles son los pixeles que son cercanos, y los que no, se debe especificar al filtro un radio de acción. Con esto, si por ejemplo indicamos un radio de 10 pixeles, cada píxel de la nueva imágen se verá modificado por los todos los pixeles a menos de 10 unidades de distancia. Pero no todos los pixeles modifican con la misma “fuerza”, cuanto más cerca estén del pixel que se está modificando, más valor tendrán en el cálculo del nuevo color. Es aquí donde aparece nuestro simpático amigo Gauss.

La función de la distribución Gaussiana va a ayudarnos a adjudicar cuánto aporta cada pixel, en función de lo cerca o lejos que se encuentre. Esta función tiene la forma distribucion_gaussiana.png donde (x-b) es la distancia entre el pixel que está siendo modificado y el píxel del que se está tomando el valor, a y c valen 1, y f(x) resulta un número Real entre 0 y 1 que representa el porcentaje de influencia.

Resumiendo

Lo que está claro es que hay que mezclar los píxeles entre sí, y que usaremos un radio de influencia en que cuanto más lejos está un píxel de otro, menos le afecta.

Después de analizar el problema, y aplicar una fórmula estadística, podemos concluir que el valor de cada pixel es:

La suma de todos los píxeles dentro del radio R, multiplicados cada uno por distribucion_gaussiana.png (tal y como se ha descrito antes), y todo esto, dividido entre la suma de todos los valores de la fórmula distribucion_gaussiana.png en los puntos que intervienen.

Y todo eso es sólo para calcular uno de los tres componentes (Rojo, Verde o Azul) de un sólo pixel.

De modo que, a falta de una fórmula mágica de optimización, el efecto de desenfoque Gaussiano no es ninguna broma, realiza una cantidad muy elevada de cálculos (que aumenta junto al Radio y al tamaño de la imágen).

El archivo de descarga

Aquí os dejo el código fuente y la descarga del filtro Desenfoque Gaussiano para Imaset 2.1
Tened en cuenta que, como he dicho, es un filtro muy costoso, y aplicarlo puede llevar bastantes segundos.

La forma de poder usarlo es: descargar el archivo ZIP, descomprimir su contenido, y subir el archivo gaussian.xml al directorio “/filters” y el archivo es_ES.php al directorio “/lang

Ejemplo del filtro Gaussiano en Imaset

GaussGauss Desenfocado
Como se puede apreciar, realiza un toque de suavizado, si se aplica poco desenfoque (poco radio).

Código fuente

Os dejo como siempre el código fuente de este filtro.

  1. <filter>
  2.         <name>gaussian_blur</name>
  3.         <category>effect</category>
  4.         <parameters>
  5.                 <pa>$rad=5</pa>
  6.         </parameters>
  7.         <function>
  8.                 if(!$rad) $rad = 5;
  9.                
  10.                 $sx = imagesx($im);
  11.  
  12.                 $sy = imagesy($im);
  13.  
  14.                
  15.  
  16.                 for($x=-$rad;$x<$sx+$dar;$x++) // meto en una matriz los valores de colores
  17.  
  18.                 {
  19.  
  20.                         for($y=-$rad;$y<$sy+$rad;$y++)
  21.  
  22.                         {
  23.                                 if($x<0 || $y<0 || $x>$sx || $y>$sy)
  24.                                         $imatrix[$x][$y] = array($imaset->Red,$imaset->Green,$imaset->Blue);
  25.                                 else {
  26.  
  27.                                         $rgb = ImageColorAt($im, $x, $y);
  28.  
  29.                                         $r = ($rgb >> 16) & 0xFF;
  30.  
  31.                                         $g = ($rgb >> 8) & 0xFF;
  32.  
  33.                                         $b = $rgb & 0xFF;
  34.                                         $imatrix[$x][$y] = array($r,$g,$b);
  35.                                 }
  36.  
  37.                         }
  38.  
  39.                 }
  40.  
  41.                
  42.                 // Ahora voy a poner valores (calculandolos previamente)
  43.                 for($x=0; $x<$sx; $x++) { // recorro el array antes construido, pixel a pixel
  44.                         for($y=0; $y<$sy; $y++) {
  45.                                 unset($su1R,$su1G,$su1B,$su2,$sue); // inicializo
  46.                                 for($i=$x-$rad; $i<$x+$rad; $i++) { // circundantes en eje x
  47.                                         for($j=$y-$rad; $j<$y+$rad; $j++) { // circundantes en eje y
  48.                                                 $sue = round(pow(2.7,-(pow(($i-$x),2) + pow(($j-$y),2)))*100,4); //valor gaussiano de peso
  49.                                                 $su1R += $sue * $imatrix[$i][$j][0]; //Sumando de rojos
  50.                                                 $su1G += $sue * $imatrix[$i][$j][1]; //Sumando de verdes
  51.                                                 $su1B += $sue * $imatrix[$i][$j][2]; //Sumando de azules
  52.                                                 $su2 += $sue;
  53.                                         }
  54.                                 }
  55.  
  56.                                 imagesetpixel($im,$x,$y,imagecolorallocate($im,round($su1R/$su2),round($su1G/$su2),round($su1B/$su2)));
  57.                         }
  58.                 }
  59.  
  60.                 return $im;
  61.         </function>
  62. </filter>

Categorias: Código, Imagen Digital, PHP, Plugins | 4 comentarios »

Efecto 3DReflect para Imaset

15 de diciembre del 2007 Escrito por Alex Barros

Acado de crear un nuevo efecto para Imaset, el 3DReflect. Si estás usando la versión 2.1, podrás utilizar este nuevo filtro subiendo un pequeño archivo XML a la carpeta “/filters” del plugin.

El filtro

El efecto es similar al ya existente de Reflejo. La diferencia es que este efecto es tridimensional, dando un efecto de profundidad.

Cielo Abstracto

Descargas

Descarga el archivo de filtro 3DReflect y súbelo a la carpeta “/filters” para empezar a disfrutarlo.Se adjunta también el archivo de idioma Español es_ES.php, para tener la traducción de los parámetros de este nuevo plugin (súbelo a tu carpeta “/lang”).

Código fuente

Este es el código fuente del archivo XML. Todabía no he escrito la API para desarrollar filtros de Imaset, pero con este ejemplo, puede que alguien ya se atreva a intentar algo.

  1. <filter>
  2.         <name>3DReflect</name>
  3.         <category>decoration</category>
  4.         <parameters>
  5.                 <pa>$s=30</pa>
  6.                 <pa>$oi=60</pa>
  7.                 <pa>$pr=25</pa>
  8.         </parameters>
  9.         <function>
  10.                 //controlo los limites
  11.                 $s = $imaset->lim($s,300,1); //tamaño
  12.                 $oi = $imaset->lim($oi,100,5); //opacidad inicial
  13.                 $pr = $imaset->lim($pr,100,0); //profundidad
  14.  
  15.                 $sx = imagesx($im);
  16.                 $sy = imagesy($im);
  17.                 if($s>$sy) $s = $sy-1;
  18.                
  19.                 $x = $sx+2*$pr;
  20.                 $y = $sy+$s;
  21.  
  22.                
  23.                 $reflekt = imagecreatetruecolor($x,$y);
  24.                 $color = imagecolorallocate($reflekt, $imaset->Red,$imaset->Green,$imaset->Blue); //Fondo
  25.                 imagefilledrectangle($reflekt, 0, 0, $x, $y, $color); //Relleno el fondo       
  26.                 imagecopy($reflekt, $im, $pr, 0, 0, 0, $sx, $sy);
  27.  
  28.                 $reflekt = $imaset->resize($reflekt,’200%’,); //resize al doble por mejorar calidad
  29.  
  30.                 //hago el efecto conico de reflejo
  31.                 for($i=0;$i<=$s*2;$i++)
  32.                         imagecopyresampled($reflekt, $im, $pr*2-($pr*$i/$s), $sy*2+$i, 0, $sy-(round($i/2)+1), $sx*2+2*($pr*$i/$s), 1, $sx, 1);
  33.                
  34.                 $reflekt = $imaset->resize($reflekt,’50%’,); //resize a la mitad
  35.  
  36.                 //finalmente creo el efecto transparencia con una imagen comodin
  37.                 $bla = imagecreatetruecolor($x,1);
  38.                 $color = imagecolorallocate($bla, $imaset->Red,$imaset->Green,$imaset->Blue); //Fondo
  39.                 imagefilledrectangle($bla, 0, 0, $x, 1, $color); //Relleno el fondo
  40.                
  41.                 for($i=0;$i<$s;$i++)
  42.                         imagecopymerge($reflekt, $bla, 0, $sy+$i, 0, 0, $x, 1, 100-round($oi-($i*$oi/$s)));
  43.  
  44.                 return $reflekt;
  45.         </function>
  46. </filter>

Categorias: Código, Imagen Digital, Plugins, Wordpress | 1 comentario »

Solucionado problema del plugin Imaset 2.1

7 de diciembre del 2007 Escrito por Alex Barros

Tienes problemas para que funcione Imaset?
Hasta ahora algunas personas tenían problemas para que el plugin Imaset en la versión 2.1 les reconociera las imágenes.

Ya he conseguido dar con el problema, y he cambiado el archivo de descarga para que sustituyáis los archivos en el plugin.

El problema que ocasionaba esto es bastante complejo de explicar, pero está relacionado con la yuxtaposición de arrays. En el código de Imaset yo había optado por usar la función array_merge(), la cual une los arrays que le pases como parámetro, pero esta función no mantiene los índices numéricos, y para la aplicación era importante que los mantuviera.

La solución es usar el concatenador básico de arrays, es decir, el operador suma.

  1. $a1 = array(5=>"ABC",12=>"DEF");
  2. $a2 = array(30=>"PPP",50=>"UIO");
  3.  
  4. $a3 = $a1 + $a2;
  5.  
  6. /*  Ahora $a3 es:
  7. a3[5] = "ABC"
  8. a3[12] = "DEF"
  9. a3[30] = "PPP"
  10. a3[50] = "UIO"  */

Categorias: Aplicaciones, Boozox, Código, PHP, Plugins | 11 comentarios »

Manual completo y sencillo de Expresiones Regulares en PHP

4 de diciembre del 2007 Escrito por Alex Barros

Las expresiones regulares son una potente herramienta que nos permite contrastar un texto con un patrón de búsqueda. Esta tarea resulta fundamental en algunos programas, y en otros puede facilitarnos increíblemente el trabajo.

Regex

PHP permite dos tipos principales de funciones para expresiones regulares: las de tipo ereg (Expresiones regulares POSIX) y las de tipo preg (Compatibles con Perl). Son muy similares, aúnque las segundas llegan a ser algo más potentes.

Una expresión regular, consiste en comparar un patrón frente a un texto, para comprobar si el texto contiene lo especificado en el patrón.

Por poner un par de ejemplos:

Patrón: in
Coindicen:

  • intensidad
  • cinta
  • interior

Patrón: [mp]adre
Coindicen:

  • Mi madre se llama Luisa
  • Tu padre es jardinero

A continuación voy a repasar la sintaxis básica de una expresión regular
Sigue leyendo esta entrada »

Categorias: Código, HOWTO/CóMO, PHP | 39 comentarios »

La locura del JavaScript: Eventos de teclado

13 de noviembre del 2007 Escrito por Alex Barros

Trabajar en JavaScript ha tenido siempre una gran dificultad, y es que se trata de un lenguaje no estándar, interpretado por el cliente. Esto provoca desigualdades en los resultados, dependiendo sobretodo de los distintos navegadores, y sus respectivas versiones.

En el caso de los eventos de teclado este desmadre tiene un especial énfasis, y viene a demostrarse en este documento (en inglés) que paso a resumiros.

Eventos keyup keydown y keypress

Estos eventos son disparados en momentos distintos, dependiendo del navegador. Por ejemplo el mantener pulsada la tecla “Alt”, o el pulsar un caracter durante varios segundos, producen resultados distintos en cuanto al disparo de eventos, en cada navegador.

Interpretación de la tecla pulsada

Llegados al punto de que el usuario ha pulsado una tecla, querremos saber cuál de ellas ha pulsado. Pues el resultado también difiere entre navegadores (como era de esperar).

Para complicarnos la vida a los programadores, la codificación es distinta entre los principales navegadores. Aúnque en los caracteres normales (numeros y letras) hay una cierta uniformidad, la diferenciación del lugar donde se pulsan los números (hay dos series de números en un teclado normal), y la mayoría de los signos, adquieren claves distintas que los identifican.

Echa un vistazo a la tabla de códigos más abajo.

Tablas clarificadoras

Navegador Eventos enviados cuando se pulsan teclas modificadoras (Alt, Ctrl, etc)
Gecko
Internet Explorer
keydown
keyup
Opera
Konqueror
keydown
keypress
keyup
Safari
iCab
ningún evento
Navegador Eventos lanzados en cada autorepetición
Gecko (Linux)
Gecko (Macintosh)
Safari (Macintosh)
Konqueror
Opera
sólo keypress
Internet Explorer
Gecko (Windows)
Safari (Windows)
keydown
keypress
iCab keyup
keydown
keypress
Tecla Mozilla Internet Explorer Opera códigos pseudo ASCII
Teclas alfabéticas Código ASCII de la letra en mayúscula
[ Espacio ] 32 32 32 32
[ Enter ] 13 13 13 13
[ Tabulador ] 9 9 9 9
[ Retroceder ] 8 8 8 8
[ Shift ] 16 16 16 16
[ Control ] 17 17 17 17
[ Alt ] 18 18 18 18
izquierda 37 37 37 37
arriba 38 38 38 38
derecha 39 39 39 39
abajo 40 40 40 40
Números en el teclado Código ASCII del número (48 más el número), aúnque esté pulsado un modificador Código ASCII del caracter que será enviado.
[ ; : ] 59 186 59 59 (unshifted) o 58 (shifted)
[ = + ] 61 187 61 61 (unshifted) o 43 (shifted)
[ , < ] 188 188 44 44 (unshifted) o 60 (shifted)
[ - _ ] 109 189 45 45 (unshifted) o 95 (shifted)
[ . > ] 190 190 46 46 (unshifted) o 62 (shifted)
[ / ? ] 191 191 47 47 (unshifted) o 63 (shifted)
[ ` ~ ] 192 192 126 126 (unshifted) o 96 (shifted)
[ \ | ] 220 220 92 92 (unshifted) o 124 (shifted)
[ ' " ] 222 222 39 39 (unshifted) o 34 (shifted)
Números (teclado separado) 96 más número 48 más número (ASCII)

Recomiendo leer la fuente original (inglés).

Categorias: Código, JavaScript, Web | 9 comentarios »

Formas de ejecutar funciones en PHP

11 de noviembre del 2007 Escrito por Alex Barros

Aúnque a algunos les parezca extraño, existen tres formas distintas de ejecutar una función en PHP (por lo menos que yo conozca). Cada una puede venir bien en situaciones distintas.

Lo primero de todo, crearemos un par de funciones.

  1. function menor($a,$b){ return $a<$b ? $a : $b; }
  2. function mayor($a,$b){ return $a>$b ? $a : $b; }

La función menor() devuelve el menor de los dos números pasados como parámetros. La función mayor() hará lo contrario.

La forma clásica

La forma más típica de ejecutar una función, es símplemente escribiendo su nombre, seguido de unos paréntesis, con los parámetros separados por comas. De esta forma, al escribir:

  1. $a = 12;
  2. $b = 5;
  3.  
  4. echo "Entre $a y $b, el menor es ",menor($a,$b);

Nos devolvería el siguiente texto:

Entre 12 y 5, el menor es 5

Con la función call_user_func(_array)

Las función call_user_func nos permite ejecutar una función, dado el nombre en cadena alfanumérica.

La diferencia con call_user_fucn_array, es que en esta última los parámetros son pasados en un array.

  1. if($_GET[‘comparacion’] == ‘menor’) $func = ‘menor’;
  2. else $func = ‘mayor’;
  3.  
  4. $a = 17;
  5. $b = 32;
  6.  
  7. echo call_user_func($func,$a,$b);

Dependiendo de la variable GET comparación, se ejecutará una función u otra. La alternativa con call_user_func_array es:

  1. if($_GET[‘comparacion’] == ‘menor’) $func = ‘menor’;
  2. else $func = ‘mayor’;
  3.  
  4. $a = 17;
  5. $b = 32;
  6.  
  7. echo call_user_func_array($func,array($a,$b)); //parametros en forma de array

Directamente de una cadena

Esta es una forma sorprendente de ejecutar funciones. Parte de lo mismo que la anterior, el nombre de la función en una variable alfanumérica. Pero en este caso puede ser tratada directamente como función, así por la cara.

  1. $funcion = ‘menor’;
  2. echo $funcion(2,5); //Devuelve 2
  3. echo $funcion(8,-12); //Devuelve -12

Esta libertad recuerda a JavaScript, donde pueden igualarse variables a funciones de forma muy sencilla.

Conocéis alguna forma más? Os parece útil disponer de diferentes métodos para llamar a funciones?

Categorias: Código, Comparativa, Curioso, HOWTO/CóMO, PHP | 4 comentarios »

Flash en mi web? No gracias!

6 de noviembre del 2007 Escrito por Alex Barros

Estás pensando en hacer una web en flash? Piénsatelo dos veces!

Via Barrapunto encuentro este interesante apunte con cinco razones para no usar Flash. Son:

  • Pérdida de visitas (estrepitosa), por problemas en la indexación
  • Problemas con buscadores, por no haber un código accesible y marcado.
  • Problemas de visualización, por incompatibilidad de un software específico
  • Problemas de navegación, causados por un lenguaje no accesible para el navegador
  • Problemas de gestión y actualización, porque suele ser complicado unir un lenguaje de lado servidor con Flash

Recomiendo echar un buen vistazo, sobretodo a quienes aún no estén convencidos de las enormes desventajas de flash para crear toda una web.

Categorias: Código, Flash, Web | 6 comentarios »

« Entradas Anteriores Siguientes entradas »

del.icio.us meneame.net RSS

Search:

Bicivalencia Localiza las estaciones de Valenbisi, servicio público de bicicletas en Valencia, España. Ver más Gpsia Descubre y comparte rutas por todo el mundo, tomadas con GPS. Ver más Imaset Edita tus imágenes de Wordpress con este sencillo plugin. Ver más

¡Mi música es tuya!

Digo yo que...

Mis fotos de Flickr

Entradas recientes

Meta:

Respeta el copyleft

,