wz

GML

20:23 30.04.2010

  • jde o zkratku pro Graph Modelling Language (pozor, stejná zkratka existuje i pro jiné věci)
  • jde o formát pro ukládání grafů používaných v teorii grafů
  • web k tomuto formátu lze naleznout zde: http://www.infosun.fim.uni-passau.de/Graphlet/GML/
  • poslední aktualizace webových stránek v červenci 1997, z čehož lze usuzovat, že tento formát je již překonán (hlavně díky tomu, že se do módy dostalo XML ; jmenujme např.: GraphML)
  • z toho důvodu je k GML v tomto článku učiněno jen několik málo poznámek
  • i před GML existovala řada odlišných formátů pro ukládání grafů; schopnosti těchto formátů se lišily - vyskytly se obyčejné formáty jen pro závislosti, tak i složité formáty pro ukládání jmen, souřadnic atd.
  • čili byla zde spousta formátů, které byly často nekompatibilní; vznikla iniciativa pro vytvoření běžného souborového formátu, a po čase se objevil právě GML jako takový univerzální formát
  • GML soubor je 7-bitový ASCII soubor
  • jednoduchá struktura - GML soubor se skládá z hierarchicky organizovaných párů klíč-hodnota; klíč je sekvence alfanumerických znaků - např. graph nebo id; hodnota je buď integer, floating point číslo, řetězec nebo seznam párů klíč-hodnota 
  • GML může reprezentovat libovolná data a je možné přidat přídavné informace ke každému objektu; to může vést k situacím, kdy aplikace přidává data, kterým jiná aplikace nerozumí; ta si tato data ale může uložit a pak při opětovném uložení uložit znova 
  • grafy jsou reprezentovány klíči graph, node a edge; topologická struktura je modelována u uzlů id atributy a u hran source a target atributy
  • jsou možné komentáře, a to pomocí  #
  • GML není určené pro grafy, i když v úvodu bylo řečeno, že ano; GML je záměrně navrhnuto k reprezentaci libovolných datových struktur
  • dokument má stromovou strukturu
  • node a edge jsou synové klíče graph; každý izolovaný uzel musí mít unikátní .graph.node.id atribut; 
  • hrany jsou určené pomocí atributů .graph.edge.source a .graph.edge.target; jejich hodnotami jsou .graph.node.id hodnoty
  • orientované i neorientované grafy jsou uložené ve stejném formátu 
  • jednoduchý parser funguje ve 4 krocích: čte soubor a vybuduje strom; pak skenuje strom pro uzly; pak nalezne a vytvoří všechny uzly a zapamatuje si jejich g.node.id hodnoty
  • nalezne všechny hrany a jejich source a target atributy - nalezne k nim uzly
  • omezení tu existují pouze 2: id uzlů musí být v grafu unikátní; a edge musí mít source a target atributy
  • GML většinou nepožaduje, aby atributy následovaly v určitém pořadí v souboru - přesněji: pořadí objektů není významně důležité do té doby, dokud se jejich klíče liší
  • neznámé atributy - v nejjednodušším případě je lze ignorovat, to se ale ztratí, pokud soubor uložíme znova; můžeme je ale i uložit a pak znovu připojit k souboru; změny ale mohou udělat nějaké atributy nesprávnými - o nějakých klíčích se mluví jako o nebezpečných 
  • GML úmyslně nedefinuje žádný standard, jak reprezentovat grafická nebo další systémově závislá data; je to kvůli tomu, že existuje spousta formátů pro grafiku, takže můžeme použít některý z nich

Redis ve Windows

21:24 26.02.2014

V tomto příspěvku v rychlosti několik slov na téma "jak si zprovoznit redis ve Windows".

  • Zde si lze stáhnout některý z balíčků pro Windows.
  • redis-server.exe - když to spustím, nastartuje se server
  • redis-cli.exe - to je klient, kterým se můžu dotazovat serveru. Když ho spustím a nezahlásí to žádnou varovnou hlášku, mám vyhráno.

Klíčová slova: redis in windows, windows redis, redis win32, redis win64

Chrome: odstranění iframe superfish.com

11:57 04.02.2014

Chrome mi začal z ničeho nic v levém horním rohu stránek zobrazovat takový čtvereček. Když se člověk kouknul do kódu, viděl, že jde o iframe, který načítal nějakou adresu ze superfish.com. Nevěděl jsem, o co jde, ale příjemné pocity to v člověku samozřejmě navyvolávalo. Čtvereček musel pryč. Bohužel jsem nic nového neinstaloval, tak jsem nevěděl, kde začít. Přímo ve zdrojovém kódu nic takového nebylo, takže bylo nasnadě, že to dělá nějaká plugin. Žádný nový jsem v povolených pluginech neměl, a tak jsem začal postupně deaktivovat ty staré (deaktivuješ a zkusíš refresh, jestli se něco změnilo nebo ne). Takto jsem zjistil, že vše mi začal z ničeho nic dělat plugin Auto-Translate, se kterým jsem byl do té doby spokojen.

Máš podobný problém taky? Tak to zkus taky postupně deaktivovat (a pak případně zase zapínat) pluginy, co v prohlížeči máš aktivní. Pluginy najdeš v menu pod Nástroje > Rozšíření.

Klíčová slova: chrome superfish, chrome remove superfish, odstranění superfish z chrome, proč chrome zobrazuje iframe superfish, chrome rámeček v levém horním rohu, ...

tail -f ve Windows

08:00 18.12.2013

V Linuxu lze používat příkaz tail -f. Díky tomuto příkazu aktuálně vidím nové řádky, které přibyly do sledovaného souboru. Hledal jsem alternativu tohoto pro Windows, a podobného chování jsem dosáhl např. s programem Windows Tails.

KMPlayer - vypnutí pravého panelu

16:38 26.11.2013

KMPlayer furt otravoval, ať si ho aktualizuji na novější verzi. Tuším, že šlo o změnu z 3.6 na 3.7. Po spuštění novějšího playeru mě v něm hned začal otravovat nový pravý panel, co nabízí nějaké věci z internetu. Zagooglil jsem a našel toto fórum, kde mi k odstranění tohoto panelu poradili editovat hosts soubor a přidat do něj řádek
127.0.0.1 player.kmpmedia.net

Dá se říct, že přidání zabralo. V playeru sice na chvilku vidím error hlášku, protože se to u mě snaží připojit k databázi, která v mém počítači neexistuje, ale toto okno po chvíli zmizí, tudíž mě nestihne otravovat, a to byl hlavní cíl mých snah.

#kmplayer #disable_right_panel

Windows 7 nevidí externí disk

23:12 29.07.2013

Koupil jsem si nový externí disk a nechtělo ho to v Počítači zobrazit. O ovladačích Windows hlásil, že jsou aktuální. Nakonec jsem vše rozhodil tak, že jsem ve složce Počítač klikl pravým tlačítkem nad Počítač, dal Spravovat, ve Správě disků si našel nahoře ten disk, neměl pojmenovaný svazek, tak jsem přes pravé tlačítko klikl na možnost změny pojmenování jednotky a cesty, a když jsem to pojmenoval, tak už se mi disk začal nabízet.

Padající Shockwave Flash v Chrome

21:51 22.04.2013

Na PC Worldu jsem našel zajímavý článek, jehož nadpis "Tip: Aby Shockwave Flash v Google Chrome už nepadal" je snad všeříkající.

Vzhledem k tomu, že mívám podobné problémy, vyzkoušel jsem, a skutečně jsem měl doplněk nainstalovaný dvakrát, tak teď budu sledovat, jestli vše zabralo. A měl-li bych z článku něco ocitovat, kdyby náhodou časem byl odkaz nefunkční, tak třeba toto: "Do adresního řádku vepište about:plugins a stiskněte Enter"

Zjištění ID uživatele na Facebooku

03:48 12.07.2012

Jak zjistit id libovolného uživatele na Facebooku? Způsobů bude asi více, já rychle došel k tomuto primitivnímu:

  1. Jdu na uživatelův profil
  2. Nechám si zobrazit zdrojový kód
  3. A v něm zkouším hledat řetězec id. Dokonce by tam mohlo být profile_id=. Za tím by mohlo být nějaké číslo XXX.
  4. Zkusím zadat adresu www.facebook.com/XXX - pokud nás to hodí na profil toho uživatele, kterého jsme hledali, máme vyhráno

Ale jak jsem říkal, nejde o moc chytrou metodu, jak takový údaj zjistit. Po tom, jak to udělat lépe, jsem nepátral.

Matice incidence

15:20 01.05.2010

  • pomocí matice incidence lze reprezentovat grafy používané v teorii grafů
  • každý řádek tu odpovídá jednomu uzlu grafu a každý sloupec jedné hraně grafu
  • zapisuje se sem vlastně to, že mezi daným uzlem a danou hranou existuje spojení
  • jak si lze povšimnout na obrázcích níže, pro každou hranu máme u neorientovaného grafu 2 jedničky (od, do), a u orientovaného se používá 1 u uzlu, odkud hranu vedeme, a -1 u uzlu, kam hrana vede
  • oproti matici sousednosti, která je čtvercová, je matice incidence obecně obdélníková
  • neorientovaná má hodnoty jen 0 a 1 (nad tělesem Z2)
  • dva neorientované grafy jsou izomorfní, pakliže jsou jejich matice incidence stejné až na případnou permutaci řádků a sloupců
  • matice incidence neumožňuje u orientovaného ani neorientovaného grafu smyčky; smyčka je hrana, která vede do stejného uzlu z kterého vychází
  • matici neorientovaného grafu získáme z orientovaného jednoduše - vymažeme záporná znaménka
  • obrázky z Wikipedie:


matice incidence orientovaného grafu             matice incidence

GraphML

14:20 01.05.2010

  • na 8. sympoziu na téma Graph Drawing (GD 2000) byla vytvořena skupina pro návrh formátu pro grafy a kreslení grafů - vznikl GraphML (Graph Markup Language)
  • je to XML formát pro grafové struktury
  • jeho základní charakteristikou je unikátní mechanismus, který dovoluje nadefinovat rozšiřující model pro přídavná data, jako jsou např. informace pro kreslení grafu nebo data specifická pro určitou aplikaci - tyto moduly mohou být volně kombinovány nebo ztrhány bez ovlivnění grafové struktury
  • a skutečnost je taková, že nástroje pro kreslení grafů potřebují ukládat grafy a jejich doprovodná data, protože samotný graf je jen o vztazích mezi uzly a hranami a o pozicích se dá mluvit, až když ho nějakým způsobem vykreslujeme (vždyť graf může být popsán např. i maticí incidence, což je jakási tabulka s čísly)
  • kromě přídavných dat tu jsou samozřejmě jádrové elementy
  • dříve byly pokusy pro nadefinování standardu, ale žádný formát nebyl široce akceptovatelný - jmenovat můžeme: GML či XGMML
  • GraphML je navrženo s těmito cíly na mysli:
    • a) jednoduchost: formát by měl být lehce parsovaný a interpretovaný jak pro lidi tak pro stroje; neměly by zde být žádné dvojznačnosti
    • b) - obecnost - neměly by zde být žádné limity - hypergrafy, hierarchické grafy,... by měly být tímto formátem reprezentovatelné také
    • c) rozšiřitelnost - mělo by být možné rozšířit formát well-defined cestou k reprezentaci přídavných dat pro aplikaci potřebných
    • d) robusnost - systémy, které nejsou schopné ovládat celý rozsah grafových modelů nebo přidané informace, by měly být schopné lehce tyto data rozeznat a poznat podmnožinu, kterou mohou ovládat
  • že to bude XML, o tom nebyly při návrhu žádné pochyby
  • GraphML syntaxe je definovaná pomocí GraphML Schema, existuje i GraphML Document Type Definition (DTD), které ale napříkad nerozlišuje referenční typy jako ID u node a edge
  • GraphML dokument se skládá z graphml elementu a různorodého počtu subelementů: graph, node a edge
  • pro uzel je tag node, který má atribut id, kam se zadává jméno uzlu
  • graphml tag je kořenový a mž?e obsahovat jeden tag desc, 0-n tagů key a 0-n tagů buď data nebo graph
  • pak následuje element locator, do kterého se nic dalšího nevnořuje; tento element má atributy, které mají defaultní hodnoty
  • element desc - obsahuje textová data (description)
  • element graph - může obsahovat desc, a pak buď data, node, edge nebo hyperedge několikrát nebo locator
  • graph má element id a atribut edgedefault, kam se vyplňuje buď directed nebo undirected
  • element node - může obsahovat descs, a pak locator nebo ...
  • procesní pravidla: elementy, které nemůže aplikace zvládnout, jsou ignorovány
  • např. elementy port, hyperedge, endpoint a locator jsou jednoduše ignorovány aplikacemi, které některý z nich neznají
  • elementů graph může být více a některé aplikace spracují třeba jen jeden, některé všechny grafy do jednoho,...
  • uživatelsky definovaná rozšíření: uživatelé mohou přidat strukturovaný obsah do elementůa, nebo uživatelé mohou přidat atributy k GraphML elementům
  • GraphML je planovaný jako služba společnosti; může být používán bezplatně jak v komerčním tak vědeckém software
  • můžeme mít graf, kde napíšeme edgedefault="directed" a pak u nějaké hrany napsat directed="false"
  • mixed multigraph - je graf který může obsahovat jak orientované tak neorientované hrany a můje mít cykly a multi-edges
  • hrana ukazuje na zdroj a cíl
  • graf může obsahovat node a edge elementy v jakémkoli pořadí
  • port - je to podmnožina vyskytujících se (incidujících) vztahů uzlu a mů?e být nahlí?ena jako část uzlu ke kterému mohou být hrany připojeny
  • hypergrafy - hyperedge je podmnožina uzlů...
  • nested graphs
  • Přídavná data: navrhli umístění přídavných v well-defined umístěních bez předepisovaní reprezentace dat. Tyto lokace jsou definovanány zapomocíatagů
  • nestrukturovaná data - popisky dat jsou promyšlené, aby byly funkcemi, které přiřazují hodnoty v libovolném rozsahu k elementům grafu, které většinou nemají stejný typ
  • pro každou funkci GraphML požaduje, který poskytuje jméno a doménu (přes atribut for) pro třídu labelů; optimální obsahje pou?íván jako defaultní hodnota funkcí
  • každý element kromě locatoru může obsahovat více tagů data, které reprezentují hodnoty přiřazené ke korespondující grafové položce - data element odkazuje ke svému
  • pokud není žádný data element v doméně, kterou dává key, je použita defaultní hodnota
Zdroj

http://graphml.graphdrawing.org