Chci mít okno vždy navrchu(např. notepad) a aby mi zobrazoval měnící se soubor..



Ahoj,hledám nějaké řešení pro toto:Mám jeden soubor, do kterého průběžně zapisuji události. A chci mít na ploše okno (eventuelně nějaký editor prostě něco, co by bylo VŽDY navrchu a umělo mi stále zobrazovat onen soubor událostí, tj. jestli přišla nějaká nová událost). Nějak si s tím nevím rady co použít. Asi nejjednodušší by byla malá aplikace, která by si četla soubor, ale to je programování, tohle nezvládnu). Smířil bych se třeba i s řešením notepadu, jenže 1.)neumím jej nastavit, aby byl vždy navrchu a 2.) když v něm otevřu onen soubor, nemohu do něj pak zapisovat z oné aplikace.. že by třeba soubor nedržel stále v procesu otevřenosti a pravidelně se třeba refreshoval po 1sec taky neumí. Možná to jde nějak udělat za použití nějakého jiného editoru, nebo máte někdo nějakou aplikaci pro toto? Děkuji.
To co chces se resi standardnim UNIXovym prikazem "tail". Pro Windows existuji klony, napr. <http://tailforwin32.sourceforge.net/>V kombinaci s vyse zminenym PowerMenu mas idealni reseni.
<p>obě řešení jsou naprosto přijatelná, při volbě vezměte v úvahu tyto body:</p><ul> <li>vyskakovací okno na mapě může skrývat další užitečné informace</li> <li>více než několik vyskakovacích oken se rychle zaplní. je to v pořádku, pokud je současně otevřen pouze jeden z nich</li> <li>množství informací ve vyskakovacím okně musí zůstat malé</li> </ul><p>na druhé straně se zobrazují informace vedle mapy:</p><ul> <li>ztratíte spojení s bodem zájmu, takže musíte přidat vizuální vztah (barvu, číslo, ikonu, čáru ...) s bodem na mapě. toto spojení je obtížné nebo obtížně čitelné, když máte spoustu bodů</li> <li>pro zobrazení dodatečných informací může být pro uživatele nutné určité posouvání/změna velikosti okna</li> </ul> <p>nejznámější výrazy jsou „panel zpráv“, „panel oznámení“ a „panel oznámení“.</p><p>google používá spoustu příkladů, které používají výše uvedené podmínky. níže je několik.</p><p> <a href="http://www.dmitri.me/misc/notify/">plugin „upozornit lištu“</a> </p><p> <a href="http://roshanbh.com.np/2008/07/top-floating-message-box-using-jquery.html">horní plovoucí okno zprávy pomocí jquery</a> </p><p> <a href="http://codeasp.net/blogs/raghav\_khunger/microsoft-net/447/jquery-how-to-show-a-message-bar-at-the-top-of-browser-window">jquery: jak zobrazit panel zpráv v horní části okna prohlížeče</a> </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>chtěl bych vidět dynamicky se rozšiřující pole podrobností, takže můžete poskytnout volitelně více podrobností o konkrétních oblastech zkušeností (například fragment kódu nebo složitější informace o projektu), pokud by si zájemce přál více. tímto způsobem si ji udržujete jednoduchou a čistou, ale ukážete jim, že je pod kapotou více, pokud by ji chtěli vidět.</p> <p>nevidím způsob, jak okno smazat, ale zdá se, že to funguje.</p><p>okno ve wiresharku proto můžete vymazat jedním z následujících způsobů: </p><ul> <li>kliknutím na zelené žraločí ploutve vpravo od červeného tlačítka <code>stop</code></li> <li>kliknutí na <code>capture</code>&gt; <code>restart</code></li> <li>stisknutí <code>ctrl-r</code>.</li> </ul> <p>i když plně souhlasím s tím, že ovládání zdroje je tím správným způsobem, chápu také, že ne všechna prostředí jsou dostatečně disciplinovaná, aby se na to mohla spoléhat sama (pokud vůbec), a že někdy je třeba provést změny přímo, aby aplikace zůstala běh, uložte klienta, co máte.</p><p>spouštěč ddl můžete použít k uchování všech revizí v tabulce v samostatné databázi (a samozřejmě tuto databázi samozřejmě často zálohovat). předpokládejme, že máte databázi nástrojů:</p><pre><code>use utility; go create table dbo.procedurechanges ( eventdate datetime not null default current\_timestamp, eventtype nvarchar(100), eventddl nvarchar(max), databasename nvarchar(255), schemaname nvarchar(255), objectname nvarchar(255), hostname nvarchar(255), ipaddress varchar(32), programname nvarchar(255), loginname nvarchar(255) ); </code></pre><p>nyní ve vaší databázi nejprve pojďme chytit to, čemu říkáme „počáteční kontrola“ - aktuální verze uložených procedur:</p><pre><code>use yourdb; go insert utility.dbo.procedurechanges ( eventtype, eventddl, databasename, schemaname, objectname ) select n'initial control', object\_definition([object\_id]), db\_name(), object\_schema\_name([object\_id]), object\_name([object\_id]) from sys.procedures; </code></pre><p>nyní, abyste zachytili následné změny, přidejte do databáze spouštěč ddl:</p><pre><code>use yourdb; go create trigger capturestoredprocedurechanges on database for create\_procedure, alter\_procedure, drop\_procedure as begin set nocount on; declare @eventdata xml = eventdata(), @ip varchar(32); select @ip = client\_net\_address from sys.dm\_exec\_connections where session\_id = @@spid; insert utility.dbo.procedurechanges ( eventtype, eventddl, schemaname, objectname, databasename, hostname, ipaddress, programname, loginname ) select @eventdata.value('(/event\_instance/eventtype)[1]', 'nvarchar(100)'), @eventdata.value('(/event\_instance/tsqlcommand)[1]', 'nvarchar(max)'), @eventdata.value('(/event\_instance/schemaname)[1]', 'nvarchar(255)'), @eventdata.value('(/event\_instance/objectname)[1]', 'nvarchar(255)'), db\_name(), host\_name(), @ip, program\_name(), suser\_sname(); end go </code></pre><p>postupem času bude snadné vidět a porovnat změny v postupech, sledovat, jak se do systému přidávají nové postupy, vidět, jak vypadají procedury, a mít dobrou představu o tom, s kým o jakékoli z těchto událostí hovořit.</p><p>více informací zde:</p><p> <a href="http://www.mssqltips.com/sqlservertip/2085/sql-server-ddl-triggers-to-track-all-database-changes/">http://www.mssqltips.com/sqlservertip/2085/sql-server-ddl-triggers-to-track-all-database-changes/</a> </p> Neexistuje žádný způsob, jak v současném SDK, jak to udělat, měli byste podat [chybu](http://bugreporter.apple.com/) požadující funkci. Existují některé publikované příklady, kdy lidé plazí kolem v hierarchii zobrazení programově číst povrch a vyvolat prvky uživatelského rozhraní, ale ty jsou velmi složité dělat, může mít podivné vizuální artefakty, které způsobují problémy podpory, a je pravděpodobné, že rozchod s aktualizací firmwaru. <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> <h2>možnost 1) rychlý a snadný způsob (pouze panel nástrojů)</h2><p>protože appcompat-v7-r23 můžete použít následující atributy přímo ve vašem <code>toolbar</code> nebo jeho stylu:</p><pre><code>app:titletextcolor="@color/primary\_text" app:subtitletextcolor="@color/secondary\_text" </code></pre><p>pokud je vaše minimální sdk 23 a používáte nativní <code>toolbar</code>, stačí změnit předponu oboru názvů na <code>android</code>.</p><p>v jazyce java můžete použít následující metody:</p><pre><code>toolbar.settitletextcolor(color.white); toolbar.setsubtitletextcolor(color.white); </code></pre><p>tyto metody mají barvu int není id zdroje barev!</p><h2>možnost 2) přepsat atributy panelu nástrojů a motivů</h2><h3>layout/xxx.xml</h3><pre><code>&lt;android.support.v7.widget.toolbar xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" android:id="@+id/toolbar" android:layout\_width="match\_parent" android:layout\_height="wrap\_content" android:minheight="?attr/actionbarsize" android:theme="@style/themeoverlay.myapp.actionbar" app:popuptheme="@style/themeoverlay.appcompat.light" style="@style/widget.myapp.toolbar.solid"/&gt; </code></pre><h3>values ​​/ styles.xml</h3><pre><code>&lt;style name="widget.myapp.toolbar.solid" parent="widget.appcompat.actionbar"&gt; &lt;item name="android:background"&gt;@color/actionbar\_color&lt;/item&gt; &lt;item name="android:elevation" tools:ignore="newapi"&gt;4dp&lt;/item&gt; &lt;item name="titletextappearance"&gt;...&lt;/item&gt; &lt;/style&gt; &lt;style name="themeoverlay.myapp.actionbar" parent="themeoverlay.appcompat.actionbar"&gt; &lt;!-- parent theme sets colorcontrolnormal to textcolorprimary. --&gt; &lt;item name="android:textcolorprimary"&gt;@color/actionbar\_title\_text&lt;/item&gt; &lt;/style&gt; </code></pre><h3>pomoc! moje ikony také měnily barvu!</h3><p>@peterknut oznámil, že to ovlivňuje barvu tlačítka přetečení, tlačítka navigační zásuvky a tlačítka zpět. změní také barvu textu <code>searchview</code>.</p><p>pokud jde o barvy ikon: <code>colorcontrolnormal</code> zdědí od </p><ul> <li><code>android:textcolorprimary</code> pro tmavé motivy (bílá na černém pozadí)</li> <li><code>android:textcolorsecondary</code> pro světlá témata (černá na bílém)</li> </ul><p>použijete-li toto téma na motiv panelu <em>akce</em>, můžete upravit barvu ikony.</p><pre><code>&lt;item name="colorcontrolnormal"&gt;#de000000&lt;/item&gt; </code></pre><p>došlo k chybě v aplikaci appcompat-v7 až do verze r23, která vyžadovala, abyste také přepsali nativní podobu takto:</p><pre><code>&lt;item name="android:colorcontrolnormal" tools:ignore="newapi"&gt;?colorcontrolnormal&lt;/item&gt; </code></pre><h2>pomoc! můj searchview je nepořádek!</h2><p><em>poznámka: tato sekce je možná zastaralá.</em></p><p>protože používáte widget pro vyhledávání, který z nějakého důvodu používá jinou šipku zpět (ne vizuálně, technicky) než ten, který je součástí aplikace appcompat-v7, musíte jej nastavit ručně v motivu <em>aplikace</em>. zásuvky podpůrné knihovny jsou vybarveny správně. jinak by to bylo vždy bílé.</p><pre><code>&lt;item name="homeasupindicator"&gt;@drawable/abc\_ic\_ab\_back\_mtrl\_am\_alpha&lt;/item&gt; </code></pre><p>pokud jde o text hledaného pohledu ... neexistuje snadný způsob. po kopání zdrojem jsem našel způsob, jak se dostat do textového pohledu. nezkoušel jsem to tak, dejte mi prosím vědět v komentářích, pokud to nefungovalo. </p><pre><code>searchview sv = ...; // get your search view instance in oncreateoptionsmenu // prefix identifier with "android:" if you're using native searchview textview tv = sv.findviewbyid(getresources().getidentifier("id/search\_src\_text", null, null)); tv.settextcolor(color.green); // and of course specify your own color </code></pre><h2>bonus: přepíše atributy stylu actionbar a motivu</h2><p>správný styl pro výchozí akční panel appcompat-v7 by vypadal takto:</p><pre><code>&lt;!-- actionbar vs toolbar. --&gt; &lt;style name="widget.myapp.actionbar.solid" parent="widget.appcompat.actionbar.solid"&gt; &lt;item name="background"&gt;@color/actionbar\_color&lt;/item&gt; &lt;!-- no prefix. --&gt; &lt;item name="elevation"&gt;4dp&lt;/item&gt; &lt;!-- no prefix. --&gt; &lt;item name="titletextstyle"&gt;...&lt;/item&gt; &lt;!-- style vs appearance. --&gt; &lt;/style&gt; &lt;style name="theme.myapp" parent="theme.appcompat"&gt; &lt;item name="actionbarstyle"&gt;@style/widget.myapp.actionbar.solid&lt;/item&gt; &lt;item name="actionbartheme"&gt;@style/themeoverlay.myapp.actionbar&lt;/item&gt; &lt;item name="actionbarpopuptheme"&gt;@style/themeoverlay.appcompat.light&lt;/item&gt; &lt;/style&gt; </code></pre> <p>děláme to úplně na <a href="http://smartystreets.com">smartystreets</a> . uživatelé nahrávají soubory s potenciálně miliony adres v nich a my je ověřujeme a standardizujeme/duplikujeme, atd. je to velmi náročné na procesor a dokonce i s kmenovými daty načtenými na jednotku ram, miliony adres zabere několik hodin (mimochodem, pro tuto částku je to velmi rychlé ...).</p><p>může být také důležité navrhnout uživatelské rozhraní, které může podporovat desítky úloh spuštěných paralelně. například naše serverové uzly se rozšiřují a můžeme podporovat mnoho souborů najednou. uživatelé budou potřebovat efektivní způsob, jak zobrazit stav a spravovat je. v roce 2011 jsme vylepšili naše uživatelské rozhraní a to je to, s čím jsme přišli.</p><hr><p> <a href="http://youtu.be/qdjsolatz4u?hd=1">zde je 30sekundové video</a> ukazující, jak celý proces funguje a jak rozhraní reaguje na aktuální stav úlohy (úloh). pokud chcete, můžete vyzkoušet sami od <a href="http://smartystreets.com/account/create">tato stránka</a> (zdarma, nebojte se ...).</p><hr><p>screenshoty pracovního postupu ... trvá asi 30 sekund až několik minut, v závislosti na vašich souborech.</p><p><img src="https://i.stack.imgur.com/egatr.png" alt="upload list"></p><p><em> nahrajte svůj seznam </em></p><p><img src="https://i.stack.imgur.com/kqkb9.png" alt="see the file uploading"></p><p><em> viz nahrání souboru </em></p><p><img src="https://i.stack.imgur.com/zv26q.png" alt="map the fields"></p><p><em> mapujte pole (probíhá automaticky; stačí potvrdit, že automatická mapa byla správná) </em></p><p><img src="https://i.stack.imgur.com/wodst.png" alt="stay up-to-date with the current status"></p><p><em> zůstaňte v kontaktu s tím, co se nyní děje </em></p><hr><p>všimněte si, že jakmile seznam začne zpracovávat, uživatel se může vrátit a nahrát více, které seznamy budou zpracovány paralelně v reálném čase. seznamy lze kdykoli zrušit/smazat a po dokončení je lze stáhnout. pokud byl seznam stažen alespoň jednou, zobrazí se zaškrtnutí.</p><p>toto je vlastně stárnoucí návrh, který plánujeme upgradovat. bude se to cítit spíš jako moderní, responzivní webová aplikace.</p><p>ještě stojí za zmínku, že jsme mnohokrát změnili vzhled stránky „dashboard“ účtu a tento návrh inicioval nejmenší volání/e-maily podpory a zákazníci to rádi viděli na první pohled. první uživatelé mají tendenci shledávat, že se s ním dostanou docela rychle.</p>