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 05:00 | IT novinky

    Švýcarská společnost Punkt. má nově v nabídce telefon Punkt. MC03. Telefon byl navržen ve Švýcarsku s důrazem na soukromí a digitální suverenitu a vyroben v Německu. V telefonu běží operační systém AphyOS (Apostrophy OS) založený na AOSP (Android Open Source Project) 15. Cena telefonu je 745 eur.

    Ladislav Hagara | Komentářů: 0
    dnes 04:44 | Nová verze

    TypeScript (Wikipedie), tj. JavaScript rozšířený o statické typování a další atributy, byl vydán v nové verzi 7.0. Kompilátor byl kvůli výkonu přepsán z TypeScriptu do Go.

    Ladislav Hagara | Komentářů: 0
    včera 17:00 | IT novinky

    Europarlament podpořil pozměněnou verzi výjimky známé jako „chat control 1.0“ umožňující firmám skenovat soukromou komunikaci na internetu kvůli ochraně dětí před zneužitím. Pozměňovací návrhy přijaté europoslanci však počítají s tím, že z výjimky bude vyřazena šifrovaná komunikace. Výjimka přestala platit začátkem dubna poté, co se Evropský parlament a Rada EU nedokázaly shodnout na jejím prodloužení. Rada následně přijala

    … více »
    Ladislav Hagara | Komentářů: 11
    včera 04:44 | Bezpečnostní upozornění

    Nejnovější X.Org X server 21.1.24 a Xwayland 24.1.13 řeší 2 bezpečnostní chyby.

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

    Clement "Clem" Lefebvre publikoval souhrn dění v Linux Mintu za červen 2026. Vypíchnuta je vylepšená podpora Waylandu. Už není považována za experimentální. V příští verzi Linux Mintu, plánována je na Vánoce, bude běh Cinnamonu plně podporován na X11 i Waylandu. V květnu na vývoj Linux Mintu přispělo 611 dárců celkovou částkou 19 612 dolarů. Dalších 2 326 patronů přispělo na Patreonu celkovou částkou 5 334 dolarů.

    Ladislav Hagara | Komentářů: 4
    včera 04:00 | Bezpečnostní upozornění

    V Linuxu v KVM byla nalezena a v upstreamu již byla opravena kritická zranitelnost Januscape aneb CVE-2026-53359. Root na hostovaném počítači (virtuální stroj) může obejít izolaci a získat plnou kontrolu nad hostitelským systémem (DoS útok nebo vzdálené spuštění kódu s právy roota). Na obou hlavních architekturách – Intel i AMD. Zranitelnost v Linuxu existovala téměř 16 let (od srpna 2010 do června 2026).

    Ladislav Hagara | Komentářů: 0
    8.7. 19:44 | IT novinky

    Tribunál Soudního dvora Evropské unie dnes zamítl několik žalob, v nichž se americká společnost Apple ohrazovala proti pravidlům fungování velkých technologických společností na unijním trhu. Applu se nelíbilo, že jeho obchod s aplikacemi a operační systém iOS mají podléhat přísnějším povinnostem jen proto, že Brusel firmu považuje za takzvaného gatekeepera, tedy strážce přístupu.

    Ladislav Hagara | Komentářů: 2
    8.7. 13:11 | IT novinky

    Na WhatsAppu budou postupně v průběhu následujících měsíců zavedena uživatelská jména. Telefonní čísla tak mohou zůstat soukromá. Aktuálně si lze uživatelské jméno rezervovat.

    Ladislav Hagara | Komentářů: 3
    8.7. 11:11 | IT novinky

    Byl aktualizován TIOBE Index (Wikipedie). Programovací jazyk Rust se poprvé dostal do první desítky tohoto žebříčku popularity programovacích jazyků. Vede Python následovaný C, C++, Java, C#, …

    Ladislav Hagara | Komentářů: 0
    8.7. 01:55 | Nová verze

    Proton (Wikipedie), tj. fork Wine integrovaný ve Steamu umožňující na Linuxu hrát hry určené pouze pro Windows, byl vydán ve verzi 11.0-1. Přehled novinek se seznamem nově podporovaných her na GitHubu. Aktuální přehled všech podporovaných her na stránkách ProtonDB

    Ladislav Hagara | Komentářů: 0
    Které desktopové prostředí na Linuxu používáte?
     (10%)
     (7%)
     (2%)
     (17%)
     (31%)
     (4%)
     (6%)
     (2%)
     (16%)
     (25%)
    Celkem 2083 hlasů
     Komentářů: 30, poslední 3.4. 20:20
    Rozcestník

    Nejobskurnejší bug

    12.9.2009 03:08 | Přečteno: 1846× | 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.