Mars a přistání



VTMNesouhlasím s článkem ŽIVĚ na části VTM a nechce se mi pro odpovědět registrovat na Facebook - jek je vyžadováno - stupidně.![](/Client.Images/smileys/8.gif)![](/Client.Images/smileys/8.gif)vtm.zive.cz/z-usti-nad-labem-na-mars-aneb-prvni-dny-curiosity?utm\_source=zive&utm\_medium=selfpromo&utm\_campaign=rsshubS tím jeřábem a zaprášením nemohu souhlasit. Podle mnou získaných informací asi tak před rokem, za příčinu nezdarů s přistáním vyhodnotili nespolehlivost radarů vyhodnotit výšku a potom ještě nějaké problémy s pulsními brzdícími motory.Tak jednoho vědce napadla šílená myšlenka - těsně na radary vyhodnocenou nulovou výškou nad povrchem - zastavit sondu a spustit bezpečněji vozítko na laně.
To co vnimas ako obraz okolia je tiez len pretransformovana energia fotonov na el.prud ako nosic informacie. Takze perp.mobile v podobe ceuloidu sa nekona.
<p>to je dobrá otázka. myslím si však, že souhlasím s robem. pokud jde o testování skutečné navigace a rozhraní, budou prototypy ideální, ale pro testování skutečné funkčnosti si pak myslím, že budete muset nechat své ruce zašpinit a srazit zmenšenou verzi skutečné aplikace.</p> dobrý den martine, ano bez problémů jde použít :). <p>znamenalo by to velmi odlišnou technologii, než jaká se v současnosti používá. nesnažil bych se přinutit dotyková zařízení do sémantiky obrazovkových zařízení. dotyková zařízení vyvíjejí vlastní odlišnou sadu očekávání uživatelů. dotek na vznášení je naprosto přijatelný. viděl jsem několik pěkných příkladů naznačování uživateli, kde se při prvním načtení obrazovky objevují „vznášející se“ oblasti. nějakým způsobem zvýrazníte horká místa a poté se tato světla po sekundě nebo dvou nechají zmizet.</p> <p>testoval jsem několik různých algoritmů, měření rychlosti a počtu kolizí.</p><p>použil jsem tři různé sady klíčů:</p><ul> <li> <a href="http://www.sitopreferito.it/html/all\_english\_words.html">seznam 216 553 anglických slov</a> <sup> <a href="https://web.archive.org/web/20061231134037/http://www.sitopreferito.it/html/all\_english\_words.html">???? archiv</a> </sup>(malými písmeny)</li> <li>čísla <code>"1"</code> to <code>"216553"</code> (přemýšlejte o kódech zip a <a href="https://web.archive.org/web/20190119000003/https://blogs.msdn.microsoft.com/ericlippert/2003/09/19/arrrrr-capn-eric-be-learnin-about-threadin-the-harrrrd-way/">jak špatný hash stáhl msn.com</a> <sup> <a href="https://archive.ph/m7h87">???? archiv</a> </sup>)</li> <li>216 553 „náhodných“ (tj. <a href="http://www.ietf.org/rfc/rfc4122.txt">id typu 4</a> ) guid</li> </ul><p>pro každý korpus byl zaznamenán počet srážek a průměrná doba strávená hashováním.</p><p>testoval jsem:</p><ul> <li> <a href="http://www.cse.yorku.ca/~oz/hash.html">djb2</a> </li> <li> <a href="http://www.cse.yorku.ca/~oz/hash.html">djb2a</a> (varianta používající <code>xor</code> spíše než <code>+</code>)</li> <li> <a href="http://en.wikipedia.org/wiki/fowler%e2%80%93noll%e2%80%93vo\_hash\_function">fnv-1</a> (32-bit)</li> <li> <a href="http://en.wikipedia.org/wiki/fowler%e2%80%93noll%e2%80%93vo\_hash\_function">fnv-1a</a> (32-bit)</li> <li> <a href="http://www.cse.yorku.ca/~oz/hash.html"> sdbm </a> </li> <li>crc32</li> <li> <a href="http://en.wikipedia.org/wiki/murmurhash">murmur2</a> (32-bit)</li> <li> <a href="http://landman-code.blogspot.ca/2008/06/superfasthash-from-paul-hsieh.html">superfasthash</a> </li> </ul><h2>výsledek</h2><p>každý výsledek obsahuje průměrnou dobu hash a počet srážek</p><pre><code>hash lowercase random uuid numbers     murmur 145 ns 259 ns 92 ns 6 collis 5 collis 0 collis fnv-1a 152 ns 504 ns 86 ns 4 collis 4 collis 0 collis fnv-1 184 ns 730 ns 92 ns 1 collis 5 collis 0 collis▪ dbj2a 158 ns 443 ns 91 ns 5 collis 6 collis 0 collis▪▪▪ djb2 156 ns 437 ns 93 ns 7 collis 6 collis 0 collis▪▪▪ sdbm 148 ns 484 ns 90 ns 4 collis 6 collis 0 collis** superfasthash 164 ns 344 ns 118 ns 85 collis 4 collis 18742 collis crc32 250 ns 946 ns 130 ns 2 collis 0 collis 0 collis loselose 338 ns - - 215178 collis </code></pre><p><strong> poznámky </strong>:</p><ul> <li> <a href="http://www.cse.yorku.ca/~oz/hash.html">loselose algoritmus</a> (kde hash = hash + character) je skutečně <strong> <em> hrozné </em> </strong>. všechno se srazí do stejných 1375 kbelíků</li> <li>superfasthash je rychlý a věci vypadají docela rozptýleny; podle mého dobrota srážky <em> číslo </em>. doufám, že <a href="http://landman-code.blogspot.ca/2008/06/superfasthash-from-paul-hsieh.html">ten, kdo to přenesl, má něco špatného; je to docela špatné</a> </li> <li>crc32 je <em> celkem dobrá </em>. pomalejší a 1k tabulka vyhledávání</li> </ul><h2>dochází ke kolizím?</h2><p>ano. začal jsem psát svůj testovací program, abych zjistil, zda ke kolizím hashů <em> skutečně </em> došlo - a nejde jen o teoretický konstrukt. stávají se skutečně:</p><p><strong> fnv-1 srážky </strong></p><ul> <li><code>creamwove</code> srazí s <code>quists</code></li> </ul><p><strong> srážky fnv-1a </strong></p><ul> <li><code>costarring</code> srazí s <code>liquid</code></li> <li><code>declinate</code> srazí s <code>macallums</code></li> <li><code>altarage</code> srazí s <code>zinke</code></li> <li><code>altarages</code> srazí s <code>zinkes</code></li> </ul><p><strong> kolize murmur2 </strong></p><ul> <li><code>cataract</code> srazí s <code>periti</code></li> <li><code>roquette</code> srazí s <code>skivie</code></li> <li><code>shawl</code> srazí s <code>stormbound</code></li> <li><code>dowlases</code> srazí s <code>tramontane</code></li> <li><code>cricketings</code> srazí s <code>twanger</code></li> <li><code>longans</code> srazí s <code>whigs</code></li> </ul><p><strong> srážky djb2 </strong></p><ul> <li><code>hetairas</code> srazí s <code>mentioner</code></li> <li><code>heliotropes</code> srazí s <code>neurospora</code></li> <li><code>depravement</code> srazí s <code>serafins</code></li> <li><code>stylist</code> srazí s <code>subgenera</code></li> <li><code>joyful</code> srazí s <code>synaphea</code></li> <li><code>redescribed</code> srazí s <code>urites</code></li> <li><code>dram</code> srazí s <code>vivency</code></li> </ul><p><strong> srážky djb2a </strong></p><ul> <li><code>haggadot</code> srazí s <code>loathsomenesses</code></li> <li><code>adorablenesses</code> srazí s <code>rentability</code></li> <li><code>playwright</code> srazí s <code>snush</code></li> <li><code>playwrighting</code> srazí s <code>snushing</code></li> <li><code>treponematoses</code> srazí s <code>waterbeds</code></li> </ul><p><strong> kolize crc32 </strong></p><ul> <li><code>codding</code> srazí s <code>gnu</code></li> <li><code>exhibiters</code> srazí s <code>schlager</code></li> </ul><p><strong> kolize superfasthash </strong></p><ul> <li><code>dahabiah</code> srazí s <code>drapability</code></li> <li><code>encharm</code> srazí s <code>enclave</code></li> <li><code>grahams</code> srazí s <code>gramary</code></li> <li>... odstřihněte 79 kolizí ...</li> <li><code>night</code> srazí s <code>vigil</code></li> <li><code>nights</code> srazí s <code>vigils</code></li> <li><code>finks</code> srazí s <code>vinic</code></li> </ul><h2>náhodnost</h2><p>dalším subjektivním měřítkem je, jak náhodně jsou hash rozděleny. mapování výsledných tabulek ukazuje, jak rovnoměrně jsou data distribuována. všechny hašovací funkce vykazují dobré rozdělení při lineárním mapování tabulky:</p><p><img src="https://i.stack.imgur.com/bmysu.png" alt="enter image description here"></p><p>nebo jako <a href="http://en.wikipedia.org/wiki/hilbert\_curve"><em> hilbertova mapa </em></a> ( <a href="http://xkcd.com/195/">xkcd je vždy relevantní</a> ):</p><p><img src="https://i.stack.imgur.com/n8r3k.png" alt="enter image description here"></p><p>s výjimkou hashovacích řetězců čísel (<code>"1"</code>, <code>"2"</code>, ..., <code>"216553"</code>) (například <a href="https://web.archive.org/web/20190119000003/https://blogs.msdn.microsoft.com/ericlippert/2003/09/19/arrrrr-capn-eric-be-learnin-about-threadin-the-harrrrd-way/">psč</a> ), kde se ve většině hashovacích algoritmů začínají objevovat vzorce:</p><p><strong> [~ # ~] sdbm [~ # ~] </strong>:</p><p><img src="https://i.stack.imgur.com/1juxp.jpg" alt="enter image description here"></p><p><strong> djb2a </strong>:</p><p><img src="https://i.stack.imgur.com/0wjpn.jpg" alt="enter image description here"></p><p><strong> fnv-1 </strong>:</p><p><img src="https://i.stack.imgur.com/0f4l3.jpg" alt="enter image description here"></p><p>všechny kromě <strong> fnv-1a </strong>, které mi stále vypadají celkem náhodně:</p><p><img src="https://i.stack.imgur.com/wevjm.jpg" alt="enter image description here"></p><p>zdá se, že <strong> murmur2 </strong> má ještě lepší náhodnost s <code>numbers</code> než <code>fnv-1a</code>:</p><p><img src="https://i.stack.imgur.com/jywbf.png" alt="enter image description here"></p><blockquote> <p><em> když se podívám na <code>fnv-1a</code> "number" map, i <strong> think </strong> vidím jemné vertikální vzory. s murmurem nevidím vůbec žádné vzory. co si myslíte? </em></p> </blockquote><hr><p>extra <strong> <code>*</code> </strong> v tabulce označuje, jak špatná je náhodnost. s <code>fnv-1a</code> je nejlepší a <strong> <code>djb2x</code> </strong> je nejhorší:</p><pre><code> murmur2: . fnv-1a: . fnv-1: ▪ djb2: ▪▪ djb2a: ▪▪ sdbm: ▪▪▪ superfasthash: . crc: ▪▪▪▪▪▪▪▪▪▪▪▪▪▪▪▪▪▪▪ loselose: ▪▪▪▪▪▪▪▪▪▪▪▪▪▪▪▪▪▪▪▪▪▪▪▪▪▪ ▪ ▪▪▪▪▪▪▪▪▪▪▪▪▪ ▪▪▪▪▪▪▪▪▪▪▪▪▪▪▪▪▪▪▪▪▪▪▪▪▪▪▪▪▪▪ ▪▪▪▪▪▪▪▪▪▪▪▪▪▪▪▪▪▪▪▪▪▪▪▪▪▪▪▪▪▪▪▪▪▪▪▪▪▪▪▪▪▪▪▪▪▪▪▪▪▪▪▪▪▪▪▪▪▪▪▪▪▪▪▪▪▪▪▪▪▪▪ </code></pre><p>původně jsem napsal tento program, abych se rozhodl, jestli jsem dokonce musel <em> worry </em> o kolizích: ano.</p><p>a pak se ukázalo, že hashovací funkce byly dostatečně náhodné.</p><h2>algoritmus fnv-1a</h2><p>hash fnv1 přichází ve variantách, které vracejí 32, 64, 128, 256, 512 a 1024 bitů hashe.</p><p> <a href="http://en.wikipedia.org/wiki/fowler%e2%80%93noll%e2%80%93vo\_hash\_function">fnv-1a algoritmus</a> je:</p><pre><code>hash = fnv\_offset\_basis for each octetofdata to be hashed hash = hash xor octetofdata hash = hash * fnv\_prime return hash </code></pre><p>kde konstanty <code>fnv\_offset\_basis</code> a <code>fnv\_prime</code> záleží na požadované velikosti hash:</p><pre><code>hash size  32-bit prime: 2^24 + 2^8 + 0x93 = 16777619 offset: 2166136261 64-bit prime: 2^40 + 2^8 + 0xb3 = 1099511628211 offset: 14695981039346656037 128-bit prime: 2^88 + 2^8 + 0x3b = 309485009821345068724781371 offset: 144066263297769815596495629667062367629 256-bit prime: 2^168 + 2^8 + 0x63 = 374144419156711147060143317175368453031918731002211 offset: 100029257958052580907070968620625704837092796014241193945225284501741471925557 512-bit prime: 2^344 + 2^8 + 0x57 = 35835915874844867368919076489095108449946327955754392558399825615420669938882575126094039892345713852759 offset: 9659303129496669498009435400716310466090418745672637896108374329434462657994582932197716438449813051892206539805784495328239340083876191928701583869517785 1024-bit prime: 2^680 + 2^8 + 0x8d = 5016456510113118655434598811035278955030765345404790744303017523831112055108147451509157692220295382716162651878526895249385292291816524375083746691371804094271873160484737966720260389217684476157468082573 offset: 1419779506494762106872207064140321832088062279544193396087847491461758272325229673230371772250864096521202355549365628174669108571814760471015076148029755969804077320157692458563003215304957150157403644460363550505412711285966361610267868082893823963790439336411086884584107735010676915 </code></pre><p>podrobnosti viz <a href="http://www.isthe.com/chongo/tech/comp/fnv/index.html#fnv-param">hlavní stránka fnv</a> .</p><p>všechny mé výsledky jsou u 32bitové varianty.</p><h2>fnv-1 lepší než fnv-1a?</h2><p>ne. fnv-1a je všude lepší. při použití korpusu anglického slova došlo k dalším kolizím s fnv-1a:</p><pre><code>hash word collisions   fnv-1 1 fnv-1a 4 </code></pre><p>nyní porovnejte malá a velká písmena:</p><pre><code>hash lowercase word collisions uppercase word collisions    fnv-1 1 9 fnv-1a 4 11 </code></pre><p>v tomto případě fnv-1a není <em> "400%" </em> horší než fn-1, pouze o 20% horší.</p><p>myslím, že důležitější s sebou je, že existují dvě třídy algoritmů, pokud jde o kolize:</p><ul> <li><strong> vzácné srážky </strong>: fnv-1, fnv-1a, djb2, djb2a, sdbm</li> <li><strong> běžné srážky </strong>: superfasthash, loselose</li> </ul><p>a pak je tu, jak rovnoměrně jsou hashe:</p><ul> <li><strong> vynikající distribuce: </strong> murmur2, fnv-1a, superfasthas</li> <li><strong> vynikající distribuce: </strong> fnv-1</li> <li><strong> dobrá distribuce: </strong> sdbm, djb2, djb2a</li> <li><strong> hrozné rozdělení: </strong> loselose</li> </ul><hr><p><strong> aktualizace </strong></p><p>mumlání? <em> jistě, proč ne </em></p><hr><p><strong> aktualizace </strong></p><p>@whatshisname přemýšlel, jak by <strong> crc32 </strong> provedl přidaná čísla do tabulky.</p><p>crc32 je <em> celkem dobrá </em>. několik kolizí, ale pomalejší, a režie 1k tabulky vyhledávání.</p><p><em> vystřihněte všechny chybné informace o distribuci crc - můj špatný </em></p><hr><p>až do dneška jsem měl v úmyslu používat fnv-1a jako můj <em> de facto </em> hash-hashovací algoritmus tabulky. ale teď přecházím na murmur2:</p><ul> <li>rychleji</li> <li>lepší <em> randomnessification </em> všech tříd vstupů</li> </ul><p>a opravdu, <em> opravdu </em> doufám, že je něco špatného s <a href="http://landman-code.blogspot.ca/2008/06/superfasthash-from-paul-hsieh.html"><code>superfasthash</code> algoritmus, který jsem našel</a> ; je příliš špatné na to, aby byl tak populární, jak je.</p><p><strong> aktualizace: </strong> z <a href="http://code.google.com/p/smhasher/wiki/murmurhash3">domovská stránka murmurhash3 na googl</a> :</p><blockquote> <p>(1) - superfasthash má velmi špatné kolizní vlastnosti, které byly dokumentovány jinde.</p> </blockquote><p>takže to nejsem jen já.</p><p><strong> aktualizace: </strong> uvědomil jsem si, proč je <code>murmur</code> rychlejší než ostatní. murmurhash2 pracuje na čtyřech bytech najednou. většina algoritmů je <em> byte byte </em>:</p><pre><code>for each octet in key addtheoctettothehash </code></pre><p>to znamená, že jak se klíče prodlužují, murmur dostane svou šanci září.</p><hr><p><strong> aktualizace </strong></p><h2> <a href="http://blogs.msdn.com/b/oldnewthing/archive/2012/05/23/10309199.aspx">guid jsou navrženy tak, aby byly jedinečné, nikoli náhodné</a> </h2><p>včasný příspěvek od raymonda chena opakuje skutečnost, že guid <em> "random" </em> guid nejsou určeny pro jejich náhodnost. oni nebo jejich podmnožina jsou nevhodní jako hashovací klíč:</p><blockquote> <p>ani u verze 4 guid algoritmus není zaručeno, že bude nepředvídatelný, protože tento algoritmus nespecifikuje kvalitu generátoru náhodných čísel. <a href="http://en.wikipedia.org/wiki/globally\_unique\_identifier">článek wikipedia pro guid obsahuje primární výzkum, který navrhuje</a> , že budoucí a předchozí guid lze předpovídat na základě znalosti stavu generátoru náhodných čísel, protože generátor není kryptograficky silný.</p> </blockquote><p>náhodnost není totéž jako vyhýbání se kolizi; což je důvod, proč by bylo chybou pokusit se vymyslet svůj vlastní „hashovací“ algoritmus tím, že vezme nějakou podskupinu „náhodného“ průvodce:</p><pre><code>int hashkeyfromguid(guid type4uuid) { //a "4" is put somewhere in the guid. //i can't remember exactly where, but it doesn't matter for //the illustrative purposes of this pseudocode int guidversion = ((type4uuid.d3 &amp; 0x0f00) &gt;&gt; 8); assert(guidversion == 4); return (int)getfirstfourbytesofguid(type4uuid); } </code></pre><p><strong> poznámka </strong>: znovu jsem v uvozovkách uvedl <em> "náhodné guid" </em>, protože se jedná o "náhodnou" variantu guid. přesnější popis by byl <code>type 4 uuid</code>. ale nikdo neví, co je typu 4 nebo typu 1, 3 a 5. takže je to jednodušší nazvat je „náhodnými“ guid.</p><h1>všechna anglická slova zrcadla</h1><ul> <li> <a href="https://web.archive.org/web/20070221060514/http://www.sitopreferito.it/html/all\_english\_words.html">https://web.archive.org/web/20070221060514/http://www.sitopreferito.it/html/all\_english\_words.html</a> </li> <li> <a href="https://drive.google.com/file/d/0b3blwu7vb2u-dew1vkuxc3u4sg8/view?usp=sharing">https://drive.google.com/file/d/0b3blwu7vb2u-dew1vkuxc3u4sg8/view?usp=sharing</a> </li> </ul> <p>měli byste se držet společné úmluvy o něčem takovém.</p><p>pokud jsou vstupy nastaveny jako tabulkový procesor, lidé pochopí, že stisknutím záložky přejdou na další záznam a první záznam bude zpracován.</p><p>protože říkáte, že se jedná o aplikaci technické podpory, nezní to tak, jako byste to udělali, takže bych řekl, že byste měli mít tlačítko.</p><p>to znamená, že profesionální uživatelé vždy ocení klávesové zkratky, takže práce s kartou <strong>také</strong> zní jako dobrý nápad.</p> <p>zdá se, že většina zmatku se týká funkcí, které by v modelu domény neměly vůbec existovat:</p><ul> <li> <p><strong>perzistence</strong> by nikdy nemělo být v modelu domény. vůbec nikdy. to je důvod, proč se spoléháte na abstraktní typy, jako je <code>irepository</code>, pokud část modelu někdy potřebuje udělat něco jako načtení jiné části modelu, a použít závislost injekce nebo nějakou podobnou techniku ​​k zapojení implementace. tak to udeřte ze záznamu.</p> </li> <li> <p><strong>autorizace</strong> není <em> obecně </em> součástí vašeho modelu domény, pokud není skutečně součástí domény, např. pokud píšete bezpečnostní software. mechanici, kterým je povoleno provádět to, co je v aplikaci, se běžně řeší v „edge“ úrovně business/domain, veřejných částí, se kterými mohou části ui a integrace skutečně hovořit - controller v mvc, services nebo samotný systém zasílání zpráv v soa ... získáte obrázek.</p> </li> <li> <p><strong>továrny</strong> (a předpokládám, že máte na mysli abstraktní továrny), nejsou zrovna <em> špatné </em>, které mají v doménovém modelu, ale jsou téměř vždy zbytečné. za normálních okolností máte továrnu pouze tehdy, když se vnitřní mechanika vytváření objektů může změnit. máte však pouze jednu implementaci doménového modelu, což znamená, že bude existovat pouze jeden druh továrny, která vždy vyvolá stejné konstruktory a další inicializační kód.</p> <p>můžete mít továrny na „pohodlí“, pokud chcete - třídy, které zapouzdřují běžné kombinace konstruktérských parametrů atd. - ale upřímně řečeno, obecně, pokud máte ve svém doménovém modelu mnoho továren, pak jen ztrácíte řádky kódu.</p> </li> </ul><p>takže jakmile všechny tyto trávníky odejdete, tak to prostě opustí ověření. to je jediný, který je tak složitý.</p><p><strong>ověření</strong> <em> je </em> součástí vašeho doménového modelu, ale je také součástí každé další komponenty aplikace. vaše uživatelské rozhraní a databáze budou mít svá vlastní, podobná, ale odlišná pravidla validace, založená na podobném, ale odlišném konceptuálním modelu. není skutečně určeno, zda objekty musejí mít metodu <code>validate</code>, ale i když ano, obvykle ji delegují do třídy validátoru (ne rozhraní - ověření je <strong>ne</strong> abstrakt v doménovém modelu je to zásadní).</p><p>mějte na paměti, že validátor je stále technicky součástí modelu; nemusí být připojen k agregovanému kořenovému adresáři, protože neobsahuje žádná data ani stav. doménové modely jsou koncepční věci, obvykle se fyzicky překládají do shromáždění nebo do sbírky sestav. pokud se váš kód delegace nachází v těsné blízkosti modelu objektu, nestresujte se nad „anemickým“ problémem; stále se to počítá.</p><p>k tomu všemu opravdu patří to, že pokud se chystáte udělat ddd, musíte pochopit, co je doména <em> </em>. pokud stále mluvíte o věcech, jako je vytrvalost a autorizace, jste na špatné cestě. doména představuje běžící stav systému - fyzické a koncepční objekty a atributy. do doménového modelu, období nepatří nic, co není přímo relevantní pro objekty a vztahy.</p><p>při zvažování, zda něco patří do doménového modelu, se zpravidla položte následující otázka:</p><p><strong>„může se tato funkčnost někdy změnit z čistě technických důvodů?“</strong> jinými slovy, nikoli kvůli jakékoli pozorovatelné změně skutečného podnikání nebo domény?</p><p>pokud je odpověď „ano“, pak nepatří do modelu domény. není součástí domény.</p><p>existuje velmi dobrá šance, že jednoho dne změníte svou infrastrukturu vytrvalosti a autorizace. nejsou proto součástí domény, jsou součástí aplikace. to platí také pro algoritmy, jako je řazení a vyhledávání; neměli byste jít a strčit implementaci binárního vyhledávacího kódu do svého modelu domény, protože vaše doména se týká pouze abstraktní koncepce vyhledávání, nikoli toho, jak to funguje.</p><p>pokud po odstranění všech věcí, na kterých vám nezáleží, zjistíte, že model domény je skutečně <em> anemický </em>, pak by to mělo sloužit jako docela dobrý náznak, že ddd je jednoduše nesprávným vzorem pro váš projekt.</p><p>některé domény jsou skutečně <em> </em> anemické. aplikace pro sociální bookmarking ve skutečnosti nemají o „doméně“ moc mluvit; všechny vaše objekty jsou v podstatě pouze data bez funkce. na druhé straně má obchodní a crm systém docela těžkou doménu; když načtete entitu <code>rate</code>, pak existuje rozumné očekávání, že ve skutečnosti <em> můžete dělat věci </em> s takovou mírou, například použít na objednané množství a nechte si zjistit objemové slevy a promo kódy a všechno zábavné.</p><p>doménové objekty, které pouze uchovávají data obvykle <em> do </em> znamenají, že máte anemický doménový model, ale to nutně <em> nemusí </em> znamená, že jste vytvořili špatný design - může to znamenat pouze to, že samotná doména je anemická a že byste měli používat jinou metodologii.</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> <p>citovat jedno ze studií jakoba nielsona o <a href="http://www.useit.com/alertbox/scrolling-attention.html">rolovací chování</a> :</p><blockquote> <p>dnes se uživatelé budou posouvat. neměli byste však ignorovat záhyb a vytvářet nekonečné stránky ze dvou důvodů:</p> <ul> <li>dlouhé stránky jsou i nadále problematické kvůli omezenému rozsahu pozornosti uživatelů. lidé dávají přednost webům, které se dostanou k věci a nechají je, aby dělaly věci rychle. kromě základní neochoty číst více slov, rolování je práce navíc.</li> <li>nemovitost nad záhybem stránky je cennější než věci pod hranicí<br> násobek pro přilákání a udržení pozornosti uživatelů.</li> </ul> <p>takže, ano, můžete dát informace pod záhyb, spíše než se omezit na kousnutí stránek.</p> </blockquote><p>chcete-li přidat k tomu, co nielson napsal, uveďte své nejdůležitější informace a nejlepší nabídku. <strong> ponechte svou primární výzvu k akci nad záhybem. </strong> rozpětí pozornosti je na webu krátké a je nejlepší, abyste svůj bod upřesnili a učinili jej dříve než později.</p><p>pokud chcete, aby uživatelé pokračovali ve čtení, usnadněte jim to. rozdělte své stránky nadpisy, grafikou a odrážkami. <strong> usnadněte si pochopení klíčových bodů. </strong> někteří uživatelé mohou pouze skenovat, ale ujistěte se, že dokážou získat vše, co z vaší stránky potřebují, když si přečtou vaše titulky, vytáhněte uvozovky a tučné písmo, s možností jít hlouběji čtením každého slova. pomáhá také vložit do záhybu nějaký obsah, aby uživatel viděl jeho část, ale zbytek bude muset posouvat dolů.</p><p>kde je záhyb? <a href="http://www.boxesandarrows.com/view/blasting-the-myth-of">je to všude</a> a se zvýšeným využíváním mobilních zařízení se to bude jen rozšiřovat. budete muset <strong> velmi pečlivě zvážit své cílové publikum </strong> a provést úpravy na základě vlastní analýzy.</p> <blockquote> <p>„musí existovat dobrá metrika, aby bylo možné určit, kdy je vhodné použít rámec.“</p> </blockquote><p>spíš ne. kdyby existovaly dobré metriky pro určení vhodného použití jakékoli technologie, neviděli byste svaté války v jazyce, editoru a metodice.</p><p>skupiny, se kterými jsem spolupracoval, dělají totéž - odhadněte si náklady a přínosy, zvolte nejproduktivnější cestu a doufejte, že mají pravdu. není to strašně vědecké - jedna část intuice, tři části zkušenosti, jedna část náchylnost k marketingu, jedna část mazaný a pět částí hodnotí názor.</p> krásné dopoledne petře, obávám se, že nebude :(. vesměs všešchny ty varianty spojů jsou "rychlo spoje".