情報系人間のブログ

プログラミング、開発に関することを書いていきます。

Rxの関数を図で見る

ReactiveProgrammingを導入するためにはmap,filter等の様々な関数を理解する必要があるのでコストが高いです。
それぞれの関数がどういった動作をするのかはまずは公式をみるべしです。

ReactiveX - Operators

こちらのサイトでは公式の図にあるObservableを自分で動かす事ができます。
少し理解しやすくなっていると思います。なによりおもしろい。rxmarbles.com

FREETEL SAMURAI MIYABI 買った

普段はiphone6を使っていてAndroidほしいなと思っていたので買いました。
Androidは4年ぶりくらいで久しぶりです。前の端末はOSが2.2か2.3の時でした。root化失敗して文鎮化したのがなつかしいです。
動作はかなり満足です。一つ気になる点は背面がすぐ熱くなるくらいですけど、約2万なので文句言ってもしょうがないです。むしろコスパ良し。

Androidアプリ開発もがんがんいくぞい。

f:id:reida:20151101194057j:plain

swift2.0でStringの先頭、最後を削除する

swift2.0ではdropFirst,dropLastがなくなったのでタイトルの動作をどのようにすればよいのか調べた。

What is the most succinct way to remove the first character from a string in Swift? - Stack Overflow

こちらのstackoverflowの回答でいくつか良い方法が挙がっている。こういったユーティリティ的な動作はふたつ目の回答のようにextensionにしておくのが良い。
swift2.0からadvance関数はBidirectionalIndexTypeのadvancedByに変わっているのでそこを直すと以下の様になる。

extension String {
    func chopPrefix(count: Int = 1) -> String {
        return self.substringFromIndex(self.startIndex.advancedBy(count))
    }
    
    func chopSuffix(count: Int = 1) -> String {
        return self.substringToIndex(self.endIndex.advancedBy(-count))
    }
}

JSONからモデルを自動生成する

JSONからその要素に対応したモデルを作る際に手打ちで作成するのは非常に面倒です。
こちらのJSONExportというツールはこの作業を自動でやってくれるので非常に便利です。

Ahmed-Ali/JSONExport · GitHub
こんな感じで左側にJSONを入力すると右側に指定した形式でモデルが出力されます。
f:id:reida:20151014203844p:plain
対応している形式は以下のとおりです(Version 0.0.9)。
f:id:reida:20151014203845p:plain
最近きているRealmだけでなくSwiftyJSONや
SwiftyJSON/SwiftyJSON · GitHub
ObjectMapperといったライブラリにも対応しています。
Hearst-DD/ObjectMapper · GitHub
個人的にはObjectMapperにお世話になっているので非常にありがたいです。

dockerでgitbucketを起動する

dockerでgitbucketを起動するメモ。

環境

CentOS 6.7(2.6.32-573.7.1.el6.x86_64)

インストール

docker

Installation on CentOS
こちらの公式にある方法を使います。

sudo yum install docker-engine

インストール後dockerサービスを起動します。

sudo service docker start

このままだとdockerコマンドを使用するには毎回sudoする必要があります。回避するためにdocker groupにユーザーを追加します。

sudo usermod -aG docker your_username
docker-compose

docker-composeはdockerのシステム構成をymlで定義し、管理できるツールです。
使わなくても良いのですが、とりあえず使ってみます。
インストール方法はこちらも公式をそのまま使います。
Docker Compose

curl -L https://github.com/docker/compose/releases/download/1.4.2/docker-compose-`uname -s`-`uname -m` > /usr/local/bin/docker-compose
chmod +x /usr/local/bin/docker-compose

ymlは以下のとおり。
docker-compose.yml

gitbucket:
   image: f99aq8ove/gitbucket
   ports:
    - "29418:29418"
    - "8080:8080"
   volumes:
    - ${PWD}/gitbucket-data:/gitbucket

imageは
f99aq8ove/docker-gitbucket · GitHub
を使います。これでgitbucketをインストールしたイメージを作成できます。
やっていることは以下のコマンドと同じです。

docker run -d -p 8080:8080 -p 29418:29418 -v ${PWD}/gitbucket-data:/gitbucket

f99aq8ove/gitbucketイメージからコンテナを作成し、ホストの8080,29418ポートをコンテナの8080,29418ポートに転送します。
また、コンテナ内のディレクトリ/gitbucketにホストのディレクトリ${PWD}/gitbucket-dataが割り当てられます。

gitbucket起動

準備ができたのでdockerコンテナを立ち上げます。
docker-compose.ymlがあるディレクトリで

docker-compose up -d

を実行します。-dを指定するとバックグラウンドで起動します。

$ docker ps
CONTAINER ID        IMAGE                 COMMAND                CREATED             STATUS              PORTS                                              NAMES
e2a7682dcd8c        f99aq8ove/gitbucket   "java -jar /opt/gitb   8 hours ago         Up 8 hours          0.0.0.0:29418->29418/tcp, 0.0.0.0:8080->8080/tcp   gitbucket_gitbucket_1

立ち上がった後はhttp://localhost:8080/にアクセスすればgitbucketを使うことができます。