21 de febrero de 2017

Luces de escalera

Pequeño proyecto presentado para el curso de ARDUINO, con Juanma, en el CEP de Jerez (Febrero - 2017). Consiste en el control de las luces de una escalera, que se apagan automáticamente tras un tiempo determinado.


30 de enero de 2017

Trucos de Ubuntu: instalando w7 en un pen

  1. Creando imagen iso desde dvd --> dd if=/dev/sr0 | pv | dd of=w7.iso
  2. Instalar 
  • sudo add-apt-repository ppa:mkusb/ppa # and press Enter to accept it 
  • sudo apt-get update 
  • sudo apt-get install mkusb 
  • sudo apt-get install mkusb-nox
  •  sudo apt-get install usb-pack-efi # if you want to make a persistent live drive 
  1. Ejecutar desde root mkusb
  2. Seguir instrucciones comando "d"
Sin embargo, tras intentarlo, el sistema no es capaz de arrancar. Dar errores de "grub rescue" (verlo más adelante)

= = = 

Lo que ha funcionado (Ubuntu 16.04) es la solución de: https://onetransistor.blogspot.com.es/2016/04/install-winusb-on-ubuntu-1604-lts.html
  1. Bajarse el fichero winusb
  2. Copiar lo siguiente en un script con extensión sh en la misma carpeta donde nos hemos bajado el fichero anterior
    • #!/bin/bash
      
      sudo apt-get install gcc build-essential libwxbase3.0-dev libwxgtk3.0-dev
      tar zxf winusb-1.0.11.tar.gz
      cd winusb-1.0.11/src
      sed -i -- 's#wxStandardPaths().GetInstallPrefix()#wxStandardPaths::Get().GetInstallPrefix()#g' findFile.cpp
      sed -i -- 's#wxStandardPaths().GetDataDir()#wxStandardPaths::Get().GetDataDir()#g' findFile.cpp
      cd ..
      ./configure
      make
      sudo make install
      cd ..
      rm -rf winusb-1.0.11
       
  3. Dejo el resto del artículo:
Save this into a text file with .sh extension, make it executable and run it in the same folder with the source archive you downloaded. It will install required build libraries and tools the compile the source.
Some things have changed with wxWidgets 3.0 and objects of class wxStandardPaths cannot be created anymore. Instead, a global wxStandardPaths object can be returned via wxStandardPaths::Get() call. Therefore all occurrences of wxStandardPaths(). must be replaced with wxStandardPaths::Get(). and this is what the script does using sed.
After you run this script, WinUSB will be installed and it should pop-up when you launch it. In order to make it work on UEFI systems, you have to:
a) install MBR dependencies for GRUB: sudo apt-get install grub-pc-bin
b) fix the GRUB installation method - open /usr/bin/winusb with a text editor with administrator rights (i.e. gksu gedit /usr/local/bin/winusb), find a line that starts with grub-install (line 401) and replace it with:
grub-install --target=i386-pc --boot-directory="$partitionMountPath/boot" "$device"
This is also described at the end of the previous article about installing WinUSB in Ubuntu 15.10.

= = =

La ejecución de winusb es de la forma:

winusb --install  /home/usuario/Documentos/w7.iso  /dev/sdb1

5 de diciembre de 2016

Trucos de Ubuntu: convertir - concatenar pdfs

Para convertir ficheros desde la línea de comandos, de ODT a PDF, podemos usar:

unoconv -f pdf [nombre_ficheros].odt

Y así se harían en bloque, porque con LibreOffice lo podemos hacer de uno en uno con el botón PDF.

Para concatenar varios PDFs se usa, desde la línea de comando la orden pdftk

pdftk uno.pdf dos.pdf cat output resultado.pdf

22 de noviembre de 2016

Visita al CNA

Ayer estuvimos de visita, con los 2º BACH, en el CNA de la Isla de la Cartuja (Sevilla). Visita muy interesante y recomendable si os gusta las Ciencias y la Física en particular.

Trabajando con algoritmos


Empezamos el trabajo con algoritmos en Programación, 2º BAC, y estamos usando un programa muy gráfico para ello: PSEINT

http://pseint.sourceforge.net/

Con él practicamos escribiendo los algoritmos de los programas de cálculo del IMC.



29 de agosto de 2016

Estación meteorológica ONLINE ARDUINO.

Tras varios día de estudio, investigación y programación he diseñado una simple estación meteorológica que espero que os guste. Envía datos desde un ARDUINO UNO con tarjeta ETHERNET a través de la red y, otro servidor web, es capaz de ejecutar una aplicación para leer y tratar los datos. 

  1. Información en Google Drive
  2. Programas en Github.

8 de agosto de 2016

14. Moodle en la Raspberry Pi. Lentitud del sistema.

No sé demasiado sobre el tema. Simplemente iré hilando ideas tras leer en la web páginas en las que se habla del mismo.

Al parecer hay dos cuellos de botella con la Raspberry Pi. El primero es la velocidad de transferencia de datos almacenados (ya que no es lo mismo el acceso a una tarjeta microSD que a un disco duro), y el segundo puede ser la velocidad de la tarjeta ethernet, que es una 10/100 no una Gigabit.

La tarjeta microSD es una kingston 64GB clase 10 UHS-1, con 45MB/s de lectura y 10MB/s de escritura según el fabricante.  Comparado con:
  1. Disco duro HDD: hago la prueba con el disco duro del ordenador que estoy usando, que es una unidad de 160GB SATA. Usando el comando hdparm de Ubuntu, tenemos una velocidad de lectura de unos 63MB/s. La prueba de velocidad de escritura me da 51,9MB/s.
  2. Disco SSD: en mi ordenador de torre personal tengo una unidad SSD en la que, midiendo tengo una velocidad de lectura de 313 MB/s y de escritura de 343 MB/s.
  3. En el servidor, microSD: la velocidad de lectura es casi fija en 13,59MB/s y la velocidad de escritura arroja un resultado de 8,6MB/s. 
En esta página parece que puede mejorarse la transferencia con un overclocking (cuidado con la pérdida de datos): http://www.jeffgeerling.com/blog/2016/how-overclock-microsd-card-reader-on-raspberry-pi-3
En esta otra se habla de una comparativa de tarjetas y de velocidades medidas. http://www.jeffgeerling.com/blogs/jeff-geerling/raspberry-pi-microsd-card. En ella puede observarse que la tarjeta análoga, de la misma marca (Kingston clase 10 16GB) tiene un rendimiento algo mayor que la nuestra de 64GB. La que parece mejor documentada (y explica por qué los rendimientos teóricos no son comparables a la comunicación en la raspberry).

Otra página que habla como tener una tarjeta Gigabit con una Raspberry: http://www.jeffgeerling.com/blogs/jeff-geerling/getting-gigabit-networking
Conclusión: ¿es posible mejorar el acceso y la velocidad? Creo que, por este orden, habría que hacer:
  1. Mejorar el rendimiento del software. Implicaría una configuración quizás diferente, con un servidor web más ligero, con un php más eficiente. Habría que seguir los paso de la web: https://moopi.uk/ y/o https://www.digitalocean.com/community/tutorials/how-to-install-linux-nginx-mysql-php-lemp-stack-in-ubuntu-16-04 ... Y otra web: https://www.howtoforge.com/tutorial/installing-nginx-with-php7-fpm-and-mysql-on-ubuntu-16.04-lts-lemp/
  2. Comprar una tarjeta de mejores prestaciones: OWC Envoy SSD 64GB, SanDisk Ultra Fit32GB... Si son ciertas las informaciones de las páginas web anteriores, deberíamos mejorar casi al doble el rendimiento de la Raspberry para este propósito. 
  3. Atreverse a hacer un overclocking, pero salvaguardar los datos con una imagen antes.
Esperemos que en un futuro las prestaciones de una tarjeta como Raspberry alcancen las mínimas para montar este y otros servicios en red, como NAS, por ejemplo. Para ello deberían contar con un dispositivo I/O SATA dedicado (http://www.mikronauts.com/raspberry-pi/how-can-i-add-a-sata-hard-drive-to-a-raspberry-pi-2/)

En esta otra página hablan de una tarjeta de expansión, la X300, que tiene una conexión SATA: http://www.suptronics.com/xseries/x300.html. ¿Podrá ser esa una solución? En ese caso conectaríamos un disco duro al sistema con quizás su propia alimentación.
 

7 de agosto de 2016

13. Moodle en la Raspberry PI. Tareas de cron.

En el manual de Instalación rápida de Moodle, puede leerse que no debemos olvidarnos de ejecutar frecuentemente el fichero cron.php. (¡¡Nos aconsejan cada minuto??). Este fichero pone en marchas procesos de limpieza, sincronización, comprobación de actualizaciones, etc., y su ejecución permite que tengamos Moodle optimizado.

Desde un terminal (como administrador) se ejecuta el cron de Moodle fácilmente con la orden: /usr/bin/php /var/www/html/moodle31/admin/cli/cron.php. Sin embargo, como tenemos que ejecutarlo repetidamente, lo mejor es usar la utilidad crontab para que nuestro servidor lo haga automáticamente. Crontab es el "demonio" de Linux que ejecuta tareas automáticas programadas según entradas de hora y fecha (ver manual de uso de crontab).

Yo no voy a ejecutarlo cada minuto... Aún hay que resolver los problemas de lentitud del sistema y no quiero que esté constantemente ejecutándose esa orden. Lo haré una vez al día, además, cuando presuma que nadie está usando el servidor (tened en cuenta que se supone que un servidor siempre está encendido). Así que mi opción es ejecutarlo a las 3:30 de la madrugada. Mi tarea de cron es:

30 3 * * * /usr/bin/php /var/www/html/moodle31/admin/cli/cron.php

Minuto 30, hora 3, los demás asteriscos significan que cualquier día, y después, el comando. Antes del comando también se puede poner el usuario que lo ejecuta root, quedando como 30 3 * * * root /usr/bin/php /var/www/html/moodle31/admin/cli/cron.php

Una vez activado, podemos estar seguros que nuestro Moodle se encontrará siempre (en mi caso día tras día... :-) ) optimizado.




12. Moodle en la Raspberry PI. Instalación y Configuración de Moodle

La instalación de Moodle, en general, al menos por el método que he elegido, ha resultado ser lenta y tediosa, lo cual me hace pensar que: primero, es posible que Moodle, al menos en la instalación que estoy haciendo, sea muy lento con la Raspberry (más adelante intentaré explicar la causas de esta lentitud) y, segundo, que la instalación que estoy llevando a cabo está muy alejada de la óptima, con lo cual habría que optar por buscar más información por internet e intentar realizar una instalación optimizada. En fin, siempre habrá tiempo para hacer esto último.

Comentaros que en las instrucciones que siguen el proceso lo he llevado a cabo dos veces; el primero, incompleto, sirvió para darme cuenta que sería bueno instalar unos módulos de php recomendados y, el segundo, el definitivo, se demoró toda una noche (en realidad, porque me fui a dormir y lo dejé trabajando no sé cuanto tardó el proceso, pero os puedo asegurar que más de 4 horas).

 - - -

Instalando Paquetes recomendados.


Abriendo un terminal en la Raspberry (ya sabéis hacerlo) como administrador, instalé los siguientes paquetes:
  • apt-get install php7.0-intl
  • apt-get install php7.0-xmlrpc
  • apt-get install php7.0-xsl
  • apt-get install php-soap
  • Y que no se os olvide, que a mí me pasó, reiniciar después el sistema o con apache2ctl restart o reboot.


Instalando Moodle: Primera Parte.

Básicamente consiste en elegir el idioma de la instalación, indicarle al sistema qué rutas he elegido como directorio de moodle y de datos e indicar los parámetros de conexión a la base de datos MySQL. El sistema mostraría los paquetes php que le hacen falta y su estado, y empezará el proceso de generación de tablas en la base de datos y demás información en el directorio de instalación y en el directorio de datos.


¿Error instalando? Se demora mucho...

A las tres horas aún no ha terminado de generar las tablas

Instalando Moodle: Segunda Parte.

Una vez generada la información que le hace falta a Moodle, el sistema pide los datos del administrador. Es importante elegir un correo electrónico adecuado y una contraseña segura que deberá conservarse (el nivel de seguridad de la contraseña puede cambiarse/modificarse después). A continuación, pide información general para mostrar en Moodle, como el nombre del sitio, por ejemplo, y se accede , por fin, a la primera página, de administración.



Una vez el sistema instalado, en el próximo acceso , sólo tendré que escribir en el navegador http://192.168.1.30/moodle31 (o el nombre que pusiste en la carpeta moodle, u otro), y tras solicitar usuario y contraseña, se accede. 

Y ya podemos dar por concluido el proceso de instalación. A partir de ahora el trabajo se reduce al del administrador de Moodle: configuración del sitio. Pueden hacerse muchas cosas: fundamental, la creación o subida de cursos y la gestión de usuarios,  pero también mejorar el aspecto del sitio, la configuración de una cuenta de correo de envío SMTP, ajuste de parámetros de administración como por ejemplo el nivel de seguridad de las contraseñas, etc.

Por ejemplo, podéis encontrar más información en:


5 de agosto de 2016

11. Moodle en la Raspberry PI. Primeros pasos.

Toda la información de este post se muestra en el vídeo: 



Una guía general para la instalación (https://moodle.org/) se puede encontrar en la página https://docs.moodle.org/31/en/Installation_quick_guide#Basic_Requirements.

Sin embargo, no todos los pasos son absolutamente necesarios hacerlos de esa forma; algunos pueden simplificarse con las herramientas que ya hemos instalado.

Si has seguido las indicaciones de los post anteriores, la configuración de PHP, Apache y MySQL estará completada.
  1. De la página de descargas bájate el fichero ZIP de la última versión estable (en mi caso la 3.1.1). Guárdalo en tu ordenador cliente.
  2. Crea una base de datos entrando en PHPMYADMIN (http://192.168.1.30/phpmyadmin). Yo la he llamado bdmoodle31. Acuérdate del nombre... Si no tienes phpmyadmin puedes, alternativamente, crear la BD como te dice la guía de instalación accediendo a MySQL directamente a través de un terminal.
  3. Crea desde webmin el siguiente directorio /var/moodledata31. Desde el gestor de ficheros de webmin (icono chmod) selecciona la carpeta y dale permisos de escritura/lectura/ejecución para todos (permiso 0777). Si es necesario, Moodle avisará después, durante la instalación, del cambio de permisos que necesita. Observa que este directorio está fuera del directorio público del servidor /var/www/html.
  4. Entra en /var/www/html/ con webmin y sube el fichero zip que descargaste antes en tu ordenador. Descomprímelo. Creará en la raíz una carpeta llamada moodle (si quieres cámbiale el nombre a la carpeta, por ejemplo a moodle31).
  5. Aunque en la instalación habla de permisos, vamos a dejarlo. En la configuración de la instalación, si existen errores, te lo irá indicando sobre la marcha.
  6. Ejecuta en el navegador http://192.168.1.30/moodle (o si cambiaste el nombre de la carpeta /[nombrequepusiste]). Saldrá la página de instalación.
  7. Cambia el idioma a español internacional. Siguiente.
  8. En la siguiente página indica qué extensiones de php faltan. En concreto averiguamos que faltan php-curl y php7.0-zip. Cierra todo lo que estés haciendo, abre un terminal en el servidor (con ssh o directamente en el servidor) y ejecuta los comandos apt-get install php-curl y apt-get install php7.0-zip. Reinicia con apache2ctl restart ...o... reboot. NOTA: es posible que, más adelante, para instalar algo específico hagan falta más paquetes de php que se instalarían de la misma manera.
  9. Comprueba que esa segunda página ya no sale cargando otra vez desde el navegador http://192.168.1.30/moodle. 
  10. Dejamos los siguientes pasos para el siguiente post.

10. Moodle en la Raspberry PI 3. Configuración de php.ini

Toda la información de este post puedes encontrarla en vídeo.


Antes que nada indicar que intentaré instalar Moodle de la misma forma que lo hice en mi otro servidor, que os recuerdo que es un HP Proliant. Ambos tienen 1GB de RAM y unos 65GB de espacio disponible (el primero con discos SCSI y el segundo con una microSD Clase 10) , y, si acaso en mi HP Proliant la velocidad de 3.00GHz mientras que la Raspberry Pi 3 tiene 1.2GHz. Si existen problemas derivados de la diferencia de configuración, los resolveré sobre la marcha o, en su caso, daremos marcha atrás e intentaré la instalación de otra forma, quizás siguiendo las indicaciones de páginas como https://moopi.uk/

Para transferir al servidor ficheros grandes puedo usar FTP. Eso me servirá para cargar paquetes de instalación, contenidos, etc. Los paquetes de instalación pueden cargarse al servidor mediante otros métodos, con wget, con git, etc. Pero hay una circunstancia de carga en la que se usará PHP en particular: dentro de Moodle para subir copias de cursos al mismo. Los cursos son ficheros que pueden ocupar varios megas y, lo habitual, es que PHP no esté habilitado para cargar ficheros muy grandes, así que vamos a permitírselo.

La configuración de PHP viene en un fichero php.ini del que, además, podemos encontrar varias copias distintas en diversas rutas de la instalación (si no, ejecuta el comando whereis php.ini). Tengo que encontrar cuál es el que está usando PHP y donde está. Para ello, en la ruta del servidor /var/www/html crea un fichero phpini.php con el siguiente contenido:


Una vez guardado, ejecuta en el navegador la dirección 192.168.1.30/phpini.php (Recuerda: 192.168.1.30 es mi dirección IP de ejemplo; tú puede que la hayas cambiado. Lee los posts anteriores) , y saldrá una información como...:


En esta página, en la primera línea, aparece la ruta completa al fichero php.ini activo; en mi caso /etc/php/7.0/apache2/php.ini o en la línea de la tabla Loaded Configuration File. Como podréis comprobar este pequeño script muestra la información de todos los parámetros de PHP. 

Si usas Mozilla-Firefox con la tecla CTRL+F accedes a las opciones de búsqueda. Busca los parámetros post_max_size, upload_max_filesize y memory_limit. Comprobarás que no superan los 8MB (8M). Necesito que estos parámetros sean mayores, de 256M.

- - - 

Para cambiarlos sigue los siguientes pasos:
  1. Entra en la webmin del servidor. https://192.168.1.30:10000
  2. Accede con el usuario y contraseña administrador.
  3. En Others (otros), escoge File Manager o Java File Manager (Gestor de archivos o gestor de archivos Java).
  4. Entra en la ruta /etc/php/7.0/apache2 y localiza el fichero php.ini
  5. Haz una copia de este fichero y renómbrala como php_OLD.ini. Si tuvieses algún problema con PHP puedes usar esta copia de nuevo.
  6. Edita el php.ini. Localiza los parámetros anteriores (post_max_size, upload_max_filesize y memory_limit) y cambia sus valores a 256M (los tres). Guarda.
  7. Reinicia el servidor: entra en un terminal como administrador y ejecuta apache2ctl restart. (O bien haz un reboot a la raspberry).
  8. Entra otra vez en la página 192.168.1.30/phpini.php. Localiza los parámetros y comprueba que tienen el nuevo valor de 256M.








4 de agosto de 2016

Listado Raspberry PI

RaspBerry Pi 3 Model B con Ubuntu Server 16.04 Standard