Cum să-ți construiești propriul mediu de dezvoltare fără șoarece
Publicat: 2022-03-10A fost odată ca niciodată, în tărâmul magic al dezvoltării software, un tânăr dezvoltator, umilul tău servitor, a descoperit Linux pentru prima dată. Dintr-o dată, am avut acces la shell-ul Linux, un instrument care oferă multe modalități de a automatiza tot ceea ce nu voiam să fac din nou și din nou.
Dar Ubuntu nu a fost lipsit de dezavantaje. Am fost adesea victima erorilor de afișare și a blocărilor și totul era din ce în ce mai lent pe măsură ce trecea timpul.
Într-o zi, s-a întâmplat ceva groaznic: a trebuit să actualizez Ubuntu la următoarea sa versiune majoră. Totul s-a prăbușit. Nu mi-am mai putut porni sistemul. Nu aveam idee cum aș putea rezolva problemele cu care mă confruntam, deoarece nu aveam idee cum funcționează Linux sub capotă. Ubuntu a făcut abstracție de toate problemele pentru ca să nu-mi pese de asta.
A trebuit să reinstalez totul manual - Ubuntu și toate instrumentele mele. Partea cea mai proastă a fost reconfigurarea totul. Toate și toate, mi-a luat zile să mă întorc la sistemul pe care îl aveam înainte de accident. Dar nu știam altă alternativă, așa că am continuat să folosesc Ubuntu ani de zile. În acest timp, nu am reușit niciodată să-l actualizez la următoarea sa versiune majoră fără a fi nevoie să reinstalez totul manual, iar și iar.
Viața mea de dezvoltator s-a schimbat din nou când compania mea a angajat doi dezvoltatori grozavi. Știau multe despre Linux și despre diferitele distribuții pe care le puteam folosi. M-au ghidat, mi-au arătat instrumentele care au rezolvat toate problemele pe care le-am avut cu Ubuntu. Aceste instrumente mi-au îmbunătățit drastic fluxul de lucru; mi-au arătat cât de practic era pentru un dezvoltator să țină mâinile pe tastatură cât mai mult posibil.
Acest lucru s-a întâmplat acum șase ani. Folosesc și astăzi același mediu de dezvoltare. Folosesc tastatura în 92,8% din timp pentru a-mi gestiona toate instrumentele, folosind taste care au sens și care sunt ușor de reținut. Îmi pot reinstala întregul sistem cu o grămadă de scripturi pe care le-am scris, inclusiv toate instrumentele pe care le folosesc și configurațiile acestora.
Astăzi, aș dori să vă împărtășesc aceste instrumente, astfel încât și dvs. să vă puteți crește eficiența și confortul în munca de zi cu zi. Ele funcționează bine împreună — modelând ceea ce eu numesc mediul meu de dezvoltare fără șoareci . Mai precis, vom discuta:
- De ce utilizarea shell-ului Linux poate fi foarte puternică atunci când lucrați cu text simplu (inclusiv cod);
- De ce să folosiți temutul Arch Linux;
- Avantajul unui manager de ferestre cu gresie;
- Cum să aveți o experiență grozavă de terminal cu URxvt, tmux și tmuxp;
- De ce Vim poate deveni cel mai bun prieten al tău.
Notă : instrumentele pe care le susțin în acest articol funcționează pe sisteme bazate pe Linux. Le puteți folosi și cu macOS, cu excepția i3. Pentru Windows, cel mai simplu mod este să utilizați Windows Linux Subsystem (WSL) pentru a le instala și utiliza.
Nu aș fi descoperit niciodată acest nou mod de lucru fără a încerca aceste instrumente. De aceea te încurajez să le instalezi, să experimentezi cu ele și să vezi singur dacă te îndrăgostești ca mine.
Fără șoareci cu carapace
În calitate de dezvoltator, este aproape imposibil să evitați utilizarea unui shell. Acesta este un instrument puternic care vă poate simplifica fluxul de lucru prin automatizarea tuturor sarcinilor plictisitoare.
Beneficiile Shell
Înainte de a vorbi despre beneficiile utilizării shell-ului și terminalului, să explicăm pe scurt care este diferența dintre aceste două idei.
Terminalul este o interfață grafică care vă permite să interacționați cu shell-ul. Pe Linux, acest shell este adesea Bash, dar poate fi și altul, eh Zsh. Cochilia este un interpret. Îl poți alimenta cu comenzi și le va executa pentru a efectua unele acțiuni. De asemenea, uneori, vă va oferi o ieșire înapoi. Termenii „linie de comandă” și „shell” sunt sinonimi.
Dacă am compara mediul de dezvoltare fără șoareci cu sistemul solar, învelișul ar fi soarele și orice altceva s-ar întoarce în jurul lui. Se datorează faptului că shell-ul este cu adevărat puternic: vă permite să rulați multe programe mici care funcționează foarte bine împreună. Ele se numesc CLI (Command-Line Interfaces).
Marele avantaj al acestor instrumente: sunt foarte simple și limitate izolat, dar le puteți lega pentru rezultate puternice . De exemplu, puteți utiliza în totalitate CLI-urile „istory”, „sort”, „uniq” și „head” pentru a afișa CLI-urile pe care le utilizați cel mai mult și frecvența utilizării lor.
Există multe CLI disponibile acolo. În primul rând, pentru că shell-ul Linux există de mult timp; dezvoltatorii au avut timp să dezvolte multe instrumente și să le facă fiabile. În al doilea rând, pentru că este mai ușor să dezvoltați CLI-uri decât GUI (Graphical User Interfaces). Proiectarea și implementarea acestor interfețe grafice necesită mult mai multă muncă. CLI-uri au doar interfețe textuale , care sunt mai ușor de dezvoltat, de schimbat și de întreținut.
Acesta este, de asemenea, motivul pentru care CLI-urile sunt rapide: nu este nevoie să încurci cu afișajul și cu alte elemente grafice. A fost una dintre principalele mele probleme cu Ubuntu: mediul său desktop, Unity, era destul de greu, lent și cu erori. Cel puțin din experiența mea. Utilizarea mai multor interfețe grafice în partea de sus a înrăutățit lucrurile.
Un alt mare avantaj al liniei de comandă : puteți scrie scripturi shell pentru a automatiza toate sarcinile plictisitoare pe care le repetați zi de zi. De exemplu, dacă trebuie să redimensionați foarte des imaginile la aceeași dimensiune, puteți scrie un script pentru asta. Dacă căutați adesea într-un anumit tip de fișiere, puteți automatiza și asta. Cerul este limita.
CLI-urile au și dezavantaje. Este puțin mai descurajant de utilizat pentru începători, dar există modalități de a obține rapid ceea ce aveți nevoie, chiar dacă nu știți cum să utilizați un anumit CLI.
În cele din urmă, dacă aveți anumite sarcini de făcut pe servere la distanță, veți ajunge adesea să utilizați shell-ul. Nu au nicio interfață grafică de cele mai multe ori, așa că nu veți avea de ales. În aceste cazuri, este necesar să vă cunoașteți drumul în jurul liniei de comandă.
O abordare fără șoareci
Deoarece shell-ul are o interfață textuală, mâinile tale rămân pe tastatură atunci când o folosești. Este ceva ce nu m-am gândit niciodată în primii mei ani ca dezvoltator, dar este un mare avantaj.
Din experiența mea, evitarea sutelor de mișcări ale mâinii dintre tastatură și mouse economisește multă energie cognitivă. Am fost șocat să descopăr cât de confortabil a fost când am încercat cu adevărat să mă țin de tastatură. Ca bonus, mă simt ca un hacker care folosește numai tastatura cu shell-ul meu, chiar dacă îmi scriu doar lista de cumpărături! Cât de grozav este?
Trebuie să recunosc, am fost foarte sceptic cu privire la această idee „fără șoareci” înainte de a o încerca. Cu instrumentele pe care le descriu mai jos, nu a trebuit să-mi schimb toate obiceiurile de la o zi la alta: poți folosi și mouse-ul cu ele. Dar chiar strălucesc atunci când sunt gestionați cu tastatura.
Chiar dacă nu s-a dovedit niciodată cu adevărat, mai cred că rămânerea pe tastatură ne face mai eficienți . După cum a subliniat cartea The Pragmatic Programmer :
„Folosirea numai a tastelor pentru operațiuni obișnuite de editare este mai eficientă decât comenzile comandate de mouse sau de meniu, deoarece mâinile nu părăsesc niciodată tastatura.”
Acestea fiind spuse, eficiența nu este scopul principal aici. Îmi place să rămân pe tastatură și să folosesc toate aceste instrumente pentru că mă pot concentra în întregime pe sarcinile pe care le am. Mă motivează să încep să lucrez și să-mi îndeplinesc sarcinile.
The Bedrock: Arch Linux
La începutul călătoriei mele fără șoarece, unul dintre noii mei prieteni m-a sfătuit să folosesc Arch Linux în loc de Ubuntu. Din nou, scepticismul se târâia, îndoielile îmi invadau bietul creier. Arch Linux? Această distribuție Linux oribilă pe care trebuie să o instalați și să o configurați în întregime manual? Acest sistem instabil a devenit o glumă pentru mulți?
Uneori, stereotipurile nu au nimic de-a face cu realitatea, iar Arch Linux este exemplul perfect pentru această idee. Am folosit Windows (de la 98 la 7), macOS și am încercat și alte distribuții Linux. Concluzia mea, fără îndoială: Arch Linux este cel mai stabil dintre toate.
Acestea fiind spuse, Arch Linux nu este o cerință pentru un mediu de dezvoltare fără mouse. Puteți folosi toate celelalte instrumente descrise în acest articol și cu alte distribuții Linux. Le puteți folosi și cu macOS (cu excepția i3) sau Windows dacă aveți subsistemul Windows pentru Linux (WSL). Dar, înainte de a face acest lucru, permiteți-mi să vă spun de ce ar trebui să vă gândiți serios la Arch Linux .
Un sistem de eliberare prin rulare
Arch Linux are un sistem de lansare rulantă . Înseamnă că trebuie să vă actualizați întregul sistem des, săptămânal sau bisăptămânal. Pentru a reveni la Ubuntu, are un sistem de asistență pe termen lung : trebuie să-l actualizezi doar de câteva ori pe an, sau chiar mai puțin dacă vrei.
Mulți dezvoltatori cred că un sistem de lansare continuă face mediul dumneavoastră de dezvoltare instabil, ceea ce explică parțial reputația Arch Linux. Dar nu am avut niciodată o problemă în șase ani de utilizare zilnică și nici prietenii mei l-au folosit. Pe de altă parte, avantajele unui sistem de rulare sunt mari:
- Toate aplicațiile pe care le folosesc sunt permanent actualizate. Nu este nevoie să le compilați manual pentru a avea cea mai recentă versiune atunci când este necesar.
- Actualizarea sistemului înseamnă adesea că vor fi introduse mai puține modificări simultan. Ca rezultat, există și mai puține șanse pentru accidente.
V-am spus experiența mea cu Ubuntu și blocările pe care le-am avut când l-am actualizat. Nu am avut niciodată probleme cu Arch Linux.
Tot ce ai nevoie
În plus, depozitele Arch Linux sunt uriașe. Este foarte probabil să găsiți acolo fiecare instrument de care aveți nevoie. Dacă nu, vă puteți uita la AUR (Arch User Repositories), unde există toate celelalte. AUR nu este un depozit oficial, așa că ar putea exista unele probleme de securitate cu aplicațiile găsite acolo. Din nou, nu am avut niciodată probleme cu ei, dar este posibil. Atâta timp cât te ții de depozitele oficiale și nu instalezi totul și nimic din AUR, nu vei avea nicio problemă.
O oportunitate de învățare
Să mai menționăm că Arch Linux este o distribuție foarte minimă. Nu impune multe aplicații inutile atunci când îl instalezi. Apropo de asta, trebuie să instalați manual întreaga distribuție folosind shell-ul. Sarcina poate fi descurajantă, dar, pe de altă parte, veți învăța multe din experiență.
După cum am menționat la începutul acestui articol, cunoașterea minimă a modului în care sistemele bazate pe Linux funcționează sub capotă vă poate ajuta atunci când sistemul dumneavoastră se comportă ciudat sau când se blochează. Nu este atât de complex pe cât ar părea și, dacă ești dezvoltator, aș susține că este obligatoriu. Web-ul, telefonul sau Raspberry Pie rulează pe Linux în zilele noastre.
Nu în ultimul rând, Arch Wiki este cel mai bun loc pe care îl puteți găsi pentru orice este legat de Linux. M-a ajutat foarte mult de-a lungul anilor, chiar și când foloseam Ubuntu. Este un loc grozav pentru a vă depana sistemul și pentru a găsi instrumente noi.
Gestionarea Windows-ului cu i3
Acum că am analizat de ce Arch Linux poate fi o bază solidă pentru mediul dumneavoastră de dezvoltare fără mouse, să vedem ce putem adăuga mai sus.
Dar mai întâi, un pic de teorie. Sistemele de operare au adesea trei straturi, mai mult sau mai puțin cuplate între ele:
- Nucleul , care se amestecă direct cu hardware-ul computerului dvs.;
- Shell , o interfață pentru dvs. sau pentru unele aplicații, pentru a interacționa cu nucleul;
- Un strat de afișare în partea de sus, cum ar fi un manager de desktop sau un manager de ferestre cu placare.
Gnome sau Unity sunt ambele manageri de desktop pentru sisteme bazate pe Linux. Îți gestionează ferestrele și multe alte lucruri, cum ar fi bara de stare sau lansatorul de aplicații. Managerii de ferestre de tiling sunt o alternativă la managerii de desktop și sunt adesea mai mici și mai concentrați pe manipularea ferestrelor.
Managerul de ferestre i3 este într-adevăr foarte ușor: îl folosesc chiar acum pe un computer vechi de zece ani (Lenovo x220) și nu încetinește. De asemenea, este simplu de utilizat, documentația este grozavă și, cel mai important, vă puteți gestiona ferestrele doar cu tastatura (dacă doriți).
Elementele de bază ale i3 sunt simple: puteți deschide ferestre în diferite spații de lucru reprezentând un întreg ecran . Este foarte asemănător cu desktop-urile virtuale pe care le au mulți manageri de desktop Linux. Apoi, când deschideți aplicațiile preferate, ecranul va fi partajat automat în funcție de numărul de ferestre de pe ecran.
De exemplu, dacă deschideți Firefox, fereastra acestuia va ocupa 100% din ecran. Dacă deschideți trei instanțe de Firefox, fiecare dintre ele va ocupa 33% din ecran.
De asemenea, puteți modifica aspectul ferestrelor. În loc să aveți toate ferestrele vizibile pe ecran, le puteți stivui una peste alta și le puteți trece printr-o simplă apăsare a tastei. Dacă aveți nevoie de niște ferestre plutitoare „normale”, le puteți configura și pe acestea.
Scopul i3 este de a simplifica gestionarea tuturor ferestrelor dvs. În loc să folosiți mouse-ul pentru a le muta și a le redimensiona de fiecare dată când deschideți altele noi, puteți folosi apăsările de taste pentru a efectua aceeași operațiune numai atunci când aveți nevoie .
Pare prea complicat? Am fost eficient cu i3 la doua zile dupa ce l-am incercat. Nu sunt un geniu; dacă aș putea să o fac, o poți face și tu.
Cireasa de pe tort: la fel ca fiecare instrument descris in acest articol, puteti personaliza i3 si apasarea tastei sale ca fiind continutul inimii dumneavoastra.
Singurul dezavantaj al i3: nu este disponibil pentru macOS. Dar există alternative grozave, cum ar fi managerul de ferestre de faianta Amethyst sau Divvy.
Creșteți nivelul terminalului cu URxvt, tmux și tmuxp
Terminalul este interfața care vă oferă acces la shell. Chiar dacă shell-ul este adevărata afacere, îl putem face mai ușor de utilizat cu câteva instrumente.
Calea simplității cu URxvt
Îmi place simplitatea și, parțial, de aceea îmi place mediul de dezvoltare pe care îl descriu în acest articol. Apropo de asta, URxvt este unul dintre cele mai simple terminale pe care le poți găsi. De asemenea, este rapid și de încredere. În șase ani, nu l-am văzut niciodată prăbușindu-se sau măcar încetinind. Face ceea ce ar trebui să facă: permițându-vă să utilizați shell-ul. Nici mai mult nici mai puțin.
Multiplexorul terminal cu tmux
Chiar dacă îmi place simplitatea URxvt, îmi place și să am un multiplexor de terminale bun pe care să mă pot baza, cum ar fi tmux.
Ce este un multiplexor terminal? Vă permite să deschideți sesiuni care conțin mai multe shell-uri . Aceste sesiuni sunt menținute în fundal: chiar dacă terminalul tău se blochează sau dacă îl închizi accidental, shell-urile tale nu vor dispărea. Le puteți recupera în alt terminal oricând doriți (de parcă nimic nu s-ar fi întâmplat).
Acest lucru este util pe computerul local, dar este și mai bine pe un server la distanță. Puteți, de exemplu, să vă conectați la un server prin SSH, să rulați un script, să vă închideți conexiunea SSH și terminalul de pe mașina dvs. locală și să mergeți acasă. Deoarece shell-ul tău încă rulează pe serverul tău datorită tmux, scriptul tău va rula în continuare.
Asta nu este tot: tmux este un pic de treabă, într-un sens bun. Îl puteți folosi pentru a deschide mai multe ferestre care conțin mai multe panouri într-un singur terminal. Vă puteți gândi la o fereastră ca la întregul terminal și la un panou ca la un shell care ocupă un procent din fereastră.
Îți amintește de i3? Urmează aceleași principii, dar poate crea doar noi shell-uri. De aceea mulți utilizatori care sunt mulțumiți de i3 nu văd niciun rost să folosească tmux. Personal, îmi place să le folosesc pe ambele.
Ca întotdeauna, puteți manipula ferestrele și panourile tmux cu tastatura și puteți configura tmux în sine urmând cele mai nebune dorințe ale voastre.
tmuxp
Să ne imaginăm că doriți să utilizați tmux pentru aplicația perturbatoare pe care o dezvoltați chiar acum. Mai întâi trebuie să deschideți un terminal. Apoi, trebuie să creați câte ferestre tmux aveți nevoie și să împărțiți aceste ferestre cu panourile dorite.
Amintiți-vă : Un panou reprezintă o coajă. În fiecare dintre aceste shell-uri, puteți rula apoi toate CLI-urile de care aveți nevoie pentru un anumit proiect: de exemplu, rularea unui container docker sau afișarea unor jurnale.
Dar, de asemenea, puteți automatiza toate acestea și este locul în care puterea reală a tmux - în contextul unui mediu de dezvoltare - strălucește cu adevărat. Folosind un alt CLI numit tmuxp, puteți nota într-un fișier de configurare YAML ce ferestre, panouri și orice comandă doriți. Apoi, puteți încărca această configurație și puteți crea automat sesiunea dvs. tmux personalizată.
Am unul dintre aceste fișiere de configurare pentru fiecare dintre proiectele mele. Îmi economisește mult timp și energie. După cum spuneam mai sus, acesta este unul dintre avantajele majore ale utilizării shell-ului.
Editor Plus Shell este egal cu IDE
Deoarece shell-ul este atât de puternic, de ce să nu aveți un editor care rulează direct în el? De ce să nu folosești Vim?
La fel ca Arch Linux, Vim are reputația de a fi greu de învățat. Este mai subtil: este destul de ușor să fii productiv cu el, dar este nevoie de mult timp pentru a stăpâni. Dacă rulați Linux și aveți Vim instalat, puteți învăța elementele de bază în 20 de minute , rulând vimtutor
în shell.
Vim oferă multe funcționalități care pot fi extinse și mai mult cu nenumărate plugin-uri. În plus, puteți interacționa direct cu shell-ul dvs. folosind Vim, folosind orice CLI doriți direct în editor. Acesta va transforma Vim într-un IDE complet.
Vim are un alt mare avantaj: îl poți folosi pentru a dezvolta în multe limbaje de programare. Nu-mi place să comut între diferite IDE-uri de fiecare dată când trebuie să programez în PHP, Golang sau Clojure. Interfața este diferită, trebuie să configurez fiecare dintre aceste editoare separat și nu prea pot salva configurațiile undeva pentru a le folosi din nou când reinstalez aceste instrumente.
Cu Vim, pot codifica în orice limbă pe care o doresc, rămânând în același editor . La fel ca VS Code, puteți folosi LSP-uri (furnizori de servere de limbă) pentru a activa completarea automată, liningul și refactorizarea automată pentru cele mai comune limbaje de programare (și chiar mai ezoterice).
Vim este, de asemenea, rapid. Nu necesită multe resurse pentru a rula. Am adesea 6 sau 7 instanțe ale editorului deschise în orice moment pe vechiul meu computer - fără probleme. În comparație, am folosit IntelliJ IDE-uri de ani de zile și, când deschideam două dintre ele, întregul meu sistem începea să încetinească. Este foarte practic când lucrez la diferite proiecte în același timp, cum ar fi o grămadă de microservicii, de exemplu.
Ar trebui să adaug că Vim este foarte configurabil ? În loc să aveți multe funcționalități direct în IDE-ul dvs. (inclusiv unele pe care nu le veți folosi niciodată), puteți alege exact ceea ce aveți nevoie și renunțați la ceea ce nu aveți.
Un set de taste coerente
Dacă Arch Linux este baza mediului meu de dezvoltare fără mouse, atunci i3, Zsh, tmux și Vim sunt bancurile de lucru pentru nevoile mele creative. Îmi oferă un nivel de confort pe care nu l-am experimentat niciodată cu alte instrumente.
Dar s-ar putea să vă întrebați de ce ar trebui să utilizați toate aceste instrumente noi și apăsările lor de taste când puteți utiliza deja comenzile rapide pentru instrumentele pe care le cunoașteți deja?
Ei bine, comenzile rapide ale majorității aplicațiilor de acolo sunt adesea lipsite de sens . Este o ciorbă de chei care nu au relații între ele. Drept urmare, sunt greu de reținut și pot fi destul de diferite de la un instrument la altul.
Instrumentele pe care le descriu în acest articol sunt menite să se potrivească frumos unele cu altele. Puteți utiliza aproape aceeași apăsare a tastei pentru fiecare dintre ele. O singură cheie va diferi, pentru ca sistemul să știe pe ce instrument doriți să acționați. Face ca diferitele taste să fie mult mai ușor de reținut.
În plus, Vim a fost conceput pentru a avea taste care au sens prin crearea unui limbaj simplu pe care să te poți baza. De exemplu, pentru a șterge un cuvânt, puteți daw
. Pentru a șterge un paragraf, este dap
. Deoarece multe CLI-uri se bazează pe tastele Vim, învățarea Vim va deschide ușa către multe alte CLI-uri .
Instalarea automată a mediului de dezvoltare fără mouse
Instalarea manuală a Arch Linux este bună pentru a învăța multe despre sistemele bazate pe Linux, dar devine vechi atunci când trebuie să o faci de fiecare dată când vrei să instalezi sistemul pe un computer nou. De aceea mi-am creat propriile scripturi pentru a instala întregul meu mediu de dezvoltare Mouseless. Ei instalează Arch Linux, precum și toate instrumentele pe care le folosesc cu configurațiile lor. Când trebuie să folosesc un computer nou, pot pur și simplu să rulez aceste scripturi și voila!
Ești gata să fii un dezvoltator fără șoareci?
Datorită flexibilității pe care o am cu mediul meu de dezvoltare, pot schimba cu ușurință instrumentele. De exemplu, dacă nu vreau să mai folosesc tmux, îl pot înlocui cu un alt multiplexor terminal. Dacă nu-mi place bara de stare a i3 sau lansatorul de aplicații, le pot înlocui și eu.
După cum probabil ați ghicit, configurarea acestui tip de sistem necesită ceva timp, motivație și efort . De aceea am scris o carte numită „Construirea mediului de dezvoltare fără șoareci”. Descrie în detaliu cum să configurați toate instrumentele, cum să creați scripturi pentru a instala întregul sistem cu o singură comandă și cum să personalizați totul pentru nevoile dvs. personale. Dacă nu știți prea multe despre shell-ul Linux, vă permite să construiți un proiect personalizat pentru a vă familiariza cu el.
Dacă sunteți interesat, veți găsi aici o mostră a cărții, precum și întreg cuprinsul acesteia.
Cred că cel mai bun mod de a afla dacă ți-ar plăcea acest tip de sistem este pur și simplu să-l încerci. Îți pot garanta un lucru: vei învăța multe pe parcurs!
Citiți suplimentare despre Smashing Magazine
- „Am folosit web-ul pentru o zi doar cu o tastatură”, Chris Ashton
- „Un ghid complet pentru tastaturi mecanice”, Ben Frain
- „Aducerea unui argument puternic pentru accesibilitate”, Todd Libby
- „Accesibilitatea în Chrome DevTools”, Umar Hansa