… 19 ianuarie, Bucureşti, Romexpo. Am fost. Poze în partea aialaltă şi pe flickr (aceleaşi, şi licenţiate tot cu by-nc-sa).

Nuş cum am ajuns să dau de o implementare a algoritmului de verificare a CNP-urilor postată de cineva pe softpedia (ocazie cu care am descoperit că nu mai recunosc o sursă de foxpro - eh, amintiri din tinereţe), şi am muncit 10 minute să fac o implementare în javascript; ete-o:

function map(fn, arr){
	var ret = [];
	for(var x = 0; x < arr.length; x++)
		ret.push(fn(arr[x]));
	return ret;
}

function reduce(fn, arr, initial){
	function iter(idx, ret){
		if(idx >= arr.length)
			return ret;
		else
			return iter(idx+1, fn(arr[idx], ret));
 	}
	return iter(initial ? 0 : 1, initial || arr[0]);
}

function sum(arr) { return reduce(function(x, y){ return x + y;}, arr, 0); }

function ccnp(cnp){
	if(cnp.length != 13)
		return false;

	cnp = map(parseInt, cnp.split(''));

	var coefs = [2, 7, 9, 1, 4, 6, 3, 5, 8, 2, 7, 9];
	var idx = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11];

	var s = map(function(x){return coefs[x] * cnp[x];}, idx);
	s = sum(s) % 11;

	return (s < 10 && s == cnp[12]) || (s == 10 && cnp[12] == 1);
}

Scris în javascript 1.7 (suportat de Firefox), map era mult mai simplu de scris ca [fn(arr[x]) for(x in arr)], dar să păstrăm lucrurile portabile…

pentru cine se întreabă:
map aplică o funcţie elementelor unui array şi returnează un array cu rezultatele
reduce combină elementele unui array cu o funcţie dată şi returnează o valoare; după ce am scris-o the functional way mi-am amintit că există for, deci se putea scrie şi aşa:

function reduce(fn, arr, initial) {
	ret = initial;
	for(var i = 0; i < arr.length; i++) { ret = fn(arr[i], ret); }
	return ret;
}

(varianta cu for şi side-effects e probabil mai rapidă, but nowhere as fun :D).

On an unrelated note: extrem de enervant editorul de la wordpress, când ai de pus snippet-uri de cod; evident, cine l-a scris a considerat că scriptul lui ştie html mai bine ca mine, prin urmare modifică şi când scriu raw HTML :(.

e la modă să fii sictirit de politichie; ăla care s-a dus la vot e musai fan al lu basescu, şi/sau prost de bubuie şi incult şi clar nu ştie ce votează, şi clar a făcut o prostie, şi mai e şi fan al lu băsescu, care, nu-i aşa, e un securist. mulţam de aprecieri. am fost la vot, am zis “da” la uninominal pentru că sunt destui oameni valoroşi care n-au fost votaţi din cauza maimuţelor cu care s-au nimerit in partid, şi am votat pld pentru că pediştii nu-s destul de liberali, iar liberalii sunt mult prea de stânga pentru gusturile mele. na că am zis-o. îs prost şi incult şi nebun.

later update: cad capeteeee… tov. vadim şi tanti bălărie de la ospiciu, şi jumătate din PIN (adică Guşă) so far… la mai mare :D

E la modă în ultima vreme ca oamenii de pe sticlă să aibă bloguri (politica firmei, cumva?); iniţial am fost sceptic, da se pare că sunt un instrument foarte bun de evaluare a calităţii respectivilor: de exemplu, din grămada de bloage răsărite pe realitatea.net, singura care merită citită e Liana Pătraş; limbaj articulat, sensibil, a priceput ce e aia blog şi are grijă de el. Pe Gheorghe nu-l citeşti, îl vezi/auzi, pentru că îşi publică monoloagele în format video. Ramona Puşcaş de la TVR scrie frumos, dar din păcate se pare că nu prea-i place, pentru că o face rar. Pe Mile Cărpenişan nu l-am citit, dar e pe listă, se pare că merită. Răzvan Dumitrescu îşi postează teasere la articolele din Gardianul, dar în materie de comentarii politice îl prefer oricând pe doc. De alţii n-am timp, dar astept sugestii :)

ipoteză:

  • ai net de la RDS
  • nu foloseşti Windows
  • nu-ţi merge netul
  • ai link, a mers până de curând, n-ai umblat la comfuter/router

aşa că suni la suport să le spui… şi te întreabă ce windows ai, şi le spui că n-ai, că foloseşti linux; mare greşeală, pentru că de aici conversaţia poate să meargă numai în 2 direcţii:

  • “ok, păi puneţi cablul într-un calculator cu windows” “n-am” “păi instalaţi” “n-am” “ăăă, ştiţi, noi nu suportăm decât Windows, pot să vă ajut cu altceva?”; nu ajută sugestia cu sex oral şi alte chestii plăcute cu care ţi-ar putea fi de ajutor persoana respectivă
  • “ok, daţi clic pe start, run, scrieţi c, m, d, apăsaţi enter” “mate, n-auzi că nu e windows? am link, a mers până acu o oră, acu dă timeout” “îmi pare rău, dar nu se potriveşte cu ce am eu aici, nu pot să introduc sesizare”; din nou, nu ajută să îl(o) trimiţi la origini

Cum se face:

Cea mai frecventă eroare spune ceva gen “timeout waiting  for PADO packets” şi se datorează echipamentului de pe scară care e chinezărie proastă şi se blochează la spike-uri livrate de onor Electrica. Un vecin cu care beau şi lucrează la ei la CATV mi-a dat o soluţie: mers la tabloul de siguranţe, identificat aia pe care scrie RDS, scos şi băgat din nou, că asta face şi meseriaşul de la ei; la mine nu merge, că stau cu chirie, am vizorişti chiar lângă panou şi mai e şi închis bine (deci nu se desface fără zgomot). Prin urmare, rămâne suportul tehnic. Pentru confruntarea cu ei trebuie ceva pregătiri:

  • mac şi ultimul IP la îndemână
  • ai windows xp, ai link, conexiunea e activă, firewall e dezactivat, IP e luat prin dhcp, ai şters şi recreat conexiunea (au un algoritm din care nu sunt capabili să iasă)
  • partea cea mai importantă, eroarea: 678

Foarte important e să te înarmezi cu multă răbdare şi să eviţi cuvintele linux şi router, altfel drona de la capătul firului se blochează şi trebuie să suni din nou.

lăsăm pozele să vorbeşte, că noi nu mai avem cuvinte:

curat murdar 3

curat murdar 2

curat murdar 1

pentru că:

  • pui deştele pe obiectiv şi ies pozele cu pete şi/sau defocalizate
  • uiţi aparatul pe aperture priority cu diafragma 8 şi te miri după aia că au ieşit pozele cu zgomot la ISO 400 (pentru cine nu are noţiuni de fizica solidului: zgomotul e direct proporţional cu tensiunea prin senzor (a.k.a. ISO speed) şi cu timpul de expunere)
  • ocazional uiţi să dai drumul la blitz (de obicei când se întâmplă ceva rapid şi irepetabil)
  • ocazional îl uiţi pe filmat când vrei de fapt să faci poză
  • foloseşti zoom-ul de 10x ca să pozezi ţâţe

e şi un avantaj: tu eşti ăla care îi pozează pe alţii în ipostaze penibile, nu invers :D

unul dintre liberalii mai spalati, onor sinistrul culturii, a zis una memorabilă.

nu, nu aci… aci nu citeşte nimeni. mai am un sait pe care ţin oarece informaţii pe care din când în când cineva găseşte utile. ete cam ce găseşte lumea la mine:

  • exemple de url cu diverse variaţii, gen ce este url (ai gresit adresa, mate)
  • mod_rewrite nu am. ce fac? sau mod_rewrite fac (ce ma întrebi pe mine?)
  • aminaked.com (again, wrong address, mate)
  • am telefon cu infrarosu (ce coincidenţă, şi eu)
  • what is ppp over ssh (it is like ssh over ppp, just backwards)
  • virgula in url (iar?)
  • spells that need nothing to work (er, um, dunno, I’m not exactly into this whitchcraft thing)
  • telefoane pe connex (am unul, nu vând)
  • download driver pentru cablu de date la motorola (dude, n-ai obosit scriind atât?)
  • tits romania (du-te la mare)
  • cum se foloseste un root linux (simplu: se sapă o groapă, se pune root-ul inăuntru, se acoperă cu pământ şi se udă; primele frunze cresc în vreo săptămână, după vreo doi ani e suficient de mare să te spânzuri de o cracă)
  • explicarea expresiilor (se face la şcoală la ora de rromână)
  • cum schimb portul la ssh in linux (rtfm)
  • asta iti trebuie pentru a crea un server de mu, tutorial server mu in romana, cum se face server de mu (şi userii de mu se numesc…)
  • ce este mod rewrite (black magic)
  • umbla pe telefoane acuma (cine?)

şi, piesa de rezistenţă: linux-fan sex (e ca ecstratereştrii şi blondele deştepte: se zvoneşte că există, dar nu există dovezi solide în acest sens)

… e cea mai cretină idee de reclamă pe care am văzut-o în ultima vreme