Skip to content

Instantly share code, notes, and snippets.

View Pooh3Mobi's full-sized avatar

Pooh3Mobi Pooh3Mobi

View GitHub Profile
@Pooh3Mobi
Pooh3Mobi / Binding.kt
Created January 13, 2019 02:31
Kotlin 無理やり束縛例
// 計算結果を束縛
fun judgeBMI(weight: Double, height: Double): String {
return when (
val bmi = (height / 100)
.let { weight / (it * it) }
) {
in 0.0..18.5 -> "Low weight $bmi"
in 18.5..25.0 -> "Normal (healthy weight)"
in 25.0..30.0 -> "Obese Class I"
in 30.0..35.0 -> "Obese Class II"
@Pooh3Mobi
Pooh3Mobi / LoginForm01.kt
Last active January 14, 2019 12:16
Login form sample with Functional Reactive Programming + DataBinding by Kotlin + Android
class LoginFormFragment : Fragment() {
companion object {
fun newInstance() = LoginFormFragment()
}
override fun onCreateView(
inflater: LayoutInflater, container: ViewGroup?,
savedInstanceState: Bundle?
@Pooh3Mobi
Pooh3Mobi / Sample01.kt
Last active January 17, 2019 15:52
Kotlin Coroutines Sample 01
// A-D blocking thread
fun testA() {
println(1)
Thread.sleep(1000)
println(2)
Thread.sleep(1000)
println(3)
}
@Pooh3Mobi
Pooh3Mobi / FRPLoadingViewModel.kt
Last active January 19, 2019 06:58
Learning FRP with Android + Kotlin + ViewModel + DataBing inspired The Elm Architecture
import androidx.lifecycle.LiveData
import androidx.lifecycle.ViewModel
import io.reactivex.Flowable
import io.reactivex.processors.BehaviorProcessor
import io.reactivex.schedulers.Schedulers
//
// In/Out/State
//
@Pooh3Mobi
Pooh3Mobi / MainActivity.kt
Last active February 11, 2019 02:43
Kotlin Parallel performance examples.
class MainActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
setSupportActionBar(toolbar)
fab.setOnClickListener { view ->
main()
}
@Pooh3Mobi
Pooh3Mobi / TheIntersectionOfTwoLines.kt
Last active March 26, 2019 01:05
the intersection of two lines
import java.lang.AssertionError
data class Point(val x: Float, val y: Float)
fun pointAt(x: Float, y: Float) = Point(x, y)
data class Line(val p1: Point, val p2: Point)
infix fun Point.to(other: Point) = Line(this, other)
@Pooh3Mobi
Pooh3Mobi / MainActivity.kt
Created February 26, 2020 14:30
ViewModel + DataBinding sample
package com.example.mvvmlab
import androidx.appcompat.app.AppCompatActivity
import android.os.Bundle
import androidx.databinding.DataBindingUtil
import androidx.databinding.ObservableBoolean
import androidx.databinding.ObservableField
import androidx.databinding.ObservableInt
import androidx.lifecycle.*
import com.example.mvvmlab.databinding.ActivityMainBinding
@Pooh3Mobi
Pooh3Mobi / RunTerminalCommand.kt
Created February 1, 2021 15:44
"ls -al".runCommand()
// https://stackoverflow.com/a/52441962
fun String.runCommand(
workingDir: File = File("."),
timeoutAmount: Long = 60,
timeoutUnit: TimeUnit = TimeUnit.SECONDS,
onErrorReturn: (Throwable) -> String = { "error: ${it.message}" }
): String {
val result = runCatching {
val parts = this.split("\\s".toRegex())
val proc = ProcessBuilder(*parts.toTypedArray())
@Pooh3Mobi
Pooh3Mobi / Clipboard.kt
Last active February 2, 2021 03:34
AWT Clipboard String handling in Kotlin
fun Clipboard.onChanged(block: (String?) -> Unit) {
addFlavorListener { e -> block((e.source as Clipboard).clipboardString) }
}
var Clipboard.clipboardString: String?
set(value) {
val ss = StringSelection(value)
setContents(ss, ss)
@Pooh3Mobi
Pooh3Mobi / LifeCycleObserveableLogger.kt
Last active April 23, 2021 11:20
LifeCycleObserveableLogger
import android.util.Log
import androidx.lifecycle.Lifecycle
import androidx.lifecycle.LifecycleObserver
import androidx.lifecycle.OnLifecycleEvent
object IndentProvider {
private var depth = 0
private const val SPACE = " "