Posted in: Základy PowerShellu

Hodiny do PowerShellu

Dnes je to jen malý kousek kódu, který se ovšem může hodit. Na liště OS máme běžně hodiny, ale někdy se může stát, že potřebujeme promítnout někam aktuální čas, ne z nějakého jiného důvodu chceme v konzoli vidět běžící čas. Nyní přidám jednoduché jádro, digitální hodiny. Jednoduchý kód využívající nekonečného cyklu while:

while($true)
{
    cls #vyčištění konzole
    $cas = Get-Date | select Hour, Minute, Second #uložení času do proměnné
    Write-Host $cas.Hour ":" $cas.Minute ":" $cas.Second #výpis času v obvyklém formátu
    Start-Sleep -Seconds 1 #uspání procesu na 1 sekundu
}

Ručičkové hodiny do konzole

Vykreslení ručičkových hodin s pomocí grafických knihoven .NET už na internetu a jde vytvořit v libovolném jazyce s využitím trochy goniometrie. Osobně jsem chtěl simulovat ručičkové hodiny přímo v konzole pomocí vykreslování znaků. Hodiny vykreslují polohu konců ručiček, které se pohybují spíše po nějakém kosém čtverci, nežli po kruhu, protože k vykreslení dochází vypsáním pole 30 x 30 znaků. Stejně jako digitálky výše, čtou čas z operačního systému, ze kterého následně vypočítají x a y souřadnici konce ručičky každé ručičky. Problémem je relativně pomalé překreslování příkazové řádky, takže běh nevypadá úplně hezky, ale jdou a přečíst se nechají 😉

  • kolečko je hodinová ručička
  • + je minutová ručička
  • * je sekundová ručička
function get-sekunda{
    param (
        $s
    )
    #výpočet polohy sekund
    if($s -le 15)
    {
        $y = $s + 15
        $x = $s
        $plocha[$x, $y] = '*'
    }
    elseif(($s -gt 15) -and ($s -le 30))
    {
        $y = 30 - ($s - 15)
        $x = $s
        $plocha[$x, $y] = '*'
    }
    elseif(($s -gt 30) -and ($s -le 45))
    {
        $y = 15 - ($s - 30)
        $x = 30 - ($s - 30)
        $plocha[$x, $y] = '*'
    }
    elseif(($s -gt 45) -and ($s -le 60))
    {
        $y = $s - 45
        $x = 30 - ($s - 30)
        $plocha[$x, $y] = '*'
    }
}

function get-minuta{
    param (
        $m
    )
    #výpočet polohy minut
    if($m -le 15)
    {
        $y = $m + 15
        $x = $m
        $plocha[$x, $y] = '+'
    }
    elseif(($m -gt 15) -and ($m -le 30))
    {
        $y = 30 - ($m - 15)
        $x = $m
        $plocha[$x, $y] = '+'
    }
    elseif(($m -gt 30) -and ($m -le 45))
    {
        $y = 15 - ($m - 30)
        $x = 30 - ($m - 30)
        $plocha[$x, $y] = '+'
    }
    elseif(($m -gt 45) -and ($m -le 60))
    {
        $y = $m - 45
        $x = 30 - ($m - 30)
        $plocha[$x, $y] = '+'
    }
}

function get-hodina{
    param (
        $h
    )
    #převedení na 12 hodin režim
    $h = $h % 12
    #výpočet polohy hodin
    switch($h)
    {
        0 {$plocha[0, 15] = 'o'}
        1 {$plocha[5, 20] = 'o'}
        2 {$plocha[10, 25] = 'o'}
        3 {$plocha[15, 30] = 'o'}
        4 {$plocha[20, 25] = 'o'}
        5 {$plocha[25, 20] = 'o'}
        6 {$plocha[30, 15] = 'o'}
        7 {$plocha[25, 10] = 'o'}
        8 {$plocha[20, 5] = 'o'}
        9 {$plocha[15, 0] = 'o'}
        10 {$plocha[10, 5] = 'o'}
        11 {$plocha[5, 10] = 'o'}
        12 {$plocha[0, 15] = 'o'}
    }
}

$plocha = New-Object 'object[,]' 31,31

while($true)
{
    cls #vyčištění konzole
    $cas = Get-Date | select Hour, Minute, Second #uložení času do proměnné
    #Write-Host $cas.Hour ":" $cas.Minute ":" $cas.Second #výpis času v obvyklém formátu
    #inicialoizace plochy
    for($i = 0; $i -le 30; $i++)
    {
        for($j = 0; $j -le 30; $j++)
        {
            $plocha[$i,$j] = ' ' #uložení mezery do pole plochy
        }
    }
    #nastavení ciferníku
    $plocha[0,15] = '12'
    $plocha[15,30] = '3'
    $plocha[30,15] = '6'
    $plocha[15,0] = '9'
    $plocha[15,15] = '*'
    #výpočet polohy konců ručiček
    get-hodina -h ($cas.Hour) #ručička zobrazená kolečkem
    get-minuta -m $cas.Minute #ručička zobrazení plusem
    get-sekunda -s $cas.Second #ručička zobrazená hvězdičkou
    #vykreslení plochy
    for($i = 0; $i -le 30; $i++)
    {
        for($j = 0; $j -le 30; $j++)
        {
            Write-Host $plocha[$i,$j] -NoNewline
        }
        Write-Host ""
    }
    
    Start-Sleep -Seconds 1 #uspání procesu na 1 sekundu
}
Posted in: Vývoj počítačů

Návrhové vzory

  • Představují obecné řešení problémů
  • Není knihovnou nebo částí zdrojového kódu
  • Je popis řešení problému nebo šablona, která může být použita v různých situacích
  • Objektově orientované návrhové vzory ukazují vztahy a interakce mezi třídami a objekty aniž by určovali implementaci konkrétní třídy
  • Algoritmy nejsou návrhové vzory, protože řeší konkrétní problémy, nikoliv problémy návrhu
  • Vycházejí z praxe
  • Hlavní předností je hotové katalogizované řešení
  • Popis návrhového vzoru dává veškeré potřebné informace, výhody, nevýhody

Tematické okruhy

  • Objektové návrhové vzory – určeny pro analytiky, designery a programátory
  • Architektonické vzory – vzory situací při mapování analytických modelů do designu
  • Interakční vzory – vhodné pro analytiky, designery middlewaru
  • Analytické vzory – vzory pro návrh rozsáhlých informačních systémů
  • Vzory pro aplikace v reálném čase – vhodné pro návrháře speciálních IS pracujících v reálném čase
  • Vzory pro servisně orientovanou architekturu
  • BPM vzory

Výhody použití

  • Ulehčení práce
  • Snížení počtu chyb
  • Snadnější rozšiřování programů
  • Dodržení principů OOP
  • Lepší komunikace skupin

Struktura

  • Zde můžeme užít definici tvůrce návrhových vzorů: Každý popisovaný návrhový vzor musí být formulován ve formě pravidel, které stanovují vztah mezi kontextem, silami působících v tomto kontextu a konfigurací, která dovoluje těmto silám vyřešit vlastní působení v rámci kontextu.
  • Název, stručné představení, účel
  • Demonstrační příklad
  • Obecná struktura s vnitřními vztahy objektů
  • Popis implementace, konkrétní příklad
  • Známá použití, vztahy s ostatními vzory

Objektové návrhové vzory

  • Každý vzor popisuje množinu vzájemně souvisejících objektů a tříd
  • Hlavním důvodem pro jejich používání je jejich znuvupoužitelnost
  • Kategorie: tvořivé, strukturální, zrychlování
  • Tvůrčí vzory jsou součástí procesu vytváření objektů
  • Strukturální vzory se zabývají skládáním objektů a tříd
  • Zrychlování určují jak třídy nebo objekty vzájemně reagují a jak jsou rozděleny jejich odpovědnosti
  • V GoF máme 23 základních vzorů, které jsou rozděleny do 3 skupin

Dělení vzorů

  • V praxi dělíme návrhové vzory dle oblasti, do které spadají

Seznam vzorů dle GoF

Kategorie návrhových vzorů

Vztahy mezi vzory

Vytvářecí vzory

  • Facotory Metod – odvozuje třídy od třídy vytvářející objekty
  • Abstract Factory – vytváří objekty více souvisejících tříd
  • Builder – vytváří složený objekt postupně pomocí protokolu
  • Prototype – objekty se vytvářejí kopírováním od prototypových objektů
  • Singelton – třída, která vytváří pouze jednu jedinou instanci

Strukturální vzory

  • Adapter – přizpůsobení rozhraní třídy jiným rozhraním
  • Composite – hierarchie tříd tvořená dvěma druhy objektů
  • Proxy – zástupce jiného objektu
  • Flyweight – struktura pro efektivní sdílení velkého množství objektů
  • Facade – jednotné rozhraní pro celý systém
  • Bridge – oddělení rozhraní od implementace
  • Decorator – dynamické přidání funkčnosti objektům

Vzory chování

  • Template Method – abstraktní definice algoritmu po jednotlivých krocích
  • Interpreter – reprezentace gramatiky jako hierarchie tříd
  • Mediator – odstraňuje nutnost referencí spolupracující objekty
  • Chain of Responsibility – zasílání zpráv pomocí zřetězených objektů
  • Observer – definování závislosti objektu k dalším objektům
  • Strategy – flexibilní zapouzdření algoritmu do objektu
  • Command – zapouzdření požadavku na funkci
  • State – zapouzdření stavu, možnost změny chování v objektu
  • Visitor – zapouzdření chování
  • Iterator – procházení agregovaných objektů

Vzory v praxi

Jedináček (singelton)

  • Je určen pro tvorbu objektů a případná změna chování je dosahována změnou instance objektu
  • Vzor se skládá jen z třídy jedináčka
  • Třída implementující vzor zapouzdřuje přístup ke sdílené instanci a je zodpovědná za její vytvoření
  • Klient k instanci přistupuje pomocí přístupového budu
  • Vzor užijeme tam, kde je požadován jediný výskyt instance v rámci aplikace nebo systému
  • Implementace vzoru je závislá na zvolené technologii
Posted in: Vývoj počítačů

Monitorování provozovaných IT systémů a app

Bezagentový monitoring

  • Sbírá data v jedné části infrastruktury
  • Není nutná instalace sondy
  • Pomocí volání nativních funkcí OS sbírá data o jeho činnosti
  • Je prováděn přes standartní protokoly a přihlášení do systému

SiteScope a BAC

  • BAC je SW balík shromažďující několik tipů monitoringu
  • SiteScope je určen pro monitoring infrastruktury a může pracovat samostatně i jako integrovaná součást BAC
  • BAC umožňuje sběr dat z více SiteScope přičemž naměřená data poskytuje pomocí funkcí dashboard
  • BAC umožňuje analogické zpracování dat nasbíraných jinými produkty

BAC SAM aplikace poskytuje

  • Konfigurace a administrace více SiteScope serverů
  • Reporty přes všechny SiteScope servery
  • Stav infrastruktury v BAC dashboard
  • Integrace s produkty třetích stran

Architektura SiteScope

  • Webserver zajišťuje prezentaci směrem ke koncovému uživateli a vlastní core systém
  • Core systém se stará o vlastní monitoring, zpracování dat a upozorní v případě problémově nasbíraných dat
  • SiteScope umí spolupracovat i s sms bránou, nikoliv jen s e-mailem
  • Prvotně užívá monitoring obsažený v OS aplikačních serverů či databází
  • Možnost proaktivního monitoringu – umožňuje volat posloupnost URL adres
  • Umožňuje přístup k souborům na FTP serveru
  • Frekvence sběru dat je definována uživatelem (BAC má periodu 5 minut)

Monitoring provozních aplikací byznys Availability center

  • Patří do managementu v rám HP Mercury BTO řešení
  • Jde o monitoring aplikací v produkčním prostředí ne jen z hlediska výkonnosti, tak z hlediska plnění smluv o dodávaných službách
  • HP merkury má pomoci podnikatelům a IT manažerům získat potřebou kontrolu a přehled pro dosažení konzistentnějších, předvídatelnějších a snáz měřitelných podnikatelských výsledků v IT
  • Jednotlivá centra jsou sestaveny z balíků a jednotlivých stávajících aplikací

Topologie

Core server

  • Příjem datových vzorků ze všech typů monitoringu
  • Jednoduchá transformace dat a zápis do databáze
  • Publikace relevanletních dat na BUS sběrnici

Center server

  • Provoz UGI
  • Sestavování reportů
  • Autorizační procesy
  • Běh všech web aplikací BAC

Data Procesing Server

  • Zpracovává data, která ukládá do centrální databáze
  • Provádí všechny logické operace nad daty
  • Je odpovědný za běh plánovaných úloh
  • Běh je náročný na využití CPU a paměti
  • Zaměření monitoringu na sledování byznys procesu jako celku
  • Cílem je dospět ke spokojenosti koncového uživatele
  • Sleduje se i dostupnost aplikace
  • Možnost předpovědi krizových situací
  • Možnost reagovat na snížení výkonu systému

Ekonomické přínosy

  • Hlavním přínosem je předpovězení a možné zabránění výpadku systému
  • Rychlejší systém = více obsloužených požadavků
  • Stabilnější systém = spokojený zákazník
  • Omezení finančních strát výpadkem
  • Zamezení odlivu zákazníků
  • Rychlejší interní systém = vyšší produktivita práce

Infrastrukturální monitoring

  • Má dlouholeté tradice
  • Dlouho jediný způsob jak systémy sledovat
  • BAC umožnilo snížení počtu sond
  • Snížilo se čerpání režie díky využívání prostředků OS

Bezagentový monitoring

Pasivní monitoring

Sběr dat z nástrojů třetích stran

Client monitor

Real User Monitor

  • Výhodou je sledování veškeré komunikace směrem k aplikaci a od ní
  • Je to server instalovaný do síťového prostředí aplikace sbírající předem definovaná data
  • Omezeno na webové aplikace

Service level management

Aplikation maping

Back to Top