Vlákno názorů k článku Komiks: Zakázané ovoce od aspergill - Když jsem se chtěl seznámit s Perlem, stáhl...

  • Článek je starý, nové názory již nelze přidávat.
  • 27. 6. 2006 8:20

    aspergill (neregistrovaný)
    Když jsem se chtěl seznámit s Perlem, stáhl jsem si ActivePerl z netu. Při spuštění instalačního souboru to na mě vyštěklo cosi jako "Tento soubor nelze nainstalovat, pro vaši bezpečnost a pohodlí si musíte zakoupit speciální univerzální instalační program, který ho nainstaluje za vás".
    Takže to skončilo dual bootem a doinstalováním linuxu (pochopitelně s perlem).

    Jinak už před tím jsem měl potíže při programování na windows (95, 98) v tom smyslu, že po příkazu "save" se zdrojový text neuložil na disk, ale zůstal kdesi v paměťových bufferech (a interpret, případně překladač, ho nenašel), takže bylo nutno buď po každé změně ve zdrojového kódu vypnout a znovu zapnout textový editor (nebo po každé opravě soubor uložit pod jiným názvem). To samé se mi onehdy stalo i na Wxp, takže problém patrně přetrvává. Prostě jsem zhýčkaný DOSem, kde se po "save" text prostě fyzicky uloží na disk a windows se svými vychytávkami "pro pohodlnější a bezpečnější práci" mi nikdy nepřirostly k srdci.

    Záhy jsem s linuxem začal také surfovat a postupně na to nabalovat další činnosti, doma i v práci. Když mi před loňskými Vánoci kleknul disk (naštěstí se z něj dala data stáhnout), tak jsem provedl určitou revizi a zjistil, že jsem naposled startoval wokna někdy v říjnu a před tím někdy před prázdninami, v obou případech jen proto, abych se podíval do nějakých starých dat (což se dalo vyřešit i z linuxu, ale bylo mi líno). Takže jsem po namontování nového disku nechal nainstalovat jen linux, doma mám win jen na spouštění některých her, ne na vážnou práci, na se na nich dělat nedá.
  • 27. 6. 2006 14:03

    Petrjr (neregistrovaný)
    Re: ... že po příkazu "save" se zdrojový text neuložil na disk, ale zůstal kdesi v paměťových bufferech (a interpret, případně překladač, ho nenašel), takže bylo nutno buď po každé změně ve zdrojového kódu vypnout a znovu zapnout textový editor ... To samé se mi onehdy stalo i na Wxp ...

    Tak to je nesmysl. Tedy maximálně tak, kdyby to dělal ten editor, že neuloží (resp. nepoužije API ::WriteFile ale schovává si to u sebe). Jinak zpožděný zápis jde nastavit i v DOSu, parametry u smartdrv, ale _rozhodně_ to má vliv jen při vypnutí proudu, nikoli na čtení dalším programem. Protože požadavek na čtení jde opět přes OS a ten vrátí buď to z cache (i ještě nezapsané) nebo z disku (pokud už v read cache není).

    U MSW (NT a výše) je opačný problém. Nelze (resp. nenašel jsem) jak via API invalidovat read cache. Takže když něco zapíši, tak nemám šanci provést kontrolu, zda se to (na HW úrovni) zapsalo bez chyb. Všechny zápisy (i ty co jdou přímo bez write cache) se zapamatují v read cachce a neexistuje způsob jak ji obejít.

    Ale to co popisuji je právě opačný problém, než jste nastínil Vy. Nemlžte. S tím, co Vy popisujete, jsem se ještě nesetkal (na úrovni OS) a IMHO to z principu nejde (pokud nehrabete na disk jinak, přímo, asi via vlastní driver. Pak je takové chování ale bug v tom Vašem vlastním driveru, protože s tím musí počítat když obchází standardní cesty).
  • 27. 6. 2006 23:58

    aspergill (neregistrovaný)
    Nic jsem nebastlil, žádný vlastní driver. Pracoval jsem na w95 a w98 s editory Arachnofilia (specializovaný pro editaci html, ale také se v něm dají psát zdrojové kódy programů) a ded, jehož "pachatelem" je danielsoft, který sem občas přispívá. Setkával jsem se s tím jak při tvorbě .html. tak i zdrojáků pro javu.
    Na wxp jsem tentýž jev pozoroval ve standardním zápisníku, který je součástí instalace (když jsem testoval funkčnost TeX live).
    Bastlení s API je zcela za horizontem mých programátorských možností.
    Jev jsem blíže neanalyzoval, beru ho jako empiricky prokázaný fakt (asi na té úrovni, jako že kuřáci častěji umírají na rakovinu). Protože mi vadí v práci, tak jsem přešel na OS, kde se nevyskytuje. A šmytec.
  • 28. 6. 2006 15:58

    Petrjr (neregistrovaný)
    Díky moc za odpověď, docela mne to zajímá. Sice by se takový jev neměl vyskytovat ani na DOS(při standardním přístupu k disku) / W95 / W98, ale tam bych za to ruku do ohně nedal. Ale docela mne zajímají ty wxp. Mohl byste se podrobněji rozepsat, přesně které aplikace to dělaly a za jakých okolností? Tedy jestli "standardním zápisníku, který je součástí instalace" myslíte notepad.exe a instalaci windows či nějaký 3rd party sw a jeho zápisník který je jeho součástí instalace a pod. Přivítám odkazy na daný sw.

    Jsem programátor, m.j. píši sw pod MSW, a s takovým chováním jsem se u Windows zatím nesetkal - což pochopitelně neznamená, že problém neexistuje. A potřebuji vědět, jak jev vyvolat (budu vděčný i za ne úplně deterministický postup), abych ho dokázal eliminovat, případně si došlápnul na MS (np, jsem Borland-ista ;-) ).

    BTW, pracoval jste pod Admin kontem nebo User? Resp. Vyžadoval některý zmiňovaný sw pro svojí činnost Admin konto?

    Budete-li ochoten mi věnovat čas, odpověď směrujte buď sem nebo na mailto:datalog@datalog.cz. S díky, Adámek
  • 29. 6. 2006 23:59

    aspergill (neregistrovaný)
    Popisovaný jev jsem pozoroval na win95 a win98, když jsem dával dohromady nějaké drobné programy v javě, případně kód html stránek. Pracoval jsem s editorem ded, který je z dílny danielsoftu, a dá se přes tento odkaz i vygooglovat, a arachnofilia, což je editor určený primárně pro tvorbu webu (např. má prostředky pro udržování vztahů mezi současně editovanými stránkami), nicméně má i syntax highlighting i pro tu javu.
    Před několika týdny jsem nainstaloval do počítače z texlive CD TeX (LaTeX) a jeho funkčnost jsem vyzkoušel na metapostovém programu, vytvořeném pod linuxem. Spustil jsem ho ze souboru .bat, který jsem vytvořil ve standardním notepadu, který je součástí instalace wxp v sekci příslušenství. Po spuštění to udělalo zhruba to, co jsem chtěl, akorát jsem chtěl upravit sílu jedné čáry. Tak jsem natáhl do notepadu zdrojový text, opravil v něm hodnotu příslušné proměnné, zadal soubor -> uložit, a po novém spuštění .bat souboru to bylo jako prve.
    Tak jsem si řekl "aha, wokna", ještě jednou jsem ten zdroják uložil a notepad vypnul. A pak to udělalo, co jsem chtěl.
    Pracoval jsem pravděpodobně jako user s adminovými právy, protože jinak se na win korektně ani pracovat nedá - řada aplikací se pod userem buď vůbec nerozjede nebo pracuje nekorektně (něco se snad vyladit dá, ale nemám ani čas ani chuť se v tom hrabat - zvlášť když vím, že je to jednak práce pro vš vzdělaného informatika na pár hodin, a jednak se při tom ladění dají ty wokna rozdrbat tak, že už nemusejí ani naskočit).
    Dál jsem se s tím nezabýval, protože jsem více-méně jen potřeboval vědět, zda je ta verze metapostu pro windows funkční, a zda se v pořádku nainstaluje, pokud postupujeme podle návodu na tom CD. To se mi potvrdilo. S tím metapostem si hraju pod linuxem, protože tam je možnost více pracovních ploch, jsou tam kvalitní konzoly se shellem, na prohlížení výsledků je tam ImageMagick (ve win nezbývá než spustit GIMP, což je dost "s kanonem na vrabce") atd., prostě daleko vyšší uživatelský komfort.
    Nicméně podobné problémy by vysvětlovaly, proč jsou na win tak populární integrovaná programovací prostředí (dost jsem funěl blahem nad tím, jak to má vymakané POVray, než jsem přišel na to, že v linuxu stačí mít dvě konzoly, v jedné v nějaké editoru zdroják, a z druhé se spouští kompilace a následně prohlížení (čili nějaký dávkový soubor, který to udělá)). A výsledek je v podstatě stejný.
  • 30. 6. 2006 9:37

    Petrjr (neregistrovaný)
    Dík, mrknu se na ten TeX Live CD, třeba zjistím čím to bylo. Jinak pracuji v IDE prostředí, příkazové řádce, mixuji to, dost často, vč. notepadu, a problémy daného ražení nemám.

    Jen bych trochu poopravil "admin/user" mýtus. Většina současných běžně užívaných programů je bezproblémově schopna práce pod user kontem (bez úprav) hned po instalaci. Bez nutnosti změny práv. A složitější programy, mixující společná a soukromá proměnná data, mají možnosti volby. Samozřejmě, najdou se programátoři neslušní či nezkušení, co dávají proměnná data natvrdo do read-only částí (v registrech i souborovém systému). Ale v poslední době jsem neměl žádný komerční produkt pod MSW, který by to dělal, to si firmy netroufnou. Volné programy to dělávají častěji (důvody tuším, to je na delší povídání, většinou z nezkušenosti či neznalosti prostředí) a teď mne napadá, že lidé když přechází z linuxu sáhnou raději po těch volných (často dobrých, ale pro prostředí MSW neslušně/nevhodně portovaných) variantách. Proto to zdání.
    A ještě jeden mýtus - nastavování práv. _Valná_ většina programů, které to neumí nativně, je schopna práce po cca 1-5 minutách a jednom max. dvěma úkony nastavení práv. Horní čas počítám pro fakt neschopného admina či průměrného uživatele. Samozřejmě, že začátečníkovi pod MSW to připadá nesmírně složité (cituji pár hodin práce), podobně jako nováček linuxu bude některá nastavení hledat pár hodin, přitom je to otázka 30 sekund pro člověka zběhlého v dané distribuci.

    BTW, jediný program, který se mi nepodařilo 100% rozběhnout pod userem, je staré Borlandské C++ IDE prostředí, vydané roku 1995, kde jediné co mi nefunguje je grep v rámci integrovaného prostředí (grep s výstupem zpět do integrovaného prostředí).

    Ok, dobrou, a ještě jednou díky za upřesnění.
  • 1. 7. 2006 0:26

    aspergill (neregistrovaný)
    Myslím si, že tím CD to určitě nebude, protože programy z něj byly nainstalované a CD už bylo venku. A ty programy se v podstatě instalují tak, že se kopírují do nadefinovaných adresářů - takže se ani nespouštějí přes spouštění programů (jako třeba ten notepad. Protože jde původně o programy z jiného OS, tak mají prostě koncepci spouštění z příkazového řádku s patřičnými parametry, asi by se na to dalo udělat nějaké grafické spouštění, ale nevidím k tomu důvod.
    Ten program IMHO pouze ukázal, že se text z notepadu nezapsal fyzicky na disk, takže program načítající soubor z disku tam našel jen starou verzi.

    A, mimochodem, podobný problém jsme měli v zaměstnání s jakýmsi excelovským makrem (v podstatě se do něj zapisovaly údaje z formulářů a ono je přechroustávalo do tvaru sežratelného některými statistickými funkcemi). Při vkládání cca 25. formuláře vypli proud a zjistilo se, že se nic z předchozí práce (cca 4 - 6 hodin) nebylo na disku. Tam ale mohlo jít i o blbě napsané makro.
  • 1. 7. 2006 3:24

    Petrjr (neregistrovaný)
    Špatně jsem se vyjádřil - nešlo mi o CD, ale o ten sw na něm, pochopitelně :-)

    Jinak nevím jak pod *nix systémy, ale pod MSW je možné určitým způsobem čekat na událost typu změna souboru nebo libovolná změna v adresáři (FindFirstChangeNotification). A když jsem si s tím hrál (bude to určitě 5 či více let, na w9x systému), tak toto mi opravdu dělalo potíže v single-therad programu (už si nepamatuji, jestli se vůbec neoznámilo nebo bylo zpožděno). Ale data zapsána byla a program který nehlídal události, ale prostě rovnou četl, neměl problémy. Ten, který to extra hlídal, si myslel že data jsou stará (přestože reálně nebyla), protože nedostal notify o změně. (Btw, nemohu vyloučit mojí programátorskou chybu, jen jsem si s tím hrál a jakmile byl problém, nechal jsem toho, protože jsem to k ničemu nepotřeboval, ztráta času debugováním.)
    Ale výše uvedené by neměl být náš případ, protože jestli jsem pochopil, tak se zde LaTeX pokaždé znovu spustil, neběžel stále aby mohl hlídat změny. A nepředpokládám, že by si LaTeX instaloval vlastní service (MSW obdoba *nix daemona) který by stále běžel na pozadí a monitoroval změny.

    P.S.: Notepad jsem snad nikdy nespustil přes "start menu" (teď koukám, on tam fakt je). Prostě napíši "notepad" a enter ;-) .
    Jinak spuštění programů linkem z menu či plochy ("grafickým" spouštěním) nebo přímo z příkazové řádky je ekvivalentní. Obojí nakonec použije stejné API volání (::CreateProcess). U spuštění z menu se jen v ::CreateProcess nenastaví žádné handle pro stdxxx.
    A rozdíl mezi konzolovou a GUI verzí cílového programu je jen ten, že u aplikace konzolové (přesněji řečeno při překladu označené jako konzolová) XP předem zkontrolují, zda má zdrojový program(ten který volá CreateProcess) otevřenou konzoli - a pokud nemá, tak OS spustí další terminál(v samostatném GUI okně) a přesměruje stdxxx cílového procesu na ten nově otevřený terminál. Tedy pouze šígrošády se stdin, stdout a stderr (aby byly otevřeny, pokud je to očekáváno). Nic jiného.