limba romana   english language

"Cu capãtul arcurilor, trecînd,
rãzboinicii
mîngîie roua..."

Yosa Buson (1715-1783)

01 februarie 2011 - Dan-Marius Sabau
Categoria: programare; web design;

Nu am prea apucat să notez pe aici chestii legate de ceea ce fac, dar este momentul să încep să fac asta în perspectiva lansării noului domeniu pe care voi începe în curînd să scriu mai multe despre webdesign, software code și seo.

Pentru început trebuie să menționez că nu prea folosesc Opera. Pînă acum nu am folosit-o decît cel mult ocazional, nefiind unul dintre navigatoarele mele obișnuite. Recent am început să am de-a face cu el pentru că unul dintre clienți îl folosește în mod constant (e vorba de o întreagă echipă), așa că am avut deosebita "plăcere" să observ că imaginile din pagina pe care o făcusem nu erau afișate cum trebuie. Dacă în Firefox, Chrome și Internet Explorer apăreau exact unde trebuie, unde se dorea, în Opera cădeau (dacă se poate spune așa mutarea în partea de jos etichetei div în care erau introduse) din poziția dorită.

Motivul este simplu: Opera are o "mică" problemă cu imaginile la care este atribuită proprietatea position: relative. Nu știu dacă este un bug sau o scăpare intenționată, dar așa ceva poate da peste cap afișarea unei pagini care pare în regulă. Soluția este simplă: se stabilește position: absolute și, folosind proprietățile top și left se poziționează în interiorul etichetei div acolo unde doriți.

În CSS există 4 modalități de poziționare a oricărui element dintr-o pagină web: static, absolute, relative și fixed. Diferențele de poziționare sînt următoarele:

poziția statică (position: static) este poziția predefinită a elementului, iar dacă nu este stabilită o altă poziționare vafi afișată pe ecran pe baza locului în care apare în documentul html. Dacă veți dori să aplicați asupra elementului alte proprietăți precum left și top (stabilește poziția în funcție de marginea din stînga și de sus a elementului superior) ele vor fi ignorate.

poziția absolută (position: absolute) este cea mai facilă poziție: elementul este scos din poziția sa în cadrul celorlalte elemente ale paginii (dar fără să le afecteze în vreun fel) și este poziționat pe o locație exactă de pe pagină. Pot fi aplicate alte proprietăți precum left, top, right și bottom (stabilește poziția în funcție de marginea din stînga, de sus, din dreapta și de jos a elementului superior).

poziția relativă (position: relative) are ca reper poziția în care este elementul în cadrul elementelor încarcate pe pagină și folosește left, top, right și bottom pentru o poziționare mai precisă.

poziția fixă (position: fixed) este foarte asemănătoare cu poziția absolută, este calculată în funcție de marginea ecranului dar elementele fixe rămîn așa mereu. Toate celelalte elemente vor fi afișate deasupra lor (de exemplu: un timbru-watermark sau imaginea dintr-un fundal).

06 februarie 2010 - Dan-Marius Sabau
Categoria: programare;

Probabil că majoritatea dintre programatorii (sau, cu alte cuvinte, web-designer-ii) care au lucrat cu bazele de date s-au lovit de-a lungul timpului de o problemă: reindexarea unei tabele. E vorba despre acele tabele care conțin un index auto_increment a cărui valoare se mărește cu 1 la fiecare introducere a unor valori noi în tabelă. Din diverse motive anumite valori trebuie șterse, iar indecșii nu se refac. Asfel, în tabelă apar "găuri" în numărătoarea indexului, iar indecșii nu mai sînt consecutivi.

Pentru a repara acest lucru se execută în mysql următorul cod, unde "nume_tabelă" va trebui schimbat cu numele tabelei pe care o folosiți.

SET @var_name = 0;

UPDATE nume_tabela SET ID = (@var_name := @var_name 1);

După aceea se caută ultima valoare a indexului din tabelă (va fi deja renumărat), hai să zicem că acea valoare este 15. Ultimul pas este stabilirea noii valori de auto-incrementare pentru a nu apare alte "găuri" în numărătoare, iar indexul să sară de la 15 la 25, de exemplu. Această valoare va fi ultima valoare a indexului 1. Conform exemplului dat, sintaxa ce mai rămîne de executat este următoarea:

ALTER TABLE nume_tabela AUTO_INCREMENT = 16;

19 septembrie 2009 - Dan-Marius Sabau
Categoria: amuzante; programare;
Etichetele: calitate; revizuire;

Conform unora, revizuirea calității codului unui programator (adică a instrucțiunilor scrise de acestea într-un program) se măsoară în numărul de înjurături pe minut. Propria experiență cu mai multe stiluri de programare îmi spune că e un criteriul al naibii de eficient. :)

05 septembrie 2009 - Dan-Marius Sabau
Etichetele: mysql; oracle;

Comenzile SQL commands sînt similare și au același rezultat: ștergerea înregistrărilor din tabelă. Întrebarea despre difernță este deseori întrebată de începători și în cadrul interviurilor. Diferența este destul de simplă, dar oamenii le mai confundă pentru că văd același rezultat la ambele interogări.

Lista de diferențe este următoarea:

Tipul de comandă: Truncate este o comandă DDL (Data Definition Language), iar Delete este o comandă DML (Data Manipulation Language).

Restaurarea datelor: La apelul comenzilor DDL schimbările făcute de ele sînt finalizate automat, în timp ce comenzile DDL nu sînt finalizate iar datele se pot reface. Comenzile DDL sînt: CREATE, ALTER, DROP, TRUNCATE, COMMENT, RENAME, iar comenzile DML sînt: SELECT, INSERT, UPDATE, DELETE, MERGE – UPSERT, CALL, EXPLAIN PLAN, LOCK TABLE.

Structura tabelei: Cînd folosiți comanda truncate toate rîndurile tabelei sînt șterse iar structura tabelei este recreată, la fel și indecșii. Cînd folosiți comanda delete doar rîndurile dorite (folosind condiționarea cu „where”) sau toate rîndurile sînt șterse iar structura rămîne neschimbată.

Sntaxa: Sintaxa pentru comenzi este:

Truncate table <tablename> #comanda pentru a trunchia o tabelă.

Delete from <tablename> #comanda de a șterge toate înregistrările dintr-o tabelă.

05 august 2009 - Dan-Marius Sabau
Categoria: programare; tehnologii;
Etichetele: open source; NASA; Apollo 11;

Pentru a comemora a 40-a aniversare a misiunii Apollo 11, NASA a făcut public codul sursă al programului pentru Calculatorul de Ghidaj Apollo, care l-a ajutat pe om să pună piciorul pe Lună, sub licența GNU GPLv2.

Calculatorul de Ghidaj Apollo (CGA) a fost primul recunoscut ca fiind sistem integrat modern, folosit în timp real de piloții astronauți pentru a colecta și furniza informații despre zbor, și de a controla automat toate funcțiile de navigare a navetei spațiale Apollo. A fost dezvoltat la începutul anilor 1960 pentru programul Apollo de către Laboratorul de Aparate de Măsurat și Control de la MIT.

Era fundamental pentru toate misiunile Apollo și erau două din acestea la bord. Unul pentru a controla Modului de Comandă, o navetă spațială care i-a luat pe cei trei astronauți pe lună și înapoi pe Terra. Celălalt controla modulul lunar care era folosit pentru a ateriza doi dintre astronauți pe suprafața lunară.

Programul care a fost lansat este numit CGA Virtual (Virtual AGC) și este un emulator pentru originalul CGA și a fost realizat de către dezvoltatori după studierea imaginilor copiate și tipărite ale codului sursă original al ambelor module spațiale. CGA Virtual a fost lansat atît ca și cod binar cît și în formatul de cod sursă și este disponibil pentru toate trei platformele folosite în mod curent.

CGA Virtual poate fi obținut de la http://www.ibiblio.org/apollo/ unde dezvoltatorii au furnizat și manuale, ghizi și cele mai des puse întrebări pentru folosirea lui.

03 iulie 2009 - Dan-Marius Sabau

Citeam despre Workbench de la MySql pe pagina lor (http://www.MySql.com/products/workbench/) cînd m-am hotărît că vreau să aflu despre efectele achiziționării de către Sun Microsystem a MySql și apoi a achiziționării de către Oracle a lui Sun Microsystem.

Cînd Sun a cumpărat MySql în ianuarie 2008 (pentru aproximativ 1 miliard de USD), venitul anual al lui MySql era aproximativ de 50 de milioane de dolari și creștea rapid, avînd milioane de distribuții precum Facebook, Google, Nokia, Baidu și China Mobile. Se dorea să aducă sinergii către Sun, ceea ce ar fi schimbat peisajul industriei producătoare de programe de calculator prin adăugarea de noi adoptări ale bazelor de date cu sursă deschisă în aplicații și companii mai tradiționale. Integrarea cu Sun ar fi extins cu mult cererea comerială a ofertelor MySql și îmbunătățirea ofertei de valori prin adăugarea organizației de servicii globale a lui Sun.

De atunci Scwartz a supravegheat dezvoltarea MySql în ciuda lansării dezastruoase a versiunii 5.1, exodului dezvoltatorilor de proiect cheie, demisia cofondatorilor MySql Michael „Monty” Widenius și David Axmark ca și a directorului executiv MySql Marten Mickos, și obținerea a nu mai puțin a trei bifurcații majore a bazei de date licențiate (GPL – General Public Licence).

Nu a fost o perioadă ușoară. MySql avea probleme încă dinaintea achiziției de către Sun. În efortul ei de ajuta produsul să se dezvolte și a furniza atît utilizatori avansați (asta înseamnă adăugarea de funcționalități noi) cît și utilizatori mai noi (ceea ce înseamnă a face lucrurile cît mai prietenoase și mai ușor de abordat – și construirea de unelte noi), echipa a părut să-și piardă direcția și a sfîrșit prin a se răsfira.

Marea lacună de timp dintre MySql 5.0 și 5.1 se datorează parțial conducerii și priorităților, dar este de asemenea rezultatul unui cod de bază rău ce are nevoie de o revizuire bună și de a fi reînnoit – ceva ce nu s-a întîmplat pînă acum (chiar dacă există semne că asta este pe cale să se schimbe). Complexitatea ce nu e necesară și absența standardelor clare i-au încetinit pe dezvoltatorii existenți și au pus o barieră și pentru dezvoltatorii noi.

Aceste probleme au continuat iar oamenii au început să plece de la Sun nu mult după cumpărare: membri ai echipei de conducere de la vîrf cît și cîțiva cei mai experimentați și mai talentați dezvoltatori care nu mai sînt implicați în dezvoltare.

Altă descoperire surprinzătoare la o conferință MySql acum cîteva luni a fost adoptarea lentă a versiunii 5.1 în magazinele mari. Se pare că un mare număr de companii nu au trecut de la versiunile 5.0 la 5.1.

Dar acesta e doar începutul. În aceste zile au loc o mulțime de dezvoltări interesante în universul MySql. De la noile motoare de depozitare (Falcon, PBXT, Maria, Tokutek) la unelte foarte dezvloltate de la o jumătate de duzină de vînzători și rescrierea extinsă a nucleului bazelor de date MySql.

Ceea ce este cel mai surprinzător dintre toate este faptul că MySql 5.4 a fost deconspirat la conferință. Nu este încă o versiune stabilă, dar reprezintă un compromis între și 5.1 și așteptarea vreme de încă un an sau mai mult pentru o versiune stabilă a MySql 6.0. Realizînd că dezvoltarea mergea mai încet decît ar fi dorit, echipa MySql a selectat cîteva îmbunătățiri planificate și codate pentru 6.0 și le-au mutat în codul sursă a versiunii 5.1 realizînd astfel MySql 5.4 (aparent au dorit să treacă peste 5.2 și 5.3).

Acesta este primul din cîteva semne recente că organizația MySql a început să muncească în a îmbunătăți cîteva dintre lucrurile care l-au deranjat pe Monty atît de mult. Este încurajator.

În aprilie 2009 Oracle a cumpărat Sun Microsystems pentru 7,4 miliarde USD. Cu aceasta mișcare Oracle intră în competiție acum cu aproape toate marile companii tehnologice, incuzînd Microsoft (MSFT) în middleware (software pentru calculator care conecteză componente software sau aplicații) și sisteme de operare pentru servere, SAP și Salesforce.com (CRM) în aplicații pentru afaceri, IBM, Cisco (CSCO), HP (HPQ) și Dell (DELL) în hardware pentru servere și EMC pentru medii de stocare. Larry Ellison, directorul executiv de la Oracle, a citat platforma Java de la Sun Microsystems și sistemul de operare Solaris pentru servere ca fiind motivațiile principale în spatele achiziției.

Cheia care nu a fost menționată a acestei achiziții este MySql. Oracle este, în primul rînd și mai ales, o companie de baze de date, iar MySql a fost fără îndoială o amenințare pe termen lung. Multe din produsele software și middleware de la Oracle se bazează pe folosirea bazelor de date, și chiar Salesforce.com, un mare distrugător și competitor în industria software, se bazează pe bazele de date Oracle pentru a rula platformele ei. Multe din achizițiile software de la Oracle îi permit să asigure folosirea bazelor de date Oracle, prin asta permițîndu-i să adauge atît venit cît și cîștiguri de la vînzări de software și baze de date adiționaele. Cu achiziția lui Sun Microsystems și MySql, Oracle caută să controleze această tendință, bazele de date cu sursă deschisă, și, cel mai important, licențele pentru folosirea lor comercială. Suspiciunea multora este că rata de creștere a veniturilor MySql, atîta vreme cît nu vor fi dezvăluite, va scădea rapid urmînd întegrarea lui Sun Microsystems în Oracle.

Chiar și cu cele mai bune inteții, Oracle înfruntă serioase probleme de încredere în interiorul și exteriorul stavilei pe care compania a pus-o surselor deschise în trecut. Widenius susține: Oracle, neavînd cea mai bună reputație posibilă în spațiul Surselor Deschise, va avea greutăți în a-i păstra în companie pe oamenii de la MySql care i-au rămas sau chiar să lucreze la proiectul MySql. Oracle va avea de asemenea greutăți în a asigura clienții, comunitățile și utilizatorii MySql că va păstra MySql „gratuit și disponibil pentru toți”.

Va fi ușor să arătăm cu degetul spre Oracle peste 1-2 ani și să îi blamăm pentru că, în cele din urmă, au făcut să dispară unul dintre cele mai de succes proiecte cu sursă deschisă create vreodată. Dar cert este că Sun a făcut un lucru de mîntuială cu achiziția MySql, l-a gestionat prost vreme de 16 luni și că se scapă de încurcătură pe seama lui Oracle.

Rămîne de văzut dacă Oracle decide sau nu să accepte treaba de a repara MySql și dacă îi va permite să ocupe un loc pe piață.

Acum Alianța Baze de date Deschise fără Oracle adaugă îndoieli suplimentare asupra cărei ramuri din MySql va fi considerată „oficial” dezvoltată mai departe. „Bifurcațiile sînt un fapt de viață în comunitatea cu sursă deschisă, discutabil una în întregime sănătoasă, ” scrie McAllister. „Ar fi bine ca firma Oracle să spere că nu va ajunge pe partea greșită a bifucației.” Pentru a face asta el sugerează că Oracle va trebui să recîștige încrederea și suportul comunității MySql – cu alte cuvinte, „să înceteze să acționeze ca Oracle.”

Oracle ar putea „ucide” MySql „fie direct sau prin lipsa unei dezvoltări/suport în întregime”, o poate vinde pentru a evita problemele anti-trust, sau „poate accepta MySql și sursa deschisă și poate să-și folosească expertiza technica pentru a se asigura că MySql continuă să fie cea mai populară bază de date cu sursă deschisă avansată”, a scris Widenius într-un mesaj din jurnal.

„Cea mai mare amenințare pentru viitorul MySql nu este Oracle ca entitate, ci faptul că talentele în domeniul MySql de la Sun se vor răspîndi pe aripile vîntului și vor ajunge la o mulțime de companii diferite ceea ce va da înapoi dezvoltarea și suportul MySql cu ani buni”, a scris el. Widenius este „pregătit să angajeze sau să găsească un cămin bun pentru tot personalul ce reprezintă nucleul MySql” la compania sa, Monty Program, sau „aproape de ea.”

 

Locații utile:

http://www.linux-mag.com/id/7342

http://monty-says.blogspot.com/2009/04/to-be-free-or-not-to-be-free.html

 

 

 

02 iulie 2009 - Dan-Marius Sabau
Categoria: programare;
Etichetele: php;

Acum cîteva zile, în 30 iunie, echipa de dezvoltare a php a anunțat lansarea imediată a PHP 5.3.0. Această lansare este o îmbunătățire majoră a seriei 5.X care include un număr mare de caracteristici noi și eliminare de erori.

Caracteristicile cheie ale PHP 5.3.0 includ:

- Suport pentru namespaces

- Legături întîrziate statice

- Funcții Lambda și Închizătoare

- Adăugare de sintaxă: NOWDOC, scurtătura ternară „?:” și eticheta de săritură (un „goto” limitat), __callStatic()

- Îmbunătățiri de performanță internă

- Colector de gunoaie opțional pentru referință ciclică

- Opțional mysqlnd înlocuire PHP nativă pentru libmysql

- Suport Windows îmbunătățit incluzînd VC9 și binare X64 experimentale ca și portabilitatea pentru alte platforme suportate

- Rotunjire a numerelor reale mai consistentă

- Anunțurile criticate sînt acum manevrate prin E_DEPRECATED (parte a E_ALL) în loc de nivelul de eroare E_STRICT

- Cîteva îmbunătățiri pentru a aduce mai multă flexibilitate în php.ini (și fișierele ini analizate în general)

- Extensii împachetate noi: ext/phar, ext/intl, ext/fileinfo, ext/sqlite3, ext/enchant

- Mai multe de 140 de erori corectate și îmbunătățite la PHP, în particular la: ext/openssl, ext/spl și ext/date

Această versiune elimină de asemenea cîteva extensii și unește folosirea API-urilor interne. Utilizatorii ar trebui să fie conștienți de următoarele lipse de compatibilitate tardive cunoscute:

- Parametrul care analizează unificarea API va cauza ca unele funcții să se comporte mai mult sau mai puțin strict cînd vine vorba de jonglarea cu tipuri

- Au fost eliminate următoarele extensii: ext/mhash (vezi ext/hash), ext/msql, ext/pspell (vezi ext/enchant), ext/sysbase (vezi ext/sybase_ct)

- Următoarele extensii au fost mutate la PECL: ext/ming, ext/fbsql, ext/ncurses, ext/fdf

- A fost eliminat zend.zel_compatibility_mode

 

Pentru mai multe detalii vizitați http://php.net/releases/5_3_0.php

 

 

 

02 septembrie 2008 - Dan-Marius Sabau
Categoria: internet; programare;

Proiectul pentru navigatorul pe internet al lui Google a fost lansat prin intermediul unor benzi desenate realizate de către Scott McCloud. Ele pot fi găsite aici: http://blogoscoped.com/google-chrome/ ; prezentarea e interesantă.

Numele navigatorului: Google Chrome.

Tipul proiectului: "Open Source". Asta înseamnă că utilizatorul va putea să acționeze liber asupra procesului de dezvoltare a produsului.

15 aprilie 2008 - Dan-Marius Sabau
Categoria: programare;
Etichetele: css; javascript;

Pentru dezvoltatorii obișnuiți de pagini web eticheta marquee este un tip de element HTML în afara standardului care face textul să se miște în sus, în jos, în stînga sau dreapta. Eticheta a apărut pentru prima oară în versiunile de început ale Internet Explorerului al lui Microsoft și a fost comparat cu elementul ce licărește de la Netscape, și era o extensie cu probleme de utilizare în afara standardului la un HTML standard.

Pentru că textul din interiorul unui marquee nu este întotdeauna vizibil violează însăși fundamentele de bază ale paginilor web care sînt extraordinar de ușor de răsfoit. De obicei utilizatorii aruncă o privire peste pagină și decid ce doresc să citească (dacă îi interesează) (folosindu-se de titluri, textul îngroșat, listele, etc.), dar etichetele marquee, ca și elementul ce licărește, ascunde textul în anumite locuri însemnînd că la un anume moment parcurgerea paginii ar putea eșua (sau poate lua mai mult timp).

E cunoscut faptul că locațiile din interiorul etichetelor marquee sînt greu de accesat, iar utilizatorii au doar o șansă de a face asta la fiecare afișare. Asta poate cu ușurință enerva utilizatorii.

Ei bine, există soluții la situația asta și vreau să vă prezint una dintre ele. Aveți nevoie doar de CSS și javascript activat.

 

niște text...

...și o imagine:

Puteți continua să adăgauți text și imagini, dar amintiți-vă să nu schimbați „overflow: hidden;” în cadrul elementului div: „no_marquee”. E important.

 

Al doilea lucru de care aveți nevoie este o funcție javascript pe care trebuie să o adăugați în elementul „head” al paginii web.

 

function moving_div_up(value)

{

value--;

if (value<-10300) value = 0;

document.getElementById('moving_div').style.top = value 'px';

setTimeout("moving_div_up(" value ")", 20);

}

 

Aceasta va face ca textul și imaginile din interiorul „moving_div” să alunece de jos în sus. Viteza alunecării poate fi schimbată prin modificarea valorii „20” în interiorul „setTimeout” cu oricare valoare doriti.

Pentru a face ca textul și imaginile să alunece în jos e de ajuns să schimbați scăderea valorii „value” și să o faceți să crească. Ceva de genul ăsta:

 

function moving_div_down(value)

{

value ;

if (value>10300) value = 0;

document.getElementById('moving_div').style.top = value 'px';

setTimeout("moving_div_down(" value ")", 20);

}

 

Puteți face conținutul să alunece la stînga sau la dreapta. E simplu. Foarte simplu.

 

function moving_div_left(value)

{

value--;

if (value<-10300) value = 0;

document.getElementById('moving_div').style.left = value 'px';

setTimeout("moving_div_down(" value ")", 20);

}

 

function moving_div_right(value)

{

value ;

if (value>10300) value = 0;

document.getElementById('moving_div').style.left = value 'px';

setTimeout("moving_div_down(" value ")", 20);

}

 

Ultimul lucru pentru ca asta să funcționeze este adăugarea atributului „onLoad”: . Aceasta permite funcției javascript să pornească atunci cînd pagina se termină de încărcat.

 

Drept de autor (c) - Supravirtual SRL - 2005-2010 - Toate drepturile rezervate.

Web directory RSS feeds HostGator promo code