Blogity blog blog


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ų…

 
Tagai: Programavimas

 
14 komentarų:

avatar

ja ja, aš šioje vietoje būtent ir klapsiu akim nesuprasdama ir džiaugiuosi, kad ne mane tai ištiko.

nors kur tokių brokų nebūna?..


avatar

rtfb, ar man tik atrodo ar tas tekstas apie Language doesn’t make sence?


avatar

Aš, matyt, niekada nesuprasiu, kodėl save gerbiantys programuotojai naudoja Windows. Dideli pinigai? 90% vartotojų rinkos?


avatar

Straipsnio autorius aiškiai nėra dirbęs prie produkto, juolabiau prie produkto, kurį naudoja tūkstančiai žmonių ir kuris turi būti suderinamas su kitais produktais ir kai kurie iš tų produktų yra iš tikrųjų seni. Čia yra linuxistų įprotis - padariau softą ir px, kad jis neveikia su kerneliu, kurio versijos septintas skaičius iš kairės yra vienetu mažesnis.
Tiek vienas tiek kitas straipsnyje pateiktas pavyzdys yra aiškus noras išlaikyti suderinamumą plečiant funkcionalumą.
O visi nesuprantantys iškart iš paskos - taip taip, MS yra šūdas, jo jo, mes programuojam geriau, gaunam 20x kartų mažiau ir nesuprantam kodėl tokie brangūs programuotojai taip blogai programuoja.


avatar

rtfb, dabar tau aiškiau?


avatar

Kikenau du kartus - sakitydamas straipsnį, po to Giedriaus komentarą.

Rtfb, pasistenk aiškiai dirbt prie produkto, juolabiau prie produkto, kurį naudoja tūkstančiai žmonių ir kuris turi būti suderinamas su kitais produktais ir kai kurie iš tų produktų yra iš tikrųjų seni. Nes žmonės painiojasi.


avatar

Giedriau, jau 6 metus dirbu prie produkto, turinčio tūkstančius vartotojų, 20 metų istoriją ir kurio pagrindinė vertė -- suderinamumas su kitais produktais.

Ar legacy yra pasiteisinimas kretinizmui? Mano pasaulyje, ne.

Beje, dėl MS atakavimo, kitame „kaip nereikia programuoti“ įraše planuoju pakalbėti apie vieną atviro kodo perliuką. Taip kad čia kalba eina ne apie produktus ar jų šeimas, o apie programuotojų klaidas. Taip tik gaunasi, kad MS’ui labiau sekasi užlipti ant šitos scenos (kaži kodėl?).

O šiaip ačiū, prajuokinai :-)


avatar

Aš tai kikenu įsivaizduodamas rtfb veidą kai jis pagaliau nušliauš iki darbo ir perskaitys visas šitas blevyzgas :D Vytai, užrašyk tą „matą“ kuris pirmas galvon ateis :D


avatar

Jago, soriukas :-). Atsikėliau ir suskaičiau dar neprabudęs, tai matai neprasmuko :-)


avatar

BigJ, turiu nuliūdinti, makes sense. Extremely backward sense, but still :-)

Mariau, taip, dėl rinkos. Peržiūrėk kiek šiuo metu rinkoje non-Windows darbo pasiūlymų ;-)


avatar

Dėl BigJ pastabos… Įtempus diplominių darbų ir prastų mokslinių straipsnių skaitymo įgūdžius, įmanoma bandyti suprasti, kas ten parašyta.



avatar

Kiek aš girdėjau (vieno pažįstamoblog įrašas, rusiškai: http://blog.gamedeff.com/?p=204 ), tai apskritai Windows codebase kokybė labai aukšta.

Aišku, tokių va perliukų būna visur. Ir nebūtinai Windowsuose. Pvz., vakar aš prašvaisčiau pusdienį ant to, kad Perl’o system() kai kuriais atvejais gali įvykdyti komandą du kartus (WTF?!).


avatar

Ačiū už linką, Arai.

Kas dėl codebase kokybės, tai viena vertus, nesiginčiju, man irgi yra tekę bendrauti su MS insideriais. Iš kitos pusės, galima labai gražiu ir tvarkingu kodu suprogramuoti šūdą. Lengvai :-)

Klaidas mes visi darome, neclaiminu nedarąs pats ir nesitikiu to iš kitų. Užtat ko labai tikiuosi, tai adekvataus pataisymo. Žiū, mano cituota dokumentacija rašo apie Windows Installer v3.0 (tikriausiai? Arba apie v4.5). O klaida akivaizdžiai padaryta rašant v1.x, kai kažkas po schema freezo sugalvojo dadurti fyčeriuką.

Dešimt metų supportinti per šikną įkištą hacką ir jo nepataisyti nėra gerai. Nu niekaip :-)


Mano nacis spam-filtras visus laiko botais.
Išspręskite šitą captcha jeigu jūs ne toks:

9 + 9 =