Archive for the Category ◊ programming ◊

Romanian/Bucharest Linux User Groups. Programmers day.
Sunday, September 13th, 2009 | Author: AlexJ

După ce am tot găsit multe site-uri ale LUG-urilor din tot felul de orașe din lume, am fost curios dacă există un Linux User Group pe plan local. Așa că am dat un mic search pe Google și am găsit că există Bucharest LUG [1]. Am intrat pe site-ul lor, am văzut că au și un canal de IRC ( #blug.ro pe FreeNode [2]) și am început să vorbesc cu oamenii de acolo.  În acest weekend am fost și la una din întâlnirile lor care a fost destul de interesantă (am aflat mai multe despre o distribuție numită ArchLinux și despre un soft de telefonie IP făcut în România, Yate).

Am mai căutat puțin și am găsit și o listă [3] de LUG-uri și Comunități Open Source din România (ROSEdu is one of them ;) ).

În alte știri, azi s-a sărbătorit Ziua Programatorului [4]. Ziua a fost declarată oficial sărbătoare în Rusia [5].

[1] http://blug.ro

[2] irc://irc.freenode.net/#blug.ro

[3] http://wiki.lug.ro/mediawiki/index.php/Comunit%C4%83%C5%A3i_Linux_din_Rom%C3%A2nia

[4] http://www.programmerday.info/

[5] https://news.slashdot.org/story/09/09/12/1548245/Russias-New-Official-Holiday-mdash-Program

Diacritice(UTF-8) & JDBC/mySQL/HTML
Tuesday, June 16th, 2009 | Author: AlexJ

Ce am dorit să fac: un program în Java ce capturează conversații de pe IRC și le stochează într-o bază de date mySQL; din acea bază de date se ia prin PHP și se afișează pe o pagină HTML. Deși pare destul de mult de făcut, necesită puțin cod, dar multă atenție la interconectarea elementlor: programul Java, conectorul dintre Java-mySQL (JDBC), baza de date mySQL și script-ul PHP.

Am creat ‘topologoia’ necesară și programul mergea ok. Dar am descoperit rapid o problemă: pagina web (HTML+PHP) nu afișa diacritice. Și am început să caut prin fiecare element să văd unde era problema ( oricare din componente putea să ducă la problema aceasta).

Am început prin modificarea paginii PHP/HTML și forțarea ca browserul să citeacă caracterele în format UTF-8. Codul nu depinde de PHP (am presupus că el transmite corect din baza de date în HTML) ci de headerul HTML.

<head>  <meta http-equiv=”Content-Type” content=”text/html; charset=utf-8″ />   [...]  </head>

Al doilea test a fost făcut pe mySQL. Implicit, baza de date codează folosind Latin.  Și tabela unde se făcea scrierea trebuia trecută pe UTF.

CREATE TABLE `chats` ( [..] ) DEFAULT CHARSET=utf8;

Cum programul Java imprima corect la stdout diacriticile, problema trebuia să fie la JDBC. Suportul pentru UTF a fost adăugat în JDBC, dar trebuia specificat la conectarea cu baza de date. Acest lucru se face pasând un parametru la  URL-ul bazei de date.

jdbc:mysql://my_server/my_data_base?unicode=true&characterEncoding=utf-8

Smart Variable Swapping
Sunday, May 31st, 2009 | Author: AlexJ

Mi-am adus aminte de un mic truc pe care îl foloseam în liceu şi dintr-un motiv necunoscut nu l-am mai folosit de mult, până la un laborator de Sisteme de Operare: schimbarea mai eficientă a unei variabile.

Metoda clasică este folosirea unei variabile auxilitare în care se păstrează una din variabile. A două metodă este folosirea XOR (sau exclusiv).

var1 = var1 XOR var2
var2  =var1 XOR var2
var1 = var1 XOR var2

Partea cea mai bună este că nu este dependentă de tipul de date şi teoretic s-ar putea schimba orice. Astfel, se poate crea uşor şi un macro pentru uz general. Folosind ultimul best practice învăţat despre macro-uri ( encapsularea codului funcţiei într-un do while(0) ), codul în C ar arăta aşa:

#define swap(a, b)       \
do                                   \
{                                      \
(a) = (a) ^ (b);               \
(b) = (b) ^ (a);              \
(a) = (a) ^ (b);              \
}while(0)                     \