Skip to content

Instantly share code, notes, and snippets.

View kakajika's full-sized avatar
🏠
STAY HOME

Keita Kajiwara kakajika

🏠
STAY HOME
View GitHub Profile
@kakajika
kakajika / hubot-ikku.coffee
Last active August 31, 2016 12:10
Detect ikku script for Hubot.
# ikku.coffee
#
# Description:
# Bot for detecting ikku pattern.
#
{tokenize} = require 'kuromojin'
{nfkc} = require 'unorm'
haiku_pattern = [5, 7, 5]
@kakajika
kakajika / HSLColorUtil.java
Created July 18, 2016 10:40
Utility class for HSL color in Android.
import android.graphics.Color;
import android.support.annotation.ColorInt;
import android.support.annotation.NonNull;
import android.support.annotation.Size;
public class ColorUtil {
public static @ColorInt int lighten(@ColorInt int color, float value) {
float[] hsl = colorToHSL(color);
hsl[2] += value / 100;
@kakajika
kakajika / mov2gif
Created May 16, 2016 11:07
Bash alias to convert .mov to .gif [ffmpeg is needed]
function mov2gif() {
command ffmpeg -i $1 -vf "scale=320:-1" -pix_fmt rgb24 -r 30 -f gif - | gifsicle --delay=3 --optimize=3 > $2
}
@kakajika
kakajika / MaxLinearLayout.java
Last active June 7, 2022 18:09
Custom LinearLayout takes max measured width of all children for its width.
/**
* @author kakajika
* @since 2016/04/27
*/
public class MaxLinearLayout extends LinearLayout {
public MaxLinearLayout(Context context) {
super(context);
}
@kakajika
kakajika / RecursiveEnumZundoko.swift
Last active April 10, 2016 07:49
Swiftの再帰的enumとパターンマッチでズンドコ
import Foundation
enum Zundoko: CustomStringConvertible {
case Start
indirect case Zun(Zundoko)
indirect case Doko(Zundoko)
indirect case Kiyoshi(Zundoko)
var description: String {
switch self {
case Start: return "スタート!"
@kakajika
kakajika / ExampleScript.swift
Last active March 31, 2016 08:50
Example script of PaperSwift
import PaperSwift
let ExampleScript1 = { (paper: PaperView) in
var center: CGPoint
var width: CGFloat
var height: CGFloat
var pathHeight: CGFloat
let points = 8
let path = paper.Path()
path.fillColor = UIColor.darkGrayColor()
@kakajika
kakajika / CurveHitTester.swift
Last active April 25, 2016 12:50
Point hit tester for lines, quadratic bezier curves, and cubic bezier curves in Swift.
import UIKit
public class CurveHitTester {
typealias CurvePointMapper = (t: CGFloat, u: CGFloat) -> (x: CGFloat, y: CGFloat)
public static func hitTestLine(point: CGPoint, p1: CGPoint, p2: CGPoint, segments: Int, lineWidth: CGFloat) -> Bool {
return hitTestPoints(point, segments: segments, lineWidth: lineWidth) { (t, u) in
let x = u * p1.x + t * p2.x
let y = u * p1.y + t * p2.y
@kakajika
kakajika / CurveHitTester.java
Last active March 28, 2016 09:51
Android tap hit tester for lines, quadratic bezier curves, cubic bezier curves
import android.graphics.PointF;
public class CurveHitTester {
private static final float FLT_EPSILON = 1.1920928955078125E-7f;
private static final float PI_2 = (float) Math.PI / 2.0f;
public static boolean hitTestLine(PointF point, PointF origin, PointF destination, float lineWidth) {
PointF[] vertices = new PointF[]{ origin, destination };
return hitTestCurve(point, vertices, 1, lineWidth);
@kakajika
kakajika / ScopeFuncs.swift
Last active June 21, 2023 13:11
A port of Kotlin's scope functions to Swift.
protocol ScopeFunc {}
extension ScopeFunc {
@inline(__always) func apply(block: (Self) -> ()) -> Self {
block(self)
return self
}
@inline(__always) func letIt<R>(block: (Self) -> R) -> R {
return block(self)
}
}
@kakajika
kakajika / CancellableDelayedTask.swift
Created October 26, 2015 08:52
Cancellable delayed task in Swift.
class CancellableDelayedTask {
var cancelled = false
func run(delay: Double, task: () -> Void ) {
let time = dispatch_time(DISPATCH_TIME_NOW, Int64(delay))
dispatch_after(time, dispatch_get_main_queue()) { [unowned self] () -> Void in
if !self.cancelled {
task()
}
}
}