Make google reader suck less

Long story short: google has made some changes on it’s RSS reader platform. Instead of adding features (like… I don’t know, easy ways to manage subscriptions?) they decided to change the design. With an ugly one.

So i changed things a little: removed white space (yeah, i know, white space is good, but is not good when you see ONLY white space!), added few gradients there and there, removed the big-ass subscribe button and few more tweaks. Also, the article has an increased font-size and line-height, for a nicer reading.

All you need is greasemonkey (there are some voices that says google chrome know this natively, but i don’t use crappy software) and install this awesome script. You are done.

PS: I know, my English sucks. Don’t bother telling me that again.

  1. CSS3 in practice;
  2. Advanced HTML5 video and audio use on iOS: bugs and quirks;
  3. Harta româniei cu SVG și Raphael;
  4. 10 Essential Differences Between HTML4 and HTML5;
  5. HTML5 Dev Conf: JavaScript Programming Style and Your Brain with Douglas Crockford;
  6. Native Fullscreen JavaScript API (plus jQuery plugin);
  7. Improve The User Experience By Tracking Errors;
  8. easyModal.js;
  9. Instant WordPress – pentru cei ce nu vor să-și bată capul cu instalări de apache, php etc;
  10. Default WordPress Generated CSS Cheat Sheet for Beginners;
  11. Think like a Git;
  12. 7 Chrome Tips Developers & Designers May Not Know;
  13. The Node Toolbox.
  1. Demystifying jQuery 1.7′s $.Callbacks;
  2. List.js;
  3. Animate.css;
  4. Facebook HTML5 Developers’ Resource Center;
  5. Working With Design Patterns;
  6. Advanced PHP: Decapsulating Objects;
  7. How to Start Freelancing While You Work Full-Time;
  8. Don’t Hate Me Because I’m a Freelancer;

Scrie un guest post!

După articolele lui Eugen și cele ale lui Adrian am fost plăcut impresionat să văd că guest-post-urile sunt primite bine. Și spun bine atât prin prisma faptului că am primit încurajări și felicitări pe IM, cât și datorită comentariilor primite pe blog (chiar glumeam cu Eugen că la primul post despre Node JS a avut cu 10 comentarii mai mult decât media comentariilor la posturile mele :D )

Așadar, m-am gândit la următoarea chestie: dacă ești developer și

  • ai găsit rezolvarea unei probleme complexe sau
  • vrei să faci o prezentare a unui limbaj nou sau puțin cunoscut (Node JS, de exemplu) sau a unei tehnologii aparte (ex: api-uri) sau
  • pur și simplu vrei să scrii un articol interesant ce crezi că ar putea ajuta alți developeri

Cerințe: Read the rest of this entry »

Caracterele UTF-8 prin gettext

Revin cu alt ball-breaker care mi-a pierdut mai bine de jumate de zi şi pe care l-am rezolvat destul de ciudat.

Cei care au avut de lucru cu limbile unei aplicaţii pe web, au auzit probabil de gettext de la GNU. Şi WordPress foloseşte gettext cu fişiere po/mo pentru traduceri. Practic tu încarci un catalog cu definiţii şi traduceri la acele definiţii, printezi în limba care trebuie cu

echo gettext('definitie');

Mai are şi shorthand _(), eu folosesc __(), definită de mine, în caz că mai vrei să faci ceva in momentul traducerii. Read the rest of this entry »

Node.js Introducere – Server HTTP

In articolul anterior am discutat despre diferența dintre modul de programare sincron și asincron.

Pentru cine nu are instalată o versiune Node.js, accesați pagină de download. Pentru începători recomand ultima versiune (unstable), că să puteți învăța și beneficia de toate funcțiile care au fost adăugate și să evitați folosirea celor care au fost scoase.

Vom folosi exemplul de pe site-ul oficial, îl vom restructura pentru a facilita explicarea lui și vom crea fișierul exemplu.js, ce conține:

var http = require('http');

var port = 9090;
var mesaj = "<h2>Node.js - exemplu server HTTP</h2>";

var userConectat = function (request, response) {
  response.writeHead(200, {'Content-Type': 'text/plain'});
  response.write( mesaj );
  response.end();
};

var server = http.createServer( userConectat );
server.listen( port );

console.log('Accesati serverul: http://127.0.0.1:9090');

Ca să rulam fisierul: Read the rest of this entry »

Paypal IPN returnează INVALID

Mi-a permis Ionuţ să vă mai scriu din problemele care mi-au dat multă bataie de cap şi cum le-am rezolvat până la urmă.

Astăzi vă povestesc despre Paypal IPN (Instant Payment Notification). E un sistem care funcţionează cam aşa:

  • Tu trimiţi un POST către Paypal cu detaliile produsului (nume, amount, curency etc)
  • Paypal trimite înapoi alt POST după ce userul plăteşte. Acesta conţine datele plătitorului, comezii etc. POST-ul acesta merge către un link setat de merchant în interfaţa lui de Paypal.
  • La linkul respectiv, tu trebuie să iei postul care vine, să adaugi un câmp anume şi să-l trimiţi înapoi. Dacă Paypal primeşte ce trebuie, trimite înapoi la acelaşi link rezultatul: VALID sau INVALID.

Toate bune şi frumoase. Testele pe sandbox merg perfect, când treci live întoarce INVALID, fără vreun motiv anume.

Problema e în modul cum asamblezi variabilele din POST să le trimiţi înapoi la Paypal.

În manualul de implementare de la IPN, sample code-ul arată aşa: Read the rest of this entry »

  1. Understanding JavaScript OOP;
  2. Efficient Encapsulation of JavaScript Objects;
  3. money.js & open source Exchange Rates;
  4. Advanced Polling with jQuery ;
  5. New Mobile Safari stuff in iOS5: position:fixed, overflow:scroll, new input type support, web workers, ECMAScript 5;
  6. Advanced Layout Templates In WordPress Content Editor;
  7. Using the Google Analytics API in WordPress;
  8. How To: Create Tabs with the Settings API in WordPress;
  9. 0-60 with Goliath: building high-performance (Ruby) web services;
  10. Manifested – Get a jump start on converting your site to running offline using HTML5;
  11. A Programmer’s Greatest Enemy & Four Kinds of Stuck;
  12. Githaven și gitlabhq sunt două… alternative open source pentru Github;
  13. Google a scos „the next JavaScript killer language”, Dart. Care Dart „compilează” un simplu Hello World în doar 17k linii JavaScript. So, What Is Wrong About 17259 Lines Of Code ?

Două cărți

Chip.ro are în ofertă două cărți Sitepoint traduse în limba română:

Ce mă miră foarte mult este prețul foarte mic pentru ediția în limba română.

O a treia carte, mai non-techie (dar pe care o recomand oricui), Rework, este disponibilă și ea în limba română.

Nu este decât de admirat că se traduc astfel de cărți în limba română.

Kudos!

ps: nu știu dacă am văzut vreun magazin online mai aiurea și mai lent decât chip.ro!

Update

Am primit cele două cărți Sitepoint. La o primă răsfoire pot spune că:

  • Mi-au sărit în ochi câteva traduceri funny (the fold = peste îndoitură, culisoare de conținut = slidere etc)
  • Fontul mi se pare obositor. Combinația de serif cu line-height mic nu mi se pare cea mai fericită;
  • Cărțile nu au aceeași dimensiune! Chiar dacă au un număr apropiat de pagini, una este cu câțiva milimetri mai înaltă decât cealaltă, arătând un pic ciudat în bibliotecă. Iar naivii ăia de la O’Reilly au făcut toate cărțile același format!
  • Calitatea printului este bună iar hârtia cred că ar fi putut fi un pic mai groasă, că nu se supăra nimeni, chiar dacă asta însemna un preț puțin mai ridicat.

WordPress Emag Profitshare 2.0

Am tot amenințat că scot o versiune nouă a pluginului vreme de vreo’ jumătate de an. În ultimele trei-patru săptămâni am lucrat pe apucate la o versiune complet nouă a pluginului minune. Ce s-a schimbat, ce s-a întâmplat?

  • În ultimele două luni am învățat PHP OOP. Am înțeles concepte, idei, principii, iar plugin-ul nu este decât rezultatul a ceea ce am învățat;
  • Toate setările existente sunt făcute folosind Settings API. În versiunea veche, salvarea se făcea old way. Teoretic, e mai bine. Practic… aștept feedback :D
  • Dacă în primele versiuni scurtarea link-urilor se făcea folosind un script extern (link-urile fiind de forma goo.gl/url), în această versiune am abordat problema un pic diferit: link-urile păstrează url-ul blogului, având forma: http://www.iamntz.com/go/15/rework-jason-fried-david-heine, particula go fiind customizabilă din panoul de administrare. Pentru ca acest feature să funcționeste este important ca .htaccess să fie writable;
  • Există o funcție foarte basic ce îți permite să generezi un link rapid ge genul http://www.iamntz.com/go/15/ pentru a putea fi dat rapid mai departe (twitter, facebook etc). Pentru a funcționa, este nevoie de a activa link-urile scurte și bara de admin. Momentan este în teste, s-ar putea schimba ceva în viitoarele versiuni;
  • O pagină cu statistici pentru fiecare link în parte este în lucru. Din păcate încă nu există un API public, asta rămânând o problemă destul de gravă a programelor afiliate, deci statisticile/detaliile vor fi destul de… low, ca să zic așa. Statisticile vor funcționa doar dacă opțiunea de scurtare a link-urilor este bifată. Colectarea statisticilor este activată de la versiunea curentă (2.0), fără să existe momentan o pagină dedicată pentru acest feature. În acest moment, statisticile există doar la nivel de click; dacă vrei detalii de genul pagina în care a fost făcut click-ul, ora, ip etc, lasă un comentariu;
  • Îți place plugin-ul? Îți poți arăta recunoștiința față de autorul pluginul (that’s me!) activând opțiunea share your profit. Asta funcționează în felul următor: folosind funcția php rand( 0, 1000 ) se generează un număr… random între 0 și 1000. În cazul în care numărul generat este peste 950, atunci link-ul este „împărțit” cu mine. La următorul refresh se reia procesul. Din testele făcute de mine, pică peste 950 rezonabil de rar pentru a nu-ți afecta câștigurile foarte mult.

Fac încă o dată apel către cei de la Emag pentru a pune la dispoziția publicului un API, atât pentru profitshare cât și pentru magazinul în sine. Am primit răspuns: http://j.mp/qvQRg8

Acestea fiind spuse: Download!