Skip to content

Instantly share code, notes, and snippets.

View meoyawn's full-sized avatar

Adel Nizamutdinov meoyawn

View GitHub Profile
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,
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;
@meoyawn
meoyawn / tat.py
Created April 22, 2017 14:06
translate between tatar and russian from CLI
#!/usr/bin/env python3
import sys
from urllib.parse import quote
from lxml import html
if len(sys.argv) > 1:
word = sys.argv[1]
@meoyawn
meoyawn / lastlove.py
Created April 14, 2017 18:03
love last.fm nowplaying from CLI
#!/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,
@meoyawn
meoyawn / client.kt
Last active April 14, 2019 10:46
CLI instant messenger in 60 lines with ZMQ
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)
@meoyawn
meoyawn / cursor.kt
Created July 21, 2016 09:33
folding cursors all day
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
@meoyawn
meoyawn / Cargo.toml
Created May 26, 2016 20:52
Simple JNI with Kotlin and Rust
[package]
name = "hello"
version = "0.1.0"
authors = ["adelnizamutdinov"]
[lib]
crate-type = ["dylib"]
[dependencies]
jni-sys = "0.1.0"
@meoyawn
meoyawn / gc.kt
Last active November 8, 2015 20:09
play a very scary sound on each GC trigger
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())
@meoyawn
meoyawn / lens.kt
Last active August 29, 2015 14:27
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) {
#!/bin/sh
set -e
appId=$1
dst=/sdcard/container-${appId}
tar=/sdcard/container-${appId}.tar.gz
backup_file=${appId}.ab
rm -f $backup_file