その時に書きたいものを書きます

その時に書きたいものを書くんです

匿名クラスについて

    public static WebSocket<JsonNode> ws(){
        final String username = session("username");
        return new WebSocket<JsonNode>(){
            @Override
            public void onReady(final WebSocket.In<JsonNode> in,
                                final WebSocket.Out<JsonNode> out){
                try{
                    WebSocketActor.join(username, in, out);
                }catch(Exception e){
                    Logger.error("Can't connect WebSocket");
                    e.printStackTrace();
                }
            }
        };
    }

この例のnew ~ };の部分。 WebSocketは抽象クラスである。抽象クラスは、本来であれば継承したクラスを定義して、そいつを使わなければインスタンス化できない。しかし、匿名クラスという仕組みを利用すれば、継承したクラスを定義しなくとも、上記のような書き方で抽象メソッドの実装やインスタンス化が一気にできてしまう。

Enumについて

Enumはクラス?

Enumは内部的にはクラスとのこと。

public enum Macross{
    Sheryl,
    Ranka,
    Alto
}

って定義すると

public class Macross extends java.lang.Enum{
    public static final Macross Sheryl
    public static final Macross Ranka
    public static final Macross Alto
    public static final Macross[] values();
    public static final Macross valueOf(java.lang.String);
}

みたいなクラスができるイメージ。

メソッドの定義

enumにはメソッドも定義できる。

public enum Macross {
    SHERYL;
    
    public String sing(){
        return "northern cross";
    }
}

mainメソッドからこんな感じで使える。ちなみにこれSingletonにもなっておるよ。

public class Main {
    public static void main(String[] args) {
        Macross mayn = Macross.SHERYL;
        System.out.println(mayn.sing()); 
    }
}

SpikaをさくらVPSのLAMPに配置する話

Spikaというナイスなオープンソースのアプリを見つけた。

Spikaについては以下が詳しい。

世界初 メッセンジャーアプリ「Spika」を完全オープンソースで公開、フロントからバックエンドまで提供 【増田 @maskin】


超簡単に言うと、オープンソースの「LINE」である。
サーバはLAMPで、クライアントはiOSにもAnoroidにも対応している。

iOSでサーバと通信してやんややんやするアプリを作ろうと思っている私にとっては、とっても先生になってくれそうなアプリである。

これは期待アゲ!!!!!


ということで、GitHubからサーバのソースとiOSのソース落として、チュートリアルの通りVagrantVirtualBoxを入れてローカルのVMLAMP作ってそこに配置してみた。
こいつ・・・動くぞ!
XcodeiOSエミュレータ起動してアプリ動かしてみた。
こいつ・・・動くぞ!

ということで、動いたが、これじゃ外出先とかでiPhone実機で動かせねーなと思って、思い立ったので、さくらのVPS借りてそこにLAMP作ってそこにサーバ側配置することにした。

そしてそれはもうハマった。




3日くらい奮闘して無事動かせるようになったので、私が躓いたところだけ、いや、私が言いたいところだけピックップしてここに書きます。
同じように困った方がいたとして、もし参考になれば幸いでございます。

ポイント

①さくらVPSCentOS、Spika先生はUbuntu
②...


ポイント1個だけだった。
そしてただ単に私がLAMP作ったの初めてだったのが一番の原因だった。

つまづいた点

・ドキュメントルートの違い
CentOSApacheのドキュメントルートは
/var/www/html
Spika先生のUbuntuApacheのドキュメントルートは
/var/www


これ最初知らなかったッス。(話にならない


Spika先生のチュートリアルでは、GitHubからSpika-Serverというディレクトリを/var/wwwの直下に落としてくる。
この状態でやんややんややって最後http://localhost:8080/wwwroot/installerというアドレスにアクセスして動かしていく。

素直な僕は、チュートリアルの通りGitHubからSpika-Serverというディレクトリを/var/wwwの直下に落としてくる。
だがCentOSのドキュメントルートは/var/www/htmlである。
そう、残念なのだ。

http://XXX.XXX.XXX.XXX/wwwroot/installer(XXX.XXX.XXX.XXXはさくらVPSのアドレス)にいくらアクセスしても動かねえ。

ということで調べに調べてドキュメントルートが残念なことに気づき、改めて/var/www/htmlの直下にDLしてやんややんやしてみた。
こいつ・・・動くぞ!

ということで無事動いた。
そのときのアドレスはhttp://XXX.XXX.XXX.XXX/Spika-Server/wwwroot/installerである。

Spika先生のは/Spika-Serverっていうのが不要みたいだけど、なんか設定チラ見した限り、なんかディレクトリ間でリンク貼ったりしてくれてるのかな?
私は気にしないことにした。


超つまづいたのはこの辺でした。
初心者乙、素人乙。


でも気にしなきゃいけないことは多かったんですよ。

mod_rewrite

チュートリアルではa2enmod rewriteって書いて奴。CentOSではhttpd.confで確認。

PHPUnitがインストールできない

php-xmlが必要な模様だったのでphp-xmlを入れようとする↓

phpのバージョン

5.4系だとphp-xmlがインストールできなかったので5.3系入れ直した。

PDO

phpinfoでPDOの表が表示されなかったりしたがyumphp-pdo、php-mysql入れ直したら無事出た。もちろんphp.iniにextensionの定義も追記。

ホスト指定

http://XXX.XXX.XXX.XXX/Spika-Server/wwwroot/installer立ち上げた後のホスト指定で、"XXX.XXX.XXX.XXX"とひたすら指定していたが"localhost"でよかった。

などなど。
今思えば全ての工程で躓いてたな…。うーむ。初心者乙、素人乙。
LinuxApacheの勉強になりました。



なにはともあれ無事さくらVPSでSpikaが動き始めました。
これで楽しくiOSのお勉強ができそうですよ!!!

Xcode用の.gitignore

Xcode触るたびに見えないファイルが変更されてコミットしてね軍団に入ってしまうのが煩わしいのでググったところ以下のブログを発見。

Xcodeプロジェクト用の.gitignoreを作成する
ここを参考に設定。

*.xcodeproj/*
!*.xcodeproj/project.pbxproj
!*.xcworkspace/contents.xcworkspacedata
.DS_Store


んで、もいっこ
UserInterfaceState.xcuserstate
がきちんと無視されなかったので、調べたところ以下のブログを発見。
UserInterfaceState.xcuserstateが.gitignoreで無視されない件
これを参考に、無事回避。

$ git rm --cached TwitterApp.xcodeproj/project.xcworkspace/xcuserdata/chama.xcuserdatad/UserInterfaceState.xcuserstate
$ git commit -m "remove cache"

基本っぽいので忘れないようメモメモ。




2014.02.22追記
TwitterApp.xcodeproj/xcuserdata/chama.xcuserdatad/xcdebugger/Breakpoints_v2.xcbkptlist
っていう感じでブレークポイント置いた情報とかが残ってしまうので、
iOS開発でGitを利用する際のTips
これを参考に、
xcuserdata/
っていうのもignoreに入れることにした。
Xcodeの設定を書いてあるファイルだから、プロジェクトのVer管理とは関係ないんだなこれが。

はてなブログにどうやってコード載せるんや?

String strHoge = "捕鯨";

おおーできた。
編集モードをはてな記法モードにして、スーパーpre記法という記法を使えばいいのね。

参考
ソースコードを色付けして記述する(シンタックス・ハイライト)


追記
githubのGistという仕組みもなかなか良さげ。