関数型のループ
2015年 5月 5日 関数型プログラミング Kotlin Swift Ruby
関数型プログラミングのスタイルを導入すべくScala関数型デザイン&プログラミングという本で関数型プログラミングについて勉強しています。
練習問題がいくつか出てくるのですが、Scalaは使う機会がないので、最近よく使うSwift、Kotlin、Rubyだとどんなかんじになるのかやってみようと思います。
Scalaでの回答はGitHubにあります。
GroovyでAndroidアプリを作る
GroovyがAndroid上で実行可能にということで、GroovyでAndroidアプリが作れるようなので試してみました。
Groovy 2.4のベータ版から公式にサポートされるとのことです。
Martiniを使うべきではない3つの理由
2014年 7月22日 Golang
Three reasons you should not use Martiniの記事が興味深かったので翻訳してみました。
結構意訳してしまってます。
おかしなとこがあったらごめんなさい。
GolangのWebアプリケーションフレームワークBeegoを試す
Node.jsとかPhalconは速いんですけど、結局ネイティブでどこまで処理するかってところで、アプリケーションが大きくなってスクリプトで処理する部分が増えると、それなりに遅くなってしまいます。
そこで、Golangです。すべてネイティブなので、アプリケーションが大きくなっても速いままです!
Java VMでもいいんですが、アプリケーションサーバーを立ち上げてListenするだけで数百メガのメモリを消費してしまうので、クソアプリを気軽にサーバーに置けないのが悩ましいです。
GolangはListenするだけなら数メガで済みます!
HTTPサーバーやテンプレートのライブラリがデフォルトで組み込まれていて、簡単にWebアプリを作れそうですが、Webアプリ用のフレームワークがあったので、試しつつ掲示板を作ってみます。
martiniやRevelが有名どころらしいですが、ORマッパーまでサポートしているBeegoというフレームワークがあり、v1.3のStableらしいので、これを試してみます。
Spring BootでThymeleafを使う
Spring BootはSpringや依存するライブラリをまとめて、Springでの開発をしやすくするもののようです。
あとサーブレットコンテナが組み込まれていたり、コマンドラインから稼働中のWebアプリケーションにアクセスできる仕組みが提供されているようです。
GradleでGetting Startedをやってみましたがいいかんじです。
依存するライブラリをちまちま書かなくてよかったり、コマンドライン一行で起動できたりして便利です。
Getting StartedではRestControllerでhtmlのViewを使っていないので、今回はViewを使ってみます。
Viewはjspやいくつかのテンプレートエンジンを選べるようですが、Thymeleafがいちおしっぽいので、これを使ってみます。
Phalconで既存のプロジェクトにモジュールを追加する1
PhalconでCakePHPやSymfonyにおけるPluginやRailsにおけるGemのように、パッケージ化されたMVCを抜き差しできる仕組みがないか調べてみたのですが、どうもなさそうなかんじです。
Pluginクラスがあるのですが、これはDispatherに絡めてフック処理を入れたりするもののようです。
そこで、モジュールを使って実現できないか試してみます。
以前作成した簡易ブログにコメント機能を付けていきます。
Phalconでマルチモジュールのルーティング
Phalconのマルチモジュールプロジェクトで、frontendとbackendのモジュールがあるとします。
frontendはhttp://localhost/phalcon-multiple-module/、backendはhttp://localhost/phalcon-multiple-module/admin でアクセスできるようにルーティングします。
frontend側はsetDefaultModule()(名前空間を使う場合はsetDefaultNamespace()も)するだけでシングルモジュールと同じルーティングになりますが、backend側も同じルールのルーティングを適用しようとした場合、ちょっと面倒くさいです。
PhalconのルーティングはPhalcon\Mvc\Routerのaddメソッドで追加していきます。