¿Cómo establecer establecer todo a cero en una tarjeta Micro-SD?.
Instalar el comando pv:
sudo aptitude install pv
Luego convertir todo a cero con el siquiente comando:
# /dev/sdb: Dispositivo donde se van a copiar los datos a cero
# pv -s 2GB: Es para establecer la cantidad de GB que se van
# a monitorear pasados a /dev/sdb
sudo dd if=/dev/zero | pv -s 2G | sudo dd of=/dev/sdb
Si es de 2 GB, pv debe ser:
pv -s 2GB
Si es de 8GB, pv debe ser:
pv -s 8GB
Y así con cada tipo de tamaño de Micro-SD.
Páginas
▼
domingo, 10 de septiembre de 2017
jueves, 8 de junio de 2017
Velocidad de Internet desde un terminal en Linux
Para medir la conexión desde un terminal en Linux, utilizamos un programa llamado speedtest-cli, dentro de los repositorios de pip. Para instalar la aplicación que nos permite esto, hacemos lo siguiente:
$ sudo aptitude install python-pip
$ sudo pip install speedtest-cli
Y para ejecutar la aplicación, ejecutamos lo siguiente:
$ speedtest-cli
Enjoy it!.
$ sudo aptitude install python-pip
$ sudo pip install speedtest-cli
Y para ejecutar la aplicación, ejecutamos lo siguiente:
$ speedtest-cli
Enjoy it!.
sábado, 3 de junio de 2017
Configurar Antena Wifi Usb 2.0 802.11n/g/b 150 Mbps
Desde un terminal, como root o sudo, instalar los drivers:
# aptitude install firmware-ralink #Debian Jessie
# aptitude install firmware-misc-nonfree #Debian Stretch
Activar el módulo para la tarjeta:
# modprobe rt2800usb
Eso es todo, fácil y seguro, enjoy your wifi card!.
EDIT:
Hay un problema con el driver rt28000usb, la tarjeta dejó de funcionar de un día para otro. Aquí hay otra forma con drivers oficiales:
# git clone https://github.com/art567/mt7601usta.git
# cd mt7601usta/src
# make
# mkdir -p /etc/Wireless/RT2870STA/
# cp RT2870STA.dat /etc/Wireless/RT2870STA/
# insmod os/linux/mt7601Usta.ko
De esa forma me volvió a funcionar sin problemas, hasta ahora.
La primera forma es la Debian way y la segunda es la oficial. La segunda al parecer es mejor que la primera, porque pude detectar más conexiones WiFi a las cuales conectarme.
Página del driver en Debian
Página del driver oficial
domingo, 1 de enero de 2017
Programación Orientada a Objetos en PHP 5
1.-
¿Qué es la Programación Orientada a Objetos?
La
Programación Orientada a Objetos (POO) es un paradigma de
programación que representa la realidad usando objetos y sus
interacciones para diseñar aplicaciones y programas. Está basado en
varias técnicas, incluyendo herencia, modularidad, polimorfismo y
encapsulamiento. Su uso se popularizó a principios de la década de
1990. Actualmente son muchos los lenguajes de programación que
soportan la orientación a objetos. Este paradigma de programación
tomó posición como el estilo de programación dominante a mediados
de los años ochenta, en gran parte debido a la influencia de C++,
una extensión del lenguaje de programación C. Su dominación fue
consolidada gracias al auge de las Interfaces gráficas de usuario,
para las cuales la programación orientada a objetos está
particularmente bien adaptada.
La
programación orientada a objetos expresa un programa como un
conjunto de estos objetos, que colaboran entre ellos para realizar
tareas. Esto permite hacer los programas y módulos más fáciles de
escribir, mantener y reutilizar.
2.-
Características de la Programación Orientada a Objetos
Abstracción:
Es fundamental para el pensamiento orientado a objetos. Permite
concentrarse en los aspectos del problema presentado, mientras ignora
detalles que tienden a distraer. Ya que el mundo real es complejo, se
necesita extraer lo esencial e ignorar el resto de la información,
eso es abstracción.
Encapsulamiento:
La esencia del encapsulamiento está en ocultar la funcionalidad de
un objeto, haciéndola invisible a las
personas que lo utilicen. Esto reduce la complejidad de su
utilización, porque sólo se tiene que comprender su interfaz,
olvidándose de cómo está implementada.
Ocultamiento
de información: El encapsulamiento conlleva al ocultamiento de
información, no permitiendo mostrar al usuario los datos ni la
implementación de las operaciones. La mayoría de las personas que
escuchan radio no saben o no se preocupan de la complejidad que hay
dentro del aparato para dar como salida lo que escuchamos. La radio
hace lo que tiene que hacer sin mostrarnos los procesos necesarios
para lograrlo, eso se llama ocultamiento de información.
Polimorfismo:
Nos da la posibilidad de hacer que una operación exhiba diferente
comportamiento en instancias diferentes. El comportamiento varía con
respecto a los tipos de datos usados en diferentes operaciones.
Herencia:
Las clases no están aisladas, sino que se relacionan entre sí,
formando una jerarquía de clasificación. Los objetos heredan las
propiedades y el comportamiento de todas las clases a las que
pertenecen. La herencia organiza y facilita el polimorfismo y el
encapsulamiento permitiendo a los objetos ser definidos y creados
como tipos especializados de objetos preexistentes. Estos pueden
compartir (y extender) su comportamiento sin tener que volver a
implementarlo.
3.-
De PHP 3 a PHP 5 (y PHP 6)
PHP
fue originalmente diseñado en Perl, en base a la escritura de un
grupo de CGI binarios escritos en el lenguaje C por el programador
danés-canadiense Rasmus Lerdorf en el año 1994 para mostrar su
currículum vitae y guardar ciertos datos, como la cantidad de
tráfico que su página web recibía. El 8 de junio de 1995 fue
publicado "Personal Home Page Tools" después de que
Lerdorf lo combinara con su propio Form Interpreter para crear
PHP/FI.
PHP
3: Dos programadores israelíes del Technion, Zeev Suraski y Andi
Gutmans, reescribieron el analizador sintáctico (parser en inglés)
en el año 1997 y crearon la base del PHP3, cambiando el nombre del
lenguaje a la forma áctual. Inmediatamente comenzaron
experimentaciones públicas de PHP3 y fue publicado oficialmente en
junio del 1998.
Para
1999, Suraski y Gutmans reescribieron el código de PHP, produciendo
lo que hoy se conoce como Zend Engine o motor Zend, un portmanteau de
los nombres de ambos, Zeev y Andi. También fundaron Zend
Technologies en Ramat Gan, Israel.
PHP4:
En mayo de 2000 PHP 4 fue lanzado bajo el poder del motor Zend Engine
1.0. El día 13 de julio de 2007 se anunció la suspensión del
soporte y desarrollo de la versión 4 de PHP, a pesar de lo anunciado
se ha liberado una nueva versión con mejoras de seguridad,la 4.4.8
publicada el 13 de Enero del 2008 y posteriormente la versión 4.4.9
publicada el 7 de Agosto de 2008.
PHP5:
El 13 de julio de 2004, fue lanzado PHP 5, utilizando el motor Zend
Engine II (o Zend Engine 2). La versión más reciente de PHP es la
5.2.6 (1 de Mayo de 2008), que incluye todas las ventajas que provee
el nuevo Zend Engine 2 como:
*
Mejor soporte para la Programación Orientada a Objetos, que en
versiones anteriores era extremadamente rudimentario, con PHP Data
Objects.
*
Mejoras de rendimiento.
*
Mejor soporte para MySQL con extensión completamente reescrita.
*
Mejor soporte a XML ( XPath, DOM, etc. ).
*
Soporte nativo para SQLite.
*
Soporte integrado para SOAP.
*
Iteradores de datos.
*
Manejo de excepciones.
PHP6:
Está previsto el lanzamiento en breve de la rama 6 de PHP. Cuando se
lance esta nueva versión quedarán solo dos ramas activas en
desarrollo (PHP 5 y 6), pues se abandonó el desarrollo y soporte de
PHP 4 el 13 de julio de 2007.
Las
diferencias que encontraremos frente a PHP 5.* son:
*
Soportará Unicode.
*
Limpieza de funcionalidades obsoletas como register_globals,
safe_mode...
*
PECL.
*
Mejoras en orientación a objetos.
4.-
Objetos, clases, métodos y atributos en PHP 5
Clase:
Las clases son tipos de datos definidos por el usuario. Son
Declaraciones o abstracciones de objetos, lo que significa, que una
clase es la definición de un objeto, definiendo sus características
y funcionalidades.
class
Persona
{
var
$nombre;
var
$apellido;
function
__construct($nom, $ape)
{
$this->nombre
= $nom;
$this->apellido
= $ape;
}
}
Objeto:
Es una instancia de una clase, que interactúa con otros objetos para
proporcionar una solución a un problema.
Se
puede decir que un objeto tiene lo siguiente:
-
Estado, en un instante dado en el tiempo: El estado de un
objeto son las propiedades y los valores que toman estas propiedades
en un instante en el tiempo (tiempo de ejecución). Un objeto conoce
su estado en cualquier instante del tiempo. Su estado se revela a
través de su interfaz.
-
Identidad, que es única entre los objetos de la misma clase:
La identidad de un objeto se refiere a la manera única en que el
objeto en que el objeto es conocido, referido y distinguido de todos
los objetos del sistema.
-
Comportamiento, que son usualmente los datos y funciones de dicha
clase: El comportamiento consiste de responsabilidades que
promete llevar a cabo el objeto. Es la manera en que un objeto
reacciona a los mensajes que recibe (de otros objetos).
<?php
class
Persona
{
var
$nombre;
var
$apellido;
function
__construct($nom, $ape)
{
$this->nombre
= $nom;
$this->apellido
= $ape;
echo
“<br>Acabo de ingresar<br>”;
}
}
$Estudiante
= new Persona(“Juan”, “Pérez”);
?>
Métodos
(funciones): Son las operaciones que puede realizar un cliente
sobre un objeto. Forman parte de la declaración de la clase.
<?php
class
Persona
{
var
$nombre;
var
$apellido;
var
$edad;
var
$hablar;
function
__construct($nom, $ape, $ed)
{
$this->nombre
= $nom;
$this->apellido
= $ape;
$this->edad
= $ed;
if($this->edad
> 2)
{
$hablar
= true;
}
}
function
getNombre()
{
return
$this->nombre;
}
function
getApellido()
{
return
$this->apellido;
}
function
habla()
{
return
$this->hablar;
}
function
getEdad()
{
return
$this->edad;
}
function
setNombre($nom)
{
$this->nombre
= $nom;
}
function
setApellido($ape)
{
$this->apellido
= $ape;
}
function
setHabla($ha)
{
$hablar
= $ha;
}
function
setEdad($ed)
{
$this->edad
= $ed;
}
}
$Estudiante
= new Persona("Juan", "Pérez", 5);
echo
$Estudiante->getNombre();
$Estudiante->setNombre("María");
echo
"<br>Ahora se llama: " . $Estudiante->getNombre();
?>
5.-
Abstracción de datos en PHP 5
Podemos
tener un conjunto de objetos que tienen unas características comunes
y funcionalidades, también comunes, pero que difieren en la manera
de llevarlas a cabo. Para esto está la abstracción. Una clase
abstracta es la que tiene métodos abstractos. Los métodos
abstractos son los que están declarados en una clase, pero no se ha
definido en la clase el código de esos métodos.
abstract
class Humano
{
protected
$cabello;
protected
$ojos;
protected
$cuerpo;
abstract
function nacer();
abstract
function vivir();
abstract
function parrandear();
abstract
function aprender();
abstract
function enseñar();
abstract
function morir();
}
6.-
Encapsulamiento y principio de ocultación en PHP 5
Uno
de los principios de la programación orientada a objetos es la
encapsulación, que es un proceso por el que se ocultan las
características internas de un objeto a aquellos elementos que no
tienen porque conocerla. Los modificadores de acceso sirven para
indicar los permisos que tendrán otros objetos para acceder a sus
métodos y propiedades.
Modificador public
Es el nivel de acceso más permisivo. Sirve para indicar que el método o atributo de la clase es público. En este caso se puede acceder a ese atributo, para visualizarlo o editarlo, por cualquier otro elemento de nuestro programa. Es el modificador que se aplica si no se indica otra cosa.
Modificador private
Es el nivel de acceso más restrictivo. Sirve para indicar que esa variable sólo se va a poder acceder desde el propio objeto, nunca desde fuera. Si intentamos acceder a un método o atributo declarado private desde fuera del propio objeto, obtendremos un mensaje de error indicando que no es posible acceder a ese elemento.
Modificador protected
Este indica un nivel de acceso medio y un poco más especial que los anteriores. Sirve para que el método o atributo sea público dentro del código de la propia clase y de cualquier clase que herede de aquella donde está el método o propiedad protected. Es privado y no accesible desde cualquier otra parte. Es decir, un elemento protected es público dentro de la propia clase y en sus heredadas.
7.-
Herencia en PHP 5
Como
su nombre indica el concepto de herencia se aplica cuando creamos una
clase, que va a heredar los métodos y atributos de una ya definida,
entonces la clase que hemos creado es una subclase. Para que una
clase sea subclase de otra ya creada deberemos usar la palabra
reservada extends.
<?php
abstract
class Omnivoro
{
protected
$pelo;
protected
$cuerpo;
abstract
function nacer();
abstract
function vivir();
//abstract
function morir();
}
class
Persona extends Omnivoro
{
protected
$nombre;
protected
$apellido;
protected
$sueldo;
function
__construct($nom, $ape)
{
$this->nombre
= $nom;
$this->apellido
= $ape;
$this->sueldo
= 0;
}
function
nacer()
{
echo
"<br>Hola<br>";
}
function
vivir()
{
echo
"<br>Hola otra vez<br>";
}
function
getNombre()
{
return
$this->nombre;
}
function
getApellido()
{
return
$this->apellido;
}
function
getSueldo()
{
return
$this->sueldo;
}
function
setNombre($nom)
{
$this->nombre
= $nom;
}
function
setApellido($ape)
{
$this->apellido
= $ape;
}
function
setSueldo($suel)
{
$this->sueldo
= $suel;
}
}
class
Gerente extends Persona
{
private
$clave;
function
__construct($nombre, $apellido, $cla)
{
parent::__construct($nombre,
$apellido);
$this->clave
= $cla;
}
function
getClave()
{
return
$this->clave;
}
function
setClave($cla)
{
$this->clave
= $cla;
}
}
class
Empleado extends Persona
{
private
$situacion_actual;
function
__construct($nombre, $apellido, $sit_act)
{
parent::__construct($nombre,
$apellido);
$this->situacion_actual
= $sit_act;
}
function
getSituacionActual()
{
return
$this->situacion_actual;
}
function
setSituacionActual($sit_act)
{
$this->situacion_actual
= $sit_act;
}
}
$gerente[0]
= new Gerente("Carlos", "Ramonez", "123");
$gerente[1]
= new Gerente("Carlos", "Ramonez", "123");
$gerente[2]
= new Gerente("Carlos", "Ramonez", "123");
for($i=0;
$i < 3; $i++)
{
echo
"<strong>Empleado #".($i+1)."</strong> ";
echo
$gerente[$i]->getNombre()." ";
echo
$gerente[$i]->getApellido(). " ";
echo
$gerente[$i]->getClave()."<br><br>";
}
?>
8.-
Polimorfismo y sobrecarga de métodos PHP 5
El
Polimorfismo es la capacidad que tienen los objetos de una clase de
responder al mismo mensaje o evento en función de los parámetros
utilizados durante su invocación. Un objeto polimórfico es una
entidad que puede contener valores de diferentes tipos durante la
ejecución del programa.
<?php
function
dibujar($x)
{
//
Supongamos que este es un método de una clase "Pizarra"
$x->dibujar();
}
$obj=new
Círculo(3,187);
$obj2=new
Rectángulo(4,5);
$pizarra->dibujar($obj);
// llamará al método dibujar de Círculo.
$pizarra->dibujar($obj2);
// llamará al método dibujar de Rectángulo.
?>
La
Sobrecarga no es soportada por PHP. En POO uno sobrecarga un método
cuando se definen dos o tres métodos con el mismo nombre, pero con
diferentes números o tipos de parámetros (dependiendo del
lenguaje). No existen tipos de datos en PHP, así que sobrecargar por
tipos de datos no funciona, sin embargo, sobrecargar por cantidad de
parámetros sí se puede:
<?php
class
MiClase
{
function
__construct()
{
$nombre="MiClase".func_num_args();
$this->$nombre();
//
Notar que $this->nombre(); generalmente estaría mal
//
pero aqui $nombre es un string con el nombre del
//
método que se va a llamar
}
function
__construct($x)
{
//código;
}
function
__construct($x,$y)
{
//código;
}
}
?>
9.-
Serialización en PHP 5
Serialización:
<?php
/*class
Connection {
var
$link;
var
$server;
var
$username;
var
$password;
var
$db;
public
function __construct($server, $username, $password, $db){
$this->server
= $server;
$this->username
= $username;
$this->password
= $password;
$this->db
= $db;
$this->connect();
}
private
function connect(){
$this->link
= mysql_connect($this->server, $this->username,
$this->password);
mysql_select_db($this->db,
$this->link);
}
public
function __sleep(){
mysql_close($this->link);
}
public
function __wakeup(){
$this->connect();
}
}*/
//
Creamos nuestra clase de conexion
$con
= "Lo ";//new Conexion("localhost","root","root","test");
echo
$con;
//
Serializamos nuestra clase
$miClaseparaGuardar
= serialize($con);
//
guardamos en un archivo la clase
$gestor
= fopen("cla.txt", 'w+');
fwrite($gestor,
$miClaseparaGuardar );
fclose($gestor);
?>
Deserialización:
<?php
//
Recuperamos los datos de la clase
$gestor
= fopen("cla.txt", 'r');
$contenido
= fread($gestor, filesize("cla.txt"));
fclose($gestor);
$con
= unserialize($contenido);
echo
$con;
?>
Fuentes:
Diagramas en Linux y Windows
Alguna vez nos hemos preguntado con qué software hacemos los mejores diagramas UML, Redes, Procesos, etc. Bueno, les tengo una noticia, existe una aplicación que reune todo tipo de diagramas, es de fácil instalación y la comunidad de Software Libre le da amplio soporte, su nombre es Dia. Ya algunos la conocen, otros no. Esta es una herramienta indispensable para los diagramadores(ras) de todo tipo.
Página principal:
Dia Web Page
Instalación en Debian y derivados:
$ sudo aptitude install dia
Instalador para Windows:
Instalador Dia Windows
Ahora, si queremos hacer diagramas tipo AutoCAD, también existe una versión libre que lo hace, su nombre es FreeCAD. Tengan presente lo siguiente: Según la página, FreeCAD está en constante desarrollo y no está apto para ambiente de producción. Pero lo pueden probar.
Página principal:
FreeCAD Web Page
Instalación en Debian y derivados:
$ sudo aptitude install freecad
Instalador para Windows:
Instalador FreeCAD Windows
Enjoy it!
Página principal:
Dia Web Page
Instalación en Debian y derivados:
$ sudo aptitude install dia
Instalador para Windows:
Instalador Dia Windows
Ahora, si queremos hacer diagramas tipo AutoCAD, también existe una versión libre que lo hace, su nombre es FreeCAD. Tengan presente lo siguiente: Según la página, FreeCAD está en constante desarrollo y no está apto para ambiente de producción. Pero lo pueden probar.
Página principal:
FreeCAD Web Page
Instalación en Debian y derivados:
$ sudo aptitude install freecad
Instalador para Windows:
Instalador FreeCAD Windows
Enjoy it!
TorrentStream y dónde descargarlo
Siguiendo esta guía, de cómo descargar multimedia desde un archivo torrent con Peerflix:
http://dev-rockcesar.blogspot.com/2014/09/torrentstream-con-peerfliz-en-debian.html
La amplío con la siguiente información. Desde Windows se puede ver Torrent en Streaming con AceStream. Incluso la página RojaDirecta utiliza AceStream para ver eventos deportivos online.
También, con AceStream, se pueden ver películas descargadas desde sitios de depósitos de archivos Torrents, como Alt-Torrent, donde pueden ver películas en español latino en Full HD, 1080p ó 720p, dependiendo de la disponibilidad del archivo Torrent.
Peerflix también sirve para el cometido de ver archivos .torrent, sólo que no sirve para ver los enlaces de RojaDirecta.
Otro software para ver Torrent en Stream, es WebTorrent. Lo usé y me fascina. Sin embargo, yo utilizo Peerflix, ya que me gustan las cosas de bajo nivel, y Peerflix te muestra la traza de la descarga en tiempo real, lo más bajo nivel posible :) (sin tener que programar).
Enjoy it!
http://dev-rockcesar.blogspot.com/2014/09/torrentstream-con-peerfliz-en-debian.html
La amplío con la siguiente información. Desde Windows se puede ver Torrent en Streaming con AceStream. Incluso la página RojaDirecta utiliza AceStream para ver eventos deportivos online.
También, con AceStream, se pueden ver películas descargadas desde sitios de depósitos de archivos Torrents, como Alt-Torrent, donde pueden ver películas en español latino en Full HD, 1080p ó 720p, dependiendo de la disponibilidad del archivo Torrent.
Peerflix también sirve para el cometido de ver archivos .torrent, sólo que no sirve para ver los enlaces de RojaDirecta.
Otro software para ver Torrent en Stream, es WebTorrent. Lo usé y me fascina. Sin embargo, yo utilizo Peerflix, ya que me gustan las cosas de bajo nivel, y Peerflix te muestra la traza de la descarga en tiempo real, lo más bajo nivel posible :) (sin tener que programar).
Enjoy it!
Ver anime Online
Esta vez les traigo una página que probablemente conocen, si les gustan los Anime, AnimeYT:
Ahí pueden ver Anime Japonés en buena calidad, dependiendo del tiempo que tenga desde que haya salido. Por ejemplo, Dragon Ball Super sale todos los sábados en Japón, es traducida durante ese día y es publicado en AnimeYT y otras páginas, el día Domingo. El último capítulo de DBS fue el 72, el próximo se iba a estrenar ayer 31 de Diciembre de 2016, pero por la fecha, no se pudo estrenar, entonces se estrenará el sábado 7 de Enero:
Dragon Ball Super en AnimeYT
También, si quieren ver Caballeros del Zodiaco, pueden entrar a JKAnime:
Caballeros del Zodiaco (Saint Seiya)
Enjoy it!
Ahí pueden ver Anime Japonés en buena calidad, dependiendo del tiempo que tenga desde que haya salido. Por ejemplo, Dragon Ball Super sale todos los sábados en Japón, es traducida durante ese día y es publicado en AnimeYT y otras páginas, el día Domingo. El último capítulo de DBS fue el 72, el próximo se iba a estrenar ayer 31 de Diciembre de 2016, pero por la fecha, no se pudo estrenar, entonces se estrenará el sábado 7 de Enero:
Dragon Ball Super en AnimeYT
También, si quieren ver Caballeros del Zodiaco, pueden entrar a JKAnime:
Caballeros del Zodiaco (Saint Seiya)
Enjoy it!
