Tuesday, August 28, 2007

Pagini web slinoase şi Greasemonkey

Nu ştiu de la ce vine denumirea de Greasemonkey, dar sigur e o extensie utilă pentru corectat situri mizere.

Cea mai comuna porcărie pe care o fac site-urile cu mult text este să lase coloane foarte late, care sunt greu de citit şi inestetice. Având de citit nişte documentaţie PL/SQL fără formatare am ajuns la exasperare şi am instalat Greasemonkey sperând să găsesc şi un script care să ingusteze paginile, eventual la apăsarea unei taste. Sau măcar un exemplu care să mă lumineze cum să fac aşa ceva.

Căutând pe userscripts.org am găsit "highlight paragraph" care este foarte mişto, şi aduce şi o idee în plus: colorarea în galben a paragrafului curent pentru a facilita citirea. Sper să nu pierd prea mult timp citind bloguri stupide ca să testez chestia asta. Am mai găsit şi "justify text by default" care ar putea fi ajustat să şi îngusteze paragrafele.

Până una alta am instalat "highlight paragraph" şi l-am modificat să-mi şi ingusteze paragraful curent, şi sunt relativ mulţumit de rezultat. Probabil că un pic de studiu ar trebui să mă ajute să produc un script Greasemonkey care să îngusteze tot body-ul la apăsarea unei taste.

Tuesday, July 10, 2007

WMon nou

Dacă tot am înfipt lucrarea de licenţă în secretariatul catedrei şi am scapat aproape de grija respectivă, am o nouă problemă: Civ4 foloseşte două procesoare sau doar unu?

Ca să rezolv această dilemă am extins wmon cu un grafic mic pentru istoria utilizării resurselor monitorizate (nu pot să afişez şi wmon si Civ4 în acelaşi timp).

Friday, June 29, 2007

Scala

Probabil sunt absolut inconştient. Deşi nu am timp, m-am apucat să învăţ Scala. Un limbaj foarte expresiv (este cel mai recent rezultat al preocupărilor lui Martin Odersky de a combina stilurile OO şi funcţional) care, fiind construit peste JVM şi complet interfaţabil cu Java (clasele Scala sunt utilizabile direct din Java şi invers) are şi o platformă stabilă şi biblioteci extrem de multe la dispoziţie.

Synpl ar trebui să fie scris în Java ca să poată fi integrat cu un plugin în JDeveloper (şi după aia în SqlDeveloper). Dar ... ce-ar fi să-l scriu în Scala? Deocamdată învăţ şi evaluez limbajul.

Pentru javişti (şi probabil şi pentru dotnetişti), o comparaţie interesantă.

Wednesday, June 27, 2007

WMon !

Clar am muult prea mult timp liber... sau aşa mi se pare.

Am terminat o primă versiune (foarte simplă şi probabil plină de buguri) a unui monitor de procesor şi memorie.

În sfârşit pot să văd şi pe Windows, oricând, cum sunt utilizate cele două nuclee din procesor. Concluzia? Sunt destul de utilizate, e bună ideea cu multicore. E adevărat, am testat wmon cu un nucleu dezactivat şi pentru browsing şi sarcini simple nu simt că-mi lipseşte juma' de CPU :)

Sunday, June 24, 2007

Monitorizare CPU dual core în Windows

De nevoie mi-am luat Core 2 Duo. Merge super.

Dar nu am pe Windows o unealtă de monitorizare ca lumea aşa cum este Gkrellm pe Linux. Pot să mă uit la Task Manager minimizat, dar nu văd utilizarea împărţită pe procesoare.

De ce mă interesează? Pe dual core sporul de performanţă este datorat utilizării ambelor core-uri (evident). Ca să le utilizeze, un program trebuie să fie multi-threaded. Vreau şi eu să-mi dau seama care sunt într-adevăr multi-threaded şi care nu. Pentru asta îmi trebuie o metodă de a vizualiza încărcarea fiecărui core.

Aşa că m-am apucat să caut un utilitar şi gratis şi bun de Windows care să-mi rezolve problema. N-am găsit.

Deci... hai să scriu eu. După ceva săpături, am dat de următoarele API-uri de monitorizare.

Pentru C/C++ folosind Win32 SDK:
  • NtQuerySystemInformation este o funcţie nedocumentată, care se poate folosi pentru multe lucruri, inclusiv pentru a obţine (per core/procesor) informaţii despre timpul folosit pentru diverse sarcini. Prelucrând această informaţie se poate determina încărcarea procesorului. Problema aceste funcţii este că este nedocumentată, ar putea să dispară în Vista, iar alternativa sugerată la monitorizarea timpilor (GetSystemTimes) nu ia în considerare fiecare procesor (prezintă un singur rezultat mediat pentru toate procesoarele).
  • PDH, adică Performance Data Helper, este un API cu care se pot monitoriza multe lucruri pe windows. Cică e mai portabil, am reuşit şi să-l utilizez destul de uşor (în esenţă se deschide o interogare, se adaugă contoare la interogare - de exemplu, utilizarea procesorului X, se execută interogarea, se citesc valorile, se închide interogarea; dacă se doreşte monitorizare se repetă paşii de execuţie şi citire pe perioada cerută). Singura problemă este specificarea contoarelor - adică nu e chiar banal-banal. Nu găsesc link ca lumea în MSDN, căutaţi după PDH şi Performance Data Helper.
  • O pagină interesantă în care mai sunt şi alte variante.
Pentru C# se poate folosi System.Diagnostics (exemplu complicat MSDN şi mai simplu, în VB.NET), dar parcă nu-mi vine să dau drumul la ditamai aplicaţie .NET ca monitor de procesor şi eventual memorie. Un instrument de măsură nu ar trebui să influenţeze valoarea măsurată, nu?

Acu să găsesc şi timp să scriu mica aplicaţie... :(

Tuesday, June 19, 2007

Discuţie interesantă despre "obfuscarea" byte-codului

Discuţia asta mi s-a părut foarte interesantă. Mă gândeam să folosesc obfuscare pentru synpl, dar până la urmă m-am hotărât să renunţ - vezi argumentele neamţului din discuţie.

Mă rog, problema este că în cazul synpl ideea este una foarte banală - oricine ar putea să se apuce. Deh, şi soluţia este una destul de banală. Totuşi cred că mă voi opri undeva la mijloc - fără obfuscare, dar şi fără cod public :D

Wednesday, June 6, 2007

Emacs "modern"

Aflai dintr-un comentariu pe reddit.com ca exista si variante civilizate de emacs (care ştiu Unicode şi au şi antialiasing).

Aşa că... http://www.emacswiki.org/cgi-bin/wiki/XftGnuEmacs