Hace mucho que en verdad no me emocionaba tanto con una película. Deseo con muchas ganas verla… se me hace que es una movie que me hará llorar.

El filme está basado en el libro que lleva el mismo nombre where the wild things are, escrito por Maurice Sendak. El libro es un “clásicaso” que en general trata de un niño travieso al que mandan a dormir sin su cena y se va a la tierra de las cosas salvajes y se convierte en el Rey.

Oh my fucking god, quiero verla, ya.

SociBook del.icio.us Digg Facebook Google Yahoo Buzz StumbleUpon
 

Ubicación geográfica: ¡vete a la mierda!
valor dietético: ¡come mierda!
adjetivo calificativo: ¡eres una mierda!
egocentrismo: se cree la gran mierda
venganza: ¡hagámoslo mierda!
accidente: ¡se hizo mierda!
efecto visual: ¡no se ve ni mierda!
sentido del olfato: huele a mierda
metamorfosis: chocó y se hizo mierda
especulación: ¡que sera esa mierda!
superlativo: purísima mierda
insatisfacción sexual: esa tipa es una mierda
sorpresa: ¿que mierda es eso? ¡mierda!
egoísmo: no me regaló ni una mierdita
sentido del gusto: tiene gusto a mierda
ánimos: apúrate con esa mierda
despectivo: no se que se cree la mierda esa

SociBook del.icio.us Digg Facebook Google Yahoo Buzz StumbleUpon
 

La semana pasada puse un artículo donde explícaba mi propuesta para el envío de parametros entre modelos y controladores del framework de codeigniter; ahora se me ocurrió la fabulantástica idea de hacer lo mismo, pero esta vez de la vista al controlador. Actualmente uso prototypejs para el manejo de operaciones/acciones con ajax y para los efectillos uso scriptaculous. El caso es que dejaré un ejemplo muy sencillo de como hacer esto, tanto de la vista y el script de JS así como el controlador y obviamente con el ejemplo anterior de pasar parametros como un arreglo al modelo

//MODELO
/*
*Este es el ejemplo de como el MODELO recibe parametros desde el
*controlador mediante un arreglo descriptivo
*/
<php if (!defined("BASEPATH")) { exit("No direct access allowed");}
class Getusuarios extends Model {

  function __construct(){
    parent::Model();
  } 

  function details($parametros = NULL){
    //Checo que el arreglo de parametros contenga datos
    if (is_array($parametros)){
      //Creo la sentencia SQL para extraer los datos
      $sqlUsuariosDetalle = ' SELECT * ';
      $sqlUsuariosDetalle .= ' FROM Users ';
      $sqlUsuariosDetalle .= ' WHERE uid = ? ';
      $sqlUsuariosDetalle .= ' AND dep = ? ';
      //ejecuto el query a la base de datos pasandole el arreglo que
      //viene del controlador
      $rs = $this->db->query($sqlUsuariosDetalle, $parametros);
      //checo que contenga datos
      if ($rs->num_rows() > 0){
        //en caso de que contenga datos regreso el resultado
        $result = $rs->result();
        return $result;
      //no hay datos, no regreso nada.
      } else { return FALSE; }
    //si no hay parametros, no hay consulta
    } else { return FALSE; }

  }

  function list () {
    //creo la sentencia sql para obtener los datos
    $sqlListaUsuarios = ' SELECT uid, name ';
    $sqlListaUsuarios .= ' FROM Users ';
    $sqlListaUsuarios .= ' WHERE gid >= 12 ';
    //ejecuto el query en la base de datos.
    $rs = $this->db->query($sqlListaUsuarios);
    //checo que traiga datos
    if ($rs->num_rows() > 0){
      //De tener algo, regreso el resultado
      return $rs->result();
    //Si no hay datos, regreso falso
    } else { return FALSE; }

  }
}
?>

Ahora veamos como se aplícan ambos ejemplos en el controlador, tanto para recibir parametros desde la vista con JS mandados con prototype y a su vez como manda los parametros al modelo por medio del arreglo.

//Controlador
<php if (!defined("BASEPATH")) { exit("No direct access allowed");}
class Usuarios extends Controller {

  function __construct(){
    parent::Controller();
    $this->load->model('getusuarios');
  }

  function detalles(){

    //convierto lo que viene de la cadena en un arreglo.
    $param = explode(',',$this->input->post('params'));

    if ($param[0] > -1 ) {

      $dep = $param[1]!=5?$param[1]:-1;

      $dao_params['id'] = $param[0];
      $dao_params['dep'] = $param[1];
      //envío el arreglo de parametros al modelo.
      $recordset = $this->getusuarios->details($dao_params);

      if (count($recordset) > 0) { $data['registros'] = $recordset; } else { $data['registros'] = NULL; }

      $this->load->view('user_details',$data);

    } else { $this->usuarios(); }

  }

  function lista(){

    $recordset = $this->getdepartamentos->list();

    if (count($recordset) > 0) {

      $datos = array('-1'=>"Seleccione");

      foreach($recordset as $rs){ $datos[$rs->id] = $datos[$rs->nombre_dep]; }
      $data['lista_departamentos'] = $datos;

    } else { $data['lista_departamentos'] = NULL; }

    $this->load->view('users_list',$data);
  }
}
?>
//VISTA







Próximamente me pondré a jugar con JSON para poner ejemplos, espero les ayude y les guste el post, por favor no olviden dejar su comentario.
Saludos.

SociBook del.icio.us Digg Facebook Google Yahoo Buzz StumbleUpon
 

Aquí les dejo mi concepción irónica de la epidemia de influenza porcina en México. Además puede ser usada como diseño para impresión en camisetas negras. Les agradecería que sí van a imprimirlas, no retiren el logo de mi blog. Gracias.

Im a pork flu survivor

Im a pork flu survivor

SociBook del.icio.us Digg Facebook Google Yahoo Buzz StumbleUpon
 

Cuentan que en el pico más alto del Tibet vive el hombre más sabio del mundo. Cierta vez, un joven acudió con él para descubrir el camino al corazón de una mujer de la que se había enamorado.

Cuando encontró al sabio en la cumbre de la montaña, le preguntó:
‘Dime Maestro de los maestros: ¿Cuál es el camino más corto, seguro y directo para llegar al corazón de una mujer?’.
El maestro le respondió: ‘No hay camino seguro al corazón de una mujer, hijo mío; solo senderos al borde de precipicios y caminos sin mapas o brújulas,  tapizados de peñascos, de arbustos espinosos y con serpientes ponzoñosas’.
Pero, entonces, Maestro: ¿qué debo hacer para conquistar el corazón de mi amada?
Recuerda amado Discípulo: Conserva en tu mente y en tu corazón las enseñanzas y los consejos que te daré… Síguelos  fielmente y llegarás al corazón de la mujer que amas.
1. Lávese los dientes.
2. No se rasque los huevos frente a ella.
3. Regálele flores y muchos, pero muchos presentes.
4. Levante la tapa del inodoro antes de orinar y recuerde bajarla después.
5. Lávese las manos cuando salga del baño.
6. No mastique con la boca abierta.
7. No eructe duro, o mejor, no eructe jamás.
8. No sea pedorro.
9. No hable mal de la madre de ella, ámela como a su propia madre.
10. No diga palabrotas.
11. Ría siempre de los malos chistes de ella.
12. No la cele, o si acaso, un poquito.
13. Deje que ella tenga celos de usted. Ella sí puede.
14. No críe barriga. Es más, nunca engorde. Ella sí puede (pero nunca se lo diga).
15. No se demore en el baño. Aprenda a trapear el baño, pero aun así, no se demore.
16. No deje la toalla tirada.
17. No diga que ella no sabe manejar.
18. No llegue tarde a casa. Salga de trabajar y váyase de inmediato para su casa.
19. No se entretenga con los amigos. O mejor, no tenga amigos.
20. No sueñe con tener amigas.
21. Nunca mire ni hable de las tetas o de las nalgas de las amigas de ella.
22. No sea tacaño. Use cuando menos dos tarjetas débito y dos de crédito.
23. No mire a otras mujeres. Es más, entienda de una vez que no existen otras mujeres.
24. No hable de su ex. Usted nunca tuvo a nadie antes que ella.
25. Dígale ‘Te amo’, al menos 24 veces al día.
26. Aprenda a cocinar.
27. Lave los platos y deje la cocina limpia.
28. Arregle la cama (siempre).
29. Llámela desde cualquier lugar, ojala cuando usted esté más ocupado
30. Deje que ella compre ropa, zapatos, etc., siempre que ella quiera. Es más, ayúdela a caminar durante horas eligiendo lo que quiera comprar (y sonría mientras camina).
31. Deje que ella converse durante horas por teléfono, y si puede, páguele la factura del celular.
32. No ronque.
33. Recuerde, a usted no le gusta el fútbol y odia las carreras de fórmula 1.
34. Aféitese todos los días para que no la lastime.
35. No piense solamente en sexo, pero tampoco exagere; propóngaselo con frecuencia, aunque esté cansado y descremado.
36. Respete cuando a ella le duela la cabeza, pero si ella se lo pide, complázcala de inmediato. ¡Ah!, y no se vaya a quedar dormidote inmediatamente después; debe mirarla a los ojos y acariciarla hasta que sea ella quien se quede plácidamente dormida.
37.Diga en todo momento que ella es la mujer más bella que jamás ha visto.
38.No discuta con ella recuerde que ella siempre tiene la razón en todo.
39.Hágale saber lo miserable que seria la vida si ella no esta con usted.
El Discípulo, agobiado, se vuelve para bajar de la montaña y el Maestro le dice: ‘¡Espera, Hijo mío, vuelve acá!’ todavía falta….
El Discípulo contesta:

¡Ni madres, mejor me la sigo jalando!

SociBook del.icio.us Digg Facebook Google Yahoo Buzz StumbleUpon
 

Hace una semana saliendo del metro Barranca del Muerto, como a eso de las 8:50 horas, atravesando la calle de Sagredo, ví un coche que traía una estampita que tenía un letrero muy chúsco,  me causó una infinita risa y se los comparto para que se rían junto conmigo. ¡Ya lo había publicado en twitter pero apenas hoy me acorde !

Cada vez que miras un arcoiris, Dios tiene sexo gay con Jesús

Cada vez que miras un arcoiris, Dios tiene sexo gay con Jesús

**A todas las personas que tienen gustos homosexuales, por favor no se ofendan; esto es solo un post que hace referencia a la excelente publicidad que hacen.

SociBook del.icio.us Digg Facebook Google Yahoo Buzz StumbleUpon
 

No tiene más de 3 minutos que terminé de ver un video de una persona con cáncer en el pancreas el cual está creciendo desmedidamente y tiene cerca de 12 tumores casi en contacto con el hígado, lo cual le causará una muerte inevitable, los médicos le dan hasta 60 días de vida. El Sr. en cuestión salió en el show de Oprah y se publicó en el clarín y plantea cosas muy interesantes y ciertas. El Sr. comienza su plática con los datos médicos de su enfermedad da una introducción breve y continúa con el verdadero objetivo de su ponencia.

La vida se trata de vivirla, no de padecerla; ese es en concreto lo que pude obtener de los 10 minutitos que te roba el video. Vale mucho la pena verlo, no es para cortarse las venas por que la gente muere todos los días algunos sin pena ni gloria. Mencionó un dato curioso, el primer afro-americano que entró en las grandes ligas tenía en su contrato (obviamente por escrito) que tenía prohibído quejarse sí la gente lo escupía. ¡Orale!, no es un video de “unete a los optimístas” solo es lo que platica un moribundo.

Saludos, espero les guste.

SociBook del.icio.us Digg Facebook Google Yahoo Buzz StumbleUpon
 

He estado pensando acerca de unas cuantas cosas que he hecho en PHP con CodeIgniter, me dí cuenta que sí en una función de PHP recibes 1 solo parametro entre controladores y modelos te ahorras unos cuantos teclazos….

Ejemplo de caso habitual de paso de parametros entre controlador y modelo:

****Controlador*****

<?php if (! defined('BASEPATH') ) { exit ('No direct script access allowed'); end();}
class Proove extends Controller{
  function __construct(){
	parent::Controller();
	$this->load->model('proove');
  }

  function index () {$this->proove();}

  function proove ($param1, $param2, $param3 = '', $param4 = -1){
	if (empty ($param3) ) {$param3 = 'GUEST';}
	//doing amazing stuff and stunts with this params
	$var = $this->proove->get_users($param1, $param2, $param3);
	if ($var) {
	  $data['records'] = $var;
	  $this->load->view('index.php',$data);
	}
  }
}

?>

****Controlador*****

<?php if (! defined('BASEPATH') ) { exit ('No direct script access allowed'); end();}

class Proove extends Model{

  function __construct (){
	parent::Model();
  }

  function get_users ($param1, $param2, $param3){
	$sql = 'SELECT * ';
	$sql .= ' FROM users ';
	$sql .= ' WHERE type = \''.$param1.'\'';
	$sql .= ' AND kind = \''.$param2.'\'';
	$sql .= ' AND domain = \''.$param3.'\'';
	$rsproove = $this->db->query($sql);

	if ($rsproove->num_rows()){
	  return $rsproove->result();
	} else {
	  return FALSE;
	}
  }
}

?>

Okay, continuemos… PHP te permite el uso de arreglos asociativos por lo cual podríamos usar esto para el paso de parametros a las funciones que sean necesarios. Lidiar con arreglos es muchas veces enfadoso, más sí no son asociativos, por que la iteración con bucles se vuelve pesada y más sí eres principiante como Yo y no sabes como accesar bien al índice que necesitas; en cambio con un arreglo asociativo (qué para mi gusto son como un hash de perl) puedes dirigirte perfectamente al índice que quieres del arreglo con el que estas trabajando…

La idea es principalmente usar los arreglos asociativos como parametro único, de esta manera podrías solo preocuparte por saber el nombre del índice que esperas y no por n parametros y validarlos todos.

Tengamos en mente el siguiente escenario de programación. Estás usando CodeIgniter (aplicación demo sin la aplicación de esta idea aquí)

Estas haciendo una clase que tiene varios metodos, uno de ellos necesita una serie de parametros muy específicos donde todos esos parametros son requeridos; haces tu validación con JS ó con algun framework, hasta aquí todo bien, te aseguras de que los parámetros llegan perfecto al método de la clase que quieres y haces de nuevo una validación para evitar “que te metan gol”. Una vez hecho eso, entonces comienzas a escribir chingomil (muchas) líneas de código con las que harás cosas impresionantes en tu aplicación. Bueno, imagina que tiempo después de que tu aplicación ha sido liberada alguien se encuentra TAMPER DATA en los agregados de FIREFOX y lo instala en su máquina *no estoy suponiendo que alguien va a hackearte, sino que un individuo curioso con el mínimo grado de conocimientos informáticos, decide probar lo que ha leído en un manualito de 20 minutos por que tiene tiempo libre*. Entonces comienza el juego, el píca un botón y le pregunta sí quiere modificar los parametros enviados, acepta la petición y pum a menear todo. Bueno, ahí tienes que tus validaciones con JavaScript han sido fácilmente burladas. Luego ¿qué sige?, fácil, tu controlador responderá de acuerdo a como ha sido creado, tomará los parametros y jugará con ellos, lo dificil del caso es cuando expones el borrado de usuarios de una tabla ó la alteración de los mismos, ya que puedes caer fácilmente en un SQL Injection Attack o algo por el estilo.

Veámos, aquí va el truco, como no puedes impedir que el usuario sea metiche y juegue con tu trabajo, entonces lo que sigue es ir un paso adelante; puesto que la mayoría de ataques exitosos de cualquier tipo a casi cualquier tipo de sitio son debido a un error humano, pués haremos esto más divertido, tanto para la persona que curiosea la respuesta del sitio como a nosotros mismos como programadores.

CodeIgniter tiene una librería para la base de datos llamada Active Record Class así como una cosa llamada SQL Binding, ambas dos sirven para cosas que tienen que ver con la base de datos. Active Record Class sabe defenderse de SQL Injection Attack, Cross Scripting Attack y otras chucherías del tipo nada más que para mi gusto, la librería es como un diamante en bruto, falta pulirla y en lo personal no me gusta. ¿Sí eres alguien que prefiere construir los queries a mano y sentir el poder del SQL en tus manos?, entonces el siguiente párrafo es para ti, veamos:

****Controlador*****

<?php if (! defined('BASEPATH') ) { exit ('No direct script access allowed'); end();}

class Proove extends Controller{

  function __construct(){
	parent::Controller();
	$this->load->model('proove');
  }

  function index () {$this->proove();}

  function proove (){

	//El último parámetro (TRUE) en $this->input->post('variable', TRUE) protege tu entrada de XSS
	$parametros[0] = $this->input->post('param1',TRUE) == '' ? $this->input->post('param1',TRUE) : '-1' ;
	$parametros[1] = $this->input->post('param2',TRUE) == '' ? $this->input->post('param2',TRUE) : '-1' ;
	$parametros[2] = $this->input->post('param3',TRUE) == '' ? $this->input->post('param3',TRUE) : '-1' ;
	$parametros[3] = $this->input->post('param4',TRUE) == '' ? $this->input->post('param4',TRUE) : '-1' ;
	$var = $this->proove->get_users($parametros);

	if ($var) {
	  $data['records'] = $var;
	  $this->load->view('index.php',$data);
	}
  }
}

?>

****Modelo*****

<?php if (! defined('BASEPATH') ) { exit ('No direct script access allowed'); end();}

class Proove extends Model{

  function __construct (){
	parent::Model();
  }

  function get_users ($parametros){
	if (is_array($parametros)){
	  $sql = ' SELECT * ';
	  $sql .= ' FROM users ';
	  $sql .= ' WHERE type = ? ';
	  $sql .= ' AND kind = ? ';
	  $sql .= ' AND domain = ? ';

	  $rsproove = $this->db->query($sql, $parametros);

	  if ($rsproove->num_rows()){
		return $rsproove->result();
	  } else {
		return FALSE;
	  }
	} else {
	  return FALSE;
	}
  }
}
?>

Notarás que las modificaciones han sido mínimas, pero esto te da a cambio de modificar tu código un poco más de tranquilidad ya que puedes explotar la ventaja de escape de bad characters que un framework como CodeIgniter te ofrece, hay muchísimo más que publicar de esta herramienta y de otras tantas que apenas estoy conociendo y no he tenido tiempo de picar.

Espero que el artículo haya sido de interés y opines al respecto.

PHP CodeIgniter JavaScript Framework SQL Sql Injection Attack XSS

SociBook del.icio.us Digg Facebook Google Yahoo Buzz StumbleUpon
 

Una verdadera joya de la ciudadanía Mexicana

*Pondré mis comentarios en NEGRITAS ITÁLICAS

La Doña

"La Doña"

La Procuraduría Capitalina detuvo a un hombre que presuntamente se disfrazaba de mujer para atacar a mujeres en el Sistema de Transporte Colectivo Metro, en los vagones exclusivos para damas donde las tocaba.

¿Es pregunta ó me están diciendo que sí las tocaba?. Por que así como está redactado, se presta a varias interpretaciones.
La detención de este hombre fue a consecuencia de la denuncia de una joven quien asegura fue abusada en tres ocasiones por el mismo hombre disfrazado de mujer.

¿Sí hubiera sido tan “ABUSADA” no le habrían agarrado las posaderas, no?

El sujeto fue detenido en las escaleras de la estación Tacuba, cuando intentaba huir, después de ser descubierto.

Le decían el pisa y corre, a según versiones extra oficiales.

La afectada denunció que en horas “pico”, abordó el convoy destinado para mujeres, en la estación Camarones de la Línea 7 del SCT Metro, y al quedar cerca de la puerta, sintió tocamientos en sus glúteos.
Al voltear para cerciorarse sobre la persona que se le acercó, se dio cuenta que se trataba de una señora; sin embargo, en el trayecto, antes de llegar a la estación Refinería, nuevamente le hizo tocamientos.

Es decir, la primera la pasó, por que pensó que la Sra le había dado un recargonsito y nada más. ¿Pero por qué esperó al segundo llegue, el primero no fué suficiente?.

Fue cuando observó directamente a la cara a la supuesta señora, y descubrió que se trataba de un hombre maquillado y con vestimenta de mujer.

No era mujer, ni era hombre, ERA PUTO

Antes de bajar en la estación Tacuba, el agresor la jaló de un brazo y nuevamente la tocó en sus genitales, lo que motivó que la joven solicitara apoyo a personal de seguridad de dicha terminal.

No nada más le manoseó las posaderas, sino que el puto se fué directo por el paquete, pinche güei atascado.

Los guardianes ubicaron en las escaleras de salida a quien se identificó como Juan José Ortega Ontiveros, de 42 años de edad, cuando pretendía huir, por lo que fue detenido y presentado ante el Ministerio Público de la Fiscalía Central de Investigación para Delitos Sexuales.

¿Los guardianes?. No mamen, yo siempre los veo justo en esa línea haciendose bien pendejos, platicando con sus “parejas”, qué se me hace que desde ahí comienza la putería.

Para evadir su responsabilidad en el ilícito, el detenido argumentó que al llegar a la empresa de radio localización, donde trabaja como ingeniero, dos sujetos lo amagaron y obligaron a subir a su propio vehículo, y vestirse de mujer. Dijo que logró librarse de los supuestos asaltantes y vestido de mujer, abordó el Metro.

Seguro en otra versión argumentó que los asaltantes le iban siguiendo y eran mujeres vestidos de hombre, que le habían dicho que tenía que despacharse a las usuarias, sino, le harían ¡TRU-TRU!

Sin embargo, las autoridades judiciales, afirman que la afectada lo identificó plenamente como la persona que en tres ocasiones la agredió sexualmente a bordo del Sistema de Transporte Colectivo.

Pues sí no te das cuenta de que alguien te agarra el paquetín, es seguro que trabajas donde está permitido que todo el mundo te apretuje tus cosas, no mames.


Ortega Ontiveros fue identificado por sus familiares como David Mondragón Vargas, de 46 años de edad, y confirmaron que es profesionista en ingeniería de Sistemas.

Puta madre, lo que faltaba, una ofensa más al gremio de geeks; sí ya de por sí estamos mal ubicados y nos salen con una pendejada de estas, no mamen. ¡Hay que violarlo con mouses y meterle las teclas por el orto!.

La representación social integra el expediente por el delito de abuso sexual agravado, para resolver la situación legal del detenido y consignarlo a un juez penal del Reclusorio Preventivo Oriente.

Sí, que lo refundan y me digan su número de celda, seguro sí pago $200.00 para que le den la putiza que se merece.

La Procuraduría General de Justicia del Distrito Federal (PGJDF) exhortó a las usuarias del Sistema de Transporte Colectivo Metro que hayan sido agredidas sexualmente por este individuo, lo identifiquen y denuncien en la Fiscalía Central de Investigación de Delitos Sexuales, ubicada en la calle General Gabriel Hernández 56, primer piso, colonia Doctores, o a los teléfonos 53 46 81 10, 53 46 81 03, ó al Sistema de Emergencia 061.

A huevo, y hasta las que no hayan sido atacadas por el puto mierdero ese, que vayan a declarar en su contra, es más buscaré voluntarios para que se vistan de mujer y vayan a acusarlo también de “robo de ideas”, ¿algún travesti interesado?.

SociBook del.icio.us Digg Facebook Google Yahoo Buzz StumbleUpon
© 2012 Geekeandome Suffusion theme by Sayontan Sinha