Skip to content

Instantly share code, notes, and snippets.

View PingPongTest.kt
class PingPongTest {
fun containsDigit(n: Int, k: Int): Boolean = if (n == 0) false else if (n % 10 == k) true else containsDigit(n / 10, k)
fun pingPong(n: Int) = Observable.range(1, n - 1)
.map { it % 7 == 0 || containsDigit(it, 7) }
.scan(1, { direction, turn -> direction * if (turn) -1 else 1 })
.scan { acc, direction -> acc + direction }
.last()
.toBlocking()
.single()
@eungju
eungju / TypeTest.kt
Last active May 18, 2016
123 > "123"
View TypeTest.kt
import org.junit.Test
import kotlin.test.assertTrue
class TypeTest {
operator fun Int.compareTo(other: String): Int {
return 1
}
@Test
fun gt() {
@eungju
eungju / after.kt
Last active May 10, 2016
MVP+RxJava
View after.kt
class LocationAgreementAgree(scheduling: RxScheduling,
api: Api,
session: Session) : LocationAgreementSubmit(scheduling, api, session, true) {
private val disuseChecked = BehaviorRelay.create<Boolean>(false)
private val termsOfUseChecked = BehaviorRelay.create<Boolean>(false)
private val ageChecked = BehaviorRelay.create<Boolean>(false)
override val positiveEnabled = Observable.combineLatest(disuseChecked, termsOfUseChecked, ageChecked, { a, b, c -> a && b && c })
fun disuseChecked(): Observable<Boolean> = disuseChecked
@eungju
eungju / RxScheduling.java
Last active Mar 15, 2016
Kotlin type inference failure.
View RxScheduling.java
public class RxScheduling {
private final Scheduler io;
private final Scheduler ui;
private final Observable.Transformer ioThenUiTransform;
private final Observable.Transformer thenUiTransform;
public RxScheduling(Scheduler io, Scheduler ui) {
this.io = io;
this.ui = ui;
ioThenUiTransform = new Observable.Transformer<Object, Object>() {
@eungju
eungju / smi-adjust.exs
Created Mar 13, 2016
SMI 자막 시간 조절
View smi-adjust.exs
#!/usr/bin/env elixir
{d, _} = Integer.parse(Enum.at(System.argv(), 0))
IO.stream(:stdio, :line)
|> Stream.map(&Regex.replace(~r/<SYNC Start=(\d+)>/i, &1, fn _, g1 -> {t, _} = Integer.parse(g1); "<SYNC Start=#{t + d}>" end))
|> Stream.each(&IO.write/1)
|> Stream.run
View Example.java
bus.publish(new TokenExpiredEvent());
bus.asObservable()
.ofType(TokenExpiredEvent.class)
.observeOn(AndroidSchedulers.mainThread())
.subscribe(this::onTokenExpiredEvent);
@eungju
eungju / 1.1.2_1.1.10.md
Last active Jan 9, 2016
Kakao SDK for Android
View 1.1.2_1.1.10.md

Kakao SDK 버전을 1.1.2에서 1.1.10으로 올렸는데 이 사이에 호환되지 않는 변경들이 있네요. 릴리즈 노트에 변경에 대한 안내가 없고 못찾아서 바꾸면서 일부 정리했습니다.

com.kakao.auth.APIErrorResult -> com.kakao.network.ErrorResult: 이름 바뀌었다.

    • String requestURL: 필드 삭제되었으나 사용하지 않는다.

com.kakao.auth.SessionCallback -> com.kakao.auth.ISessionCallback: 이름 바뀌었다.

  • void onSessionClosed(KakaoException) -> void onSessionOpenFailed(KakaoException): 이름 바뀌었다.
    • void onSessionOpening(): 삭제되었으나 사용하지 않는다. 기존에도 이 콜백을 부르지 않는듯???

com.kakao.auth.Session.initialize(Context) -> com.kakao.auth.KakaoSDK.init(KakaoAdapter): 초기화 방식 변경됐다.

View 너의 의미.txt
(전주) G Bm D7 G
G D7 C Em G D
너의 그 한 마디 말도 그 웃음도 나에겐 커다란 의미
G D7 C Em G D
너의 그 작은 눈빛도 쓸쓸한 뒷모습도 나에겐 힘겨운 약속
C G D7 C G D7
너의 모든 것은 내게로 와 풀리지 않는 수수께끼가 되네
View Christmas Is All Around.txt
D Em G A
D Em G A
D Em G A D Em G A
I feel it in my fingers, I feel it in my toes
D Em G A D Em G A
Christmas is all around me and so the feeling grows
D Em G A D Em G A
It's written in the wind, it's everywhere I go
D Em G A D Em G A
@eungju
eungju / ss.py
Created Sep 20, 2015
Cancelling accept by signal.
View ss.py
import socket
import signal
server = None
def sigusr1_handler(signum, frame):
server.close()
signal.signal(signal.SIGUSR1, sigusr1_handler)