DUzun's Web
Programare, proiecte personale, divertisment

DUzun it's ME
 
  
News

<< [4] [3] [2] [1] >>  

31.10.2012
 

Unicode - soluție pentru comunicarea internațională!

O scurtă istorie a Unicode și alte code-page-uri: http://coding.smashingmagazine.com/2012/06/06/all-about-unicode-utf8-character-sets/

Slider cu toate pozițiile Unicode: http://www.babelstone.co.uk/Unicode/unicode.html

  </> 31.10.2012
Deosebiri importante intre JavaScript (implementare W3C) si JScript (implementare Microsoft)
   

 

Deosebiri importante intre JavaScript  (implementare W3C) si JScript (implementare Microsoft)

Cred că toţi programatorii web ştiu că există două tipuri de browsere: care se conformează cu standardele W3C (printre care Chrome, FireFox, Opera, Safari) şi care nu se conformează (în primul rând Internet Explorer sau IE).

Specificaţiile nu acoperă toate problemele apărute la implementarea limbajului ECMA-262 (altfel spus - JavaScript) în diferite medii. Pe lângă faptul că nu toate browserele se conformează cu acest standard, divergenţe apar şi în problemele asupra cărora specificaţiile nu se pronunţă în vreun fel.

 

Iată câteva dintre aceste divergenţe:

 

  • elem instanceof Object;

În mediul JavaScript din browser există două clase mari de obiecte: DOM şi non-DOM. Obiectele DOM se mai numesc Elemente şi fac parte din structura documentului HTML. Obiectele non-DOM sunt toate celelalte obiecte, toate instanţe indirecte sau directe ale Object.

Apare o întrebare firească: Elementele (obiectele DOM) sunt instante ale Object sau nu?

Raspunsul la această întrebare depinde de mediul ales: IE sau non-IE. Elementele se comporta in toate privintele ca niste obiecte obişnuite (non-DOM), având şi ceva proprietăţi specifice. Deci logic ar fi să fie instanţe ale clasei Object.

Deci, în IE elementele nu sunt instanţe ale Object, şi în general nu sunt instanţe ale căreiva clase în sensul că elem instanceof X === false pentru orice element si orice clasa

 

  • function x() {};
    alert(x.name); // expected 'x', got undefined

Atributul "name" al obiectelor de tip Function nu este un standart ECMA-262, însă a fost introdus de către Mozilla şi acceptat de către toate browserele majore, desigur cu excepţia IE.

 

  • var y = function z(){};
    alert(typeof z); // expected undefined, got 'function'

În toate browserele typeof z == undefined, iar in IE typeof z == 'function'.
Acesta e un subiect mai vast. Expresia de mai sus se numește funcție expresie cu nume (named function expression).

Iată un articol care explică în detalii această problemă și altele similare: NFE.

 

  • var y = function z(){ return z.proprietate; };
    y.proprietate = 'test';
    alert(z()); // Expected 'text', got undefined in IE

Cauza acestui bug e aceeași ca și în exemplul precedent, dar efectul e diferit. În IE y != z, adică avem două obiecte diferite în memorie. Acest fapt poate provoca probleme semnificative în anumite situații.

 

  • var s = 'abcd'; 
    alert(s[1]); // expected 'b', got undefined

În mod normal în toate browserele s[1] == 'b', cu exceptia IE până la versiunea 8, unde s[1] === undefined.

 

  • var a = Array.prototype.slice('abcd');
    alert(a);

Aceasta este o metodă eficientă de obţinere a obiectelor de tip Array din orice obiect ce conţine proprietatea 'length' (de ex. String).
Cu părere de rău nici în IE8 aceasta nu e o metodă în cazul String. În aces caz recomand 'abcd'.split('');

 

  • var a = [1, 2, 3, 4, 5];
    try{ alert(a.indexOf()); } // W3C
    catch(e) { alert(e.description); } // IE

Obiectele de tip String au metoda indexOf. Însă cele de tip Array în IE nu au, deoarece IE foloseşte o versiune mai veche de JScript (1.3, ECMA-262 3rd edition).

 

  • var x = 10;
    function a(){ return x; try{}catch(x){} };
    alert(a()); // Expected 10, got undefined

În browserele W3C a() === 10, însă nu şi în IE... Pentru simplul fapt că există catch(x), variabila x este redeclarata in scopul functiei a(), ca şi cum am avea declaraţia: function a(){ var x; return x; };

 

  • window.b = 1;
    var b = b || 2;

Nu am cercetat până la urma această situaţie, dar în unele imprejurări b == 2, deşi ar trebui sa fie 1.
Am avut o situaţie în care prima instrucţiune se efectua într-un fişier JS, iar a doua în alt fisier JS şi am obţinut efectul nedorit (în IE).

 

Recoman să cercetați tabelul de compatibilitate ES5

 

 
  </> 15.12.2011
Operatorul '==' nu este tranzitiv în PHP, JavaScript, ș.a.
 

 

Operatorul '==' nu este tranzitiv!

Care este proprietatea tranzitivă a unei relaţii? Dacă '==' ar fi tranzitiv, ar satisface relaţiile: dacă a == b şi b == c, atunci a == c. 
Dar operatorul '==' nu este relaţie binară în sens matematic, ci este un operator al limbajului care în majoritate cazurilor se comportă ca o relaţie de echivalenţă.

Iată un exemplu ilustrativ:

<?php
var_export('' == 0);   echo '<br />'; // true
var_export(0 == '0');  echo '<br />'; // true
var_export('0' == ''); echo '<br />'; // false - surpriza :-)
?>
JavaScript:
console.log('' == 0);   // true
console.log(0 == '0');  // true
console.log('0' == ''); // false - surpriza :-)

Poate părea evident, dar iatăa incă un exemplu:

JavaScript:

var a = '', b = 0, c = '0';
console.log(a == b); // true
console.log(b == c); // true
console.log(c == a); // false - ai putea aștepta să fie true

Mai sunt și alte exemple care demonstrează acest lucru, așa că folosiți === când nu sunteți siguri.

Totuși atenție în JS:

NaN !== NaN

 

- - -

  </> 16.11.2011
The Absolute Minimum Every Software Developer Absolutely, Positively Must Know About Unicode and Character Sets (No Excuses!) by Joel Spolsky
  


   Nu te-ai întrebat vreodată de ce multe din site-urile româneşti au conţinutul fără diacritice? Răspunsul e simplu. Puţini programatori se aprofundează în "misterele" codificării textului! Se vede că aceasta este problemă nu numai a programatorilor vorbitori de limbă română, dar şi a multor specialişti în domeniu din întreaga comunitate web.

Am găsit un articol interesant pe această temă, întitulat în felul următor:

Minimul absolut pe care  absolut orice dezvoltator de soft trebuie să-l cunoască în mod obligatoriu despre Unicode şi Seturile de caractere (fără scuze!)

de Joel Spolsky

Link: http://www.joelonsoftware.com/articles/Unicode.html

 

Încă un articol interesant la subiect: Character Sets / Character Encoding Issues

  </> 02.07.2011
Primul site web din lume!
 

Asa arata primul site de internet. A fost lansat in 6 august 1991.

World Wide Web

The WorldWideWeb (W3) is a wide-area hypermedia information retrieval initiative aiming to give universal access to a large universe of documents.

Everything there is online about W3 is linked directly or indirectly to this document, including an executive summary of the project, Mailing lists , Policy , November's W3 news , Frequently Asked Questions .

What's out there?
Pointers to the world's online information, subjects , W3 servers, etc.
Help
on the browser you are using
Software Products
A list of W3 project components and their current state. (e.g. Line Mode ,X11 Viola , NeXTStep , Servers , Tools , Mail robot , Library )
Technical
Details of protocols, formats, program internals etc
Bibliography
Paper documentation on W3 and references.
People
A list of some people involved in the project.
History
A summary of the history of the project.
How can I help ?
If you would like to support the web..
Getting code
Getting the code by anonymous FTP , etc.

Sursa: http://www.w3.org/History/19921103-hypertext/hypertext/WWW/TheProject.html

  </> 30.06.2011
Timpul necesar pentru diferite operații pe un PC obișnuit
  
execuţia unei intrucţiuni tipice 1/1,000,000,000 sec = 1 nanosec
citirea din memoria cache L1 0.5 nanosec
branch misprediction 5 nanosec
citirea din memoria cache L2 7 nanosec
Mutex lock/unlock 25 nanosec
citirea din memoria principală 100 nanosec
trimiterea a 2K octeţi prin reţea 1Gbps 20,000 nanosec
citirea secvenţială a 1MB din memorie 250,000 nanosec
citirea de pe o noua locaţie de disc (căutarea) 8,000,000 nanosec
citirea secvenţială a 1MB de p disc 20,000,000 nanosec
trimiterea unui pachet US spre Europe şi înapoi 150 milliseconds = 150,000,000 nanosec

Sursa: norvig.com

  </> 24.06.2011
Culmea optimizării
   
  Culmea optimizării este să nu intelegi cum lucrează funcţia imediat după ce ai compus-o. (numaice am păţit-o )


  </> 16.02.2011

<< [4] [3] [2] [1] >>  


Aici acumulez programe şi algoritmi interesanti alcătuiţi de mine (cu mici excepţii) pe parcursul studierii unor limbaje de programare.

Cea mai mare parte din ele sunt realizate în Pascal. 

Nu am scopul creării unui curs specializat sau a descrierii detaliate a anumitor limbaje, ci doar prezint informaţii utile, plus ceva exemple interesante...

 

Răsfoitorul de fișiere (File Browser):

Codul sursă al programelor este organizat în mape şi fişiere.

Paginile care conțin cod sursă de programe de regulă au un răsfoitor de fișiere în partea stangă a paginii reprezentat de un bloc cu titlul „File Browser”.

Pentru a vizualiza un program sau conţinutul unei mape, faceţi click pe numele fişierului / mapei. Dacă fişierul nu este textual, el se va descărca automat, iar dacă este textual, conținutul lui se va afișa într-un bloc pe centrul paginii.

Pentru a descărca un fişier, faceţi click pe dimensiunea (size) lui.

arr_d Limba / Language


 


Flag Counter

arr_r Login