jOpenSpace

jOpenSpace - ročník 2021

Mediální partneři

Kafemlejnek.TV

Zastavte se na kávu s Honzou Novotným a Petrem Ferschmannem a nic vás při tvorbě software nesemele. Od vývojařů přes designery, architekty až po zakladatele společností. Za kamerou stojí Tomáš Hodr.

Fotogalerie

Kompletní fotogalerie z akce

Zápisky z konference

Jan Horalík

Kvantové počítače

  • využívá se znalostí quantové mechaniky
    • suprapozice,
    • interference - mohou se zvýraznit a
    • entanglement - schopnost provázat dvě částice geograficky vzdálené
  • umožňují řešit exponenciálně ryhchleji problémy neřešitelné jiným způsobem
    • RSA šifra - Shorův algoritmus
    • kdy bude prolomen bitcoin?
    • výzkum materiálů - sloučenin, které jsou možné je velké množství, které není ani možné vyzkoušet a kvantové počítače mohou být velmi efektivní v simulaci
  • hlavní problém - extrémní fyzikální podmínky a s tím spojený šum
    • velký pokrok v posledních letech
    • odhad že za deset let dojde k velkému zlomu
  • kvantové obvody
    • u klasických obvodů máme hradla
    • kvanmtové obvody jsou obecnější - vstupy a výstupy nemusí být jen 0 / 1, uvažuje se superpoziceměření p zmizení superpozice se převede na 0,1
  • kvantový stav qbitu
    • představa koule v prostoru, severní pól 9, jižný 1, a každý bod na této svéře je validným stavem.
    • tento bot je možné vyjádřit dvojicí komplexních čísel
  • kvantové hradlo
    • násobí unitární maticí - abysme se stále pohybovali po povrchu koule ve validním stavu
    • pauliho-X hradlo
    • NOT
    • CX - CNOT hradlo
      • kontrolované hradlo, dva vstupy dva výstupy
      • jeden vstup je kontolní - pracuje jen když je na něm jednička
    • Halamardovo hradlo
      • transformuje dva stavy do superpozice
  • Kvantový Hello World -sestavení obvodu

  • Spuštění - na simulátoru, nebo na kvantovém počítači

  • typicky se spouští mnohorkát kvůli šumu - aby statisticky vygeneroval správný výsledekspuštění na kvantovém počítači

  • dostupný prakticky zadarmo v každém cloudu

  • praktický příklad použití je bezpečnost a kryptografie

Kamil Ševeček

ZX Spectrum

  • 23.dubna 2022 - výročí 40 let
  • počítač se nerozpadl v prach, komunita nespí a vyrábí se klony
  • v osobním volnu dělá vývoj na spectru
  • má doma krásné muzeum ZX techniky a originálnho SW

Čím to začalo

  • 23.dubna - 1982
  • ZX Spectrum - Sir Clive Sinclair
  • 30.7. 1944 - 16.9. 2021
  • Didaktik Gama
  • Didaktik M - nejstabilnější klon
  • Kompakt - s didketovkou
  • 90 léta - usnulo - na smetišti zadarmo
  • Ben Heck - ZX Spectrum na nepájivém poli
  • poměrně jednoduché

Dnes jak se dělají

  • Diskrétní součástky - old school, velký problém s ula chipem
  • Harlequin 128 - stavebnice z didkrétních součástek

  • softwarová emulace - neemulují rozšiřující sběrnici

  • v system on chip vytvořená Spectrum emulace
  • VEGA - krabička která se připojí k televizi
  • ZX Baremulator - raspberry pi emulator

FPGA

  • 100% kompatibilní se Spectrem ale drahé
  • ZX spectrum next - krásné zařízení ale nedostupné
  • Překvapivě velká komunita

Oldcomp.cz

  • Bytefest 2021 konference v Praze
  • ZX Spectrum a Kamilovy projekty
  • TV digitizer - Cinch composite - HDMI
  • Plošinovka Dizzy - v Kotlinu

Lukáš Křečan

Jak vyhrát diskusi na internetu

  • Zesměšnit
  • Ukázat fakta
  • Nenásilná cesta -

Co vyvolává nepravda na internetu - emoce - zlost frustraci

  • vztek = strach / stud / bezmoc

Postup

  • ubrzdit automatickou reakci
  • pochopit svoje pocity - proč mi to vadí
  • pochopit co potřebuje ten druhý
  • pobavit se o tom jak to udělat spolu
  • https://nenasilnakomunikace.org/

Kartičky

  • stěžejní pomůžou pojmenovat svoje emoce

Martin Talpa

Life 3.0

  • možný vliv umělé inteligence na lidskou společnost

Co je život?

  • život ? kultura (změna vlastního SW) ? technologický život (změna vlastního SW i HW)
  • Inteligence - schopnost řešit komplikované tasky
  • dnes vídáme spíše slabou AI - šachy - ale neumí řídit auto
  • obecná inteligence - schopnost řešit jakýkoli problém stejně jako člověk
  • Superinteligence - za hranicemi člověka
  • Inteligence Explosion - inteligence, která se dokáže vylepšovat
  • Kniha Life 3.0 - Max Tegmark

Hypotetická situace 1 - systém umí generovat AI systémy a vylepšovat se2 - během dne sám sebe vylepší a může vydělávat peníze bude řešit MTurk tasky ty dojdoukam dál - počítačové hry a programy ne - co kdyby vytvořil něco nebezpečného 3 - filmy - přečte knihy, scénáře a začne psát filmy a vydělá víc než všichni dohromady4 - Nestačí AWS- začne designovat datacentra aby měl kde běžet5 - získání moci

  • média - generování textu a analýza politické situace
  • ví jak podpořit, a koho se zbavit pomocí
  • pokud mají nejčtenější média tak je to velmi jednoduché nejsou zlí6 - nový svět - AI vybírá to nejlepší pro lidskou společnost a podporuje, tím vzniká víc stejně smýšlejících stran a lidé je podporují7 - aliance přeroste i vlády a na pozadí bude ovládat celý světlidé jsou spokojení, protože všechno funguje dobře

Milan Lempera

XTDB - CruxDb

  • svět funguje v čase a často si jej zjednodušujeme

Např:

  • objednávkový systém
  • adresa odběratele se mění ale chceme mít historické hodnoty
  • evidence zaměstandů
    • mění se jména, náklady

Bitemporal databáze

  • v databázi jsou dva zaznamy o čase
  • valid time, transaction time, decision time

Použití XTDB

  • transakce - put / delete / match /evict
  • přistupuje se k jsonu
  • dotazuje se pomocí datalogu
  • dotazy dle času ukazují aktuální stav
  • evict - umožní zapomenout - řešení gdpr
  • SQL adapter - pokud nevyhovuje datalog je možné sql
  • Java API, HTTP api

Dotaz do publika - jak toto řešíte:

  • duplikace dat - bobtnání dat
  • vložení kopie (adresa do objednávky)
  • datový sklad - protože v realtimu není historie často třeba
  • workspace - v oraclu
  • datalog umožňuje doptávat se na logické vazby (jméno herce, který hrál s vybraným hercem a je mladší než on)

Petr Filip

Jak jsem programoval RT multiplayer hru

  • z programátorského hlediska nutno vyřešit, jak komunikovat
  • jaká data posílat na a z klienta

Přenos dat

  • long pooling - spousta requestů / responsů
  • event source - data jen ke klientovi
  • websockety - obousměrná komunikace

nejdůležitější je samotný stav -

  • GameState = (currentState, moves, rules) = rules(currentState, moves)
  • ukládal historii stavu pro možnost znovuposlání - je k ničemu
  • ale poté došlo k tomu, že se posílal stále celý stav
  • v nové hře potřebujete
  • vykreslovací vrstva
  • definice stavu hry
  • pravidla

Tomáš Látal

Parse, don´t validate

  • funkcionální přístup umožní odstranit validaci vstupu z funkcí
  • pomocí parseru můžete z méně strukturovaného vstupu udělat více strukturovaný
  • dovnitř funkcí se pustí validní vstupy, nad kterými nemusíte dělat žádné kontroly
  • silný vstupní typ, slabý výstupní typ
  • neprázdné pole
  • neduplicitní pole

  • může vést k tomu, že nevalidní data se protáhnou systémem, a až na konci se zjistí, že nevyhovujev Elmu na to ale příjde při kompilaci

  • možnost zapouzdřit třeba číslo karty, kde nikde neuteče číslo a bude zde jen poslední čtveřice

Víťa Plšek

Lego

  • pokud máte sety z lega, často děti vyžadují další sety což není příliš ekologické a leze to do peněz
  • služba rebrickable - návody na alternativní plány pro sety z lega
  • podle čísel setů umožňuje vyhledat a stáhnout návody na řadu dalších modelů ze setů, které už máte
  • je možné si vytvořit jednoduchou bluetooth klávesnici na tři tlačítka s cenou 250 Kč, stačí umět trochu pájet
  • doporučuje nahrávat s dětmi návody na složení modelů pomocí stop motion aplikací v mobilu / tabletu
  • bricklink, umožňuje najít konkrétní dílek, který se ztratil a najít obchody, které je prodávají a v Čechách jich je hodně. Dílek stačí často třeba jen korunu.
  • IKEA příborník se hodí na kategorizaci dílků lega podle typu
  • třídit lze dobře ručně quicksortem
  • na YT je i video, které představuje automatickou třídičku, která používá AI na třídění dílků lega - https://www.youtube.com/watch?v=04JkdHEX3Yk&,ab_channel=DanielWest

Strudio pro design lego modelů - https://www.bricklink.com/v3/studio/download.pageBrickling - bible lega - https://www.bricklink.com/v2/main.page Rebrickable - alternativní modely - https://rebrickable.com/home/

Tomáš Zvěřina

AsciiiDoc a PlantUML

  • ASCII doc je principem podobný markdownu, ale hodí se na psaní celých knih
  • má rozšíření pro poznámky, sidebary, poznámky pod čarou, citace, zdrojový kód
  • jeden z pluginů je PlantUML, který umí activity diagramy, sekvenční, deployent diagramy, vizualizovat JSON … velmi jednoduše se ty diagramy píší
  • výsledkem je velmi produktivní a spravovatelná dokumentace
  • nevýhody - klient to nemůže editovat - komentáře jen jako code review, diagramy nelze doladit o layoutu rozhoduje algoritmus, při větším množství obrázků je to pomalejší
  • výhody: lze to verzovat, rozdělit a includovat
  • formát umožňuje plno věcí a zároveň není výsledek rozbitý, formát je robustní
  • dokumentace se builduje Mavenem, existuje plugin do IntelliJ Idea … musí se ale něco doinstalovávat na stroj, který provádí publikaci

Vojtěch Růžička

Web monetization

  • pokud jsem tvůrce na webu a chci platit
    • reklamy
    • paywall - zaplaťte pro další čtení
    • jsou velmi invazivní
  • Brave browser
    • řeší privacy
    • řeší odměňování tvůrců
    • za reklamu dostávám BAT Cryptocurrency
    • na stránce vidím, zda stránka může získávat odměnu
    • můžu poslat přímo
    • můžu nastavit auto příspěvek - podle toho, jak na web chodím.
    • po spárování peněženky, mohu jako tvůrce dostávat odměnu
    • podpora také github, youtube, reddit, twitter, umožňuje odměňovat
    • problém - svázáno s prohlížečem - aktuálně 38M uživatelů
  • Web Monetization - návrh standardu W3C
    • po schválení by mohli podporovat prohlížeče
    • Uživatel
      • Registruju se u poskytovatele - platím Coil - (5$ měsíc
      • Aktuálně není standard - tedy potřebuju plugin
    • Poskytovatel
      • Registrace
      • připojení peněženky - Gatehub / uphold
      • JS api, můžu se dotazovat na eventy (začal platit)
  • Aktuálně Web Monetization menší použití než Brave Browser
  • API aktuálně nepodporuje “subscription” spíše funguje stylem, kudy chodím, tudy trousím peníze
  • dev.to - integruje

Zbyšek Voda

Jak na desky plošných spojů

  • v čem navrhovat:
    • EasyEDA - online, napojeno na prodejce součástek, jednoduše se vyrobí tišťák
    • KiCad - oblíbený - opensource, stojí za ním CERN
  • Kroky návrhu
    • Schéma
    • Konkrétní součástky
    • Import tvaru výsledné desky - vrstva - edge cuts
    • Rozmístění součástek
    • Nakreslení spojů
    • Vygenerování jednotlivých vrstev pro tvorbu
  • Výběr výrobce
    • číňan
    • Pragoboard
    • Isler
  • ukázka objednávky - JLCPCB
    • upload a výběr barev
    • naklikám
    • za 14 dní + celní řízení a mám je doma
    • je možné obědnat i se součástkama - KiCad by měl umět PCBA (PCB assembly)

David Ondřich

Jak (vy)řešíme GDPR

  • osobní údaj je v principu cokoliv podle čeho je možné identifikovat
    • možnost nakládat ukládá zákon, oprávněný zájem, souhlas
    • požadavky zákazníka
    • mít zákazníka jednou, se správnou rolí
    • historizace
    • omezená viditelnost, (pseudo)anonymizace
  • architektura
    • IDM - zná jen identifikátor, nezná email uživatele -
    • při přihlášení emailem se vytvoří hash proti kterému se porovnává
    • rejstřík osob pro osobní údaje - ta drží osobní data
    • profily - implementace role s daty navíc
  • REST API
    • zámky - data nelze měnit, musí udělat externí autorita, nebo právní zákaz změny dat
    • vše v paměti
    • úložiště ala firebase, event- driven úpravy
  • Kde je to GDPR?
    • data na jednom místě
    • klienti pracují jen s ID + displayName
    • anonymizace na jednom místě v kombinaci se zámky
    • auditní stopa

Filip Sedlák

Audit a startup

  • i v prostředí startupu se dá s auditem vyrovnat
    • chtějí vědět co děláte a co bude když se to rozsype
    • auditoři mají rozum a do malého týmu tolik netlačí
    • zpřesňování auditu
  • PCI-DSS - práce s platebními kartami
    • Roční KPMG audit
    • Due Diligence
    • 2 týdny práce pro několik lidí
    • spousta otázek z jiného světa
    • dopisován dokumentace
    • dohledávání
  • Nejvíc je zajímá
    • Change management
    • github + youtrack stačil
    • Důležité mít malý počet lidí, kteří mohou zasahovat do produkce
  • Vše zaznamenávat
    • Mít penetrační testy - auditorům stačí mít zaškrtnuto, že mají
    • Pci-DSS
    • nemít citlivá data a mít oddělené služby
    • Dodavatel měl jednoduchou databázi Key value - prodával za těžké peníze, protože procházel audity
    • není třeba splnit vše
    • nelhat a přiznat, že něco neumíme, je na majitelých aby se rozhodli co s tím

Filip Štaffa

Guix

  • výběr distribuce linuxu
  • ubuntu, debian - nuda, používají to všichni
  • GUIX - distribuce a package manager
    • Balíčkovací manager
    • zajišťují verzování souborů
    • řeší závislosti balíčků - nedovolí mít více balíčků ve stejné verzi
    • breaking update - nemůžu mít knihovny, které závisí na různých verzích
    • musím potenciálně upgradovat když nechci, nebo musím počkat na upgrade
    • je těžké zreplikovat instalaci současného systému
    • některé balíčky mohou být novější
    • při použití více balíčkovacích systémů musíme řešit kompilaci
  • GUIX
    • umožní mít balíčky ve více verzích
    • při instalaci vytváří profil a ukládá s hashem a zachovává starou verzi balíčku
    • profil - skupina balíčků
    • balíčky mohou být z libovolné doby - je možné replikovat jakýkoli stav
    • channel - repository s definicemi balíčků, commit určuje verze všech balíčků
    • source code distribuce - s binárními substitute
    • GNU - libre kernel - nemá svobodné balíčky
    • Asdf - možnost mít více verzí runtimu a přepíná podle adresářů - https://github.com/asdf-vm/asdf

František Řezáč

K čemu je pravda

  • Samoopravné a samodetekující kódy
    • pokud posíláme po nespolehlivém kanálu
  • řešení
    • zdvojení - samodetekující kód - nezjistíme ale co je správně
    • ztrojení - samoopravný - pravděpodobně opravíme podle dvou správných
  • Hammingův kód
    • 4 bity zakódujeme pomocí 7 kódů
    • vypočítá se “syndrom” - zjistí chybu v konkrétním bitu
  • Kompilátor

    • v kódu má dostatek redundance na to, aby vydedukoval co jsme chtěli udělat
    • navlékáme kód na syntaxi
    • pokud je kód složitý a není tam dostatek redundance, tak není možné zjistit kde je chyba - například Java Streamy
  • Explicitní tvrzení o skutečnosti jsou redundantní

    • pravdivé tvrzení může sloužit jako kontrolní redundance
  • V programování -Curry-Howardova korespondence
    • datový typ odpovídá logicky dokazovanému tvrzení a program je jeho důkaz
    • Redundance v programovacím jazyce je tradeoff
    • je třeba vyměnit výhody na nevýhody

Jan Novotný

Evita DB

  • E-commerce API pro sjednocení frontendů e-shopů
    • důraz na rychlost
    • google preferuje rychlé odezvy
    • research grant
    • tři konkurenční týmy
    • standardizované api
    • tři implementace - PostgreSQL / Elasticsearch / in-memory noSQL -
    • FG forrest se zabývá in-memory databází
  • kritéria
    • kompletní api
    • rychlost

Zajímavé knihovny

  • Roaring Bitmaps
    • práce s rozsáhlýma polema čísel (ID záznamy v databázi)
    • automaticky kombinuje pole, BitSet , run-length encoding
    • velká úspora proti výběru pouze jedné strategie - pro každý případ se použije nejvýhodnější varianta
  • Kryo - serializační knihovna
    • řeší pomalost standardní serializace
    • 1,5gb dat - 7 sekund
  • Random testing
    • testování náhodných operací nad datovými strukturami
    • používá pro transaction memory
    • porovnávání operací nad referenční implementací a vlastní implementací
  • Výkonostní testy
    • CI/CD job - vytvoří infrastructure nad digital ocean, spustí testy a pošlou do gistu a infrastruktura se zruší - nízká cena
    • JMH - visualiser - zobrazuje JSON z Gistu

Jaromír Pešout

Shenandoah GC

  • firma Luxonit - low latency Java - zpracování dat
    • Ve finančním světě se dělají aplikace v C++ kvůli absenci garbage projektoru
    • díky nízké latency by bylo možné problém považovat za vyřešený
  • Shenandoah GC
    • JDK 8 - 17
    • low pause time
    • negenerační kolektor
  • Cyklus shenandoah
    • Konkurenční fáze - s aplikací Continuous mark
    • Paralelní fáze
    • Celá halda se prohledává najednou
    • pauza závislá na velikosti root setu - 5-10%
    • vysoké nároky na paměť, ideální utilizace 30%
    • poté zpomalení a prodloužení pauzy
    • Amazon corretto pracuje na podpoře generací
    • JDK 16-17 - concurent stack processing
    • STW méně než 1 ms

Luboš Račanský

Výuka programování bez PC

  • ve volném čase vede kroužek programování
    • jako první věc chce naučit převod z 10ky do 2kové
  • jako v Hejného matematice
    • základní schopnost - rozpoznávání vzorců opakování
    • trénovat barvy, nebo geometrické tvary
    • iq testy jsou pěkné úlohy na opakování
    • trendem jsou bloková schémata
    • úloha s podmínkami a kratami
    • rychle se naučí sledovat kroky, ale problém je abstrakce a opakování
  • datová struktura algoritmů
    • komprese
      • zvládne i druhá třída
    • kontrolní číslice - čárový kód
    • třídění
      • děti podle schématu mohou putovat v políčcích a na konci budou seřazení
    • grafové algoritmy
      • spojení mezi městečky
  • Bobřík informatiky - spousta úkolů pro různé věkové kategorie
  • Podzimní aktivita Codeweek
  • Stavebnice
    • Boffin a klony
  • Důležitost komunikace
    • pomocí lega a tiché pošty je možné tvořit stavby, a porovnávat se zadáním - dobrá ukázka, že komunikace je důležitá
  • Turring Tumble - turingtumble.com
    • turingovský počítač

Tomáš Záluský

Neo4j

  • grafová databáze
    • subset Cetin Network Inventory - 140 000 uzlů, 1.5M hran
    • úloha - analýza výpadků v síti
    • původní implementace - oracle
    • v nové implementaci - zmenšení datového skladu a napojení na Neo4j
  • přechod mezi paradigmaty
    • řádek možno připodobnit k uzlu v grafu
    • relationship není přímo hrana ale je to jemnější propojení
    • nemusí odpovídat 1:1
    • dotazuje se jazykem Cypher
    • grafové paradigma je silné pro hierarchie
    • je možné říct, kolikrát je možné přeskočit uzel
  • algoritmy a*
    • více se ptáme jak než co
    • java plugin - uložené procedury
  • netahejte skálu ke krumpáči.
    • Je možné vytvořit plugin do Neo4j, tedy vše se provádí v Neo4j
    • Traversal framework - umožní určit jak se graf bude procházet
    • dobrý sluha zlý pán
    • Plugin psali i kvůli zjednodušení, cypher by byl příliš složitý
  • Databázi si hostuje cetin sám

Zdeněk Henek

Volební obvody vytvořené genetickým algoritmem

  • změna pravidel vedla ke spravedlivějšímu rozdělení mandátů na hlasů
  • v 2017 - výsledky voleb vedly k tomu, že strany 6% měly 3% mandátů kvůli DHondtovu pravidlu
  • Pokud si začnete měnit volební obvody budete obviněni z Gerrymanderingu
  • V USA okrsek zvolen tak že vypadal jako salamander
  • většinový volební systém vede k tomu, že ten kdo vyhraje o procento dostává všechny mandáty

Jaký systém by měl být spravedlivý

  • středočeský kraj -milion 397 tisíc
  • Karlovarský 300 tisíc
  • menší kraj generuje míň mandátů
  • Autoredistrict - pomocí genetického algoritmu vytvořeny volební obvody, které mají stejný počet voličů - tedy potenciálně stejné zastoupení
  • algoritmus to zvládne pro ČR s rozdílem desítek lidí
  • genetický algoritmus
  • pomocí fitness funkce zajistí spojitost okrsků
  • každý výpočet vypadá jinak

Borek Bernard

Jak v JSONu poslat číslo

  • některé api - posílají string, některé number

    • problém s number a přesností
    • řešíme přenos - datové typy v JSONUI
    • cena je normální číslo
    • IEEE 754
    • používá každá platforma
    • Kolem čísel je spousta bludů
  • Argumentace: 1.7 se nedá vyjádřit přesně - výsledkem je 1.69 nebo 1.7

    • 1,7 - double
    • uloženo jako 1.699999 …..
    • printing = 1.7 a nikdy 1.69
    • Tedy argumentace je špatná
  • JSON jako celek je string

    • JSON number je bezpečný na přenos, ale ne počítání
    • Přenos jako string má také své problémy - 7.47 - je formátorvací rozhodnutí
    • Pro přenos Number OK, ale ne pro výpočty
    • pro výpočty decimal datový typ
    • spočítat a zaokrouhlit
    • V Javě do BigDecimal
    • při převádění - použít string a ne number

Martin Bednář

Istio

  • service mesh
    • konkurence Linkerd(málo možností), Consul (komerční)
    • Istio - intenzivní vývoj
  • Funkce
    • Automatický load balancing - HTTP, gRPC, Sockety
    • routing, retrie mezi servisami, circuit breaker
    • je možné pracovat s chybovostí service - FaultInjection
    • metriky, a logy
    • zabezpečení, Autentizace autorizace (ingres)
    • dostupná v cloudu
  • Architektura s Istio
    • do každého konteineru přidá proxy envoy
    • služba s proxy komunikuje s HTTP
    • service spolu komunikují přes https - control plane je generuje a posílá do proxy
  • GUI
    • Kiali - vizualizace provozu a konfigurace istia
  • Budoucnost
    • B/G deployments - Canary deployments
    • WASM - filtery

David Voňka

Překlad do SQL

  • vytváří systém pro zpracování dat - no code system
    • velké množství práce v paměti po natažení všech dat do paměti
    • možno vylepšit
    • řada problémů
      • joiny
      • indexy
  • funkce nekorespondují v db a aplikaci
    • snaha o přepis do sql - Snowflake v cloudu
    • aktuálně zkouší proti sqllite

Lubomir Petera

Spolehlivost

  • jak špatná může být špatná prezentace
    • kritéria úspěchu
    • máme tendenci žít v černobílém světě
    • kdo si řekne “super mám 60% programu přeloženo a pak to spadlo”
  • faktory kvality - Spolehlivost - požadované funkce s požadovanou přesností
    • SLA
    • SLO
    • SLO
    • KPI
  • jakou škálu použít pro hodnocení jak vhodné je UI
    • nic není černobílé, je dobré znát celou škálu
    • často v porovnání s jinými, to nemusí být tak špatná volba
    • https://userinyerface.com/