Archyvas

2009.12 archyvas

Apie GOTO naudojimą, Php 5.3.0+

2009.12.27 Xamas Komentarų: 0

Taigi, Php 5.3.0 įtraukė GOTO, kaip JUMP label’į.

Gal ir nebūčiau rašęs šio įrašo, bet pačiam prisireikė labai keisto dalyko – perkelti kinamąjį į ankstesnį kodo tašką:

if(isset($var)) { $best_product_to_print = $var; <.. PRINT IT ..> }
$var = best_price_of_inserted(insert_lots_of_products($query_arr)));

Nelaimei su $output = ob_get_contents(); Php leidžia tik override’inti pvz. <title></title> tagu’s, bet ne užsettinti kintamuosius. Tad čia add_to_header(); function nepanaudosi.

PS. Jeigu kam nors kyla klausimas – kada to reikia, tai atsakau: jeigu įmonė pasirašo softą, ir jį pardavinėja krūvai įmonių. Po to kažkuriai vienai prisireikia pakeisti algoritmą kažkokiai vienai tos sistemos funkcijai. Kadangi niekas neduoda kišti nagų prie branduolio kodo, yra galimybė jį overridinti iš MODULIŲ kodo. Problema ta, kad iki šiol to pakako tik ob_get_content(); pagalba, replace’inant HTML turinį. ŠIUO ATVEJU irgi PAKAKTŲ perrašyti HTMLą. problema yra ta, kad failų ten yra šimtai, o perrašomų html kodo eilučių būtų tūkstančiai, kadangi priklausomai nuo parametrų algoritmui, skirtingas turinys yra generuojamas. Todėl logiškiausias dalykas būtų funkcija: submit_to_code_index(‘variable_name’,'variable_value’); Kadangi failai tarpusavyje bendrauja parametrų pagalba, reiktų periimti kodo valdymą, bei pateikti naujas parametro reikšmes.

Todėl pasiskaičiau keletą įdomesnių temų stackoverflow’e apie GOTO in Php.

http://stackoverflow.com/questions/723324/php-and-the-goto-statement-to-be-added-in-php-5-3

http://stackoverflow.com/questions/1900017/is-goto-in-php-evil

Ir kaip supratau, vienintelis siūlymas naudoti GOTO yra tik debug tikslais(net patys php dev’ą tą rašė). Kitaip tariant teisingiausiai GOTO apibūdino šis komentaras:

Unless you are programming in assembler, GOTO should always be treated the same way as the life vest of the airplanes: it is good to have them available, but if you need to use them it means that you are in big trouble.

Tas pats ir pluginų rašymas atgyvenusioms sistemoms – jeigu tau nurodo – nesvarbu kaip, privalai rasti sprendimą su tuo ką turi(šiuo atžvilgiu negali keisti branduolio kodo), tokiu atveju matyt galima būtų naudoti goto, arba kažkokiu kitu būdu perimti srautą( stackoverflowe iškėliau tokį klausimą).

Beje net patys Php dev’ai savo manual’e apie GOTO( /control-structures.goto.php ) yra įdėję:

Why not goto

Why not goto

Dar vienas komentaras iš StackOverFlow’o labai į temą:

in college i always used to use goto statements when i wanted to piss off my professors, muahahaha….the programs would of course still work perfectly but i could always see their eyes twitching when they’d come across those little statements espais

:)

Kitaip tariant, nėra pateisinamos priežasties naudoti goto, bet kartais nėra kitos išeities, jeigu nenori būtu ‘tuoju, kuris perkurs neteisingai veikiančią sistemą iš pagrindų‘. Tegu tai daro kiti :) .

Kalediniai sveikinimai – krabų, masažų ir operatorių meilė

2009.12.25 Xamas Komentarų: 3

Kaip visi mus myli per Kalėdas. Oj kaip myli… Ypač įmonės, visokios pažinčių svetainės kur kadaise galbūt apsilankei ir kitokio plauko sveikintojai… Taip, atspėjote, kalbu apie savo produkcijos brukalų(angl. spam) siuntimą iš Lietuvos bendrovių.

Dar ne vienais metais manęs taip nemylėjo uab’ai, ab’ai, hujabai ir visokie kitokie krabai…

O kad būti visiškai sąžiningu, ir bent nors kiek paviešinti šią informaciją internete, su mano naivia idėja kad galbūt kadanors šitie spameriai bus nubausti už neprašytus brukalus, ar bent jau toks neigiamas įrašas bloge, galbūt turės nors kokios įtakos žmonėms nesirinkti tos bendrovės paslaugų, o pasirinkti alternatyvią (kuri nesiremia braukalų siuntimo politiką)

Taigi, pradėsiu.

1 GRUPĖ: MOBILE-BOMBERIAI

Visų pirmą mane labai myli omnitel ir bitė+ konsultantai. Kadangi telefonas registruotas kitos lyties vardu, tai visai nenuostabu, kad bitė+ taip myli Tele2 abonentus, niekur neviešinančius ir nedalinančius savo asmeninio telefono numerio(būtent dėl to esu tikras, asmeninį numerį duodu tik draugams, apie darbo telefoną čia nekalbu).

Ir šią tendenciją remiantis tuo ką žinau ir iš pažįstamų žmonių, pora kartų didesnė tikimybė kad Jums paskambins iš konkurencinės bendrovės, jeigu telefonas bus registruotas merginos, o ne vyro vardu(aišku logiška – procentaliai didesnė tikimybė, kad vyras gali kreiptis į atitinkamas institucijas, nei pasiplepėjimų draugė(būtent tokį įvaizdį manau stengiasi sudaryti konkuruojančių operatorių konsultantės(nė karto nebuvo atveju kad skambinantysis būtų vyras :) )).

Parsidavusios mūsų tos lietuvaitės… Tik man smalsu, kaip tokie žmonės dar gali po to didžiuotis savo CV įrašę ‘5 metų darbo patirtis spaminant(emailu ar telefonu)’.

Taigi – per paskutinį mėnesį:

Bitė+ konsultantė paskambino 2 kartus, abu kartu pokalbį pradėjus nuo kandžios replikos antrasis sakinys buvo labai nuspėjamas:

“bet gi Jūs nežinote kokį gerą pasiūlymą mes galime Jums pasiūlyti”

Ir praeitais metais, ir šiais metais, po pareikalavimo nebeskambinėti mane ‘įtraukė’ į sąrašus žmonių, kuriems daugiau nebeskambins. Manau sėkmingai įtraukinės ir dar pora dešimtmečių :)

O paklausus kokiu būdu gavo mano telefono numerį, visą laiką atsakymas – “Jų kompe veikia random(860000000,870000000) funkciją”. Bet funkcija turi gravitacinės kreivės nuokrypį ties mano telefono numeriu, todėl vis ‘netyčia’ išrandomaizina mano numerį, o jokių ‘spam-number-listų‘ jie nesaugo ir neturi(sure dog, I believe yoo :) )

Su omnitelio skambučiu buvo analogiškai – į metus prieš šventes paskambina po kartą, ir kiekvieną kartą mano numerį išbraukia iš sąrašų.

————————-

2 GRUPĖ: SPAM-BOBERIAI

Tarp priklausančių šiai kategorijai, mane labiausiai mylėjo:

Autogidas.lt (lpč. 18):

Tiems, kurie užkuria savo automobilį, Autogidas.lt[URL] pataria, kaip saugiai vairuoti <…>
Tiems, kurie neužkuria savo automobilio, Autogidas.lt siūlo išrinkti naują[URL] arba konsultuotis forume[URL]

netasiliko ir jų konkurentas:
Autoplius.lt (lpč. 22) [iš (prie) plius.lt]:  “.. bla bla bla [URL] la la la [URL] …”

EVP International(mokėjimai.lt) (grd. 23d.) [iš (eta) evp.lt]:  Neįgrūdo url’o… Ir dar palinkėjimas tos su aiškiom užuomenom:

“palinkėti laimės, <..> gerovės ištisus metus, … turėti tokį ištikimą partnerį, <..> visada prisimenama Jus, <..> mūsų laimėjimai neatsijomi nuo Jūsų.”

DuomenųCentras.lt(grd. 23d.):

Šitie atsiuntė linką į JŪTŪBĄ: ” Kalėdinis Rudolfo sveikinimas

Ojej(!), elfas rudolfas online, kokią kūl kepurę tiuninguota pas jį, neonkių visokių pridėta mirksi. Kažkodėl klipą bežiūrint iškilo vaizdinė asocijanciją su lanva pirmininku(kalbu apie tą foto kur po internetą plačiai paplitusi su title “jis tikrai pumpuoja neleegaliai” )

Fortakas.lt(grd. 23d.) (nuo (eta) a.besita.lt ):

Daugiau gerų pasiūlymų: www.BLE BLE BLE.lt [URL]
Gerbiame privatumą ir laiką, tad atsiprašome, jei tokio pobūdžio informacija Jūsų nedomina

Aš tikiu kad jie ‘gerbia’ mano privatumą, ir siunčia pasiūlymą privačiai – į emailą. Tačiau kaip spamo siuntimu jie gerbia(taupo) mano brangų laiką(? :lol: ). Kai man reikės kokio switcherio ar atmintinės aš Jums paskambinsiu(never :lol: ). ;) Tegu pirma atsako už visas garantijas kurias atėmė iš klientų savo firmos rebuild.

Pažintys.lt(n laiškų visą gruodžio mėnesį): šitie jau užp*sę iki gyvo kaulo(atsiprašau už kalbinės kultūros stoką mano leksikone). Nesuskaičiuojamą kiekį spamina. Ypač pažintys.lt MĖGSTA priminti kad @pažintys.lt mano inbox’e sėdi daug neperskaitytų laiškų(jeigu jie būtų sąžiningi, tai parašytų ‘nė vieno neperskaityto laiško nuo draugų, bet 66 neperskaityt laiškai nuo spamerių, kurių gausu pažintys.lt, ir kuriuos jie propaguoja).
Dar ir dovanų gavau, kurios buvo mano ‘life-dream’(atsiprašau sąskaitos limito siekimo vergų, bet esu skūpas ir tokiems portalams kaip pažintys.lt nenusiunčiau nė vieno lito ):

Nepamiršk padovanoti dovanėlių pazintys.lt[URL] portale esantiems draugams!
Tam reikalui dovanojame Tau 15 kreditų :) .

Aistros Masažai (grd. 24d.) (‘Toma’, nuo (eta) aistra2010.lt ) :

Įtariu, kad būtent pažintys.lt dėka mane įtraukė ir į “aistros masažų” klientų sąrašą(nors ten niekad nesiregistravau). Gavau ‘ypatingą’ pasiūlymą. 50 proc. discountą striptizui(kaip tos mūsų lietuvaitės nusipiginusios, jau ir ‘discount’us’ galima gauti. Įdomu, gal ir derėtis įmanoma. :lol: .) bei 10 proc. nuolaidą masažui(ej kodėl masažui tik 10, o striptizui visi 50 proc. :lol: , matyt visiškos plaštakės labiau į nuolaidų programas linkusios :D ).

Ir man apskritai keista, nuo kada kalėdos tapo striptizo ir visokių intym. paslaugų laikotarpių. Kartais nėra laikoma, jog kalėdos yra šeimos ir giminių šventė (?). Na nežinau kaip kitiems, bet man asmeniškai pagalvojus apie Kalėdas į galvą pirmiausia ateina 3 dalykai – eglutė, kepta žąsis ir geri tv filmai. Na matyt būsiu tapęs senamadžiu…

—————————-

Kita dauguma į spam folderį pakliuvo, arba tai buvo nieko vertų tinklapių reklama(reklamos savo blogo įrašu jiems tikrai nedarysiu).

Įdomi pastaba. Nei besta.lt, nei aistra2010.lt domenai neegzistuoja. Nejaugi jie kažko bijo, pvz. atsakomybės už savo spamą (?) :)

Prie to pačio – ant trijų raidžių gali eiti ir visos tos ‘konsultantės su teleloto bilietėliais maximose‘ savo biustu blokuojančios mano galimybę tiesiogiai be kliūčių išeiti pro parduotuvės duris jos neperlipant.

Baigiau. 8-O

Labai seksualus video | Tėvų kontrolė – geriausios pasaulio reklamos

2009.12.19 Xamas Komentarų: 1

Tėvų kontrolės, geriausios pasaulio reklamos (“Parental control viral videos | Best Ads”)
Epinis klipas, gavęs pavadinimą “The Mother of All Ads”.

Video klipe pamatysite viską, ko tikitės iš jame esančios reklamuotojos…

Vienintelės problema yra…

Ahh… Tiesiog spauskite “Play” mygtuką – tai vienintelis būdas pamatyti visą šį klipą. :)

Gali užtrukti kažkiek laiko kol video klipas pasikraus, bet gi tokio klipo verta palaukti? :) Ar ne ?
Video klipą pažadėjo atnaujinti, kai tas pats vyrukas kūrėjams leis. :lol:

Animatorius VS animacija [HELP! atvejis], FireWall, bei AV :)

2009.12.18 Xamas Komentarų: 0

Labai juokingas video klipas parodijuojantis DI interpretacija – kada jį kontroliuoji, o kada jis perima kontrolę:

:) ))

Naujas gravitacijos krypties ir sunkio jėgos apskaičiavimas

2009.12.12 Xamas Komentarų: 0

Arba kitaip tariant – gerai įkalus išsikreipia erdvės ir laiko kontinumas, ir Niutono mechanikos gravitacijos formulės priekyje atsiranda konstanta ‘Q‘, išvedama iš išgertų bokalų kiekio: kvantorius.

Kad blogo įrašas būtų suprantamas visiems, tai parašysiu:

Kvantorius – tai daugiavietis predikatas.

Predikatas – tai sąlyga lentelės eilutei, kuri gali būti teisinga, neteisinga arba neapibrėžta.

Niutono visuotinės traukos dėsnis sako, kad bet kokie du Visatos kūnai veikia vienas kitą jėga, kurios modulis yra: F=G(m1*m2)/r2

100 ir 1 priežastis kodėl MySQL >> IBM DB2. Arba kodėl protingi naudoja MySQL

2009.12.04 Xamas Komentarų: 0

[PAPILDYTAS - 2009.12.11]

Atsakom į esminį klausimą:

“Why Mysql is hundred and one time better than IBM DB2″.

Pirma:

MySQL’eriai rašo: LIMIT 12;

IBM DB2’seriai rašo: FETCH FIRST 12 ROWS ONLY;

Antra:

MySQL’eriai rašo: LIMIT 67,12

IBM DB2’seriai: nervinasi ir rašo lioliasdešimt eilučių užklausą

Trečia:

MySQL’eriai rašo:

(SELECT a FROM b WHERE c LIMIT 67,12)
UNION (SELECT a FROM b WHERE c LIMIT 111,2) ORDER BY a LIMIT 16,21

IBM DB2’seriai:

priversti pasiduoti, nes jų galvoje užklausos kodo
kiekis įgavo atžymą brain_overflow=1.

Ketvirta:

Mysql’eriai rašo:

auto_increment

IBM DB2’seriai rašo:

GENERATED ALWAYS AS IDENTITY (START WITH 1, INCREMENT BY 1)

Penkta:

Mysql’eriai rašo:
$man_ne_zhopa = mysql_insert_id();
IBM DB2’seriai rašo:
$i_luv_word_identity = IDENTITY_VAL_LOCAL();

Čia iš esmė tas pats, tik kad Mysql’as panaudojo savo brand’ing funkcijos pavadinimui.

Šešta:

Mysql’eriai rašo:

CREATE TABLE IF NOT EXIST agurkai

IBM DB2’seriai rašo:

Begin atomic
 if( exists(SELECT 1 FROM syscat.tables
        WHERE tabschema = 'MYSCHEMA' AND tabname = 'agurkai')
  )
then DROP TABLE MYSCHEMA.agurkai
else CREATE TABLE MYSCHEMA.agurkai;
 end if;
 End

Septinta:

Mysql’eriai rašo:

 DROP TABLE IF EXIST agurkai

IBM DB2’seriai rašo:

Begin atomic
 if( exists(SELECT 1 FROM syscat.tables
        WHERE tabschema='MYSCHEMA' AND tabname='agurkai')
  )
then DROP TABLE MYSCHEMA.agurkai;
 end if;
 End

Aštunta:

Mysql’eriai rūpinasi resursų taupymu(field2 išnaudojam int(11), su 4******…..) :

CREATE TABLE a(
 field1 bigint(11) unsigned NOT NULL,
 filed2 int(11) unsigned NOT NULL
))

IBM DB2’seriams vietos taupymas visiškai vienodai(aukštesnę užklausą db2 parašyti gausis tik taip):

CREATE TABLE a(
 field1 bigint NOT NULL,
 filed2 bigint NOT NULL
))

Devinta:

Kad netaupo vietos DB2’seriai, jau pastebėjom. Bet kad jie apskritai įgnoruoja ‘taupius’ laukelių tipus, t.y. tinyint’ą tai dar ‘protingiau’…

Dešimta:

Ignoruoja ir plačius laukelius jie, t.y. 65535′iolio TEXT’ą, bei ilgesnįjį jo brolį LONG TEXT’ą . Vietoj jų tik CLOB’ą gali pasiūlyti.

Vienuolikta:

MySQL šitas dalykas veiks:

FOREIGN KEY organizer_validation(identity_code)

O štai DB2 jau spjaudysis errorais – neva DB2 nesupranta ilgesnių nei 18 simbolių.

Dvylikta:

Mysql’e veiks ir šitas dalykas:

field3 varchar(255)

O štai DB2 šis limitas nestandartinis – ir maksimalus kuris veiks:

field3 varchar(254)

Turint omenyje kad PC viskas dvejetainiame/šešioliktainiame variante, tai MySQL’o [0-255] rodos į temą, o štai DB2 matyt kažkur kitur ;)

Trylikta:

O čia dar vienas bajeris, privertęs mane nusijuokti iš DB2 ‘developerio’ atsakymo.

Man įdomu ką IBM DB2’seriai atsakytų į klausimą – aš noriu nustatyti naują auto_incement reikšmę(tarkim prirašiau šlamšto, ir dabar vėl noriu kad skaičiuotų nuo 97). Mysql’eris parašys:

ALTER TABLE `table name` AUTO_INCREMENT=new_value;

DB2′erio pirmoji mintis:

aaaaaaaaa…………oooooooooooo……. hmmmmmmmm……????…. Nobody use that.

Ir tada duos ‘klasišką patarimą‘(paimta tiesiai iš IBM DB2 vieno iš support saitų):

What the heck are you doing that you need to do such a thing.
Either make you ID so big you'll never have to worry about it BIGINT
or DEC(31,0) if you are afraid of liability of your descendants ;-)
Or don't use identity to begin with and use a natural key.
Cheers, Serge
--
Serge Rielau
DB2 Solutions Development
IBM Toronto Lab

Jo, ilgam prajuokino. Na visad galima spręsti problemą įvairiai. Tarkim aš nežinau kokio dydžio bus duomenų masyvas mano programoje – tai velniop tuos pointerius ir ‘dynamic lists’ – susikuriame kvadratilijonį kvadratilijonuoju masyvą, išskirdami 100GB vietos harde ir galvos neskaudės. Sakyčiau būtų tikrai TOK(tobulai optimalus kodas). ;) :D :D:D

Ale linksmi žmonės dirba IBM. Vietoje pripažinimo kad FAIL tas jų DB2, pasakys ‘nafig tau to reikia:D .

————

Na bet galiausiai atsirado dar didesnis proto šviesuolis, kuris pasiūlė sukurti trigerį kuris executinis RESTART funkciją kas kuris laikas. Savo nuomonę apie trigerius(kuri yra vieša paslapis), aš išsakysiu įrašo pabaigoje.

Kitas pasiūlė nudropinti visą lentelę ir iš naujo perkurti :D .

——————-

………. Ir taip toliau :)

Tikiuosi visiems aišku “Why IBM DB2 sucks very much”.

Ir kaip pasaulyje dar gali būti žmonių kurie reikalauja programuoti šita kledaro lygio kalba.

Čia buvo retorinis pamąstymas.

—————

Pabaigai: Mano asmeninė nuomonė apie trigerius:

 sux sux sux sux sux sux sux sux sux sux sux sux sux sux sux fuck sux
 sux sux sux sux sux fuck sux sux sux sux sux sux sux sux sux sux sux
 sux sux sux sux sux sux sux sux sux sux sux sux sux sux sux fuck sux
 sux sux sux sux sux sux fuck sux sux sux sux sux sux sux sux sux sux
 sux sux sux sux sux sux sux sux sux sux sux sux sux sux sux

Beje, ar tai tik sutapimas – bet trigerį pirmą kartą ‘life ever‘ panaudojau tik universitete, kai dėl jo privalomo naudojimo tiesiog ‘užlipo’. Vienintelis atvejis kada trigeris gali būti naudojamas, tai tik tuomet kai kartu neprogramuojama pati programa – čia praktiškai trigeris leidžia interpretuoti programos kodą. Ir realybėje(teorija – gražu, realybė – kai būna iš tiesų), bet kuriam ‘newly hired software engineer’ yra daug papraščiau CTRL+F pagalba(net ir find in files atveju), išsiaiškinti ką kode reiškia dalis:

UPDATE ".DB_CLIENT."
SET client_new_orientation='".$core->validate_orientation($client['ornt'])."'
WHERE client_id=1

Nei sėdėti 2 valandas ir nesuprasti kodėl gaunami SQL_STATE errorai atlikus trivialią užklausą:

UPDATE clients SET savings_after_robery=10000.49 WHERE client_id=1

Dar mane kamuoja kažkokia mistiška nuojauta, kad per artimiausius n-metų aš jo daugiau galiu ir nebepanaudoti. :)

PS. Dar aš kartais ignoruoju ‘read more’ dalį. Todėl visą blogo įrašą šį kartą atpyliau į “excerpt’ą”.

Kategorijos: programavimas Žymos: , , , , ,