Světýlkův blog

Hlášky, myšlenky, čaj a co mě napadne ...
  • Nesmysl! Vše má svůj smysl.

  • Praktický test Coroutines v Kotlinu

    Kdo dění kolem Kotlinu alespoň trochu sleduje, určitě již narazil na pojem „coroutines“. Už jsem se na ně chystal nějakou dobu a nyní konečně nastal okamžik, kdy jsem si našel čas si je na vlastní kůži vyzkoušet a opět prozkoumat, jak moc jsou vlastně coroutines použitelné v praxi.

  • Když už toho zákazníka pošleme 10x do prdele, tak si myslím, že bychom ho měli správně nasměrovat. –Tomáš N.

  • Více kari, ale méně Indů. –Pavel K.

  • Jana, neboli Honzina.

  • Navštívil jsem mistrovství ČR v landkitingu v Panenském Týnci

    Uplynul nám další rok a opět nastal čas pro setkání české kitingové komunity na mistrovství ČR. Já, jakožto absolutní necestovatel, jsem se rozhodl, že podniknu doposud nejdelší vlastnoručně odřízenou cestu svého života, která se nakonec natáhla tak, že kdybych si byť jen malinko dokázal představit, jak neuvěřitelně daleko to je, tak bych tam nejel 😀 . Počasí nám vyloženě nepřálo a tak jediný závod, který se odjel, byl závod longboardů, ale bylo fajn, že jsem některé lidi poznal osobně, vyzkoušel si vůbec poprvé uzavřené komory od Aeros a ještě mě navíc naučili fintu, jak rozmotat kita pouhým přehozením baru, když se protočí směrem ke mně/ode mně. Na mobil jsem natočil pár záběrů z čehož vzniklo toto vzpomínkové video:

  • Krásy Kotlinu: Vícero null-checků jedním šmahem

    Tato podpora (pokud vím) přímo v Kotlinu zatím není, ale nedávno mě napadlo, že bychom si mohli definovat takovouto funkci:

        fun notNull(vararg args: Any?, action: () -> Unit) {
            when {
                args.filterNotNull().size == args.size -> action()
            }
        }
    

    což nám tuto funkcionalitu umožní. Je to bezpečné však jen pro lokální proměnne/konstanty a pak ještě pro konstantní property třídy. Pokud je však řeč o proměnných propertách ve třídě, zde již žádný warning, že mohou být za běhu např. jiným vláknem změněny, nedostaneme. Nicméně výše definovaná funkce se dá použít např. takto:

        val a = 1
        val b = "something"
        var c: Float? = 2f
    
        notNull(a, b, c) {
            println("Almost safe!")
        }
    
        c = null
    
        notNull(a, b, c) {
            println("Doesn't print ...")
        }
    
  • Život je spotřební zboží.

  • Slušná navigace je ta, která ti vyká.

  • Není důležité to naprogramovat tak, aby to něco dělalo, ale hlavně ať to nedělá, co nemá. –Pavel Š.