Command Line

După cum știți prea bine, eu nu eram mare fan al liniei de comandă (command line for those who prefer the English term :D). Eram de părere că în secolul XXI trebuie să existe o interfață mai frumoasă, mai rapidă și mai precisă de a executa comenzi decât scrisul cu mânuța al unor comenzi de jumate de kilometru cu text alb pe fundal negru. Și într-adevăr, e mult mai comod pentru un om să lucreze cu o interfață grafică. Poți să lucrezi relaxat, cu picioarele pe masă, făcând doar click pe butoane. Awesome. Atâta timp cât nu faci ceva foarte repetitiv, e mult mai fain decât în linia de comandă. Doar că un GUI e mai greu de au­tom­a­ti­zat. Există scripturi pentru așa ceva, desigur, dar în momentul în care fereastra s-a mutat cu 10 px sau a pierdut focus - bye-bye clicks.

Recent a trebuit să lucrez multișor cu linia de comandă în Windows. Prima oară a fost când am început să folosesc PHPUnit pentru a-mi testa frame­workul. PHPUnit are doar interfață pentru linia de comandă, așa că am folosit comanda phpunit --verbose tableTest de vreo 100 de ori în 2 ore. Atunci am început să văd că nu îi chiar așa de rea linia de comandă. Îi un pic nașpa să citești 30 de linii de erori și var_dump acolo, cu formatare nasoală, dar faptul că apeși săgeată în sus și Enter și deja ai un set nou de date îi mai rapid decât să schimbi fereastra și să faci click undeva.

Apoi am folosit ieri Apache Bench, care se folosește la a testa câte requesturi poate face un server pe secundă și care este latența. Am folosit acest program tot din cmd.exe. Și atunci chiar am văzut ce mișto îi linia de comandă. ab -t 30 -c 10 localhost/framework și apoi aștepți 30 de secunde și vezi rezul­tatele cu o formatare destul de im­pre­sio­n­an­tă! Lux. Vrei să folosești aceleași opțiuni, doar că pentru un alt link? No problem. Săgeată în sus, ștergi linkul vechi și scrii pe cel nou și dai Enter. Ca să faci ceva similar într-un GUI, probabil ar trebui să dai din nou fiecare opțiune.

Ce să mai zic de input and output piping? Vrei să nu afișeze pe ecran, ci într-un fișier? Simplu: ab -t 30 -c 10 localhost/framework > framework.txt. Vrei să trimiți unui alt program? ab -t 30 -c 10 localhost/framework | findstr /c:"Complete requests" >> benchmark.txt. Acesta va filtra outputul de jumate de pagină generat de ab și va scoate doar linia care conține ”Complete requests” și o va adăuga la fișierul benchmark.txt.

Și asta e doar vârful ice­ber­gu­lui. Și e doar lameo Windows cmd.exe. PowerShell poate face și mai multe. Trebuie să mă pun să învăț shell ca lumea. :X

P.S: Cătă a reînviat fostul nostru blog comun, The Scrambled Bit. Doar el va scrie, eu voi rămâne aici. Ocazional voi mai scrie câte un guest post pe acolo, să mai echilibrez opinia lui pro-Linux only :)). Dar uitați-vă și peste blogul ăla, că îi mișto, și Cătă găsește și el multe chestii faine.

P.S 2: Peste 4 ore plec la Cracovia și Auschwitz. :D