Display



Mám notebook lenovo legion y520 a zapnul jsem yt na chromu a proste jsem pustil video a zcal se mi ze spodu asi cca do prosřed trhat obrazovka a byly na ni růžové čáry vodorovně a jak jsem z tamodešel tak se mi to dělalo asi 5sekund po tom a pak az nez resetuju pc tak mam ve spodu obrazovky tak mm cerny a nevidim tam co se deje ve windows a az ho restartuju tak v poho a kdyz se mi to deje a udelam prtscr tak je to v poho kdyz se na ten obrazek divam tak v poho takze spise problem na obrazovce a nevim co stim mam delat.
Budeš se divit, ale dát to do servisu.
Jen aby spíše než stručnou odpověď komentář: Toto chování závisí jak na přehrávači, který používáte, a na grafické kartě. Co se stane, je následující:


1. Přehrávač videa plní svou videa okno s jediným, barvy bytu. Obvykle to bude buď světlé růžové nebo něco podobného, ​​ale ne přesně, černé. Myšlenka je vybrat si barvu, která není pravděpodobné, že se objeví kdekoli jinde na obrazovce.
2. Přehrávač videa instruuje akcelerační čip na grafické kartě pro přehrání videa, ale jeho zobrazení pouze na části obrazovky, které mají ten přesnou barvu. K dosažení tohoto cíle, je technika nazývá „překrytí“ je používán, který efektivně umožňuje grafickou kartu „překryvné“ video obsahu na libovolnou část obrazovky, která je vyplněna s tímto konkrétním barvou.


Teď, když se snímek přehrávače, zatímco způsob, jak hrát, co máte, je obraz, který obsahuje velký jednotný vyplnit kde je video má být. Máte-li zobrazit tento snímek obrazovky při přehrávání videa, bude grafická karta nebude schopen rozeznat rozdíl mezi barvou v rámci přehrávače a obrazovky to. Bude to jen nahradit tuto barvu s obrazem.


Můžete se bavit s tímto chováním ze strany výkresu na obrázku. Ať už jste čerpal se zdají být vypracovány v horní části obrazu, protože video zobrazuje pouze tam, kde na obrazovce má přesné barvy používané video přehrávač. <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>nezapomeňte, že zatímco monitor může být větší než 800x600, okno prohlížeče nemusí být na celou obrazovku.</p><p>například běžím na monitorech lcd s rozlišením 1600x1200 (stále poměrně velké), ale mé okno prohlížeče je přibližně 1100x1200 (přibližně).</p><p>musíte se tedy podívat na nejběžnější rozlišení <em>prohlížeč</em>, nikoli na nejběžnější rozlišení <em>obrazovka</em>.</p> <p><strong> poznámka: </strong> <em>toto bylo testováno na notebooku s grafickou kartou řízenou i915.</em></p><hr><h3>pozadí</h3><p><strong> poznámka: </strong> když je připojena nová obrazovka, do hostitele není odeslána žádná událost, zůstane to pravda i po mé poslední úpravě. jediným způsobem je tedy použít dotazování. snažím se, aby byly co nejefektivnější ...</p><h3>úprava # 3</h3><p>nakonec existuje jedno lepší řešení (prostřednictvím acpi):</p><p>stále neexistuje žádná událost, ale acpi se zdá být efektivnější než <code>xrandr</code> na dotaz. (poznámka: toto <strong> vyžaduje </strong> načtené moduly jádra acpi, ale nevyžaduje oprávnění root.</p><p>moje konečné řešení (pomocí bash):</p><pre><code>isvgaconnected() { local crtstate read -a &lt; /proc/acpi/video/vid/crt0/state crtstate test $(( ( ${crtstate[1]} &gt;&gt;4 ) ${1:+*-1+1} )) -ne 0 } </code></pre><p>nyní test:</p><pre><code>$ if isvgaconnected; then echo yes; else echo no; fi yes </code></pre><p>je zapojen, takže ho nyní odpojím:</p><pre><code>$ if isvgaconnected; then echo yes; else echo no; fi no </code></pre><p><strong> poznámka: </strong> <code>${1:+*-1+1}</code> povolit argument <em>boolean</em>: pokud <em>něco je přítomno</em>, odpověď by byla obrácena: <code>( crtstate &gt;&gt; 4 ) * -1 + 1</code>.</p><p>a závěrečný skript:</p><pre><code>#!/bin/bash export crtprocentry=/proc/acpi/video/vid/crt0/state isvgaconnected() { local crtstate read -a &lt; $crtprocentry crtstate test $(( ( ${crtstate[1]} &gt;&gt;4 ) ${1:+*-1+1} )) -ne 0 } delay=.1 unset switch isvgaconnected || switch=not while :;do while isvgaconnected $switch;do sleep $delay done if [ "$switch" ];then unset switch echo vga is connected # doing something while vga is connected else switch=not echo vga is not connected. # doing something else, maybe. fi done </code></pre><p><strong> upozornění: </strong> <em>lehčí než <code>xrandr</code>, ale ne nevýznamné</em> se zpožděním menším než <em>,02</em> sekund, bash skript půjde na začátek procesu jedlíci zdrojů (<code>top</code>)!</p><p>i když to stojí ~ 0,001 s:</p><pre><code>$ time read -a &lt;/proc/stat crtstat </code></pre><p>vyžaduje to ~ 0,030 s:</p><pre><code>$ read -a &lt; /proc/acpi/video/vid/crt0/state crtstate </code></pre><p>to je velké! takže v závislosti na tom, co potřebujete, lze <code>delay</code> rozumně nastavit mezi <code>0.5</code> a <code>2</code>.</p><h3>úprava # 2</h3><p>nakonec jsem něco našel:</p><p><strong> důležité vyloučení odpovědnosti: </strong> hraní s <code>/proc</code> a <code>/sys</code> záznamy mohou poškodit váš systém !!! takže na produkčních systémech nezkoušejte následující.</p><pre><code>mapfile watchfilelist &lt; &lt;( find /sys /proc -type f 2&gt;/dev/null | grep -i acpi\\\|i91 ) prompt=("/" "|" '\' '-'); l=0 while :; do mapfile watchstat &lt; &lt;( grep -h . ${watchfilelist[@]} 2&gt;/dev/null ) for ((i=0;i&lt;=${#watchstat[@]};i++)); do [ "${watchstat[i]}" == "${oldstat[i]}" ] || echo ${watchstat[i]} done oldstat=("${watchstat[@]}") sleep .5 printf "\r%s\r" ${prompt[l++]} [ $l -eq 4 ]&amp;&amp;l=0 done </code></pre><p>... po očištění nežádoucích záznamů:</p><pre><code>for ((i=0;i&lt;=${#watchfilelist[@]};i++)); do [[ "${watchfilelist[$i]}" =~ /sys/firmware/acpi/interrupts/sci ]] &amp;&amp; unset watchfilelist[$i] &amp;&amp; echo $i done </code></pre><p>to jsem dokázal přečíst:</p><pre><code>/proc/acpi/video/vid/crt0/state:state: 0x1d /proc/acpi/video/vid/crt0/state:state: 0x0d /proc/acpi/video/vid/crt0/state:state: 0x1d </code></pre><p>když připojím, odpojte a znovu zapojte kabel monitoru.</p><p>při dotazu na konfiguraci (spuštění <code>system/preferences/monitor</code> nebo <code>xrandr</code>), grafické karty udělají typ <em>scan</em>, takže běží <code>xrandr -q</code> vám dá informace, ale musíte zjistit stav.</p><p>prohledal jsem všechny protokoly (jádro, démona, x atd.) prohledávajícím <code>/proc</code> &amp; <code>/sys</code> a zjevně se zdá, že neexistuje nic, co by vyhovovalo vaší žádosti.</p><p>zkusil jsem to také:</p><pre><code>export spc50="$(printf "%50s" "")" watch -n1 ' find /proc/acpi/video -type f | xargs grep -h . | sed "s/^\([^:]*):/\1'$spc50'}:/; s/^\(.\{50\}\) *:/\1 /"' </code></pre><p>po tom všem, když spustíte <code>system/preferences/monitor</code> zatímco nebyla připojena žádná nová obrazovka ani odpojena, bude se nástroj zobrazovat jednoduše (normálně). ale pokud jste již dříve připojili nebo odpojili obrazovku, občas spustíte tento nástroj a uvidíte, že na ploše vytvoříte typ <em>reset</em> ​​nebo <em>obnovit</em> ​​(stejný pokud spustíte <code>xrandr</code>).</p><p>zdá se, že to potvrzuje, že tento nástroj požádá o <code>xrandr</code> (nebo pracuje stejným způsobem) pravidelným dotazováním na stav, počínaje okamžikem jeho spuštění.</p><p>můžete vyzkoušet sami:</p><pre><code>$ for ((i=10;i--;)); do xrandr -q | grep ' connected' | wc -l; sleep 1; done 1 1 1 2 2 2 1 1 1 1 </code></pre><p>tím se na 10 sekund zobrazí počet připojených obrazovek (displejů).</p><p>zatímco to běží, připojte a/nebo odpojte obrazovku/monitor a podívejte se, co se děje. takže byste mohli vytvořit malou testovací funkci bash:</p><pre><code>isvgaconnected() { local xrandr=$(xrandr -q) [ "$xrandr" == "${xrandr#*vga1 con}" ] || return 0 return 1 } </code></pre><p>který by byl použitelný jako v:</p><pre><code>$ if isvgaconnected; then echo yes; fi </code></pre><p>ale buďte opatrní, <code>xrandr</code> trvá asi <strong> 0,140 s do 0.200 s </strong>, zatímco na zástrčkách nedojde k žádné změně a do <strong> 0,770 sekund </strong> kdykoli něco bylo připojeno nebo odpojeno těsně před (<strong> poznámka: </strong> zdá se, že to není zdrojový zdroj).</p><h3>úprava # 1</h3><p>abych zajistil, že neučím něco nesprávného, ​​prohledával jsem web a dokumenty, ale nenašel jsem nic o <em>dbus and screens</em>.</p><p>nakonec jsem běžel ve dvou různých oknech <code>dbus-monitor --system</code> (hrál jsem také s možnostmi) a malý skript, který jsem napsal:</p><pre><code>$ for ((i=1000;i--;)); do isvgaconnected &amp;&amp; echo yes || echo no; sleep .5; done </code></pre><p>... a znovu zapojen, než odpojen monitor, mnohokrát. takže teď mohu říci:</p><ul> <li><em>v této konfiguraci <strong> pomocí ovladače i915 </strong> neexistuje jiný způsob, než spustit <code>xrandr -q</code> vědět, zda je monitor připojen nebo ne.</em></li> </ul><p>ale buďte opatrní, protože se nejeví jiné způsoby. například se zdá, že <code>xrandr</code> tyto informace sdílí, takže moje plocha gnome by se automaticky přepnula na <code>xinerama</code> automaticky ... <strong>, když jsem běžel <code>xrandr</code> </strong>.</p><h3>některé dokumenty</h3><ul> <li> <a href="https://wiki.archlinux.org/index.php/xrandr#toggle\_external\_monitor">skript pro přepínání interního/externího displeje pro notebooky</a> </li> <li> <a href="http://www.x.org/docs/intel/hd/ihd\_os\_vol\_3\_part4\_bjs.pdf">®intel hd graphics opensource programmer's reference manual</a> </li> </ul> dobré odpoledne kateřino, na to se nedá jednoznačně odpovědět. je totiž důležité vědět, proč mlžení vzniká a může to mít několik příčin: kvůli vlhkosti z klimatizace, zaseklý vnitřní okruh, starý a špatně fungující kabinový filtr, popř. mastnota a špína na okně, která zachytává vlhkost. poslední varianta je nejjednodušší na vyřešení. pak skutečně stačí vzít crystal a okno pořádně vyčistit. nicméně nemůžu vám slíbit, že to pomůže, protože nevím, čím to mlžení vzniká :(. Toto se mi stalo jednou, když jsem na mobilu měl slabý signál internetu (nebo alespoň si to tak vysvětluji). Později bylo vše v pořádku. <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> zdravím katko, jsou to obvykle zaschlé tečky. jsou neškodné, časem zmizí. ono teď v teplých dnech je ideální fakt jemně rozprášit na lak a během 10 vteřin tlakem vody omýt. teď schne fakt rychle. 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>tyhle jsou trochu staré, ale byly vysoké v žebříčku google, takže jsem si myslel, že bych hodil odpověď, kterou jsem našel <a href="https://stackoverflow.com/questions/8588818/chrome-pdf-display-duplicate-headers-received-from-the-server-fixed">chrome, pdf displej, duplicitní záhlaví přijaté ze serveru</a> </p><p>můj problém byl také v tom, že název souboru obsahoval čárky. vyměňte čárky za jejich odstranění a měli byste být v pořádku. moje funkce pro vytvoření platného názvu souboru je níže.</p><pre><code> public static string makevalidfilename(string name) { string invalidchars = regex.escape(new string(system.io.path.getinvalidfilenamechars())); string invalidrestr = string.format(@"[{0}]+", invalidchars); string replace = regex.replace(name, invalidrestr, "\_").replace(";", "").replace(",", ""); return replace; } </code></pre>