martes, 28 de diciembre de 2010

Clase para calculo y consulta de curp

Pues después de tanto tiempo de tenerla lista pero sin documentación  termino y coloco la clase para calculo y consulta de curp el modelo del objeto es el siguiente:


DESCARGAS
linux
windows

La descarga contiene documentación y ejemplos de uso en GTK y web.

ACTUALIZACIÓN
Migre mi BLOG a blog.sarjo.info Seguire con el desarrollo y comentarios en ese blog asi como otras clases que tambien pienso publicar. Saludos.

martes, 14 de diciembre de 2010

¿Creer en Dios es como creer en Santa Claus? La incapacidad de comprender analogías

¿Creer en Dios es como creer en Santa Claus? La incapacidad de comprender analogías: "

Una de las cosas que más me agotan cuando estoy discutiendo con alguien es que, frente a una de mis analogías (reconozco que las empleo con frecuencia: es mi manera de explicarme mejor), mi interlocutor la desdeñe con la frase: “No es lo mismo.”

Esto sucede con frecuencia porque la gente (yo incluido) tiene dificultades para comprender la esencia de las analogías, sobre todo en el fragor de una discusión. La gente interpreta una analogía o una comparación como un paralelismo exacto y preciso. Es decir, si esto lo comparas con aquello, ambos conceptos deben parecerse mucho, o incluso ser clones, o estás haciendo trampas.

Sin embargo, el sentido de una analogía normalmente es reflejar una única faceta del paralelismo, la faceta esencial para la discusión. La mejor forma de entender este matiz es la analogía de que creer en Dios es como creer en Santa Claus.

Es una analogía que emplea Richard Dawkins en su libro El espejismo de Dios. Aunque él no es el primero que ha comparado la creencia en Dios con la creencia en Santa Claus, el Ratoncito Pérez o el Monstruo del Espagueti Volador. Esta analogía es interpretada por los creyentes y por quienes simpatizan con los creyentes como una analogía ofensiva.

Ello sucede porque no se capta lo esencial de la analogía, probablemente por la ofuscación que provoca que te comparen con un niño que cree en fantasías infantiles. Tanto es así que incluso el intelectual y teólogo Alister McGrath, en su libro The Dawkins Delusión? (¿El espejismo de Dawkins?), una obra que critica la visión ateísta de Dawkins y su falta de diplomacia, contiene el siguiente fragmento:

Dawkins compara con frecuencia la creencia en Dios con una creencia infantil en Santa Claus o el Ratoncito Pérez, diciendo que es algo que todos deberíamos superar. Pero la analogía es imperfecta. ¿Cuánta gente conocen que empezase a creer de adulta en Santa Claus?

McGrath sencillamente pone de manifiesto que no ha comprendido el argumento esencial de Dawkins. Cunado se usa una analogía en un argumento, es importante analizar qué parte de la comparación es pertinente. Pero McGrath no hace eso: coge toda la comparación, en bloque, y así es como obtiene su razón: por supuesto que no es “idéntico” creer en Dios y creer en Santa Claus.

Entender eso es como entender que, al decir que tus ojos son como el océano en invierno, alguien matice: no es verdad, porque el contenido de sal del océano es superior al contenido de sal del ojo humano.

Tal y como explica Julian Baggini:

Asimismo, decir que la creencia en Dios es como la creencia en Santa Claus no significa que esté confinada a la primera infancia ni implica que Dios tenga un reno llamado Rudolph. La clave de la analogía está, para Dawkins, en la base probatoria de la creencia. Dios es como Santa Claus y el Ratoncito Pérez, dice Dawkins, ya que algunos creen en él, pero no hay pruebas de su existencia. Utiliza deliberadamente un ejemplo de algo que sabemos que no existe, porque quiere defender que las pruebas a favor de Dios no son más sólidas que las pruebas a favor de estas fantasías infantiles. Este argumento puede ponerse en tela de juicio: quizá pienses que hay indicios de la existencia del Dios judeocristiano. Pero el argumento no se aborda siquiera si se considera significativo un aspecto irrelevante de la analogía. Esto es lo que hace MacGrath. Dice que la analogía no funciona porque las personas empiezan a creer en Dios cuando son adultas, mientras que adoptan la creencia en Santa Claus sólo de niños.

Como conclusión, quizá es buen momento para recordar una cita de Thomas Henry Huxley:

Confíe en un testigo en todo aquello en lo que no esté fuertemente involucrado ni su propio interés, ni sus pasiones, ni sus prejuicios, ni su amor por lo maravilloso. Si lo están, exija una prueba que lo corrobore en proporción exacta a la contravención de la probabilidad por la cosa atestiguada.

Vía | ¿Se creen que somos tontos? de Julian Baggini



"

lunes, 13 de diciembre de 2010

Isaac Asimov y su visión de la educación del futuro

Isaac Asimov y su visión de la educación del futuro: "

Hoy me encontré con un video del maestro de Asimov, el cual aprecio muchísimo por sus obras, y ahora mucho más por su visión de la educación, en aquellos tiempos donde Internet y las PCs recién comenzaban a florecer. Escúchenlo, no tiene desperdicio. ¡Todo un visionario!



Vía: Facebook




© Sergio para Punto Geek, 2010. |
Permalink |
3 comentarios |


Tags: , ,


Exclusivo: Pedi tu revista Oracle Magazine gratis


"

domingo, 21 de noviembre de 2010

[Video] ¿Qué es el Software Libre?

[Video] ¿Qué es el Software Libre?: "

Hace unos días les mostraba el Mapa Conceptual del Software Libre como una manera más de comprender este concepto tan amplio. Para agregar a esta forma de ir asimilándolo, en LinuxHispano me encuentro con este video educativo, en el que haciendo la clásica analogía de la receta de cocina para comparar los dos modelos de software (libre y propietario), nos enseñan qué es el Software Libre.


Con este video educativo, Daniel Bañobre Dopico y Francisco Alvarellos Maceira se toman tan solo 2 minutos y 30 segundos para contarnos sobre el Software Libre. A disfrutarlo y compartirlo!





© Ezequiel para Punto Geek, 2010. |
Permalink |
Sin comentarios |


Tags: , , ,


Exclusivo: Pedi tu revista Oracle Magazine gratis"

lunes, 15 de noviembre de 2010

Estudio: La gente inteligente es nocturna y duermen más tarde

Estudio: La gente inteligente es nocturna y duermen más tarde: "

Aunque se dice que la falta de sueño en los seres humanos y los animales puede llevar a la obesidad, presión arterial alta y una reducción en su expectativa de vida, hay pruebas que las personas con I.Q. alto tienden a ser más activos durante la noche y duermen más tarde.


Una amplia investigación de Satoshi Kanazawa y sus colegas de la Escuela de Economía y Ciencia Política de Londres han descubierto diferencias significativas en las preferencias del sueño-tiempo entre las personas dependiendo de su coeficiente intelectual. Las personas con mayor coeficiente intelectual son más propensos a ser noctámbulos, mientras que aquellas con menor coeficiente intelectual tienden a restringir sus actividades en el día – prefieren ir a la cama temprano y ser madrugadores.


Según Kanazawa, nuestros ancestros eran por lo general diurnos, pero un cambio hacia actividades nocturnas es un “una nueva preferencia evolutiva” del tipo de persona que normalmente se encuentran entre individuos más inteligentes, lo que se refleja en un mayor nivel de complejidad cognitiva entre las personas que ejercen una ocupación, profesión, religión o manera de vivir.


Sin embargo, no todo está bien con los que se queman las pestañas. Las personas que están dispuestas a quedarse hasta tarde son menos fiables y más propensas a sufrir de depresión, adicciones y trastornos de la alimentación, en comparación con los madrugadores que son relativamente más conscientes.


Aparentemente las preferencias de sueño en algunos casos obedecen a factores genéticos. Por ejemplo, en el caso de los animales: las vacas duermen con los ojos abiertos, algunas aves pueden dormir durante el vuelo o de pie, los delfines duermen con la mitad del cerebro despierto y los murciélagos necesitan 19,9 horas de sueño cada 24 horas.


Link: Smart People Stay Up Late and Sleep Late (Asylum, vía nasheliux)




"

lunes, 1 de marzo de 2010

Clase para acceso y manipulacion de datos de servidores MySql en php

El titulo es largo pero define perfectamente que hace la clase.

La clase (objeto), en cuestión es la siguiente:

 
El codigo actual es:

  
require_once 'Configuration.php';

#######################################################################################
# Class Name : MySql
# Author : Armando Ceballos
# Last Mofidy Date : 2010-02-28
# License : GPL
# Email : sarjo6 [at] gmail [dot] com
#######################################################################################

class MySql {

  /** Aggregations: */

  /** Compositions: */

   /*** Attributes: ***/

  /**
   *
   * @access private
   */
  private $mysql;

  /**
   *
   * @static
   * @access private
   */
  private static $debug = false;

  /**
   *
   * @access private
   */
  private $tablePrefix = '';


  /**
   *
   *
   * @param Configuration configuration

   * @param string db_host

   * @param string db_user

   * @param string db_pass

   * @param string db_name

   * @param int db_port

   * @return
   * @access public
   */
  public function __construct( $configuration = '',  $db_host = '',  $db_user = '',  $db_pass = '',  $db_name = '',  $db_port = 3306 ) {
      if ($configuration!=""){
            $db_host=$configuration->server;
            $db_user=$configuration->user;
            $db_pass=$configuration->password;
            $db_name=$configuration->database;
            $this->tablePrefix=$configuration->tablePrefix;
        }
        $this->mysql = @mysql_connect($db_host.":".$db_port,$db_user, $db_pass, true);
        @mysql_select_db($db_name,$this->mysql);
    if($this->debug){
            if (empty($this->mysql)){
        echo 'La información de configuracion esta incorrecta o el servidor no responde, favor de verificar los datos

'.mysql_error().'

';
            }else{
            echo "Conexion con el servidor de MySQL se a establecido
ServerHost=$db_host
";
            }
        }
  } // end of member function __construct

  /**
   *
   *
   * @param string _method

   * @param string _args

   * @return
   * @access public
   */
  public function __call( $_method,  $_args ) {
      if (isset($this->$method) === true) {
        $func = $this->$method;
        $func();
      }
  } // end of member function __call

  /**
   *
   *
   * @param string table

   * @param string columns

   * @param string values

   * @param string condition

   * @return bool
   * @access public
   */
  public function insert( $table,  $columns,  $values,  $condition = '' ) {
        if(empty($this->mysql)){
            return "Error al Insertar no se ha establecido una conexion";
        }

        // Cheka si las columnas esta vacio
        if(!$columns){
            $columns = "";
        }elseif($columns != ""){
            $columns = "('$columnas')";
        }

        // Checa si la condicion esta vacia o no
        if(!$condition){
            $condi = "";
        }elseif($condition != ""){
            $condi = " WHERE ".$condition;
        }

        $insert = $this->query("INSERT INTO ".$this->tablePrefix."$table $columns VALUES($values) $condi",$this->mysql);

        if($this->debug){
            echo "Inserccion con la cadena = Insert into $table $columns Values($values) $condi
";
            echo mysql_error();
        }
        return ($insert) ? true : false;
  } // end of member function insert

  /**
   *
   *
   * @param string table

   * @param string condition

   * @return bool
   * @access public
   */
  public function delete( $table,  $condition ) {
    if(empty($this->mysql)){
        return "Error al Borrar no se a establecido una conexion";
    }
    // Checa si la condicion esta vacia o no
    if(!$condition){
        $condi = "";
    }elseif($condition != ""){
        $condi = " WHERE ".$condition;
    }
    $delete = $this->query("DELETE FROM ".$this->tablePrefix."$table $condi",$this->mysql);

    if($this->debug){
        echo "Borrado con la cadena = Delete From $table $condi
";
    }
    return ($delete) ? true : false;
  } // end of member function delete

  /**
   *
   *
   * @param  queryid

   * @return int
   * @access public
   */
  public function howMany( $queryid ) {
    if($queryid != ""){
            $total = mysql_num_rows($queryid);
    }
    if($this->debug){
            echo "Numero = ".$total."
";
    }
    return $total;
  } // end of member function howMany

  /**
   *
   *
   * @return int
   * @access public
   */
  public function insertId( ) {
    $insert_id = mysql_insert_id($this->mysql);
    if($this->debug){
        echo "Insercion con ID = ".$insert_id."
";
    }
    return $insert_id;
  } // end of member function insertId

  /**
   *
   *
   * @param string data

   * @return string
   * @access public
   */
  public function clean( $data ) {
    $data = htmlspecialchars(stripslashes($data));
    $data = str_ireplace("script", "blocked", $data);
    $data = mysql_escape_string($data);
    return $data;
  } // end of member function clean

  /**
   *
   *
   * @param  queryid

   * @return
   * @access public
   */
  public function handle( $queryid ) {
    if($queryid != ""){
        $object = mysql_fetch_object($queryid);
        if($this->debug){
            echo "qid = $queryid
";
            echo 'obj = '.serialize($object).'

';
        }
    }
    return $object;
  } // end of member function handle

  /**
   *
   *
   * @param string string

   * @return
   * @access public
   */
  public function query( $string ) {
    if(empty($this->mysql)){
            return false;
    }
   
    $ejecucion= @mysql_query($string,$this->mysql);

    if($this->debug){
            echo "Query cadena = $string
";
    }
    return ($ejecucion) ? $ejecucion : false;
  } // end of member function query

  /**
   *
   *
   * @return
   * @access public
   */
  public function setDebug( ) {
      $this->debug=true;
  } // end of member function setDebug

  /**
   *
   *
   * @param string prefix

   * @return
   * @access public
   */
  public function setTablePrefix( $prefix ) {
      $this->tablePrefix=$prefix;
  } // end of member function setTablePrefix

    /**
   *
   *
   * @param string table

   * @param string string

   * @param string condition

   * @return bool
   * @access public
   */
  public function update( $table,  $string,  $condition ) {
      if(empty($this->mysql)){
            return "Error al Actualizar no se a establecido una conexion";
        }
                // Checa si la condicion esta vacia o no
        if(!$condition){
            $condi = "";
        }elseif($condition != ""){
            $condi = " WHERE ".$condition;
        }
        $update = $this->query("UPDATE ".$this->tablaPrefix."$table SET $string $condi",$this->mysql);
        if($this->debug){
            echo "Actualizacion con la cadena  = Update $table Set $string $condi
";
        }
        return ($update) ? true : false;
  } // end of member function update

  /**
   *
   *
   * @return
   * @access public
   */
  public function __destruct( ) {
      if(!empty($this->mysql)){
        mysql_close($this->mysql);
      }
  } // end of member function __destruct

  /**
   *
   *
   * @param  queryid

   * @return bool
   * @access public
   */
  public function move($queryid,$position){
    return (mysql_field_seek($queryid,$position));
  }// end of member function next

} // end of MySql

Como muchos proyectos usan los mismos datos de conexion repetidas veces e creado esta clase auxiliar que guarda los datos de la configuracion.

/**
 * class Configuration
 *
 */

class Configuration{

  /** Aggregations: */

  /** Compositions: */

   /*** Attributes: ***/

  /**
   *
   * @access private
   */
  private $typedb = 'mysql';

  /**
   *
   * @access private
   */
  private $server = 'localhost';

  /**
   *
   * @access private
   */
  private $user = 'root';

  /**
   *
   * @access private
   */
  private $password = '';

  /**
   *
   * @access private
   */
  private $database = '';

  /**
   *
   * @access private
   */
  private $port = 3306;

  /**
   *
   * @access private
   */
  private $tabePrefix = '';

} // end of Configuration 
 
Algunos ejemplos de como usar la clase:
/* 
 * Una tabla empleados en servidor local y base dedatos empresa
 * ejemplo
 * id | nombre
 * 0  | sarjo
 * 1  | dante
 * 2  | demia
 * 3  | esmeralda
 */

require_once 'MySQL.php';

$configuracion = new Configuracion();
$mysql = new MySql($configuracion);
//or $mysql = new MySql("",'root','contrasena','empresa');
// $puerto=3307; //aqui podria ser otro puerto del servidor que no sea el default 3306
//or $mysql = new MySql("",'root','contrasena','empresa',$puerto);

//supongamos que insertamos un dato y que el id es autonumerico y permite null
$mysql->insert('empleados', 'nombre', 'pureba');
// or incluyendolo y que las entradas sean variables
$id=666;
$name="lucifer's body";
//limpiamos la entrada
$name=$mysql->clean($name);
$mysql->insert('empleados', 'id, nombre', "'$id','$name'");
echo 'Se a gregado el id '.$mysql->insertId();

$table_name='empleados';

$mysql->update($table_name, "nombre=prueba", "id=4");

$_POST['borrar']=666;
$borrar=$_POST['borrar'];
//hasta este punto insert update y delete returnan boleano para que puedan ser usados en deciciones ejemplo
//uso de operador ternario
echo ($mysql->delete($table_name, "id=$borrar")) ? 'se Borro' : 'No se Borro';
//sin operador
if ($mysql->delete($table_name, "id=$borrar")) {
    echo 'se Borro';
}else{
    echo 'No se Borro';
}

$queryid=$mysql->query("select * from empleados");

echo 'Hay '.$mysql->howMany($queryid).' empleados son: 
';
//convertire la query en objetos y la recorrere
while ($empleado=$mysql->handle($queryid)){
    echo $empleados->id.' | '.$empleado->nombre.'


'; } $empleado=$mysql->handle($queryid); //me muevo a la ultima posicion $mysql->move($queryid, $mysql->howMany($queryid)-1); echo 'el ultimo empleado se llama: '.$empleado->nombre; /************************************ * si se quiere ver las querys como se van procesando * $mysql->setDebug(); * * si por ejemplo solo tubieras una unica base de datos te seria util identificar tablas * usando prefijos para saber a que sistema pertenecen se puede declarar un prefijo con el metodo * * $mysql->setTablePrefix('prefijo'); * * entonces las tablas a las que se insertarian en este ejemplo serian * * prefijo_empleados * * dudas comentarios y sugerencias a * sarjo6 [at] gmail [dot] com * */ ?> DESCARGA TODOS LOS ARCHIVOS
 
Cualquier duda o comentario favor de hacerlo esta clase esata bajo GPL.
Cualquier mejora o comentario estare gustoso de leerla 

sábado, 27 de febrero de 2010

La educación actual

Roger Schank es un experto en Inteligencia Artificial que investigaba cómo educar a los ordenadores y acabó descubriendo que a los humanos nos educan mal. Schank fue profesor de Ciencias de la Computación yu Psicología en la universidad de Yale y, posteriormente, director del Proyecto de Inteligencia Artificial de la misma institutión. En 1989 fue contratado por la universidad de Northwestern para crear el Instituto de Ciencias de la Educación. Ha sido también profesor en Standford y Carnegie Mellon, pero ha tenido que esperar hasta los 64 años para que una institución académica le permitiese poner en práctica sus teorías: la Escuela de Negocios de La Salle presenta en marzo una serie de másters en Internet basados en la revolucionaria visión educativa de Schank.

"Todo lo que puedas aprender se basa en la práctica. Para saber conducir un coche no tienes que estudiar cómo va el motor o por qué se mueven las ruedas"

"Las escuelas cogen las tecnologías y las arruinan. Cuando salió la televisión todas pusieron una en cada aula, pero la usaban para hacer lo mismo que antes"

Pregunta. ¿Qué piensa del actual sistema de enseñanza virtual, el e-learning?

Respuesta. Es la misma basura, pero en un sitio diferente. Las escuelas cogen las nuevas tecnologías y las arruinan. Por ejemplo, cuando salió la televisión todas pusieron una en cada aula, pero la usaban para hacer exactamente lo mismo que antes. Igual ahora con los ordenadores: ¡Oh, sí, tenemos e-learning! ¿Y qué significa? Pues que dan el mismo curso terrible, pero en línea, usando los ordenadores de forma estúpida.

P. En su página web leo: "Sólo hay dos cosas que están mal en el sistema educativo: qué enseñamos y cómo lo enseñamos". ¿Qué deberíamos enseñar?

R. A vivir, que tiene muchos aspectos, como aprender a ser un abuelo o una madre. Pero la escuela no nos lo enseña. Tampoco a tomar decisiones sobre nuestra vida, aprender valores humanos o decidir qué trabajo nos gustaría.

P. ¿Y cómo deberíamos enseñar?

R. La fórmula del profesor que da la clase magistral y los alumnos hacen exámenes no funciona. Deberíamos aprender como cuando éramos pequeños: nuestros padres no nos sentaron en una mesa y nos dijeron que nos iban a enseñar a hablar, que eso era la gramática y lo otro, el vocabulario. No. El niño habla y, cuando se equivoca, sus padres le van corrigiendo. Aprendemos conversando con los niños, usando el lenguaje.

P. Es lo que usted llama "aprender haciendo".

R. Sí: todo lo que puedas aprender está basado en la práctica. Para saber conducir un coche no tienes que estudiar cómo funciona el motor o por qué se mueven las ruedas. Toda la educación debería ser así, práctica.

P. En sus libros explica que es así como aprende la mente humana.

R. Los seres humanos tienen diferentes procesos mentales que funcionan desde que nacemos, como hacer predicciones, decidir objetivos o establecer la causa de las cosas. Si lo haces bien, triunfas en la vida. Pero en la escuela no lo enseñan. Como mucho te enseñarán la relación causa-efecto en física, pero no adaptada a la vida real. Lo que necesitamos es conocimiento práctico de por qué suceden las cosas con las que nos enfrentamos cada día de nuestras vidas.

P. ¿Pero cómo enseñar de forma práctica algo tan importante como filosofía, literatura o historia?

R. Es que no son tan importantes. Lo son para los académicos, que deciden qué debemos aprender. Si una parte de la población quiere, de acuerdo, pero no deberían obligar a todos los estudiantes del mundo a aprenderlo. Y sí, es posible estudiar historia de forma práctica, por ejemplo con una simulación que te lleve a la Revolución Francesa.

P. ¿Cómo pueden los ordenadores ayudar al "aprender haciendo"?

R. Con simulaciones más o menos elaboradas que presenten situaciones reales: tenemos este problema, cómo podría resolverse. Ni tan sólo necesitas un ordenador para esto, aunque lo facilita, ya que te permite trabajar con personas que no están en tu misma habitación. El auténtico cambio es cómo se enseña, no los instrumentos.

P. Los mejores hackers que conozco son autodidactas, ninguno ha aprendido en las universidades sino con sus ordenadores.

R. Exacto, han aprendido haciendo, como ir en bicicleta.

P. ¿Entonces, no necesitamos escuelas?

R. Por supuesto que no y deberían ser eliminadas. Las escuelas están controladas por los gobiernos, que no se preocupan de que salga de ellas gente inteligente. Todo lo contrario: quieren gente simple que no se haga muchas preguntas ni complique las cosas.

P. ¿Cómo llegó a estas conclusiones?

R. Mi campo de estudio es la inteligencia artificial, hacer a los ordenadores inteligentes. En los setenta trabajábamos muy seriamente sobre cómo los ordenadores deberían aprender. En los 80, cuando ya era un experto en educación, mis hijos entraron en la escuela. Y cuando ví lo que hacían allí me llevé las manos a la cabeza. ¡Qué forma más estúpida de aprender!

P. ¿Por qué?

R. Un ejemplo con mi hijo: a los 6 años me llegó una nota de la profesora que decía que no era bueno en matemáticas, cuando yo sabía que a los 4 ya hacía multiplicaciones. Fuí a verla y me explicó que aprendían a hacer cuentas con líneas hechas con rotuladores ¡y que mi hijo no dibujaba bien las líneas!

P. Ahora experimenta con sus nietos. Ha creado videojuegos que les enseñan matemáticas o a leer. ¿Funciona su sistema?

R. Sí. Mi decisión más importante se refiere al mayor, que tiene 8 años. Mi hija dudaba a qué escuela llevarlo. Le propuse montar una con otros padres y hoy son doce chicos en una habitación, con una profesora, que lo único que hacen es lo que les gusta a esa edad: construir trenes, coches, camiones, robots.

P. Es la misma línea que ha seguido para crear los másters de La Salle de Barcelona, haciendo que los alumnos se enfrenten no a teorías sino a situaciones simuladas de la vida real...

R. Va a cambiar el mundo. Es divertido, emocionante, algo muy nuevo. Cuando me lo propusieron pensaba que bromeaban porque hablamos de una universidad, que es parte del sistema, que me contrata para cambiar este sistema.

Visto en ELPAIS:COM