Image    Planeta

17 mai 2018 - 08:05

Ja sabeu que m'agrada l'art.

Per això vull ensenyar-vos dos exemples de Python ofuscat, és a dir, programes fets amb Python que oculten el que fan. A més a més, creen art.

El primer tros de codi és aquest:

_ = ( 255, lambda V ,B,c :c and Y(V*V+B,B, c -1)if(abs(V)<6)else ( 2+c-4*abs(V)**-0.4)/i ) ;v, x=1500,1000;C=range(v*x );import struct;P=struct.pack;M,\ j ='<QIIHHHH',open('M.bmp','wb').write for X in j('BM'+P(M,v*x*3+26,26,12,v,x,1,24))or C: i ,Y=_;j(P('BBB',*(lambda T:(T*80+T**9 *i-950*T **99,T*70-880*T**18+701* T **9 ,T*i**(1-T**45*2)))(sum( [ Y(0,(A%3/3.+X%v+(X/v+ A/3/3.-x/2)/1j)*2.5 /x -2.7,i)**2 for \ A in C [:9]]) /9) ) )

i què genera aquest codi si l'executeu? Això:

Fixeu-vos que el codi té la mateixa forma que la imatge resultant. És una figura en honor del matemàtic Mandelbrot. Més info. Mai creuríeu que amb Python es podria fer això no?

El segon tros de codi en python ofuscat generador d'art, és el següent:

_ =\ """if! 1:"e,V=100 0,(0j-1)**-.2; v,S=.5/ V.real, [(0,0,4 *e,4*e* V)];w=1 -v"def! E(T,A, B,C):P ,Q,R=B*w+ A*v,B*w+C *v,A*w+B*v;retur n[(1,Q,C,A),(1,P ,Q,B),(0,Q,P,A)]*T+[(0,C ,R,B),(1,R,C,A)]*(1-T)"f or!i!in!_[:11]:S =sum([E (*x)for !x!in!S],[])"imp ort!cair o!as!O; s=O.Ima geSurfac e(1,e,e) ;c=O.Con text(s); M,L,G=c. move_to ,c.line_to,c.s et_sour ce_rgb a"def!z(f,a) :f(-a. imag,a. real-e-e)"for!T,A,B,C!in[i !for!i! in!S!if!i[""";exec(reduce(lambda x,i:x.replace(chr (i),"\n "[34-i:]), range( 35),_+"""0]]:z(M,A );z(L,B);z (L,C); c.close_pa th()"G (.4,.3 ,1);c. paint( );G(.7 ,.7,1) ;c.fil l()"fo r!i!in !range (9):"! g=1-i/ 8;d=i/ 4*g;G(d,d,d, 1-g*.8 )"!def !y(f,a):z(f,a+(1+2j)*( 1j**(i /2.))*g)"!for!T,A,B,C!in!S:y(M,C);y(L,A);y(M ,A);y(L,B)"!c.st roke()"s.write_t o_png('pen rose.png') """ ))

És una estrella. I què genera aquest codi? Doncs una tessel·lació de Penrose perfecta:

Impressionant no? A vegades no saps si l'obra d'art és la imatge que s'obté en executar el codi, o el mateix codi ofuscat.

17 mai 2018 - 07:30

Ja sabeu que m'agrada el Bash, el vaig utilitzant ja fa molts anys per fer determinades tasques repetitives i també el faig servir en el meu dia a dia.

Per això m'ha sorprés aquest apunt on afirmen que no tornem a fer-lo servir, que utilitzem Python. Ja sabem que els titolars es fan aposta amb títols radical per cridar l'atenció dels lectors i en aquest cas ho han aconseguit.

El raonament que fa l'autor és el següent. El bash té els següents problemes:

  • Té una sintaxi arcana.
  • No té estructures de programació d'alt nivell.
  • Has de gestionar els errors manualment.
  • Té un munt de trampes.
  • No es pot organitzar quan el codi és llarg.
  • És lent.
  • No té tests.

I posa uns quants exemples, exemples amb els quals estic d'acord.

Tanmateix l'autor explica en què és bo el Bash:

  • Pots executar fàcilment altres programes.
  • Pots juntar diferents programes.
  • El globbing està molt bé.
  • Igual que la interpolació de cadenes.
  • Així com l'execució en segon pla.

I recomana fer servir plumbum en lloc del Bash. L'he provada aquesta llibreria i sembla interessant.

Pots executar les mateixes comandes del Bash però tens la gestió d'errades del Python, tens les canonades de Bash, execució en segon pla, execució en remot, etc. Us recomane que reviseu la documentació si voleu més informació.

De moment seguiré utilitzant Bash perquè puc fer coses ràpidament, però no descarte fer servir comandes bash en el meus programes fets amb Python ara que conec aquest programa.

I si no us agrada plumbum, podeu fer servir altres similars:

sh: https://amoffat.github.io/sh/

sarge: https://bitbucket.org/vinay.sajip/sarge/

shellypy: https://github.com/lamerman/shellpy

15 mai 2018 - 08:11

Interessant pàgina on pots descarregar-te antigues distribucions que ja no s'estan mantenint.

Les condicions perquè una distribució siga penjada a la web és que:

  • Tinga una llicència per poder distribuir-se.
  • Faça més d'un any que no s'està mantenint.
  • Que els desenvolupadors hagen donat per acabat el projecte.
  • O que encara que els desenvolupadors estiguen desenvolupant altres versions, la que es vol pujar ja no es mantinga.

Evidentment, no són sistemes operatius per posar en producció, però sí que són interessants per ensenyar en projectes educatius.

Afegisc l'enllaç a la secció que ja sabeu per no perdre-la de vista.

15 mai 2018 - 07:41

A l'Horta Nord, hi ha diverses ciutats importants que lluiten per ser importants a la comarca. Al nord de l'Horta la lluita està entre Puçol i El Puig. Pot ser és Puçol la guanyadora virtual. Al sud de l'Horta és entre Montcada i Meliana. Potser en aquest cas és Montcada la guanyadora nominal, però el cert que Meliana és la capital real. És on més moviment comercial hi ha.

Doncs Foios ha estat sempre la competència amb Meliana. Va tindre una gran fàbrica de jute, la Yutera, que va donar feina a milers de persones de tota l'Horta Nord, i va fer avançar la comarca durant tot el segle passat. No conec ningú a l'horta que no haja tingut algun familiar treballant a la Yutera.

Ara ja han passat els anys d'esplendor de Foios i és Meliana, com dic, qui està guanyant.

Però heu de vindre a Foios perquè el proper dia 26 de maig anem a fer una festa d'instal·lació d'Ubuntu a l'institut Escultor Frances Badia. Teniu tota la informació en aquesta pàgina. Farem xarrades, farem instal·lacions d'ubuntu a qui duga el seu ordinador, farem sortejos i sobretot, coneixereu a gent interessant.

Si voleu apuntar-vos, teniu el següent formulari d'inscripció, important per reservar les places del dinar.

I si sou de València, no teniu cap excusa. Vos esperem.

 

13 mai 2018 - 13:42

El que té ser informàtic, i a més a més, expert en linux, és que et venen els amics per a què els instal·les Ubuntu als seus ordinadors nous.

Contràriament al que puga parèixer, a mi això m'encanta, perquè prove màquines noves i em trobe amb problemes d'instal·lació nous.

Això és el que ha passat amb un Lenovo Yoga 310 que s'ha comprat un amic meu i al que he substituït el seu windows 10 per Ubuntu 18.04.

Els problemes principals que he tingut, han estat dos. El primer trobar com entrar en la BIOS del maleït ordinador per canviar l'arrencada del portàtil. Doncs resulta que, en aquest model, es fa prement amb la punta d'un clic un xicotet botonet que hi ha dins d'aquest forat:

El segon problema és que he hagut de desactivar no solament l'arrencada segura, sinó que el mode d'arrencada del disc SDD l'he hagut de posar en mode Legacy suport, si no, el disc no es detecta correctament i la instal·lació del grub2 falla.

M'ha costat més solucionar estos problems que la pròpia instal·lació. Deu minuts ha tardat en completar-se. Però bé, el portàtil ja té un sistema operatiu lliure que executa programes lliures i dirigeix el seu maquinari.

Següent...

12 mai 2018 - 22:17
Material per al receptor

Placa Arduino
XBee Shield
Mòdul XBee Bluetooth
Material per a l'emissor
Mòbil Android
Aplicació que envii codis ASCII per Bluetooth (1)

Observacions
En lloc del mòdul XBee serveix un mòdul bluetooth HC-05, HC-06 o HC-07 estàndard. Només l'hem de connectar com s'indica al codi.

Muntatge
Receptor
Munteu les tres plaques.
Col•loqueu l'interruptor del shield en posició USB per poder programar, o be treieu el shield abans de programar i torneu-lo a col·locar desprès.
Carregueu aquest codi:

Codi per Arduino
// Control per BT d'una sortida
// https://maker.pro/arduino/tutorial/bluetooth-basics-how-to-control-led-using-smartphone-arduino
// Connexio
// RX (Pin 0) —> TX
// TX (Pin 1) —> RX
// 5V —> VCC
// GND —> GND

char dades = '0'; // Variable per desar les dades rebudes
char ON = '1'; // Ordre per encendre el LED
char OFF = '0'; // Ordre per apagar el LED
int LED = 13; // Pin Arduino amb el LED que es controla

void setup() {
   Serial.begin(9600); //Sets the data rate in bits per second (baud) for serial data transmission
   pinMode(LED, OUTPUT); //Sets digital pin 13 as output pin
}

void loop() {
   if(Serial.available() > 0) // Send data only when you receive data:
{
   dades = Serial.read(); //Read the incoming data and store it into variable data
   Serial.print(dades); //Print Value inside data in Serial monitor
   Serial.print("\n"); //New line
   if(dades == ON) //Checks whether value of data is equal to ON
      digitalWrite(LED, HIGH); //If value is ON then LED turns ON
   else if(dades == OFF) //Checks whether value of data is equal to OFF
      digitalWrite(LED, LOW); //If value is OFF then LED turns OFF
   }
}
Font del codi Arduino: https://maker.pro/arduino/tutorial/bluetooth-basics-how-to-control-led-using-smartphone-arduino


Col·loqueu l'interruptor en posició XBhttps://commons.wikimedia.org/wiki/File:Arduino_uno_r3.jpgee per poder comunicar, o bé torneu a connectar el shield.

Emissor
(1) Podeu fer la vostra aplicació o
Carregar aquesta aplicació al mòbil
https://github.com/Mayoogh/Arduino-Bluetooth-Basic/blob/master/LED%20Controller.apk o bé aquesta:
https://play.google.com/store/apps/details?id=appinventor.ai_tellerimicin.Arduinondroid3led

Aparellament
Aparelleu el mòbil amb l'XBee, la contrasenya sol ser 0000 o 1234.

Operació
Utilitzeu l'aplicació per encendre a distància el led 13 de l'Arduino amb les tecles 1 i 0. Podeu canviar les línies 32 i 33 del codi per adaptarles a la vostre aplicació.

Aplicacions
Podeu utilitzar aquest muntatge per controlar llums, robots o altres dispositius. Podeu fer la vostre aplicació a mida o aprofitar alguna més adient al vostre projecte, com ara aquesta per controlar un robot:
https://play.google.com/store/apps/details?id=appinventor.ai_poddarrupak2808.Rupak_BT_Car

Crèdits de la imatge: https://commons.wikimedia.org/wiki/File:Arduino_uno_r3.jpg
12 mai 2018 - 08:56

Ja sabreu que el proper més de Juny, als Estats Units es votarà una llei per derogar la neutralitat de la xarxa. Hi ha diversos enllaços amb informació, si necessiteu, en l'apartat Campanyes

Bàsicament, el que volen fer els americans és passar el control de la velocitat d'Internet a les empreses. Seran elles, depenent del que paguen els clients, qui decidirán quins continguts es serveixen més ràpid i quins no. Serà com tindre 2 velocitats.

Això va en contra dels principis pels quals es va crear Internet: igualtat de possibilitats per a tots. Tant se val si estàs a Silicon Valley o si estàs en un país dels que diuen desenvolupats, si tens talent pots accedir a Internet i aprofitar la informació per millorar tu i el teu entorn, que el coneixement servisca per millorar tot el món.

Mozilla, una de les moltes empreses que lluita per la neutralitat en la xarxa, perquè entén que això és millor per a tots, va fer una enquesta a un munt d'americans en més de 50 estats preguntant sobre la neutralitat a la xarxa, amb resultats aclaparadors a favor de la neutratitat. Per exemple:

  • Fora de l'estat de Washington, prop del 80% d'enquestats pensen que no és un tema de partits la neutralitat en la xarxa.
  • Més del 91% dels consumidors americans pensen que haurien de poder accedir lliure i ràpidament a Internet.
  • Quasi el 80% dels americans pensen que l'accés a Internet en igualtat de condicions és el correcte.
  • Més del 75% dels enquestats pensen que els proveïdors d'Internet deurien de tractar a tots els consumidors per igual.
  • Més del 60% pensen que els proveïdors d'Internet no tindran cura de les necessitats del consumidors voluntàriament sinó que miraran els seus propis interessos.

Si això és així, aleshores perquè volen canviar això?

És la típica decisió política que mira més per interessos empresarials que pel que necessita realment la gent, pels interessos de tots.

Ja vos contaré com queda tot.

12 mai 2018 - 08:36

Ja vos vaig parlar en un altre apunt sobre el mapa de la web fosca.

En aquesta entrada vos ensenye un interessant mapa on es veu el trànsit que hi ha de paquets per la xarxa Tor.

Tor, ja ho sabreu, és una xarxa anònima que intenta mantenir l'anonimat davant de les empreses i governs que intenten constantment controlar el que es mou per Internet.

En aquest mapa, en TorFlow, voreu des d'on i cap on van els paquets, quines zones del planeta produeixen més paquets, podeu no solament vore el trànsit de paquets que hi ha actualment, sinó el que ha hagut en dates anteriors i comprovar que cada vegada es mouen més paquets, etc. Molt interessant.

L'apunte a l'apartat d'enllaços.

8 mai 2018 - 07:11

Interessant pàgina web on t'informen d'on pots sol·licitar la informació de les dades que tenen més d'un centenar de companyies per fer servir les seues aplicacions. A més a més, et facilita en alguns casos, plantilles de correu electrònic o carta, per enviar a les companyies per reclamar les teues dades.

És una de les conseqüències del nou reglament gdpr que entra en funcionament en Europa properament.

L'afegisc a l'apartat d'enllaços.

8 mai 2018 - 06:57

Si instal·leu un sistema lliure en el vostre ordinador, potser ja no tindreu instal·lada la comanda ifconfig. Aquesta aplicació ha estat l'encarregada de mostrar-nos les dades de la nostra xarxa des de sempre. Per exemple, en el meu ordinador tinc això:

$ ifconfig docker0: flags=4099<UP,BROADCAST,MULTICAST> mtu 1500 inet 172.17.0.1 netmask 255.255.0.0 broadcast 172.17.255.255 ether 02:42:9f:19:19:bf txqueuelen 0 (Ethernet) RX packets 0 bytes 0 (0.0 B) RX errors 0 dropped 0 overruns 0 frame 0 TX packets 0 bytes 0 (0.0 B) TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0 eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500 inet 192.168.0.14 netmask 255.255.255.0 broadcast 192.168.0.255 inet6 fe80::82fa:5bff:fe03:11bf prefixlen 64 scopeid 0x20<link> ether 80:fa:5b:03:11:bf txqueuelen 1000 (Ethernet) RX packets 101221 bytes 123306019 (123.3 MB) RX errors 0 dropped 0 overruns 0 frame 0 TX packets 42755 bytes 5431746 (5.4 MB) TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0 device interrupt 30 base 0xd000 lo: flags=73<UP,LOOPBACK,RUNNING> mtu 65536 inet 127.0.0.1 netmask 255.0.0.0 inet6 ::1 prefixlen 128 scopeid 0x10<host> loop txqueuelen 1000 (Local Loopback) RX packets 4726 bytes 1581659 (1.5 MB) RX errors 0 dropped 0 overruns 0 frame 0 TX packets 4726 bytes 1581659 (1.5 MB) TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0 wlan0: flags=4099<UP,BROADCAST,MULTICAST> mtu 1500 ether a0:a8:cd:3b:64:f1 txqueuelen 1000 (Ethernet) RX packets 0 bytes 0 (0.0 B) RX errors 0 dropped 0 overruns 0 frame 0 TX packets 0 bytes 0 (0.0 B) TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0

Com que té un escàs suport per les xarxes ipv6, la comanda ifconfig està obsoleta des del 2009. Ara en lloc d'aquesta, hem d'usar la comanda ip. Mireu la diferència en la sortida:

$ ip -c a 1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000 link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00 inet 127.0.0.1/8 scope host lo valid_lft forever preferred_lft forever inet6 ::1/128 scope host valid_lft forever preferred_lft forever 2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000 link/ether 80:fa:5b:03:11:bf brd ff:ff:ff:ff:ff:ff inet 192.168.0.14/24 brd 192.168.0.255 scope global eth0 valid_lft forever preferred_lft forever inet6 fe80::82fa:5bff:fe03:11bf/64 scope link valid_lft forever preferred_lft forever 3: wlan0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc mq state DOWN group default qlen 1000 link/ether a0:a8:cd:3b:64:f1 brd ff:ff:ff:ff:ff:ff 4: docker0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc noqueue state DOWN group default link/ether 02:42:9f:19:19:bf brd ff:ff:ff:ff:ff:ff inet 172.17.0.1/16 brd 172.17.255.255 scope global docker0 valid_lft forever preferred_lft forever

Així que comencem a acostumar-nos i a revisar el manual:

$ man ip

Pàgines