abclinuxu.cz AbcLinuxu.cz itbiz.cz ITBiz.cz HDmag.cz HDmag.cz abcprace.cz AbcPráce.cz
Inzerujte na AbcPráce.cz od 950 Kč
Rozšířené hledání
×
    31.5. 23:55 | Nová verze

    Byla vydána nová stabilní verze 24.05 linuxové distribuce NixOS (Wikipedie). Její kódové označení je Uakari. Podrobný přehled novinek v poznámkách k vydání. O balíčky se v NixOS stará správce balíčků Nix.

    Ladislav Hagara | Komentářů: 0
    31.5. 17:33 | Nová verze

    Byla vydána nová verze 1.48.0 sady nástrojů pro správu síťových připojení NetworkManager. Novinkám se v příspěvku na blogu NetworkManageru věnuje Fernando F. Mancera. Mimo jiné se v nastavení místo mac-address-blacklist nově používá mac-address-denylist.

    Ladislav Hagara | Komentářů: 13
    31.5. 17:11 | Komunita

    Před 25 lety, 31. května 1999, započal vývoj grafického editoru Krita (Wikipedie). Tenkrát ještě pod názvem KImageShop a později pod názvem Krayon.

    Ladislav Hagara | Komentářů: 3
    31.5. 12:55 | Nová verze

    Farid Abdelnour se v příspěvku na blogu rozepsal o novinkám v nejnovější verzi 24.05.0 editoru videa Kdenlive (Wikipedie). Ke stažení brzy také na Flathubu.

    Ladislav Hagara | Komentářů: 0
    31.5. 11:22 | Zajímavý článek

    David Revoy, autor mj. komiksu Pepper&Carrot, se rozepsal o své aktuální grafické pracovní stanici: Debian 12 Bookworm, okenní systém X11, KDE Plasma 5.27, …

    Ladislav Hagara | Komentářů: 9
    30.5. 22:44 | Nová verze

    Wayland (Wikipedie) byl vydán ve verzi 1.23.0. Z novinek lze vypíchnout podporu OpenBSD.

    Ladislav Hagara | Komentářů: 0
    30.5. 21:22 | Zajímavý článek

    Craig Loewen na blogu Microsoftu představil novinky ve Windows Subsystému pro Linux (WSL). Vypíchnout lze GUI aplikaci pro nastavování WSL nebo správu WSL z Dev Home.

    Ladislav Hagara | Komentářů: 0
    30.5. 12:44 | Pozvánky

    V sobotu 1. června lze navštívit Maker Faire Ostrava, festival plný workshopů, interaktivních činností a především nadšených a zvídavých lidí.

    Ladislav Hagara | Komentářů: 0
    30.5. 12:22 | Nová verze

    Webový server Caddy (Wikipedie) s celou řadou zajímavých vlastností byl vydán ve verzi 2.8 (𝕏). Přehled novinek na GitHubu.

    Ladislav Hagara | Komentářů: 17
    29.5. 22:11 | Nová verze

    Byla vydána verze 3.0 (@, 𝕏) svobodného softwaru HAProxy (The Reliable, High Performance TCP/HTTP Load Balancer; Wikipedie) řešícího vysokou dostupnost, vyvažování zátěže a reverzní proxy. Detailní přehled novinek v příspěvku na blogu společnosti HAProxy Technologies.

    Ladislav Hagara | Komentářů: 7
    Rozcestník

    Nejobskurnejší bug

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