Node.js Introducere – Module

In articolul anterior am facut o scurta analiza a codului demo de pe site-ul Node.js.

Specificatiile limbajului de programare JavaScript nu prezintă un mod robust pentru a scrie module, în timp s-au dezvoltat mai multe tipare, dar comunitatea avea nevoie de ceva general acceptat și deaceea s-a creat un sitem de standardizare a modulelor și pachetelor, CommonJS.

Node.js a implementat standardul CommonJS pentru module. Să luăm următorul exemplu:

modulul_meu.js
var Persoana = {}; // variabila privata
Persoana.nume = 'necunoscut';
Persoana.membru = true;

// functie privata
var filtru = function (attr) {
  if (typeof( attr ) === 'string') return attr;
  return null;
};

// API-ul modulului, functiile publice
exports.getNume = function () {
  return Persoana.nume;
};
exports.setNume = function (nume) {
  Persoana.nume = nume;
};
exports.isMembru = function () {
  return Persoana.membru;
};
exports.VERSIUNE = "0.0.1";
app.js
var modulul_meu = require('./modulul_meu.js'); // includem modulul

if (modulul_meu.isMembru) {
  modulul_meu.setNume( 'Andrei' );
};

console.log( modulul_meu.getNume() );

Modulul se află într-un fișier separat, funcția require() citește fișierul “modulul_meu.js”, îl evaluează și rezultatul este un obiect de forma:

{
  getNume: [Function],
  setNume: [Function],
  isMembru: [Function],
  VERSIUNE: "0.0.1"
}

Funcția require() are un mod puțin mai complicat de a căuta modulele:
require(‘modulul_meu’):

  1. caută în modulele incluse în Node.js, dacă nu este găsit,
  2. caută în modulele globale (../node/node_modules/modulul_meu/index.js), dacă nu este găsit,
  3. caută în modulele locale (./node_modules/modulul_meu/index.js)

require(‘./modulul_meu.js’): caută în directorul curent
require(‘../modulul_meu.js’): caută în directorul precedent
require(‘./module/modulul_meu.js’): caută în directorul ‘module’, aflat în directorul curent

Managerul pentru module este NPM (Node.js Package Manager). Aici puteți găsi o mulțime de module utile. Instalați NPM pentru a putea instala mai simplu modulele.

Dacă aveți întrebări sau sugestii lăsati un comentariu.

Edit:
Ascultand podcast-ul NodeUp, am aflat ca mai este un site unde sunt prezentate modulele si resurse: toolbox.no.de

Probabil ai observat că săptămâna trecută nu a apărut nici un articol cu un mănunchi de link-uri utile și/sau interesante.

Din păcate, și săptămâna aceasta situația va sta la fel și probabil și în următoarele săptămâni, cu șanse mari să fiu ocupat până la sfârșitul anului. S-au strâns câteva sute de articole în google reader, plus câteva zeci în Readitlater, am nevoie de timp să le citesc și să le sortez.

Hint: am făcut comandă de asta pentru a putea termina proiectul curent.

Instalează OSX Lion pe PC-ul tău!

Dacă ești ca mine și ai nevoie din când în când de OSX pentru diverse teste (ba un simulator de iOS, ba safari de mac e uneori stupid, ba antialias-ul fonturilor strică unele treburi, chestii d’astea), iar achiziționarea unui mac nu pare o afacere foarte bună (mai ales pentru că este DOAR pentru teste!) am o soluție care te-ar putea ajuta.

Pui mâna pe Kakewalk, instalezi și… ai un OSX.

Singura chestie un pic aiurea este că vei avea nevoie de un OSX funcțional pentru a face stick-ul de instalare.

Toată treaba durează cam 30 minute (15 minute stick-ul, 15 minute instalarea propriu zisă) și sunt șanse destul de mari să meargă „out of the box” majoritatea chestiilor. De ex, pe un EP35-DS4 mi-au mers toate componentele în afară de sunet. S-a rezolvat cu Read the rest of this entry »

Să-ți povestesc puțin de Andi

Andi e un prieten de-al meu din copilărie. Ne știm de la vreo 14-15 ani, am geek-uit împreună prin măruntaiele a nenumărate HC-uri, 486 și alte vârfuri tehnologice ale anilor 90.

În timp, s-a produs așa, un fel de schismă, eu începând să fac web dev, el începând să facă programare deskop. C#, .net, chestii d’astea cool care mie nu-mi spun absolut nimic. :D

A făcut omu’ niște utilitare, le-a pus la download pe blogul propriu și, după ce l-am bătut la cap o grămadă, a decis să-și pună codul și pe Github!

No, ultima chestie făcută, inspirată de pluginul meu, este Quick Profitshare. Care este o aplicație standalone care stă în tray și monitorizează clipboard-ul. Dacă ai un link de emag în clipboard, pac, generează un link scurt de profitshare.

Prin urmare, io zic așa: stai cu ochiu’ pe blogul lui, nu se știe niciodată ce aplicație mai scoate. ;)

IE8 pierde COOKIE-urile în popup

Se întâmplă câteodată la câte un client cu IE8 logat în aplicaţie să deschidă un popup cu ceva şi i se cer iar credenţialele în fereastra nouă. Lucrul ăsta nu ar trebui să se întâmple şi pe browserele serioase nici nu se întîmplă. Nici pe IE8 tot timpul, e o treabă pur aleatoare.

Săpăturile m-au dus pe site la Microsoft unde am aflat cu stupoare că:

When Microsoft Internet Explorer opens a new window from a modal or modeless HTML dialog box, the new window may appear in a different process and does not contain the cookie information from the dialog box. This behavior occurs because Internet Explorer windows that are opened from a from a modal or modeless HTML dialog box may not be opened in the same process.

Şi despre măgăria asta că:

This behavior is by design.

Soluţiile ar fi 2 la număr: fie trimiţi id-ul sesiunii in URL (urâtă treabă), fie schimbă clientul din registri cum tratează IE taburile şi prcesele noi.

Serverul de SVN întoarce 500 la commit

Tips & tricks cu SVN. Ştiu ca Ionuţ e fan GIT, dar eu folosesc SVN şi mai apar probleme.

Aşa, să zicem că ai reinstalat sistemul şi nu îţi mai merge commit-ul la repo-uri. Să zicem că îţi întoarce următoarea eroare:

Server sent unexpected return value (500 Internal Server Error) in response to PUT request …

După multe săpături am aflat că poate fi de la antivirus (KAV în cazul de fata). Tot ce trebuie să faci e să adaugi serviciul în excepţii la antivirus şi o sa meargă commit-ul din nou. Probabil consideră că pleacă fişierele de pe local fără voia ta, nu ştiu… cert este cş mi-am bătut capul un picuţ până am găsit un ins cu aceeaşi problemă şi implicit rezolvarea.

Toată povestea se întâmplă pe un VPS unmanaged hostat la MXHost cu Ubuntu 10.04 pe el. Presupun că știi să instalezi sistemul de operare.

0. Un fel de introducere

Nu sunt expert Linux, iar tot ce va fi scris în acest articol reprezintă suma a mai multor tutoriale strânse (și urmate) de-a lungul timpului.

În acest tutorial voi folosi ca editor principal Vim (este editorul implicit pe sistemele Linux). Un crash course ar consta din:

  • i intră în modul de editare (insert);
  • Esc intră în modul normal, de unde poți folosi următoarele comenzi:
  • /foo caută textul foo. n / shift+n caută textul din nou (înainte și înapoi);
  • :w salvează fișierul;
  • :q iese din editor;

Dacă vrei să aprofundezi, ești invitatul meu. Sunt zeci de cărți și tutoriale ce abordează acest editor.

1. Actualizarea sistemului

sudo apt-get update
sudo apt-get upgrade -y

Toată povestea asta va dura vreo 10-15 minute iar câteva pachete au nevoie de confirmare (la care eu am răspuns cu No, după ce am avut probleme de genul: nu mai pornea serverul deloc, nu mai pornea SSH etc). Read the rest of this entry »

Patru ani cu MXhost!

Zilele trecute mi-am făcut curat prin dosarele cu facturi și garanții strânse de-a lungul timpului și am găsit prima factură și contractul cu MX Host. Din anul 2007.

În ăștia patru ani am avut foarte puține downtime-uri, majoritatea planificate, niciunul mai lung de 10-15 minute.

Absolut toate tichetele de support au avut răspuns în maxim 5 minute, indiferent de ora la care a fost puse.

După primul an de colaborare cu ei am primit acasă o agendă mare și frumoasă. Neanunțată, neașteptată.

La începutul anului am primit un VPS în teste (pe care îl folosesc ca server de git). Azi am făcut backup la serverul respectiv:

MXHost este una din puținele firme românești pe care o pot recomanda fără să stau pe gânduri.

  1. How to Reuse the Post Editor in WordPress 3.3;
  2. 15 Entertaining & Informative WordPress Infographics;
  3. Advanced WordPress Development;
  4. jQuery 1.7 a fost lansat. Sitepoint a făcut o listă cu ce e nou;
  5. Demystifying jQuery 1.7′s $.Callbacks;
  6. Why Stylesheet Abstraction Matters;
  7. Building Web Pages with Local Storage;
  8. Web Design and Development Business Tips: 3 Ways to Regulate Your Revenue;
  9. 12 Excellent Examples of “Lazy Registration”;
  10. Complete ExpressionEngine for Beginners Resource List;
  11. Healthy Computer Guide;
  12. Vim’s 20th anniversary;
  13. Make Photoshop Faster;
  14. Install Mac OS X Lion Using an All-In-One Bootable USB Drive;
  15. Beautiful and Inspiring Offices.

Read the rest of this entry »

WordPress Emag Profitshare 2.0.6

Aseară am prins puțin timp și am făcut mici modificări la cel mai tare plugin de WordPress: emag profitshare. S-au întâmplat următoarele:

  • Am rezolvat o problemă ce nu permitea scurtarea link-urilor în momentul în care se instala plugin-ul pentru prima dată (și de care s-au plâns mai mulți aici)
  • Dacă nu schimbi codul profithsare (sau lași gol) va fi folosit codul asociat contului meu și vei fi informat de treaba asta.
  • Am modificat opțiunea de „quick profitshare”. Deoarece aparent nimeni nu folosește admin bar, în colțul din dreapta-jos apare un input în care poți introduce un link spre emag. Apeși Enter și ți se generează un link scurt.
  • Am organizat un pic readme.txt.

Păreri? Sugestii? Probleme?