より引数が少ない型へのアップキャスト
次の2つを組み合わせると0引数の型の変数に2引数の関数を代入できたりする
- (x:T, y?:T) => T型の変数に(x:T, y:T) => T型の関数を代入できる
- (x:T) => T型の変数に(x:T, y?:T) => T型の関数を代入できる
上の1のような代入が必要なケースがあるのかよく分からない
var fn2: (x:number, y:number) => number fn2 = (x, y) => x * y; // fn2に入っている関数は2引数 var fn1_: (x:number, y?:number) => number fn1_ = fn2; var fn1: (x:number) => number fn1 = fn1_; var fn0_: (x?:number) => number fn0_ = fn1; var fn0: () => number fn0 = fn0_; // fn0の型は0引数の関数だが中身は2引数の関数 console.log(fn0()); // NaN
mcmap 2.4.2eのビルド
Minecraftのワールドをクォータービューな感じで画像にするmcmapを導入したのでメモ。
お品書き
1. mcmap 2.4.2e のビルド (OS X 10.9.1 Mavericks)
(2) 解凍してmakeしてみる
$ cd ~/Downloads $ mkdir mcmap2.4.2e $ cd mcmap2.4.2e $ unzip ../mcmap2.4.2e.zip $ cd mcmap-src $ make
png.hが無いって怒られる。はてなブログだと分からないけど、clangのエラーカラフルだな。
draw_png.cpp:12:10: fatal error: 'png.h' file not found #include <png.h> ^ 1 error generated. make: *** [draw_png.default.o] Error 1
(3) Makefile書き換え
# (3.1) -I/opt/local/includeを追加 # CLFAGS=-03 -msse -c -Wall -fomit-frame-pointer -pedantic -DWITHPNG -I/usr/local/include -I/opt/local/include # (3.2) -L/opt/local/libを追加 # 注意) -Iじゃなくて-L # LDFLAGS=-03 -msse -lz -lpng -fomit-frame-pointer -L/usr/local/lib -L/opt/local/lib
(4) ビルド
$ make
warningがいろいろ出るが、mcmapが生成されたので良し。
2. mcmap 2.4.2e のビルド (Cent OS 6.5, x86_64)
(1) mcmap2.4.2eのダウンロード、解凍
$ cd ~ $ mkdir mcmap $ cd mcmap $ wget http://dl.wrim.pl/mcmap242e $ unzip mcmap242e $ cd mcmap-src
(2) libpng-devel, zlib-develのインストール
$ sudo yum install libpng-devel.x86_64 $ sudo yum install zlib-devel.x86_64
(3) ビルド
$ make
mcmapが生成された。
余談
はじめ、Makefileにx64って名前のターゲットがあったのでmake x64してエラー出て
Makefile書き換えてハマったりしてた。
LDFLAGS64=-03 -msse -lz -lpng -fomit-frame-pointer -L/usr/local/lib -L/usr/lib64 x64: $(OBJECT64) # x86_64-w64-mingw32-g++を$(CC)に書き換える # $(LDFLAGS)を$(LDFLAGS64)に書き換える # -staticを消す $(CC) $(OBJECT64) $(LDFLAGS64) -m64 -o $(EXECUTABLE64) %.64.o: %.cpp # x86_64-w64-mingw32-g++を$(CC)に書き換える $(CC) $(CFLAGS) -m64 $< -o $@
$ make x64
上の手順でmcmap64が生成される。
Vimperatorでタイトル & URLをコピーする。
以下を~/_vimperatorrcに記述する。
" ページタイトル & URLをクリップボードにコピー nnoremap \" :js util.copyToClipboard(buffer.title+String.fromCharCode(10)+buffer.URL);<CR>:echo 'title & urlのコピー完了!'<CR>
快適になった。
一定時間経過後にechoメッセージを隠したいなぁ…
Chromeで画像を印刷する。
RiSKさん(@sscrisk)がなんでChromeには画像の印刷ボタンが無いのかとつぶやいていたので作ってみた。
https://twitter.com/sscrisk/status/340817615310188545
拡張のダウンロードはこちらからどうぞ。
Chrome ウェブストア - Print Image Menu
ソースはこちらからどうぞ。
s-hiiragi/print-image-menu · GitHub
簡単に実装できると思ったから作ったのだけど、少し悩んだ。印刷ダイアログを閉じたら自動的にタブを閉じたかったのではじめ以下のように書いていたが、タブが開いた瞬間に閉じてうまくいかなかった。
window.print(); window.close();
なんとなく以下のように変更したら望んだ動作になった。window.print()はブロックせず処理が終了した後ダイアログを開くのかな。
window.print(); setTimeout(function() { window.close(); }, 0);
ポップアップウィンドウ内で印刷ダイアログを開こうともしたけど、ポップアップウィンドウ内でコードを実行させるのが面倒だったので新しいタブ内で開くことにした。
ももんが以外の何か on WebBrowser ヾ( l _ l 〃)ノ゙
ももんが Advent Calendar 2012の23日目です。
今年からももんが Advent Calendarに参加しました、@s_hiiragiです。
ももんが Advent Calendar は何を書けばいいのか分からなかったので、さっちゃんのページで確認しました。
コンピュータの得意な方は、コンピュータともももんがと関係の無い事を、コンピュータの得意でない方は、ももんがとは関係無くコンピュータに関する事を書きましょう。ももんがと関係の無い事は、要するにももんがに関する事です。
ももんがと関係の無い事 = ももんがに関する事なので、コンピュータが得意かどうかによらずももんがに関することを書くようです。僕はコンピュータにあまり精通していないので、ももんがとコンピュータに関する事を書くことにしました。
ももんがについて
えー、こちらの画像を見て頂きたい。これは50年前絶滅したといわれるユーラル共和国産のももんがです。この見事な緑の体と赤い鮮血は人の心を惑わすに十分な美しさと言われてきました。それに一番の特徴は、ももんがの世界では一番早く飛ぶことが出来るということです。まるでももんがのようではありませんか。
見た目は小トトロに似ています。多分どこかにいるでしょう。だがその他一切のことは分かりません!
ももんが以外の何か
ももんがを見ているうちに、某Go言語のマスコットキャラクターを思い出しました。比べてみると、ももんがの方が可愛いですね。
マスコットといえば伺かというデスクトップマスコットがあります。デスクトップに二次元の女の子とか青色の謎の物体とかが常駐するアレです。役に立つような立たないような機能がたくさん搭載されていますが、眺めて楽しむのが主目的です。
ももんがもデスクトップマスコット化して、その生態を観測出来たら面白いんじゃないかと思いました。ただし、最近はWebブラウザ上で作業することが多くなってきているというのと僕が単にWebブラウザ好きという理由で、ブラウザ拡張で作りました。
残念ながら時間は限られているため、Google Chrome版しか作ることが出来ませんでした。Operaユーザーの皆様ごめんなさい。あとFirefoxユーザーの方も。今度勉強したら作ってみたいと思います。
今のところ、眺めて楽しむという機能と、クリックするとページの一番上までスクロールするという機能しかありません(この機能の名前が分かる人いましたら教えて下さい)。本当は動いたり伸びたりさせようと思ったのですが、HTML5 canvasでの画像のせん断変形の仕方がよく分からなかったので今回は実装出来ませんでした。
以下からももんがをダウンロードできます(Githubで公開しています)。
Google Chromeの設定>拡張機能ページを開き、ダウンロードしたcrxファイルをDrag & Dropしてインストールしてください。
https://github.com/s-hiiragi/webpage-mascot-momonga/blob/master/mOmonga.crx?raw=true
ももんがの画像は以下のページのカバーアートを模写して作りました(二次創作です)
http://c4se.hatenablog.com/entry/2012/12/01/224928
さっちゃんお許し下さい!
明日は@hirune_asakuraさまです(¦3[___]
Jarファイルのパスを取得する
適当なClassとClass.getResource()を使って調べる。
ClassLoader.getResource()では取得できなかった。
import java.util.*; import java.lang.*; import java.io.File; class Main { public static void main (String[] args) throws java.lang.Exception { final String classFileName = "/" + Main.class.getName().replaceAll("\\.", "/") + ".class"; System.out.println("classFileName: " + classFileName); final String classFilePath = Main.class.getResource(classFileName).getPath(); System.out.println("classFilePath: " + classFilePath); final File jarFilePath = new File(classFilePath.replaceFirst("!/.*$", "")); System.out.println("jarFilePath: " + jarFilePath); final String jarFileName = jarFilePath.getName().replaceFirst("\\..+$", ""); System.out.println("jarFileName: " + jarFileName); } }
参考