abclinuxu.cz AbcLinuxu.cz itbiz.cz ITBiz.cz HDmag.cz HDmag.cz abcprace.cz AbcPráce.cz
AbcLinuxu hledá autory!
Inzerujte na AbcPráce.cz od 950 Kč
Rozšířené hledání
×
    dnes 01:11 | Bezpečnostní upozornění

    Red Hat řeší bezpečnostní incident, při kterém došlo k neoprávněnému přístupu do GitLab instance používané jejich konzultačním týmem.

    Ladislav Hagara | Komentářů: 0
    včera 23:33 | Nová verze

    Immich byl vydán v první stabilní verzi 2.0.0 (YouTube). Jedná se o alternativu k výchozím aplikacím od Googlu a Applu pro správu fotografií a videí umožňující vlastní hosting serveru Immich. K vyzkoušení je demo. Immich je součástí balíčků open source aplikací FUTO. Zdrojové kódy jsou k dispozici na GitHubu pod licencí AGPL-3.0.

    Ladislav Hagara | Komentářů: 0
    včera 22:33 | IT novinky

    Český telekomunikační úřad vydal zprávy o vývoji cen a trhu elektronických komunikací se zaměřením na rok 2024. Jaká jsou hlavní zjištění? V roce 2024 bylo v ČR v rámci služeb přístupu k internetu v pevném místě přeneseno v průměru téměř 366 GB dat na jednu aktivní přípojku měsíčně – celkově jich tak uživateli bylo přeneseno přes 18 EB (Exabyte). Nejvyužívanějším způsobem přístupu k internetu v pevném místě zůstal v roce 2024 bezdrátový

    … více »
    Ladislav Hagara | Komentářů: 0
    včera 12:11 | Nová verze

    Raspberry Pi OS, oficiální operační systém pro Raspberry Pi, byl vydán v nové verzi 2025-10-01. Přehled novinek v příspěvku na blogu Raspberry Pi a poznámkách k vydání. Jedná o první verzi postavenou na Debianu 13 Trixie.

    Ladislav Hagara | Komentářů: 0
    včera 05:22 | Nová verze

    Byla vydána nová verze 4.6 svobodného notačního programu MuseScore Studio (Wikipedie). Představení novinek v oznámení v diskusním fóru a také na YouTube.

    Ladislav Hagara | Komentářů: 0
    včera 02:22 | Komunita

    Společnost DuckDuckGo stojící za stejnojmenným vyhledávačem věnovala 1,1 milionu dolarů (stejně jako loni) na podporu digitálních práv, online soukromí a lepšího internetového ekosystému. Rozdělila je mezi 29 organizací a projektů. Za 15 let rozdala 8 050 000 dolarů.

    Ladislav Hagara | Komentářů: 4
    1.10. 20:11 | Nová verze

    Svobodný multiplatformní herní engine Bevy napsaný v Rustu byl vydán ve verzi 0.17. Díky 278 přispěvatelům.

    Ladislav Hagara | Komentářů: 0
    1.10. 16:11 | Nová verze

    Bylo vydáno openSUSE Leap 16 (cs). Ve výchozím nastavení přichází s vypnutou 32bitovou (ia32) podporou. Uživatelům však poskytuje možnost ji ručně povolit a užívat si tak hraní her ve Steamu, který stále závisí na 32bitových knihovnách. Změnily se požadavky na hardware. Leap 16 nyní vyžaduje jako minimální úroveň architektury procesoru x86-64-v2, což obecně znamená procesory zakoupené v roce 2008 nebo později. Uživatelé se starším hardwarem mohou migrovat na Slowroll nebo Tumbleweed.

    Ladislav Hagara | Komentářů: 3
    1.10. 16:00 | IT novinky

    Ministerstvo průmyslu a obchodu (MPO) ve spolupráci s Národní rozvojovou investiční (NRI) připravuje nový investiční nástroj zaměřený na podporu špičkových technologií – DeepTech fond. Jeho cílem je posílit inovační ekosystém české ekonomiky, rozvíjet projekty s vysokou přidanou hodnotou, podpořit vznik nových technologických lídrů a postupně zařadit Českou republiku mezi země s nejvyspělejší technologickou základnou.

    … více »
    Ladislav Hagara | Komentářů: 3
    1.10. 12:55 | Nová verze

    Radicle byl vydán ve verzi 1.5.0 s kódovým jménem Hibiscus. Jedná se o distribuovanou alternativu k softwarům pro spolupráci jako např. GitLab.

    Ladislav Hagara | Komentářů: 3
    Jaké řešení používáte k vývoji / práci?
     (40%)
     (47%)
     (14%)
     (16%)
     (18%)
     (14%)
     (18%)
     (14%)
     (14%)
    Celkem 159 hlasů
     Komentářů: 10, poslední dnes 01:37
    Rozcestník

    Nejobskurnejší bug

    12.9.2009 03:08 | Přečteno: 1761× | programování

    Dnes na odlehčenenější tému. Obskurních bugů jsem si užil spousty, ale na tenhle nezapomenu.

    Měli jsme editor kódu (widget poděděn od QTextEdit), nazvime ho pracovně ParsingTextEdit. Bylo to pro jazyk, který je kombinací ("kartézský součin") Verilogu, VHDL a MASTu (syntakticky nejblíže Verilogu). Plus všechny super-featury jako syntax-highlight, atd. Potud dobrý.

    Editor s okamžitým překladem

    Jenže ParsingTextEdit navíc již při editaci parsoval podle gramatiky vložený kód do abstraktního syntaktického stromu (kromě výrazů, to řešil separátní parser/překladač později). Když jste někdy zkoušeli programovat na ZX Spectru/Didaktiku, víte jak kurzor skákal po celých tokenech (for, if, atd.). Podobně se choval ten náš ParsingTextEdit (jenom nebylo třeba mačkat N shiftoidních kláves s pěti rukama). Nevím, kdo vymyslel ten requirement, aby ten editor takhle fungoval, prostě to tak bylo.

    Bug report

    Bug report zněl: Když napastuju nasledovní kód, zakomentuje se mi celý:

    for(i=0; i < limit; i=i+i) {
        analogInit = a+b+c*nejakyVyraz
    }
    

    Debugování parseru v ParsingTextEdit nic rozumného nepřineslo, nastoupila hrubá síla. Zkoušeli jsme pastovat všechno co šlo, jak zmysluplné kusy kódu, tak náhodný bordel.

    Eventuelně jsme přišli na to, že když proměnná začíná na analog, tak se parser ParsingTextEdit zblázní a zakomentuje celý blok, protože je podle něho syntakticky špatně (v tomhle případě celý for cyklus).

    Rozuzlení (nebo rozezlení nebo odezlení)

    Proměnná začínající řetezcem analog byla hodně podezřelá proto, že analog je klíčové slovo ve Verilogu. Eureka - při inspekci flexového zdrojáku gramatiky pro ParsingTextEdit chyběl za analog symbol dolaru (konec regexpu). Proto bral analogInit za klíčové slovo. Říká se, že ve velkých firmách není neobvyklý 5 řádků kódu za den na člověka. Ale 12 člověkohodin na jeden znak taky není špatný ;-)

           

    Hodnocení: 100 %

            špatnédobré        

    Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

    Komentáře

    Vložit další komentář

    12.9.2009 04:55 deda.jabko | skóre: 23 | blog: blog co se jmenuje "každý den jinak" | za new york city dvakrát doleva a pak už se doptáte
    Rozbalit Rozbalit vše Re: Nejobskurnejší bug
    Ale 12 člověkohodin na jeden znak taky není špatný.
    to je naprosto normalni... me prijde, ze pomalu chyby delsi nez jeden znak neopravuju...

    treba jsem dva dny hledal jeden priserny race-condition... nez jsem si vsiml, ze misto fork() ma byt vfork().

    a nedavno jsem dokonce udelal release, kde se menili jenom dve pismenka, ktery opravoval dve vazne chyby...
    Asi před rokem se dostali hackeři na servry Debianu a ukradli jim zdrojové kódy.
    12.9.2009 08:35 kolcon
    Rozbalit Rozbalit vše Re: Nejobskurnejší bug

    meli jste tam rm misto mv? ;)

    michich avatar 12.9.2009 09:21 michich | skóre: 51 | blog: ohrivane_parky
    Rozbalit Rozbalit vše Re: Nejobskurnejší bug
    treba jsem dva dny hledal jeden priserny race-condition... nez jsem si vsiml, ze misto fork() ma byt vfork().
    To mě zajímá. Můžeš tento případ trochu rozvést? Nenapadá mě, jak taková záměna může způsobit race. A pokud vfork opravdu pomohl, tak bych očekával, že se na to nesmí spoléhat - vzhledem k tomu, že podle manuálu je přípustné, aby vfork dělal totéž co fork:
    The requirements put on vfork() by the standards are weaker than those put on fork(2), so an implementation where the two are synonymous is compliant. In particular, the programmer cannot rely on the parent remaining blocked until the child either terminates or calls execve(2), and cannot rely on any specific behavior with respect to shared memory.
    andree avatar 12.9.2009 13:39 andree | skóre: 39 | blog: andreeeeelog
    Rozbalit Rozbalit vše Re: Nejobskurnejší bug

    yop, jednoznakove chyby su vacsinou dost zabavne...

    ja som pred dobou riesil neprijemny freeze-bug kvoli chybajucemu znaku "*" :) doteraz som nepochopil, preco to ako chybu nenahlasil gcc (v c++ kode), bolo to nieco na tento styl:

    void fct(Data *) { ... }
    Data **x;

    fct(x);

    o to vacsia sranda bola najst to...

    Jardík avatar 12.9.2009 14:36 Jardík | skóre: 40 | blog: jarda_bloguje
    Rozbalit Rozbalit vše Re: Nejobskurnejší bug
    Máš kompilovat s -Wall -pedantic
    Věřím v jednoho Boha.
    andree avatar 12.9.2009 16:56 andree | skóre: 39 | blog: andreeeeelog
    Rozbalit Rozbalit vše Re: Nejobskurnejší bug

    bol to projekt vyrobeny pomocou qmake, takze -Wall tam je.. a -pedantic pomoze len k tomuto:

    /usr/include/qt4/QtCore/qglobal.h:798: error: ISO C++ 1998 does not support ‘long long’
    /usr/include/qt4/QtCore/qglobal.h:799: error: ISO C++ 1998 does not support ‘long long’

    ... :-) dalej som to neskumal...

    Jardík avatar 12.9.2009 18:39 Jardík | skóre: 40 | blog: jarda_bloguje
    Rozbalit Rozbalit vše Re: Nejobskurnejší bug
    No vždyť to je špatně, tak pedantic pomohl. long long je v C99 nebo až v chystaném C++0x, takže ho v C++ použít "nesmíš" :-)
    Věřím v jednoho Boha.
    andree avatar 12.9.2009 20:55 andree | skóre: 39 | blog: andreeeeelog
    Rozbalit Rozbalit vše Re: Nejobskurnejší bug

    tak to aby niekto napisal trolltechu/qt software/nokii... :)

    Jardík avatar 12.9.2009 21:08 Jardík | skóre: 40 | blog: jarda_bloguje
    Rozbalit Rozbalit vše Re: Nejobskurnejší bug
    Tak na 64bit to není problém, tam můžou místo long long použít long (na I*LP64) či pointer (předpokládám, že tím řeší 64bit číselný typ), i když je to prasárna největšího kalibru :-)
    Věřím v jednoho Boha.
    limit_false avatar 12.9.2009 15:52 limit_false | skóre: 23 | blog: limit_false
    Rozbalit Rozbalit vše Re: Nejobskurnejší bug

    Hm, to by gcc melo zarvat, tedy pokud to neni nejak premakrovano jako napr. #define Data void.

    Jaka verze gcc?

    When people want prime order group, give them prime order group.
    andree avatar 12.9.2009 17:07 andree | skóre: 39 | blog: andreeeeelog
    Rozbalit Rozbalit vše Re: Nejobskurnejší bug

    gcc 4.3.3, ale preslo to aj na starsich...

    ano, je to void, ako teraz pozeram... Sice mi pride divne, ze void** sa da implicitne pretypovat na void*, ale tak aspon som zase o nieco mudrejsi :-) A aby som nemlzil, tu je kod:

    typedef PaStream void;
    PaStream* paStream;
    ...
    Pa_CloseStream(paStream); //chybne: Pa_CloseStream(&paStream);

    Jardík avatar 12.9.2009 18:41 Jardík | skóre: 40 | blog: jarda_bloguje
    Rozbalit Rozbalit vše Re: Nejobskurnejší bug
    Ano, na void* se v C++ dá implicitně přetypovat všechno, takže to pak je problém. Ale tvůj problém bych řešil např. takto:
    /* v C stylu */
    typedef struct _PaStream PaStream;
    /* forward deklarací v C++ */
    struct PaStream;
    
    Pak ti to přetypování neprojde.
    Věřím v jednoho Boha.
    andree avatar 12.9.2009 20:59 andree | skóre: 39 | blog: andreeeeelog
    Rozbalit Rozbalit vše Re: Nejobskurnejší bug

    yop, tak by som to ja riesil tiez.. len toto je externa kniznica (konkretne PortAudio v19), takze to je zlozitejsie..:) ale asi im aspon bug vyplnim...

    12.9.2009 18:07 petr_p | skóre: 59 | blog: pb
    Rozbalit Rozbalit vše Eventuelně
    Eventuálně (eventuělně) má v češtině jiný význam než v angličtině :)
    limit_false avatar 13.9.2009 15:15 limit_false | skóre: 23 | blog: limit_false
    Rozbalit Rozbalit vše Re: Eventuelně

    No s tema slovama a jejich vyznamama je to fakt opruz :-) . Zvlastni je, ze podle wiktionary to snad vsechny jayzky krome anglictiny maji jako v cestine (nemcina, francouzstina, holandstina...). Pritom podle latinskeho eventus bych nejspis rekl, ze ten anglicky vyznam je spravne.

    Podobne jako apokalypsa neznamena konec sveta ale, "odhaleni velikeho tajemstvi", byrokracie mel byt puvodne idealni system spravy (jmeno filozofa jsi nevzpomenu). Podobne Finkelstein zprofanoval slovo liberal.

    When people want prime order group, give them prime order group.
    13.9.2009 19:03 Michal Kubeček | skóre: 71 | Luštěnice
    Rozbalit Rozbalit vše Re: Eventuelně

    Podobně zrádné je třeba slovo actual (viz třeba titulní strana www.bsg.cz nahoře).

    Podobne Finkelstein zprofanoval slovo liberal.

    A teď pracuje pro stranu, která se už od svého založení označuje za "stranu konzervativně liberálního typu". :-)

    12.9.2009 19:38 User682 | skóre: 38 | blog: aqarium | Praha
    Rozbalit Rozbalit vše Re: Nejobskurnejší bug

    >Říká se, že ve velkých firmách není neobvyklý 5 řádků kódu za den na člověka. Ale 12 člověkohodin na jeden znak taky není špatný ;-)

    Klasika. Za posledni tyden mam asi 15 placenych clovekhodin na jednu anotaci na jeden radek. Clovek uz chtel potom v zoufalstvi psat generator kodu (Plan C).

    Ale s tim jednim znakem vedete.

    Prace tohoto typu jsou na palici. Po 3 dnech je to potom na flasku vodky. Vetsinou se to pak vyresi.

    Jinak rekord na jednu chybu mam asi 5 dni v kuse. Zakaznik to chtel a muselo se to vyresit.

    Jardík avatar 12.9.2009 19:44 Jardík | skóre: 40 | blog: jarda_bloguje
    Rozbalit Rozbalit vše Re: Nejobskurnejší bug
    Nepíšete s háčkama/čárkama a já místo "flašku vodky" viděl "flashku vodky" a bylo mi to nějaký divný :-)
    Věřím v jednoho Boha.
    limit_false avatar 13.9.2009 15:23 limit_false | skóre: 23 | blog: limit_false
    Rozbalit Rozbalit vše Re: Nejobskurnejší bug

    Nastesti obskurni bugy nenastavaji az tak moc casto (ted mam vyjimku, protoze jsem zdedil software, kde prave vsechny race conditiony a podobne zabavne bugy se nikdo neobtezoval/neumel opravit).

    Jiz nekolik krat se mi stalo, ze nez hledat bug, bylo to rychlejsi prepsat nanovo (taky jsem jednou hledal bug tyden). To jde kdyz je to kod v radu tisicek, maximalne desetitisicek radku, od cca 50.000 to uz neni celkem sranda, specielne kdyz nevite co se od toho kodu ocekava (jake invarianty, vystupy apod.). Neokomentovany prekladac, kde jsou jenom deklarace C++ sablon s 3 urovnemi vnoreni psane na 5 radku, je prave takova chutovka - lepsi nedotykat se.

    When people want prime order group, give them prime order group.
    default avatar 13.9.2009 16:15 default | skóre: 22 | Madrid
    Rozbalit Rozbalit vše Re: Nejobskurnejší bug

    Klasický šibeniční kód. Jednu stranu rozpleteš, druhá tě uškrtí. :-D

    13.9.2009 19:06 Michal Kubeček | skóre: 71 | Luštěnice
    Rozbalit Rozbalit vše Re: Nejobskurnejší bug
    Jiz nekolik krat se mi stalo, ze nez hledat bug, bylo to rychlejsi prepsat nanovo (taky jsem jednou hledal bug tyden).

    Na to jsem přišel poté, co jsem přes hodinu hledal na PMD-85 chybu spočívající v tom, že jsem napsal IMPUT místo INPUT (jindy zase T0 místo TO). Na druhou stranu, kdybych ten řádek prostě smazal a napsal znovu, nikdy bych nezjistil, co tam bylo špatně.

    default avatar 13.9.2009 19:53 default | skóre: 22 | Madrid
    Rozbalit Rozbalit vše Re: Nejobskurnejší bug

    Mně se zase stalo, že jsem debuggoval SQL dotaz. Prostě to vracelo blbý data. Ale jen někdy. :-D

    Zjistil jsem, že jsem zapomněl před sloupek ve výrazu OVER() dopsat alias tabulky. Oracle si bohužel vybral tabulku špatnou.

    limit_false avatar 13.9.2009 21:00 limit_false | skóre: 23 | blog: limit_false
    Rozbalit Rozbalit vše Re: Nejobskurnejší bug

    Taky mam radsi zjistit, v cem je chyba. Ten tyden-hledan-bug pochazel ze zdedeneho kodu, kteremu mirne prepsani neuskodilo. Na druhou stranu ne vzdy ze cas zjistovat uplne do podrobnosti proc se kde co a jako stalo (navic po tydnu ladeni toho bugu jsem mel celkem dost).

    When people want prime order group, give them prime order group.
    13.9.2009 22:20 Michal Kubeček | skóre: 71 | Luštěnice
    Rozbalit Rozbalit vše Re: Nejobskurnejší bug
    Na druhou stranu ne vzdy ze cas zjistovat uplne do podrobnosti proc se kde co a jako stalo (navic po tydnu ladeni toho bugu jsem mel celkem dost).

    Ono stačí i výrazně méně než týden, když má člověk každých půl hodiny za zády šéfa (nebo na telefonu zákazníka) s dotazem, kdy už to bude chodit. :-)

    limit_false avatar 13.9.2009 23:18 limit_false | skóre: 23 | blog: limit_false
    Rozbalit Rozbalit vše Re: Nejobskurnejší bug

    Jo a pak pri oprave toho bugu vnese do kodu dalsi :-)

    When people want prime order group, give them prime order group.
    14.9.2009 11:48 User682 | skóre: 38 | blog: aqarium | Praha
    Rozbalit Rozbalit vše Re: Nejobskurnejší bug
    zdravim,

    a jeste pridam.

    - Hodne skody obcas nadela IDE. Ne -li Ctrl+C a Ctrl+V. - hodne taky skodi prepisy vuci anglictine nebo cestine treba pri pojmenovani promennych, tabulek. Idealne, kdyz je to rozhrani nebo database, kterou nemuzete menit. - To nejhorsi, co jsem zazil, je vlastni kod. Idealne, kdyz se k nemu vratite po par letech. To je potom to prave peklo. Nejlepsi reseni je prepis nebo refaktoring, pokud to vubec jde. Je to nejhorsi kod, co jsem videl, a jmenuje se to linuxsoft.cz .
    limit_false avatar 14.9.2009 14:29 limit_false | skóre: 23 | blog: limit_false
    Rozbalit Rozbalit vše Re: Nejobskurnejší bug

    Nejhorsi vlastnost spatne napsaneho kodu je, ze se zprasenost nabaluje. Jak je to jiz jednou dostatecne zpraseny, odprasit je to tezke. Hlavne v komercni sfere, kde na to proste nedostanete cas a prasi se to dal.

    Druha nejhorsi vec je, kdyz vedeni rozhodne, ze se to nejak naprasi, aby to bylo rychle. Ze se pak stravi 2x vice casu pri debugovani a opravovani, jaksi nikdo nevidi. Jak nekdo rika "rychle, levne, dobre - vyber dve", ja bych to opra(s|v)il na "rychle, levne, dobre - vyber jedno".

    Tretni nejhorsi vec je, kdyz na namitku "kdyz se to udela takhle, pak bude velice tezke udelat XY, co vime, ze bude nutne naimplementovat" je odpoved, prekvapive opet: "Tak se to naprasi tak, pak se s tim neco udela."

    Paradoxne se to takhle deje i kdyz zadny zakaznik danou funkcionalitu okamzite nepotrebuje.

    BTW zrovna odprasuju kod, ktery jsem zdedil s nadhernyma race-conditionama. Skutecne uvazuji nad implementaci distribuovanych snapshotu.

    Ad refaktorizace: napada me zrovna: "Without solid suite of tests you are not refactoring, just changing shit around" :-) (pochazi odsud)

    When people want prime order group, give them prime order group.
    18.9.2009 15:51 eoj
    Rozbalit Rozbalit vše Re: Nejobskurnejší bug
    pochazi odsud

    Odkud?
    limit_false avatar 21.9.2009 22:39 limit_false | skóre: 23 | blog: limit_false
    Rozbalit Rozbalit vše Re: Nejobskurnejší bug

    Netusim na co se zrovna ptas, ale je to v tom odkazovanem clanku:  http://hamletdarcy.blogspot.com/2009/06/forgotten-refactorings.html

    Ja udelal kratkou parafrazi, cela citace zni:

    I don't know how much more emphasized step 1 of refactoring could be: don't touch anything that doesn't have coverage. Otherwise, you're not refactoring; you're just changing shit. And not a single IDE enforces or encourages you to have test coverage before mucking about with the refactorings.

    When people want prime order group, give them prime order group.

    Založit nové vláknoNahoru

    ISSN 1214-1267   www.czech-server.cz
    © 1999-2015 Nitemedia s. r. o. Všechna práva vyhrazena.