16 octubre 2015

Agregar y Eliminar Elementos en un array JSON

Este script es un ejemplo del como agregar o eliminar elementos en JSON, con integración de jquery y syntaxhighlighter, aquí el código fuente


<!DOCTYPE html>

<html>
<head>
<meta charset="UTF-8">
<title>Agrega o Elimina Elementos en JSON</title>
</head>
<script src="js/jquery-1.11.3.js" type="text/javascript"></script>
<script type="text/javascript" src="js/syntaxhighlighter_3.0.83/scripts/shCore.js"></script>
<script type="text/javascript" src="js/syntaxhighlighter_3.0.83/scripts/shBrushJScript.js"></script>
<link type="text/css" rel="stylesheet" href="js/syntaxhighlighter_3.0.83/styles/shCoreDefault.css"/>
<script type="text/javascript">SyntaxHighlighter.all();</script>
<script type="text/javascript">
//elemento JSON
var data = {items: [
   {id: "1", nombre: "Carlos", sexo: "Masculino"},
   {id: "2", nombre: "Belem", sexo: "Femenino"},
   {id: "3", nombre: "Hugo", sexo: "Masculino"},
]};
$(document).ready(function(){
//Muestra el elemento JSON antes de su modificación
$("#elementsJsonSinModificaciones").text(JSON.stringify(data,null, '\t'));
//Llamamos a la funcion elimina_json, para la eliminación de dos registros mediante la opción .splice()
elimina_en_json();
//Mostramos el elemento JSON en el elemento <pre> con las eliminaciones realizadas
$("#elementsJsonConModificaciones").text(JSON.stringify(data,null, '\t'));
//Se llama a la siguiente función para agregar un elemento al JSON
agrega_en_json();
//Mostramos nuevamente el elemento JSON en el las tags </pre> con un elemento mas al JSON
$("#elementsJsonAgregar").text(JSON.stringify(data,null, '\t'));
});
//Función que elimina dos elementos apartir del registro 1
function elimina_en_json(){
data.items.splice(1,2);
}
//funcion que agrega un registro al elemento JSON
function agrega_en_json(){
data.items.push(
    {id: "7", nombre: "Daniela", sexo: "Femenino"}
);
}
</script>
<body>
<span>CreateBy Abraham Zenteno Sánchez <a href="https://facebook.com/abzenteno">abzenteno Facebook</a></span><br/>
Elementos de un JSON
<pre class="brush: js; " id="elementsJsonSinModificaciones"></pre>

Eliminando elementos en el JSON con: <b>data.items.splice(1, 3);</b>
<pre class="brush: js; "  id="elementsJsonConModificaciones"> </pre>

Agregando Elementos en un JSON con: <b>data.items.push({id: "7", nombre: "Daniela", sexo: "Femenino"});</b>
<pre class="brush: js;" id="elementsJsonAgregar"></pre>
</body>
</html>

Resultado del ejemplo:




03 mayo 2014

TL-WN725N V2 EN ELEMENTARY OS KERNEL 3.2.0-61-generic-pae

Bueno quiero compartirles este tutorial a todos los usuarios que se inicializan en Elementary OS o mejor conocido como eOS, en lo particular esta versión de linux me parece muy bonita ligera que vale la pena probar, he tenido algunos problemas con mi tarjeta de red interna ralink RT5390R por lo que me fue imposible instalar el modulo por ello me dispuse a comprar una usb wifi modelo TL-WN725N, asi que les dejo el tuto de los pasos que segui para que funcionara:

# apt-get install linux-headers-$(uname -r) build-essential git dkms

descargar el controlador aqui posteriormente descomprimimos el archivo

# cd lwfinger-rtl8188eu-63fe7cd

# make

# make install

# modprobe 8188eu

# update-initramfs -u


Reiniciamos el equipo y listo tendremos funcionando nuestro wifi usb TP-LINK, si por las dudas no funcionara presiona Fn + F2, no me pregunten por que pero tal vez funcione eso :D


Como podran ver se enuentra activada la red inalambrica, hice un # lshw  -C  network


 *-network
       descripción: Interfaz inalámbrica
       id físico: 3
       información del bus: usb@2:1.1
       nombre lógico: wlan0
       serie: xx:xx:xx:xx:xx:xx
       capacidades: ethernet physical wireless
       configuración: broadcast=yes driver=r8188eu ip=192.168.1.79 multicast=yes wireless=IEEE 802.11bgn

Saludos hasta la proxima

22 mayo 2013

Problemas con broadcom bc4311 en Ubuntu 12.04 Price Pangolin

Que tal como siempre al cambio de cada distro tengo problemas con el driver de mi wi-fi así que busque y busque y encontré la solución en un foro de ubuntu así que aquí la resolución al problema de nuestra wi-fi

Pasos a seguir.
1 Abrir Synaptic y poner en el buscador 'bcm"
2 Asegurarse de que esten instalados los paquete "firmware-b43-installer" y "b43-fwcutter"
3 Marcar para desinstalar el paquete "bcmwl-kernel-source" y aplicar.

4 Escribir en un terminal:
cat /etc/modprobe.d/* | egrep 'bcm'
Aparecerá el texto "blacklist bcm43xx"
5 Después escribir:
# nano /etc/modprobe.d/blacklist.conf
y en el archivo que nos abre el gedit poner un # al comienzo de la linea: blacklist bcm43xx
6 Guardar.
7 Reiniciar la compu.
Y listo! espero le sirva de ayuda a alguien.

05 mayo 2013

Registro de logs en DB CakePhp 2.0.x

Podemos registrar logs de nuestra aplicación registrando en archivos o en su caso en la base de datos que en esta ultima manera es de que trata este tutorial, a continuación explico la manera de como implementar eta funcionalidad a sus aplicaciones hechas en CakePhp 2.0.x.

Como primer paso deberá crea la tabla en su base de datos:


CREATE TABLE IF NOT EXISTS `logs` (
`id` INT(11) UNSIGNED NOT NULL AUTO_INCREMENT,
`type` VARCHAR(20) NOT NULL,
`time` datetime NOT NULL,
`message` text NOT NULL,
PRIMARY KEY (`id`)
);


Una vez creada la tabla de la base de datos procedemos a crear el modelo de nuestra tabla:


/*Model/Log.php*/
class Log extends AppModel{
  public $name = 'Log';
}

Una vez hecho lo anterior se procederá a crear la clase DataBaseLogger la cual tendrá la finalidad de insertar en nuestra db y no en los archivos logs, crear el archivo app/Lib/Log/Engine/DatabaseLogger.php con el siguiente contenido:


App::uses('CakeLogInterface','Log');

class DatabaseLogger implements CakeLogInterface{
 
    function __construct($options = array()) {
        App::import('Model', 'Log');
        $this->Log = new Log;
    }
 
    function write($type, $message) {
        $log['type'] = ucfirst($type);
        $log['time'] = date('Y-m-d H:i:s');
        $log['message'] = $message;
 
        return $this->Log->save($log);
    }
 
}

Por último solo nos resta definir nuestra variable de configuración Cake indicando que el metodo de registro de logs sera por medio de inserción en la base de datos para esto se agregara la constante de configuración en AppController


class AppController extends Controller {
       
    function beforeFilter(){
         CakeLog::config('otherFile',array(
                'engine' => 'DatabaseLogger',
                'model' => 'Log')); 

    }
}
?>

Donde Engine hace referencia a DatabaseLogger y model al modelo de la tabla en la que se insertaran los logs.

Ahora bien el siguiente código muestra como utilizar la clase estatíca CakeLog con la función de login


/*metodo de Controlador*/
function login(){          $this->layout = "tpl_login";            if( ! $this->Session->read('Auth.User') ){               if ($this->request->is('post')) {                   if ($this->Auth->login()) {
                     CakeLog::write('info', 'User ' . $this->Auth->user('username') . ' successfully logged in.');

                    $this->redirect($this->Auth->redirect());
                  }else{
                    $this->Session->setFlash('Your username or password was incorrect.');
                  }
              }
          }else{
               $this->redirect($this->Auth->redirect());
          }         
     }
?>



Como se muestra en código anterior se utiliza la clase estatíca :
   CakeLog::write('info', 'User ' . $this->Auth->user('username') . ' successfully logged in.');

Para registrar cuando inician sesión los usuarios, los tipos de logs definidos por CakePhp son:


    'emergency'
    'alert'    
    'critical' 
    'error'    
    'warning'   
    'notice'    
    'info'      
    'debug'     

También puede definir sus propios tipos de logs para mas información

http://book.cakephp.org/2.0/en/core-libraries/logging.html



Resultado del registro









20 abril 2012

Backup and Restore Rules Iptables

Para hacer Backup

# iptables-save -c > iptables_backup.txt

Para hacer Restore

# iptables-restore -c < iptables_backup