Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Conference Tourism

Conference Tourism

登壇するときのTips

8766b19fe1c1f8475e233c910ed6440f?s=128

kobito-kaba

October 31, 2018
Tweet

Transcript

  1. Hiroyuki Mori @moridroid Conference Tourism

  2. ݄

  3. ݄

  4. ESPJEDPO5SBOTZMWBOJB ʹొஃ͠·ͨ͠

  5. None
  6. ϧʔϚχΞ

  7. None
  8. None
  9. None
  10. ! 2.5L = 6 LEI ≒ 180

  11. 39 LEI / mo ≒ 1200 ≒ ! 16L https://www.digiromania.ro/servicii/internet/internet-fix

    http://www.speedtest.net/global-index 4th in "
  12. !" in #$% https://skillspanorama.cedefop.europa.eu/sites/default/files/EUSP_AH_STEM_0.pdf 6th in &

  13. http://ec.europa.eu/eurostat/product?code=isoc_sks_itsps&language=en&mode=view ! 25.7% 3rd in " 3rd in "

  14. https://teleport.org/cities/bucharest/salaries/ !!!

  15. None
  16. None
  17. None
  18. droidcon

  19. None
  20. None
  21. None
  22. 

  23.      ! Proposal   

      
  24.  

  25.  +   =  

  26.    RxJava Coroutines Jetpack ARCore Functional  

    Your first… deep-dive into... Best practice of Anti-patterns of A or B
  27.    RxJava Coroutines Jetpack ARCore Functional  

    Your first… deep-dive into... Best practice of Anti-patterns of A or B
  28.    RxJava Coroutines Jetpack ARCore Functional  

    Your first… deep-dive into... Best practice of Anti-patterns of A or B
  29. Annyce Davis

  30.    RxJava Coroutines Jetpack ARCore Functional  

    Your first… deep-dive into... Best practice of Anti-patterns of A or B
  31. None
  32.  

  33. https://github.com/AndroidStudyGroup/conferences/ https://bugfender.com/conferences/ https://techbeacon.com/best-mobile-iot-conferences-2018

  34. 

  35.  -   -  - 

  36. 

  37. 

  38. None
  39. None
  40. None
  41. 

  42. None
  43. Proposal

  44.    

  45.  

  46. Hiroyuki Mori @moridroid Kotlin

  47. Hiroyuki Mori @moridroid Kotlin    

  48.   

  49.    

  50.      

  51. 

  52. 16:9 or 4:3

  53.  

  54. None
  55. None
  56. None
  57. None
  58. None
  59. None
  60.    ͋

  61.  

  62. 

  63. • is a component for observing other component’ lifecycle, of

    course :) • is designed by publish-subscribe pattern, not observer pattern. It makes LifecycleObserver well-separated from LifecycleOwners • is boilerplate free. We just start observing. No explicit canceling observing is required. • is great for resource monitoring, such as connectivity-listener, location-listener… because this is safe from lifecycle changes. LifecycleObserver
  64. 

  65. • Observes lifecycles • Well Encapsulated • Boilerplate Free •

    Great for listeners LifecycleObserver
  66. 

  67. in short, LifecycleObserver is

  68. Observes lifecycles

  69. Well-EnCapsulated

  70. Boilerplate Free

  71. Great for listeners

  72. • Observes lifecycles • Well Encapsulated • Boilerplate Free •

    Great for listeners LifecycleObserver
  73.  

  74. 

  75. class YourViewModel : ViewModel() { private val _repos = MutableLiveData<List<Repository>>()

    val repositories : LiveData<List<Repository>> get() { if (_repos.value == null) { launch(CommonPool) { val repos = github.repositories().await() _repos.postValue(repos) } } return _repos } }
  76. 

  77. class YourViewModel : ViewModel() { private val _repos = MutableLiveData<List<Repository>>()

    val repositories : LiveData<List<Repository>> get() { if (_repos.value == null) { launch(CommonPool) { val repos = github.repositories().await() _repos.postValue(repos) } } return _repos } }
  78. https://romannurik.github.io/SlidesCodeHighlighter/

  79. 

  80. class YourViewModel : ViewModel() { private val _repos = MutableLiveData<Repository>()

    val repositories : LiveData<Repository> get() { if (_repos.value == null) { val repos = github.repositories() _repos.postValue(repos) } return _repos } }
  81. class YourViewModel : ViewModel() { private val _repos = MutableLiveData<Repository>()

    val repositories : LiveData<Repository> get() { if (_repos.value == null) { val repos = github.repositories() _repos.postValue(repos) } return _repos } }
  82. class YourViewModel : ViewModel() { private val _repos = MutableLiveData<Repository>()

    val repositories : LiveData<Repository> get() { if (_repos.value == null) { val repos = github.repositories() _repos.postValue(repos) } return _repos } }
  83. class YourViewModel : ViewModel() { private val _repos = MutableLiveData<Repository>()

    val repositories : LiveData<Repository> get() { if (_repos.value == null) { val repos = github.repositories() _repos.postValue(repos) } return _repos } }
  84. class YourViewModel : ViewModel() { private val _repos = MutableLiveData<Repository>()

    val repositories : LiveData<Repository> get() { if (_repos.value == null) { val repos = github.repositories() _repos.postValue(repos) } return _repos } }
  85. class YourViewModel : ViewModel() { private val _repos = MutableLiveData<Repository>()

    val repositories : LiveData<Repository> get() { if (_repos.value == null) { val repos = github.repositories() _repos.postValue(repos) } return _repos } }
  86. class YourViewModel : ViewModel() { private val _repos = MutableLiveData<Repository>()

    val repositories : LiveData<Repository> get() { if (_repos.value == null) { val repos = github.repositories() _repos.postValue(repos) } return _repos } }
  87. class YourViewModel : ViewModel() { private val _repos = MutableLiveData<Repository>()

    val repositories : LiveData<Repository> get() { if (_repos.value == null) { val repos = github.repositories() _repos.postValue(repos) } return _repos } }
  88. 

  89. None
  90. None
  91. 

  92. None
  93. None
  94. None
  95. None
  96. 

  97. 

  98. 

  99. Hiroyuki Mori @moridroid Thank you