1. $.delegate vs $.live vs $.bind. O relatare pe larg despre ce și când să folosești în codul tău.
  2. Și mai multe explicații despre noile deferred din jQuery.
  3. O scurtă introducere în „repararea” (debugging) scripturilor jQuery
  4. Boris Moore vorbește despre template-uri jQuery
  5. Viitorul luminos al CSS-ului prezentat de o somitate în domeniu: Eric Meyer.
  6. Optimizarea performanțelor diverselor widget-uri de WordPress. Long story short, e fix ce s-a mai spus de câteva sute de ori înainte: pune js-urile externe la sfârșitul codului!
  7. Am încercat de vreo cinci ori până acum să folosesc VIM. „Learning curve” e mult prea abruptă și am ajuns la concluzia că un editor ce are nevoie de câteva luni pentru acomodare este totuși prea mult. Cu toate astea, dacă vrei să încerci, iată câteva sfaturi despre trecerea de la un editor normal la VIM.
  8. O listă uriașă cu resurse pentru dezvoltatorii iPad.

De-a lungul timpului am tot făcut tot felul de site-uri bazate pe WordPress. De la simple bloguri până la site-uri de mari agenții web. Prin urmare, am fost nevoit să improvizez și să adaptez de nenumărate ori. Când au apărut custom taxonomy și custom post type am simțit un fel de binecuvântare. Nu mai trebuia să mă lupt cu custom fields și alte bucurii d’astea.

Și, cu toate acestea, o chestie enervantă căreia nu îi găseam soluție a fost redenumirea secțiunilor implicite din wp-admin. Cea care îmi stătea ca un ghimpe în coaste fiind fix secțiunea Posts. La o adică, ce să caute o astfel de secțiune într-un site de prezentare de rochii, de exemplu? Prima soluție, cea mai la îndemână, a fost să-i spun clientului: „nu te atinge de partea aia!”. Cum limitarea unui utilizator cu care eu nu aveam contact (de obicei lanțul arată cam așa: eu -> clientul meu (agenție) -> clientul agenției -> clientul final) ieșea din discuție (se știe că telefonul fără fir a avut întotdeauna un succes răsunător), a trebuit să găsesc o altă modalitate. Una ceva mai… user friendly ce nu instigă la click-uri aiurea.

Încercarea nr 2

Read the rest of this entry »

După mai bine de o lună de pauză (aș fi putut spune bine-meritată dacă aș fi fost prin concedii sau alte nebunii d’astea), m-am hotărât să continui rubrica „link-urile săptămânii”. Prin urmare… uite ce am strâns în câteva zile:

  1. Git Immersion este un mod de a învăța cum să folosești Git cât mai eficient. Cred că-ți aduci aminte că am scris despre Git cu câteva luni în urmă; ei bine, încă îl folosesc cu spor. Ba chiar mi-am tras și server privat la MxHost, dar despre asta cu altă ocazie.
  2. Chiar dacă în teorie totul e minunat și merge exact ca pe desktop, în practică, browserele nu… respectă teoria, ca să zic așa. Cum poți face debug? Folosind Weinre!
  3. Ca de obicei, pe 15 ianuarie e ziua lui Eminescu și a jQuery. Prin urmare, în fiecare an avem un release major al libră bibliotecii deja cunoscute. Anul 2011 ne aduce jQuery 1.5 și jQuery Mobile Alpha 3. Sper să prind ceva timp să mă „joc” cu jQuery Mobile cât de curând.
    • Una din chestiile noi introduse în jQuery 1.5 o reprezintă deferreds. Aici ai explicații și exemple pe îndelete.
    • O altă treabă nouă în jQuery este funcția $.sub(). Long story short, poți crea o instanță de jQuery nouă în care poți rescrie funcțiile interne ale jQuery, fără ca instanța inițială să fie afectată? Pare complicat? Nu este :D Detalii.
    • Și dacă tot am pomenit de jQuery mobile, uite aici o introducere rapidă.
  4. CSS Reset-ul lui Eric Meyer a fost actualizat, astfel încât să corespundă „bucuriilor” introduse de html5.
  5. O treabă foarte tare pentru firebug de care habar n-aveam: poți adăuga breakpoints pentru debug direct din script, fără a face click-uri razna prin interfața firebug.
  6. Am actualizat baseproject. Puțin curățat, puțin îmbunătățit, gata de pus la treabă :)

Bingle (bing vs google)

Probabil ai citit deja despre „problema” bing. Long story short, bing a fost prins cu mâța în sac. Cu polonicul în butoiul cu miere sau… cu rezultatele căutărilor ușor inspirate de la google. Prin urmare, cei de la microsoft vor lansa un nou logo pentru bing: Read the rest of this entry »

Sunt ușor nelămurit despre ce aș putea folosi:

  • Sugarsync. Pare ok, destul de rapid dar are unele lipsuri (de ex. nu arată un ETA sau o rată de transfer)
  • Dropbox. Nu știe să facă sync la mai multe foldere by default. Trebuie să mă joc cu symlinks & shit.

Tu ce ai alege?

Ca deținător de blog cu vechime (am împlinit vreo trei ani acum o săptămână; să-mi trăiască, mulțumesc) am fost întotdeauna enervat la maxim de acei comentatori ce completează field-ul URL razna.

O singură dată am încercat să elimin chestia asta, apelând la bunul simț comentatorilor. N-a fost să fie… Și dacă tot am făcut o temă WP de curând, am implementat treaba asta în functions.php:

add_filter('pre_comment_author_url', 'ntz_url_check');
function ntz_url_check($url_submited){
	if(is_user_logged_in()) {
		global $current_user;
	  get_currentuserinfo();
		if($current_user->wp_user_level == 10) {
			return $url_submited;
		}
	}
	$url_match = '~^(?:https?://)?(?:[\w]+\.)(?:\.?[\w]{2,})+$~';
	$url = parse_url(str_replace('www.', '', $url_submited));

	// =================================================
	// = Domenii interzise in url-urile comentatorilor =
	// =================================================
	$forbidden_urls = array('google.com', 'iamntz.com', 'google.ro');

	return ( (!preg_match($url_match, $url_submited) || in_array($url['host'], $forbidden_urls) ) ? '' : $url_submited );
}

Pui în array domeniile nedorite (fără www sau http; adaugă WP treburile astea) și aia e. Dacă userul este administrator, poate avea orice url. Cu wp_user_level alegi ce useri pot avea liber la orice link-uri.

jQuery vs $ vs WordPress

Ca un făcut, de vreo trei-patru zile sunt întrebat același lucru: de ce nu merge $ în WordPress atunci când folosești jQuery?

Răspunsul scurt este jQuery.noConflict();. Răspunsul un pic mai lung este următorul:

WP pune la dispoziția programatorilor mai multe librării JS, gata de a fi apelate printr-un simplu wp_enqueue_script(), astfel încât să nu existe tot felul de dubioșenii gen jQuery inclus de 4 ori (văzut!). Și cum jQuery nu este singura librărie care folosește $, pot apărea probleme. Prin urmare, jQuery este inclus apelându-se jQuery.noConflict();, astfel încât, fiecare e cu aia a mă-sii, ca să zic așa.

Vestea bună

Vestea bună este că nu trebuie să înlocuiești fiecare $ cu jQuery pentru a face totul să meargă. Ai putea să faci și asta, dar „costă” prea mulți kb. Te poți folosi de următoarea treabă:

jQuery(document).ready(function($){
 console.log($('div').length);
});

Observi parametrul $ la funcția anonimă? Eh, ăla face toată treaba.

Enjoy!

Cum cei de la Mxhost au fost generoși cu mine, oferindu-mi un VPS pentru teste, m-am apucat sa-l… testez.

Prima problemă avută a fost că fișierul .htaccess refuza să fie interpretat, indiferent de ce setare îi făceam eu în httpd.conf. Situația s-a rezolvat în următorul mod:

  • Editezi config pentru virtual hosts, ce se află în /etc/apache2/sites-enabled/000-default.
  • Schimbi AllowOverride None în AllowOveride All peste tot unde are legătură cu root-ul serverului web. Care este în /var/www.
  • Salvezi și dai un restart la apache folosind comanda apache2ctl restart.

Note Suplimentare

  • Sistemul de operare este Ubuntu 10.04;
  • Înainte de a activa treaba de mai sus, fii sigur că ai nevoie de .htacces, din moment ce înseamnă o mică scădere de performanță.
  • Editorul din ubuntu este vi. Pentru a intra în edit mode, apasă i. Pentru a ieșit din edit și a putea salva, apasă ESC urmat de :w sau :wq (pentru a salva & ieși din editor)

Anunț de angajare/colaborare

Nu am nimic cu omu’, e doar un exemplu ce mi-a sărit în ochi ce însumează majoritatea anunțurilor de angajare din România.

Candidatul ideal trebuie sa stie sa lucreze perfect in ilustrator,photoshop si corel.

Bine că n-a pus și inkscape și ce alte programe pentru vectori mai sunt…

Trebuie sa stie sa codeze html,css.

Și php, mysql, ruby, python și perl. Ah, și cafea foarte bună!

Nu in ultimul rand, trebuie sa fie foarte serios pentru ca lucram pe baza de contract si factura.

Asta nu o înțeleg. Dacă nu s-ar lucra pe bază de contract și factură nu ar trebui să fie serios?

De aici.

Ce este mai grav este că o maaare parte din cei ce postează astfel de anunțuri nu își dau seama unde e greșeala.

În urmă cu o lună, o lună și jumătate, am făcut un mic upgrade. Un cpu, o atenție, o vrăjeală etc. La cpu am optat pentru un i7 950 iar restul nu contează foarte mult în povestea de azi. Ce conteză însă este următoarea treabă: procesorul se comportă excelent dar cooler-ul cu care vine în cutie este subdimensionat. Și automat foarte zgomotos, deoarece se străduiește din greu să răcească procesorul cât mai bine. Adevărul e că reușește într-un mod admirabil să îl țină cam pe la 55° în idle și 65° în load. Nu full load că n-am găsit nicio aplicație (care să nu fie benchmark) să folosească procesorul 100%. Poate doar firefox, dar despre el cu altă ocazie.

În fine, am zis eu că nu-i baiul prea mare, că pun un Scythe Ninja 2, că tot am unul de la cpu vechi. Eh, țeapă. Știi cum e aia cu socoteala de acasă și aia din târg? Eh, socoteala de pe placa veche nu se potrivește cu socoteala de pe placa nouă, prin urmare coolerul lovește în memorii. Pentru că Gigabyte s-a gândit că ar fi mișto să pună memoriile foarte aproape de procesor. Prin urmare… M-am orientat spre alt cooler. Inițial vroiam să iau un Noctua, dar, din diverse motive ce au ținut de disponibilitate (aveam nevoie de el în 2010 și m-am trezit pe 30 decembrie să fac comanda) și preț (dublu) m-am orientat spre un Arctic Cooling Xtreme.

Instalarea

Floare la ureche! Ai nevoie de o șurubelniță stea ceva mai lungă și cam… 5 minute. Niciun eveniment neplăcut, nicio piedică în calea fericirii procesorului meu. A rămas o distanță de ~ 1 cm între cooler și memorii. Pentru că, așa cum am zis, x58-ud7 și două kit-uri de dominator nu se împacă foarte bine cu ORICE cooler.

Rezultate

În primul rând, acum e LINIȘTE. Se aude doar placa video pentru care nu am găsit cooler performant. De fapt am găsit unul la pcgarage dar se ducea la 80° în idle.

În al doilea rând, cpu stă cam la 45° în idle. Urcă până la 55° în load (cât am apucat să-l testez).

Recomand?

Cu siguranță! Răcirea este ok (la o adică, un cooler pe aer cât poate să răcească? :) ), zgomotul produs este zero (rămâne de văzut totuși cum se comportă în timp) iar prețul este accesibil. Să fim serioși, când dai 1000+ lei pe un procesor bun, nu te zgârcești la 200 lei.