Adrenalin\’s Blog

Aprilie 17, 2010

Schimbarea orei EXIF a fotografiilor

Filed under: Uncategorized — Adrenalin @ 12:35

Ora din aparatul de fotografiat nu era corectă, eventual şi fotografiile făcute aveau ora greşită.

Ieri am fost la un event, acum am determinat că ceasul din aparat era cu 2 ore şi 40 minute în urmă.

Am găsit acest program genial jhead (există versiune linux,windows,freebsd astfel toţi îs fericiţi).
Una din opţiuni permite exact ceea ce am nevoie, pentru a adăuga 2 ore 40 min, am executat această comandă.


jhead -ta+2:40 *.jpg

Eventual p/u a scădea puneţi minus în loc de plus.

Exemple mai puteţi vedea aici.

Acum puteţi reconstitui evoluţia eventului fără a calcula mult.

Martie 3, 2010

Cum să blocați un site pe propriul computer ? Lupta cu dependentețe

Filed under: experience — Adrenalin @ 17:10

Să zicem că sunteți tare dependent de un site, și citeodată involuntar în loc să făceți ceva util, intrați pe el.
Ca să-l blocați, efecutați următorii pași.

start->run scrieți notepad
În editorul de text, mergeți la File->Open și selectați fișierul c:\Windows\System32\drivers\etc\hosts sau mai general %SystemRoot%\System32\drivers\etc\hosts

Acum pur și simplu adăugați la sfîrșitul fișierului o linie nouă cu conținutul:
127.0.0.1 facebook.com
sau ca sa blocati si http://www.facebook.com
127.0.0.1 facebook.com http://www.facebook.com
acum prin spatiu mai puteti adauga site-uri care doriti sa fie blocate.

Salvați fișierul, cam asta e, cînd veți încerca să intrați pe facebook, nu veți mai reuși.

Scrieție în comentarii despre luptele voastre cu dependențele :)

Despre MySQL, ce mi-aș zice dacă m-aș întoarce în timp vreo 5 ani în urmă

Filed under: experience, mysql, Unix — Adrenalin @ 15:19

Dînd cu nasu în același perete de multe ori, îți dai seama că dacă de la început făceai alt fel, îți ușurai cu mult viața.
Dar norocul vostru că ați dat de blogul meu, și cu mic succes veți avea mai mult timp pentru băut bere și nopțile vor fi dormite la călduț !

Așa deci:

  • Evitați triggerele, da ele sună bine în teorie, dar nici nu vă imaginați cît e de simplu de pierdut unul. Exemplu cînd faceți rename la un tabel, sau cînd recreați același tablou cu partiții, de fiecare dată trebuie să fiți atenți ca triggerele să fie și ele. Și dacă îl uitați, atunci va trebui de resincronizat totul. Plus la replicare, triggerele pot complica logica.
    Mult mai simplu de realizat triggerele la nivel de aplicație, plus că ele vor intra în funcție îndată ce faceți update la aplicație.
  • Evitați tabelele federate, iarăși sună bine în teorie cînd începeți să aveți mai mult de 1 bază de date, dar tabelele federate îs extrem de proaste și lente. Dacă serverul de la distanță cade, toate cererile spre tabelele federate vor bloca db-ul pînă la momentul cînd tot site-ul se va opri. Iar dacă faceți inserturi în tabele federate (nu dă domnul), foarte repede veți găsi incoerențe.
    Dacă vă trebuiește acces la datele de la distanță, utilizați replicarea datelor (nu uitați să monitorizați replicarea).
    De asemenea în mod normal, dacă de exemplu doriți să modificați date, trimiteți cererea de modificare la master, astfel și slave-ul vostru va avea datele.
  • Utilizați innodb, pentru tabele din care se face permanent read și write, asta trebuie să folosiți, uitați de myisam. Alocați mai mult ram la buffere și totul va zbura.
    În tinerețe utilizam myisam, și a trebuit niște timp pînă se îmi dau seama că e frînat, la modificări, myisam face table lock, astfel cererile concurente merg ca găina printr-o hudiță, pînă nu trece într-o direcție în direcția opusă nimeni nu se duce În innodb, citiți despre cheile primare clusterizate.
  • Replicarea master – master, iarăși sună bine în teorie, dar cel mai probabil simpla replicare master slave va fi suficientă. De asemenea învățați-vă aplicația să trimită update-urile la master și select-urile la slave.
  • Urmați principiul KISS, dacă se complică cel mai probabil nu faceți corect, cu cît e mai complicat, cu atît mai multe greble, cu cît mai multe greble, cu atît mai mare probabilitatea să dați în vreo una. Poate chiar în unele cazuri ceva va lucra puțin mai greu, dar dacă asta e simplu și intuitiv, atunci e calea corectă.
  • Nu utilizați versiuni beta în prod chiar dacă pare că are mega facilități. Softul complex cu reviziuni majore ieșit mai puțin de un an în urmă cel mai probabil încă e cu buguri și nu a fost bine testat. Defapt mie îmi place să utilizez cel mai recent soft și chiar să raportez bugurile (am raportate pentru mysql5.1), dar trebui de avut infrastructura bine pusă la punct pentru ați permite jocurile, alt fel jocul se transformă într-un coșmar ;)

Iată dacă știam din start despre aceste chestii, probabil mi-ar fi salvat tone de timp și energie.
Cînd mi-am început aventura cu bazele de date, aveam un singur server care avea totul pe el, și așa cum site-ul era în creștere permanentă, bani de server mai puternic nu era (la moment și cela care era îmi părea scump), pasiunea și dorința era enormă, de aceea tot ce-mi trăsnea prin cap încercam, prioritatea era viteza cu orice preț.

La moment dacă aș începe de la 0 posibil în genere aș încerca ceva care necesită mai puțin maintenance în cazurile cînd are loc căderi de electricitate (posibil chiar și ceva nosql ca Cassandra care singur scalează și e redundantă în caz de cade vreun node), probabil înafară de viteză asta ar fi unul din primii factori de decizie. Softurile care le pui și nu mai cer atenție, sau ft mică, autorilor lor trebuie de pus monumente, dar bazele de date îs extrem de fragile dacă compar cu alte genuri de softuri..
Nici nu vă imaginați de cîte ori am avut tabele corupte, replicare care trebuie reinițializată pe slave-uri.

Aceste au fost niște sfaturi generale care mai greu veți găsi în primele pagini de cărți,docuri,bloguri de mysql, învățați pe greșelile mele :)

Martie 1, 2010

Bip la telefon din linie de comandă

Filed under: Unix, voip — Adrenalin @ 13:35

Prima zi de primăvara, dispoziție bună am decis să fac niște share.

Sa zicem ca avem nevoie să putem suna la un telefon prin linia de comandă, se poate chiar de făcut play la un fisier audio (poate chiar creat dinamic cu un sintetizator de voce) cînd se ridică telefonul, dar p/u necesitățile mele și cîteva sunete îmi sunt suficiente ca să-mi atragă atenția ;) Apropo este posibilitate să trimiteți SMS-uri din linie de comandă prin HTTP&curl (dacă cineva e interesat, pot povesti, e mai ieftin de cît să cumpărați monitorizare si alerte sms).
Asta ne-ar permite să facem alerte automatizate cînd ceva serios se întîmplă. Plus beepurile nu cheltuie banii.

De ce avem nevoie:

  • Voip client linie de comandă, PJSUA (care intră în componeța pachetului PJSip)
  • Cont la vre-un VOIP provider cu SIP, dacă aveți vre-un cont la vre-o unu deja, cautați la ei pe site undeva setările SIP, exemplu voipdiscount, setări. Dacă veți dori să sunați pe fix, evident că va trebui să puneți ceva pe cont.

Instalarea PJSUA

Așa deci să începe cu instalarea PJSUA, dacă nu aveți în sistemul de pachete, pjsip nu are multe dependențe deaceea se instalează ușor. [ref]

wget http://www.pjsip.org/release/1.0.1/pjproject-1.0.1.tar.bz2
bzip2 -d pjproject-1.0.1.tar.bz2
tar xvf pjproject-1.0.1.tar
cd pjproject-1.0.1
./configure
make dep
make
sudo make install
sudo cp ./pjsip-apps/bin/pjsua-i686-pc-linux-gnu /usr/local/bin/pjsua

Configurarea PJSUA

Creați undeva un fișierul de configurare, exemplu în /etc/sip.cfg [man pjsua] și puneți asta în el:

--id sip:utilizator_voip_discount@sip.voipdiscount.com
--registrar sip:sip.voipdiscount.com
--realm *
--username utilizator_voip_discount
--password parola_voip_discount

Acum ca să sunăm pe cineva pe fix:
/usr/local/bin/pjsua --app-log-level=3 --config-file /etc/sip.cfg --null-audio --max-calls 1 sip:+373...@sip.voipdiscount.com

Automatizare prin utilizarea expect

Acum de exemplu ca să punem receptorul peste 12 secunde, de menționat că pînă se conectează trece ceva timp, deaceea in 12 secunde se include si timpul de conectare la sip server, vom avea nevoie de expect, scriptul de mai jos se execută ca și un script bash, puneți-l în bip.sh de exemplu:

#!/usr/bin/expect --
set timeout 15
set addr [lindex $argv 0]
spawn /usr/local/bin/pjsua --app-log-level=3 --config-file /etc/sip.cfg --null-audio --max-calls 1 sip:+373...@sip.voipdiscount.com
sleep 12
send "h\n"
expect {
"DISCONNCTD" {
exit
}
timeout {
send "h\n"
exit
}
eof {
exit
}
}

pjsua e un client interactiv in linie de comanda, h semnifică punerea receptorului. În mod normal timeout-ul de la expect trebuie sa trimită la timeout-ut asta, dar din motive neclare nu prea merge, deaceea fac cu sleep și apoi send care merge.
Apropo expect e un tools genial p/u automatizare.

Îl făcem executabil
chmod +x bip.sh
Executăm cu nr-ul la care dorim să făcem bip
./bip.sh +373…@sip.voipdiscount.com

Acum nu vă rămîne să apelați bip.sh din careva alt script cînd se întîmplă ceva.

Idee de ameliorare a scriptului de mai sus. Se poate de afișat mai multe detalii la conectare (scotind app-log-level), expect are o functie care se cheama expect, astfel el poate astepta pentru anumit cuvint chee pentru a continua, astfel inainte de sleep putem astepta anumit mesaj de conectare.

Mai multe exemple cu pjsua p/u play la audio și combinat cu nagios găsiți aici.

Acum veți afla primul dacă s-a întîmplat ceva, chiar și la 2 de noapte ;o)

Noiembrie 1, 2009

Idee de proiect #2: Offline mode for youtube

Filed under: idei — Etichete:, , — Adrenalin @ 21:41

Iata am ideile estea care nu ma lasa in pace, si nici nu le pot face nu am suficient timp si nici concentrare (scriind acest post de ex. lol), va share-uesc voua ;) Poate cineva e in cautare de idei ;o)

Problema:
Unele clipuri se sterg de pe youtube, ma uit cu tristete in lista mea de favorite, si clipuri sterse is tot mai multe si mai multe.
Youtube mai cade citeodata, chiar acum a picat (1 / 2) daca va uitati pe twitter mii de oameni scriu „YouTube is down for maintenance and will be back shortly.” First time I am seeing one of these! http://www.youtube.com/oops/error.html
Youtube se poate inchide cindva.
Nu intotdeauna avem conexiune rapida la net, sau de loc. Dar spatiu pe hdd e mult.
De ce tre de descarcat iarasi si iarasi acelasi clip cind el ar putea sta in cache ? (defapt se poate de exitins cache-ul in browser, by default in firefox e 50mb adica ft putin, oricum eu as dori ca toate clipurile de pe youtube sa ramana in cache).

Si nu numai eu vreau asta :)
Is there a firefox addon for offline browsing?

Idei de soluți posibile:
Prima ce as incerca, e un script greas monkey+google gears.
Apoi daca nu merge, se poate de facut un extension dedicat la firefox.
Si daca nici asta nu merge, se poate de facut un program care va copia toate clipurile care le am eu(sau alt cinve) in favorite si ar face o versiune navigabila (si apoi sa se poata sincroniza din cind in cind) a tuturor clipurilor pe disk-ul local (de dorit sa fie utilizat un limbaj care ar putea rula pe orice sistem de operare).

Iar dacă mă mai gîndesc:
Ce ziceți p2p youtube-like distribuit descentralizat (sau poate nu chiar de tot) :) Gen utilizatorii hostează la ei clipurile lor preferate, alții le pot descărca de la el și reciproc (adică utilizatorii pot naviga unii de la alții clipurile preferate). How fun is that :) Si dacă de ex. youtube ar face asa un sistem calitativ, probabil ar putea salva multe kile de bani(din cite amintesc lunar ei platesc milioane de $ p/u banda).. Eu as fi gata sa am pe hdd clipurile mele preferate (adica prima parte a postului meu) si sa le distribui(p2p).. Poate tre de facut asa un proiect si apoi de vindut la google/youtube ;o)

Citeva luni in urma a mai fost o idee publicata:
Ideea nr #1 (orig)

Septembrie 20, 2009

(solved) „Pîrîit” în winamp cu audio fișiere de format AAC

Filed under: Uncategorized — Etichete:, , , — Adrenalin @ 22:44

Azi am „demuxat” niste track-uri audio din clipuri de pe youtube (vreau sa am totul in winamp fara să mai deschid browserul sau playere video).
Pentru flv-uri obișnuite a mers Flv Extract iar pentru mp4 mai avansate (care tot se gasesc pe youtube cind se alege formatul HD) a mers o combinatie de MKVExtractGUI&mkvtoolnix. (adresele spre fisiere de pe youtube le prind cu live http headers, probabil sunt extensions-uri mai specializate)

În fine obțin eu acele track-uri, le pun în winamp, și cînd colo, „pîrîit”, viteza variată de play, oribil. Pun în VLC, sună perfect.
Încerc vreo două google (gen aac audio bad quality), nimic interesant, decid să fac update la winamp pînă la ultima versiune, iarăși nici un rezultat, iarăși mai dau un google (de data asta ceva de genu aac vlc better quality winamp) și îmi apare această temă.

Go to preferences -> plugins -> output and just select „DirectSound Output”.

Iar la mine stătea „Nullsoft WaveOut Output”, am pus „DirectSound Output” și toate problemele au dispărut, bucurie mare, că deja mă gîndeam că trebuie să mă despart de winamp ceea ce nu-i chiar simplu ;]

Noiembrie 27, 2008

[Update] mo.wikipedia va deveni mo-cyrl.wikipedia, dar nu se stie in cit timp

Filed under: Moldova — Adrenalin @ 6:54

Update februarie 2010: am mai scris emailuri la maillistul lor, dar fără succes, cauza rămîne incertă chiar și după promisiuni.

Update: Azi(7 aprilie 2009) dupa inca un email spre ei am primit un email de la „Brion Vibber”

„Hi Cetateanu –

It’s on the list, along with many other suggested renames. Its presence doesn’t harm anyone, so there’s no need to rush on it until we have a decent infrastructure to allow for it.”

Update: Din păcate schimbarea nu s-a facut asa rapid cum m-am gindit eu initial

Dupa niste lupte pina la cuțit acest weekend si sapt. trecuta pe mail-listu de la wikipedia totuși s-a reușit să-i conving că mo.wikipedia nu are cum sa fie in cyrillica ! Evident sa-i conving să ștergă definitiv e cu mult mai complicat, dar deja cyrl explicit in denumire deja semnifica mult.

anuntul de pe 25 noiembrie despre redenumire http://lists.wikimedia.org/pipermail/foundation-l/2008-November/047554.html (pe la mijlocul mesajului)

Iata cine vrea sa citeasca despre discutiile recente pe marginea temei.. http://lists.wikimedia.org/pipermail/foundation-l/2008-November/047264.html

Deja un pas inainte. Caci era absolut rusine ca sub numele limbei noastre (care defapt evident e romana) sa fie cuvinte cu grafie chirilica.
Deasemenea, cine nu stie, pe 3 noiembrie a fost modificat ISO 639-1/2 astfel codul „mo” a iesit din utilizare.

Octombrie 19, 2008

(bash) Cum de redenumit fișiere în masă ?

Filed under: Unix — Etichete:, , , , — Adrenalin @ 1:54

Acum am avut o sarcină foarte simplă, sa înlocuiesc spațiile din denumirea fișierelor cu „underscore”=>”_”, fișiere îs cîteva sute(si mai pot aparea), așa că să mă arunc să le redenumesc manual, ar fi destul de arhaic din partea mea (caci luna trecuta am căpătat brîul care bate spre închis..mi s-a predat niște bash LA LECȚII, vă imaginați, noua institutie ruleaza!?!?;D), si așa cum acuma am bash din cygwin (haha, imi amintesc cind l-am instalat vreo 4-5 ani in urma si nu intelegeam ce sa fac cu el) instalat, după cîteva testuri, iata ce a ieșit:

ls | while read N; do
newN=$(echo $N | sed "s/ /_/g")
mv "$N" "$newN"
done;

Puternic lucru.. ;o)

Apropo, sub cygwin disk-urile is accesibile la /cygdrive/litera-disk-ului/, exemplu /cygdrive/d/.

Octombrie 7, 2008

Planeta Moldova pe archive.org

Filed under: Uncategorized — Adrenalin @ 23:41

Nu stiu daca ati observat, dar site-ul planetei moldova in luna august si septembrie a fost inaccesibil, deaceea acum ca si-a revenit „s-au” incarcat piesele pe archive.org, sa traiasca mai mult..
http://www.archive.org/details/planeta_moldova

Iata si p/u zdob si zdub cineva a incarcat niste clipuri.. ;o) http://www.archive.org/details/Zdob_si_Zdub

August 10, 2008

Razboiul cu Georgia se desfasoara si in cyberspace

Filed under: Uncategorized — Etichete:, , — Adrenalin @ 17:13

Curios cum evenimentele reale se răsfrîng și asupra cyber-spațiului..

Daca trecem pe lista celor mai populare site-uri georgiene(cele ce se termin .ge) alexa.com vedem ca majoritatea nu se deschid.

Deasemenea dupa informatia
http://voices.washingtonpost.com/securityfix/2008/08/georgian_web_sites_under_attac.html
http://rbnexploit.blogspot.com/

Inafara de banalul DDoS (atac masiv de la mii de coputere virusate) cum a fost in cazul cu Estonia anul trecut, de data asta rusii au reusit sa schimbe rutele traficului spre serverele georgiene (acum traficul se duce pe calea gresita astfel nu mai ajunge niciodata la destinatie).

Se raporteaza ca majoritatea site-urilor (inclusiv cele oficiale) aflate in interiorul Georgiei nu mai sunt accesibile din exterior.

Se pare ca www.president.gov.ge si-a schimbat acum hostingul in SUA, si a inceput sa lucreze, deasemenea vad ca site-ul ministerului afacerilor externe(www.mfa.gov.ge) tot s-a mutat in SUA dar inca nu lucreaza(iata mi s-a deschis cu o eroare „Warning: session_start() [function.session-start]: open(/tmp/sess_oukaen4buj1uap6dv8qjj1f0m5, O_RDWR) failed: Permission denied (13) in /home/.waters/mfagov/mfa.gov.ge/index.php on line 3” cred ca sub DDoS).

De pe http://www.president.gov.ge/?l=E&m=0&sm=2&id=2694

The President of Georgia Mikheil Saakashvili held a press conference

I have few announcements to make for international media. In fact, we were trying before we organize this live-air for me, we tried to get through different media channels and before of talking about the other things, I have to say that Russia have launched overall cyber attack over Georgian telecommunication system, and also on every line that goes from Georgia to the outside of world trying to block international communications

I have the following statement to make

Today Russia has launched a full scale military invasion of Georgia. Russian forces, including air, land and sea forces are messed against and attacking our sovereign nation. This war is not about South Ossetia, it has never been in first place. It is about destroying a small democratic nation inspiring to live in peace, freedom and liberty. Georgia is a nation of 4.6 million, Russia is 146 million and today they are trying to destroy my country. Georgia lost its independence in 1921, today it’s in similar circumstances. Today it will not be defeated no matter what. We appeal to our friends and allies to call to Russia to cease hostilities immediately. Georgia is a peace-loving nation, but today we have been attacked from North to South, East to West. I have to mention that Russian forces have been specifically targeting civilian quarters, they have specifically attacked and blew up the whole civilian quarter in the town of Gori, far away from the place where conflict area is and where is direct friction between forces are. They’ve attacked installations in the western part of Georgia, they’ve attacked residential quarters all around the country, they’ve attacked civilian hospitals and there are casualties. Most of casualties are among civilians. They’ve attacked our airports, they’ve attacked the proximities of pipe line, they’ve attacked bridges and they’ve attacked roads. Several hours ago Russian Black Sea fleet started to move towards and started invasion of Georgian sovereign territory in Abkhazia. Three years ago Russian troops and Russian heavy equipment started to storm upper Abkhazia – Kodori Gorge. I have to say, no Georgian movement, no central government step has been ever been taking place for the last period towards that territory. I also have to indicate, that Russian troops, Russian tanks that moved in, into South Ossetia on their way expelled the whole ethnically Georgian population of South Ossetia. This morning they’ve committed the ethnic cleansing in all areas they control in South Ossetia, they have expelled ethnic Georgians living there. Right now they are trying to set up the ethnic cleansing of ethnic Georgians from upper Abkhazia – Kodori Gorge.
..urmeaza..

Nu, real, Ostia ceea e chiar in interiorul Georgiei, ce naiba cauta rusii acolo.

Înnoit:
Iată cineva pe twitter http://twitter.com/wardirect scrie din Osetia..
Ceea ce se petrece in Osetia/Georgia versiunea georgiana http://www.qartu.com/ru/

Înnoit2:
Se pare ca este si versiunea engleza a lui wardirect – wardirect_en – am aflat ca rusii au inceput sa bombrdeze Tbilisi – Capitala Georgiei !

Înnoit3: O noua sursa cu informatie care n-am vazut-o nicaieri:

First of all, we identify 309 prefixes (networks) that geo-locate to Georgia, originated from 26 Autonomous Systems (ASes). As the following graphs show, over the past three days, up to 35% of the prefixes disappeared from the Internet, sometimes for long periods of time, and up to 60% of them were unstable. .. Georgia has few options for connectivity via land routes, namely Turkey, Armenia, Azerbaijan, and Russia. As it turns out, most of those 309 Georgian prefixes get routed via Turkey’s TTnet (AS 9121) or Azerbaijan’s Delta Telecom (AS 29049). Traffic to Delta Telecom then heads to Russia via JSC Rostelcom (AS 12389). During the hostilities, we’ve seen no significant changes in routing. In particular, we saw no apparent attempts to limit traffic via Russia, but then again, most traffic from Georgia seems to currently transit Turkey. So with respect to connectivity, Georgia is ultimately dependent on either Turkey or Russia. But Georgia has been planning ahead and just announced the completion of the first stage of a cable to Bulgaria under the Black Sea to give them a direct conduit into Europe. As of today, this fiber does not appear to be lit, as we see no evidence of Georgian traffic routed directly via Europe. ..

Înnoit4 – 13.aug:
Intre timp rusii au sistat operatiunile militare dupa ce au distrus punctele importante militare din Georgia si dupa ce presedintele Frantei a fost la Moscova ca reprezentat a Uniunii Europene..
Iata inca niste analize despre cyber war-ul recent..
11.aug Coordinated Russia vs Georgia cyber attack in progress – Zdnet
12.aug Estonia, Poland help Georgia fight cyberattacks – Computerworld

Înnoit5 – 13.aug/2:
Se pare ca inca nu au plecat rusii din Georgia

Russian tanks heading deeper into Georgia on road to capital Tbilisi, one day after cease-fire, witnesses tell CNN.

about 4 hours ago from CNN Alert

Russian soldiers open fire, when ISP Caucasus Online’s technicians were tryin to fix fiberoptical link to Global internet connection in GEO

about an hour ago from web

« Newer PostsOlder Posts »

Blog la WordPress.com.