ギークハウスと海外とプログラミング

この記事はギークハウス Advent Calendar 2016 15日目の記事です。 はじめに (2012年: 今は無くなったギークハウス武蔵小杉でやったUnityの勉強会) ギークハウスのことを知ったのは2012年の5月くらいなのでもう5年近く前になる。その時はSIerとして働き始め…

Firefox OSをビルドしてZTE Openに書き込んだけど起動しない場合の対処法

ZTE Open(inari)用にFirefox OSを自分でビルドして、flash.shの実行時に以下のようなエラーが出る場合、/out/target/product/inari/配下にboot.imgが無い可能性がある。 mikamikuh@mikaubuntu:~/project/firefox/B2G$ sudo ./flash.sh < waiting for device …

Ubuntu13.10でFirefox OS端末をadbに認識させる方法

ZTEのFirefox OS端末を入手した。早速Ubuntu13.10上でOSをビルドをして最新のFirefox OSを試そうと思ったのだが、adbがデバイスを認識してくれない。 $ adb devices List of devices attached ???????????? no permissions上記のように正しく認識されていな…

Clojureで日付を扱う(clj-time)

clj-timeとは Clojureで日時を扱う為にはclj-timeを使うと良い。これはJavaのJodaTimeのラッパーで、イミュータブルでスレッドセーフなのでClojureからも安全に利用できる。 以下に書いてあることは基本的に上記のgithubのREADME.mdにすべて書いてある。 Dat…

マレーシアで開発合宿がしたい!

来週の火曜日からギークハウスのメンバー6人くらいでマレーシア旅行に行ってくる。もともとは開発合宿という名目だったのだが人が集まらなくて普通の旅行になった。とはいえ、本当に開発合宿やったら面白そうなので行く前に調べたことをまとめておく。 飛行…

Clojureのバイトコード

Clojureを実行するときって、どういうバイトコードになっているんだろう? クラスファイルを作る まず、クラスファイルを出力するために:gen-classを付加する。 (ns clj.core (:gen-class)) (defn fuga [x y] (+ x y)) (defn hoge [] (fuga 10 20)) $ cd [pr…

JVMの関数はどのようにして呼び出されるか

関数が起動するとフレームというものが作成される。このフレームは、関数が終了したとき(正常リターン、例外に関わらず)破棄される。このフレームは以下の3つを持つ。 ローカル変数 オペランド・スタック コンスタント・プール 例 関数hogeはint型の引数を3…

lookupswitchとtableswitchの違い

昨日に引き続きJavaのswitchをコンパイルしたときに使われるtableswitch命令とlookupswitch命令をそれぞれ見ていく。switch難しいです>< tableswitch命令 tableswitch命令は、switchにおける各ケースをターゲット・オフセットのテーブルに対するインデック…

Java7のswitch文から得られるバイトコードの考察

仕事ではJava6しか使ってないが(ごめんなさい)、Java7に関する以下の文章を読んでいたらswitch文というものがよく分からなくなった。 Java SE 7 で導入された言語機能の 1 つは、switch 文の判断基準の対象としてプリミティブ型や列挙型と同様に文字列型の変…

eclipseでプラグインが認識されない場合のチェックリスト

eclipseのプラグインを開発している際、デバッグ実行している時はいいのだが実際にjarにしてフォルダに格納した時にプラグインを認識しないことがある。そういうときのチェック方針を適当にメモ。 1. jarファイルが正しい位置に格納されているか? eclipseプ…

Option型とは

Play Framework Starter Guideを読み進めていてScalaでOption型というものがよく使われていることに気付いた。軽くメモ。 Optionクラスとは Option型とは値があるかないかを表すクラスで、caseクラスと組み合わせてよく利用される。まだうまくまとめられてな…

Guiceでジェネリクス型をインジェクションする方法

関連1: 分からない!ジェネリクス 関連2: Java VMとコンパイラ、型システムこの数日、Guiceでジェネリクス型をインジェクションできない問題について考えていた。解決の糸口としてコンパイラやJVM、型について調べていたのだが、どうやらTypeLiteralというGu…

分からない!ジェネリクス

昨日の記事を書いたのは、Google Guiceを使うときにジェネリクスのクラスインスタンスを指定しようとしたがその方法がわからなかったからだった。 ジェネリクス型を使うのは非常に便利なのだが、こうやって困ったときにどうしたらいいのか分からなくなる。 …

Java VMとコンパイラ、型システム

あー、Javaわからん。型システムもよくわからん。普段そこまで意識することは無いのだが、Javaを使っているとたまに型でハマることがある。いまからJava仮想マシン仕様を読んで読み取れたことと適当な推測をメモしておくので、間違っていたらどなたかコメン…

Scala IDEを入れるとeclipseの標準出力が切り替わる件について

ある時からプラグインの開発時に別プロセスでeclipseを起動してもスタックトレースやらSystem.out.printlnを始め標準出力が一切出なくなった。これが出ないとマジで仕事にならないのでとりあえず調査した。 eclipse->Preferencesで開いたダイアログの、Scala…

Play frameworkをherokuで動かすための最速手順

Instant Play Framework Starterを少しづつ読み進めてるが、先にherokuに上げる方法を調べておきたくなった。公開できるとやる気出るし。基本的には公式チュートリアルで言われるがままにやっていれば動く。 環境構築(Heroku toolbelt) heroku関連のコマンド…

gradleでeclipseプラグインプロジェクトのビルドを実行する

当初の目的だったeclipseプラグインのビルドを実行が出来たので書いておく。ただし、とりあえず出来るレベルなのであまり参考にならないかもしれない。 サンプル用のeclipse pluginプロジェクトの作成 Package Explorerを右クリックして、New->Others...でne…

eclipseでgradleを使うための環境構築

Yokohama.groovy #16に参加してきた。元々Groovyに興味はなかったが、Mavenやantに代わるgradleというビルドツールに興味があって、そのビルドスクリプトがGroovyで書けるのだ。 最終的には仕事で作っているeclipseプラグインプロジェクトをgradleでビルドし…

『レガシーコード改善ガイド』の勉強会に参加しました

『レガシーコード改善ガイド』討論・品評会 #1 #lckaizenに参加してきました。最近はゲーム関連の勉強会に参加することが多かったので、こういう真面目な勉強会は久しぶりです。参加者のレベルが高くて恐れ入りました。Togetterで本日の内容についてはまとめ…

Scalaにおけるシングルトンオブジェクトとは

Playの本を読んでいたらシングルトンオブジェクトを利用するコードをよく目にしたのでメモ。 シングルトンオブジェクト Scala特有の機能がシングルトンオブジェクトの定義だ。ScalaはJavaとは違って静的なメンバを持つ事ができないが、シングルトンオブジェ…

Scalaのインポートについてメモ

Instant Play Framework Starterを読み進めているが、Scalaを書いた事が無いので調べながら読み進めている。とりあえず、コップ本を読みながらパッケージのインポート周りを整理したのでメモしておく。 基本的なインポート文 クラスやオブジェクトを直接イン…

Instant Play Framework Starterを買いました

本格的にPlay触ろうと思ってチュートリアルを漁ったけど情報が古かったりして少し困っていた。そんな中、たまたまこの記事を見つけてInstan Play Framework Starterという本の存在を知り、自分のニーズに合いそうだと思いさっそく購入。 Instant Play Framew…

Scala IDEでPlay frameworkを使う(Webアプリの編集)

前々回: Scala IDEとPlay frameworkの環境構築 前回: Playプロジェクトを作る 引き続きScala IDEのPlay frameworkプラグインを触る。今回はWebアプリを修正して実際にScala IDEを使用する。 モデルクラスを作成する modelsパッケージの直下にQuoteという名前…

Scala IDEでPlay frameworkを使う(プロジェクトを作る)

前回の続き。基本的にはこれに沿って進める。まずはScala IDEとPlay frameworkのプラグインがインストールできたのでプロジェクトを作る。 Playアプリケーションの起動 まずは作成したプロジェクト(test)に移動してplayコマンドを実行する。実行したらrunコ…

Scala IDEでPlay frameworkを使う(環境構築)

Scala + Play frameworkを試したくなったのでeclipseの環境を構築することにした。Scala IDEよりは評判の良いIntelliJを使う手もあったが、何か困った事があったときに中のコードもある程度読めるのでこちらを選択。 Play frameworkのインストール(Mac用) Ho…

何故eclipseではScalaもJavaもビルドできるのか

比較的新参の僕は知る由もないが、「その昔はシェルスクリプトでビルドをしていてだな・・・クラスパスを通すのが非常に大変じゃった」という旨の話を先日聞いた。それいつの時代なのだろうか・・・全く想像できない。 eclipseでボタンぽちぽちしてビルドす…

jarファイルとMANIFEST.MF

eclipseでJavaの開発しているとボタンぽちぽちするだけで勝手にコンパイルして実行してくれたりするので、中で何が動いているのか全く分からない。しかし何故動いてるのか分からないまま使ってるのも非常に気持ち悪い。 以前jar関係で少しハマったので少しだ…

eclipseプラグイン開発におけるパス表記再考

eclipseのプラグインを開発しているとパスの表記方法がいくつもあることに気が付く。意識していないと混乱するので適当にメモ。 eclipse上でのパス表記方法 最初に、eclipseには2つのパスの表記方法がある。1つはeclipseのworkspaceからのパス、もう1つはOS…