streda 21. januára 2009

Ako spočítať SLOC

Pri diskusii o veľkosti softwarového projektu, pri odhadovaní ceny projektu alebo nebodaj pri porovnávaní jednotlivých projektov je nutné používať jednotnú metodiku. In-house riešenia založené na

find . -name *.java | xargs wc -l | awk '{$c=$c+$1}END{print $c}'

síce čo-to napovedia, ale veľkí chlapci radšej siahnu po niečom trošku dômyselnejšom. Zo súčtu treba totiž odfiltrovať riadky s komentármi, prázdne riadky, includy, proste všetok balast. Tieto sú v rôznych jazykoch rôzne definované, teda pre každý jazyk potrebujeme spraviť samostatný filter.

Pri príprave jednej prezentácie som potreboval porovnať dva pomerne veľké projekty napísané v mixe rúznych jazykov (java, c, c++, python, shell, awk, ...).

Opensourcový free projekt SLOCCount mi poskytol množstvo informácií v priebehu pár sekúnd. Pozná 27 jazykov a ich mutácií (.C/.cpp/.cxx/.cc identifikuje ako c++, .php/.php[3456]/.inc ako php, ...) a je dostupný ako céčkový zdroják alebo ako rpm pre RedHat Linux 9 na Inteli. Dokonca počíta aj cenu diela podla COCOMO metodiky.

Jediným obmedzením použitia je nutnosť pri výsledkoch uviesť "generated using David A. Wheeler's 'SLOCCount'".

[SLOC | SLOCCount | COCOMO]

piatok 2. januára 2009

Pidgin a Google Talk

Google Talk v rámci gmailového webového klienta je fajn, ale normálny klient má tiež niečo do seba.

S Pidginom - multiplatformným (Windows, MacOSX, Linux s balíčkami pre RedHat Enterprise Linux, CentOS a Fedora) multiprotokolovým (AIM, Bonjour, Gadu-Gadu, Google Talk, Groupwise, ICQ, IRC, MSN, MySpaceIM, QQ, SILC, SIMPLE, Sametime, XMPP, Yahoo!, Zephyr) klientom mi to na Fedora 10 ale nejako nechcelo ísť. Odmietal sa pripojiť na gtalk server. Predpokladám že preto, že mám v Gmaile nastavené pripojenie len cez SSL a štandardné nastavenie Pidginu neobsahuje správny port.

Neskôr som našiel popis ako nastaviť Pidgin pre komunikáciu s Google Talk serverom:
  • prvý tab s nastaveniami je jednoduchý, stačí vyplniť protokol Google Talk a potom už len login a heslo
  • v druhom tabe treba nastaviť:
    • Force old (port 5223) SSL: Checked
    • Allow plaintext auth over unencrypted streams: Un-Checked
    • Connect Port: 443
    • Connect Server: talk.google.com
    • Proxy type: Use Global Proxy Settings
a všetko by malo začalo fungovať.