Naudok priemonę labiausiai tinkančią užduočiai spręsti
Kadangi esu programuotojas, mėgstu įvairias užduotis automatizuoti. Kartais automatizavimas sutaupo labai daug laiko, kartais galima sugaišti labai daug laiko automatizuojant, bet šį kartą ne apie tai…
Trumpai apžvelgsiu priemones, kurias naudoju užduočių automatizavimui.
Makefile¶
Labai naudinga priemonė ypač programuotojams, tačiau aš tai naudoju ne tik programavime. Pavyzdžiui esu pasidaręs Neo Freerunner sinchronizavimą su kompiuterių. Dažnai kataloge tiesiog aprašau Makefile, pamirštu ką jis daro ir kam jis skirtas, bet jei matau, kad kataloge yra Makefile, tai nesigilindamas rašau make ir darbas atliktas.
Tikriausiai 90% visų atviro kodo paketų naudoja Makefile, todėl įrankis tikrai laiko ir naudotojų gausos išbandytas ir atidirbtas. Gėris.
Shell skriptai¶
Jei kažką sunkiai sekasi aprašyti Makefile’uose, į pagalbą galima pasitelkti shell skriptus. Jei dar nežinote, tai nustebsite kiek daug galima pasiekti naudojant shell skriptus. Mano namų bin kataloge yra visa gausybė shell skriptų visiems gyvenimo atvejams. Šiuo metu ten yra:
$ ls ~/bin | wc -l 65
65 skriptai.
Štai paprastas shell skripto pavyzdys, kuris gali praversti kas dieną:
#!/bin/bash URL='http://translate.google.lt/translate_t?q='$1'#auto|lt' w3m -dump $URL 2>/dev/null | egrep '^Žodynas' -A10
Rezultatas gaunasi toks:
test.sh shell Žodynas daiktavardis 1. apvalkalas 2. lukštas 3. karkasas 4. kiautas 5. įdėklas 6. šarvas veiksmažodis 7. sluoksnis
sed, awk ir draugai¶
Rašant shell skriptus šių komandų gan dažnai prireikia, norint apdoroti kažkokią tekstinę informaciją. Čia daug ką kalbėti ir nebūtina, tiesiog pateiksiu paprasčiausią pavyzdį komandos, kuri pakeičia visų lentelių pavadinimus duomenų bazės faile:
$ du -sh data.sql 2,1G $ sed -i data.sql $ time sed -i 's/site1_prefix_/site2_prefix_/g' data.sql 35,27s user 51,79s system 59% cpu 2:26,58 total
Visas failas pakeistas per 2,5 minutes! Įdomu per kiek laiko šį failą atidarytų jūsų teksto redaktorius? :D
perl¶
Visi aukščiau išvardinti įrankiai yra puikūs, tačiau kai reikia atlikti šį tą sudėtingesnio, visada verta prisiminti perl.
Perl yra pilnavertė programavimo kalba, tačiau turi funkcijų panšių į sed ir awk, ne gana to, perl dirba labai greitai:
$ time perl -i -nle 's/site1_prefix_/site2_prefix_/g; print' data.sql 19,60s user 9,54s system 36% cpu 1:20,46 total
Perl tą patį darbą atliko minute greičiau, nei sed! Bet dirbant su perl, reikia turėti kiek daugiau žinių, nei su sed.
Perl gali puikiausiai apdoroti tekstinius duomenis, o rezultatą įrašyti į duomenų bazę ar panašiai, kaip tai padaryta šiame pavyzdyje: