Who's stealing your history?

Created by Alin Brindusescu on 2011-01-19 10:17:31

An article (An Empirical Study of Privacy-Violating Information Flows in JavaScript Web Applications) published by ACM (in CCS 2010: Proceedings of the 17th ACM conference on Computer and communications security) explains the way some websites are monitor your web history.
The article is about some other type of privacy intrusions too but I'm more annoyed by the web history monitoring. What pages I open is something I want to keep for me and not to share with a third party.

In a summarized article on this topic published by BBC one link to check this type of issues and some solution are offered.
So if you are curious what type of informations they can get you can have a look at the What the internet Knows about you. The same page offer some solutions for the web history monitoring problem.
For Firefox users a simple way to stop the websites monitoring your history trough the method described in the article is to disable the styling of visited websites. This is very easy:
- open about:config in Firefox
- set the layout.css.visited_links_enabled option to False

See more in ENG ROM

Compiling qt with VC++

Created by Alin Brindusescu on 2011-01-18 04:36:56

Some weeks ago I had some problems compiling last versions of Qt libraries (4.6.x and 4.7.x, GPL version)with VC++. And this is the solution I found for getting them compiled. In command line:

 
# vcvars32.bat
# cd c:\Qt\qt
 
delete the src/script/tmp/moc/(debug/release)_shared/mocinclude.tmp
 
# configure -platform win32-msvc2005 -no-webkit -debug-and-release -opensource -shared -no-qt3support
# nmake
 

Note: I have unpacked the qt files under the C:\\Qt in your case this can be different.

See more in ENG ROM

Mic tutorial wget

Created by Alin Brindusescu on 2011-01-17 17:58:25

Cum nu sint un mare fan al programelor de download pear-to-pear, wget este prietenul meu. Nu de multe ori wget m-a ajutat sa imi simplific sau programez descarcarea fisierelor de pe web.

Wget poate fi folosit pentru a descarca fisiere HTTP, HTTPS si FTP. Ruleaza in linie de comanda si tocmai in asta sta puterea sa, in lipse de interactivitate cu utilizatorul, ceea ce ne permite sa il utilizam in scripturi shell sau in crontab.
Wget poate fi obtinut de pe pagina officiala GNU Wget unde este disponibila si o documentatie amanuntita.

Cel mai simplu mod de utilizare:
# wget URL
Cu ajutorul acestei comenzi (in cazul in care nu aveti un script de configurare, .wgetrc, pentru wget in directorul home) veti descarca fisierul index.htm(l) de la adresa URL trimisa ca si parametru. Apelind wget fara nici un alt parametru (in lipsa fisierului de configurare .wgetrc) se va descarca doar fisierul index de la adresa URL specificata fara imaginile continute in pagina respectiva

Optiunile pe care le-am folosit cel mai des:
OptiuneDescriere Exemple
-qDescarca fisierele in mod silentios, nu se afiseaza nici un fel de mesaje# wget -q www.brindusescu.org
Nu va afisa nici un fel de mesaj. Aceasta optiune este foarte utila mai ales atunci cind wget este apelat dintr-un script.
-nvAfiseaza mai putine informatii# wget -nv www.brindusescu.org
Va afisa doar: 00:23:39 URL:http://www.brindusescu.org/ [23360] -> \"index.html\" [1]
-o log_fileCreeaza un fisier de log# wget -o brind_down_log www.brindusescu.org
Daca totusi doriti sa stiti ce s-a intimplat exact pe parcursul procesului de descarcare dar nu doriti ca informatia sa fie afisata la stdout puteti folosi aceasta optiune. Toate mesajele care ar fi fost afisate se vor gasi in fisierul log specificat dupa optiunea -o
-A tip_fisierPermite \\r\\nspecificarea tipurilor de fisier care se doreste a fi descarcate# wget -A pdf,ps www.brindusescu.org/download/
Va descarca doar fisierele cu extensia .pdf si .ps de la adresa URL specificata
-R tip_fisierPermite specificarea tipurilor de fisier care se doreste a fi ignorate in procesul de descarcare# wget -r -A swf,wav www.brindusescu.org/download/
Nu va descarca fisierele cu extensia .swf si .wav daca acest tip de fisiere exista la adresa URL specificata
-rRecursiv Aceasta optiune este in general folosita impreuna cu -l.
-lAdincimea pina la care sa urmareasca legaturile atunci cind descarca fisiere# wget -r -l 2 www.brindusescu.org
Va descarca toate fisierele din directorul radacina (unde se afla si index.hmtl) si fisierele care sint specificate ca si legaturif fisierele descarcate din directorul radacina
--limit-rate=rateLimiteaza rata (viteza) de transfer# wget -r -l 2 --limit-rate=30k www.brindusescu.org
Va limita rata de transfer la 30 de kilo bytes pe secunda. Daca sinteti atit de norocosi sa aveti o conexiune de citiva MBps si doriti sa o limitati la valoarea de 1 MBps puteti folosi --limit-rate=1m
-QLimiteaza cantitatea descarcata# wget -r -l 2 -Q10m www.brindusescu.org
Va opri descarcarea fisierelor dupa ce au fost descarcati 10 Mega bytes.
-i input_fileDescarca fisierele de la adresele URL specificate in input_file# wget -i citeva_carti www.brindusescu.org
Va descarca fisierele specificate in fisirul trimis ca si parametru.
-cContinuua un fisier ca carui descarcare a fost intrerupta\\r\\n# wget www.brindusescu.org/download/un_fisier_mare.pdf\\r\\n
sa presupunem ca descarcarea se intrerupe dintr-un motiv oarecare si fisierul nu a fost complet descarcat.
# wget -c www.brindusescu.org/download/un_fisier_mare.pdf
Daca descarcare fisierului a fost intrerupta inainte de finalizare, cind se va apela a doua oara wget cu optiunea -c se va relua descarcarea fisierului fara a mai descarca inca o data partea descarcata in prima sesiune
-NDescarca doar fisierele modificate de la ultima operatie de descarcare# wget www.brindusescu.org/some_test.dat
dupa ceva timp (o ora, zi, saptamina) apelam wget cu optiunea -N
# wget -N www.brindusescu.org/some_test.dat
Daca fisierul some_test.dat a fost modificat (e suficient ca timestamp-ul sa fie modificat) va fi descarcat din nou, daca timestamp-ul nu a fost modificat fisierul nu va fi descarcat din nou.
--http-user=
user
--http-passwd=
password
Permite specificare unui nume de utilizator si parole daca adresa specificata necesita autentificare# wget --http-user=testUsr --http-passwd= testPass -r -N www.brindusescu.org/test/auth_test.dat
In cazul in care adresa specificata va initia o cerere de autentificare se testUsr/testPass vor fi folosite ca si date de indentificare

Daca aveti optiuni pe care le folositi tot timpul va puteti creea un fisier de configurare in directorul home, pentru a fi recunoscut si procesat automat de fiecare data cind apelati wget aceasta trebuie sa poarte numele de .wgetrc.
Wget va modifica fisierele html pe care le descarca inlocuind calea spre fisierele descarcate cu o cale locale (unde a descarcat fisierele), pentru fisierele care nu au fost descarcate va pastra calea origniala.

See more in ROM

Retele neuronale: Notiuni introductive

Created by Alin Brindusescu on 2011-01-16 16:30:45

Domeniul retelelor neuronale a avut o viata zbuciumata cunoscind perioade in care activitatea de cercetare a fost exprem de intensa si perioade in care acesta a fost declarat complet "mort" pentru ca apoi sa revina in forta stirnind chiar mai mult interes, atit in rindul cercetatorilor cit si a publicului larg prin multitudinea de aplicatii practice pe care le are sau le poate avea.

Putina istorie
Pe la sfirsitul secolului XIX inceputul secolului XX au fost facuti primi paside catre cercetatori ca si Hermann von Helmholz, Ernest Mach si Ivan Pavlov care emit teorii asupra procesul de invatare, conditionarii, etc. Aceste teorii nu au adus nici un fel de modele matematice si nu pot fi considerate ca un inceput pentru domeniul retelelor neuronale.
Adevaratul inceput al acestui domeniu se situeaza la inceptul anilor ''40 cind Warren McCulloch si Walter Pitts pun in evidenta primul model formal al neuronului evidentiind capacitatea de calcul a acestuia si posibilitatea de implementare cu ajutorul circuitelor electronice.

Fig. 1. Citeva repere pe axa timpului

Pe la sfirsitul anilor ''40 Hebb, avind la baza teoriile lui Pavlov, enunta principiul adaptarii permeabilitatii sinaptice conform caruia de fiecare data cind o conexiune sinaptica este folosita permeabilitatea ei creste. Acest principiu sta la baza procesului de invatare prin modificarea ponderilor sinaptice.
In ani ''50 apare si plima aplicatie practica, Frank Rosenblatt realizeaza o implementare hard, numita perceptron, utilizata in recunoasterea caracterelor. Tot in ani ''50 Bernard Windrow si Ted Hoff dezvolta algoritmi de invatare pentru retele neuronale liniare cu un singur nivel de unitati functionale. Algoritmi sint bazati pe minimizarea erorii pe setul de date de antrenare.
In anul 1969 Marvin Minsky si Seymor Papert publica o carte numita "Perceptrons" care pune in evidenta limitarile la care sint supuse retelele neuronale cu un singur nivel de unitati functionale. Acesta parea a fi sfirsitul atit de noului domeniu al retelelor neuronale. Dupa publicarea acestui material, corelata cu lipsa unor echipamente de calcul digital suficient de puternice, face ca o mare parte din companiile care investeau in cercetarile din acest domeniu sa se reorienteze, iar o mare parte dintre cercetatori abandoneaza cercetarile.
Ani ''70 sint mult mai linistit si doar citiva cercetatori mai sint cu adevarat activi in domeniu. Printre ei merita amintiti Teuvo Kohonen, Sames Anderson precum si Stephen Grossberg (foarte activ in cercetarea retelelor cu auto-organizare).
Anii ''80 aduc pe linga noi descoperiri in domeniul retelelor neuronale si calculatoare digitale mai puternice capabile sa ajute cercetatorii in demersurile lor. Astfel ca la inceputul anilor ''80 o data cu o noua abordare a retelelor folosind formalismul fizicii statistice prin punerea in evidenta a a analogiei intre retelele recurente (destinate memorarii asociative) si sistemele de spini magnetici propusa de John Hopfield se marcheaza inceputul unei noi perioade de interes in domeniu caracterizata prin extinderea domeniilor de aplicabilitate si volumul mare de implementari soft si hard folosite in aplicatiile practice.
Astfel ca descrierea intr-o maniera accesibila a algoritmul de invatare al retelelor cu mai multe nivele bazat pe ideea minimizarii unei functii de eroare calculata pornind de la un set de antrenare de catre David Rumelhart si James McClelland nu face sa dea deci un impuls cercetarilor din domeniu. Algoritmul este cunoscut sub denumirea de backpropagation provenita de la faptul ca pentru determinarea ajustarilor ce vor fi aplicate ponderilor se propaga prin retea in sens invers un semnal de eroare.

Putina biologie
Pentru a putea citi aceste informatii dumneavoastra folositi o retea de 1011 neuroni biologici cu un numar de 104 conexiuni pe element. Cu toate ca neuroni biologici sint mult mai lenti decit circuitele electronice, avind un timp de raspuns de 10-3 ms fata de 10-9 ms cit au unele circuite electronice, datorita structuri puternic paralele pot procesa informatia mult mai repede si mai bine decit orice circuit electronic.

Fig. 2. Retea de neuroni biologici

nModul de functionare al neuronilor biologici este inca intens studiat, cu toate acestea pina in acest moment nu se cunosc inca multe din fenomenele care au loc in procesul de invarare. Cu toate ca la nivel biologic procesele care au loc la nivelul creierului sint mult mai complexe se pot evidentia citeva asemanari intre cele doua retele (arificiale si biologice). Astfel partile componente atit la nivel biologic dar si artificial, sint unitati simple care realizeaza diferite operati aritmetice puternic interconectate. De asemenea functionarea celor doua sisteme este determinata de conexiunile existente.

Fig. 3. Retea de neuroni artificiali

Calcul inteligent
Calculul neuronal (o alta denumire folosita pentru retele neuronale) alaturi de calculul fuzzy, calculul evolutiv si alte metode de calcul in care cercetarile sint in stadiu incipient (calcul molecular, calcul membranar, calcul cuantic) face parte dintr-un domeniu mult mai larg numit calcul inteligent. Toate aceste directii ale calcului inteligent incearca sa implementeze modele din lumea fizica si biologica pentru a putea rezolva anumite tipuri de probleme. Apare firesc intrebarea: de ce este nevoie de astfel de abordari in rezolvare problemelor? Cu toata progresele intregistrate in matematica si evolutia sistemelor de calcul din ultimi ani anumite tipuri de probleme nu se pot inca modela matematic sau implementarea acestora ar necesita timpi de calcul inacceptabili. Din acest punct de vedere am putea incadra problemele in doua clase:

  • probleme "rau-puse" - fie nu se cunoaste inca un algoritm care sa duca la un rezultat, fie timpul necesar rularii unui astfel de agoritm este inacceptabil;
  • probleme "bine-puse" - li se poate asocia un model formal pe baza caruia se poate dezvolta o metoda de rezolvare cu caracter algoritmic cu timpi de executie acceptabili.
Calculul inteligent este un domeniu al Inteligentei Artificiale care se ocupa cu rezvoltarea de tehnici de rezolvare a problemelor "rau-puse".
Calculul neuronal, ca parte a calcului inteligent se ocupa in general de rezolvarea problemelor de asociere (clasificare, aproximare, predictie, etc.). Principial pot reprezenta orice functie calculabila, dar ceea ce este mult mai important este ca pot invata orice astfel de functie pornind de la exemple.
Clase de probleme care se pot rezolva cu ajutorul retelelor neuronale:
  • Clasificare si recunoastere: pornind de la o descriere sintetica a unui obiect ii vom asocia un indicator al clasei careia apartine obiectul. Ex: recunoasterea caracterelor, recunoasterea vorbirii, clasifiacarea semnalelor (ex: clasificarea electrocardiogramelor in normale sau patologice), etc.
  • Gruparea si categorizarea datelor: similara problemei de clasificare cu diferenta ca antrenarea retelei se realizeaza pornind doar de la datele de intrare, fara a specifica si clasele carora le apartin. Clasele sint construite pornind doar de la similaritati existente in datele de intrare. Ex: analiza datelor si compresia datelor.
  • Aproximare si estimare: extragerea dependentei functionale dintre doua marimi pornind de la un set de valori ale celor doua marimi (in general valorile sint alterate de zgomot).
  • Predictie: aproximarea urmatoarei valori din serie. Ex: predictia evolutiei stocurilor, predictia in meteorologie, etc.
  • Optimizare: in determinarea unei valori care satisface anumite restrictii si care optimizeaza o functie obiectiv deoarece e suficient sa se obtina solutii suboptimale. Ex: proiectarea circuitelor electronice, alocrea resurselor, probleme de rutare in retea, etc.
  • Stocarea si regasirea informatiei dupa continut: RN permit stocarea informatiei astfel incit aceasta sa fie ulterior regasita pornind de la indicii legate de continut (indiciile pot fi portiuni din informatia stocata). Ex: proiectarea bazelor de date multimedia.
  • Modelare si control adaptiv: Controlul unui sistem dinamic se refera la a determinarea un semnal de control, u(t), care asigura producerea unui semnal de iesire dorit y(t). Reteaua neuronala este antrenata pornind de la un model de referinta.
  • Prelucrarea si analiza semnalelor.
Pina acum am discutat despre istorie, despre neuroni biologici, despre tipurile de probleme care pot fi rezolvate, dar totusi ce este o retea neuronala?
O retea neuronala este un ansamblu de unitati functionale amplasate in nodurile unui graf orientat si intre care circula semnale de-a lungul arcelor grafului.
Elemente definitorii:
  • Arhitectura: modul de amplasare si interconectare al unitatilor functionale. Determina fluxul informational
  • Functionarea: modul in care fiecare unitate functionala in parte si reteaua neuronala ca ansamblu transforma semnalele de intrare in semnale de iesire. Influentata de modul de interconectare al unitatilor functionale (arhitectura).
  • Adaptarea: specifica modul de stabilire al parametrilor ajustabili astfel incit reteaua sa fie capabila sa rezolve anumite probleme. Reguli de modificare a parametriolor -> algoritm de aplicare a acestor reguli.
O prezentare aferenta acestui subiect este disponibila aici.




Biblioigrafie:

  1. Daniela Zaharie, "Curs Retele neuronale"
  2. Ben Krose and Patrick van der Smagt, "An introduction to Neural Network", Amsterdam, 1996, University of Amsterdam.
  3. Nikola K. Kasabov, "Foundation of Neural Networks, Fuzzy systems, and Knowledge Engineering", Cambridge, The MIT Press, 1998.
  4. Bernard Widrow and Michael A. Lehr, "30 Years of adaptive neural networks:Perceptron, Madaline, and Backpropagation",Proceedings of the IEEE, vol. 78 no.9,September 1990.
  5. Dave Anderson and George McNeill,"ARTIFICIAL NEURAL NETWORKS TECHNOLOGY", Kaman Sciences Corporation, 1992, New York.
  6. Dumitrescu, D., Costin, H. - Retele neuronale; teorie si aplicatii. Teora, Bucuresti, 1996.

See more in ROM

Bash shortcuts

Created by Alin Brindusescu on 2011-01-16 14:50:49

Some bash shortcuts I found useful in bash shell. Note: not all of them are working when you use them over a ssh connection.
CTRL + A - move the prompt to the begining of the current line
CTRL + E - move the prompt to the end of the current line
ALT + F - move the prompt one word to the right
ALT + B - move the prompt one word to the left
CTRL + L - clear the the terminal (equivalent with clear comanda)
CTRL + R - search history
CTRL + U - delete the content of the curent line until the prompt
CTRL + K - delete the content of the current line from the prompt till the end of line
CTRL + W - delete the word found in front of the prompt
ALT + D - delete the word after the prompt
CTRL + T - swap the 2 letters before the prompt
ESC + T or ALT + T - swap the 2 words before the prompt
CTRL + K - cut the text before the prompt
CTRL + Y - paste the text cuted with CTRL + K

See more in ENG ROM

Search

Ads