viernes, 23 de marzo de 2018

Python : Una excelente explicacion sobre self

https://stackoverflow.com/questions/2709821/what-is-the-purpose-of-self
 
Pongo aqui este excelente explicacion sobre el parámetro de python "self". 
El original esta en el enlace de arriba, pero copio el articulo por si es que
desapareciera, ya que esta demasiado bueno como para permiterse perderlo:
 
 
When objects are instantiated, the object itself is passed into the self parameter.
enter image description here
Because of this, the object’s data is bound to the object. Below is an example of how you might like to visualize what each object’s data might look. Notice how ‘self’ is replaced with the objects name. I'm not saying this example diagram below is wholly accurate but it hopefully with serve a purpose in visualizing the use of self.
enter image description here
The Object is passed into the self parameter so that the object can keep hold of its own data.
Although this may not be wholly accurate, think of the process of instantiating an object like this: When an object is made it uses the class as a template for its own data and methods. Without passing it's own name into the self parameter, the attributes and methods in the class would remain as a general template and would not be referenced to (belong to) the object. So by passing the object's name into the self parameter it means that if 100 objects are instantiated from the one class, they can all keep track of their own data and methods.
See the illustration below:
enter image description here

escribir una lista en un archivo:
 
archivo.write("\n".join(itemlist))

miércoles, 14 de marzo de 2018

usos de XARGS

Me llega un Email con una lista de profesores los cuales haran una presentacion y cada uno debe guardarlo en una carpeta,
Si hago una carpeta donde todos ellos puedan escribir y poner su carpeta, en poco tiempo tendre algo como esto:
/Prof. Perez
/lopez
/Profesora Ortiz
/Suares Prof. Literatur
/4to Semestre Olivares
/Arquitectura
etc, es decir el caos!

entonces, copio la lista del email, y la pego en un archivo que llamare profes.txt
en Shell escribo:
cat profes.txt | xargs mkdir

el comando cat mostrara el contenido del archivo profes.txt y lo mandara al comando mkdir a traves de xargs. Entonces mkdir creara una carpeta con los nombres de cada uno asi:
/perez
/lopez
/ortiz
/suares
/olivares
/smidt

jueves, 8 de marzo de 2018

Linux/Unix Configurar una segunda tarjeta de red


Herramientas necesarias:
ifconfig, ethtool, ifdown, ifup, nano/vim

Suponiendo que nuestras 2 tarjetas de red ya estan instaladas en el equipo, al correr la utilidad ifconfig, es posible que sólo veamos una, eth0.

Podemos encontrar la tarjeta con el comando

ethtool eth1

el cual muy posiblemente sin nos dará la información sobre la tarjeta inactiva,  ademas de que al final pondra algo como:

Link detected: no

Lo cual significa que el cable no esta conectado (o no esta funcionando)

Si tratamos de arrancar la segunda tarjeta con ifup / ifdown, es posible que nos topemos con un mensaje:

interface eth1 not configured

Para configurarla nos vamos al archivo de interfaces con nano:

nano /etc/network/interfaces

alli, agregamos la nueva interfaz:


Para DHCP (automático)
iface etc1 inet dhcp

Manual:
iface eth1 inet static address 192.0.2.254/24
 
O con todos sus detalles:
iface eth1 inet static  
     address 192.0.2.7  
     netmask 255.255.255.0  
     gateway 192.0.2.254
     broadcast 192.0.2.254

Para el caso que  queramos hacer una red peer2peer o de crossover-cable
(ya no hace falta el cable especial), o con sólo un swicht como intermediario...


iface eth1 inet static  
     address 10.0.0.18
     netmask 255.255.255.0
     broadcast 10.0.0.254

Reiniciar el demonio de redes:
/etc/init.d/networking restart

viernes, 2 de marzo de 2018

Montar un nuevo disco fisico en una maquina linux

Primero que nada, debemos estar seguros que el disco esta reconocido por la BIOS.
Luego podemos usar el comando   df -h   para ver lo que hay, que tiene una salida mas o menos asi:

root@server:~# df -h
Dateisystem    Größe Benutzt Verf. Verw% Eingehängt auf
udev             10M       0   10M    0% /dev
tmpfs           806M    284K  805M    1% /run
/dev/sda1       7,5G    1,7G  5,6G   23% /
tmpfs           5,0M       0  5,0M    0% /run/lock
tmpfs           1,6G       0  1,6G    0% /run/shm

de todos estos sólo /dev/sda1 es un dispositivo fisico. En este caso conectado al SATA0 con 8GB (se trata de un pequeno SSD para el sistema. El dispositivo es sda pero la particion es sda1

El otro disco que he montado no aparece por ninguna parte. En mi test he atravesado un pequeño inconveniente: la aplicacion fdisk -l.

fdisk -l /dev/sdb

Como sé que mi segundo Disco esta en SATA1, entonces lo crearé como sdb.

Para ello usaré el comando

cfdisk /dev/sdb

este comando tiene una interfaz interactiva de usuario, y nos presentará de manera sencilla, p.e. el tamaño del disco en la columna Size Type. Si compruebas que coincide con el tamaño instalado vas por buen camino. la columa "Device" debería decir "Free Space".

El resto se explica por si solo: New --> Partition Size -->

cfdisk permite escojer algunos formatos de particion como ext4 (Linux). Pero faltan algunos como btrfs para el que podemos usar mkfs.btrfs /dev/sda1
Para asignar un formato ext4 usamos mkfs.ext4 /dev/sda1
y asi sucesivamente hay tambien:
mkfs          mkfs.btrfs    mkfs.exfat    mkfs.ext3     mkfs.ext4dev  mkfs.ntfs
mkfs.bfs      mkfs.cramfs   mkfs.ext2     mkfs.ext4     mkfs.minix


Luego podemos crear una carpeta en el dir raíz para montar la unidad:

mkdir /DATA

y montarla (temporalmente):

mount /dev/sdb1 /DATA

pero para que la particion se monte despues de cada reinicio debemos también, encontrar el UUID y anotarlo en el archivo fstab:

blkid /dev/sdb1

y escribir el fstab con el UUID obtenido en blkid imitando el formato del disco existente

 (ó vim) nano /etc/fstab

 y ahora sería bueno reiniciar para comprobar que nuestra particion esta todavia alli con df -h

Comando tipp: lsblk