Cyklická redundantní kontrola



Dobrý den, nevíte někdo co je za příčinu hlášky : chyba (cyklická redundantní kontrola) ? Ve stroji mi začlo "cvakat" a je to celý nějaký divný. Je to po "umření "stroje a celkové nové instalace systému a po formátu partition.
Ve stroji? A "cvakat"? Pokud tím strojem máte na mysli nějakou počítačovou sestavu, pak médium, kde dochází k chybám CRC je buď špatně připojeno - datový kabel, nebo odchází do Křemíkového nebe.
Príčin může být spousta a zrejme to nebude mit souvislost z Duolingem. Zkuste se poptat nekde na forech, kde se resi hardwarove zalezitosti. <p><code>hi</code> je čas strávený přerušením zpracování hardwaru. hardwarová přerušení jsou generována hardwarovými zařízeními (síťové karty, řadič klávesnice, externí časovač, hardwarové senzory, ...), když potřebují něco signalizovat do procesoru (například data dorazila).</p><p>protože k tomu může dojít velmi často a protože v podstatě blokují aktuální cpu, zatímco jsou spuštěny, jsou popisovače hardwarového přerušení jádra psány tak rychle, jak je to jen možné.</p><p>pokud je třeba provést dlouhé nebo složité zpracování, jsou tyto úkoly odloženy pomocí mechanického volání <code>softirqs</code>. jsou naplánovány nezávisle, mohou běžet na jakémkoli cpu, mohou běžet souběžně (nic z toho neplatí pro popisovače přerušení hardwaru).</p><p><sub>část o tvrdých irq blokujících aktuální procesor a část o tom, že <code>softirqs</code> budou moci běžet kdekoli, nejsou úplně správné, mohou existovat omezení a některé tvrdé irq mohou přerušit jiné.</sub></p><p>jako příklad lze uvést, že hardwarové přerušení ze síťové karty „přijatá data“ by mohlo jednoduše uložit informace „karta ethx musí být obsluhována“ a naplánovat <code>softirq</code>. <code>softirq</code> by byla věc, která spouští skutečné směrování paketů.</p><p><code>si</code> představuje čas strávený v těchto <code>softirqs</code>.</p><p>dobré čtení o mechanismu <code>softirq</code> (s trochou historie) je také <a href="https://www.cs.unca.edu/brock/classes/spring2013/csci331/notes/paper-1130.pdf">dělám to později: softirqs, tasklets, dolní poloviny, fronty úkolů, pracovní fronty a časovače</a> = (pdf, 64 kb).</p><p><code>st</code>, „ukrást čas“, je relevantní pouze ve virtualizovaných prostředích. představuje čas, kdy skutečný procesor nebyl k dispozici aktuálnímu virtuálnímu počítači - byl „odcizen“ z toho vm) hypervizorem (buď pro spuštění jiného vm, nebo pro vlastní potřeby).</p><p>dokument <a href="https://www.ibm.com/developerworks/linux/linux390/perf/tuning\_cputimes.html">cpu time accounting</a> od ibm obsahuje více informací o krádeži času a účetnictví cpu ve virtualizovaných prostředích. (zaměřuje se na hardware typu zseries, ale obecná myšlenka je stejná pro většinu platforem.)</p> Nepřehlédněte kompilátor sám.


Přečtěte si dokumentaci kompilátor a najít všechny varování a chyby může poskytnout, a povolit tolik, kolik mají smysl pro vás.


Také se ujistěte, informujte svého kompilátoru k léčbě varování, jako jsou chyby, takže budete nuceni opravit hned. ( "-Werror" na gcc)


Také: „-Wall“ na gcc není *ani* umožnit všem varováním, nenechte se zmást.


Také také: check out Valgrind - it „automaticky detekovat [S] mnoho správy paměti a threading chyby a profil [s] rámci svých programů v detailu.“ (Zdarma!)


Valgrind není statický checker, ale je to skvělý nástroj! <http://valgrind.org> <p>každý den v naší kanceláři probíhá výměna, která vypadá takto:</p><blockquote> <p>"člověče, miluji jen testy jednotek, právě jsem dokázal provést spoustu změn ve způsobu, jakým něco funguje, a pak jsem byl schopen potvrdit, že jsem nic neporazil opakováním testu ..."</p> </blockquote><p>podrobnosti se mění každý den, ale sentiment se nemění. jednotkové testy a vývoj řízený testem (tdd) mají tolik skrytých a osobních výhod, stejně jako ty zjevné, které vám někdo opravdu nedokáže vysvětlit, dokud to sami neučiní.</p><p>ale ignoruji to, tady je můj pokus!</p><ol> <li> <p>testy jednotek umožňují rychlé změny kódu. víte, že to funguje nyní, protože jste provedli testy, když provedete změny, které musíte provést, musíte testy znovu uvést do provozu. to šetří hodiny.</p> </li> <li> <p>tdd vám pomůže uvědomit si, kdy ukončit kódování. vaše testy vám dávají jistotu, že jste prozatím udělali dost, a mohou přestat vyladit a přejít k další věci.</p> </li> <li> <p>testy a kód spolupracují na dosažení lepšího kódu. váš kód může být špatný/buggy. váš test může být špatný/buggy. v tdd bankujete s pravděpodobností, že <strong>obojí</strong> špatné/buggy nízké. často je to test, který vyžaduje opravu, ale to je stále dobrý výsledek.</p> </li> <li> <p>tdd pomáhá při zácpě při kódování. když budete čelit velké a skličující práci před psaním testů, dostanete se rychle do pohybu.</p> </li> <li> <p>testy jednotek vám pomohou skutečně porozumět designu kódu, na kterém pracujete. místo toho, abyste psali kód, abyste něco udělali, začínáte tím, že nastíníte všechny podmínky, kterým je kód vystaven, a jaké výstupy od toho očekáváte.</p> </li> <li> <p>testy jednotek vám poskytují okamžitou vizuální zpětnou vazbu, všichni jsme rádi pocit všech těch zelených světel, když jsme to udělali. je to velmi uspokojivé. je také mnohem snazší vyzvednout si, kde jste přestali po přerušení, protože vidíte, kam jste se dostali - další červené světlo, které potřebuje opravit.</p> </li> <li> <p>na rozdíl od všeobecného vyznání víry jednotka neznamená psaní dvakrát tolik kódu, nebo kódování pomaleji. je to rychlejší a robustnější než kódování bez testů, jakmile to zvládnete. samotný testovací kód je obvykle relativně triviální a nepřispívá k tomu, co děláte, velkou režii. tohle budeš věřit jen tehdy, když to děláš :)</p> </li> <li> <p>myslím, že to byl fowler, kdo řekl: „nedokonalé testy, které probíhají často, jsou mnohem lepší než perfektní testy, které se nikdy nepíšou“. interpretuji to tak, že mi dovoluji psát testy, kde si myslím, že budou nejužitečnější, i když zbytek mého pokrytí kódem je žalostně neúplný.</p> </li> <li> <p>dobré jednotkové testy mohou pomoci dokumentovat a definovat, co má něco dělat</p> </li> <li> <p>jednotkové testy pomáhají s opakovaným použitím kódu. migrujte svůj kód <strong>a</strong> vaše testy do nového projektu. vylaďte kód, dokud se testy neběží znovu.</p> </li> </ol><p>hodně práce, se kterou se zabývám, se netestuje dobře unit unit (interakce s uživateli webových aplikací atd.), ale přesto jsme všichni testováni v tomto obchodě infikovaní a nejšťastnější, když máme testy svázané. nemohu doporučit přístup dostatečně vysoko.</p> <p>dup znamená duplicitní paket.</p><p>z <code>man ping</code>:</p><blockquote> <p>duplicitní a poškozené pakety</p> <p>ping zobrazí duplicitní a poškozené pakety. k duplicitním paketům by nikdy nemělo dojít a zdá se, že jsou způsobeny nevhodnými opakovanými přenosy na úrovni propojení. duplikáty se mohou objevit v mnoha situacích a jsou zřídka (pokud vůbec) dobrým signálem, i když přítomnost nízkých úrovní duplikátů nemusí být vždy důvodem poplachu.</p> <p>poškozené pakety jsou zjevně závažnou příčinou poplachu a často označují nefunkční hardware někde v cestě paketu ping (v síti nebo v hostitelích).</p> </blockquote><p>existují různé důvody, zachytili jste síťový provoz pomocí rozhraní v promiskuitním režimu? někdy je to důvod duplikovaných paketů.</p> Chránič znamená, že proud někde teče přes chránící vodič (zemění) a ne přes nulový vodič. Problém tedy nemusí být přímo v čerpadle, ale i v rozvodu (někdo něco vrtal a trefil se mezi zemnicí a nulák). Zkuste čerpadlo připojit z úplně jiné zásuvky na jiném okruhu, uvidíte, co to bude dělat. Zároveň změřte odpor mezi nulákem a ochraným kolíkem na odpojeném čerpadle, pokud dostanete cokoli jiného než nekonečno, je to špatně. <p>jednoduchá řešení jsou lepší pro dlouhodobou údržbu. a nejde vždy jen o jazykovou znalost. složitá čára (nebo čáry) vyžaduje určitý čas, i když jste odborníkem na daný jazyk. otevřete soubor a začnete číst: "ok, jednoduché, jednoduché, rozumíte, jo, wtf ?!" váš mozek se zastaví a budete muset zastavit a dešifrovat složitou linii. pokud neexistoval měřitelný a konkrétní důvod této implementace, je to „příliš chytré“.</p><p>zjistit, co se děje, se progresivně zhoršuje, jak složitost roste z chytré metody na chytrou třídu na chytrou strukturu. kromě známých přístupů musíte přijít na myšlenkový proces, který šel do vytvoření „chytrého“ řešení, což může být docela obtížné.</p><p>to znamená, že nerad se vyhýbám vzoru (když je jeho použití oprávněné) jen proto, že mu někdo nemusí rozumět. je na nás jako vývojářích, abychom se neustále učili, a pokud něčemu nerozumíme, je to důvod, proč se to učit, a ne se mu vyhýbat.</p> <p>máte dobrý popis toho, jak smart pracuje na <a href="http://en.wikipedia.org/wiki/s.m.a.r.t.">wikipedia</a> . ale rychlé úvod:</p><ul> <li> <p>hodnota: jedná se o hrubou hodnotu, kterou hlásí řadič. obvykle je to snadno srozumitelná hodnota (jako je napájení v hodinách nebo teplota), ale někdy tomu tak není (jako četnost chyb při čtení). různí výrobci mohou pro tato data použít různé struktury a významy.</p> </li> <li> <p>normalized: toto je výše uvedená normalizovaná hodnota, takže vyšší hodnota je vždy lepší. míra čtení/chyb 114 je tedy lepší než 113. opět platí, že váš pevný disk převádí nezpracovaná data na normalizovanou hodnotu.</p> </li> <li> <p>nejhorší: nejhorší <em> normalizovaná </em> hodnota, kterou měl váš disk v minulosti (kde 99 je pravděpodobně tovární nastavení).</p> </li> <li> <p>prahová hodnota: když je <em> normalizovaná </em> hodnota <em> nižší </em> než tato hodnota, jednotka je pravděpodobně selže.</p> </li> </ul><p>zdá se tedy, že váš pevný disk je v pořádku. hodnota četnosti chyb při čtení není časem selhání jednotky, ale některé strukturou dat, která závisí na výrobci disku.</p> <p>backquoty ve starém stylu <code>` `</code> zpracovávají zpětná lomítka a vnořují se trochu jinak. nový styl <code>$()</code> interpretuje vše mezi <code>( )</code> jako příkaz.</p><pre><code>echo $(uname | $(echo cat)) linux echo `uname | `echo cat`` bash: command substitution: line 2: syntax error: unexpected end of file echo cat </code></pre><p>funguje, pokud jsou vnořené zpětné uvozovky uniknuty:</p><pre><code>echo `uname | \`echo cat\`` linux </code></pre><p>zpětné lomítko zábava:</p><pre><code>echo $(echo '\\') \\ echo `echo '\\'` \ </code></pre><p>nový styl <code>$()</code> platí pro všechny <a href="http://www.opengroup.org/onlinepubs/009695399/utilities/xcu\_chap02.html#tag\_02\_06\_03"> posix </a> - shodné náboje.<br> jak poukázal <a href="https://unix.stackexchange.com/questions/5778/whats-the-difference-between-stuff-and-stuff/5793#5793">mouviciel</a> , pro starší mušle může být nezbytný starý styl <code>` `</code>.</p><p>kromě technického hlediska má starý styl <code>` `</code> také vizuální nevýhodu:</p><ul> <li>těžko si všimnout: <code>i like $(program) better than `program`</code></li> <li>snadno zaměňovaný s jediným citátem: <code>'`'`''`''`'`''`'</code></li> <li>není tak snadné psát (možná ani na standardní rozložení klávesnice)</li> </ul><p><sub>(a se používá <code>` `</code> pro svůj vlastní účel, byla to bolest psaní této odpovědi :)</sub></p> <p><em> aktualizovat: chrome 58+ skryl tyto a další ladicí zprávy ve výchozím nastavení. chcete-li je zobrazit, klepněte na šipku vedle položky „info&ldquo; a vyberte položku „verbose&ldquo;. </em></p><p><em> aktualizace 2: chrome 57 je ve výchozím nastavení zapnut. chcete-li je znovu zapnout, musíte povolit filtry a zrušit zaškrtnutí políčka „skrýt porušení&ldquo;. </em></p><blockquote> <p>najednou se objeví, když se do projektu zapojí někdo jiný</p> </blockquote><p>myslím, že je to více pravděpodobné, že jste aktualizovali na chrome 56. toto varování je (imo) báječná nová funkce - prosím, vypněte ji pouze v případě, že jste zoufalí a váš hodnotitel vás odtrhne. základní problémy jsou v jiných prohlížečích, ale prohlížeče vám neříkají, že je problém. vstupenka chromium je zde, ale na ní není žádná zajímavá diskuse: <a href="https://bugs.chromium.org/p/chromium/issues/detail?id=662497">https://bugs.chromium.org/p/chromium/issues/detail?id=662497</a> </p><p>tyto zprávy jsou varování namísto chyb, protože to opravdu nebude způsobovat velké problémy. to může způsobit upuštění rámců nebo jinak způsobit méně hladký zážitek.</p><p>stojí za to prozkoumat a upevnit, aby se zvýšila kvalita vaší aplikace. způsob, jak toho dosáhnout, je věnovat pozornost okolnostem, ve kterých se zprávy zobrazují, a provádět testování výkonu, aby se zúžit, kde se problém vyskytuje. nejjednodušším způsobem, jak spustit testování výkonu, je vložit nějaký kód takto:</p><pre><code>function somemethodithinkmightbeslow() { const starttime = performance.now(); // do the normal stuff for this function const duration = performance.now() - starttime; console.log(`somemethodithinkmightbeslow took ${duration}ms`); } </code></pre><p>chcete-li být pokročilejší, můžete také použít profiler chrome: <a href="https://developers.google.com/web/tools/chrome-devtools/rendering-tools/">https://developers.google.com/web/tools/chrome-devtools/rendering-tools/</a> </p><p>nebo použijte knihovnu benchmarking, jako je tato: <a href="https://benchmarkjs.com/">https://benchmarkjs.com/</a> </p><p>jakmile najdete nějaký kód, který trvá dlouhou dobu (50 ms je práh chrome), máte několik možností:</p><ol> <li>vystřihněte některé z těchto úkolů, které mohou být zbytečné</li> <li>zjistěte, jak dělat stejný úkol rychleji</li> <li>rozdělte kód do několika asynchronních kroků</li> </ol><p>(1) a (2) může být obtížné nebo nemožné. ale někdy je to opravdu snadné a měly by to být vaše první pokusy. v případě potřeby by mělo být vždy možné (3). k tomu budete používat něco jako</p><pre><code>settimeout(functiontorunverysoonbutnotnow); </code></pre><p>nebo</p><pre><code>// this one is not available natively in ie, but there are polyfills available. promise.resolve().then(functiontorunverysoonbutnotnow); </code></pre><p>více o asynchronní povaze javascriptu si můžete přečíst zde:</p><p> <a href="http://blog.carbonfive.com/2013/10/27/the-javascript-event-loop-explained/">http://blog.carbonfive.com/2013/10/27/the-javascript-event-loop-explained/</a> </p>