Programare

Cum să construiți biblioteca libpq

Posted by: narkoticro on: 8 iulie 2009

Acesta este articolul III din seria Cum să construiți biblioteca…. De data aceasta vom discuta despre libpq care este de fapt interfața C pentru serverul de baze de date PostgreSQL. Această înterfață este utilă acelora care vor să scrie aplicații pe arhitectură client/server cu suport pentru baze de date PostgreSQL.

Pregătire

Știu că e nasol să mă repet dar poate sunt unii dintre voi care nu au luat articolele la rând pentru că n-au avut nevoie de bibliotecile respective, așa că ….
Vom lucra pe o partiție Z ce conține toate codurile sursă, bibliotecile aflându-se în folderul Z:\Biblioteci. De ce facem acest lucru puteți afla făcând un click aici.
Mai întâi va trebui sa download-ati urmatoarele:

Dezarhivarea codului sursă

Arhiva conține folder-ul postgresql-8.3.7 cu toate fișierele aferente construirii bibliotecilor. Dezarhivați acest folder la calea care am stabilit-o mai sus (Z:\Biblioteci). Cel mai bine este să păstrați și arhiva pentru o restaurare rapidă a fișierelor în cazul unei configurări greșite înainte de compilare.

Build-ul

Spre deosebire de bibliotecile de până acum, libpq este foarte ușor de construit. Porniți Visual Studio. Porniți consola de la meniul Tools, Visual Studio Command Prompt. Navigați până la folder-ul Z:\Biblioteci\postgresql-8.3.7\src.
Acolo tastați: nmake /f win32.mak pentru versiunea Release și nmake /f win32.mak DEBUG=1 pentru versiunea Debug. Dacă ne uităm acum la folder-ul Z:\Biblioteci\postgresql-8.3.7\src\interfaces\libpq ar trebui să vedem folderele Debug și Release.
Din folderul Debug efectuați următoarele acțiuni:

  • copiați fișierele libpqd.dll, libpqddll.exp și libpqddll.lib în folderul Z:\Biblioteci\OUT\Debug\Dynamic, redenumind apoi libpqddll.exp în libpqd.exp și libpqddll.lib în libpqd.lib
  • copiați fișierul libpqd.lib în folderul Z:\Biblioteci\OUT\Debug\Static

Iar din folder-ul Release:

  • copiați fișierele libpq.dll, libpqdll.exp și libpqdll.lib în folderul Z:\Biblioteci\OUT\Release\Dynamic, redenumind apoi libpqdll.exp în libpq.exp și libpqdll.lib în libpq.lib
  • copiați fișierul libpq.lib în folderul Z:\Biblioteci\OUT\Release\Static
  • În cele din urmă copiați toate folder-ele și fișierele din Z:\Biblioteci\postgresql-8.3.7\src\include în Z:\Include\PostgreSQL.
    Sper că nu ați avut probleme în crearea acestei biblioteci. În caz că da… aștept întrebările voastre. Succes!

    Cum să construiți biblioteca zlib

    Posted by: narkoticro on: 8 iulie 2009

    Revin cu articolul II din seria Cum să construiți biblioteca…. Voi explica aici cum se construiește biblioteca zlib care este capabilă de comprimarea fără pierdere de informații a fișierelor de orice fel.

    Pregătire

    Ca și în primul articol, vom lucra pe o partiție Z ce conține toate codurile sursă, bibliotecile aflându-se în folderul Z:\Biblioteci.
    Mai întâi va trebui sa download-ati urmatoarele:

    Pentru instrucțiuni privind instalarea Perl vă rog să faceți click aici.

    Dezarhivarea codului sursă

    Arhiva conține folder-ul zlib-1.2.3 cu toate fișierele aferente construirii bibliotecilor. Dezarhivați acest folder la calea care am stabilit-o mai sus (Z:\Biblioteci). Cel mai bine este să păstrați și arhiva pentru o restaurare rapidă a fișierelor în cazul unei configurări greșite înainte de compilare.

    Build-ul

    În folder-ul Z:\Biblioteci\zlib-1.2.3\projects\visualc6 se găsește fișierul zlib.dsw care este un workspace pentru Visual Studio 6. Rulați-l cu Visual Studio. Dacă aveți o versiune mai recentă, fișierul va fi convertit într-o soluție de tip Visual C++. S-ar putea să apară o mică eroare la proiectul example din soluție, așa că ar fi mai bine să-l eliminați. Scopul nostru este de a construi biblioteca. Setați ca zlib proiect principal în Solution Explorer și executați câte un build pe configurațiile DLL Debug, DLL Release, LIB Debug, LIB Release. După acest pas, se poate observa apariția în folderul Z:\Biblioteci\zlib-1.2.3\projects\visualc6 a patru noi folder-e, și anume: Win32_DLL_Debug, Win32_DLL_Release, Win32_LIB_Debug, Win32_LIB_Release. La fel cum am făcut și la bibliotecile OpenSSL, copiem fișierele din aceste folder-e în folderele aferente ce se găsesc la calea Z:\Biblioteci\OUT.În final, copiem toate fișierele cu extensia .h din folderul Z:\Biblioteci\zlib-1.2.3 în folderul Z:\Include\zlib.
    Aceia dintre voi care sunteți mai curioși din fire, puteți găsi în folderul Z:\Biblioteci\zlib-1.2.3\contrib\vstudio\vc8 fișierele soluție pentru Visual Studio 2005. Nu am pomenit deloc de ele până acum în articol pentru că acea soluție are configurațiile create pentru a genera doar biblioteca dinamica, pentru cea statică fiind necesară crearea unei configurații diferite. Din acest fapt am considerat mai agreabilă soluția propusă mai sus. Acestea fiind spuse, am încheiat cu construirea bibliotecii zlib. Succes!

    Cum să construiți biblioteca OpenSSL

    Posted by: narkoticro on: 8 iulie 2009

    Acesta este primul articol dintr-o serie, la sfârșitul căreia vom putea să construim fără probleme orice biblioteca de care avem nevoie. Despre biblioteca OpenSSL puteți afla mai multe detalii accesând acest link.

    Pregătire

    De-a lungul timpului am observat că cel mai bine este să am toate codurile sursă pe o partiție / hard disk separat(ă), eventual criptat(ă) (Cryptic Disk pentru XP și Bitlocker pentru Vista / Windows 7). În acest sens, în toate articolele pe această temă voi face referință la o partiție Z unde vor fi stocate toate codurile sursă și la partiția de sistem C. Dacă nu aveți o partiție disponibilă pentru codurile sursă sau un hard disk pe care să-l puteți folosi, cel mai ușor mod este de a mapa un drive pe folder-ul rădăcină unde sunt sursele. În această partiție (Z:\) se va crea un folder Biblioteci în care vom depozita toate bibliotecile cu care vom lucra. Din start vreau să menționez că toate bibliotecile trbuiesc construite cu același compilator, pentru a evita problemele (care vor apărea cu siguranță) la link-area aplicațiilor dar și a altor biblioteci.

    Mai întâi va trebui sa download-ati urmatoarele:

    Instalarea Perl:

    Selectați toate componentele instalării iar calea de instalare este bine să rămână cea sugerată de installer, și anume C:\Perl. ATENȚIE: dacă totși vă decideți să instalați în altă parte distribuția Perl, calea de instalare NU trebuie să conțină spații și este de preferat să nu fie prea lungă pentru că nu se vor genera corect fișierele pentru crearea bibliotecilor.
    Acum mai trebuie făcut un mic artificiu la consola Visual Studio. În sensul acesta, la calea C:\Program Files\Microsoft Visual Studio 8\Common7\Tools (așa cum o am eu pentru Visual Studio 2005) se găsește fișieul vsvars32.bat. Deschideți acest fișier cu un editor text și la linia ce începe cu @set PATH= inserați C:\Perl\site\bin;C:\Perl\bin; (sau calea aferentă distribuției ActiveState Perl de pe sistemul dvs.). Salvați fișierul.

    Dezarhivarea codului sursă

    Arhiva conține folder-ul openssl-0.9.8k cu toate fișierele aferente construirii bibliotecilor. Dezarhivați acest folder la calea care am stabilit-o mai sus (Z:\Biblioteci). Cel mai bine este să păstrați și arhiva pentru o restaurare rapidă a fișierelor în cazul unei configurări greșite înainte de compilare.

    Build-ul

    Porniți Visual Studio. Porniți consola de la meniul Tools, Visual Studio Command Prompt. Navigați până la folder-ul Z:\Biblioteci\openssl-0.9.8k. Acolo tastați:
    1. pentru configurare: perl Configure VC-WIN32 --prefix="Z:/openssl"
    ATENȚIE: la prefix trebuie folosit / în loc de \.
    2. dacă aveți instalat Visual Studio Express tastați ms\do_ms.bat, iar pentru Visual Studio .NET/2005/2008 ms\do_masm.bat. În cazul în care ați respectat toate indicațiile mele până la momentul de față, nu trebuie să apară vreo eroare în consolă.
    3. build-ul efectiv: pentru dll-uri: nmake -f ms\ntdll.mak, pentru bibliotecă statică: nmake -f ms\nt.mak.

    Acum avem construite variantele dinamice și statice ale bibliotecilor OpenSSL, dar în varianta Release care este setată implicit. Vom avea nevoie și de variantele Debug. Pentru acestea trebuie să mai facem ceva artificii. Mai întâi vom muta din folderul Z:\Biblioteci\openssl-0.9.8k\out32 fișierele libeay32.lib și ssleay32.lib într-un folder Z:\Biblioteci\OUT\Release\Static. Din folderul Z:\Biblioteci\openssl-0.9.8k\out32dll mutăm fișierele: libeay32.dll, ssleay32.dll, libeay32.exp, ssleay32.exp, libeay32.lib și ssleay32.lib într-un folder Z:\Biblioteci\OUT\Release\Dynamic. Să nu uităm că ne mai trebuie și fișierele de include care se găsesc în folderul Z:\Biblioteci\openssl-0.9.8k\inc32\openssl. Copiem aceste fișiere într-un folder Z:\Include\OpenSSL.

    Să ne ocupăm acum de variantele Debug ale bibliotecilor. În folderul Z:\Biblioteci\openssl-0.9.8k\ms avem fișierul do_ms.bat (în cazul în care lucrați cu Visual Studio Express) sau fișierul do_masm.bat (în cazul în care folosiți Visual Studio .NET/2005/2008). În principiu e fișierul rulat la pasul 2 de la build. Încărcăm fișierul aferent într-un editor.

    do_ms.bat

    Modificăm

    perl util\mk1mf.pl no-asm VC-WIN32 >ms\nt.mak
    perl util\mk1mf.pl dll no-asm VC-WIN32 >ms\ntdll.mak
    perl util\mk1mf.pl no-asm VC-CE >ms\ce.mak
    perl util\mk1mf.pl dll no-asm VC-CE >ms\cedll.mak

    cu

    perl util\mk1mf.pl debug no-asm VC-WIN32 >ms\nt.mak
    perl util\mk1mf.pl debug dll no-asm VC-WIN32 >ms\ntdll.mak
    perl util\mk1mf.pl debug no-asm VC-CE >ms\ce.mak
    perl util\mk1mf.pl debug dll no-asm VC-CE >ms\cedll.mak

    do_masm.bat

    Modificăm

    perl util\mk1mf.pl VC-WIN32 >ms\nt.mak
    perl util\mk1mf.pl dll VC-WIN32 >ms\ntdll.mak

    cu

    perl util\mk1mf.pl debug VC-WIN32 >ms\nt.mak
    perl util\mk1mf.pl debug dll VC-WIN32 >ms\ntdll.mak

    După această modificare trebuie refăcuți pașii 2 și 3 de la Build. Cand procedura de creare a luat sfârșit, au apărut folderele Z:\Biblioteci\openssl-0.9.8k\out32.dbg și Z:\Biblioteci\openssl-0.9.8k\out32dll.dbg. Din primul folder se mută fișierele libeay32.lib și ssleay32.lib într-un folder Z:\Biblioteci\OUT\Debug\Static, iar din al doilea, se mută fișierele libeay32.dll, ssleay32.dll, libeay32.exp, ssleay32.exp, libeay32.lib și ssleay32.lib într-un folder Z:\Biblioteci\OUT\Debug\Dynamic.

    Ca ultim pas, curățăm folderele Z:\Biblioteci\openssl-0.9.8k\tmp32, Z:\Biblioteci\openssl-0.9.8k\tmp32.dbg, Z:\Biblioteci\openssl-0.9.8k\tmp32dll și Z:\Biblioteci\openssl-0.9.8k\tmp32dll.dbg. Cam asta a fost tot pentru bibliotecile OpenSSL. Aștept sugestii și întrebări. Succes!

    Ce baze de date folosiţi ?

    Posted by: narkoticro on: 7 iunie 2009

    Link-uri utile pentru programatorii începători

    Posted by: narkoticro on: 15 mai 2009

    Mai jos voi pune câteva link-uri care vor fi cu siguranţă de ajutor pentru programatorii începători de C++/MFC şi C#/.NET.

    Trucuri pentru ferestre de dialog
    Trucuri pentru aplicaţii dialog based
    Sfaturi pentru aplicaţii .NET
    Sfaturi pentru aplicaţii WIN32
    Sfaturi pentru lucrul cu DLL-uri
    Sfaturi pentru lucrul cu tool-tips/baloon tool-tips
    Trucuri C++
    Trucuri pentru printarea din interiorul aplicaţiilor
    Un mic Begginer’s Guide

    Dacă aveţi intrebări sau alte sfaturi/trucuri vă rog să postati relativ la acest articol.

    Visual Studio 2010 – First Look

    Posted by: narkoticro on: 5 mai 2009

    De curând am găsit pe situl Microsoft informaţii despre Visual Studio 2010, nume de cod “Rosario”. Primul lucru care mi-a atras atenţia a fost interfaţa grafică, puţin schimbată, asemănătoare acum cu cea a Expression Studio. Pare mai intuitivă şi mai degajată decât în versiunea precedenta, fapt care nu poate decât să mă bucure.

    Împreună cu VS 2010 va fi lansată şi versiunea 4.0 a platformei .NET, care va fi cel mai probabil baza de temelie a viitorului sistem de operare după Windows 7.

    Din câte au lăsat cei de la Microsoft să se înţeleagă, s-a îmbunătăţit lucrul cu bazele de date, adăugându-se suport pentru schemele IBM DB2 şi Oracle.

    Acum mai rămâne doar de așteptat să încerc varianta trial… atunci când va apărea și să văd dacă merită un upgrade.

    Windows 7 RC1

    Posted by: narkoticro on: 5 mai 2009

    Astăzi Microsoft a dat undă verde la download pentru Windows 7 RC1 (build 7100). Din câte am înţeles, această versiune va putea fi testată timp de un an de către utilizatorii casnici.

    Evident l-am download-at şi eu şi l-am instalat pe sistemul de acasă. Primele impresii sunt bune. Se mişcă foarte bine pe un Celeron D 330 @ 2.66 GHz cu 1 Gb ram. Driverele de XP s-au instalat fără probleme având puţin de furcă doar cu placa de sunet care n-a vrut iniţial să funcţioneze în mod 5.1, dar după jumătate de oră de “tweak-uri” am reuşit să-i dau de cap.

    Sunt curios cum va funcţiona Visual Studio 2008 SP1 pe el şi cât de stabil va fi pentru că sub XP mai erau momente când IDE-ul “crăpa” instantaneu în urma lucrului cu editorul de resurse.

    Dacă mi-aţi luat-o înainte cu testarea lui Windows 7 vă rog să lăsaţi un comentariu.

    Hello world!

    Posted by: narkoticro on: 4 mai 2009

    Bine aţi venit! Acest blog se adresează programatorilor de sistem cât şi programatorilor web. În articolele postate aici se vor găsi resurse (cod sursă, documentaţii, tutoriale) cât şi discuţii despre diferite probleme întâlnite zilnic de programatori. Pe cât posibil voi încerca să public şi articole despre viitoarele tendinţe în programare.

    Follow

    Get every new post delivered to your Inbox.