StoryEdit 開発日誌

ウェブアプリ StoryEditを作ってましたが延期。普通のブログ。

最近はもっぱらGo言語である。CGOでやっぱりはまる。

Go言語、なかなかに良い。まずはおなじみのバイディングを行ってみた。Go言語にはCGO(シーゴー)というバインディングフレームワークがある。これがなかなか強力。 簡単なライブラリをバインドしてみるわけだが、 package main /* #cgo LDFLAGS: -lmath #in…

JNAではまる。その3。 jna3からjna4、Direct mappingへ移行する。

はまりポイント、第三回。実はこれまで使っていたのは、com.sun.jnaパッケージだったのだが、maven centralで惹いてくると、jna-3.0.9しかなかったため、これを利用していた。しかし、ネットのドキュメントのバージョンは、3.2.7とか。実際は、https://githu…

JNAではまる、その2。__attribute__((__packed__))のマッピングをする。

さらに2時間ほどはまった。。。第一回は以下から。 JNAではまる。Javaからepollを使いたい。 - StoryEdit 開発日誌さて、やりたいことはepollをJNAから使うってことだが、いかんせん、JNA初心者には学ぶことがおおい。そもそもバインドしたい構造体をみてみ…

JNAではまる。Javaからepollを使いたい。

2時間ほどはまった。時間返せ。JNAとは、Java Native Accessのことである。ネイティブなライブラリ関数をJavaから呼び出すための仕組みで、libffiを使って実装されている。@ITページのサンプルに、以下のような構造体のバインドが載っている。 http://www.a…

Effective Java 2nd Editionを読んでいる。

Java はじめてもうすぐ一年。仕事で使い始めて半年。徐々に慣れてきた。そろそろまじめに、Effective Java 2nd Editionを読む気になって読み進めているのが、想像以上に面白い。2、3、6章を読み終えた。Javaの深いところ、とはいわないが、言語的にこう書…

Go言語、ビルド編。

Go

Scala, Erlang, Go, などなど、様々な新言語がひしめいてきた2013年。4年前の登場から、話題性が高かったGO言語だが、久々に触ってみた。 ビルドがgo buildになってる。 '6g'とか、アーキテクチャにあわせたコンパイラがいくつもついてきた、リリース当初。…

Gitでサブディレクトリのみをマージする。git filter-branchで。

git

タイトル通り。あるサブディレクトリだけブランチ間でマージしたい。というとき。いろいろ方法はあるが、以下の方法をとった。1. git filter-branchでそのディレクトリだけのリポジトリを作る(切り出し) 2. マージする。 3. パッチを作成する。 4. 元のリ…

Erlang の上で動くElixir

Elixirという言語があるらしい。 http://elixir-lang.org/Erlang VMで動く、Rubyライクな言語だということ。Rubyは、唯一、”嫌い”な言語。これは、なぜかというと、いちいちendをかかねばならないからである。制御構造のterminationに}ではなく、endを選んだ…

Erlang試す

Erlangを触ってみた。とりあえず難解。http://www.erlang.org/course/course.html から、まずはSequential programmingについて。 関数定義 まずはともあれ、関数を定義する。 add(X) -> X + 1. まず、ドットがややこしい。ブロックの終わりにはドットをいれ…

jarから、シンボルを見つける

あるjarに、どんなクラスが入っているか見つけたい時はないだろうか?C言語であれば、soやdllに入っているシンボルを見つけるのと同じ機能がjavaにもほしい。 $ jar -tf servlet-api.jar META-INF/ META-INF/MANIFEST.MF javax/ javax/servlet/ javax/servle…

Apache tomcatを起動する

なぜこうもエントリが少ないのか不明だが、Apache Tomcat 6を起動するまでの流れメモ。バイナリディストリビューションに含まれる、RUNNING.txtに起動手順が書いてあるが、これがサクっとウェブに上がってないのは、なぜだろうか。Javaはネットではラフに取…

邪バ

久々にはまった。workaroundはかけたが、意味がわかってないのでメモ。以下のような、ファイルのパスをURLで受け付けるコードがあった。 private final static String DEFAULT_CONFIGURATION = "config.yaml"; private URL getConfigURL() throws Configurat…

UIColor で 16進数を使う

なぜかObjective-Cにも手をだす。viewがaddできることに気づいてからは、InterfaceBuilderなどに頼らないため、サクサクと作業がすすむ。ところで、UIColorは、16進数指定ができないという謎仕様らしい。Stack overflowにナイスなマクロがあったのでそのまま…

urllib? urllib2? いやいや、requests?

久々に簡単なスクリプトを書いていたが、httpアクセスできるPythonのライブラリを探してみた。 はじめにurllibがひっかかる。直訳調で、かつクオリティが高いため、少し読むのがめんどくさいでおなじみのIBM Developersのリソースだ。 urllibの関数名で再度…

Windows XP (English version)で日本語を読む

Microsoftがウェブサイトなどの閲覧確認のために、無料のVMを配布しているのはご存知のとおりだろう。LinuxからでもMacからでも、VirtualBoxさえあれば、WindowsXPとかWindows Vistaとかが試せる。 http://www.microsoft.com/en-gb/download/details.aspx?id…

Google Guavaいい。

ランダムにJavaでも。 List<String> strings = new ArrayList<String>(); なんて書くのはだるい。そこで、Guava.jarを参照させて、使うと、あら簡単。 List<String> strings = Lists.newArrayList(); Genericsの二度書きを防いで、可読性をあげます。Javaにもこういう遊び心がある文</string></string></string>…

日本語版WordNetから、英語 --> 日本語の翻訳を探す。

お盆休み!、ということで興味の赴くまま、また別のウェブアプリをつくってます。 英単語勉強アプリ。Coffee Script + nodejs で作成中です。このメイン機能で、英単語いれたら、その意味をだしてくれる必要があるんですが、そのときに、翻訳が必要。翻訳API…

class Hoge:と、class Hoge(object):の違い

定義は以下のとおり。 class Hoge: def __init__(self): self.x = 'hoge' class Hoge(object): def __init__(self): self.x = 'hoge' これをhelp()で比較してみた。 Help on class Hoge in module __main__: class Hoge | Methods defined here: | | __init_…

TODO: class Hoge: と、class Hoge(object): の違い

表題がわからない。とりあえず、どっかのOSSに従って、class Hoge(object):と書いていたんだが、 vars()が使えないことがあり、class Hoge: にしたら、使えた。ここはどっかで調べる必要がある、ということで、TODO。

tmux 1.8 on MacOSX

コンパイルエラーがでたので、解決法メモ。EVBUFFER_LENGTHがどうのこうの、というエラーが発生。libevent2.0.xを使っていたのだが,libevent-2.0.5だということが発覚。最新は、2.0.21.stable。したがって、libeventを更新したら、うまくインストールできま…

nginx、つれづれリーディング。

ウェブサーバの仕組みを知る為に、とりあえずnginxを読む。 だらだらと読みながらのログとなるので、解説と間違わないように。 nginx.c main関数がある。 いろんな機能をinitしたあとに、init_cycleというのがある。どうやら、ここで、ウェブサーバの起動が…

weighthttp

これが、先日ふれたサーバに使われているベンチ。 たしかに、apacheのテストではいまいちだったので、こっちで性能図ってみる。http://www.iij.ad.jp/company/development/tech/activities/weighttp/

parseIntとvalueOfの違い

Integer.parseIntは、プリミティブ。Integer.valueOfは、インスタンスをそれぞれ返す。

混沌としてきた。

4月から仕事はじまりまして。まったくコードかけなかった。笑いろいろ投げ捨てて、とりあえず、javaの並列を知りたいと言う事で、 web serverを書くことに。現在のウェブサーバの潮流は二つあるらしい。一つは、マルチスレッドで受付を待つもの。そして、も…

CoffeescriptでHello World

わけあって、coffee scriptで開発しております。登場当時から気になってはいたのですが、計らずしも使う事になってしまいました。 CoffeeScriptとは JavaScriptを生成する為の上位言語です。 一般的なJava(コーヒー豆)とCoffee(抽出されたコーヒー飲料)…

StoryEditに戻る決心。

RuieはだいたいRPGらしく動作したので、とりあえずペンディング。さて、Javaはおいといて、今日はStoryEditに戻ります。 DBの再設計と、そのラッパークラスの再設計でけっこうめんどくさい思いをしており、 そこでストップしておりました。そして今日あるこ…

EclipseのEmacsバインドについて

EclipseのEmacsバインドで、C-x C-fでファイルを開けるのはありがたいんだが、 画面分割している際、既に開いているファイルをC-x C-fで開くと、そのファイルのある側でしか開けない。この微妙な差異が無性にストレス。笑なんかいい方法ないんかな。。。

Slick2dでRPG風 Transition画面遷移

State Transition example from welovy on Vimeo.動画とってみました。QuickTimeの画面録画って音はとれないのですね。まぁまだ著作権うんぬんがあやしいので、音はなくてヨシとしましょう。今回はSlick2の画面遷移について。StateBasedGame.enterState(int …

githubアカウントを使い分ける

git

仕事用と、個人用。本名と匿名。気分で切り替えたい時もあるでしょう。 そんなときは、githubアカウントを使い分けましょう! やり方は前から知ってたんですが、なぜかうまくいかなくて諦めていたのですが、もう一回やってみたところ、rsaのスペルミスだった…

VectorとArrayList

描画にベクトル計算を使おうとおもって、Vectorで調べていたら、java.util.Vectorを発見。しかし、Vectorは「オブジェクトを格納できる配列」だったわけで、ベクトル計算をするためのものではなかった。(結局、javax.vecmath.Vector2dを使ってる)しかし、…