Cada poco tiempo surge un nuevo lenguaje de programación o un nuevo framework que supuestamente iba a suponer una revolución y iba a facilitar enormemente la vida al programador.
Las consecuencias no son siempre beneficiosas, más bien lo contrario y cuando echo la vista atras, veo que esta proliferación de lenguajes ha dejado muchos cadaveres en el camino, sobre todo de aquellas personas que no eligieron correctamente el sistema o lenguaje a aprender
Además ha habido importantes efectos colaterales negativos a nivel global, fruto del furor creativo, entre los que yo destacaría:
Fragmentación- Cada plataforma usa su propio lenguaje (IOS->objectiv C, Android->Java, Windows-> .NET, Web->Php,Java, Scripting->Perl,Python,Ruby)
Alejamiento del baremetal- Cada libreria, cada capa de abstracción, aleja un poco más al programador del verdadero campo de batalla, que realmente se libra en la placa pcb con los chips que hay soldados en ella.
Cuando un Maker tenga que hacer algo fuera del entorno comodo de un PC, por ejemplo si quiere programar un robot o una máquina, le costará adaptarse y entender los conceptos necesarios, si lo único que sabe es un lenguaje de última hornada que hace de carcel y no le deja escapar a etapas de más bajo nivel.
Es por esto, que a la gente que empieza y que quieran llegar a ser Makers competentes, les recomiendo retroceder unos pasos y estudiar los lenguajes C y C++.
Esto no significa quedarse anclado en el pasado, más bien al contrario, estos lenguajes son tan potentes que tan solo se necesita trabajar librerías que incorporen todas las tecnologías modernas importantes.
Existe una librería, de calidad exquisita, con una larguísima historia, de codigo libre con licencia LGPL, y su nombre es Qt.
Esta librería es multidisciplinar (UI gráfico,red,sistema) y multiplataforma.
La potencia que implica la frase anterior no se puede subestimar, estamos hablando de que usando C++ y la librería Qt se puede realizar un único programa que funcionará en todos los sistemas actuales sin practicamente modificaciones.
Esto incluye telefonos Iphone, Android, WindowsPhone, sistemas de escritorio, como Windows, Linux y MacOS, y cualquier sistema embedded (Raspberry, ODroid,CubieBoard, BeagleBoard,etc..)
Además se ejecutará de forma nativa en el procesador, sin intérpretes intermedios, con lo que la velocidad y la gestion de los recursos es dificilmente superable.
Si te ha interesado el tema, aquí tienes todo lo necesario para continuar: http://www.qt.io
Category Archives: Uncategorized
Como tomar el control total de tu red
En este artículo explicaré como tomar el control de todo el tráfico que entra y sale de nuestras casas/empresas.
Hoy en día con la irrupción de embeddeds como la raspberry pi es muy útil usarlas para el control y gestión del tráfico, aparte de otras funciones como seguridad, domótica, etc..
Cuando la compañía telefónica nos instala un router, éste se encargará de controlar el firewall y gestionar todos los accesos a nuestra red. El problema es que el router equivale a una caja negra que desconocemos y el control del tráfico es demasiado importante como para darselo a algo que no podemos controlar y en el que no confiamos.
La técnica oficial para adquirir el control del tráfico, pero que solo se permite en algunos routers avanzados, es poner a éstos en modo bridge y instalar en el servidor el protocolo pppoe para que hable directamente con los gateways de la compañia telefónica. Esta opción aparte de no ser universal, es compleja ya que tendremos que instalar y configurar todo el software para el procesado del trafico ppp en el servidor.
La opción que os propongo es una alternativa no oficial, pero funciona en todos los routers que han pasado por mis manos durante muchos años, y es muy sencilla de realizar.
Se trata de robar la ip publica al router, y sustituirla por una ip publica falsa compatible. De esta manera contaremos con la ventaja de que todo el trabajo de realizar la comunicación pppoe la seguirá haciendo el router y nos irá pasando todas las tramas ethernet ya decodificadas,con lo que ahorramos ciclos de cpu y no tendremos que instalar ningun software en el servidor.
En este menu tambien deshabilitaremos la ip local y la ip remota y las dejaremos en blanco ya que el router solo tiene que pasar los paquetes sin procesarlos y como ip usará la del servidor.
En algunos routers no dejan poner una ip en blanco, y si funciona poner ip=0.0.0.0 o 1.1.1.1
El siguiente paso es ir al menu de LAN,
aquí meteremos 2 ip’s ya que internamente los routers establecen un bridge y en nuestro caso queremos añadir dos redes, la publica y la local.
Para ello pondremos una primera ip que es 213.97.57.34 que es para la red publica, y otra ip para la comunicación con la LAN que puede ser la 192.168.0.2.
El router ya lo tenemos listo
Eso es todo, a partir de ahora absolutamente todo el trafico que viene de la operadora pasará por vuestro gadget.
Hoy en día con la irrupción de embeddeds como la raspberry pi es muy útil usarlas para el control y gestión del tráfico, aparte de otras funciones como seguridad, domótica, etc..
Cuando la compañía telefónica nos instala un router, éste se encargará de controlar el firewall y gestionar todos los accesos a nuestra red. El problema es que el router equivale a una caja negra que desconocemos y el control del tráfico es demasiado importante como para darselo a algo que no podemos controlar y en el que no confiamos.
La técnica oficial para adquirir el control del tráfico, pero que solo se permite en algunos routers avanzados, es poner a éstos en modo bridge y instalar en el servidor el protocolo pppoe para que hable directamente con los gateways de la compañia telefónica. Esta opción aparte de no ser universal, es compleja ya que tendremos que instalar y configurar todo el software para el procesado del trafico ppp en el servidor.
La opción que os propongo es una alternativa no oficial, pero funciona en todos los routers que han pasado por mis manos durante muchos años, y es muy sencilla de realizar.
Se trata de robar la ip publica al router, y sustituirla por una ip publica falsa compatible. De esta manera contaremos con la ventaja de que todo el trabajo de realizar la comunicación pppoe la seguirá haciendo el router y nos irá pasando todas las tramas ethernet ya decodificadas,con lo que ahorramos ciclos de cpu y no tendremos que instalar ningun software en el servidor.
Ventajas
Tener una configuración como la que propongo tiene multiples ventajas:- Control total del trafico de entrada y salida a internet. Podremos ver todos los ataques y trafico no standard que venga por nuestra linea, y lo podremos filtrar de una manera global.
Por ejemplo podremos ejecutar en el servidor el script de procrastinación que publiqué hace un tiempo, y el programa afectará a todos los dispositivos de la red sin necesidad de ningún paso adicional. - Podremos implementar en el servidor políticas QoS en la red para dar prioridad a los dispositivos que elijamos.
- No hara falta tocar nunca más las tablas napt del router, todo el control se hará con el servidor.No importarán los filtros ni troyanos ni servicios que suelen venir instalados en el router. Por ejemplo se podrá poner un servidor web en el servidor sin importar que el router tenga su propia web, y la web del servidor será la visible en internet.
- El router será completamente inaccesible desde internet, ya que su ip ni siquiera existirá realmente en internet. Ningun hacker podrá acceder a él, ni siquiera la compañía telefonica, al menos con trafico ip.
Instrucciones (Ejemplo IP Pública: 213.97.57.33 Red local:192.168.0.0)
En el router:
En el menu WAN deshabilitaremos el NAPT ya que éste lo realizará el servidor.En este menu tambien deshabilitaremos la ip local y la ip remota y las dejaremos en blanco ya que el router solo tiene que pasar los paquetes sin procesarlos y como ip usará la del servidor.
En algunos routers no dejan poner una ip en blanco, y si funciona poner ip=0.0.0.0 o 1.1.1.1
El siguiente paso es ir al menu de LAN,
aquí meteremos 2 ip’s ya que internamente los routers establecen un bridge y en nuestro caso queremos añadir dos redes, la publica y la local.
Para ello pondremos una primera ip que es 213.97.57.34 que es para la red publica, y otra ip para la comunicación con la LAN que puede ser la 192.168.0.2.
El router ya lo tenemos listo
En el servidor:
Ponemos dos ip’s, la primera es la ip publica robada del router, en nuestro caso 213.97.57.33 con netmask 255.255.255.248 y gateway 213.97.57.34 (la falsa del router), y despues una segunda ip 192.168.0.1 netmask 255.255.255.0 que hará de gateway de toda la intranet.En todos los dispositivos de la intranet:
Ip automatica o fija y gateway=192.168.0.1 que será el servidor.Eso es todo, a partir de ahora absolutamente todo el trafico que viene de la operadora pasará por vuestro gadget.
Impresión 3D, panorama actual
Seguramente todo el mundo ha escuchado en alguna ocasion la revolución que supondrá la popularización de las impresoras 3D. Estos aparatos se han vuelto tan accesibles que cualquiera puede adquirir uno para su uso en casa o en el trabajo.
Es una herramienta increíble, pero poseer la impresora es solo el primer paso de un largo camino hasta poder imprimir las piezas que pensamos, y aprovechar así todo el potencial de la impresora..
Este post tiene como único propósito enseñar las opciones que existen hoy en día con las impresoras de fusión FDM, y mostrar por cuales nos hemos decantado en Cabania para enseñar a los alumnos.
Afortunadamente desde hace relativamente poco tiempo existen alternativas libres con un gran potencial y listas para usar, que nosotros recomendamos encarecidamente, y es el que enseñamos en Cabania a los alumnos.
FREECAD – Programa libre con gran potencial, es el que usamos en Cabania para uso propio y el que enseñamos a los alumnos. Es un programa paramétrico y diseñado para hacer piezas complejas, entrando en la liga de los programas profesionales de diseño 3D, por lo que si algún día un alumno quiere pasar a usar los programas profesionales lo tienen mucho más fácil.
OpenScad– Programa libre de uso avanzado, ya que los objetos se crean programando en vez de ser dibujados como los programas de diseño tradicionales.
Blender– Programa libre completamente profesional, para un uso más artístico que técnico. Se usa para hacer películas de animación 3D, y es muy utilizado para el modelado de piezas no técnicas.
Sketchup– Programa gratuito en la version basica. Se caracteriza por un fácil uso. Su objetivo es
SolidWorks,Catia,etc.. Programas paramétricos de coste muy elevado, que se usan en la industria para usos profesionales.
Ahora hace falta un programa que lea ese fichero, y internamente coja el objeto, lo haga rebanadas, y mande a la impresora la información de como hacer esas rabanadas una a una.
En el caso de la Prusa, dos de las opciones más populares son CURA y SLIC3R.
Ambos programas son libres.
CURA El más recomendado para iniciarse, de muy fácil manejo y buenas prestaciones en general. Un buen todoterreno.
SLIC3R Más complejo pero puedes tener mayor control de los procesos de la impresora.
Para el caso de la impresora Prusa, tenemos softwares como Marlin, Sprinter,Repetier,etc.
Para terminar un video de mi sobrino Pau usando el FreeCad y posteriormente el CURA para ajustar la impresión.
Es una herramienta increíble, pero poseer la impresora es solo el primer paso de un largo camino hasta poder imprimir las piezas que pensamos, y aprovechar así todo el potencial de la impresora..
Este post tiene como único propósito enseñar las opciones que existen hoy en día con las impresoras de fusión FDM, y mostrar por cuales nos hemos decantado en Cabania para enseñar a los alumnos.
DISEÑO 3D
Primero necesitarás un programa para diseñar tu objeto, la mayor parte de programas de diseño 3d son de uso profesional y tienen un coste prohibitivo para un uso amateur o simplemente con propositos educativos como tenemos en Cabania.Afortunadamente desde hace relativamente poco tiempo existen alternativas libres con un gran potencial y listas para usar, que nosotros recomendamos encarecidamente, y es el que enseñamos en Cabania a los alumnos.
FREECAD – Programa libre con gran potencial, es el que usamos en Cabania para uso propio y el que enseñamos a los alumnos. Es un programa paramétrico y diseñado para hacer piezas complejas, entrando en la liga de los programas profesionales de diseño 3D, por lo que si algún día un alumno quiere pasar a usar los programas profesionales lo tienen mucho más fácil.
OpenScad– Programa libre de uso avanzado, ya que los objetos se crean programando en vez de ser dibujados como los programas de diseño tradicionales.
Blender– Programa libre completamente profesional, para un uso más artístico que técnico. Se usa para hacer películas de animación 3D, y es muy utilizado para el modelado de piezas no técnicas.
Sketchup– Programa gratuito en la version basica. Se caracteriza por un fácil uso. Su objetivo es
SolidWorks,Catia,etc.. Programas paramétricos de coste muy elevado, que se usan en la industria para usos profesionales.
PROGRAMA DE IMPRESION
El programa de diseño 3d al final del proceso sacará un fichero en formato stl.Ahora hace falta un programa que lea ese fichero, y internamente coja el objeto, lo haga rebanadas, y mande a la impresora la información de como hacer esas rabanadas una a una.
En el caso de la Prusa, dos de las opciones más populares son CURA y SLIC3R.
Ambos programas son libres.
CURA El más recomendado para iniciarse, de muy fácil manejo y buenas prestaciones en general. Un buen todoterreno.
SLIC3R Más complejo pero puedes tener mayor control de los procesos de la impresora.
FIRMWARE DE LA IMPRESORA
Finalmente la impresora, no deja de ser un pequeño ordenador que maneja la mecánica, el extrusor y otros sensores electrónicos. Este ordenador necesita un software que se comunicará con el ordenador y ejecutará sus ordenes a través un lenguaje standard conocido como GCODE.Para el caso de la impresora Prusa, tenemos softwares como Marlin, Sprinter,Repetier,etc.
Para terminar un video de mi sobrino Pau usando el FreeCad y posteriormente el CURA para ajustar la impresión.
Un pequeño script para luchar contra la procrastinación
Si usais linux habitualmente, os dejo un tip que puede seros muy útil para evitar distracciones.
Se trata de un script que usa la funcionalidad de filtrado del firewall de linux.
Este es el script que uso yo, podeis modificar y añadir tantas webs como querais.
productividad.sh
Se ha de ejecutar como root por lo tanto: sudo productividad.sh
Otro día pondré otro pequeño script que sirve para fitrar centralmente todos los accesos de una red,por ejemplo tu casa, a webs o servicios, como facebook, snapchat, etc…
De esta manera puedes filtrar a ciertas horas estos servicios para que tus hijos no sean víctimas de la procrastinación y no hace falta requisarles el móvil o ordenador para que hagan sus tareas, y con la ventaja de no tener que instalar ningun programa en ningún dispositivo.
Se trata de un script que usa la funcionalidad de filtrado del firewall de linux.
Este es el script que uso yo, podeis modificar y añadir tantas webs como querais.
productividad.sh
webs="burbuja meneame hackaday elpais eleconomista slashdot chess"
for web in $webs
do
iptables -I OUTPUT -p udp --dport 53 -m string --string "$web" --algo bm -j DROP
iptables -I OUTPUT -p tcp --dport 53 -m string --string "$web" --algo bm -j DROP
done
Se ha de ejecutar como root por lo tanto: sudo productividad.sh
Otro día pondré otro pequeño script que sirve para fitrar centralmente todos los accesos de una red,por ejemplo tu casa, a webs o servicios, como facebook, snapchat, etc…
De esta manera puedes filtrar a ciertas horas estos servicios para que tus hijos no sean víctimas de la procrastinación y no hace falta requisarles el móvil o ordenador para que hagan sus tareas, y con la ventaja de no tener que instalar ningun programa en ningún dispositivo.
Hello World!
La aventura de Cabania empieza aquí.