Blogity blog blog


Persikrausčiau

2009-08-12, rtfb

Ilgai neprisiruošiau atlikti reikiamų darbų, bet vakar sutapo reikiama nuotaika su dar kažkuo, ko tam reikia, ir nusipirkau domeną, beigi perkėliau turinį pas jago.

Štai jis: http://www.rtfb.lt/.

Ačiū Ilzei, kurios džiaugsmas dėl ekvivalento buvo dalis to „dar kažko“, ko man trūko, kad prisiruošt :-)

Senasis rtfb.gamedev.lt kol kas dar irgi veikia, bet tik kol sutvarkysiu visus reikiamus „page has moved“.

 

Kaip nereikia programuoti, dublis du

2009-07-15, rtfb

Scenoje vėl Redmondo rastamanai. Šįkart jų čempionai, Windows Installer komanda.

Citata iš dokumentacijos (apie reliacinės bazės stulpelį):

===============================================================
Display (type Integer)
----------------------
    The number in this field specifies the order in which the
feature is to be displayed in the user interface.
    The value also determines whether or not the feature is
initially displayed expanded or collapsed. If the value is null
or 0 (zero), the record is not displayed.
    * If the value is odd, the feature node is expanded initially.
    * If the value is even, the feature node is collapsed initially.
===============================================================

(http://msdn.microsoft.com/en-us/library/aa368585(VS.85).aspx)

Gražu, ar ne? Ėmė ir sukišo nesusijusius parametrus į vieną skaičių. Matyt, taupo baitus. Windows Installeryje. Ha ha!

Bet čia nieko. Sunku patikėti, bet tai yra gėlytės, lyginant su tikru perlu. Toliau kalba eina apie kitą lentelę, Signature, su kurios pagalba galima sistemoje ieškoti, ar yra jums reikalingas failas. Pvz., ar yra .NET’as ir kokia jo versija. Viskas puiku, viskas faina. Bet štai padarai, ir neveikia. Tada žiūri kodėl ir randi šitokį siurprizą (skaitykit atidžiai):

===============================================================
Languages (type Text)
---------------------
    The languages supported by the file.

MinVersion (type Text)
----------------------
    The minimum version of the file, with a language comparison.
If this field is specified, then the file must have a version
that is at least equal to MinVersion. If the file has an equal
version to the MinVersion field value but the language specified
in the Languages column differs, the file does not satisfy the
signature filter criteria.

    Note: The language specified in the Languages column is used
in the comparison and there is no way to ignore language. If you
want a file to meet the MinVersion field requirement regardless
of language, you must enter a value in the MinVersion field that
is one less than the actual value. For example, if the minimum
version for the filter is 2.0.2600.1183, use 2.0.2600.1182 to find
the file without matching the language information.
===============================================================

(http://msdn.microsoft.com/en-us/library/aa371853(VS.85).aspx)

Дорогая редакция, я фалломорфируюсь. Mėgstu sakyti, kad aš irgi noriu tokios žolės, bet šiuo atveju, tai nu ir nafig, tokio šūdo aš nerūkysiu.

Neapsiimsiu aiškinti kas čia negerai. Kad apsakyti tai žodžiais, reikia būti poetu. Ir dar, ko gero, rašyti klasikine kalba ir hegzametru. Na, jūs suprantat kur lenkiu.

Jeigu kažkam iš skaitytojų neprogramuotojų neaišku apie ką aš čia, patikėkite mano žodžiu, tai tas retas atvejis, kai palaimintas tas, kuris sėdi ir karpo ausimis nieko nesuprasdamas. Tikrai. Žmogų, be daugelio metų dvasinių treniruočių, staiga suvokusį šito kretinizmo mastą, gali ištikti nihilizmo priepuolis.

O programuotojams tema pamąstymui: jeigu komanda, kuri daro vieną iš core OS komponentų, sugeba paleisti į productioną šitokį kolosalaus masto mėšlą, ką galima manyti apie bendrą to komponento kokybę? Ar galima daryti prielaidą, kad kiti, į proto ribas telpantys, to komponento aspektai, yra geresni tyčia, ar taip gavosi nesąmoningai? Ir svarbiausia, kaip jaustis vartotojui, kuriam pateikiamas softas yra pošlykštis dėl to, kad pastatytas ant mėšlo krūvos, kuriai nepateikiama alternatyva?

Mieli kolegos, susimildami, būkit geri, nevartokite darbe svaigalų…

 

Ką aš šiandien veikiau darbe, arba kaip nereikia programuoti

2009-04-23, rtfb

Vakar darbe pabaigiau vieną darbelį ir prieš dėdamas jį į revizijų kontrolę, nusprendžiau pabūti doras ir padaryti tai, ką mes vadinam TMR: Total Massive Rebuild. Tai veiksmas, kai perkompiliuoji visai visą produktą, kad įsitikinti, kad niekam nieko nesugadinai.

Nu cvs up, nu make clean, nu make all. Įprasti dalykai. Kompiliuojasi.

Tik kompiliuojasi neilgai, sustoja, nes sugriūna kažkuris unit testas. Galvoju, WTF? Bet aiškintis neturėjau laiko, tai užsiėmiau tuo šiandien.

Gana greitai išsiaiškinu kodėl griūna testas -- kolega neseniai padarė pakeitimą, visai gerą pakeitimą, dėl kurio šita problema ir turi išlįsti, o ne tyliai likti praignoruota. Viskas lyg ir tvarkoj. Bet vienas dalykas netvarkoj -- o kodėl man išlenda šita klaida, o kitiems ne?

Padebuginus paaiškėja, kad nesuveikia štai toks kodas:

mkdir ("%TEMP%/sub1/sub2/sub3/.../sub28/sub29");

(Tik vietoj %TEMP% ten buvo tikras kelias į temp direktoriją: C:\Users\Vytautas.Saltenis\AppData\Ir\Dar\Kažkas\Nepamenu\Kas\. Nu ir, aišku, vietoj daugtaškio visi trūkstami sub-sub-sub.)

Įtarimas aiškus -- kažkodėl viršija MAX_PATH. Betgi nusikopijuojam tą eilutę, pamatuojam jos ilgį ir matom, kad ne, neviršija. Jos ilgis 248. Va šitoj vietoj prasideda kondicija “O-ba…”.

Pirma mintis: gal aš neteisingai atsimenu kiek yra MAX_PATH? Pasitikrinu, 260. Reiškia teisingai, ne tas…

Tada tikrinam klaidos kodą. errno po mkdir() būna 2, kas yra ENOENT, ką dokumentacija iškilmingai išaiškina: “Path was not found.”. Blet. Koks dar not found? Aš gi sukurti bandau!

Gūglinam kaip ant Vindauso padarytas mkdir(). Randam, kad ten jis yra plonas wrapperis ant CreateDirectory() -- “gerai bent tiek, o ne atskira realizacija”, spėju pagalvoti.

OK, tad kaipgi galima priversti CreateDirectory() nesuveikti? Ten yra kažkoks antras parametras, kažkas su security, gal ten kažkas ne taip? Nu, debuginam visaip kaip išsijuosę, ir žiūrim, kad mkdir() padarytas maždaug va taip:

int mkdir (char *path)
{
    return CreateDirectory (path, NULL);
}

Blyn. Nu irgi nėra kam nesuveikti… Nebent tas NULL 20 metų veikė, o dabar neveikia. Vėjai.

Bet čia eiga pasisuka link atomazgos, prieinama prie <a href="http://msdn.microsoft.com/en-us/library/aa363855(VS.85).aspx">CreateDirectory()</a> dokumentacijos. Paskaitom prierašą prie pirmo parametro, ir liekam “в охуе”:

“There is a default string size limit for paths of 248 characters. This limit is related to how the CreateDirectory function parses paths.”

Bingo! Pasirodo, visgi susidūriau su limitu, pasiaiškinam kodėl kiti nesusidūrė, pataisom ir ilgai ir laimingai gyvenam. Boring.

The fun part! Kuo galvojo tas senovinis Microsoft darbuotojas, kuris parašė CreateDirectory()? Ar jis išvis galvojo? Ne, nu rimtai. Gaunasi taip: mūsų sistemoje apribojimas kelio ilgiui yra 260, bet aš chujovas programuotojas, dėl to nemoku suprogramuoti taip, kad būčiau suderinamas su likusia sistema ir padarysiu 248 ir dokumentacijoje parašysiu, kad aš chujovas programuotojas. Rimtai, taip išeina. Paskaitykit dar kartą citatą iš dokumentacijos:

“There is a default string size limit for paths of 248 characters. This limit is related to how impaired was the original author of CreateDirectory.”

Pakalbam apie tai su kolegomis, pažvengiam, aptariam, paspėliojam kodėl 248, o ne 246, kodėl išvis yra toks MAX_PATH ir kodėl jis 260, o ne 256 ir pan… Linksmiausia išsakyta versija tokia: o nefig tau kurti direktorijos, į kurią paskui netilps 8.3 failas! Dėl to ir MAX_PATH - 12 = 248. Skamba įtikinamai ;-)

Akylesni skaitytojai gal pastebėjo ir iki šiol nesupranta kodėl gi man neveikė? Juk mano kelio ilgis buvo 248, ir funkcija priima 248. Turi veikti. Cha cha! Nieko jūs nesuprantat! Chujovą funkciją reikia ne tik chujovai suprogramuoti, ją paskui dar reikia ir chujovai dokumentuoti! Kitaip gausis tik pusiau chujova funkcija. Iš tikro jinai veikia su keliais iki 247 simbolių ilgio imtinai, o dokumentatorius parašė kokio dydžio buferis ten viduje naudojamas keliui kartu su terminuojančiu nuliu laikyti.

Atrodytų, tokia vat nuotaikinga istorija. Ir maniau, kad toliau jau nėra kur, kad čia viršūnė. Nope, naivu. Betvarkydamas mūsų kodą, užklydau į kitos įdomios funkcijos <a href="http://msdn.microsoft.com/en-us/library/aa364991.aspx">GetTempFileName()</a> dokumentaciją. Skaitom pirmo parametro aprašymą:

“The directory path for the file name. […] The string cannot be longer than MAX_PATH–14 characters or GetTempFileName will fail. If this parameter is NULL, the function fails.”

Uch ty! Štai jums ir 246! Man dabar baisu į gūglą įvesti “MAX_PATH - 17”, bijau, kad ką nors suras :-)

Beje, plika akim tai sunkiai įžiūrima, bet ten dokumentacijoj parašyta ne “MAX_PATH-14”. Rimtai, nejuokauju. Ten ne minusas, ten tipografinis brūkšnys, “En dash” vadinasi. Ir jeigu nukopijuosi tą daiktą į kodą, gausi keistų pranešimų nuo kompiliatoriaus, versijų kontrolės sistemos ir kitų “suinteresuotų šalių”.

Va taip vat. Pyzdėc, gerbiamieji Redmondo programuotojai. Pyz-dėc.

 

Plaukėm Širvinta (ta, kur į Šventąją (ta, kur į Nerį)) -- pailsėjau gamtoje

2009-03-22, rtfb

Upė šaltuonėlė - Mano Širvinta. Rudenio lapelių Mirga priberta…

Nei ji mano, nei čia ta Širvinta, apie kurią rašė Salomėja, bet who cares?! I can haz poytree in meblog :-). Užtat šaltuonėlė. Kyzdėc kokia šaltuonėlė. Taip kardinaliai sušalęs dar turbūt gyvenime nebuvau.

Bet apie viską nuo pradžių.

Važiavom iš vakaro, kad išvengti rytinio chaosėlio. Nakvojom ne starto taške, o kažkur prie Musės, ten patogi stovyklavietė. Nors didžioji plaukikų dalis ir jungėsi ryte -- nakvojom tik keturiese: aš, jago, Pofkė iš Upių Labirinto (org) ir Jakas.

Pirmas dalykas ne pagal kanonus, ką padarėm, buvo dar besipakuojant dalykus: „Jago, palatkių neimam, ane?“ „Ajo, galim neimt“. Tai neėmėm :-). Mes su jago išbandinėjom neseniai „išrastą“ miegojimo būdą baidarėje su palapinskraiste, o Pofkė išvis miegojo va taip:

Pofkė miega

Taigis, 34 miegojo po atviru.

Kitas pokštas, kurį nusprendžiau priparkuoti prie pirmojo sekė iš to, kad jeigu jau miegoti po atviru prie ~nulio, tai reikia pasirūpinti, kad miegoti būtų šilta, ar ne? Teisingai! Vadinasi, žieminio miegmaišio neimam, imam vasarinį ir žiūrim, ar gerai miegasi su vasariniu ir pora megztinių ;-). Paaiškėjo, kad su mano Campusu „Light 100“, kurio komfortinė temperatūra +9, prie žadėtų -2 (kiek buvo iš tikro, nežinau) miegasi visai komfortiškai; šalta buvo tik kojoms žemiau čiurnų.

Pamiegojom (tiesa, mažokai), atsikėlėm, pavalgėm, nuvažiavom startuot. Įdomiausia buvo persirenginėti sningant. Startavom.

Upė džiugino ir nedžiugino pamainom. Ten kur džiugino, ten faina, ten kur nedžiugino, tai nuobodu iki mirties. Mat vanduo gana pakilęs ir ten, kur ne slenksčiai, atrodo vos ne kaip Neris ties Vilniumi. Kartkartėm užplaukus pašiaušto vandens ruožą, buvo smagu pirmą kartą normaliai išsibandyti naująjį laivą -- susigalvoti slalomą per ruožą, apiplaukti „va ten“, o ne kur patogiau ir panašiai. Dar kartą patiko laivo manevringumas.

Pagrindinė plaukimo bėda buvo žema temperatūra, praktiškai nenustojantys lietus, šlapdriba ir sniegas. Na ir kad būtų ne per lengva, priešpriešinis vėjas. Sumoje tai sukėlė gerokai netikėtą patyrimą, kad vos per kelias valandas mūsuose įmanoma sušalti į ožio ragą. Taip, kad net kaulų čiulpai pradėjo kristalizuotis, nepaisant visai pusėtino apsirengimo.

Vaizdas prieš pat startą:

Startas

O čia aš po finišo, šildausi ant primuso:

Finišas

Pailsėjau gamtoje su draugais. Dabar kurį laiką plaukti nebenorėsiu ;-). Įdomiausia tai, kad nesusirgau. Gal dar ir ankstoka girtis, dar tik para su kableliu praėjo, bet jau turiu vilties, kad bent jau paukščių gripo nepasigavau :-).

З.Ы. Adi, Bilbai, šiknon jūsų „mėgstu, kai šalta“! Nieko asmeniško. Tiesiog jūs nežinot ką reiškia šalta. Kai praėjus ~6val po upės, sėdi pirty, su drabužiais, geri karštą arbatą ir vis dar krečia šaltis, va čia yra Šalta!

 

Evoliucija

2009-02-12, rtfb

Dideliausių sutapimų diena, kaip kitaip pavadint… Šiandien viename forume užtaikiau ant karštos diskusijos apie evoliuciją. Aptarinėjamas buvo vieno berazumio straipsnis, neva tai akivaizdžiai paneigiantis evoliucijos teoriją.

Well… Tyčiotis iš tokių rašliavų man yra kaip ir hobis, bet labiau mėgstu tuo užsiimti prie alaus bokalo ir diskusijos forma, o ne rašyti apie tai rebuttal straipsnius. Tačiau foruminėje diskusijoje akivaizdžiai trūko kai kurių svarbių punktų pabrėžimo, juos ir surašiau. O tada pagalvojau, kad gal ir platesnei visuomenei tai bus naudinga, o tie keli pipiriukai apie keistų žmonių keistas nuomones nepagadins bendro vaizdo.

Tad štai jūsų dėmesiui šventinis ne-IT straipsnis apie mokslines teorijas su konkrečiais pavyzdžiais kaip į jas reikia žiūrėti. Už brūkšnio bus suprantamiausia, jeigu prieš tai užmesite akį į straipsnį, apie kurį eina kalba. Tik perspėju, ten tekstukas ne silpnų nervų skaitytojams ;-)


Pakvaišęs kreacionistas rašo: “The theory of evolution is not a law, but a mere theory”… Helooo! Captain Obvious, pavadinime parašyta theory. Bet čia tik šiaip. Iš tono ir konteksto matosi, kad autorius norėjo pasakyti “guess” vietoj “theory”. Kitaip tariant, jis nesupranta kas per monas yra mokslinė teorija ir kaip tai veikia.

Pradėkim nuo tos dalies, kur autorius yra atsitiktinai teisus. Evoliucijos teorija (kaip ir bet kuri kita mokslinė teorija) nebūtinai yra teisinga. Jinai gali būti netgi labai klaidinga (t.y. nesugebėti paaiškinti kad ir šimtų atskirai paimtų faktų ar stebėjimų rezultatų). Tik nuo to ji netampa mažiau teorija. Netgi dar daugiau: nuo to ji netampa mažiau teisinga! Paradoksas? Tuoj paaiškinsiu.

Aiškinant kas yra mokslinė teorija ir kaip tai veikia, man gražiausiai atrodo vienos fizikinės analogijos panagrinėjimas.

Atėjo vieną gražią dieną Izaokas. Ne, ne Abraomo sūnus, Jokūbo tėvas, o Izaokas Niutonas. Ir pareiškė, kad obuoliai krenta taip kaip krenta, o planetos sukasi taip kaip sukasi, nes gravitacija. Šiais laikais tai supaprastintai vadinama “Niutono fizika”, o jeigu tiksliau, tai Niutono gravitacijos teorija. Ir buvo jinai ilgai, ir buvo jinai labai. XIX a. pabaigoje netgi buvo kalbama apie fizikos kaip mokslo šakos artėjimą prie pabaigos, nes jau kaip ir viskas paaiškinta, o ko dar trūksta, tuoj pat bus paaiškinta ir jaunuoliui sieti ateitį su fizika neperspektyvu. Ha ha.

Taigi buvo gravitacijos teorija, kuri nu офигеть kaip gerai viską paaiškino, išskyrus porą smulkmenų, kurių nepaaiškino, bet jos tokios smulkmenos ir tokios nežymios, kad jeigu teorijoje ir trūksta kažkokių detalių, tai jas užpildysim, o pati teorija nuo to niekaip nesugrius.

Tada atėjo Maksvelis ir kažką užrašė. Kadangi Maksvelis buvo matematikas, fizikai nelabai suprato ką jis ten užrašė ir netgi nelabai suprato kam to reikia.

Paskui atėjo Einšteinas. Kadangi jis dirbo nuobodų darbą patentų biure, turėjo laiko įsiskaityti į tai, ką užrašė Maksvelis. Kad kitiems būtų lengviau, jis netgi šį bei tą supaprastino -- aplinkiniai irgi pradėjo suprasti.

Long story made short, paaiškėjo, kad Niutono gravitacijos teorija subliuško, kad Einšteino bendroji reliatyvumo teorija paaiškina gravitaciją, o Niutono -- ne. Voila, turim paneigtos teorijos pavyzdį istorijoje.

Bet ar tikrai? Kai užsirašai ant popieros visą matieką, paaiškėja, kad Niutono fizika tėra atskiras Einšteino fizikos atvejis. Kai nagrinėjamų reiškinių greičiai yra daug mažesni už šviesos greitį, nelieka skirtumo, kuria teorija remiesi. (Papildomos analogijos iš matematikos: Makloreno eilutės yra atskiras Teiloro eilučių atvejis; kvadratas yra atskiras hiperkubo atvejis).

Ką mes iš šitos istorijos sužinome? Ogi tai, kad netgi subliuškusi teorija nėra klaidinga, ji tiesiog buvo papildyta kritiniu kiekiu naujos medžiagos, kad nusipelnytų naujo pavadinimo (ir tos naujos medžiagos autorių paliaupsinimo).

Ir šiaip, mokslininkai yra labai, Labai priekabūs kažkam, kas grasinasi tapti teorija. Kiek man žinoma, modernaus mokslo istorijoje nėra nė vieno atvejo, kad teorija kažkiek laiko būtų pripažinta, o paskui sutaršyta į druzgus, ir pakeista visiškai nesuderinama teorija. Nors pagal idėją tai ir gali nutikti. Tik labai neįtikėtina. Pagrinde dėl to, kad mokslines teorijas kuria ir, kas daug svarbiau, peržiūri, tikrina ir „aprobuoja“ ne tokie kretinai kaip Evolutionary Fraud, o žmonės, kurie realiai naudoja tą daiktą ant pečių, o ne tik pro jį valgo.

Kodėl teorijos turi savybę transformuotis į naujas, vietoj to, kad kolapsuotų? Juk nuolat randama tiek daug naujų faktų! O ir šiaip, netgi kai teorijos „aprobuojamos“, kartais jau būna žinoma faktų, kurių teorija nesugeba apžioti. Mechanika čia tokia: kad ir yra/atsiranda saujelė faktų, kurių nemodifikuota teorija nepaaiškina, yra šimtai faktų, kuriuos paaiškina. Ir stačiai nesuvokiama situacija, kad turimi šiai dienai faktai būtų toks kruopštus viso reiškinio poaibis, kad jam paaiškinti labiausiai pirštųsi kardinaliai neteisinga teorija.

(Šioje vietoje būtina pastebėti, kad žmonijos istorijoje tokių klystkelių buvo didelis daug, tik jie arba buvo iki šiuolaikinio mokslo atsiradimo, arba „plaukioja“ visai nemoksliniuose sluoksniuose, kur fenomeno prigimties paaiškinimas nėra vertybė).

Dar viena teorijų savybė, užtikrinanti jų ilgaamžiškumą ir atsparumą ją iš pašaknų graužiantiems naujiems, nepaaiškinamiems, faktams, yra modelis. Paaiškinimų rinkinys be modelio nėra teorija. Teorija, su modelio pagalba, turi sugebėti paaiškinti ne tik šiai dienai žinomus faktus, bet ir naujus.

Skamba kaip science fiction? Taip, tik ne fiction. Pure science. Modelis yra formalizmų rinkinys, sutalpinantis žinomus faktus į bendrą kompleksą, plius apibrėžiantis tam tikrą aibę galimų naujų faktų. Kuo tikslesnis modelis, tuo didesnę aibę naujų faktų jis paaiškins be išplėtimo. Makes sense? Gerai, reiškia, tu gudresnis už tą idiotą, kuris bando ant pirštų paneigti evoliuciją.

Taigi, toks tad ekskursas į What Science Is and How It Works. (Beje, ypatingai puiki knyga!)

Dabar, kai jau išmanom apie teorijas, galim grįžti konkrečiai prie evoliucijos.

Pašalinkim dar keletą miskoncepcijų:

  1. Darvino teorija NElygu evoliucijos teorijai. Santykis tarp Darvino teorijos ir evoliucijos teorijos yra maždaug toks pats, kaip santykis tarp mano aukščiau aprašytos Niutono gravitacijos teorijos ir Einšteino bendrosios reliatyvumo teorijos. Beveik šimtaprocentinė analogija.

  2. Evoliucijos teorija NEnagrinėja gyvybės atsiradimo klausimo. Visos kalbos apie Urėjaus-Milerio eksperimentą, apie ląstelės formavimąsi iš aminorūgščių sriubos yra oftopikas evoliucijos kontekste. Nesakau, kad tai neįdomios temos, tiesiog nereikia komplikuoti reikalo, kai ir taip yra problemų suprantant patį reikalą.

  3. Dėl šuns veisimo tol, kol gausi katę -- complete bullshit! Pažiūrėkit į pudelius ir bolonkes ;-). O jei rimtai, tai evoliucija šito klausimo irgi NEnagrinėja. Labai svarbu suprasti šitą subtilų skirtumą. Evoliucijos teorija NEteigia, kad vienąkart išsišakojus rūšims, jos gali kada nors tolimesnės evoliucijos eigoje grįžti. Ji, žinoma, to ir neneigia, bet pagrinde dėl to, kad ji šito klausimo išvis nenagrinėja.

Given all of this, tas Evolutionary Fraud’o skaitinys jau pirmoje pastraipoje, penktame sakinyje parodo, kad autorius nesupranta apie ką kalba. Ergo, visko kas žemiau galima (ir reikia) net nenagrinėti. Tad, susimildami, jeigu matote straipsnį apie evoliucijos (ar didžiojo sprogimo, ar reliatyvumo teorijos, ar kitos pagrindinės mokslinės teorijos) paneigimą kokiame nors leidinyje, kuris nėra „Nature“ arba „Science“, būtinai atsiverskite redakcijos skiltį ir pažiūrėkite kas tai per leidinys ir ar galima juo tikėti.

Tai jau beveik kaip ir viskas. Dar tik norėjau pagrūmoti pirštu dėl antrojo termodinamikos dėsnio. Atsargiai su juo. Jis turi daug formuluočių, o ta su neišvengiamu visatos entropijos didinimu yra mažiausiai ką nors sakanti apie reiškinį (t.y. provokuojanti klaidingus dėsnio taikymus). Nekalbant jau apie tai, kad išvis diskutuotinas klausimas, ar tokia formuluotė yra teisinga, t.y. ar taip suformulavus, mes tikrai vis dar kalbam apie antrą termodinamikos dėsnį, ar jau nebe.

Va. Sveikinu visus su Darvino gimtadieniu! ;-)