Skip to content

Instantly share code, notes, and snippets.

@hisui
hisui / cpu-usage.cpp
Last active February 3, 2022 13:53
[iOS] Getting current CPU usage.
#include <mach/mach.h>
// http://stackoverflow.com/questions/8223348/ios-get-cpu-usage-from-application
double getCurrentCPUUsage()
{
thread_array_t threads;
mach_msg_type_number_t threadCount;
if (task_threads(mach_task_self(), &threads, &threadCount) != KERN_SUCCESS) {
return -1;
}
@hisui
hisui / Application.scala
Created March 27, 2014 03:57
Play2.1+WebSocket
package controllers
import play.api.mvc._
import play.api.libs.concurrent.Execution.Implicits.defaultContext
import play.api.Play.current
import play.api.libs.functional.syntax._
import play.api.libs.json._
import play.api.libs.json.Json.toJson
import play.api.libs.iteratee.{Concurrent, Iteratee}
import play.api.libs.concurrent.Akka
@hisui
hisui / Rakefile.rb
Created December 30, 2013 19:18
Rakefile for building C/C++ project.
# coding: utf-8
require "ostruct"
require "fileutils"
require "pp"
require "rake/loaders/makefile"
extend FileUtils
Rake.application.options.instance_eval {
#trace = false
@hisui
hisui / camel-case.rb
Created December 30, 2013 18:23
Splits a camel-cased name to word segments.
"ThisIsAUniqueID".scan(/(?:[A-Z][^\WA-Z]+|[A-Z]+(?![^\WA-Z]))/)
# ==> ["This", "Is", "A", "Unique", "ID"]
@hisui
hisui / poly-queue.hpp
Created December 19, 2013 17:06
A fast polymorphic object queue.
#ifndef SF_POLY_QUEUE_H_
#define SF_POLY_QUEUE_H_
#include <stdexcept>
#include <iostream>
#include <stdint.h>
#include <type_traits>
namespace sf {
@hisui
hisui / wscript
Created December 19, 2013 17:02
"wscript" boilerplate for googletest.
def options(ctx):
ctx.load('compiler_cxx')
def configure(ctx):
ctx.env.CXX = 'clang++'
ctx.load('compiler_cxx')
def build(ctx):
ctx(target='mylib',
source=ctx.path.ant_glob('src/*.cpp'),
@hisui
hisui / MonadTrans.scala
Last active December 26, 2015 00:38
Lifting a stack of multiple monads at once in Scala. (like Monad Transformer)
import scala.language.higherKinds
import scala.language.implicitConversions
trait Wrap[X] {
type Out[_]
}
object Wrap {
implicit def case0[M[_]] = new Wrap[M[_]] { type Out[a] = M[a] }
implicit def case1[M[_,_],A,B] = new Wrap[M[A,B]] { type Out[a] = M[A,a] }
@hisui
hisui / MiniLB.scala
Last active December 25, 2015 10:59
Software load balancer teki na nanika for testing.
package jp.segfault.minlb
import java.nio.channels._
import java.nio.channels.SelectionKey._
import java.nio.ByteBuffer
import java.net.{HttpURLConnection, URI, InetSocketAddress}
import java.io.IOException
import java.util.concurrent.atomic.AtomicBoolean
import java.util.concurrent.TimeoutException
@hisui
hisui / TtyOutput.scala
Created August 22, 2013 05:07
Using java.lang.Process in Scala.
package jp.segfault.cvs.util
import scala.concurrent.duration.Duration
import scala.collection.mutable.ArrayBuffer
import scala.util.Try
import java.io._
case class TtyOutput(data:Array[Byte], isError:Boolean)
@hisui
hisui / stream.ts
Last active August 21, 2020 21:20
Functional Reactive Programming (FRP) in TypeScript.
// stream.ts - A TypeScript module for FRP.
// - https://gist.github.com/hisui/6261547
// - tsc stream.ts -t es5 --sourcemap --noImplicitAny
module sf {
export class Packet<T> {
constructor(private _flags:number, private _value:any=void 0) {}
static next<A>(e:A):Packet<A> {