Am crescut in era in care am vazut cum lampile (tuburi electronice) s-au transformat in tranzistori, cum acestia din urma au devenit porti logice si cum milioane de porti logice sunt ingramadite pe un fir de nisip, toate pentru a da sens sistemului de calcul binar. Am ajuns sa concepem protocoale de comunicare din ce in ce mai sofisticate, platforme, sisteme stabile si rapide, fara de care nu ne mai putem inchipui viata de zi cu zi. Am ajuns sa tratam un “computer” ca fiind doar niste fisiere binare si reteaua noastra de “bloc” sa dispara, transformandu-se doar in cateva linii de cod scris.
Platformele Cloud au fost lansate si sunt inbunatatite intr-un ritm exponential, oferind zilnic noi functionalitati. Zilnic apar companii cu potential urias si multe ajung la o cifra de afaceri impresionanta intr-o perioada relativ scurta. Flexibilitatea si estimarea costurilor au un rol important pe care conceptele de cloud le pot sustine foarte bine. Totusi, inca putini sunt aceia care adopta aceste bijuterii tehnologice si inca multi cred ca un administrator de sistem trebuie sa “surubareasca” la retea zile in sir.
Desi aparent solutiile cloud par scumpe, avantajul definitoriu este ca poti sa cumperi cat consumi, poti sa ceri cat ai nevoie, pretul fiind proportional cu nevoile la un momnet dat. Optimizarea acestor valori reduce semnificativ costurile, exploatarea resurselor fiind mult mai eficienta.
Cateva idei esentiale, acum ca va aflati la blocstart:
Furnizorii de Servicii Cloud, si nu numai, ofera si expun functionalitati printr-un “limbaj” prin care, de exemplu, poti solicita o resursa de tip compute, aloca un IP, publica o regula de securitare, crea o retea, si asa mai departe. Acest “limbaj” este de fapt o componenta API (application programming interface) cu ajutorul careia platforma e instruita si monitorizata sa puna la dispozitia utilizatorului o resursa. Aceste API-uri au facut posibila descrierea infrastructurii (cum ar fi o retea de calculatoare) in cateva linii de cod pe care trebuie doar sa le rulam. Mecanismele de control si procedurile sofisticate asigura executarea codului in topologia definita, iar rezultatul va fi mereu acelasi. Mai mult, se poate defini de la distanta o topologie similara in alt colt de lume, fara deplasarea la fata locului.
Pentru abstractizare si o implementare optima, au aparut cateva softuri ajutatoare care implementaza aceste API-uri, facilitand uniformizarea implementarii. Aici putem vorbi de Ansible, Puppet, Chef, Terraform, instrumente care sunt in continua dezvoltare, rafinare si specializare, cu o comunitate impresionanta care implementeaza eficient noi functionalitati. Toate aceste aspecte au dus la aparitia principiilor de DevOps.
Aparitia DevOps nu este neaparat ceva nou. A luat amploare in companiile de dezvoltare software, la cei care au inteles ca un produs finit are valoare doar daca se poate prezenta in mod viabil catre beneficiar. Furnizarea resurselor in mod programatic si automatizarea acestora duc la reducerea timpului dintre productie si prezentare, crescand ciclul in care elemente noi dezvoltate se pot prezenta beneficiarului. Cu ajutorul softurilor de orchestrare, incluzand suportul pentru infrastructure as code, furnizarea resurselor rapid este un element cheie. Publicarea modificarilor aduse se poate reduce la cateva minute, iar feedback-ul oferit de beneficiar poate fi explorat la maxim.
Totusi, putine companii reusesc sa adopte aceste concepte; se desprind cu dificultate din rutinele zilnice deja implementate, unii din comoditate sau teama de nou, altii “subjugati” de “dinozaurii decizionali”.
In ceea ce ma priveste, sunt adeptul acestor solutii moderne. Sunt convins ca automatizarea proceselor este esentiala pentru munca de zi cu zi!
Recuperare echipamente bazate pe RTL 8196C
Eroare Upload FIRMWARE
Dupa ce aparent am reusit sa-mi distrug camera web Edimax IC3015WN in urma unui update de firmware downloadat de pe pagina oficiala, m-am apucat de studiu. Am fost nevoit sa sap pe cont propriu intrucat suportul Edimax este la pamant.
Din fericire aceasta camera vine cu o suita de surse open source asa ca se poate compila un firmware nou. Nu intru in detalii prea multe dar o sa notez ca:
- Mediul de dezvoltare Centos
- Se citeste README si se instaleaza pachetele ! atentie insa ca nu mai stiu care pachet trebuie instalat cu -static … altfel crapa compilarea !!!
In urma buildului rezulta doua fisiere binare:
- IC3015WN_EDIMAX_1.XXXX_20141225_mp.bin
- IC3015WN_EDIMAX_1.XXXX_20141225_upg.bin
Insa nu va ajuta si aici nu sepcifica nimeni cum trebuie facut. In principiu va va duce gandul sa il incarcati prin JTAG sau serial insa nu este necesar.
In principiu echipamentele bazate pe procesorul RTL 8196C se pot “incarca” prin TFTP obligatoriu in mod binar ! dupa cum urmeaza
In loc de imaginile de firmware se vor incrca pe rand root.bin si linux.bin ce se gasesc in IC3015_firmware/image in doi pasi
root@demo:/home# tftp 192.168.1.6
tftp> verbose
Verbose mode on.
tftp> mode binary
mode set to octet
tftp> put root.bin
putting root.bin to 192.168.1.6:root.bin [octet]
Sent 2248722 bytes in 2.5 seconds [7195910 bits/sec]
tftp> quit
root@demo:/home# tftp 192.168.1.6
tftp> mode binary
tftp> verbose
Verbose mode on.
tftp> put linux.bin
putting linux.bin to 192.168.1.6:linux.bin [octet]
Sent 966674 bytes in 1.1 seconds [7030356 bits/sec]
tftp> exit
Echipamentul are un ip presetat 192.168.1.6 asa ca se va pune in retea cu un calculator cu TFTP, se va da ping la 192.168.1.6 si se va verifica tabela ARP. Jucria NU va raspunde la ping !!! dar accepta conexiune TFTP
Dupa ce terminati, echipamentul trebuie sa raspunde pe ip-ul default de fabrica sau cel setat de dvs.
Foarte multe echipamente de retea au acest chipset (RTL 8196C) asa ca daca il stricati, merita incercat !
Arduino & Bluetooth Linvor V1.5
Wireless Bluetooth RS232 TTL Transceiver Module
Recent m-am apucat sa ma joc cu placile Arduino bazate pe procesorul ATmega328. Am comandat o placa originala si o placa de la alt producator ca sa vad diferenta. Din punct de vedere “Lucratura” se vede diferenta, insa, si diferenta de pret este pe masura. Functional identic.
Placut impresionat de “jucarie”. Instalare simpla chiar si pe platforme Linux, documentatie buna, OpenSource si ce ma uimit cu adevarat este debug-erul.
Intre timp comandasem si o placa bluetooth cu cipset BC417, un OEM numit linvor cu firmware V1.5
Am zis ca o asemenea jucarie este utila pentru remote debuging sau alte aplicatii in care ai nevoie sa “scuipi” ceva valori mai la distanta. Zis si facut. Dupa 3 zile de studiu am reusit sa pun treba in miscare, asa ca o documentez aici pentru orice eventualitate.
- Alimentare la 3.3 V conform specificatiei ! A se respecta !
- Teoretic lucreaza cu TTL 3.3V si pe RX / TX insa acest modul tolereaza si TTL de 5V. Se pare ca sunt modele care se ard la TTL 5V
- Configurabil prin comenzi AT (doar daca nu este sincronizat cu un echipament bluetooth)
- Acest modul lucreaza doar in mod Slave. Cf. specificatiei se poate inlocui firmware-ul (a se cauta HC-05)
Modulul se poate utliza ca bridge transparent de conexiune seriala. In linux se va utiliza Blueman bluetooth management utility care stie sa ridice si un port serial peste bletooth. Am testat si alte utilitare, dar nu au functionat corespunzator.
Am scris un mic programel care ia pachetele de pe interfata seriala arduino (pin 0,1) si o muta pe pin 2,3 pentru a comunica cu placa BT.
Cu ajutorul acestui cod se poate testa conectivitatea dupa cum urmeaza:
screen (terminal) pe interfata /dev/ttyACM01 ce se ridica la conectarea placii arduino si
screen pe /dev/rfcomm0 – interfata seriala ridicata de conexiunea BT.
Practic cele doua terminale vor comunica prin placa arduino.
#include < NewSoftSerial.h >
NewSoftSerial mySerial(2, 3);
void setup()
{
Serial.begin(9600);
mySerial.begin(9600);
}
void loop()
{
if (mySerial.available()) {
Serial.print((char)mySerial.read());
}
if (Serial.available()) {
mySerial.print((char)Serial.read());
}
}