Punksolid Tecnologia, Curiosidades, Sistemas de Informacion y un poco de Religion

18ago/112

De las Manifestaciones Méxicanas

Anonymous

En México, nos han vendido que las manifestaciones son para atrasar a los demás, estorbos, un acto inútil, como mexicanos compramos la idea desde hace mucho, pocos se manifiestan. Lo curioso es que los inconformes son o somos muchos, ¿que pasa con eso que solo se quejan? ¿por que no dan el brinco a la manifestación? a ¿que le temen?,

De las posibles causas de la apatía

Creo que uno de los problemas es que esperamos a sentirnos identificados con todos los aspectos de cualquier movimiento, algo sin duda muy difícil ya que no hay dos mentes iguales, debemos encontrar el punto en común y potenciarlo, así como mantener al movimiento lo mas objetivo posible, cosa también difícil por que siempre habrá grupos que querrán adueñarse de los movimientos y hacerlos a su manera con todo y atribuciones, tal como pasó con el movimiento de Javier Sicilia, que empezó al menos recuerdo, como una exigencia a las autoridades a hacer su labor, y actualmente pareciera ser una petición para sacar al ejercito de las calles, o como está pasando en las manifestaciones por la educación chilena, que grupos radicales actúan con violencia para perseguir el mismo fin que miles o millones de chilenos pacifistas desean, obviamente el morbo vende y los medios muestran a mas vándalos con bombas molotov, que a estudiantes con cacerolas y batakas.

Pero el principal motivo es el miedo, esa razón que solo existe en las mentes de las personas, que ha sido cultivada por años por los medios y el boca a boca, y es que no la tenemos tan fácil como las manifestaciones pacificas de los españoles por que sabemos que aquí armas sobran, el problema es que la gente de bien no tiene, ni quiere usarlas. Además de que tampoco conocemos al enemigo, ni siquiera lo hemos definido, mientras unos dicen que el enemigo es el narcotráfico, otros dicen que son los políticos, y así con la pelotita saltando entre ambos, como sociedad estamos confundidos de a quien agradecer y a quien ignorar, aunque por practicidad terminamos agradeciendo  y temiendo a ambos.

Del dicho al hecho

Como mencionaba, millones de mexicanos están inconformes, violencia y pobreza es lo que mas se escucha, ¿que hace falta? no creo que la policía mexicana sea mas civica que la española, pero aquí la policía no ha golpeado a decenas de manifestantes, y es claramente por que no necesitan dispersar a nadie, la misma sociedad ha mantenido el lema de que "somos el país en el que no pasa nada", no creo que el problema sea del país, es de nosotros, por clavarnos ese tipo de "ideas" como si fuesen teorías científicas.
Para romper la inercia que nos ha mantenido en nuestro confort durante tantos años necesitamos:

  • Mostrar a la sociedad que manifestarse es nuestro derecho y oportunidad de cambiar lo que no nos gusta.
  • Hacer a las manifestaciones atractivas.
  • Infundir miedo.

La población ignora que tiene el poder, por que pocas veces hemos hecho valer nuestros derechos a manifestarnos de manera masiva, sumando en lugar de fragmentando, que eso, ojalá podamos ver mas hacia el exterior para aprender de países como Egipto que logró la dimisión de Hosni Mubarak (ver video abajo), ganándose incluso la simpatía del ejercito (al fin y al cabo también son humanos), tengo esperanza de que mi localidad haya aprendido algo de las pasadas elecciones, que  por primera vez en la historia se eligió a un político de otro partido. En cambio, las manifestaciones tradicionales son para pedir, y ya no estamos para esas gentilezas, lo que tenemos que hacer es exigir, y hacerlo de manera creativa, las huelgas de hambre ya son aburridas, necesitamos algo nuevo, y masivo, que se manifiesten artistas y ciudadanos, no sindicatos victimizados, no a todos les interesa ir a un lugar a hacerse las víctimas, pero si a casi todos nos gustan las fiestas, sonidos y colores. Si el miedo es un método de control, usemoslo!, infundamos miedo a la población explicándole que pasaría si no hacen nada, o que está pasando ya por su omisión, aprovechemoslo a nuestro favor con información verídica y enfocada, solo si el miedo que infundamos es mayor que el miedo que los mantiene inertes se logrará, al final  el primero de los miedos desaparece, si no hacemos nada el segundo permanece.

Esperanza

Todo es relativo y el futuro es incierto, posiblemente la ciudadanía esté en un estatus de confort, con miedo y hambre, pero agusto, muchos han aprendido a vivir así por años, ese confort al que me refiero es similar al que tienen los estadounidenses, que olvidan las guerras que tienen solo por que no quieren perder los privilegios en los que han nacido y crecido, por acá sucede igual, hemos vivido en un confort otorgado por el narcotráfico, ha desaparecido de nuestra visión la prepotencia y corrupción, no queremos verlas por que no queremos perderlas. Por eso tal vez las cosas no cambien, hasta que nos demos cuenta que lo hemos perdido todo.

16ago/110

Autocompletar con scriptaculous

Lo que vamos a hacer es un cuadro search box como el google suggest, que a diferencia de este, no haremos una petición ajax al servidor ya que tendremos los valores precargados en una variable javascript, útil cuando los registros son pocos y estáticos.
Reconozco que a estas alturas medio mundo usa jquery, pero como persona de escaso conocimiento en el área, para el propósito me sirvió prototype y scriptaculous.

Lo primero que tenemos que hacer es descargar scriptaculous, y extraemos todos los js dentro de una carpeta javascripts.

El siguiente paso es crear el archivo css.css para darle un diseño bonito al recuadro de opciones que aparecerán conforme vayamos escribiendo, el código de css.css es

 

div.autocomplete {
  margin:0px;
  padding:0px;
  width:250px;
  background:#fff;
  border:1px solid #888;
  position:absolute;
}
 
div.autocomplete ul {
  margin:0px;
  padding:0px;
  list-style-type:none;
}
 
div.autocomplete ul li.selected {
  background-color:#ffb;
}
 
div.autocomplete ul li {
  margin:0;
  padding:2px;
  height:32px;
  display:block;
  list-style-type:none;
  cursor:pointer;
}

El tercer paso es crear el archivo autocompletar.html donde incluiremos los javascripts de prototype y scriptaculous, automáticamente se incluirán todas las dependencias.

 

<script type="text/javascript" src="javascripts/prototype.js"></script>
<script type="text/javascript" src="javascripts/scriptaculous.js?load=effects,controls">
</script>
<script type="text/javascript">
var bandsList = [
  'ABBA',
  'AC/DC',
  'Aerosmith',
  'America',
  'Bay City Rollers',
  'Black Sabbath',
  'Boston',
  'David Bowie',
  'Can',
  'The Carpenters',
  'Crass',
  'Deep Purple',
  'The Doobie Brothers',
  'Eagles',
  'Fleetwood Mac',
  'Haciendo Punto en Otro Son',
  'Heart',
  'Iggy Pop and the Stooges',
  'Journey',
  'Judas Priest',
  'KC and the Sunshine Band',
  'Kiss',
  'Kraftwerk',
  'Led Zeppelin',
  'Lindisfarne (band)',
  'Lipps, Inc',
  'Lynyrd Skynyrd',
  'Pink Floyd',
  'Queen',
  'Ramones',
  'REO Speedwagon',
  'Rhythm Heritage',
  'Rush',
  'Sex Pistols',
  'Slade',
  'Steely Dan',
  'Stillwater',
  'Styx',
  'Supertramp',
  'Sweet',
  'Three Dog Night',
  'The Village People',
  'Wings (fronted by former Beatle Paul McCartney)',
  'Yes'
</script><script type="text/javascript">
   window.onload = function() {
      new Autocompleter.Local(
        'bands_from_the_70s',
        'band_list',
        bandsList,
        {ignoreCase:false}
      );
   }
</script>
<body>
<p>
  <label for="bands_from">Your favorite rock  band from the 70's:</label>
  <br />
  <input id="bands_from_the_70s" autocomplete="off" size="40" type="text" value="" />
</p>
 
<div class="autocomplete" id="band_list" style="display:none"></div>

 

Y listo ya con eso debemos tener un textbox con sugerencias.

Enlaces

Autocompleter.Local para ver los parámetros aceptados.

Ajax search suggest with cakephp

Ejemplo simple autocomplete.local

12ago/114

Busquedas de filtros complejos en CakePHP

Para comprender la situación mejor, necesitamos ver el screenshot de la vista.

Hay varias formas de hacer esto, la mas común es usar la función query de CakePHP para armar la consulta SQL en base a condiciones by (@el_keogh) , está la función find, pero no se pueden poner condiciones dentro, así que lo que se puede hacer es armar el array conditions desde afuera de la siguiente forma:

 

<?php 
//Bloque #1 asignacion de variables para comodidad
$alumnoid=$this->data['Examene']['cuenta'];
$user=$this->data['Examene']['user'];
$fechaInicio=$this->data['Examene']['Fecha de Inicio'];
$fechaFin=$this->data['Examene']['Fecha de Fin'];
$formadepago=$this->data['Examene']['forma_de_pago'];
$resultado=$this->data['Examene']['resultado'];
$conditions=array();
 
//Bloque #2 Condiciones tabla Alumnos
if(!empty($this->data['Examene']['nombre'])){
	$conditions['Alumno.nombre LIKE']='%'.$this->data['Examene']['nombre'].'%';
}
if(!empty($this->data['Examene']['apellido_paterno'])){
	$conditions['Alumno.apellido_paterno LIKE']='%'.$this->data['Examene']['apellido_paterno'].'%';
}
if(!empty($this->data['Examene']['apellido_materno'])){
	$conditions['Alumno.apellido_materno LIKE']='%'.$this->data['Examene']['apellido_materno'].'%';
}
//Bloque #3 Condiciones tabla Examenes
if(!empty($alumnoid)){
	$conditions['Examene.alumno_id']=$alumnoid;
}
if(!empty($user)){
	$conditions['Examene.user_id']=$user;
}
//Bloque #4 Condiciones de intervalos de fecha
if(!empty($fechaInicio)){
	$conditions['Examene.created >'] = $fechaInicio;
}
if(!empty($fechaFin)){
	$conditions['Examene.created <='] =$fechaFin.' 23:59:59';
}
if(!empty($formadepago)){
	$conditions['Examene.forma_de_pago'] =$formadepago;
}
if(!empty($resultado)){
	$conditions['Examene.resultado'] =$resultado;
}
//Bloque #5 query
$conditions['Examene.statusid <>']=4;
$examenes= $this->paginate($conditions);
?>

Bloque #1 asignación de variables

En este caso se manejan dos tablas distintas de la base de datos, están relacionadas entre si, Alumnos y Examenes, utilicé asignación de variables para mas comodidad en su manejo, pero no son necesarias.

Bloque #2 Condiciones de tabla Alumnos

Las condiciones determinan cuando hay datos en los campos, si no hay datos, no hay condición que aplicar y nada que meter en el array, las primeras tres condiciones pertenecen a la tabla alumnos, de la cual se va a buscar por nombre NO exacto por eso los LIKE y la concatenación del símbolo de porcentaje. Para que esto funcione, las relaciones en el modelo deben estar previamente establecidas.

Bloque #3 Condiciones de tabla Examenes

En el segundo bloque ponemos las condiciones de la otra tabla, nada especial ya que los valores de esos campos deben ser exactos.

Bloque #4 Condiciones de intervalos de fecha

Para cuando tenemos intervalos de fechas y tenemos el formato en Datetime, es necesario concatenar la hora en la que termina el dia, si no lo hiciéramos contaría hasta la hora 00:00:00 no devolviéndonos los resultados del ultimo dia especificado.

Bloque #5 Query

La función paginate, se utiliza casi de la misma manera que un find y listo automagicamente cakephp devolverá solo los exámenes de los campos donde se les haya especificado algun dato, notese que este tipo de búsqueda es de tipo AND, o sea cada campo va filtrando aun mas la búsqueda, en lugar de añadir nuevas coincidencias.

Cualquier duda o comentario es bienvenido.
Referencias
Complex Find Conditions
Pagination in cakephp

30jul/111

Invitar a todos en facebook

Selección_016

Facebook constantemente cambia su arquitectura por innovación o para no poder enviar invitaciones masivas que podrían funcionar como spam, por eso aunque ya publiqué anteriormente como mandar invitaciones masivas, ya es obsoleto, y aquí explico una nueva forma de hacerlo para ello necesitamos 3 pasos:

  1. Instalar firefox, opcionalmente Google Chrome
  2. Instalar greasemonkey despues de reiniciar firefox.
  3. Instalar el script que se instala sobre greasemonkey, eso se hace entrando a la pagina del script Facebook: InviteThemAll y le damos en el botón install y seguimos las instrucciones.

 

 Ya para finalizar nos vamos a nuestra pagina de nuestro evento, presionamos seleccionar invitados del lado derecho

 

 

 

 

 

 

 

Y para finalizar damos clic en el botón select all, esperamos unos segundos o minutos dependiendo de la computadora y el numero de amigos y hacemos clic en enviar.

Fuentes

Extensión Greasemonkey para Firefox

Script para Greasemonkey | Facebook invite them all

21jun/110

Barcamp Culiacán 2011

Bonito logo del Barcamp Culiacán

 

Sinaloa es un estado que en los últimos años ha estado apostando por el desarrollo tecnológico, como en muchos otros lugares, hay el talento suficiente para desarrollar y aplicar tecnología. También hay empresas grandes en la entidad, como Coppel, Homex, Neoris entre otras que cuentan con grandes áreas de ingenieros en sistemas y afines. Así mismo hay muchos estudiantes deseosos de aprender, autodidactas en su estado puro.

Todo eso es genial, y si podemos potenciarlo de alguna manera, puede ser algo que cambié el estado, actualmente creo que cada area está desconectada de otra, por ejemplo los jovenes aprendices no encuentran buenas referencias, las empresas no encuentran talentos, y los talentos no encuentran socios. Es por eso que creo que un evento como un Barcamp puede potenciar el desarrollo de todos.

Por eso varios organizadores hemos planeado #BarcampCLN que es el primer Barcamp que se llevará a cabo en la ciudad. Un barcamp tiene varias modalidades, entre ellos la forma de desconferencias que será la que utilizaremos en la primera edición. Una desconferencia es como una conferencia informal dada por los mismos asistentes, en un Barcamp no hay gurúes, solo participantes. Al inicio del ida habrá un pintarrón con los horarios para disponibles para dar las charlas, los asistentes escribirán su nombre para apartar el horario. No es necesario llevar diapositivas, pero contaremos con proyector si alguien desea utilizarlo.

Así que como apasionado de la tecnología, me complace invitarlos para compartir ideas, trucos, tips, o solo para hechar la platicada. Si se puede se me antoja dar una charla de desarrollo de aplicaciones nativas para Ubuntu, ¿'que tal?. =)

 

Poster #BarcampCLN Culiacán

P.D. Si planeas asistir y tienes twitter, ayudanos haciendo promocion en shoutatweet, si no tienes twitter, ayudanos pasando la voz, este evento es de todos, y cualquier promoción es necesaria.

P.D.2 El hashtag para conversar en twitter es #BarcampCLN.

Enlaces

Pagina principal de Barcamp Culiacan | http://www.barcampculiacan.com

Pagina oficial en facebook

Twitter | @BarcampCLN