Rubriky
Blog

Proč jsou nové mikrovlnky tak složité?

Tato mikrovlnka má asi 20 let. Kdokoli kdo k ní přijde okamžitě ví, jak se používá. Stačí otočit kolečkem.
Toto je typická nová mikrovlnka – jak se to zapíná?? Proč je to tak složité?
WTF??
Rubriky
Blog

Z WAMPu do Dockeru, jednoduše

Motivace

Vždy když přijímáme nového vývojáře do ExitShopu tak největší peklo je, rozjet si systém lokálně, typicky na nějakém tom WAMPu (Xampp, Neard….). Obvykle to zahrnuje tři kroky:

  1. Naklonovat si repozitář
  2. Donahrát neverzované soubory (configy a nějaká defaultní uživatelská data – obrázky atd)
  3. Naimportovat databáze

Mezitím se může pokazit asi tak sto věcí:

  1. Vývojář nebude mít požadovanou PHP extension,
  2. bude mít jinou verzi PHP než je na produkci,
  3. bude mít špatně nakonfigurované PHP
  4. (body 1-3 platí navíc zvlášť i pro každou součást vašeho stacku)
  5. nebude umět (nebo být ochoten) si nastavovat virtual hosty
  6. nebude umět (nebo být ochoten) nastavovat si lokální SSL certifikát
  7. nebude umět (nebo být ochoten) si nainstalovat další služby typu Redis, memcached, fake smtp server, …

Řešení – sjednocení vývojového prostředí

Tedy co se operačního systému a služeb týče. Vyvíjet můžete samozřejmě dál ve svých oblíbených programech. Docker už nějakou dobu běží bez problému i pod Windows takže ani ve vašem OS nebude problém.

Příklad z praxe – převední PHP a MySQL aplikace z WAMPu do Dockeru

Představte si, že máte aplikaci běžící pod nějakou konkrétní verzí PHP, například 8. K tomu budete chtít Apache a MariaDB a celé to poběží na Debianu.

Nejprve si nainstalujeme Docker Desktop.

Vezmeme zdrojáky z WAMPu a nakopírujeme si je jinam, třeba do C:\Docker\mojeappka

WAMP můžeme vypnout ale v systému si ho určitě nechte. Nemusíte hned každou aplikaci Dockerizovat a tyto dva systémy mohou v pohodě existovat vedle sebe.

Dockerfile

Je to hlavní soubor, dáme si ho do rootu aplikace, budeme jej verzovat ale na produkci jej nahrávat nebudeme :)

Rovnou sem dám příklad. Na prvním řádku definujeme, z jaké image chceme vycházet. Vybral jsem tuhle, která kombinuje Debian Buster, Apache a PHP verzi 8.0.3.

FROM php:8.0.3-apache-buster

# nakopírování apache vhosts
COPY docker-konfigurace/000-default.conf /etc/apache2/sites-available/000-default.conf

# nakopírování našich změn pro php.ini
COPY docker-konfigurace/my-php.ini /usr/local/etc/php/conf.d/my-php.ini

# update
RUN apt-get update

# doinstalujeme PHP extension
RUN docker-php-ext-install mysqli && docker-php-ext-enable mysqli

# příklad instalace programu z deb balíčku
RUN apt-get install -y wget
RUN wget https://github.com/wkhtmltopdf/packaging/releases/download/0.12.6-1/wkhtmltox_0.12.6-1.buster_amd64.deb
RUN apt install -y ./wkhtmltox_0.12.6-1.buster_amd64.deb

# povolení apache modulů
RUN a2enmod rewrite

Následuje nakopírování virtual hostů. Příklad takového souboru níže. Všimněte si té cesty. I když jsme na Windows, tak definujeme cesty na zvoleném OS (Debianu).

<VirtualHost *:80>
    DocumentRoot "/var/www/html"
    ServerName mojeappka.test
    ServerAlias www.mojeappka.test

    <Directory "/var/www/html">
        Options Indexes FollowSymLinks MultiViews
        AllowOverride all
    </Directory>
</VirtualHost>

Následuje nakopírování změn oproti defaultnímu php.ini souboru. Může to být třeba vyšší memory limit atd.

Pak spustíme update, abychom při instalaci balíčků měli nové verze. Balíčku můžeme instalovat tak, jak jsme z Linuxu zvyklí – z repozitářů nebo z .deb balíčků. PHP extensions můžeme šikovně instalovat přes docker-php-ext-install XX.

To bychom měli Dockerfile, který definuje náš kontejner.

docker-compose.yml

Tento soubor nám dovolí nakombinovat více služeb do jednoho celku. Dáme si ho do rootu aplikace, budeme jej verzovat ale na produkci jej opět nahrávat nebudeme :)

version: '3.8'

services:
  web:
    image: php:8.0.3-apache-buster
    ports:
      - '80:80'
    volumes:
      - .:/var/www/html/
    build: .
    links:
      - db
    extra_hosts:
      - "mojeappka.test:127.0.0.1"
    hostname: mojeappka.test

  db:
    image: mariadb:10.3.23
    restart: 'always'
    ports:
      - "3306:3306"
    volumes:
      - ./docker-konfigurace/databases:/docker-entrypoint-initdb.d
    environment:
      MYSQL_ROOT_PASSWORD: heslo

  adminer:
    image: adminer
    restart: always
    ports:
      - 8080:8080

Na příkladu vidíme 3 služby. Prvním je webový server, který jsme prakticky konfigurovali výše. Nastavíme mu porty, na kterých má běžet, hostname a a volume – čili kde se má v tom Debianu připojit náš projekt.

Další službou je databáze – zvolíme image, nastavíme porty, v sekci volumes můžeme určit cestu k adresáři (docker-konfigurace/databases), kde máme strukturu DB v SQL souborech – tím se nám při prvotním zbuildování kontejneru nahraje DB. A taky root heslo k db.

Všimněte si další služby – Adminer. Bude běžet na portu 8080, čili localhost:8080. Tak jednoduché je přidávat si další služby.

Jdeme na to

Máme to nachystané. Spustíme tenhle příkaz. Stáhnou se images, provede se jejich instalace a spustí se příkazy v našem Dockerfile – instalace balíčků atd.

docker-compose build

A teď to celé spustíme:

docker-compose up

A mělo by to jet :)

  • na http://localhost/ (případně mojeappka.test, pokud si nastavíte v systému hosts file) běží web
  • na http://localhost:8080/ běží Adminer – do DB se připojíme na hostname “host.docker.internal”, uživatel “root”, heslo “heslo”

Spouštět kontejnry můžete i z GUI Docker Desktopu:

Vyplatí se to všechno?

Ano, pro větší aplikace, na kterých deláte denně, v týmu nebo která má nějaké specifičnější nároky na konfiguraci nebo služby, tak to určije ano.

Nemusíte ale hned vše dockerovat. Rychlejší je samozřejmě hodit si aplikaci do WAMPu (aktuálně používám Neard, protože se nemusí instalovat a má hezké rozhraní pro tvorbu vhostů, ssl a další vychytávky) a ona tak nějak běží ihned.

Rubriky
Blog

Co jsem četl v roce 2020

Je to tady! Opět seznam toho, co jsem četl minulý rok. Již popáté.

  1. Netopýr (Jo Nesbo) – první díl ságy o detektivovi Harry Hole.
  2. Švábi (Jo Nesbo) – druhý díl. Zdál se mi slabší.
  3. Napoleonův voják (Jiří Kovařík) – výborná historická knížka od mého oblíbeného nakladatelstvá Melvil. Vypráví o běžných strastech a radostech napoleonských vojáků.
  4. Digidetox (Matěj Krejčí) – nemám k tomu žádnou poznámku, kniha mě nezaujala. Spíš promo pro jeho tréninky.
  5. Atomové návyky (James Clear) – o poznání zajímavější knížka – o tom, jak se malé krůčky sčítají.
  6. Letopisy Narnie 2 (C. S. Lewise) – krátká pohádková knížka, bavilo mě to.
  7. Červenka (Jo Nesbo) – třetí díl s Harry Hole, když to vezmu chronologicky, tak zatím nejlepší.
  8. No More Mr. Nice Guy (Robert A. Glover) – no, čekal jsem víc.
  9. Velcí Češi 1918 (Josef Landergott) – knížku jsem získal v akci jako předplatitel Echa a celkem mě bavila.
  10. Mengeleho děvče (Viola Stern Fischerová, Veronika Homolová Tóthová) – literárně to žádná velká kvalita není, nicméně je to obrovsky působivé líčení přeživší holocaustu.
  11. Nemesis (Jo Nesbo) – čtvrtý díl série s Harry Hole. Opět dobrý kousek. Tento rok byl opravdu ve znamení Jo Nesbeho (jak se to skloňuje??)
  12. 50 podivuhodných postav (Ondřej Štindl) – opět z Echa, nesourodý popis 50 naprosto odlišných osobností. Bavilo mě to.
  13. PHP Security Principles (Eric Mann) – dobrý přehled možných bezpečnostních děr v PHP aplikacích. Autor jel podle seznamu OWASP, což mi trochu vadilo. Nemusel se na něj neustále odvolávat :)
  14. Rozvrat (Jared Diamond) – působivá knížka o tom, jak se jednotlivé národy vyrovnávají s krizemi. Mám s ní ale několik problémů, zejméná je to neustálé porovnávání národních krizí s těmi osobními. Je to nuda. A taky, zdá se mi, že autor generalizuje své osobní zkušenosti na celé národy.
  15. Cirkadiánní kód (Satchin Panda) – tato knížka mě moc bavila. Dodržování cirkadiánního kódu (spánek, jídlo) je tam sice prezentováno v podstatě jako zázračný lék na vše, ale dobré :)
  16. Královna děsu (kolektiv) – kdo někdy zažil panické ataky, tak ví :)
  17. Sex, Drogy a Bitcoiny (Dominik Stroukal) – čtivě napsané příběhy z Dark Webu.
Rubriky
Blog

Co jsem pařil v roce 2020?

Chronologický seznam her, které jsem hrál v roce 2020 je zde!

  1. Mercenaries – hra z původního Xboxu, značně stará, ale o to zábavnější :) Je to takové skoro GTA zasazené do konfliktu v KLDR. Xbox Gold.
  2. Bloodstained: Curse of the Moon – pokud znáte Castlevanii, tak tohle je od toho stejného autora. Dost retro plošinovka, opět v Xbox Gold.
  3. Zaklínač 2 – “tam se nedá skákat” blesklo mi hlavou a opravdu, nedá se tam skákat. Hrál jsem to až poté, co jsem dohrál trojku, a její kvality to nedosahuje. Zase Xbox Gold.
  4. New Super Mario Bros – začátkem roku jsem si pořídil Nintendo 2DS a tahle hra tam byla předinstalovaná. Je to paráda, skvěle hratelné a v hezké grafice.
  5. The Outer Worlds – tak tohle byla naprostá TOP záležitost. Atmosférou se tato hra podobá Falloutům, ale je tam víc vtipu a úplně mě to nadchlo. Dostal jsem na narozeniny krabicovku pro Xbox :)
  6. The Long Dark – moje první zkušenost se survivor žánrem. Moc dobrá hra, i když po několika letech od vydání jsou dostupné jen 3 z 5 kapitol. Pořídil jsem si krabici pro Xbox a je tam i deníček a mapa.
  7. Mario Kart 7 – podle některých jedna z nejlepších her pro Nintendo 2/3DS. Jako zábava to je, ale jsou to prostě jen závody. Potěší některé retro tratě z Nintenda 64.
  8. Coffee Talk – to snad není ani hra, prostě jen odklikáváte příběh a občas uvaříte kafe. Ale nějakým záhadným způsobem mě to chytlo. Asi svou deštivou atmosférou v nočním alternativním Seattlu, kde vaříte různým pohádkovým rasám horké čokolády se zázvorem… opět Xbox Gold.
  9. No Man’s Sky – asi největší zklamání. Podobně jako Fallout 76 mě to prostě nechytlo, i když tady těch bugů bylo méně a hrál jsem to asi o něco déle. Hodně nepřehledné UI, které se hodí spíš na PC s myší. Krabicovka Xbox.
  10. Portal Knights – žeprý je to jako Minecraft. Ten jsem v reálu nikdy nehrál, ale tohle mě celkem chytlo. Roztomilá grafika. Popisy questů jsou velmi stručné, často jsem nevěděl kam jít, co kde dělat. A nepřehledný inventář. Ale pár večerů jsem s tím strávil. Xbox Gold.
  11. Armed and Dangerous – kdysi dáávno jsem ji hrál na PC a velice se mi líbila. TPS z roku 2003, značně švihlá. Vašimi společníky jsou čaj srkající robot v podobě římského válečníka a krtek. Xbox Gold (z původního Xboxu).
  12. MX Unleashed – terénní motorky. Něco podobného jsem hrával jako malý. Xbox Gold (z původního Xboxu).
  13. Diablo 3 – moje první zkušenost s Diablem a moc se mi to líbí. Hra je to dost jednoduchá, musel jsem si už 2x zvyšovat obtížnost. V podstatě jen naběhnete a mačkáte všechny tlačítka.
  14. Age of Empires II: Definitive Edition – tak tady není třeba nic dodávat, hraji prakticky denně (kampaně, online jsem velmi marný). To je snad nejlepší hra ever. Jediná hra, co pařím na PC :D

Rubriky
Blog

Stavíme rodinný domek

Zasadit strom, postavit dům, zplodit syna…aktuálně jsem u druhého bodu. Stavíme domeček na venkově a píšu o tom blog na adrese domecek.skoula.cz. Stay tuned.

Rubriky
Blog

Jak se mi hraje na Nintendu 2DS?

Nintendo 2DS je “ořezaná” verze slavného 3DS a nemá vyklápěcí konstrukci + nemá 3D zobrazení (to byl v roce 2013 hit). Je to takové “prkno” se dvěma displeji určené primárně pro děti, které se dá (nové) sehnat už za necelé 2 tisíce korun.

Hrál jsem na něm zatím 3 hry – New Super Mario Bros 2 (předinstalováno), Mario Kart 7 a The Legend of Zelda: Ocarina of Time. Poslední dvě jmenované hry jsem zakoupil na základě kladných recenzí a jedná se o předělávky z původního Nintenda 94.

Nevýhody:

  • Málo dospěle vypadajících her
  • Hry jsou extrémně drahé (a většinou předělávky)
  • Online store je dost historický, webový prohlížeč nepoužitelný
  • Nepoužitelná kamerka (ale kdo by ji na herní konzoli chtěl používat)

Výhody:

  • Zcela jiný zážitek z hraní než na mobilu / PC / velké konzoli
  • Cena konzole
Nintendo kamerka s rozšířenou realitou
Rubriky
Blog

Windows – historie schránky

Výbornou vychytávkou ve Windows 10 je nativní podpora historie schránky. To znamená, že schránka (Ctrl + V) si nepamatuje pouze poslední položku, ale pamatuje si jich víc.

Jediný rozdíl je, že při vkládání nepoužijete Ctrl + V, ale Win + V. Zobrazí se vám takové okýnko s historií a myší nebo klávesami vyberete, co chcete vložit – jak text, tak obrázky (včetně náhledů).

Zapíná se to v Nastavení:

Rubriky
Blog

The Long Dark je pařba

The Long Dark je první survivor hra (alespoň si to myslím), kterou jsem hrál a byla to dobrá volba. Prostředí kanadské ledové divočiny a tajemný příběh mě pohltily a opět po delší době jsem hrál do noci.

Hra se neustále vyvíjí, už několik let a proto když si ji zahrajete nyní, je to jiná hra než před pěti lety. Aktuálně jsou dostupné první tři z celkových pěti kapitol, jsem ve třetí a už teď se těším na další.

Rubriky
Blog

The Outer Worlds je pařba

Právě na této hře jsem si zpravil náladu po rozčarování z Fallout 76. Naprosto famózní příběh, humor, nadsázka, dialogy, skvělé a pochopitelné ovládání, krásné planety a mnoho dalších pozitiv bych na této hře určitě ještě našel.

Snad jen jedna věc mě zklamala a tou je herní čas. Mám ji rozehranou ale podruhé a snažím se být nyní zlý – to mi ale nikdy nejde.

Rubriky
Blog

Jak na retro hraní – fake konzole? Nintendo a SEGA

Psal jsem už o tom, jak si z Raspberry Pi vytvořit herní konzoli. S pomocí emulátoru tak můžete hrát hry z různých konzolí. Nějak se mi to ale neosvědčilo. Někdy se mi to nechtělo zapnout, zlobilo atd.

Aktuálně hraji většinou na dvou fejkových konzolích z Aliexpressu. První je kopie 8 bitového NES (Nintendo Entertainment System) a druhá je kopie 16 bitové Segy Genesis (Mega Drive). Obě konzole mají hry nahrané v sobě, připojují se k TV skrz AV (cinch) a dostanete k nim dva ovladače.

Přestože na NESu jsou spíše jednodušší hry se slabší grafikou, tak je to asi má oblíbená konzole hlavně kvůli tomu, že jsem ty hry hrával jako malý ještě na videohrách z čínské tržnice. Zahrajete si tak hry jako je Super Mario Bros, Tank 1990, Dr. Mario, Adventure Island a další. I s poštovným vás vyjde na cca $16.

Sega Genesis má lepší grafiku, lepší zvuky a hry jsou také mnohem akčnější. S copyrightem si nelámou hlavu :) Jsou tam hlavně hry podle filmů – James Bond, Jurský park, Demolition Man, samozřejmě Sonic a další. Žádnou z nich jsem nikdy předtím nehrál, jen viděl na YT, takže k nim moc velký vztah nemám. Konzole je trochu dražší, vyjde vás na $25.

Před nákupem se určitě ujistěte, že používáte cashback. Osobně používám Tipli a z nákupu pak dostanete určitou částku zpět. A další doporučení, používejte Revolut a budete mít při nákupu lepší kurz.