Kategorie: Programování

  • Gimp plugin pro vytváření miniatur k Youtube videím

    GIMP Youtubizer Plugin

    Ne že bych se vyloženě za Youtubera považoval, ale konec konců pár Youtube kanálů mám a tak nejsem sám, kdo se potýká s tím, že při snaze pořádně vymazlit ten clickbaitový thumbnail potřebuju použít docela velmi známou a zprofanovanou techniku obtažení textu nebo obrázku černo bílou konturou, aby objekt mého zájmu více vynikl.

    V GIMPu se to dá udělat docela jednoduše, je to skoro na pár kliků, ale jak to člověk dělá snad už po sté, říká si, jestli by se to celé nedalo zjednodušit. A ano, dalo! Proto jsem se rozhodl zkusit si udělat můj zcela první plugin pro GIMP vůbec.

    Co si budeme povídat, dokumentace příliš dobrá není a tak po letmém prostudováni jazyka Scheme, padla volba na mnohem přívětivější Python. Jak si plugin nainstalovat, kde ho stáhnout a jak se používá popíšu v následujících krocích.

    Instalace

    Plugin si můžete stáhnout zde. Na Windows si tento soubor uložte např. do:

    c:\Program Files\GIMP 2\lib\gimp\2.0\plug-ins\youtubize\youtubize.py

    Při dalším spuštění GIMPu, by se vám plugin měl úspěšně načíst.

    Použití

    Pokud se vše povedlo, plugin nesoucí název “Youtubize” bude dostupný pod Filters menu:

    Youtubize plugin location

    Po kliknutí na Youtubize se zobrazí okno, kde je možné nastavit barvu vnější a vnitřní kontury, tloušťku a zda-li se má kontura “zaostřit” (u objektu s rozostřeným okrajem selekce to jinak nevypadá moc dobře):

    Youtubize GIMP plugin

    Stačí kliknout OK a je to 🙂 . Pokud nic nevyberete, plugin vybere automaticky do výběru alfa kanál, jinak použije váš aktuální výběr. Pokud se vám plugin líbil, nebo něco nefungovalo, dejte vědět do komentů.

  • Navrhl jsem přidat 2 nové operátory do Kotlinu

    Jednou ze skvělých věcí, kterou na Kotlinu miluju, je i jeho otevřenost a komunita. Máš nějaký opravdu dobrý či rozumný nápad, co by se ještě dalo na Kotlinu vylepšit? Zkonzultuj svůj návrh na Kotlin Slacku, anebo ho rovnou zareportuj! I když přijít na něco, v čem by již tak geniálně navržený jazyk mohl být ještě lepší, není vůbec jednoduché, anebo to alespoň překračuje mou současnou představivost, občas se může stát, že na něco člověk přijde … a … (a to je hlavní) může to mít!

    Dokážete si představit, že byste něčeho takového docílili třeba v Javě? (myšleno v rozumném čase dodání) Haha … kdo již někdy zakusil, jakým způsobem funguje support Oraclu, asi se nyní zasmál se mnou.

    No, každopádně současné inc() a dec() operátory, které jsou v Kotlinu volány pomocí ++ a -- fungují pouze v immutable módu, tedy pouze pro proměnné deklarované jako var. Narazil jsem na use-case, kde by se to hodilo mít i v mutable stylu pro val. A tak byl stvořen tento proposal a uvidíme, jestli to vyjde 🙂 , viz: https://youtrack.jetbrains.com/issue/KT-31612

  • Android bude Kotlin-first

    Teprve 10h starý článek, co se mi čte tak hezky, že jsem se rozhodl ho sem (pro vás anglicky-mluvící) nasdílet. Doslova cítím tu lásku a jsem skoro až dojat, jako fanoušek Karla Gotta, který nedávno objevil nový duet s jeho dcerou.

    Kotlin ušel za tu dobu pěkný kus cesty a nezbývá mu než popřát, ať mu to tempo vydrží. Jsem zvědav, jakými dalšími featurami překvapí a teď jsem si i uvědomil, co se častých releasů (ve srovnání s tím, co se Java snaží dohnat) týče, tak je fajn, že při každém dalším z nich nemusím přeinstalovat celé JDK.

    Ještě bych si dovolil citovat 2 odstavce od Chet Haase z níže odkazovaného článku:

    We’re announcing that the next big step that we’re taking is that we’re going Kotlin-first.

    We understand that not everybody is on Kotlin right now, but we believe that you should get there.

  • Advent of Code v Kotlinu (Den 12.)

    V tento den mi chvíli (no, trochu déle) trvalo, než jsem vůbec pochopil zadaní první části, kterou jsem pak zvládl docela v pohodě. Ale pro část B jsem si již zašel pro radu na Kotlin Slack, kde trik spočíval v tom, že již po cca 100 iteracích se pattern usadí a přírůstky rostlin začnou být konstantní, což nám umožní všechny zbývající iterace vynechat úplně a výsledek jednoduše dopočítat.

  • Advent of Code v Kotlinu (Den 11.)

    Den 11. byl opět performance peklo 🙂 . Jelikož jsem neznal “Summed-area table” algoritmus, pokusil jsem se přijít s něčím vlastním, což nebylo zdaleka tak efektivní, ale doběhlo to! (naštěstí se správným výsledkem):

  • Advent of Code v Kotlinu (Den 10.)

    Další z ne-úplně lehkých dnů. Nyní již bylo zapotřebí trochy odhadu a víry, že se člověk vydal správnou cestou 🙂 .

  • Advent of Code v Kotlinu (Den 9.)

    Den 9., ačkoliv se jevil jednoduše, zákeřnost jeho zadání přišla záhy 🙂 . První část jsem ještě zvládl sám, ale v části druhé jsem měl již perfomance problém. Ačkoliv se mi mé první řešení podařilo zrychlit až 25x, stále to bylo velmi málo. A tak jsem musel zvolit zcela jiný přístup, kde jsem se musel inspirovat řešením ostatních na Kotlin Slacku, což nakonec rychle vedlo ke kýženému cíli:

  • Advent of Code v Kotlinu (Den 8.)

    Den 8. byl oproti včerejšku docela v pohodě 🙂 . Zde je mé řešení:

  • Advent of Code v Kotlinu (Den 7.)

    Den 7. byl opět jeden z drsnějších, ale nakonec se podařilo 🙂 .

  • Advent of Code v Kotlinu (Den 6.)

    V den 6. jsem se pokusil zaměřit se na rychlost řešení, namísto čistého kódu, abych odhadl, jestli bych měl vůbec šanci dostat se do Top 100 v leaderboardu. No, trvalo mi to něco přes 40 min, kde se mi u toho málem roztopil mozek 🙂 . Takže na to prdím, neb to mi za to nestojí … zde je moje řešení pro den 6. a příště se navrátím zpět k důmyslnosti a čistotě řešení samotného: