Skip to content

Instantly share code, notes, and snippets.

View torao's full-sized avatar
🤒
stacked

Torao Takami torao

🤒
stacked
View GitHub Profile
@torao
torao / prism-tlsplus.min.js
Created February 20, 2021 10:23
TLA+ syntax hi-light extension for Prism.js
/* USAGE: Declare the following script after prism.js and specify language-tlsplus.
<script src="prism.js"></script>
<script>Prism.languages.tlaplus={...}</script>
<pre><code class="language-tlsplus">...</code></pre>
*/
Prism.languages.tlaplus={comment:[{pattern:/\(\*[\s\S]*?(?:\*\)|$)/,lookbehind:!0,greedy:!0},{pattern:/\\\*.*/,lookbehind:!0,greedy:!0}],string:{pattern:/(["'])(?:\\(?:\r\n|[\s\S])|(?!\1)[^\\\r\n])*\1/,greedy:!0},keyword:/\b(?:ACTION|ASSUME|ASSUMPTION|AXIOM|BOOLEAN|BY|CASE|CHOOSE|CONSTANT|CONSTANTS|COROLLARY|DEF|DEFINE|DEFS|DOMAIN|ELSE|ENABLED|EXCEPT|EXTENDS|HAVE|HIDE|IF|IN|INSTANCE|LAMBDA|LEMMA|LET|LOCAL|MODULE|NEW|OBVIOUS|OMITTED|ONLY|OTHER|PICK|PROOF|PROPOSITION|PROVE|QED|RECURSIVE|STATE|STRING|SUBSET|SUFFICES|TAKE|TEMPORAL|THEN|THEOREM|UNCHANGED|UNION|USE|VARIABLE|VARIABLES|WITH|WITNESS)\b/,boolean:/\b(?:TRUE|FALSE)\b/,number:/-?\b\d+(?:\.\d+)?(?:e[+-]?\d+)?\b/i,prolog:/(====+|----+)/,rule:{pattern:/\b\w+(\(.*?\)|\[.*?\])?\s*==/,inside:{atrule:/\b\w+(\(.*?\)|\[.*?\])?/}},symbol:/\
@torao
torao / main.py
Created June 22, 2020 03:01
Fairness Adjustment by Reward for Discrete Probability Distribution based Random Sampling without Replacement
import random
import math
import copy
NUMBER_OF_CANDIDATES = 100
NUMBER_OF_VOTERS = 25
TOTAL_STAKES = 100000
TOTAL_REWARDS_FOR_ROUND = 100
NUMBER_OF_ELECTIONS = 10000
@torao
torao / collapse.md
Last active May 1, 2020 01:18
github の gist, wiki や issue で折りたたみブロックを使用する方法
押せ

fn main() {
  println!("hello, world");
}
local hmgetall = function(...)
if next(arg) == nil then return [] end
local result = []
for j, key in ipairs(arg) do
local bulk = redis.call('HGETALL', key)
local hash = {}
local nextfield
for i, v in ipairs(bulk) do
if i % 2 == 1 then
nextkey = v

多重ディスパッチはオブジェクト指向で言うところの多態化となるか?

Julia の多重ディスパッチは OO で言うところの多態化となるか? についてのポエム。

target version: Julia 0.6.2

普段は Scala, Java, Python, Ruby あたりを使っていますが、Julia はまだ言語仕様を見ながらコードを書いている状況なので、Julia を使いこなせる方が「えっそれをするためにこういう機能があるよ?」(知ってるかどうか問題だったオチ) であれば話は終わります。多分、それ以上読み進めるのは時間の無駄です。


Julia の多重ディスパッチは実行時の型から対応する関数 (振る舞い) を推定して選択するが、関数を使用する時点で全ての可能性のある型について自明でなければならない制約があります。

@torao
torao / GIFPlainText.java
Last active November 18, 2017 12:26
How to Build Animation by Image I/O in Java
package biz.moyo.lab.experiment.gifanime;
import java.awt.*;
import java.awt.image.*;
import java.io.*;
import java.util.*;
import javax.imageio.*;
import javax.imageio.metadata.*;
import javax.imageio.stream.*;
public class GIFPlainText {
public static void main(String[] args) throws IOException{
@torao
torao / stomp-specification-1.2_ja.md
Last active December 14, 2021 10:57
STOMP Specification, Version 1.2 日本語訳

Original Document

STOMP プロトコル仕様, Version 1.2 (日本語訳)

Abstract

STOPM は中継サーバを介してクライアント間での非同期メッセージパッシング用に設計されたシンプルで相互運用可能なプロトコルです。 それらのクライアントとサーバ間で渡されるテキストベースメッセージのワイヤーフォーマットを定義します。

STOMP は既に何年かのアクティブな利用実績があり多くのメッセージブローカーやクライアントライブラリによってサポートされています。

@torao
torao / WebSocketClient.scala
Created August 23, 2016 12:59
WebSocket Client Example for Scala 2.11 with Netty 4
// WebSocket Client Example for Scala 2.11 with Netty 4
// http://netty.io/4.0/xref/io/netty/example/http/websocketx/client/WebSocketClient.html
package org.koiroha.websocket
import io.netty.bootstrap.Bootstrap
import io.netty.buffer.Unpooled
import io.netty.channel.{Channel,ChannelFuture,ChannelHandlerContext,ChannelInitializer,ChannelPipeline,ChannelPromise,EventLoopGroup,SimpleChannelInboundHandler}
import io.netty.channel.nio.NioEventLoopGroup
import io.netty.channel.socket.SocketChannel
import io.netty.channel.socket.nio.NioSocketChannel
// copy & paste to scala REPL
trait Mod { val name:String; val rarity:Int }
class HeatSink(val name:String, val effect:Double, val rarity:Int) extends Mod
case object CHS extends HeatSink("CHS", 0.3, 1)
case object RHS extends HeatSink("RHS", 0.5, 2)
case object VRHS extends HeatSink("VRHS", 0.7, 3)
val heatSink = Seq(CHS, RHS, VRHS)
class MultiHack(val name:String, val effect:Int, val rarity:Int) extends Mod
@torao
torao / Competition.scala
Created December 5, 2014 21:16
マルチスレッドから DatagramChannel で送信する場合の同期/非同期 I/O パフォーマンス比較
import java.net.InetSocketAddress
import java.nio.ByteBuffer
import java.nio.channels.{ClosedSelectorException,DatagramChannel,SelectionKey,Selector}
import java.util.concurrent.atomic.{AtomicLong,LongAdder}
import java.util.concurrent.{LinkedBlockingQueue,BlockingQueue,Executors,TimeUnit}
class Competition(threadCount:Int, payloadSize:Int, directBuffer:Boolean) {
val buffer = if(directBuffer) ByteBuffer.allocateDirect(payloadSize) else ByteBuffer.allocate(payloadSize)
val channel = DatagramChannel.open()
var roundStart = System.nanoTime()