WordPress + Video = Love

Un feature nou apărut în WordPress 2.9 este suportul oEmbed. Long story short, poți adăuga filme de pe diverse platforme video (youtube, vimeo, blip etc) prin simpla scriere a url-ului pe un singur rând. Asta te scutește de multe bătăi de cap și, să-ți spun drept, cred că trebuia să fie introdus în WP 1.0. Pentru că, fără un plugin adecvat, un neștiutor n-ar fi avut șanse prea mari să publice un video (html view -> paste).

În fine, treaba e bună, implementarea la fel.

Problema

Problema mea este că filmele de pe youtube – fie cele „băgate” cu oEmebed, fie cele „băgate” cu codul de pe youtube – deschid o pagină nouă când faci click pe ele. O a doua problemă (de această dată doar la filmele introduse prin metoda clasică – copy/paste) este că filmele au anumite dimensiuni standard, iar o redimensionare (ex. cât tot blogul) înseamnă calcule. Și cum nimănui nu-i plac calculele (sau cel puțin mie nu-mi plac!), iată o soluție :)

O a doua problemă o reprezintă filmele self-hosted. Adică ai un fișier .flv și vrei să-l pui pe blog. Cum faci?

Soluția

Soluția la aceste probleme am găsit-o (de voie, de nevoie) la ultima temă de WordPress codată și se numește JW Player. Cum se implementează?
Read the rest of this entry »

Despre upgrade

Scriam în postul anterior de Photoshop CS4. Și mi-am adus aminte de o gafă comisă de unii producători de software: salvarea setărilor.

Treaba stă în felul următor: am făcut upgrade la Foobar (de la 0.9x la 1.x). Rezultatul? Toate setările s-au dus. Hotkeys, playlist-uri, tot. A apărut o versiune nouă de Foobar, să-i zicem 1.x+1. Ce s-a întâmplat după instalare? Desigur, s-au pierdut setările…

Apoi vine și rândul Adobe. Am avut CS. Am făcut upgrade la CS2. Apoi la CS3. Apoi la CS4. Absolut nicio versiune nu te întreabă dacă vrei să importe setările.

Mie, unul, îmi vine greu să cred că nimeni de la Adobe nu s-a lovit de problema asta…

Și stau și mă gândesc: cât de greu este să faci un „importator” (?!) pentru setări? Ok, setările au alt format acum, dar TU ești cel ce a făcut formatul precedent! Înțeleg că nu ești în stare să păstrezi același format ( json anyone? ), dar măcar fă dracului un import funcțional.

Fix în aceeași categorie intră programele de back-up. Eu folosesc Acronis True Image și își face treaba excelent. Singura problemă este că… Habar n-am cum să salvez setările!!! Dacă sunt nevoit să reinstalez Windows, trebuie să trec iar prin setările Acronis…

De ce nu folosesc CS4?

Am scris un post asemănător pe dev. Iată-mă, un an mai târziu, încercând iar CS4. Eram doar curios să văd dacă s-a schimbat ceva cu update-urile apărute între timp. De fapt speram să apară ceva update-uri. Țeapă!

Versiunea pe x64 mi-a crapat de vreo două ori la modul grav ( BSOD, aparent din cauza driverelor video; asta în condițiile în care absolut TOATE jocurile încercate merg flawless! ), și fără niciun document deschis îmi papă o grămadă de RAM:

Iar screenshot-ul ăsta e făcut într-un moment de neinspiratie… Aseară am avut CPU Usage de peste 60% și peste 1.4Gb RAM folosit. Fără niciun document deschis, cu Photoshop-ul deschis de vreo zece minute. Să nu mai spun și de timpii de „gândire” la diferite operații foarte simple (gen mută un layer).

Nu știu alții cum sunt, dar eu n-am de gând să-mi cumpăr încă 8Gb ram doar pentru a rula Photoshop-ul!

Sper din tot sufletul ca CS5 să nu aibe aceleași probleme. Dar la ce features ne sunt arătate în filme, probabil va fi iar ceva de măcinat CPU…

Sunt singurul care crede că CS3 a fost cea mai reușită ediție? :|

PS: e versiunea trial, descărcată direct de pe adobe.com, deci nu aș putea fi acuzat de practici neortodocse, nu? :D

Editare târzie

Să nu spun că la instalare nu s-a gândit să mă întrebe dacă vreau să-mi importe setările din CS3… Adică na, cine s-ar gândi că vreau să-mi păstrez shortcut-urile, brush-urile, workspace-ul, dimensiunile (în px, nu în cm; btw, de ce naiba vine PS setat by default cu dimensiunile în centimetri?) etc. ?

jQuery 1.4

Ei bine… A ieșit. Și sunt atât de entuziasmat de chestiile noi încât nu știu de unde să încep :D

Event-uri noi

Am avut nevoie de blur/focus pentru .live(). Acum a apărut focusin, respectiv focusout. Ce înseamnă asta?

jQuery('input:text').live('focusout', function(){
 alert('Blurred!');
});

În plus, toate event-urile (cu excepția ready, focus și blur) pot fi folosite împreună cu .live(). Ceea ce nu poate decât să mă bucure.
Read the rest of this entry »

All in one (js & css)

Azi, în timpul unei „ședințe” de optimizare a unui blog la care am lucrat în ultima săptămână, s-a pus problema de a reduce la minim numărul de requesturi. De fapt eu am pus problema :)

Cum fișierele javascript au rămas singurele cu un număr mai mare de 1, cea mai la îndemână soluție a fost folosirea unui mic script php:

<?php header("Content-type: text/javascript");ob_start("ob_gzhandler");
$files = array(
	'jquery-latest.min.js',
	'ui.js',
	'script.js'
);
foreach($files as $file){
	include_once $file;
}
ob_flush();

Am salvat script.php în folderul js din tema de wordpress în cauză (voi da și linkul când va fi gata) și am purces la editarea functions.php:

if(!is_admin()){
	wp_deregister_script('jquery');
	wp_register_script('jquery', (get_bloginfo('stylesheet_directory').'/js/js.php'), false, '1.3.2', false);
	wp_enqueue_script('jquery');
}

Ce se întâmplă?

  1. Dacă nu este admin, ștergem bindul default pentru jQuery (care este prin wp-includes/js/jquery);
  2. Definim din nou jQuery, precizând path-ul spre scriptul de mai sus;
  3. Re-binduim jQuery, astfel încât să poată fi folosit de alte plugin-uri.

În acest fel, ai în același fișier toate fișierele externe. Cu puțină îndemânare (care, drept să-ți spun, îmi cam lipsește în cazul PHP) poți include diferite fișiere, în funcție de ce pagină accesezi (de exemplu, poate nu ai nevoie de ui.js decât pe prima pagină) șamd.

Dar pentru CSS?

Poți face același lucru și pentru CSS dacă schimbi Content-type în text/css.

Azi m-am jucat pentru prima dată cu taxonomiile custom din WordPress. O explicație bună despre ce sunt și cu ce se mănâncă taxonomiile găsești aici. Cum nu mă descurcam singur, am cerut și eu ajutor pe unde am apucat :D

Pe lângă asta, a trebuit să instalez și să customizez un pic și câteva plugin-uri: wp-print, wp-mail și alte câteva care nu au relevanță.

Și ce, te lauzi?

Well… Nu mă laud. Doar că am avut ceva probleme atât cu plugin-urile cât și cu taxonomiile. Din motive neștiute de mine primeam 404. Permalink-urile funcționau, am dat undo la toate modificările făcute, degeaba. Nu mai intra în „the loop”.

Într-un moment de geniu (bine, unii ar spune disperare, dar nu e așa!), am zis să refac permalink-urile. Așadar, din /%post_id%/%postname% le-am făcut /%post_id%/%postname% (exact, n-am modificat nimic!), am dat save și… Surpriză! A început să meargă :|

Așadar, dacă vreodată ai astfel de probleme… Dă un „save changes” în pagina de permalinks. S-ar putea să ai noroc!

Și dacă te întrebi de unde mi-a venit ideea cu taxonomiile, răspunsul este Digging Into WordPress. :)

CSS Reset

De multe ori am fost întrebat care e cea mai bună metodă de a reseta toate elementele CSS. Dacă în urmă cu doi-trei ani foloseam *{ margin:0; padding:0;}, de la o vreme am început să folosesc CSS Reset-ul lui Eric Meyer. Apoi am început să mai adaug câteva chestiuțe:

  • Clearfix
  • Resetarea font-size-ului la 10px. Astfel, 1em = 10px, ceea ce face totul mult mai ușor de calculat (mai ales dacă faci layout-uri flexibile)
  • Centrarea verticală a input-urilor radio și checkbox. Pe browserele adevărate va merge fără nimic altceva. Pe IE6 va trebui să adaugi class="radio" fiecărui element

Folosesc acest reset de ceva timp și n-am avut nicio problemă, prin urmare… recomand :)

Read the rest of this entry »

Dear Sitepoint.com

One of the best site I use to read is Sitepoint.com. Besides great articles, you can find some great books on this site. Anyhow, there is a major problem: they won’t deliver in Romania! Why? They said we are a high risk country.

But!

There is a big, big (huge!) but! They ship in this countries (some picks):

  • Afganistan. C’mon, after Monkey Bush seek & destroyed this country, the only books they need is „Rebuilding a country for dummies”!
  • Antarctica (!!!). I bet there is some penguins and polar bears who want really BADLY to read some good stuff!
  • Bermuda. Probably the package will disappear in the damn triangle!
  • Cambodia, Congo and… Congo. Yes, Congo is in that list twice! I don’t know if even they have electricity!
  • Christmas Island. Dude, the only thing they need is snow! Every time of the year is Christmas and they need snow. Not books, SNOW!

Ok sitepoint, now seriously: you ship in a LOT of country with high risk of fraud. You even ship in Moldova. Which, if you read a history book, you will find it IS Romania. They only was under soviet occupation, but they are romanian people!

Let’s make a simple list:

  • Amazon.com send books & cd’s in Romania
  • Amazon.co.uk send books & cd’s & electronics!
  • Our country is a fully UE member
  • Paypal has finally accepted us
  • Sitepoint thinks we are a risky country

I usually buy books I like, but for sitepoint i make an exception: i will download them from torrents. Yes, i know i can buy them from Amazon.com (by the way, they don’t think we are a risky country, but hey, who am I to judge?), but if Sitepoint show us no respect, why the hell show anything else?

Fair enough, right?

PS: Nu vreau comentarii în română. Dacă ai ceva de spus, fă-o în engleză! Orice comentariu în română va fi șters.

Organizarea fișierelor comune.

Inițial am vrut să folosesc „assets”, dar mi-a fost ușor teamă de eventualele repercursiuni, așa că le-am zis fișiere comune. Întâi să-ți dau câteva exemple despre ce ar putea însemna fișierele comune și de ce trebuie să le organizezi:

  • Librării JS: jQuery, prototype, moo etc;
  • Framework-uri server side: Zend, Cake, Symphony etc. Sunt destul de sigur că se poate aplica și la alte limbaje decât PHP.
  • Imagini folosite în mai multe proiecte (gif-uri animate pentru ajax activity, de exemplu)

De ce?

În urmă cu ceva timp am scris despre cum să faci un folder pentru fișierele comune și să incluzi de acolo ce ai nevoie. Problema a apărut însă în momentul când trebuia să trimit lucrarea finală clientului: unele librării erau în directorul /assets, ce era localizat în altă parte decât restul proiectului. Rezultatul? Toate scripturile nu funcționau (nu se încărca jQuery, jQuery UI, etc). Prin urmare, a trebuit să găsesc o soluție.

În cazul în care lucrezi la mai mult de un proiect, iată avantajele:

  • Poți face update foarte simplu: înlocuiești UN fișier și gata
  • Ocupă mai puțin spațiu pe HDD. Sigur, nu se cunoaște nicio diferență în cazul jQuery, dar în cazul lui… să zicem Zend framework (aprox 100Mb), lucrurile stau un pic diferit. Mai ales dacă lucrezi de pe un notebook cu un hdd nu foarte generos

Cum?

Read the rest of this entry »

Relax!

Sunt singurul care simte un fel de oboseală în mâini după ce scriu foarte mult? Nu? Foarte bine, atunci uite-te la filmul de mai jos:

via.