Světýlkův blog

Hlášky, myšlenky, umění slova a čistého kódu.
  • TaskMan: Úkoly s důrazem na priority

    Nedávno jsem na svém githubu založil nový projekt s názvem TaskMan, na kterém budu moct důkladněji prověřit kombinaci Kotlin JS + React a který mi zároveň pomůže v mé práci vnést více světla především do priorit mých úkolů pro daný den. Neboť (někteří) možná víte, jak to chodí … Když člověka úkolují hned 3 manažeři, ne vždy musí mít stejný názor na to, co je aktuálně to nejdůležitější a ne vždy vzájemně ví, co mi zrovna zadal ten druhý (resp. třetí). Proto přichází na scénu tato šikovná webová aplikace, která jim jednak umožní se přímo po připojení na můj PC podívat, co mám zrovna v plánu, ale taky mi mé priority změnit v případě, že jsem se do jejich gusta zrovna netrefil 🙂 .

    Během vývoje jsem si osvojil fajn nové triky, jak si napsat wrapper na NPM balíčky, které nemaji default export, ale taky jak na zcela custom JS knihovny, které vůbec svůj balíček v NPM systému nemají. A jak že to vypadá? No prostě Boooootstrapově:

    A nezapomeňte … ten, kdo úkoly uspává, uvidí kočičku! 😉

  • Za poslední 3 měsíce je to jediný kandidát a Kosťa u toho nebude, tak si myslím, že by mohl projít. –Daníel B.

  • Není důležité, jsi-li jenom další ovce v davu, ale jestli jsi s tím spokojen.

  • Dokázal jsi tolik neobyčejných věcí, že nezbyl čas na ty obyčejné.

  • Na to je více toolů, ale žádný nefunguje. –Daniel B.

  • Děj se vůle šéfa. –Jakub F.

  • Zajímavým rysem poslechového jazzu je, že se nedá poslouchat.

  • Vidím, že nikoho nevidím. –Monika A.

  • Stará láska? Ta už je dávno ve sběru …

  • Sekvenční grupování v Kotlinu

    Nevím, jestli oficiálně něco takového již existuje, ale alespoň já jsem tento druh problému takhle nazval 🙂 . Opět jsem nedávno narazil na problém lehce bizarního parsování dat. Řekněme, že máte list řetězců, který je ve formátu “název skupiny”, pak následuje libovolný počet prvků, pak další název skupiny atd … a chcete tento list grupovat právě podle těchto skupin, kde zároveň jediné, co znáte předem, jsou jména těchto skupin, která jsou pevně daná s tím, že některé se v listu vyskytovat můžou, anebo nemusí. Pojďme si trochu potrápit hlavy a za předpokladu, že tento list není příliš velký, zkusme daný problém vyřešit s pomocí ne-až-tolik-známých operátorů, jako jsou dropWile(), drop() a takeWhile():

            val input = listOf(
                    "Group1",
                    "1",
                    "2",
                    "3",
                    "Group2",
                    "4",
                    "5",
                    "6",
                    "7",
                    "Group3",
                    "8",
                    "9"
            )
    
            val knownGroupNames = listOf("Group1", "Group2", "Group3")
    
            val groupsMap = knownGroupNames.map { groupName ->
                val groupItems = input.dropWhile { it != groupName }
                        .drop(1)
                        .takeWhile { it !in knownGroupNames }
    
                Pair(groupName, groupItems)
            }
            .toMap()
    
            groupsMap.forEach { group, items -> println("$group contains: ${items.joinToString(", ")}") }
    

    Výstupem je:
    Group1 contains: 1, 2, 3
    Group2 contains: 4, 5, 6, 7
    Group3 contains: 8, 9

    Tak co, rozlouskli jste to? 🙂