Hacuind la Wordpress : Asa da, asa nu
Acest articol se preocupa cu matarai tehnice pentru experti. Daca nu sunteti experti si nici nu va intereseaza matarai tehnice, banuiesc ca n-aveti de ce va plinge daca va plictiseste.
Chestia-i cam asa : recentele incercari ale unui pustan anonim de-a face pe desteptul au pus in evidenta o serioasa slabiciune de constructie a wordpress. Ca in general asa merge treaba, cine vrea sa-i faca rau omului destept sfirseste prin a-i face bine, ca vrea, ca nu vrea. Pentru ca nu-i dupa el. (Si idem cine vrea sa-i faca bine prostului sfirseste facindu-i rau tot indiferent ca vrea sau nu, si tot pentru ca nu-i dupa el).
Si-acum : unii dintre noi, ca de exemplu eu, prefera sa afiseze un articol ales intimplator pe prima pagina a blogului. Nu discutam acum ca de ce, pur si simplu asa prefera ei. Chestia asta se poate face, bineinteles, cum am zis acolo in articolul citat. Doar ca Wordpress-ul fiind prost scris, are deosebit de idioata inspiratie (doara codu-i poezie, nu ?) de-a transforma
query_posts (‘orderby’ => rand );
in
SELECT ORDER BY RAND() DESC LIMIT 0, 1
Asa ceva nu se face, pur si simplu, e interzis select order by rand. A, ca pentru blogurile de cinci articole si zece accesari pe zi "merge si asa". Sigur ca da, merge si asa. Trilema are spre cinci mii de articole si serveste binisor peste zece mii de accesari pe zi. Spre o suta, asa. Inseamna asta cinci miliarde de Handler_read_rnd_next pe zi ? Inseamna. Problem.
Asa ca procedam la o micuta modificare :
SELECT COUNT(posts.ID) FROM posts WHERE blabla
SELECT MAX(posts.ID) FROM posts WHERE blabla
$pick = mt_rand(0,$result);
SELECT posts.ID FROM posts WHERE blabla LIMIT $pick,1
SELECT posts.ID FROM posts WHERE blabla AND posts.ID >= $pick LIMIT 0, 1
si pe urmaquery_posts('p='.$result);
Sper c-ati priceput din cvasicod : intii aflam cite articole sunt in baza de date care blabla (de exemplu, care-s cu statutul "published", sau alte asemenea), apoi alegem un numar aleator cu Mersene Twister (in caz ca n-ati stiut de unde vine mt_ ala), apoi alegem al atitelea articol si apoi il bagam pe git wordpress-ului.
Da, sunt doua cereri in plus facute de mina, pe genunchi. Cu toate acestea, hacuiala asta e cam doua spre trei ordine de marime mai eficienta decit order by rand. De fapt, si cautatul printr-un rolodex, cu mina, e mai eficient decit order by rand.
Sigur, daca wordpress era scris bine de programatori competenti in loc sa fie scris aiurea de struti nu era nevoie sa fac eu hacuieli, pentru ca implementau ei corect ‘orderby’ => rand. Da' daca n-am avut noroc ?
PS. Nu-i prima data cind is deosebit de idioti, de altfel. Sa reamintim numa' faza precedenta de-o imbecilitate sideranta, descoperita tot asa, la un moment de stress.
Cacodu-i poezie e perfect adevarat. Ca nu orice putoi e poet e exact la fel de adevarat.
Friday, 18 November 2011
Acum esti hater pe opensource, parca nu te agitai tu closed, cu licenta, cu d'le nu, softu' de lucru trebe sa fie open.
Self-owned-muiat.
Friday, 18 November 2011
N-am inteles rationamentu'.
Friday, 18 November 2011
Pai pe tine te deranjeaza ca wp functioneaza prost.
WP e open-source, unde bug-urile le testeaza vreun fanatic dala gnu prin subsol, nu niste programatori platiti, poate cine stie 1-2 maxim, care nu pot acoperi toate erorile.
Garantia licentei e ca ba plm, acolo ar trebui sa fie un birou care fac testari si asa.
Daca WP costa 0, nu inteleg de ce te plangi.
Asta si ai putea frumuseli sa raportezi si tu bug-uri la ei pe forum ceva.
Friday, 18 November 2011
Ma pling pentru ca-i prost scrisa. Nu inteleg ce nu intelegi.
Friday, 18 November 2011
N-ai dreptul ca-i gratis, as it is.
N-ai platit licenta, nu poti sa zici ca d'le ce investie de rahat, in ce plm am bagat banii, pentru ca e free. Deci suferi consecintele.
Friday, 18 November 2011
N-ai dreptul ca-i gratis, as it is.
N-ai platit licenta, nu poti sa zici ca d'le ce investie de rahat, in ce plm am bagat banii, pentru ca e free. Deci suferi consecintele.
¿Lo quires escrito en otro idioma/que escriba en otro idioma? :D
Friday, 18 November 2011
pfoai deci ce muista e conexiunea d´le.
Friday, 18 November 2011
Dar eu nu zic ca "e investitie de rahat". Eu zic ca e cod de rahat.
Caz ilustrativ-educativ : eu trec pe strada. Pe linga mine trece o grasa. Io ma intorc spre o gagica la care aparent viseaza unu' Liviu, nu-l cunosti, da' cu toate astea deocamdata o fut io si-i zic : uite la grasa aia.
Care-i problema ? Ca n-am fost insurat cu grasa sa pot zice ce investitie de cacat e ea ? Pai io nici nu zic ca-i o investitie de cacat. Io zic ca-i o grasa.
Friday, 18 November 2011
Mda.
Saturday, 19 November 2011
Sal'tare, Mirceo!
Afara de blog nu am citit ce mai ai pe-aici. Citind in dunga, am inteles ca ai hosting propriu (sau nu?) asa ca te-as ruga sa-mi spui cum e treaba cu hostingul la tine (daca ai) si ce fel de hosting s-ar potrivi pentru un site identic cu okazii. ro?
O prietena vrea sa-si faca un astfel de site si a apelat la mine in acest sens iar eu i-am zis ca stiu doar din auzite de asa ceva. A zis ca nu e nicio graba, cica sa invatz cum se face site-ul (discutia pornise de la faptul ca vreau sa-mi cumpar hosting pt blog) ca are incredere in mine.
Acum eu intreb cum e treaba cu site-ul? Vine "ceva" odata cu hostingul sau trebuie sa imi iau unu gratuit(wordpress) pe care, mai apoi, sa-l transfer?
Saturday, 19 November 2011
Mei, tu pui o intrebare cam de tipul "salut, am vorbit cu o prietena care vrea sa-si faca fabrica de masini cam ca Dacia si sa ii fac eu managementul de productie".
Un site "identic cu okazii.ro" nu veti face voi doi dat fiind ca oricit or fi de retardati aia de la Netbridge, totusi stau pe ceva milioane. Da' luati ceva gen AJ Auction Pro / PHP Pro Bid (nu mai retin cit era licenta, fo' 200 de dolari ?) si un server dedicat mai ieftinut (la vreo suta de dolari pe luna ar trebui sa gasiti ceva ok), instalati-va site-ul si distrati-va pe-acolo.
E drept ca-s bani aruncati pe geam din punctul economic de vedere, da' cum ziceam dincoace merita stricati banii aia pentru a invata cite una-alta. Ce mai is trei-patru-cinci sute de dolari in zilele noastre ? Altii strica zeci de milioane cam in exact acelasi scop si cam cu aceeasi utilitate.
Saturday, 19 November 2011
sa-mi trag una, n-am realizat ca rand e de cacat... sa moara oracle nu alta
Saturday, 19 November 2011
SELECT MAX(posts.ID) FROM posts WHERE blabla
$pick = mt_rand(0,$result);
SELECT posts.ID FROM posts WHERE blabla AND posts.ID >= $result LIMIT 0, 1
query_posts(’p=’.$result);
Saturday, 19 November 2011
@F De ce esti hater bwey asta ?
Ps. Mi se sopteste din off : ORDER BY DBMS_CRYPTO.randominteger
@Anonimosu Ca bine zici.
Saturday, 19 November 2011
SELECT FROM WHERE RAND()>0.99 ORDER BY RAND() e o metoda sa tai o buna parte din overhead. Nu chiar 99% pentru ca valorile random tot trebuie generate dar macar nu mai ti in memorie toata tabla.
Saturday, 19 November 2011
Parca tot mai bine cu mt_rand.
Saturday, 19 November 2011
ohay
Saturday, 19 November 2011
Asa nu
Saturday, 19 November 2011
nevermind
Saturday, 19 November 2011
da' fuck nigga?!
Saturday, 19 November 2011
Confirm ce zice freud.
Sunday, 20 November 2011
confirm ce zice Trompi
Sunday, 20 November 2011
ba ce hater esti, mi-ai schimbat avatarul pe jewfain.
Sunday, 20 November 2011
Dovada ca Freud e de fapt eu : http://polimedia.us/fain/societate/tribunalul-bucuresti-a-respins-cererea-de-infiintare-a-partidului-poporului-pe-un-articol-inexistent-din-constitutie/#c86939
Sunday, 20 November 2011
mUE