Darbu rinda, beanstalkd vs gearmand
2010-06-17 12:20:28 UTC by maris in Linux, Skripti,Manā redzes lokā nonāca beanstalkd ātrs, dalīts (distributed) darbu menedžeris, ar kura palīdzību tika uzrakstits pdf generators, kas var tikt virtuāli neierobežoti mērogots.
Beanstalkd ir visai ātrs un vienkāršs darbu menedžeris, kā raksta autors, tad tā protokols ir balstīts uz memcached. Jaunākajās versijās ir binlog iespēja, kas nodrišina darbu saglabāšanu avārijas gadījumā.
Pēc kāda laika atradu beanstalkd alternatīvu - Gearmand, no iesākuma biju domājis, ka tas ir vecais gearman, ko sarakstīja Danga uz perl, bet vēlāk izrādijās, ka tas ir jauns projekts, kas uzrakstits uz C, bet par bāzi ņemtas originālā Gearman idejas un protokols.
Sākumā šķita, ka šie abi izstrādājumi dara vien un to pašu darbu tomēr ir dažas būtiskas atšīrības.
Gearman atbalsta gan sinronos darbus, kas ļauj izsaukt attālinātu procedūru un sagaidīt rezultātu, gan arī asinhrnos - background darbus, turpretī beanstalkd nav sinhrono darbu atbalsta, tikai asinhronie. Toties beanstalkd ir iespēja izveidot vairākas darbu rindas - Tubes, kuras var būt paredzētas dažādiem servisiem.
Beanstalkd ir vecāks un atstrādātaks produkts, par to arī liecins kļudu datubāze, kas ir krietni mazāka par Gearmand bugs bāzi.
(0 komentāri)Bash regex
2010-03-22 11:03:14 UTC by maris in Linux, Skripti,Kopš Bash 3. versijas ir pārādījies regulāro izteiksmju atbalsts, kas ir līdzīgs realizācijai iekš perl.
if [[ "pirmagrupa01-51" =~ ^([a-zA-Z]+)([0-9]+)-([0-9]+)$ ]]
then
echo "group1:${BASH_REMATCH[1]} group2:${BASH_REMATCH[2]} group3:${BASH_REMATCH[3]}"
fi
path=/var/log/messages
echo ${path%/*}
/var/log
echo ${path#*/}
messages
Atjaunināts files.inbox.lv downloader
2009-12-09 09:05:09 UTC by maris in python, Internets, Skripti,Atjaunināju files.inbox.lv downloder, tagad ari uploader skriptu.
Galvenais jauninājums ir upload iespējam, kā arī iespēja uplodēt direktorijas saturu un pat rekursīvi uploadēt direktorijas un apakšdirektoriju saturus. Direktoriju struktūras koks nesagabājas.
Paņemt te
files.inbox.lv downloader
2009-06-05 15:09:46 UTC by maris in Linux, python, Skripti, Apple, Software,files.inbox.lv ir visai jauns failu glabāšanas serviss, kam ir diezgan ērta upload forma, kas ļauj augšup ielādēt vairākus failus vienlaicīgi, bet diemžēl nav iespējas lejupielādēt vairākus failus vienlaicīgi, tādēļ uzrakstīju nelielu Python skriptu, kas šo trūkumu atrisina.
Inbox Files Downloader ir komandrindas (cli) Python skripts, kas lejupielādē failus no files.inbox.lv servisa, saglabājot tos uz lokālā diska. Skripts ir spējīgs lejupielādēt individuālus failus, vaī pat veselu direktoriju saturu.
Spēj lejupielādēt:
1. Privātos failus un direktorijas saturus, ar autorizāciju
2. Publiskos failus - bez autorizācijas
Lai lejupielādēt privāto failu vai direktorijas saturu:
./inbox-files-downloader.py -s 'http://files.inbox.lv/files/download/?id=9999' -d Downloads/
pēc kā tiks paprasīti autorizācijas dati.
vai publisko:
./inbox-files-downloader.py -s 'http://files.inbox.lv/ticket/2dcb12a3282ce55ac122c118ac4c567acae474c5/817-2271.pdf' -d Downl/
autorizācijas dati netiks prasīti.
Komentāri un ieteikumi ir laipni gaidīti :)
Nepieciešama UNIX tipa OS un python > 2.4, pie lielas vēlēšanās var modificēt arī priekš Win.
paņemt var te:
py skripts: inbox-files-downloader
Win32 exe: inbox-files-downloader-r20
Bash timed execution
2009-05-22 08:05:14 UTC by maris in Linux, Skripti,Tikko savajadzējās uztaisīt check'u ar timeout'u, te mu būs piemērs kā to izdarīt no bash. Ideja diezgan vienkārša - forkojam galveno procesu backgroundā, savācam procesa pid, guļam timeout sekundes, pēc kā pārbaudma vai process joprojām ir aktīvs.
#!/bin/bash
mainproc(){
for i in `seq 1 20`
do
echo "Now in $i"
sleep 1
done
}
timeout=5
echo "Running with timeout of 5 seconds"
mainproc &
pid=$!
sleep $timeout
kill -0 $pid
if [ $? -eq 0 ]
then
echo "Process hang"
kill -9 $pid
else
echo "Process ok"
fi