[Promox] Montar y Desmontar Unidades Físicas USB en Maquinas Virtuales Corriendo

Son unos sencillos comandos los que ayudan mucho cuando necesitas comunicar una Maquina Virtual de Promox con alguna unidad física para transferir datos.

### Montar un Disco USB2.0 a una MV que esta corriendo:
# qm monitor <vmid>
qm> device_add usb-host,vendorid=0x058f,productid=0x6387
qm> device_add usb-host,hostbus=2,hostport=1.2.2

Notas:

  • vmid, es el ID de la maquina virtual.
  • 0x058f, es el ID del fabricante (Este valor lo obtienes con el comando: lsusb) y deberías ver algo como esto: ID 058f:6387
  • 0x6387, es el ID del producto (Este valor lo obtienes con el comando: lsusb) y deberías ver algo como esto: ID 058f:6387

### Montar un Disco USB3.0
# qm monitor <vmid>
qm> device_add nec-usb-xhci,id=xhci,addr=0x5
qm> device_add usb-host,bus=xhci.0,vendorid=0x0480,productid=0xa007

### Desmontar el disco de la VM

qm monitor <vmid>
qm> device_del myusb

Nota: myusb, es el nombre que le asigna automáticamente el Promox cuando montas la unidad.

 

Obtener información de las unidades USB conectadas

qm> info usbhost

qm> usb-devices (Para obtener información detallada)

Nota:

  • 12 MB/s = USB 1.1
  • 480 Mb/s = USB 2.0
  • 5000 Mb/s = USB 3.0

Systemd: Cambiar el nombre a las Interfaces de Red

Los pasos son algo sencillos, y simplemente es algo que hago solo para manejar mas fácil mis interfaces de red.

1. Modificar el archivo:

# vim /etc/udev/rules.d/10-network.rules

Sino existe crearlo.

2. Agregar las interfaces de red a modificar, por ejemplo:

SUBSYSTEM=="net", ACTION=="add", ATTR{address}=="44:8a:5b:f0:9a:cf", NAME="eth0"
SUBSYSTEM=="net", ACTION=="add", ATTR{address}=="40:e2:30:d2:23:31", NAME="wlan0"

Lo único que debemos cambiar es la MAC de nuestro dispositivo y el nombre que le deseemos colocar.

En mi caso Systemd le había asignado los nombres: enp3s0 y wlp3s0 a las interfaces de red, lo cual se me hacía algo confuso a veces, entonces les cambie el nombre a los clásicos eth0 y wlan0.

Para ver los cambios debemos reiniciar el equipo.

Saludos.

Pasos para usar Python y Ruby en Heroku

La primera vez me toco googlear bastante para entender y para conseguir el buildpack correcto para que Python y Ruby funcionaran perfectamente en Heroku. Por ello copie los pasos para tenerlos a la mano la próxima vez y espero que a alguien le sirva de algo.

1. Iniciamos sesión mediante el uso del Heroku Toolbelt

$ heroku login

Para el que no lo tenga instalado aquí estan las instrucciones de instalación:
https://toolbelt.heroku.com/

Y si usas Arch o algún derivado es simplemente con:

$ yaourt -S heroku-toolbelt

2. Añadimos el excelente plugin de heroku buildpacks.

$ heroku plugins:install https://github.com/heroku/heroku-buildpacks --app nombre_app

3. Añadimos el Buildpack necesario que se encargara de ver que necesita la aplicación y instalarlo.

$ heroku config:add BUILDPACK_URL=https://github.com/ddollar/heroku-buildpack-multi.git

Nota: Deben existir los siguientes archivos en el proyecto:
Procfile con el siguiente contenido por ejemplo:

web: gunicorn nombre_app.wsgi

requirements.txt con las dependencias de python
Gemfile y Gemfile.lock con las dependencias de Ruby, ejemplo de un Gemfile:

source "https://rubygems.org"
gem 'sass'

runtime.txt con la versión de Python a utilizar por ejemplo: python-3.4.3

4. Subimos los cambios al servidor para que la aplicación tome los nuevos cambios.

$ git push heroku master
Si quieres hacer un commit vacío sino hay cambios puedes usar:
$ git commit --allow-empty -m "Empty commit"

Versiones de Python para este buildpack.
python-2.7.6
python-3.3.3
pypy-1.9 (experimental)

Saludos!

Respaldar data y esquemas de PostgreSQL con Django

1. Respaldar data en un JSON.

$ python manage.py dumpdata --all > ./mydump.json

2. Respaldar los esquemas(schemas) en SQL.

$ python manage.py sqlflush > schema.sql

3. Creamos la base de datos nueva de no tenerla y nos conectamos a ella.

$ sudo -u postgres createdb db_nueva
$ sudo -u postgres psql db_nueva

4. Cargamos los schemas.

db_nueva=# \i schema.sql
db_nueva=# ctrl-d

5. Por último cargamos la data.

$ python manage.py loaddata ./mydump.json

Espero a alguien le sirva de algo.

Los alias que más uso en Manjaro GNU/Linux

Para Pacman:

alias pacact="sudo pacman -Syu" #Sincronizar con el repo y actualizar paquetes
alias pacin="sudo pacman -S" #Instalar paquetes
alias pacins="sudo pacma -U" #Instalar paquete desde un archivo
alias pacrem="sudo pacman -R" #Remover paquetes
alias pacruta="sudo pacman -Ql" #Buscar rutas de un paquete
alias pacborrar="sudo pacman -Rns" #Remover paquete, su configuracion y dependencias
alias pacinfo="pacman -Si" #Ver información de un paquete en el repo
alias pacbus="pacman -Ss" #Buscar paquete en los repos
alias pacinfol="pacman -Qi" #Ver información de paquete en db local
alias pacbusl="pacman -Qs" #Buscar paquete en db local
alias pacsy="sudo pacman -Sy" #Refrescar y actualizar db local de paquetes.
alias pacsyy="sudo pacman -Syy" #Refrescar y actualizar db local de paquetes y actualizar mirrorlist

Tmux

Para iniciar tmux con 3 ventanas. La primera con vim y dividida horizontalmente, la segunda con irssi para el IRC y la tercera con mocp para oir algo de música.

alias tmux="tmux new-session -d 'vim' \; split-window -d \; new-window -d 'irssi' \; new-window -d 'mocp' \; attach-session"

i3status con Dzen

Para iniciar una barra inferior para ver siempre un resumen del estatus de mi equipo con dzen y i3status

alias i3status-dzen="i3status | dzen2 -fg white -bg black -y 850 -fn 'Times New Roman' -p -dock &"

ej

Django + Backbone.js

Django

Backbone.js

 

 

Quiero compartir una pequeña aplicación de un “Simple Blog” que he estado haciendo para aprender Backbone.js utilizando Django.

¿Qué es Backbone.js?

Así lo explican en su página oficial:

Da estructura a las aplicaciones web al ofrecer modelos con la unión clavevalor y eventos personalizados, colecciones con una rica API de funciones enumerables, puntos de vista con evento declarativa manipulación, y lo conecta todo a su API existente sobre una interfaz JSON REST.

Para que se entienda mejor yo lo explico de esta manera:

Backbone.js es un Framework de Javascript que te permite crear aplicaciones usando el patrón de desarrollo MVC (Modelo-Vista-Controlador), es una líbrería OpenSource muy liviana con apenas unos 6.5Kb. Esta diseñada para hacer el desarrollo mucho mas facil de mantener en el tiempo y para desarrollar aplicaciones de una única página muy facilmente. Define un conjunto de estructuras de datos (Models y Collections) junto al manejo de la interfaz por medio de Vistas y URLs.

Sus únicas dependencias son JQuery para interactuar directamente con el DOM y el Sistema de Plantillas Underscore.js (>=1.5.0).

Para hacer mas facil la comunicación de Django con Backbone he utilizado la aplicación django-backbone la cual proporciona un API RESTful por JSON que es lo que necesita Backbone para hacer su trabajo. Es una aplicación muy sencilla y facil de aprender para empezar.

Bueno he aquí el enlace al proyecto para el que quiera probarlo o trabajar sobre el:
https://github.com/goidor/dj_backbone_ejm

Estamos a la orden para cualquier duda.