sábado, 17 de septiembre de 2016

Jugando con mi Server: 1

Instrucciones para poner a funcionar una base de datos NoSQL que utilizarán nuestras aplicaciones web, usamos MongoDB.


 Install & Run 


 Instalación del paquete mongodb:
$ sudo apt-get install mongodb-org
Creamos carpeta donde alojaremos nuestra base de datos con
$ mkdir
IMPORTANTE: Necesario dar permisos; p.e. Para base de datos en /home/ubuntu/db
$ sudo chown -R 'youruserid' /home/ubuntu/db
Correr mongod con el fichero de config (fichero por defecto lo podemos encontrar en /etc/mongod.conf):
$ mongod --f /etc/mongod.conf
Correr mongod apuntando directamente a un directorio (donde tenemos la base de datos), en localhost:27017, que es la config por defecto.
$ mongod --dbpath /home/ubuntu/midb/

Acceso por shell


En otra terminal/screen podemos acceder a la shell de mongodb para hacer consultas:
$ mongo

Paquetes python 


La siguiente sirve para instalar pymongo, que nos permite hacer llamadas NoSQL a nuestra base de datos desde python.

Para utilizar la base de datos en python podemos instalar pymongo, sería conveniente crear un entorno virtual para comenzar a instalar los paquetes de python con pip, si no tenemos los paquetes:
$ sudo apt-get install virtualenv pip
Recordamos como activar virtualenv...
$ cd /home/MiUser $ virtualenv MiWebAPP $ source MiWebAPP/bin/activate
* Para desactivarlo
$ deactivate
Una vez activo el virtualenv:
$ sudo pip install pymongo

Enlaces de interés

jueves, 8 de septiembre de 2016

Lanzando un demonio

Pasos para lanzar una script de bash en ubuntu que nos ejecutará automáticamente una script de python en caso que ésta deje de correr.

Para nuestro caso, será necesario crear el .sh y hacerlo ejecutable:

editamos/creamos con nano: sudo nano -c /directorio/running.sh
hacemos ejecutable: sudo chmod +x /directorio/running.sh

Utilizaremos la script dentro de la carpeta /demon/ en nuestro directorio, y en ella misma, tendremos la carpeta tmp donde utilizaremos un fichero vacío .lock como variable.

La script en cuestión, desarrollada hace algunos meses con un compañero para una aplicación de la raspi (Gracias Darkomen!):
lockfile=/home/ubuntu/...../demon/tmp/void.lock

rm -rf /home/ubuntu/...../demon/tmp/

mkdir /home/ubuntu/....../demon/tmp/

while true
do
    litems=`ls /home/ubuntu/......./demon/tmp/ | wc -l`
    echo "$litems"
    if [[ "$litems" == "0" ]]
    then
        if (set -o noclobber; echo "$$" > "$lockfile") 2> /dev/null;
        then
            trap 'rm -f "$lockfile"; exit $?' INT TERM EXIT
            echo "Launching..."
                python /home/ubuntu/......../server.py

        rm -f "$lockfile"
        trap - INT TERM EXIT

        else
            echo "Running..."

        fi
    fi
    sleep 10
done
Importante no dejar espacio entre el signo igual y la comilla en la asignación a la variable litems del output del comando ls.

En este caso quiero dejar corriendo en el servidor la script de bash a mano, por lo que utilizaré screen, ya que accedo al servidor por ssh mediante putty y se cerrarían los procesos al cerrar la sesión. La script en bash hará que la script de python sea lanzada automáticamente cuando ésta pete.


Será necesario hacer: 
screen

* Podemos dar un nombre a la sesión de screen:  screen -S Misesion

y estando en el directorio del fichero:
./running.sh

Ya podemos hacer deatach de la sesión de screen (ctrl-a + ctrl-d) y cerrar la conexión con putty. Todo debería ir fino.


Comandos de utilidad: 
para ver procesos python, por ejemplo: ps -e | grep python
lo mismo para screen: ps -e | grep screen 
Del comando anterior nos interesa el PID si queremos matar el proceso.

ver sesiones de screen: screen -ls
Enlazarse a una de ellas que ya esté corriendo: screen -r PID.NOMBRE

tambien puede ser útil para ver qué nos consume recursos: top

para matar un proceso: sudo kill -9 PID
PID será el número del PID del proceso.

jueves, 11 de agosto de 2016

OpenCV - PyCharm - Windows

El siguiente guiaburros explica los pasos para crear un proyecto en PyCharm, a partir de un entorno virtual (virtualenv - ya instalado por defecto en PyCharm), además de OpenCV. Todo en windows.

Se asume que tienes una versión 2.7.x de python y PyCharm ya instalados.

Versiones utilizadas: v2.7.x de Python - v2.4.x OpenCV

File -> New Project


No importa el intérprete elegido, vamos a emplear uno diferente tras crearlo en el siguiente paso. Para crearlo simplemente elegir ruta y clickar "Create".

Entorno Virtual en PyCharm 

Un entorno virtual en útil porque nos permite utilizar determinadas librerías y versiones para un proyecto que podrían no ser las versiones que utilizamos para otro, o por defecto. Es decir, elegiremos únicamente las que nos sean necesarias e instalaremos algunas nuevas sin tocar nuestros paquetes en la raiz de python. Es simplemente una imagen, independiente y hecha para nuestro proyecto.

File -> Settings (Ctrl + Alt + S)

En el menú de la izquierda, accedemos a Project: "nombre proyecto" - Project Interpreter, y en la barra de "Project Interpreter:", clickamos sobre el engranaje, y pulsamos en "Create Virtual Env".


Aparecerá la siguiente ventana, en la que tendremos que dar un nombre al entorno y una dirección, además de elegir el intérprete del que partimos, en nuestro caso queremos partir de la instalación de python 2.7.x. Las 2 casillas de abajo se explican solas :P. Yo crearé el entorno heredando los paquetes de la instalación original.


Paquete Numpy

PyCharm permite instalar paquetes de forma sencilla integrando pip en su interfaz, no podemos instalar la librería de openCV por aquí, pero sí algunos módulos que son necesarios. Necesitamos instalar Numpy, herramienta para procesamiento numérico.

Para su instalación, simplemente necesitamos abrir de nuevo las settings del Project Interpreter: File -> Settings  y clickar en Project Interpreter dentro de Project en el menú de la izquierda. En este caso pulsamos sobre el símbolo +. De éste modo podemos añadir libs.

Buscaremos Numpy en la barra de búsqueda y lo instalamos, tras ello deberíamos verlo con el resto de paquetes. Si has creado el entorno virtual nuevo sin heredar nada, o simplemente tu python está recién instalado y no has añadido ninguna librería, ahora verás solamente Numpy y pip entre los Packages instalados.


Instalación de OpenCV

OpenCV no podemos instalarlo por el gestor de paquetes, será necesario que bajemos OpenCV. Descargamos la última versión 2.4.x.

Ejecutamos el .exe descargado y se autoextraerá donde indiquemos con el nombre opencv.

Tendremos que buscar dentro de la carpeta extraída "\opencv\build\python\2.7\x86", aparecerá un fichero llamado "cv2.pyd".

Copiamos el fichero "cv2.pyd" dentro del entorno virtual que definimos anteriormente, en el directorio\Lib\site-packages


Comprobación

Solo queda comprobar que todo ha ido bien. Creamos un fichero .py y probamos a importar opencv: import cv2. Si no recibimos ningún error al lanzarlo, todo está OK.

sábado, 11 de junio de 2016

Atom + LaTeX

Dejo la config que me ha quedado para editar Latex en Windows utilizando Atom sobre MiKTeX, tengo que decir que a pesar de que ha quedado bastante fino, no estoy completamente contento con todas las características :(


Lo bueno

Acabaremos con Atom configurado para editar Latex, con highlights de la sintaxis para dicho lenguaje, con un keystroke para compilarlo desde el mismo entorno, y opción a ver el pdf también en el propio entorno.

Lo no tan bueno

- Echo de menos un autocompletar/lista de todos los comandos de los paquetes que tengamos instalados en el entorno de latex. Hay utilidades para autocompletar pero no he dado con ninguna que me guste.

- Al compilar desde Atom, si fuese necesario instalar más de un paquete faltante, puede fallar la instalación 'on-the-fly' y habría que hacerla a mano o con MiKTeX. Cuando ya tienes tu setup de paquetes habituales va como la seda.
(NOTA: Latex inicialmente no tiene paquetes instalados; automáticamente descarga el contenido necesario según los paquetes que incluyamos en el código).
Tip: Cuando genero un documento cargado con un puñado de paquetes que sé que no tengo, suelo compilarlo la primera vez directamente desde MiKTeX para que instale todo lo necesario y evitar problemas.

MiKTeX

Partimos de que tenemos una instalación de MiKTeX hecha, dicho sistema de por sí nos sirve para editar .tex, compilar, ver el resultado en pdf, y gestionar paquetes de latex, pero es francamente feo estéticamente, por eso utilizaremos Atom para la edición.


Atom 

Obviamente necesitamos Atom. Es un editor de texto muy configurable mediante paquetes.


Para configurarlo, accedemos a File -> Settings y podremos elegir del menú de la izquierda "Packages" para ver los paquetes que tenemos instalados y configurarlos, vienen alrededor de 60 paquetes por defecto, o "Install" para conseguir paquetes nuevos.


Paquetes

Comenzamos a instalar y configurar los paquetes 'obligatorios' buscándolos en el menú "Install":
- latex: Permite compilar desde el entorno de Atom.
- language-latex: Colorea la sintaxis de latex, lo típico de los editores de lenguajes de programación.
- pdf-view: Un visor de PDF en el mismo entorno.

Adicionalmente, hay algunos que añaden funcionalidad, pero que actualmente no estoy utilizando porque para mi nivel patatero no me resultan necesarios:
- autocomplete-bibtex: Para autocompletar bibtex, es decir, para referencias bibliográficas.
- latexer y latex-autocomplete: Añaden alguna funcionalidad de autocompletar.
- linter-chktex: útil para evitar los warnings y errores por sintaxis.

Paquete latex
En sus Settings tendremos que definir el Path de nuestro entorno Latex (donde hayamos instalado MiKTeX) y seleccionar el builder/engine, texify y pdflatex. Éste paquete tiene opciones que nos aparece en la barra de tareas, Package -> LaTeX, las opciones son Build y Clear, tambien podemos configurar sus atajos en dicho menú, que por defecto son Ctrl+Alt+B y Ctrl+Alt+C, respectivamente.




Paquetes language-latex y pdf-view
Tambien tienen su menú de Settings, pero no es necesario tocar nada para que todo funcione, simplemente instalarlos.

Errores

Cuando se producen errores al compilar lo sabremos por la esquina inferior derecha, y podemos ver qué ha fallado en el .log que se genera simplemente clickando ahí, tendremos que buscar los ! Errors y ! Warnings. El paquete de latex está aún muy en pañales y no hay una gestión de errores y warnings que haga fácil depurar, sin embargo en el .log tenemos info sobre la línea en la que se produce el error, en la siguiente imagen el 1.29 indica que la compiación ha fallado en esa línea.


Eso es todo

 Queda el entorno preparado, tras compilar satisfactoriamente se abrirá automáticamente el pdf, si ya está abierto, cada vez que compilemos se actualizarán los cambios solos!



Toda la información sobre paquetes de LaTeX en CTAN.

martes, 24 de mayo de 2016

Raspbian: grupo hogar de Windows

Samba nos permite acceder desde un dispositivo Windows en el grupo hogar, permitiendonos coger y dejar archivos en la raspberry sin necesidad de utilizar sftp.

Instalación (raspi)

Suponemos que tenemos ya activo el grupo de trabajo / grupo hogar en windows. Vamos a instalar un servidor samba muy básico:

$ sudo apt-get update
$ sudo apt-get install samba samba-common-bin

Samba se instalará.

Directorio para lectura/escritura:
He creado una carpeta en /home/pi/ que utilizaré para pasar los archivos, la he llamado Compartido.

$ cd ~
$ mkdir Compartido

Configuramos Samba:

$ sudo nano /etc/samba/smb.conf

Quitar la almohadilla de las línaes indicadas en la imagen y darle los valores que toquen, en Windows verás tu grupo, por defecto será Workgroup o Homegroup. Cambiar "wins support" a valor "yes".


Bajamos en el archivo hasta encontrar las "Share Definitions" y añadimos la config (path, permisos...) de la carpeta "Compartido" que creamos en el paso anterior:



En texto...

[Compartido]
   path = home/pi/Compartido/
   browseable = Yes
   read only = no
   only guest = no
   public = no
   create mask = 0777
   directory mask = 0777

Guardamos todos los cambios: Ctrl+X -> Y -> Enter

Contraseña:
Colocamos una contraseña para el servicio de Samba, tendremos que utilizarla para acceder desde windows. Tras pulsar enter al escribir la siguiente línea nos pide que elijamos contraseña para el usuario pi, que será creado en el momento, tendremos que escribir la password 2 veces.

$ sudo smbpasswd -a pi

Restart:
Reiniciamos y todo debería estar funcionando:

$ sudo reboot

Acceso

Tenemos por tanto: Posibilidad de leer archivos de todo home/pi/ y leer/escribir en la carpeta home/pi/Compartido.

Accedemos desde Network al dispositivo RASPBERRYPI, se nos pedirá usuario y contraseña (pi, contraseña elegida).



domingo, 22 de mayo de 2016

Instalación del Workshop Tools de Dota 2

Hablaré sobre la instalación de una utilidad de Dota 2 que nos proporciona Valve para editar y crear nuestros propios mapas, personajes, habilidades y todo lo que se nos ocurra modificar dentro del juego.

He tenido problemillas con la utilidad que encontramos en Steam (Library -> Tools): Dota 2 Workshop Tools Alpha; básicamente tira un error al lanzarlo que dice Failed to start game (missing executable), comento el procedimiento que me ha funcionado.

En primer lugar, desinstalamos dicha tool si es que la habíamos instalado, click derecho sobre ella en nuestra library en Steam y clicar en "Delete Local Content".

Continuamos configurando Steam, concretamente activamos la participación en programas en beta, para ello, en la barra superior de steam: Steam -> Settings, y en la tab Account cambiamos la opción de Beta participation a "Steam Beta Update".


Después configuramos el contenido que deseamos de Dota 2, para ello, click derecho sobre Dota 2 en la Library, y clickamos en Properties. Indicamos que queremos todo el DLC en la pestaña DLC de las properties.


Acto seguido cambiamos a la pestaña Local Files, y verificamos el caché.


Tardará unos minutos en verificar el contenido, puedes tomarte un café.


Una vez acabe el cliente de Steam comenzará a descargar el contenido faltante e incluso redescargará parte del propio juego. En mi caso fueron 7 gigas.

Lanzamos

Para arrancar la herramienta hacemos click derecho sobre Dota 2 en la librería y seleccionamos "Launch Dota 2 Tools".


Imagen del entorno rulando:

sábado, 21 de mayo de 2016

Guiaburros pa los hermanos: Cliente Minecraft

Enlace descarga (Te hace falta el utorrent o similar para bajarlo):

https://kat.cr/minecraft-1-9-latest-2016-1-9r2-re-loaded-offline-installer-launcher-included-goodies-cracked-premium-teamextreme-officialhawk-t12170269.html

En el directorio donde lo has instalado tendrás un ejecutable llamado launcher dentro de la carpeta "minecraft launcher".

En el launcher, después de elegir tu nick, configuras qué versión quieres lanzar, elige según la versión del server al que vayas a conectarte, nuestro server de Dofitos corre la versión 1.9.


Simplemente dar a Play y se descargará la versión del juego.



Para conectar a nuestro server entrar en "Multiplayer" y cascar nuestra IP en "Direct Connect" o "Add Server" (preguntadme por la IP que es secreeeeetaaaaah...)

Montando el server de Minecraft

Haciendo uso de un servidor virtual que me ha dado Liss, comienzo a configurar un servidor de Minecraft para los amigos, a ver qué tal sale.



El SO es un Ubuntu 15.10 y la configuración se ha hecho a través de ssh usando Putty desde Windows.

A modo guíaburros, tomo nota de las pequeñas dificultades que han ido surgiendo:

Acceso ssh con par de claves desde windows

Putty + PuttyGen, ha sido necesario PuttyGen porque teníamos un par de claves ssh para acceder al servidor virtual.

http://www.chiark.greenend.org.uk/~sgtatham/putty/download.html

Con Puttygen abrimos el par de claves y generamos el fichero en .ppk, necesario para conectarnos con putty. Para ello, File -> Load private Key, Una vez cargadas las claves: Generate + Save private key, esto nos generará las claves.ppk.

Acceso ssh con putty, configurar ip y tipo de conexión/puerto (SSH/22) como es habitual, y además, añadir el fichero de claves generado con puttygen (en el árbol: Connection/SSH/Auth).



Java

Para instalar Java simplemente he seguido la info del siguiente enlace:
http://minecraft.gamepedia.com/Tutorials/Setting_up_a_server#Ubuntu

 

Server

Accediendo a la página https://minecraft.net/en/download/ vamos abajo del todo, y copiamos la url del enlace de descarga del servidor, en este caso: https://s3.amazonaws.com/Minecraft.Download/versions/1.9.4/minecraft_server.1.9.4.jar



Lo descargamos en nuestro servidor:
$ wget https://s3.amazonaws.com/Minecraft.Download/versions/1.9.4/minecraft_server.1.9.4.jar

Obtenemos un paquete .JAR en el directorio donde nos encontramos, para lanzar el server hacemos:
$ java -Xms2G -Xmx2G -jar minecraft_server.jar nogui

Donde 2G indica que dedicamos 2GB de ram tanto al startup (-Xms) como máximo (-Xmx), podemos dedicar la memoria que deseemos, usar $ free -m para ver de cuánta disponemos.

La primera vez fallará, aceptamos el eula.txt que ha sido generado, para ello cambiamos el valor de eula de false a true:
$ sudo nano eula.txt

Ctrl+X -> Y -> Enter

Volvemos a lanzar el server, y nos generará el server.properties en el mismo directorio, será necesario cambiar online-mode de true a false para permitir conexiones desde cuentas no oficiales. Ahora podríamos lanzarlo con dicho comando, pero tendríamos que tener la sesión abierta, de modo que haremos una script que lo lance por nosotros.

Autoarranque

En ello... de momento lo lanzo con screen por putty, soy muuuuuu gitano.
Por hacer.

Configuración

Importante dar poderes de administrador a alguna cuenta, en la consola del servidor escribir "op nombrejugador", de esa forma dicho jugador podrá utilizar los comandos de admin desde dentro del propio juego, inclusa nombrar a otros admins con "op nick" .

Mods... ? Por acabar



source:
https://www.digitalocean.com/community/tutorials/how-to-use-ssh-keys-with-putty-on-digitalocean-droplets-windows-users
http://minecraft.gamepedia.com/Tutorials/Setting_up_a_server

viernes, 13 de mayo de 2016

Imagen de SD en Windows con Win32DiskImager

El programilla funciona como un tiro pero puede verse un poco confuso.


Copiar imagen a SD

Nada extraño, está explicado fácil en el vídeo del enlace, clickando en el icono de la carpeta azul de "Image File" navegas hasta la imagen que quieres pasar a la tarjeta y la seleccionas. En el desplegable de la derecha ("Device") clickas la unidad en la que se quiere guardar, y click en Write.


Guardar imagen de la SD

Para hacer la operación inversa, en el desplegable tendrás que elegir la unidad de la tarjeta SD, y en la barra de "Image File" escribir el directorio/nombrearchivo.img, o bien hacerlo mediante el botón de la carpeta azul, escribiendo el nombre que se desee dar a la imagen acabado en .img dentro de la carpeta que queramos. Solamente queda clickar Read.

miércoles, 11 de mayo de 2016

Backup FANUC para simulación en ROBOGUIDE


A diferencia del backup general "As images" realizado por el menú de inicio del arranque (teclas F1+F5), el backup "All of above" puede ser cargado como la configuración de un robot en el entorno ROBOGUIDE para su simulación.

How-to:

MENU -> FILE -> FILE

F5 [UTIL] -> Set Device a UT1 / UD1 (UT1 siendo puerto del teach pendant, UD1 puerto del controlador).

F4 [BACKUP] -> All of Above -> F4 [YES] * -> F4 [YES] *

Posibles errores conocidos:

Durante el salvado aparece error: “Cannot backup file UT1:\FRAMEVAR.VR”. - No se reconoce correctamente el pincho en el puerto de la paleta.

Fix: Reconectar o cambiar al otro puerto, si no funciona dar formato en el mismo controlador: F5 [UTIL] -> FORMAT

* Al hacer backup en un pincho vacío nos preguntará si crea algunos ficheros y si no borra otros, simplemente decir que sí a todo.

miércoles, 27 de abril de 2016

Mueblecito herramientas prusa

Acabo de encontrar los ficheros del mueblecito de la prusa que hice hace algún tiempo y no publiqué porque quedó pendiente ajustar algunas cosillas, ya están hechos los cambios y subido a thingiverse :D




sábado, 23 de abril de 2016

Raspbian: IP estática por wifi y cable

Acabo de comenzar a configurar una imagen limpia de Raspbian Jessie para utilizarla como media center, de momento la estoy trasteando por cable pero quería tener preparadas las 2 conexiones.



Mi adaptador es un ALFA con chipset realtek. Jessie ya traía los drivers adecuados, para comprobar si tiene tambien los tuyos o debes instalarlos: Wifi Adapters Raspberry

La config que me ha funcionado correctamente:

interfaces

Editamos el fichero de configuración:
$ sudo nano /etc/network/interfaces

# interfaces(5) file used by ifup(8) and ifdown(8)

# Please note that this file is written to be used with dhcpcd
# For static IP, consult /etc/dhcpcd.conf and 'man dhcpcd.conf'

# Include files from /etc/network/interfaces.d:
source-directory /etc/network/interfaces.d

auto lo
iface lo inet loopback

auto eth0
allow-hotplug eth0
iface eth0 inet static
address 192.168.1.21
netmask 255.255.255.0
gateway 192.168.1.1

#auto wlan0
allow-hotplug wlan0
iface wlan0 inet static
address 192.168.1.22
netmask 255.255.255.0

   wpa-conf /etc/wpa_supplicant/wpa_supplicant.conf

iface default inet dhcp

Con la config anterior mi raspi tendría la dirección 192.168.1.21 por cable y 192.168.1.22 por WiFi. Para conocer tu gateway, netmask y, por tanto, la ip que podrías utilizar, puedes usar $ ifconfig (raspi/linux), o > ipconfig/all (terminal de windows).

wpa_suplicant.conf

Contiene la info de la red WiFi, con el entorno gráfico de raspbian podemos conectarnos a la red clickando sobre ella e introduciendo la contraseña, ésto nos generará el fichero wpa_supplicant.conf.


Si queremos crearlo nosoros mismos, tendremos que hace algo parecido a ésto:

$ sudo nano /etc/wpa_supplicant/wpa_supplicant.conf

ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=netdev
update_config=1

network={
   ssid="NombreRed"
   psk="ContraseñaRed"
   key_mgmt=WPA-PSK
}

*Nota. El valor de key_mgmt cambiará según tu encriptación.

Done!

Solamente queda reiniciar la raspberry :)