Skip to content

Instantly share code, notes, and snippets.

View suzuki0keiichi's full-sized avatar

SUZUKI Keiichi suzuki0keiichi

View GitHub Profile
@suzuki0keiichi
suzuki0keiichi / gist:3189431
Created July 27, 2012 18:05
ここまでやるとClosure Compilerでtraitでmix-in的なことをしつつ--jscomp_error=checkTypesをつけても怒られなくなるけどそれ以外方法無いの?
hoge = {};
/** @interface */
hoge.Interface1 = function(){};
/** @interface */
hoge.Interface2 = function(){};
/**
@suzuki0keiichi
suzuki0keiichi / gist:3265373
Created August 5, 2012 15:20
flickrjを使って投稿日と撮影日を合わせるプログラム
import java.io.IOException;
import java.text.SimpleDateFormat;
import java.util.Date;
import javax.xml.parsers.ParserConfigurationException;
import org.xml.sax.SAXException;
import com.aetrion.flickr.FlickrException;
import com.aetrion.flickr.REST;
@suzuki0keiichi
suzuki0keiichi / gist:4086394
Created November 16, 2012 10:54
素のPHPとQuercusの挙動の違い
<?php
class Hoge {
public $foo = null;
public $bar = 'this is bar';
public function __get($name) {
return "this is __get";
}
}
@suzuki0keiichi
suzuki0keiichi / Scala.jsでdefの変換結果 2013 7.24現在.js
Last active December 20, 2015 04:19
Scala.jsでdefがどのように変換されるか
// object宣言部は含まない
// 実体
ScalaJS.c.helloworld\ufe33HelloWorld$.prototype.hello\ufe34T = (function() {
return "hello world!"
});
// 外部からの呼び出し用
ScalaJS.c.helloworld\ufe33HelloWorld$.prototype.hello = (function() {
return this.hello\ufe34T()
});
@suzuki0keiichi
suzuki0keiichi / Scala.jsでvalの変換結果 2013 7.24現在.js
Last active December 20, 2015 04:28
Scala.jsでvalのメンバ変数がどのように変換されるか
// コンストラクタで宣言 $jsfield$というプリフィックスを付けて宣言される
ScalaJS.c.helloworld\ufe33HelloWorld$ = (function() {
ScalaJS.c.java\ufe33lang\ufe33Object.call(this);
this.$jsfield$hello = null
});
// getter
ScalaJS.c.helloworld\ufe33HelloWorld$.prototype.hello\ufe34T = (function() {
return this.$jsfield$hello
});
// コンストラクタ実体で初期化(Javascriptのコンストラクタとは別で存在している)
@suzuki0keiichi
suzuki0keiichi / Scala.jsでoverloadの変換結果 2013 7.24現在.js
Last active December 20, 2015 04:28
Scala.jsでoverloadがどのように変換されるか
// 関数名のポストフィックスでパラメーター情報がつく
ScalaJS.c.helloworld\ufe33HelloWorld$.prototype.hello\ufe34T = (function() {
return "hello world!"
});
ScalaJS.c.helloworld\ufe33HelloWorld$.prototype.hello\ufe34Ljava\ufe33lang\ufe33Integer\ufe34T = (function(arg$num) {
return ("hello world! " + arg$num)
});
ScalaJS.c.helloworld\ufe33HelloWorld$.prototype.hello\ufe34T\ufe34T = (function(arg$text) {
return ("hello world! " + arg$text)
});
@suzuki0keiichi
suzuki0keiichi / Scala.jsでscala.js.Arrayの操作の変換結果 2013 7.24現在.js
Last active December 20, 2015 04:29
Scala.jsでscala.js.Arrayの操作がどのように変換されるか
// def hoge()の中身のみ貼付ける
var array$jsid$11979 = [ScalaJS.modules.scala\ufe33Predef().int2Integer\ufe34I\ufe34Ljava\ufe33lang\ufe33Integer(10), ScalaJS.modules.scala\ufe33Predef().int2Integer\ufe34I\ufe34Ljava\ufe33lang\ufe33Integer(20), ScalaJS.modules.scala\ufe33Predef().int2Integer\ufe34I\ufe34Ljava\ufe33lang\ufe33Integer(30)];
array$jsid$11979[0] = ScalaJS.modules.scala\ufe33Predef().int2Integer\ufe34I\ufe34Ljava\ufe33lang\ufe33Integer(15);
var num$jsid$11980 = ScalaJS.as.java\ufe33lang\ufe33Number(array$jsid$11979[0])
@suzuki0keiichi
suzuki0keiichi / Scala.jsでifの最後の評価結果の代入の変換結果 2013 7.24現在.js
Last active December 20, 2015 05:29
Scala.jsでifの最後の評価結果の代入がどのように変換されるか
ScalaJS.c.helloworld\ufe33HelloWorld$.prototype.hoge\ufe34I\ufe34O = (function(arg$num) {
// 宣言時の場合は評価結果の場で宣言される(Javascriptではifブロック内スコープは無いので)
if ((arg$num === 20)) {
var value$jsid$11972 = "hello"
} else {
var value$jsid$11972 = "bye"
};
// 再代入の場合は評価結果の場で代入される
if ((arg$num === 20)) {
value$jsid$11972 = "hello"
@suzuki0keiichi
suzuki0keiichi / Scala.jsでパターンマッチの変換結果 2013 7.24現在.js
Last active December 20, 2015 05:29
Scala.jsでパターンマッチがどのように変換されるか
ScalaJS.c.helloworld\ufe33HelloWorld$.prototype.hoge\ufe34O\ufe34V = (function(arg$num) {
var rc6$jsid$17007 = false;
var x2$jsid$17002 = null;
var x1$jsid$17001 = arg$num;
var result$$jslabel$matchEnd7$17008;
// Someはそのままの機能、if文を並べつつ代入&ラベルでbreak(このbreakの機能初めて知った)
$jslabel$matchEnd7$17008: {
if (ScalaJS.is.scala\ufe33Some(x1$jsid$17001)) {
rc6$jsid$17007 = true;
x2$jsid$17002 = ScalaJS.as.scala\ufe33Some(x1$jsid$17001);
@suzuki0keiichi
suzuki0keiichi / hello.js
Last active January 1, 2016 10:59
LLVM-IRアセンブリで書いたHello WorldをEmscriptenにかけるとどんな感じになるか。 もちろんhello.llの方をlliに渡してもちゃんとHello Worldが出る。
// Note: Some Emscripten settings will significantly limit the speed of the generated code.
// Note: Some Emscripten settings may limit the speed of the generated code.
// The Module object: Our interface to the outside world. We import
// and export values on it, and do the work to get that through
// closure compiler if necessary. There are various ways Module can be used:
// 1. Not defined. We create it here
// 2. A function parameter, function(Module) { ..generated code.. }
// 3. pre-run appended it, var Module = {}; ..generated code..
// 4. External script tag defines var Module.
// We need to do an eval in order to handle the closure compiler