Skip to content

Instantly share code, notes, and snippets.

🏠
Working from home

Nizamutdinov Adel adelnizamutdinov

View GitHub Profile
@adelnizamutdinov
adelnizamutdinov / multitouch.kt
Last active Apr 5, 2019
Android multitouch helper
View multitouch.kt
import android.view.MotionEvent
typealias PxF = Float
typealias X = PxF
typealias Y = PxF
typealias PointerId = Int
inline fun MotionEvent.multiTouch(
View ActivityResult.kt
import android.app.Activity
import android.content.Intent
import android.os.Bundle
import kotlinx.coroutines.experimental.suspendCancellableCoroutine
typealias RequestCode = Int
typealias ResultCode = Int
data class ActivityResult(
val requestCode: RequestCode,
View MainActivity.java
import android.app.Activity;
import android.os.Bundle;
import android.support.annotation.Nullable;
import org.opencv.android.CameraBridgeViewBase;
import org.opencv.android.JavaCameraView;
import org.opencv.android.OpenCVLoader;
import org.opencv.core.Mat;
import org.opencv.core.MatOfRect;
@adelnizamutdinov
adelnizamutdinov / tat.py
Created Apr 22, 2017
translate between tatar and russian from CLI
View tat.py
#!/usr/bin/env python3
import sys
from urllib.parse import quote
from lxml import html
if len(sys.argv) > 1:
word = sys.argv[1]
@adelnizamutdinov
adelnizamutdinov / lastlove.py
Created Apr 14, 2017
love last.fm nowplaying from CLI
View lastlove.py
#!/usr/bin/env python3
import pylast
# get the keys https://www.last.fm/api/account/create
last_fm = pylast.LastFMNetwork(
api_key=API_KEY,
api_secret=API_SECRET,
username=USERNAME,
@adelnizamutdinov
adelnizamutdinov / client.kt
Last active Apr 14, 2019
CLI instant messenger in 60 lines with ZMQ
View client.kt
package chat
import org.zeromq.ZMQ
import kotlin.concurrent.thread
fun main(args: Array<String>): Unit =
ZMQ.context(1).use { ctx ->
thread {
ctx.socket(ZMQ.SUB).use { stream ->
stream.connect(MESSAGE_STREAM)
@adelnizamutdinov
adelnizamutdinov / cursor.kt
Created Jul 21, 2016
folding cursors all day
View cursor.kt
inline fun <T> Cursor.fold(zero: T, f: (Cursor, T) -> T): T =
if (moveToFirst()) {
moveToPrevious()
var accum = zero
while (moveToNext()) {
accum = f(this, accum)
}
accum
} else zero
@adelnizamutdinov
adelnizamutdinov / Cargo.toml
Created May 26, 2016
Simple JNI with Kotlin and Rust
View Cargo.toml
[package]
name = "hello"
version = "0.1.0"
authors = ["adelnizamutdinov"]
[lib]
crate-type = ["dylib"]
[dependencies]
jni-sys = "0.1.0"
@adelnizamutdinov
adelnizamutdinov / gc.kt
Last active Nov 8, 2015
play a very scary sound on each GC trigger
View gc.kt
import rx.Observable
import rx.Subscriber
import rx.schedulers.Schedulers
import java.lang.ref.PhantomReference
import java.lang.ref.ReferenceQueue
fun gcTriggers(): Observable<Unit> =
Observable.create(triggerLoop())
.subscribeOn(Schedulers.newThread())
View lens.kt
data class Lens<S, A>(val get: (S) -> A, val set: (A, S) -> S)
fun <A, B, C> Lens<A, B>.compose(that: Lens<C, A>): Lens<C, B> =
Lens({ this.get(that.get(it)) }, { c, a -> that.set(this.set(c, that.get(a)), a) })
fun <A, B> Lens<A, B>.traverse(): Lens<List<A>, List<B>> =
Lens({ it.map { get(it) } }, { bs, aas -> bs.zip(aas).map { this.set(it.first, it.second) } })
object Play {
data class Point(val x: Double, val y: Double) {
You can’t perform that action at this time.