ArtNet

ArtNet je protokol pro přenos DMX protokolu a RDP (Remote Device Management) po UDP (User Datagram Protocol) v IP (Internet Protocol). Zjednodušeně: vaše DMX nemusíte na stage táhnout několika linkami (universama) ale všechny najednou po “počítačovém síťovém” kabelu. Na stage máte krabičku, ko které je tonto “počítačový síťový kabel” zapojen. Z této krabičky už klasicky rozvedete jednotlivé DMX kabely do požadovaných světel.

Začínáme s ArtNet a ChamSys

Jak tedy začít? Já začal s převodníkem ArtNet – DMX 3 universe od http://www.blackout.sk. Převodník cenově vychází na 70€ a nabízí 3 universy.

Tento převodník má defaultně nastavenou IP: 192.168.0.99 a masku 255.255.255.0  Pro přihlášení do převodníku použijte tyto defaultní přístupové údaje: user: admin heslo: 12345  Není nutné ho nastavovat, po zakoupení je již vše nastaveno. Kompletní návod k ArtNet převodníku od blackout.sk

Proč jsem vybral ChamSys MagicQ PC

Pokud začínáte, vyprdněte se na Freestyler DMX a podobné programy pro začátečníky a jděte rovnou do něčeho na úrovni. Profíci s penězma valí MA lighting. Zbytek osvětlovačů, co se nechtějí učit nic nového (podle mne 🙂 ) valí Avolites – je to rider a všichni s tím umí. Já, vyzkoušel několik programů (především zdarma) ale jakmile jsem objevil ChamSys, zamiloval jsem se. Koketoval jsem i s Avolites Titan One ale nesednul mi.

Pokud nemáte peníze, pro začátek je ChamSys super v tom, že stačí ArtNet převodník a můžete používat 1 universe zcela zdarma (na ovládání světel). Nemáte žádné omezení na funkčnost. Pak až něco vyděláte, přikoupíte PC Wing Compact, pak Extra Wing Compact a s MagicQ MQ80 už máte dospělý pult bez nutnosti PC a můžete hrát vysokou osvětlovačskou ligu 🙂

Pojďme nastavit MagicQ PC na počítači

Stáhnete na PC MagicQ PC a nainstalujte. Náš ArtNet – DMX 3 universe má IP: 192.168.0.99, našemu PC kde máme nainstalovaný MagicQ PC nastavíme IP: 192.168.0.2 a ArtNet propojíme s PC síťovým kabelem.OK, nyní spustíme MagicQ PC. Jdeme do sekce Setup -> VIEW SETTINGS -> Network kde nastavíme tyto hodnoty:

  • IP address – stejnou jako má PC (192.168.0.2)
  • Subnet mask – defaultně 255.255.255.0
  • Gateway address – není nutná ale většinou 192.168.0.1

IP adresy máme nastavené, vyzkoušíme, že se z PC dostaneme na ArtNet převodník příkazem ping 192.168.0.99

V konzoli je vidět že IP adresa 192.168.0.99 odpovídá na ping, máme správně nastaveno.

Nyní nastavíme MagicQ aby universe 1 odesílal na ArtNet 0. Jdeme do sekce Setup -> VIEW DMX I/O

Nastavili jsme pro universe 1 status na enabled a pojmenovali jsme si ho na universe1.

To je vše 🙂 Nyní můžete napatchovat světla a začít používat.

Android: fragment worker

Dnes se podíváme na to, jak dělat složitější operace ve fragmentu při které se bude volat metoda z activity. Zaměříme se na to, jak správně napsat kód aby aplikace nespadla při otočení displeje.

Jednoduchá ukázka jak to nedělat:

MainActivity.java – klasická activity, která má veřejnou metodu worker, která by v praxi vykonávala nějakou operaci. Nyní pro ukázku vypíše pouze text do logu.

LoginFragment.java – jednoduchý fragment s tlačítkem. Po tapnutí na tlačítko, se spustí AsyncTask, který volá metodu worker z MainActivity

Pokud tento kód spustíte, zjistíte, že funguje. Bohužel po otočení displeje aplikace spadne….

Jak na to lépe?

Správná cesta je vytvoření static interface TaskCallbacks ve fragmentu, který implementujeme v activity. Metodu worker následně voláme přes mCallbacks.worker(“run” + i);

MainActivity.java

LoginFragment.java

Teď již při otáčení displeje není problém.

Retrofit: synchronní a asynchronní požadavky

Minule jsme si ukázali, jak použít Retrofit v Android studiu. Dnes se podíváme na synchronní a asynchronní požadavky.

Synchronní požadavek

Při synchronním požadavku, je na server odeslán požadavek, aplikace se “zastaví” a čeká, dokud neobdrží odpověď od serveru.

Asynchronní požadavek

Při asynchronním požadavku se používají tzv. callbacky. Na server se odešle požadavek (stejně jako při synchronním požadavku) ale nečeká se na odpověď a kód pokračuje dál. Na odpověď ze serveru čeká callback, který provede požadovanou operaci s odpovědí od serveru. Tento callback se může zavolat kdykoliv (odpověď od serveru trvá různě dlouho).

V kódu je vidět asynchronní volání, které je shodné jako v prvním seznámení s Retrofit, přibylo synchronní volání:

 

 

Android se nepřipojuje k WiFi síti bez internetu

Android od verze KitKat (4.4) se automaticky nepřipojuje k WiFi sítím, u kterých nezjistí dostupnost internetu. Asi to dává smysl, proč by se pojil k síti, která nemá internet? Raději zkusí jinou síť kde internet bude. Ale jak to vyřešit pokud chceme aby s k této síti připojoval? Uděláme malý hack, kterým nasimulujeme servery, na kterých Android zjišťuje, že je na internetu 🙂 Android po připojení zkontroluje URL (je natvrdo zadrátovaná v Androidu a může se měnit v závislosti na verzi Androidu). Pokud dostane zpět požadovanou odpověď, považuje WiFi síť za připojenou k internetu (i když internet nemá) 🙂

Požadavky na danou adresu jsou klasickým GETem a zařízení požaduje odpověď 204 (No content) to je celé. Jenže jak si tyto servery nasimulovat?

Nejjednodušší je v DNS překládat URL (clients3.google.com a connectivitycheck.gstatic.com) na náš server, kde spustíme nginx s touto konfigurací:

 

Základní php funkce pro vývojáře WordPressu

Když není do čeho píchnout, dělám malé weby mám chvilku, dělám webíky pro známé. Dělám svoje vlastní šablony a během tvorby jsem se setkal s těmito specialitami:

Jak přidat do menu (main-menu) class nav-link?

V administraci pro pro uživatele id 2 skryj položky z menu:

Jak v administraci použít vlastní css styl pro editor?

Vytvářená galerie bude mít defaultně předvolené 4 sloupce fotek:

Vytvářená galerie bude mít automaticky předvolen URL odkazu na mediální soubor:

U nahrávání fotek do mediálních souborů odeber titulek fotky a popis (některé foťáky tam ukládají nesmysly):

Automatická aktualizace:

 

Android: Retrofit

Před několika lety jsem komunikoval se serverem přes balíček Volley. Protože komunikuji hlavně přes REST rozhraní, nahradil jsem Volley balíčkem Retrofit, který je pro tyto účely doporučovaný.

Retrofit je HTTP klient pro Android (Javu), který vám usnadňuje připojení k webové službě REST API. Usnadňuje konzumaci dat JSON a XML. Podporuje příkazy: GET, POST, PUT, PATCH a DELETE. Pojďme si ukázat jak na to.

Nainstalujeme závislosti:

+ internet permission

Retrofit je knihovna, která používá anotované rozhraní pro volání REST API. Vytvoříme jednoduchý požadavek GET pro seznam knih, který se automaticky namapuje na objekty. API pro seznam knih vrací tento JSON:

jsonschema2pojo

Z JSONu necháme vygenerovat objekty přes službu jsonschema2pojo. Vložíme JSON, vybereme Source type: JSON, Annotation style: Gson a odškrtneme Allow additional properties.

 

 

 

Rozhraní služby

Modelovou třídu máme vytvořenou, vytvoříme rozhraní služby, které bude spravovat API endpointy. Vytvoříme GET požadavek pro načtení všech knih:

Všimněte si anotace @GET označující typ požadavku a nabývající hodnotu books, která označuje endpoint (tato hodnota se přidá k BASE_URL popsané níže).

RetrofitClient

požadavky na REST API budeme odesílat přes třídu RetrofitClient:

Kde BASE_URL nabývá hodnoty se základním URL API, ke kterému se přidávají hodnoty z rozhraní služby popsané výše.

Získání dat v activity

V activity poté data jednoduše získáme a můžeme s nimi dále pracovat. U pozorňuji, že data jsou získána asynchronně:

Touto jednoduchou ukázkou jsem vám představil jak na to. Jednoduché, že?

Odeslání dat na server – POST

Pokud však potřebujete posílat nějaká data, je nutné je ukládat přes metody PUT nebo POST. Pojďme se podívat jak na to s metodou POST (PUT by byla analogická).

V rozhraní služby vytvoříme metodu POST s endpointem a parametrem @body:

Na endpoint BASE_URL/send odešleme objekt Book – tento objekt se automaticky převede na JSON.

Odeslání POST požadavku z activity:

 

Problémy

  • máš aktuální verze balíčků?

 

Jaký je rozdíl mezi lampami MFL / WFL / NSP?

MFL, WFL a NSP jsou zkratky pro velikost světelného paprsku.

Description Code Typcal MR16 Beam Angle Typical PAR Beam Angle
Very Narrow Spot VNSP <7 degrees <15 degrees
Narrow Spot NSP 5-15 degrees 15-30 degrees
Spot SP 16-22 degrees 30-60 degrees
Narrow Flood NFL 23-32 degrees 60-90 degrees
Flood FL 32-45 degrees 90-120 degrees
Wide Flood WFL 45-60 degrees 120-160 degrees
Very Wide Flood VWFL >60 degrees >160 degrees

 

 

Android: životní cyklus activity a fragmentu při otočení displeje

Activity

Pojďme si ukázat životní cyklus activity. Červeně je zvýrazněn životní cyklus při otočení displeje. Pokud chcete přenést nějaký stav do nově otočené activity, máte možnost si tento stav uložit v metodě onSaveInstanceState() a obnovit ho v onRestoreInstanceState() nebo v onCreate()

Fragment

U fragmentu máme podobné možnosti. Stavy opět ukládáme v metodě  onSaveInstanceState() a obnovíme v onRestoreInstanceState() nebo v onCreate() nebo v onCreateView()

Nebo můžeme v metodě onCreate() zavolat setRetainInstance(true); čímž se životní cyklus při rotaci změní takto:

Tento způsob je vhodný například pro použití services, které při rotaci v onDestroy nezabijeme ale chce s nimi dále pracovat.

X na rybách: metoda feeder

Od doby kdy jsem byl naposledy chytat ryby se toho hodně změnilo. Dneska nejčastější a nejvíce doporučovanou metodou pro chytání ryb je takzvané chytání na feeder. Jedná se o speciální metodu chytání na položenou. Máte speciální krmítko (většinou z jedné strany ploché), pod krmítkem obratlík a na obratlíku 1 návazec (do 15cm délky). Návazců můžete mít více a vybrat vodný podle toho jak velké ryby chcete chytat a podle aktuálních podmínek. Tato metoda je velice efektivní. Krmítko dopadne na dno vždy plochou stranou dolů. Voňavé krmení z krmítka přiláká rybu, která vidí 1 větší nástrahu na háčku, které neodolá. Při této metodě je velká šance, že ryba nástrahu najde a zkusí ji ochutnat, díky krátkému návazci se háček chytí v rybí tlamce a krmítko podpoří efekt samozáseku.

Krmítko a obratlík

Na kmenový vlasec nasadíme krmítko, pod které navážeme obratlík. Chytá se na “placaté” krmítko. Krmítko slouží zároveň jako zátěž. Existují různé váhy krmítka. Váhu krmítka volte podle odhozové váhy zátěže prutu.

Výroba návazce

Návazec uděláme z pletené šňůry. Na jeden konec dáme háček a na druhý konec očko. Na návazec navlčeme s boile needle gumičku, která chrání před vyvlečením návazce z obratlíku.

Uzel pro vytvoření smyčky na návazci

  1. zdvojte vlasec přeložením
  2. na zdvojeném vlasci udělejte smyčku
  3. zvonu prostrčte konec zdvojeného vlasce smyčkou
  4. utáhněte uzel a zastřihněte konec

 

Pokud je pletená šňůra tlustší, vynechte krok 3 aby bylo možné přes uzel nasadit gumičku. Skvělá věc na smyčky je easy loop. Tahle jednoduše děláte smyčky:

Jak navázat háček s očkem

navázání háčku na návazec:

Na kmenový vlasec – uzel na háčku

Na kmenový vlasec – uzel na vlasci

Jan navázat háček s lopatkou