Alquilar proyectores en el Reino Unido

Después de un tiempo y bastante esfuerzo por fin hemos puesto en marcha otro de nuestros proyectos, el alquiler de proyectores en el Reino Unido, con sede en Londres.

Projector Hire in the UKCon la apertura de este nuevo centro damos un paso más en la expansión de la empresa a otros mercados. Por supuesto esto no va a afectar en lo más mínimo al servicio de alquiler de equipos que llevamos prestando desde el año 2001 a través de AbacoProyectores.

En breve publicaré algunos artículos explicando cómo ha sido el proceso y las dificultades de abrir una empresa en Inglaterra.

Respuesta a la pregunta #2. ¿Cómo hacer un bucle infinito?

Hoy vamos a ver la respuesta a la pregunta ¿Cómo hacer un bucle infinito?.

Teníamos el código:

#include <stdio.h>
 
int main() {
	char i;
	for (i=0; i>=0; i++) {
		printf("Soy un bucle infinito (ciclo %d)\n", i);
	}
 
	return 0;
}

y se trataba de convertirlo en un bucle infinito sin modificar el for y usando números enteros. Una posible solución es:

#include <stdio.h>
 
int main() {
	unsigned char i;
	for (i=0; i>=0; i++) {
		printf("Soy un bucle infinito (ciclo: %d)\n", i);
	}
 
	return 0;
}

El problema era que el bucle no era infinito porque cuando la variable i llega a 127 y le sumamos 1 se convierte en -128. Como este es un número negativo la condición del for ya no se cumple.

Al usar un unsgined, cuando la variable i llega a 255 si la incrementamos pasa al siguiente número válido que es el 0. De esta forma ya tenemos uno de los incómodos bucles infinitos.

Pregunta de examen en C: ¿Cómo hacer un bucle infinito?

Siguiendo con la pregunta de examen de hace unos días “¿Es un bucle infinito?” hoy toca una nueva pregunta:

¿Cómo modificarías este código para que sí fuera un bucle infinito?

NOTA: No se puede cambiar nada en la línea del for y se deben usar números enteros.

#include <stdio.h>
 
int main() {
	char i;
	for (i=0; i>=0; i++) {
		printf("Soy un bucle infinito (ciclo %d)\n", i);
	}
 
	return 0;
}

Taller de Raspberry Pi en Bilbao

Estamos preparando un nuevo taller de introducción a la Raspberry Pi en Bilbao. Por ahora estamos definiendo horarios y grupos.

Objetivo de los talleres de Raspberry Pi

Conocer a fondo la Raspberry Pi, aprender a programarla, hacer varios proyectos y experimentos y hacerla interactuar con el mundo real a través de sensores, cámaras y servomotores. Y sobre todo conocer gente y pasárselo bien.

Contenido del taller

En los talleres aprenderemos:

  • Introducción a la Raspberry Pi
  • Instalación de la Raspberry Pi
  • Introducción a la consola
  • Python para la Raspberry Pi
  • Manejo de la Raspicam
  • El puerto GPIO
  • Un poco de electrónica
  • Python para la Raspberry Pi
  • Proyectos prácticos: control del puerto GPIO, sensonres de movimiento, servomotores, conversión A/D

Es un taller pensado para principiantes pero si tienes experiencia en el manejo de Linux o has usado algún lenguaje de programación disfrutarás aún más del curso.

Material

El precio del taller incluye:

– Un ordenador por participante.
– Una Rapsberry Pi por participante.
– Una RaspiCam por participante (la cámara de la Raspberry Pi).
– Sensores, servomotores y todo el material necesario para los experimentos y proyectos del taller.

Este material quedará siempre en el taller y hay que devolverlo al final del curso. Por supuesto existe la posibilidad de comprarlo si quieres.

Por supuesto puedes traerte tu propia Raspberry Pi de casa.

Lugar

Instalaciones de Abaco Proyectores, calle Autonomía, 64 Bis, 4ª Planta, 48012 Bilbao.

Horarios

Los horarios no están definidos del todo pero lo que tenemos seguro por ahora es:

– Sábados por la mañana: 4 horas.
– Lunes a Viernes: 2 horas por la tarde.

Precio

El precio de los talleres del Sábado es de 35 euros por día.

Talleres de Lunes a Viernes: consultar.

Solicitar información

Si estás interesado ponte en contacto usando este formulario de contacto o puedes llamarnos al 94 421 58 40:


Raspberry Pi Logo

Raspberry Pi Logo

Linux: ¿Qué sistema operativo usan los ordenadores de mi red?

Hace unos días vimos cómo saber qué ordenadores estaban conectados a nuestra red local. Es una forma de saber si tenemos intrusos en nuestra red y es conveniente comprobarlo cada cierto tiempo (sobre todo si tenemos una red wifi).

Una vez tengamos el listado de los equipos conectados, si vemos alguno que no debería estar debemos empezar a actuar. Normalmente podemos echar a los que se han conectado a nuestro wifi cambiando la clave del router y reiniciándolo, usando WPA en lugar de WEP para mayor seguridad o filtrando por MAC (ojo, que las direcciones MAC se pueden falsear).

Averiguar el sistema operativo con nmap

Una vez tenemos localizada la posible IP intrusa (supongamos que es la 192.168.1.101) bastaría con hacer:

sudo nmap -O 192.168.1.101

Esto nos dará una información que puede ser similar a ésta:

Host is up (0.0093s latency).
Not shown: 996 closed ports
PORT     STATE    SERVICE
21/tcp   filtered ftp
23/tcp   filtered telnet
25/tcp   filtered smtp
3971/tcp open     lanrevserver
MAC Address: 00:22:F7:26:39:9D (Conceptronic)
Device type: general purpose
Running: Linux 2.6.X
OS CPE: cpe:/o:linux:linux_kernel:2.6
OS details: Linux 2.6.13 - 2.6.32
Network Distance: 1 hop

Vemos que ha habido suerte y ya tenemos el sistema operativo aproximado que usa el ordenador en cuestión.

Una anécdota

Os voy a contar un caso curioso que me sucedió hace un tiempo. En una red descubrieron que había conectado un equipo que no tenían identificado. Dicho equipo estaba conectado no a través de Wifi sino de cable. Gracias al nmap descubrieron que el misterioso ordenador funcionaba con alguna versión de Linux. El problema es que ellos, salvo el router, usaban MS Windows en todos los equipos.

Se dispararon todas las alarmas y empezó la caza del intruso. Hicieron un inventario de todos los equipos con sus IP, se comprobaron todos los ordenadores por si alguno tenía alguna máquina virtual instalada, e incluso revisaron todo el cableado por si alguien había instalado algún dispositivo “extraño” oculto.

Cuando estaban en medio de la investigación me avisaron a ver si se me ocurría algo. Al final resultó que en el almacén tenían otro router del que nadie se acordaba (al almacén no entraba nadie de la oficina) y esa era la misteriosa máquina con Linux.

Arrancar un programa al inicio en Linux Mint (Cinnamon)

Hace un tiempo expliqué cómo iniciar un programa automáticamente al entrar en Ubuntu. El sistema es parecido en Linux Mint (Cinnamon):

1) Entramos en Menú -> Preferencias -> Aplicaciones al inicio (Startup Applications):

Configuración de aplicaciones que se inician automáticamente en Linux Mint

Listado de aplicaciones que se cargan al inicio

2) Click en el botón Add (o Añadir):

Añadir aplicación para el inicio automático

Añadir aplicación para el inicio automático

En el campo “Nombre” escribimos el nombre que queremos que aparezca en el listado anterior. En el campo “Comando” debemos poner la ruta al programa que queremos ejecutar (lo más habitual es que esté en los directorios /bin, /usr/bin o /usr/local/bin).

Raspberry Pi ¿Cómo configurar y conectarnos vía SSH sin monitor?

Raspberry Pi Logo

Raspberry Pi Logo

Dado que yo no tengo a mano ningún monitor HDMI (hay una TV, sí, pero esa suele estar ocupada) suelo conectarme con las Raspberry Pi a través de SSH. Os dejo aquí los pasos por si pudiera ayudaros.

Meter la tarjeta SD con el sistema operativo de la Raspberry en el portátil

Lo primero de todo es tener la tarjeta SD que contiene el sistema operativo que vamos a usar en la RPi. Si está vacía debemos primero volcar la imagen de nuestro SO en la tarjeta.

Abrimos una consola y buscamos la carpeta donde está montada la tarjeta. En mi caso:

gorka@gorkalaptop:/media/gorka$ ls /media/gorka
548da502-ebde-45c0-9ab2-de5e2431ee0b  boot
gorka@gorkalaptop:/media/gorka$ cd /media/gorka
gorka@gorkalaptop:/media/gorka/548da502-ebde-45c0-9ab2-de5e2431ee0b$

Aquí vemos que la tarjeta SD está montada con el extraño nombre de 548da502-ebde-45c0-9ab2-de5e2431ee0b. Ahí es donde está el sistema de archivos de la RPi. Busco el directorio /etc/rc2.d:

gorka@gorkalaptop:/media/gorka/548da502-ebde-45c0-9ab2-de5e2431ee0b$ cd etc/rc2.d

¡Cuidado! No os equivoquéis y pongáis cd /etc/rc2.d porque entonces estaréis modificando los archivos de vuestro propio ordenador en lugar de los de la RPi.

Al hacer un ls veréis una serie de archivos:

$ ls
K01lightdm     S01bootlogs  S01triggerhappy    S02rsync
K02ssh         S01ifplugd   S02cron            S04detector-init
K05nfs-common  S01motd      S02dbus            S04plymouth
K05rpcbind     S01rsyslog   S02dphys-swapfile  S04rc.local
README         S01sudo      S02ntp             S04rmnologin

Cambiamos el nombre de K02ssh por S02ssh (ojo, en lugar de 02 puede poner otro número) y de esta forma se arrancará automáticamente el SSH:

sudo mv K02ssh S02ssh

Ahora desmontamos la SD de nuestro ordenador, la extraemos y la instertamos en la Rpi. La conectamos a nuestra red local usando un cable ethernet (porque la RPi no tiene acceso al Wifi en mi caso) y la encendemos.

¿Cómo saber cuál es la IP de la Raspberry Pi?

En mi caso he entrado en el panel de control de mi router y he buscado la lista de los dispositivos conectados (attached devices) y he visto:

2	192.168.1.120	B8:27:EB:D8:7E:37	RASPBERRYPI

Si no tienes acceso al router puedes probar este otro sistema.

Conectarnos a la Rapsberry vía SSH

Una vez sabemos la IP de nuestra Raspberry Pi abrimos una consola. En mi caso tiene asignada la IP 192.168.1.120, así que para conectarme por SSH basta con teclear:

ssh pi@192.168.1.113

La primera vez que nos conectemos veremos el mensaje:

The authenticity of host '192.168.1.120 (192.168.1.120)' can't be established.
ECDSA key fingerprint is cf:b4:8a:0f:91:28:8f:44:cc:d7:84:60:05:36:83:35.
Are you sure you want to continue connecting (yes/no)?

Podemos contestar “yes”. Ahora nos pedirá la clave. Asumiendo que no hemos cambiado la clave de la RPi el usuario al que nos conectamos el “pi” y la clave que nos pide será “raspberry” (esto hay que cambiarlo rápidamente).

En ocasiones (si ya hemos estado jugando con otras RPi y hemos hecho mil pruebas) es posible que no podamos conectarnos y nos salga un aviso diciendo que podemos estar sufriendo un ataque “man-in-the-middle”. En este caso, y si tenemos la certeza de que no es así, teclearemos:

ssh-keygen -R 192.168.1.113

De esta forma “reseteamos” las claves correspondientes a esa IP.

Si ha ido todo bien ya estaremos dentro:

Linux raspberrypi 3.10.24+ #610 PREEMPT Thu Dec 12 13:12:09 GMT 2013 armv6l
 
The programs included with the Debian GNU/Linux system are free software;
the exact distribution terms for each program are described in the
individual files in /usr/share/doc/*/copyright.
 
Debian GNU/Linux comes with ABSOLUTELY NO WARRANTY, to the extent
permitted by applicable law.
Last login: Sat Dec 21 17:49:29 2013 from 192.168.1.104
pi@raspberrypi ~ $

Ahora, por seguridad, debemos cambiar las claves públicas/privadas SSH para evitar usar las mismas que todos los que se hayan descargado la misma imagen del sistema operativo que nosotros:

sudo rm /etc/ssh/ssh_host_* && sudo dpkg-reconfigure openssh-server

Ahora nos desconectamos de la RPi tecleando:

exit

Y:

ssh-keygen -R 192.168.1.120

Y ya está, ya podemos conectarnos vía SSH a nuestra Raspberry Pi con normalidad. Es buena idea asignar una IP fija a nuestra RPi para que no tengamos que buscarla cada vez. También sería conveniente configurar el SSH para hacerlo más seguro, pero esos son temas para otros artículos.

Internacionalización de empresas

En la sección de consultoría de la empresa hemos puesto en marcha un blog donde estamos publicando artículos para ayudar a las empresas que busquen nuevos mercados o estén en un proceso de internacionalización. Os dejo un par de artículos interesantes:

Crear una empresa en Inglaterra (Reino Unido) – Abrir una cuenta bancaria para no residentes

Crear una empresa en Inglaterra (Reino Unido) – Tipos de empresas

Los peligros de una internacionalización apresurada

Linux: ¿mi sistema operativo es de 32 bits o de 64 bits?

En múltiples ocasiones nos encontraremos con esta duda. Hay varias formas de saberlo, por ejemplo, en Ubuntu podemos hacerlo yendo a Configuración del sistema -> Sistema -> Hardware. Allí se nos especifica el tipo de sistema operativo (32 bits o 64 bits).

En Linux Mint (Cinnamon) sería muy parecido. Deberíamos ir a Menu -> Icono “Preferencias de sistema” -> en la sección “Hardware” buscamos “Información de sistema”. Allí, en “Información de la distribución” veremos si se trata de la versión de 32bits (i686) o la de 64 bits (x86-64).

Determinar si nuestro kernel es de 32 bits o 64 bits desde consola

Si estamos en un sistema que no incluye ninguna opción en el entorno gráfico para saber el tipo de kernel (o no tenemos entorno gráfico) podemos hacerlo también desde un terminal o consola.

Bastaría con teclear:

uname -a

Y tendremos un resultado similar a éste:

Linux dellgorka 3.11.0-14-generic #21-Ubuntu SMP Tue Nov 12 17:07:40 UTC 2013 i686 i686 i686 GNU/Linux

Si en el resultado vemos que pone, como en este caso, i686 esto significa que tenemos un sistema operativo de 32 bits. Si, por el contrario, indicase x86_64 se trataría de uno de 64 bits.

También podemos usar:

uname -m

que mostará únicamente:

i686

en un sistema operativo de 32 bits o x86_64 en uno de 64 bits.

Procesador de 64 bits y sistema operativo de 32 bits

Es importante destacar que nuestro procesador puede ser de 64 bits y nuestro sistema operativo, en cambio, de 32 bits. Por eso, lo que nos interesa es saber los bits del sistema operativo y no del procesador.