This blog is NOFOLLOW Free!






Archive for the 'Linux' Category

Determinarea corecta a MIME Type in PHP 5

Tuesday, August 19th, 2008

Din start mentionez ca acest mic tutorial este dedicat fisierelor ce au ca directie un host *nix, iar functionalitatea implicita este satisfacuta pentru Ubuntu/Debian. Se poate aplica cu modificarile de rigoare si sub alte distributii. O sa il structurez pe pasi pentru o aplicare mai usoara. Nu am incercat pentru PHP 4, desi majoritatea pasilor s-ar putea sa fie valabili.

Introducere

Determinarea MIME Type-ului corect pentru un fisier este o problema esentiala. Nu o sa explic si de ce … daca nu stii de ce, atunci tutorialul acesta iti depaseste nivelul cunostintelor. Atunci cand se face upload la un fisier printr-un form, sau se doreste import-ul unui fisier, se poate intampla ca extensia fisierului sa nu reflecte realitatea sau ca aceasta sa lipseasca cu desavarsire, fapt ce va duce la varii probleme. Array-ul $_FILES ce ia valori in functie de continutul unui form ce are specificat in mod explicit enctype=”multipart/form-data” se prea poate sa nu contina valoarea corecta a mime type-ului pentru $_FILES[’file_input_name’][’type’] deoarece detectia mime-ului cade pe spinarea browserului iar in majoritatea cazurilor acesta se foloseste de extensia fisierului deci va esua in cazurile descrise mai sus. Este nevoie ca informatia sa fie interpretata citind headerele fisierului si folosindu-ne de mime magic.

PECL si fileinfo

Nu o sa imi pierd timpul sa explic ce e PECL. Google este de mare ajutor. Din pacate in repository-urile Ubuntu/Debian, extensia fileinfo nu este disponibila in mod implicit. Din fericire este disponibila prin intermediul PECL. Acum incepe treaba sa fie paroasa.

In primul rand, este nevoie de una bucata compilator. Exista un pachet ce le face pe toate, deci:

sudo apt-get install build-essential

Bun. Avem compilator, avem PECL (presupun, daca n-ai HTTP server si PHP - citesti degeaba). Pentru build-ul fileinfo mai este nevoie de pachete de development, deci:

sudo apt-get install libmagic-dev php5-dev

ce va instala headerele de development pentru libmagic, phpize si alte chestii. Faceti acum, sau regretati mai tarziu. Acum este timpul sa compilam extensia fileinfo folosind pecl:

sudo pecl install fileinfo

Daca maraie vreo eroare la configure, instalati pachetul de development aferent (pentru cei somnorosi, are sufixul -dev). Daca maraie vreo eroare la compile, imi pare rau, nu va pot ajuta. Pe masina de devel a functionat fara probleme. Daca nu maraie nici o eroare, ar trebui sa indice faptul ca extensia a fost instalata cu succes. Ar trebui sa fie ceva de genul:

Build process completed successfully
Installing ‘/usr/lib/php5/20060613+lfs/fileinfo.so’
install ok: channel://pear.php.net/Fileinfo-1.0.4

Daca ati ajuns pana aici, mai este putin si usor. Extensiile instalate prin intermediul PECL nu sunt incarcate in mod automat, spre deosebire de cele instalate din repository-urile Ubuntu/Debian folosind apt-get sau alternativa (cu mici exceptii, spre exemplu mcrypt.so trebuie incarcat in mod explicit - nenea maintainer a fost cascat). Pentru a mentine ideea si spiritul Debian, incarcarea modulului se va face folosind directorul de fisiere alternative de configurare pentru PHP. Tastati urmatoarele chestii intr-un terminal (da stiu, copy-paste e mai comod):

cd /etc/php5/conf.d/; sudo touch fileinfo.ini; sudo nano fileinfo.ini

Bagati urmatoarea linie in acel fisier:

extension=fileinfo.so

dupa care salvati cu Ctrl+O. Inchideti editorul text folosind Ctrl+X. Nu, nu sunt vim maniac, sa nu aud de el. Acum este timpul sa se dea restart la HTTP server pentru a incarca noua configuratie. Ar trebui sa fie valabil si pentru cei cu GCI/FastCGI (eventual alt HTTP server gen lighttpd), desi subsemnatul e de ala cu Apache 2+PHP5 handler, deci in cazul meu (si al majoritatii):

sudo /etc/init.d/apache2  reload

ce va duce la un graceful restart (aka restart fara downtime) urmat de incarcarea noilor fisiere de configurare. Daca totul e ok, noul modul de PHP ar trebui sa fie incarcat. phpinfo(); ar trebui sa indice acest fapt, atat in lista de fisiere de configurare alternative (cele din /etc/php5/conf.d) cat si prin faptul ca ar trebui sa indice pe undeva in mod explicit faptul ca fileinfo este incarcata.

Utilizarea fileinfo pentru a afla MIME Type

Acum sa trecem la lucruri grele. fileinfo contine niste functii smechere asemanatoare cu fopen. Pentru ubergeeks exista modul orientat obiect de lucru cu ele (php.net/finfo_open explica), dar subsemnatul se multumeste cu trei apeluri procedurale din moment ce nu exista nici un avantaj real in cazul de fata pentru a defini un obiect si a-l distruge dupa ce se afla mime-ul. Pentru cei dornici sa isi implementeze o clasa proprie … este alta poveste. Eu mi-am facut o functie custom ce am inclus-o in API-ul central ce primeste ca parametru calea fisierului si imi returneaza mime-ul in caz de succes sau un cod de eroare pentru debug in caz de esuare. Miezul problemei sta in:

$finfo=finfo_open(FILEINFO_MIME, "/usr/share/misc/magic");
if(!$finfo)
    die("Can’t open the fileinfo database.");
$mime=finfo_file($finfo, $fileName);
finfo_close($finfo);

Si cam atat. Succes si spor la treaba.

Blacklist pentru module sub Ubuntu

Monday, June 30th, 2008

Pentru ca sunt cascat si uit procedura, am hotarat sa scap vreo cateva linii aici. Povestea sta cam asa: solutia cea mai simpla pentru problemele mele maricele sub Ubuntu atunci cand folosesc notebook-ul este blacklist-ul. De ce? Pentru ca oricat as configura la ALSA, driverul tot cretin este si nu imi ia ca default dupa fiecare reboot ce placa de sunet vreau EU. Se prea poate sa ma trezesc cu ID-urile inversate. Asa ca pun blacklist pe modulul placii onboard. Cealalta problema tine de faptul ca devii Ubuntu au comis o faza de cartea rebuturilor in ceea ce priveste interfata mea de retea ce este o Realtek. In loc sa incarce modulul corect, adica r8168 (ce nici macar nu exista in pachet, desi nenii de la Realtek au sursele pe FTP), sa zicem ca prostul imi incarca r8169 - ce functioneaza doar cand vrea pll nu cand vrea plm, iar chestia aceasta ma irita. Teribil. Deci iar intervine ideea de blacklist.

echo “blacklist mod_name” >> /etc/modprobe.d/blacklist
sudo update-initramfs -u

Voila … sintaxa pentru blacklisting …

The Website is down

Thursday, June 26th, 2008

O chestie criminala cu adresa la suportul tehnic si cei ce il cer. Enjoy.


» Powered by XHTML Video Embed

http://www.thewebsiteisdown.com/

FreeBSD

Friday, February 29th, 2008

Vin imediat 3 saptamani de cand am ras Linux de pe notebook si am pus un FreeBSD in dual boot cu XP. Motivul este: majoritatea distributiilor care stateau pe langa XP Home au avut prostul obicei sa se muste cu hardware-ul. Ubuntu imi placea, dar crapa. De fapt asta este motivul pentru care l-am schimbat. De fapt crapa orice din familia Debian. openSUSE e prea puturos si package managerul (YaST2) e dezastru in linie de comanda. Nu suport managerele grafice … imi ia prea mult timp pana gasesc si instalez un pachet pe care il vreau. In rest, de RPM nu prea mai vreau sa aud din motive ce tin de trecut. Dintr-un motiv pe care inca nu am reusit sa il explic, Arch nu ma atrage (inca?). Gentoo nu voiam sa pun pentru ca sincer nu am timp de RTFM prea gros pentru a instala un sistem. Deci mi-am pus FreeBSD. Nu ca ar fi si asta floare la ureche la instalare, mai ales pe un HDD plin, dar m-a ajutat tutorialul lui steelheart, si pe alocuri cel al lui skaarj (acelasi thread, pagina 2) - iar pe alocuri am improvizat, nu pentru ca am vrut sa tai colturi in procesul de instalare, ci pentru ca anumite chestii nu au mers dupa cum zicea pe foaie.

In fine, nu ma apuc sa detaliez chestii. Important este ca din punctul de vedere al resurselor ocupate sta foarte bine (si zic asta de bine, nu de rau), este rapid, n-am avut probleme nici cu stabilitatea. Mi-am pus si Compiz-Fusion (evident, dooh) pentru ca am mai declarat pe undeva urmatoarele: dupa perioada OS X nu am mai putut sa privesc un desktop non-3D cu aceeasi ochi. Desi este cel mai bun sistem pentru servere (daca maine ar fi sa imi trec file serverul de pe Ubuntu Server pe FreeBSD - as face-o, dar imi trebuie niste timp pe care nu il am) sa zicem ca face o figura frumoasa si pe desktop. Ce-i drept, are lipsurile lui, despre care cred ca o sa ma apuc sa scriu la un moment dat.

Din punctul de vedere al hardware-ului, singura chestie care imi lipseste enorm este un driver care sa imi suporte placa de sunet care o am ca add-on, si anume o Audigy 2 ZS Notebook. Ce-i drept, n-am incercat Open Sound System care vine cu propriile module. Este o idee. Driverul snd_emu10kx care suporta Audigy si Audigy 2 nu vrea sa stie de placa mea, ba mai mult, cand l-am instalat si am uitat sa il scot din lista de boot (s-a pus automat acolo), FreeBSD a refuzat sa mai boot-eze pana nu am eliminat fizic placa din sistem. Acu pe partea de multumiri din punctul de vedere al hardware-ului este faptul ca se pupa bine cu el, ba mai mult, a rezolvat o problema pe care nu au reusit sa o rezolve nici driverele de sub Windows si nici cele de sub Linux: placa de retea - pe care o suspectez de o oarecare defectiune care se manifesta la 100Mbps. Chiar am facut teste de transfer prin SFTP, MikeS este martor. I-a picat si lui fata la testul de doua fisiere peste 1GB - nu a cazut nici unul sub 5MB/s, media a fost undeva de 11MB/s. Culmea, la 1Gbps prin conexiune directa cu serverul merge “flawless” sub Windows si Linux. Am umplut vreo 3 threaduri pe varii forumuri de specialitate in cautarea unei solutii. N-am gasit nici in prezent. Sub Windows/Linux tot ca un cur imi merge reteaua daca nu o pun pe 10Mbps - iar la 10Mbps ma apuca Sfantul Asteapta pana iau ceva de pe severul propriu care este in acelasi LAN - limitat la 100Mbps de router, un ASUS WL500g Premium. Cica in ultimele lui ore de viata, Linuxul in linie de comanda cu Midnight Commander si serverul montat prin SSHFS nu a mai cazut la trasfer (si am facut un backup masiv, vreo 30j de gigi de date). Dar este singura situatie in care a functionat corect … in rest a fost praf.

Oricum, articolul care mi-a dat multe idei si m-a facut sa imi pun FreeBSD in defavoarea Linux a fost acesta:

http://www.over-yonder.net/%7Efullermd/rants/bsd4linux/bsd4linux1.php

Iar daca ar fi sa apreciez ceva la FreeBSD este faptul ca fisierele de configurate tipice sunt foarte logice ca denumite, ca pozitionare in file system, precum si inca alte cateva chestii. Deasemenea ma bucur ca nu exista haosul din lipsa de organizare a Linuxului in ceea ce priveste anumite chestii dat fiind faptul ca un standard este greu de impus cand fiecare incearca sa traga foc la oala lui. Inchei …

Pidgin file transfer cu Yahoo! sub Ubuntu

Tuesday, February 26th, 2008

Una din problemele de care se plang multi din utilizatorii de Yahoo! Messenger (si nu ma refer la acei kiddies care in conjuga pe sh de zici ca discuta despre shell-uri UNIX) este faza cu transferul care pute. De trimis puteam sa trimit, dar cam atat. Azi am incercat sa ii trimit lista mea de repositories (sources.list) lui neo, dar praf … nu voia. Deci am pus patch-ul pe care intentionam sa il pun, dar uitasem complet de el. De data aceasta meritul ii revine lui wonder care a avut buna vointa sa acorde niste timp patchuirii surselor si punerea la download a pachetelor care rezolva problema.

Sursa: http://wonder.rodp.net/2008/02/pidgin.html

KDE 4

Sunday, January 27th, 2008

A venit momentul sa scriu si cateva cuvinte despre noul si mult asteptatul KDE 4. Sub OS X nu l-am incercat din lipsa de material de teste pentru moment, si oricum, mi-am cam tras concluziile.

KDE 4, asa cum a fost promis, ruleaza nativ sub Linux, Windows, OS X, mai pe scurt, sub orice platforma sub care este suportat Qt-ul celor de la Trolltech. Inainte sa apara eram destul de entuziasmat de vestea aparitiei KDE 4. Tin minte ca din intamplare citisem despre planurile ce tin de KDE 4 inca de acum 2 ani. Eram entuziasmat pentru faptul ca la vremea cand asteptam KDE 4, inca eram user de KDE 3 sub Linux. Faptul ca a fost promis nativ sub Windows/OS X nu a facut decat sa imi creasca entuziasmul.

O mica notificare ar fi faptul ca sub OS X rula KDE 3 si o buna parte a aplicatiilor ce tin de acest desktop environment, dar modul de rulare nu era nativ ci rula sub implementarea Apple a XFree86. Chiar am fost curios sa vad cum arata o mana de aplicatii KDE sub OS X si au iesit momente horror … aratau ca nuca in perete si faptul ca nu rulau nativ era destul de nasol la consistenta. Acum cica s-a rezolvat problema … astept sa vad cum arata treaba in teren.

Sub Windows lucrurile stateau putin diferit datorita anumitor restrictii ce tin de licentierea Qt 3. Da, KDE 4 respecta numerotarea versiunii majore de Qt sub care au fost dezvoltate … KDE 3 a fost dezvoltat sub Qt 3, KDE 4 sub Qt4. Nimic nou sub Soare. Odata ce problemele s-au rezolvat incepand cu v4 a Qt, acest fapt a permis portarea aplicatiilor si sub Windows.

Alaltaseara mi-am pus KDE 4 sub Windows. Installer-ul desi e grafic, cel mai probabil va pune probleme celor nefamiliarizati cu lumea *nix. Mi-e mi-a adus a installer de cygwin, deci concluzia rapida a fost ca baietii de la KDE nu au dorit sa reinventeze roata. Setup-ul a inceput in mod “uzual” - downloadarea pachetelor necesare din repository (uzual - cum ziceam mai sus, precum cygwin). Instalarea nu a decurs fara probleme. La anumite pachete setupul (v0.8.5 - cea mai recenta) claca fara drept de apel. Spre exemplu am dat sa instaleze toate tool-urile de development. Desi rar am avut nevoie de CVS cand de regula gaseam sursele gata arhivate, am dat sa instaleze si TortoiseCVS. Asta a fost OK. A crapat la instalarea TortoiseSVN pe care il aveam instalat deja din moment ce sunt SVN user, ce-i drept aveam o versiune mai veche. Clacatul se traduce prin 100% load si apasarea butonului de ‘Cancel’ se traducea prin proces care continua sa ruleze in background, dar nu facea nimic. Multumesc cerului ca setup-ul nu stie multi-core, deci sistemul nu a fost afectat substantial la viteza, sistemul mutandu-si chestiile pe core-ul celalalt al procesorului. Ar mai fi si alte pachete la care am intampinat probleme, si culmea, pachetele respective nu erau instalate anterior precum TortoiseSVN.

Utilizarea este de-a dreptul seaca. In primul rand trebuie rulate in terminal doua comenzi de configurare … nu am nimic impotriva, dar in documentatie caile erau indicate complet aiurea. Le-am dibut si am rezolvat. A urmat rularea aplicatiilor propriu zise. Practic installer-ul pune executabilele si dll-urile in directorul bin care se gaseste in directorul de instalare al KDE 4. Cum ziceam la un moment dat, poate fi putin ciudat pentru un user nefamiliarizat cu *nix. Pentru mine a fost OK, atata ca in bin este un haos de nedescris. Am dibuit niste chestii cunoscute, le-am rulat, a fost relativ OK. Prima executie a fost mai dureroasa in sensul ca tre sa isi faca in prealabil o chestie care ruleaza in background, dupa care nu mai sunt probleme. Aplicatiile se integreaza bine ca aspect printre celelalte. Inafara de cateva butoane si alte chestii tipice KDE, aplicatiile arata bine. M-am jucat cateva jocuri ce vin in pachet, am editat niste fisiere text folosind Kate si Kwrite, m-am dat pe net cu Konqueror. Desi am fost incantat, inca nu am vreun gand de inlocuire a unor aplicatii ce le folosesc deja sub Windows, exemplu Windows Explorer-ul pimpuit sa il dau la o parte pentru Konqueror din motive de varii instabilitati, feature-uri care nu functioneaza sau nu functioneaza corect, etc. Poate cel putin nu pentru moment. Mai este de lucru … atat la stabilitate cat si la uzabilitate. Oricum, KDE 4 sub Windows inseamna o mana de aplicatii, si nicidecum un full desktop environment, ceea ce lasa un gust semi-amar in gura.

Sub Linux totul a fost destul de scurt … dupa aproximativ 15 secunde de gugălit am gasit un repository neoficial in care sa fie KDE 4 pentru ubuntu. L-am instalat usor pentru ca package managementul si-a facut treaba. Mici probleme au fost la anumite aplicatii specifice, desi in general treaba a mers OK. Desktopul plasma arata bine, pare o revolutie peste KDE 3, desi mie inca nu mi-a sters impresia ca Vista Sidebar cu ale lui gadgets s-au mutat si s-au intins pe tot desktop-ul. La un moment dat a inceput chiar sa ma enerveze acest aspect. Interfata este mult mai bine lucrata din punctul de vedere al consistentei fata de KDE 3, multe chestii seamana, dar la anumite optiuni de configurare nu s-au eliminat dialogurile interminabile si putin uzabile. Am incercat sa schimb stilul ferestrelor de pe Oxygen (cel implicit si fresh pentru KDE 4) pe alte stiluri tipice KDE 3, dar a dus la scaderea caliatii vizuale. Oricum, la nivel de interfata, vizual vorbind, KDE 4 este peste KDE 3, desi inca nu s-au reparat unele din pacatele trecutului. Ce am apreciat a fost faptul ca s-a implementat meniul tabular care are motor de cautare pe care il stiu de sub openSUSE.

Aplicatii nu am prea testat pentru ca sincer nu ma interesau aplicatiile in sine, ci desktop environment-ul. Oricum, aplicatiile tipice KDE le rulez cu succes si sub Gnome, si chiar daca arata putin ciudat, tot raman in sfera acceptabilului. Desi de aproximativ 4 luni am trecut de la KDE 3 la Gnome, sincer sa fiu, nu m-as mai intoarce nici pentru KDE 4. In plus, desi initial erau o mana de chestii care in KDE le gaseam imediat si sub Gnome sapam dupa ele, cu timpul situatia s-a inversat. Exact aceasta a fost senzatia cand am trecut acum din sesiunea de Gnome in cea de KDE 4. Au inceput imediat sa imi lipseasca chestii, sa ma enerveze alte chestii, sa imi lipseasca Compiz-Fusion (da, dupa un an si ceva de OS X - am ramas fan al desktop-urilor 3D).

Pe total KDE 4 a fost pentru mine o semi-dezamagire, sau poate ca asteptarile mi-au fost prea mari. Vom vedea ce vor aduce versiunile mai noi, pentru ca desi e release, mie inca nu imi sterge impresia de preview release.

Sun Microsystems a anuntat cumpararea MySQL

Wednesday, January 16th, 2008

O stire care personal m-a luat prin surprindere: cumpararea MySQL de catre Sun pentru nu mai putin de 1 miliard de dolari, adica 800 milioane in cash, iar restul de 200 milioane urmand a intra in buzunar prin actiuni. Tranzactia care este una de mare anvergura urmeaza a se finaliza undeva in jurul Q3/Q4 al anului fiscal 2008.

Chiar si Google, YouTube, Yahoo sau Wikipedia, FaceBook, Nokia folosesc platforma MySQL. Este nu doar o platforma open source, ci si foarte buna, stabila, usor de instalat, administat sau upgradat ulterior. Sun Microsystems vrea sa transforme solutia MySQL intr-o plartforma pentru companii.

Serverul de baze de date MySQL produs de compania MySQL ocupa aproximativ 80% din piata serverelor Web, un fapt bine cunoscut de altfel. Sun se asteapta sa dea lovitura cumparand MySQL prin integrarea serverului de baze de date in solutiile oferite de acestia, marind in acelasi timp canalele de distributie MySQL.

Avand in vedere cota de piata MySQL, se poate spune cu usurinta faptul ca aceasta tranzactie va schimba fata Internetului prin prisma impactului pe care il va avea aceasta tranzactie.

“Cumparam astazi o solutie pentru baze de date care a fost aleasa de clientii din toata lumea cu o viteza extraordinara”, a spus Schwartz. “Titanii web-ului folosesc toti MySQL, banci, companii auto, toate firmele din Fortune 500 folosesc MySQL”, a adaugat el.

Chiar nu mai am nimic de adaugat … speechless …

Sursa 1 Sursa 2 - oficiale

Sursa 3 - neoficiala

Cea mai urata companie IT

Sunday, January 6th, 2008

Sa fie Microsoft? Sa fie Apple? NU. Raspunsul l-am gasit fara sa vreau in timp ce imi savuram ceaiul de la ora 4 (si nu pentru ca as fi mare bautor de ceai, ci pentru ca sunt cobza) … in timp ce mana libera baga scroalle pe Linux Soft. Desi sunt un sustinator al acestui brand (minus placi video si recenta mea mobo care e o abit), sa zicem ca am fost luat prin surprindere cand am aflat ca aceasta companie este AsusTek pe care majoritatea o stim sub numele de ASUS. N-a pacatuit prea mult … doar s-a bagat pe o nisa cu preturi agresive, a evitat Microsoft, si a iesit Eee PC. Restul incepe sa devina istorie.

Sursa

Rularea aplicatiilor in mod protejat accesului fizic

Tuesday, December 11th, 2007

Stiu … stiu … nu am mai scris de o tona de vreme. De cand am schimbat jobul, in sensul ca acum sunt programator … sa zicem ca am avut mult mai putin timp la dispozitie in general, deci implicit a trebuit sa tai de unde se poate … din pacate si din actiunea de a posta pe blog. Cred ca am gasit balaria aia de directie spre care ma indreptam, deci o sa mai scot din mine niste balarii tehnice. (more…)