読者です 読者をやめる 読者になる 読者になる

docker + rails で rails start してもブラウザからアクセスできない

docker + rails で rails start してもブラウザからアクセスできなかった。IP指定を忘れていた・・・。 rails s -b 0.0.0.0

scala で warning: there was one feature warning; re-run with -feature for details

以下の warning が出た。 warning: there was one feature warning; re-run with -feature for details以下のように -feature オプションを付けると詳細を確認できる。 $ scala -feature hello.scala /Users/xxxxxi/hello.scala:22: warning: postfix operat…

docker-compose で volume を作る

それ用の書き方があるかと思ったけど、 なかったのでこうしました。 dvc1: image: busybox volumes: - /var/log/nginx/ command: [/bin/sh]一応動作したけど、これでいーのか・・・?

docker-compose で service 'version' doesn't have any configuration options. のエラー

docker-composeで以下のエラーが出た。 ERROR: In file './docker-compose.yml' service 'version' doesn't have any configuration options. All top level keys in your docker-compose.yml must map to a dictionary of configuration options.docker-com…

PlantUMLのpng画像が切れてしまう

大きめのシーケンス図を書いたらpng画像が切れてしまった。PlantUMLのデフォルト設定では png画像の最大サイズが400KB程度になっているので、 400KBを超えると切れてしまう。解決策は以下に載ってた。 http://plantuml.com/faq.html.zshrc に「export PLANTU…

Macに Scala + Play2.5 + IntelliJ の開発環境を作る

今回説明するのは以下です。1.VMに開発環境を作ろうとして諦めた話 2.各ツールの紹介 3.各ツールの用途は分かったけど、結局どれをインストールすればいいのか 4.実際に環境を構築してみる 1.VMに開発環境を作ろうとして諦めた話もともとPHPのエンジニアで最…

scala の sbt の起動で止まる

$ sbt Getting org.scala-sbt sbt 0.13.9 ...上記のような感じで止まったけど、 これはファイルをDLしているだけで止まっているわけではない。「Getting」と書かれていても何も起こらないから不安になる。DLには10分くらいかかったかな・・・。

ActiveAdminで秒単位の時間(期間)検索

秒単位の時間範囲検索をしたかった。日にち単位、時間単位、10分単位 とかなら「ActiveAdmin datepicker」とかで検索すると それ用の gem が出てくるが、 秒単位がなかった。イメージとしてはテキストボックスでstart = 2016-03-22 09:00:00 end = 2016-03-2…

ActiveAdmin + SwitchPoint + AwesomeNestedSet の組み合わせでデータ登録、更新が失敗する

AwesomeNestedSet と SwitchPoint の相性が悪いっぽい。 SwitchPoint の接続を write に向けると上手く行くっぽいので、 ActiveAdmin でも接続を write に向けたいところ。以下のように ActiveAdmin の create, update をオーバーライドして、 トランザクシ…

ActiveAdmin で連続した改行が1つの改行になってしまう現象の解決策

ActiveAdmin の改行では simple_format() を利用する。 column '名前' do |user| simple_format(user.name) end この simple_format は改行コードをHTMLの pタグ に変換するもので、 改行が連続で続いても1つのpタグ に変換してしまう。なので、入力されてい…

zsh で fg の %(パーセント)を省略する

いちいち fg %1 とかやるの面倒だし、 tabで補完するのも面倒なので、 bashみたいにしたかった。以下を発見。 http://stackoverflow.com/questions/32614648/weird-jobs-behavior-within-zsh.zshrcに以下を定義して終わり。 fg() { if [[ $# -eq 1 && $1 = -…

iterm2 で特定のホストにsshした時にテーマを変更する

http://d.hatena.ne.jp/pospome/20160227/1456548524 ↑ これの bin/ssh を以下に修正すればいい。 #!/bin/sh on_exit () { echo "\033]50;SetProfile=ft\a" } case $@ in *host1* | *host2* | *host3* ) trap on_exit EXIT echo 'please wait login .....' e…

rails の models を階層化するときに config.autoload_paths を指定したけどモデルを読み込んでくれない

rails の models を階層化するときに config.autoload_paths を指定したけど モデルを読み込んでくれなかった。名前空間を付けると問題なく読み込める・・・。原因はディレクトリ名とモデル名が重複してたからっぽい。以下のように user というディレクトリ…

Macのターミナル(bash)で特定のホストにsshした時にターミナルの背景(というかテーマ)を変更する

既存の ssh コマンドを自分で用意したシェルで上書きすることで実現できる。 既存の ssh は以下になっていると思う。 $ which ssh /usr/bin/ssh 次にシェルを用意する。 場所はどこでもいいけど、~/bin を作って、そこに配置するのがよさそう。 ssh を シェ…

DockerHub の AUTOMATED BUILD で Build process failed: The command 'xxx' returned a non-zero code: 1 のエラー

DockerHub の AUTOMATED BUILD でPHP用のイメージだけ以下のエラーが出る。 Build process failed: The command 'xxx' returned a non-zero code: 1ログを見ると、なんか失敗してる。 error: unpacking of archive failed on file /usr/sbin/suexec: cpio: c…

MongoDBの mongo コマンドで Error: network error while attempting to run command 'isMaster' on host '127.0.0.1:27017' のエラー

MongoDB に mongo コマンドで接続しようとしたらエラーが出た。 Error: network error while attempting to run command 'isMaster' on host '127.0.0.1:27017'/etc/mongod.conf で外部接続を許可していないだけでした・・・。 以下のように bindIp をコメン…

Docker + MongoDB で directory /data/db not found のエラー

Docker で MongoDB を動かそうと思った。公式のDockerfileを利用してもいいけど、 細かい設定が必要になると自前で用意した方がよかったりする。とりあえず、インストール方法は公式ドキュメントを確認した。 https://docs.mongodb.org/manual/tutorial/inst…

Nginx の nginx.conf が反映されない

ログのフォーマットを LTSV にして systemctl restart nginx しても反映されなかった。 log_format ltsv 'remote_addr:$remote_addr\t' 'remote_user:$remote_user\t' 'time_local:$time_local\t' 'request:$request\t' 'status:$status\t' 'body_bytes_sent…

【Docker】コンテナの全削除

https://techoverflow.net/blog/2013/10/22/docker-remove-all-images-and-containers/ ↑ ちまちま消すの面倒だから・・・。 無理矢理感あるけどw

Restful Web サービス

初版が2007年ということもあり、 そんなに目新しいことは書いていない印象・・・。 RESTって概念は2007年にはあったのか・・・。

Amon2で REST APIのJSON出力

amon2にはプラグインとして、 JSON.pm というJSON出力用のプラグインがある。 http://search.cpan.org/dist/Amon2/lib/Amon2/Plugin/Web/JSON.pmこのプラグインを利用すればJSONは出力できるんだけど、 HTTPのステータスコードを変更できない。ということで…

Amon2 の Large Flavor をインストールする。

ハマったのでメモ・・・・。cpanm が必要なので、cpanm をインストールしておく必要がある。 インストールし終わったらamonをインストールする。 # cpanm Amon2 プロジェクト内のモジュールの依存関係を解決する carton もインストールする。 # cpanm Carton…

ERROR: Unable to scan for SQL migrations in location: classpath:/xxx/xxxx

flyway で locations オプションを付けたら以下のエラーが出た。 ERROR: Unable to scan for SQL migrations in location: classpath:/xxx/xxxxパスの指定方法が問題だった。 以下のように filesystem: を付けないとダメ。 -locations=filesystem:/vagrant/d…

eclipse が ChooseWorkspaceData.writePersistedData(ChooseWorkspaceData.java:226) で落ちる

eclipse で workspace を切り替えたら、 「an error has occurred」のアラートが出た。で、ログを見ろってメッセージだったので、 確認してみると以下のエラーが出ていた。 !MESSAGE Application error !STACK 1 java.lang.ArrayIndexOutOfBoundsException: …

既存のPHPプロジェクトをEclipseにインポートする

PHP

http://ht6030.com/archives/417 ↑ これで解決しました。 助かりました。

CQRSについて

これに実装例が載っている。 http://www.codeproject.com/Articles/991648/CQRS-A-Cross-Examination-Of-How-It-WorksCQRS自体は知っていたけど、 具体的な実装例を見たことがなかったので、 参考になった。read/writeでストレージ分けるというコンセプトは…

IODAアーキテクチャ

ザックリとした説明はこれを読めばいい。 http://www.infoq.com/jp/news/2015/06/ioda-architecture詳細はこれ。 http://geekswithblogs.net/theArchitectsNapkin/archive/2015/04/29/the-ioda-architecture.aspx実装例はこれ。 http://geekswithblogs.net/t…

Web API The Good Parts

ちゃんとAPIを学んだことがなかったので、 読んでみました。すごい勉強になりました。 ただJSONを返すだけじゃないんだなと。笑 APIをちゃんと作ろうとすると、大変そうです・・・。API設計する前にもう一度復習しようと思います。

ゲームプログラマのためのコーディング技術

読みました。「ゲームプログラマのための」と書いてあるが、 書籍の題材としてゲームを取り上げているだけで 読者がゲームプログラマである必要はない。内容は初級者向けだが、 変数、関数、クラス設計について 実践的な実装パターンが載っている。この本、…

DDDの仕様パターン

DDD

エリック・エヴァンスのDDD本では「仕様パターン」という実装パターンが説明されている。仕様上のバリデーションはエンティティや値オブジェクトに実装してはいけない。 複雑な仕様による複雑なバリデーションロジックは クラスの肥大化を招いてしまう。 cla…

オブジェクト指向のこころ(2回目)

前に1度読んだけど、あまり印象に残ってなくて再度読んでみた。なぜ印象に残っていなかったのかが不思議なくらい良書だった。 「流動要素をカプセル化」「継承より集約」という原則から デザインパターンを説明するところや メトリクス分析など 当たり前では…

PHPカンファレンス2015 「モデルを設計せよ!―ドメイン駆動設計を超えて」

PHPカンファレンス2015に行って、「PHPメンターズセミナー」のセミナーに参加した。セミナーのテーマは「モデルを設計せよ!―ドメイン駆動設計を超えて」というもので、 10:50 ~ 15:30 までやっているので、他の発表は全然聞けなかった・・・。 聞きたい発表…

DDDのコンテキストはDDDに関わらず、全ての開発に使えるのでは?

DDD

DDDの重要な概念の1つに「コンテキスト」がある。 これはDDDに関わらず、複雑なアプリケーション開発に利用できるのでは?個人的にコンテキストを利用することで「クラスの責務」をシチュエーションごとに定義しやすくなるというのが 面白い点だった。一般的…

サーバサイドNodeの使い道2

サーバサイドのアプリケーションエンジニアとして Nodeの使い道を知るためにNodeのアプリケーションをDDDで作ってみました。 https://github.com/pospome/NodeRealTimeApp初めてのNode&DDDなので完成度は低く、 自分が未熟なせいで初期の設計方針がDDDとは異…

DDDにおけるDBアクセス回数とドメインモデル表現のトレードオフについて

DDD

DDDでは「適切なドメインモデリング」が重要になってくる。このモデリングには明確な答えがなかったりするので、 自分が(チームが)適切だと思ったモデリングで進めていくと思うんだけど、 DBアクセスを伴う仕様では上手く表現できないケースが有る。具体的…

DDDにおけるアプリケーション、ドメイン、インフラの変数名について

大したことじゃないんだけど、 コードを書いてて 「レイヤによって変数名の命名ルームを変えるべきでは?」 と思いました。アプリケーションレイヤ、ドメインレイヤは ユビキタス言語に近い形で命名するのがいいと思う。ユーザーID であれば userId ルームID …

MariaDBの case when の条件判定式で unsigned int のカラムに対して負数になるような判定式を書いたらエラーになる

unsigned int のカラムに対して 減算処理をするときに結果が負数になってしまうとエラーになる。以下の様な感じ。 MariaDB [un]> select * from tb; +------+ | hp | +------+ | 100 | +------+ MariaDB [un]> update tb set hp = hp - 1000; ERROR 1690 (22…

DDDにおいてリポジトリとDBのトランザクションは切り離せないのか?

DDD

DDDではリポジトリに対してDIPを利用し、インターフェースと実装を切り離す傾向にある。これはいわゆる「抽象に依存せよ」ってやつなので、 DDDというよりは既存のプログラミングテクニックになる。で、これを実現するためにリポジトリを以下のようにインタ…

Eclipse で Java プロジェクトがインポートできない

ちょっとしたJavaプロジェクトをインポートしようと思った。 といっても、Eclipseのプロジェクトではないので、 「ファイルインポート」っていう感じなのかな?で、ハマったのでメモ。まずはEclipseでJavaプロジェクトを新規で作る。 ここでインポートはでき…

ansible で ERROR: The file local is marked as executable, but failed to execute correctly. If this is not supposed to be an executable script, correct this with `chmod -x local`.

ansible-playbook で以下のエラーが出た。ERROR: The file local is marked as executable, but failed to execute correctly. If this is not supposed to be an executable script, correct this with `chmod -x local`.hostファイルに実行権限が付いてい…

MySQLの join を利用するときに on と where ではどちらが速いのか

ちょっと気になったので調べてみた。stackoverflow だと以下が引っかかった。 http://stackoverflow.com/questions/5273942/mysql-inner-join-vs-where http://stackoverflow.com/questions/44917/explicit-vs-implicit-sql-joinsどっちでも変わらないらしい…

SQL実践入門

これを読んでいたので、 ソースコードリーディングはお休みしていました。実行計画にスポットを当てて説明していたので、 普通に面白かった。

第2回 アルゴリズム勉強

再帰で階乗を書いてみた。 「何で終わるか」と「次は何か」が再帰のコツっぽい。 これはすぐに書けました。

サーバサイドNodeの使い道

Nodeといえば、 socket.ioによるリアルタイム通信が有名ですが、 「それ以外にどう使えるのか?」 「他の言語じゃダメなの?」 という点について個人的な見解をまとめてみました。 サーバサイドNodeの使い道 from pospome

第1回 アルゴリズム勉強

実はアルゴリズムが苦手。 特定の数式やルールに則った処理をコードに落としこむことができない。今まで普段の業務では特に不自由しなかったけど、 それは自分の苦手な分野というか、 苦手なアルゴリズムに当たらなかっただけみたい。唯一、ディレクトリツリ…

node + express4 の router が実行される前に処理をハンドリングする

expressで認証周りを実装していて、 ログイン状態を判断するロジックを全てのrouterに実行させたい。 他のフレームワークだと、before() とか親クラスを用意して、 controllerが実行される前にチェックできるんだけど、 expressではどうするのか?答えは簡単…

bluebird の using の使い方

bluebirdにはusingというAPIがある。 https://github.com/petkaantonov/bluebird/blob/master/API.md#promiseusingpromisedisposer-promise-promisedisposer-promise--function-handler---promiseこれはファイルオープン、DB接続の管理などのリソース管理に…

node + bluebird + typescript で spread, finally を利用したら undefined is not a function

タイトルの通り、bluebird の spread, finally を利用すると、 undefined is not a function が発生してしまった。しかも、特定のケースのみ発生する。原因はTypeScriptの import のミスだった。今回の実装では以下のように bluebird を読み込んでるけど・・…

第5回 コードリーディング

FuelPHPを追った。【リクエストのクラス構造】 リクエスト処理のクラス構造を追って見る。 レスポンスを取得するためのコードは以下。 $response = Request::forge()->execute()->response();Requestクラス ... リクエストを管理するクラスで、HTTPだけでは…

singletonとstaticクラスの違い

ちょっとしたきっかけで考えることになったので自分の考えを書いてみる。まずはsingletonとstaticクラスの実装を書いてみる。 PHPで書いてます。 基本的にPHPだとリクエスト内でしかオブジェクトが1つであることを保証できないから、 微妙な感じはするけど・…