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.

SdílejteShare on FacebookTweet about this on TwitterShare on Google+Share on LinkedInEmail this to someone

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ínke. 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.

todo – info o krmítku, zátěže krmítka

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 gumyčku

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

Jan navázat háček s lopatkou:

 

SdílejteShare on FacebookTweet about this on TwitterShare on Google+Share on LinkedInEmail this to someone

Android: dialog a jeho zachování při rotaci displeje

Pokud v Androidu používáte dialogy pro zobrazení nějaké informace uživateli, nesmíte zapomenout na znovuvytvoření activity (při rotaci displeje, zasunutím zařízení do doku, …) při které je activity ukončena a znovu vytvořena. Tím dojde ke zrušení dialogu. Vytvoří se vám v aplikaci při tomto úkonu správně znovu?

Pokud používáte klasický AlertDialog (po nějakém úkonu – ne zobrazení v onCreate) nebude dialog při otočení displeje zobrazen

DialogFragment

Řešením tohoto problému je DialogFragment, který zůstane zobrazen i po restartování activity. Uvádím jednoduchou kontru kódu jak na to:

MyAlertDialogFragment.java

Activity:

 

 

SdílejteShare on FacebookTweet about this on TwitterShare on Google+Share on LinkedInEmail this to someone

Android: zpřístupnění nově vytvořeného souboru přes USB v počítači

Řeším zajímavý úkol: vytvoř v Android zařízení soubor, který bude po připojení telefonu k PC vidět v PC a bude možné jej překopírovat z telefonu do PC.

Dejte si pozor, protože od Android 5 musíte jednotlivá oprávnění povolovat na vyžádání, my budeme potřebovat oprávnění pro ukládání na úložiště. Pro jednoduchost vynechám kód nutný pro získání oprávnění zápisu do úložiště.

Do AndroidManifext.xml přidáme oprávnění:

A jdeme na zdrojový kód (nezapomeňte kontrolovat oprávnění zápisu na úložiště – od SDK Android 5!):

Nejdůležitější příkaz je:

Tímto příkazem se soubor zviditelní mezi ostatními soubory a bude možné ho překopírovat do počítače

SdílejteShare on FacebookTweet about this on TwitterShare on Google+Share on LinkedInEmail this to someone

Jak jsem nasadil Let’s Encrypt 2

Možná si ještě vzpomínáte na můj první článek o tom, Jak jsem nasadil Let’s Encrypt. Jo, nebyl příliš jednoduchý ale zase jste věděli co se vám na serveru děje. Dneska ukáži jednodušší způsob: Cerbot.

Instalace

Automatická instalace certifikátů a nastavení Apache:

Pokud jste konzervativní a nechcete aby vám Cerbot zasahoval do konfigurace Apache, přidejte k příkazu certonly:

Po spuštění se zobrazí průvodce, který požaduje váš e-mail a nalezne všechny virtualhosty na serveru a nabídne pro ně vygenerování certifikátů. Vyberete ty, které chcete použít.

Certifikáty jsou poté vygenerovány do: /etc/letsencrypt/live/www.jmeno-domeny.cz/fullchain.pem

Obnovení platnosti certifikátu

Let’s Encrypt vydává certifikáty s platností 90 dní. Obnova certifikátů se provádí příkazem:

If that appears to be working correctly, you can arrange for automatic renewal by adding a cronor systemd job which runs the following:

 

SdílejteShare on FacebookTweet about this on TwitterShare on Google+Share on LinkedInEmail this to someone

Debian 9: jak nastavit IPv6

Pokud váš poskytovatel připojení internetu nabízí IPv6, zde je ukázka nastavení. Tato konfigurace se provede i po restartu serveru.

vim /etc/network/interfaces

Aby se změna projevila, je nutné restartovat interface

Pokud jsme přihlášeni přes Putty, bude spojení přerušeno a je nutné se znovu připojit.

Správnou konfiguraci zjistíme příkazem:

Správné nastavení ověříme pingem:

 

SdílejteShare on FacebookTweet about this on TwitterShare on Google+Share on LinkedInEmail this to someone

Debian 9 (stretch) – instalace php 7.1

V poslední verzi Debianu Stretch je defaultně php 7.0, pokud potřebujete novější 7.1, je možné jej bez kompilace zdrojových kódů nainstalovat přes balíčky:

SdílejteShare on FacebookTweet about this on TwitterShare on Google+Share on LinkedInEmail this to someone

Jak jsem nasadil Let’s Encrypt

Dnes si prakticky ukážeme jak zprovoznit Let’s Encrypt na vlastním serveru s Debianem a Apache. Let’s Encrypt je továrna na certifikáty zdarma.

Instalace Let’s Encrypt

Zastavíme Apache

Přesvědčíme se že na portu 80 nic neposlouchá:

Vygenerování certifikátu

  1. zadáme email
  2. souhlasíme s podmínkami
  3. zadáme doménová jména pro která chceme certifikát (example.com, www.example.com, app.example.com)

Opět spustíme Apache

Certifikáty byly vytvořeny do složky:

Do Apache pak stačí pouze přidat (základní nejjdnodužší nastavení):

vim meducina.cz-ssl.conf:

Přidáme tuto konfiguraci:

Restartovat Apache a je to 🙂

Ovšem doporučuji Apache nastavit pořádně. K tomu pomůže Generator Mozilla Security (musel jsem povolit a2enmod headers). Takto mi to funguje

Přesměrování na https

Veškerý traffic přesměrujeme na http

 

Obnova certifikátů

Doporučuji si udělat symlink aby příkaz letsencrypt-auto fungoval kdekoliv z příkazové řádky:

Certifikáty jsou vystavené pouze s platností 90 dnů! Zároveň je doporučováno je každých 60 dnů obnovit. Aktualizace certifikátů zatím stále není k dispozici, ale certifikát obnovíme opětovným spuštěním příkazů uvedených výše.

 

Pravidelná aktualizace certifikátů

Abychom nemuseli myslet na pravidelnou aktualizaci certifikátů, přidáme záznam do cornu, který nám je bude automaticky aktualizovat:

Obnovu certifikátů budeme spouštět každý první den v sudém měsíci ve 4:00 ráno:

To je vše. Není nutné restartovat Apache

Ovšem lepší je dát do cronu pouze 1 script, který bude automaticky obnovovat certifikáty:

vim /root/letsencrypt-renew

Nastavit oprávnění pro spouštění:

 

SdílejteShare on FacebookTweet about this on TwitterShare on Google+Share on LinkedInEmail this to someone

Bower + Grunt + Colorbox

Dnes vám naznačím jak do projektů přidávám knihovny třetích stran  a jak spojuji css a js soubory, které následně minifukuji. Ukážeme se to na pluginu Colorbox který používám pro zobrazení detailu fotek v pop-up okně.

Nainstalujeme Colorbox přes bower:

Grunt task pro Colorbox

Pro zkopírování souborů používám balíček grunt-contrib-copy a pro minifikaci css do jednoho souboru grunt-contrib-cssmin:

Nejdůležitější část souboru Gruntfile.js:

Tím se nakopírují ohrají obrázky obrázky z ./bower_components/jquery-colorbox/example3/images/ do www/css/image, soubor bower_components/jquery-colorbox/example3/colorbox.css se zmnifikuje a připojí k souboru www/css/main.css a soubor bower_components/jquery-colorbox/jquery.colorbox-min.js připojíme k zminifikovanému souboru www/js/compiled.min.js

Do souboru s JS přidáme inicializaci Colorboxu (v mém případě main.js):

Parametr {rel:’gal’} označuje že se jedná o galerii. Pokud bude více odkazů s class=”colorbox” půjde mezi fotkami přepínat a nebude se muset pop-up okno zavírat.

Odkazu s obrázkem přidáme classu colorbox:

A je to 🙂

SdílejteShare on FacebookTweet about this on TwitterShare on Google+Share on LinkedInEmail this to someone