Hay que matar a FLASH

En los ultimos meses y con esta iniciativa de empresas como Apple de terminar con flash comenzo una especie de batalla virtual donde algunas empresas encargadas de la fabricacion de dispositivos (tablets por ejemplo) comenzaran a promocionar como positivo que sus dispositivos permitan la utilizacion del plugin de flash.

tambien siguen aferrados al producto de Adobe varios desarrolladores que comieron mucho tiempo gracias a flash.

Esto hizo que volvieran a surgir por parte de algunos clientes las ganas de incluirlo en sus proyectos.

ooootra vez comenzar a explicar las dificultades de SEO con flash?

otra vez explicar que hacer un slider en js va a ser mas liviano a nivel posicionamiento, un producto mas masificado y productivo a la hora de llegar a la mayor cantidad de usuarios?

por que usar flash para hacer un “video” donde la unica interaccion que tiene el usuario es que pueda mover el mouse con forma de cereza (o abeja o lo que se les ocurra)?

por que usar flash para poner una imagen de fondo con un texto encima que no va a interpretar correctamente google?

basta, YA EXISTE HTML5!

ok, pero queres animaciones? bueno css3 te lo permite.

de los que nos dedicamos a desarrollar para la web depende darle fin a flash de la misma forma que se hizo con IE6.

Muerte a Flash

Algunos enlaces:

Cristalab – El fin del Flash Player

compunoticias.com – Adobe lo admite: Apple ha ganado, es el fin del Flash para dispositivos móviles

actualidadiphone.com – Al final todos siguen a Apple, Microsoft dice NO a Flash en Windows 8

Teoria del unfollow (theory of unfollow )

Que pasaria si un usuario con miles de followers los perdiera de la noche a la mañana?

o que pasaria si una agencia de marketing que contrata Communities managers, o envia masivamente contenido pudiera en cuestion de horas tener miles y miles de followers divididos en las cuentas que quiera y ahorrar (o ganar) mucho (MUCHO) dinero?

A los que entienden algo de programacion les muestro un pequeño grafico que llame la teoria del unfollow :D podran ver que no es muy dificil darla vuelta y convertirla en la teoria del follow, no? ;)

no voy a explicar que hace o tiene, lo que llame caja negra, pero piensen en el ultimo eslabon de la cadena, el mas fragil. ahi radica sin dudas que no exista mayor nivel de complejidad.

y si este mismo formato lo llevaramos a otro tipos de productos similares?

ahora la pregunta es: sirve la utilizacion de la nube y la masificacion que otorgan las APIs pero hasta que punto es seguro para el usuario final?

me parece que en los proximos años hay que cambiar ciertas metodologias de seguridad para que no todo dependa de un simple “Allow”

teoria del unfollow

Boton +1 de Google como insertar en nuestra web

Con el boton+1 (+1button) de Google la idea captar votaciones de amigos y de usuarios acerca de contenidos en la web.

para poder agregar el boton+1 lo que necesitamos es por ejemplo en mi caso, desde la cuenta de Webamster tools podemos acceder a una nueva pantalla de configuracion de el boton+1 donde podemos elegir el tamaño de este y nos genera el codigo para insertar en nuestra web.

http://www.google.com/webmasters/+1/button/#utm_source=wmt&utm_medium=ui&utm_campaign=share

Referencia rapida de funciones para arrays en php

Mas de una vez me salvo este listado, con el detalle de lo que genran las funciones para arrays en php el post original esta posteado en helektron.com

array_change_key_case — Devuelve una matriz con todas las claves de las cadenas convertidas a mayúsculas o minúsculas
array_chunk — Divide una matriz en segmentos
array_combine — Crea una nueva matriz, usando una matriz para las claves y otra para sus valores
array_count_values — Cuenta todos los valores de una matriz
array_diff_assoc — Comprueba las diferencias entre matrices teniendo en cuenta los índices
array_diff_key — Calcula la diferencia de matrices usando las llaves para la comparación
array_diff_uassoc — Computa la diferencia entre matrices con un chequeo adicional de índices, el cual es realizado por una llamada de retorno entregada por el usuario
array_diff_ukey — Calcula la diferencia de matrices usando callback function on the keys for comparison
array_diff — Comprueba las diferencias entre matrices
array_fill_keys — Fill an array with values, specifying keys
array_fill — Llena una matriz con valores
array_filter — Filtra elementos de una matriz mediante una función “callback”
array_flip — Intercambia los valores de una matriz con sus índices
array_intersect_assoc — Calcula la intersección de matrices verificando que también coincidan los índices
array_intersect_key — Calcula la intersección de matrices usando las llaves para la comparación
array_intersect_uassoc — Calcula la intersección de matrices con chequeo de índices adicional por una función de usuario
array_intersect_ukey — Calcula la intersecció de matrices usando una función de usuario para la comparación de los índices
array_intersect — Calcula la intersección de matrices
array_key_exists — Comprueba si el índice o clave dada existe en la matriz
array_keys — Devuelve todas las claves de una matriz
array_map — Aplica la llamada de retorno especificada a los elementos de las matrices dadas
array_merge_recursive — Une dos o más matrices recursivamente
array_merge — Combina dos o más matrices
array_multisort — Ordena múltiples matrices, o matrices multi-dimensionales
array_pad — Rellena una matriz con un valor hasta el tamaño especificado
array_pop — Extrae el último elemento de la matriz
array_product — Calcula el producto de valores en una matriz
array_push — Inserta uno o más elementos al final de la matriz
array_rand — Selecciona una o más entradas aleatorias de una matriz
array_reduce — Reduce iterativamente una matriz a un solo valor usando una función llamada de retorno
array_reverse — Devuelve una matriz con los elementos en orden inverso
array_search — Busca un valor determinado en una matriz y devuelve la clave correspondiente en caso de éxito
array_shift — Extrae un elemento del comienzo de la matriz
array_slice — Extrae una porción de la matriz
array_splice — Suprime una porción de la matriz y la sustituye por otra cosa
array_sum — Calcula la suma de los valores en una matriz
array_udiff_assoc — Computa la diferencia entre matrices con un chequeo de índices adicional, comparando los datos con una llamada de retorno
array_udiff_uassoc — Computa la diferencia entre matrices con un chequeo de índices adicional, comparando los datos y los índices con una llamada de retorno
array_udiff — Computa la diferencia entre matrices, usando una llamada de retorno para la comparación de datos
array_uintersect_assoc — Calcula la intersección de matrices con chequeo adicional de ídices, comparando los datos por una función del usuario
array_uintersect_uassoc — Calcula la intersección de matrices con chequeo adicional de índices, compara los datos y los índices por una función del usuario
array_uintersect — Calcula la interseccón de matrices, compara los datos con una función del usuario
array_unique — Remueve valores duplicados de una matriz
array_unshift — Introduce uno o más elementos al principio de la matriz
array_values — Devuelve todos los valores de una matriz
array_walk_recursive — Aplicar una función de usuario recursivamente a cada miembro de una matriz
array_walk — Aplica una función del usuario a cada elemento de una matriz.
array — Crear una matriz
arsort — Ordena una matriz en orden inverso y mantiene la asociación de índices
asort — Ordena una matriz y mantiene la asociación de índices
compact — Crea una matriz que contiene variables y sus valores
count — Cuenta los elementos de una matriz o propiedades de un objeto
current — Devuelve el elemento actual de una matriz
each — Devuelve el siguiente par clave/valor de una matriz y avanza el apuntador
end — Mueve el puntero interno de una tabla al último elemento
extract — Importa variables a la tabla de símbolos desde una matriz
in_array — Revisa si un valor existe en una matriz
key — Obtiene una clave de una matriz asociativa
krsort — Ordena una matriz por clave en orden inverso
ksort — Ordena una matriz por clave
list — Asigna variables como si fueran una matriz
natcasesort — Ordena una matriz usando un algoritmo de “orden natural” sin distinguir mayúsculas de minúsculas
natsort — Ordena una matriz usando un algoritmo de “orden natural”
next — Avanza el puntero interno de una matriz
pos — Alias de current
prev — Rebobina el puntero interno de una matriz
range — Crea una matriz que contiene un rango de elementos
reset — Fija el puntero interno de una matriz a su primer elemento
rsort — Ordena una matriz en orden inverso
shuffle — Mezcla una matriz
sizeof — Alias of count
sort — Ordena una matriz
uasort — Ordena una matriz mediante una función de comparación definida por el usuario y mantiene la asociación de índices
uksort — Ordena una matriz por claves mediante una función definida por el usuario
usort — Ordena una matriz por sus valores usando una función de comparación definida por el usuario

php detectar encoding, evitar caracteres raros

estuve esta semana migrando un sitio con bastante info en diferentes formatos a una nueva version y a veces genera varios dolores de cabeza, cuando aparecen caracteres raros en la salida de la informacion.

por suerte mediante mb_detect_encoding(); podemos detectar la codificacion del texto y decidir q hacer.

Ejemplo:

$encoding = mb_detect_encoding($texto,”UTF-8, ISO-8859-1, GBK”);

if($encoding!=”UTF-8″){

$texto_final = utf8_encode($texto);
}
podemos usarlo de esa forma o enviandole los diferentes tipos de codificacion mediante un array.

$array[] = “ASCII”;

$array[] = “JIS”;

$array[] = “EUC-JP”;

echo mb_detect_encoding($string, $array);

espero que les sea util y les evite dolores de cabeza :)

Calendario semanal en php

Les dejo un pequeno modulo en php que genera la base para un calendario semanal (a pedido de adminfire, espero que te sea util)

el script recibe por get la fecha en la cual armamos la semana a partir desde un lunes hacia un domingo.

mostramos en 7 recuadros los dias de la semana con el orden de lunes a domingo y mostramos link hacia adelante o hacia atras para navegar.

estilos css:

codigo PHP comentado en cada accion:

< ?php

//con esta funcion una vez q tengo los dias de la semana traigo el nombre en español de cada dia

function diaespanol($valor){

$valor = strtotime($valor);

switch (date(‘w’, $valor)){

case 0: $titleday =”Domingo”; break;

case 1: $titleday =”Lunes”; break;

case 2: $titleday =”Martes”; break;

case 3: $titleday =”Miercoles”; break;

case 4: $titleday =”Jueves”; break;

case 5: $titleday =”Viernes”; break;

case 6: $titleday =”Sabado”; break;

}

return $titleday;

}

function mesydia($valor){

$mes = substr($valor,5,+2);

$dia = substr($valor,8,+2);

switch ($mes){

case ’01′: $titulomes =”Ene”; break;

case ’02′: $titulomes =”Feb”; break;

case ’03′: $titulomes =”Mar”; break;

case ’04′: $titulomes =”Abr”; break;

case ’05′: $titulomes =”May”; break;

case ’06′: $titulomes =”Jun”; break;

case ’07′: $titulomes =”Jul”; break;

case ’08′: $titulomes =”Ago”; break;

case ’09′: $titulomes =”Sep”; break;

case ’10′: $titulomes =”Oct”; break;

case ’11′: $titulomes =”Nov”; break;

case ’12′: $titulomes =”Dic”; break;

}

return $titulomes.’, ‘.$dia;

}

//el dia desde el q comienzo a mostrar es recibido por get, en caso de no venir tomo como base el dia actual.

$dia=$_GET['dia'];

if($_GET['dia']==”"){

$dia = date(‘Y-m-d’);

}

//con este switch saco la fecha del dia inicial del calendario de la semana de 7 dias de lunes a domingo

$diarecibido =$dia;

$diasemana = strtotime($dia);

switch (date(‘w’, $diasemana)){

case 0: $titleday =”Domingo”; $menos=6;

$iniciosemana = date(“Y-m-d”, strtotime(“$diarecibido -$menos day”));

break;

case 1: $titleday =”Lunes”; $menos=1;

$iniciosemana = $diarecibido;

break;

case 2: $titleday =”Martes”; $menos=1;

$iniciosemana = date(“Y-m-d”, strtotime(“$diarecibido -$menos day”));

break;

case 3: $titleday =”Miercoles”; $menos=2;

$iniciosemana = date(“Y-m-d”, strtotime(“$diarecibido -$menos day”));

break;

case 4: $titleday =”Jueves”; $menos=3;

$iniciosemana = date(“Y-m-d”, strtotime(“$diarecibido -$menos day”));

break;

case 5: $titleday =”Viernes”; $menos=4;

$iniciosemana = date(“Y-m-d”, strtotime(“$diarecibido -$menos day”));

break;

case 6: $titleday =”Sabado”; $menos=5;

$iniciosemana = date(“Y-m-d”, strtotime(“$diarecibido -$menos day”));

break;

}

//creo los link de siguiente y anterior

$linkanterior = date(“Y-m-d”, strtotime(“$iniciosemana -1 day”));

$linksiguiente = date(“Y-m-d”, strtotime(“$iniciosemana +8 day”));

echo ‘

AnteriorSiguiente’;

//echo ‘Dia recibido: ‘.$dia.’, ‘.$titleday.’ y el inicio de semana es : ‘.$iniciosemana.’
’;

//creo calendario

echo ‘

’;

for($i=0; $i<7; $i++){

$mostrable =date(“Y-m-d”, strtotime(“$iniciosemana +$i day”));

$titleday=diaespanol($mostrable);

if($titleday==’Sabado’ || $titleday==’Domingo’){$findesemana=’style=”background:#FF0033″‘;}else{$findesemana=”;}

echo ‘

’.$titleday.’

’.mesydia($mostrable).’

’;

}

echo ‘

’;

?>

convertir imagenes en blanco y negro con php

Les dejo una pequeña funcion en php que se encarga de crear imagenes en blanco y negro o escala de grises como quieran llamarle.

la utilizacion de la funcion es bastante sencilla.

una vez incluida la funcion en el arcivo que querramos utilizarla debemos pasarle como parametros

la imagen, la extencion de la imagen (jpg, gif, png) el nombre final que querramos para nuestra imagen en blanco y negro

y por ultimo la carpeta destino. donde se guardara nuestra imagen en blanco y negro creada mediante php

function grayscale($archivo,$tipo_archivo,$nombrefinal,$destino){
$file = $archivo;
$nombrefinal =$nombrefinal;
list($width, $height) = getimagesize($file);
if($tipo_archivo==’image/jpeg’){
$source = imagecreatefromjpeg($file);
}
if($tipo_archivo==’image/png’){
$source = imagecreatefrompng($file);
}
if($tipo_archivo==’image/gif’){
$source = imagecreatefromgif($file);
}
$bwimage= imagecreate($width, $height);
for ($c=0;$c<256;$c++){
$palette[$c] = imagecolorallocate($bwimage,$c,$c,$c);
}
function yiq($r,$g,$b){
return (($r*0.299)+($g*0.587)+($b*0.114));
}
for ($y=0;$y< $height;$y++){
for ($x=0;$x<$width;$x++){
$rgb = imagecolorat($source,$x,$y);
$r = ($rgb >> 16 ) & 0xFF;
$g = ($rgb >> 8 ) & 0xFF;
$b = $rgb & 0xFF;
$gs = yiq($r,$g,$b);
imagesetpixel($bwimage,$x,$y,$palette[$gs]);
}
}
imagejpeg($bwimage,$destino.$nombrefinal,100);
}//end function
function grayscale($archivo,$tipo_archivo,$nombrefinal,$destino){
$file = $archivo; $nombrefinal =$nombrefinal; list($width, $height) = getimagesize($file);

if($tipo_archivo==’image/jpeg’){$source = imagecreatefromjpeg($file);}if($tipo_archivo==’image/png’){$source = imagecreatefrompng($file);}if($tipo_archivo==’image/gif’){$source = imagecreatefromgif($file);}
$bwimage= imagecreate($width, $height);
for ($c=0;$c<256;$c++){$palette[$c] = imagecolorallocate($bwimage,$c,$c,$c);}
function yiq($r,$g,$b){return (($r*0.299)+($g*0.587)+($b*0.114));}
for ($y=0;$y< $height;$y++){
for ($x=0;$x<$width;$x++){$rgb = imagecolorat($source,$x,$y);$r = ($rgb >> 16 ) & 0xFF;$g = ($rgb >> 8 ) & 0xFF;$b = $rgb & 0xFF;$gs = yiq($r,$g,$b);imagesetpixel($bwimage,$x,$y,$palette[$gs]);}
}
imagejpeg($bwimage,$destino.$nombrefinal,100);

}//end function

consulta por fechas mayor o menor a hoy en php

me consultaron vie email la forma de hacer hacer una consulta en un sistema de reservas de usuario para ver las reservas a partir del dia actual

lo primero que debemos hacer es generar una variable con la fecha actual, teniendo en cuenta la forma en la que se almacenan las fechas en nuestra tabla en mysql

esta puede ser con el año en primer lugar o al ultimo ($today = date(“Y-m-d”); 0 $today = date(“d-m-Y”);)

luego hacemos la consulta de la siguiente forma.

$today = date(“Y-m-d”);

$sql =”SELECT * FROM reservas WHERE fecha>=’$today’ AND id_usuario = ‘$id_usuario’ ORDER BY fecha DESC ;”;

animaciones con css

a mover los divs con css

Les dejo el link de Mozilla donde hay info interesane acerca de la forma en la que podemos crear animaciones con css

basicamente se trata de utilizar la propiedad animation y de la cual dependen sub-propiedades como

animation-delay
animation-direction
animation-iteration-count
animation-name
animation-play-state
animation-timing-function

sera cuestion de jugar un poco y ver como podemos lograr diferentes tipos de animaciones con css.

https://developer.mozilla.org/en/CSS/CSS_animations