PHP用ORM Emonkak\Ormの概要

背景 データベースを利用したWebアプリケーションをインフラストラクチャ(技術的機能)の観点から単純化すると、クライアントのリクエストを入力に、データベースに格納されたデータをCRUD(Create/Read/Update/Delete)して、その結果をレスポンスとして出力す…

エンティティのライフサイクルに基いた実装

エンティティとはその属性によってではなく識別子によって識別されるオブジェクトである。 属性が違っていても識別子が同一であればそのエンティティは同一のものと見なされる。 そのためエンティティは多くの場合、変更可能(Mutable)なオブジェクトとして表…

集約の実装とLazy Loading

エンティティの設計においてオブジェクト同士の関連(参照)は避けては通れないものだ。 エンティティ単体では不十分で、関連するエンティティ同士が結び付いて始めて意味を成す場面は往々にしてある。 そのような場合、エンティティを他のエンティティの参照…

LINQ to ObjectのメソッドをJavaScriptの個別のモジュールとして使うためのライブラリ

LINQ to ObjectのメソッドをJavaScriptの個別のモジュールとして使うことのできるライブラリを作った。 これは元々Feedponで利用するために作ったのもので、現在はライブラリ単体として切り出している。 @emonkak/enumerable なお、今回特に解説しないが本ラ…

LDRに代わる新しいRSSリーダーFeedponを開発した

はじめに LDRが終了するということで、FeedlyをバックエンドにしたWebブラウザ上で動作する新しいRSSリーダーFeedponを開発した。 現在の所FirefoxのアドオンとChromeの拡張として配布している。 他にモバイル版として、CordovaでパッケージングしたAndroid…

旅部まとめ

ライフログチャンネルと旅部チャンネルにおける旅部の放送まとめ。 # Date URL Place Cast 1 2014/01/26 http://live.nicovideo.jp/watch/lv170879155 ドライブ 横山緑、力也、14 2 2014/02/28 http://live.nicovideo.jp/watch/lv170879155 名古屋 横山緑、…

Kensington Expert Mouse 5 USBをX11で使う方法

トラックボールの名機と呼ばれるKensington Expert Mouse 5(EM5)をX11で使おうとしたが問題が発生した。 まず、EM5には4つのボタンがあり、それぞれのボタンはデフォルトでは以下のように割り当てられている: .---------. .---------. | Middle | | Back | …

初めてのスポーツ自転車の選び方

本稿では初めてスポーツバイク(自転車)を購入する方を対象に、自転車の選び方について述べます。 なるべく網羅的な情報を載せるように心掛けましたが、それらを自転車選び判断材料として活用頂ければ幸いです。 なお、レース目的での利用は想定しておらず、…

ただの声優オタクが選ぶ2017年注目の女性声優8人

先日人気声優が選ぶ「声優総選挙」ベスト200という番組が放送されていたみたいです。 自分は見ていないのですが、便乗して2017年注目の女性声優8人を勝手に選びます。 選考基準としては「今」人気の人よりも、「これから」より人気になるであろう人を選んで…

rxvt-unicodeのフォントレンダリングを改善する

問題 最近はNoto Fontという高品質な日本語フォントが無料で手に入るいい時代になりました。 しかし、rxvt-unicodeでこのフォントを指定すると、とても残念な表示になってしまいます。 フォントの設定は以下のものです: Rxvt.font: \ xft:Consolas:pixelsiz…

PSR-7とPSR-15を使ったWebアプリケーション開発

php

はじめに PSR-7(HTTP Message)が承認されてからしばらく経ちますが、現在はこれを使った様々なライブラリ・フレームワークが登場しています。 これによって特定のライブラリ・フレームワークにロックインされずに、Webアプリケーションを実装できる道程が見…

株式会社インフィニットループを退職しました

2011年10月から約五年間務めていました株式会社インフィニットループを退職しました。 今の会社を離れて新しいことをやりたくなったというのがその理由です。 別の言い方をするのであれば、会社から与えられる仕事について不満があったというのが正直な所で…

時間計算における丸め

本稿では時間計算についての丸め操作を考える。 最初に丸めの定義は以下とする。 丸め(まるめ)とは、与えられた数値を、ある一定の丸め幅の整数倍の数値に置き換えることである。 https://ja.wikipedia.org/wiki/%E7%AB%AF%E6%95%B0%E5%87%A6%E7%90%86 丸…

型レベル数値リテラルを使って型レベルFizzBuzz

型レベルFizzBuzz(及び、type familyにおけるガードの書き方) - claustrophobiaを見て自分も型レベルFizzBuzz書いてみました。 GHC 7.8以降で動作します。 Natを受け取るとFBkindを持つ型を返すFizzBuzz型族と、FBに対するsingletonになるSFB型を定義して…

TypeScript 0.95でコンパイルできないジェネリックメソッドのコード

0.91ではコンパイルできた以下のコードが0.95ではコンパイルできなくなっている。バグ? interface IFoo { f<T>(): T; } class Foo implements IFoo { f<T>(): T { return null; } } エラーメッセージ: /Users/emon/Desktop/test.ts(5,7): error TS2137: Class Fo</t></t>…

PDOにInterface欲しい

PHPの色々なフレームワークでDatabase Driverのラッパーが量産されているのが不毛に思った。 ここに共通化されたインターフェイスがあればフレームワークの違いを気にせず色々できるのになと。 そこで、PSR-3のLoggerのように標準化できないのかなと思って調…

VimScriptでIteratorを作ってメソッドチェインで処理する

業務でPHPを使っていてarray系の関数の酷さに耐えかねて作ってしまったUnderbar.phpですが、 VimScriptでもIteratorを作ってメソッドチェインで処理したくなってきますね! ということで書きました。特に実用性はありません。

Opera 15のショートカットキーカスタマイズ

/Applications/Opera.app/Contents/Versions/15.0.1147.132/Opera Framework.framework/Resources/opera.pakにデフォルト設定のJSONが入っていたので、これを参考にProfileディレクトリのPreferencesを書き換えれば色々できそう。 nストロークキーをマッピン…

PHPでフィボナッチ数列を出力するソースコードを出力するプログラム

Quineみたいなものだけど、自身のソースコードを次々に書き換えて それを新たに起動したPHPプロセスに標準入力として与えている。 fib.php

あなたが学ぶべき10のプログラミング言語

Haskell 純粋関数型言語は当然学ばなければなりません。 副作用の分離とモナドによる抽象化は本当のプログラマーなら知っておくべきでしょう。 遅延評価のメリット・デメリットとそれを活かしたアルゴリズムも重要です。 Scala オブジェクト指向と関数型の機…

Ivy Bridgeで作るフェニックス3号

pc

4/29にIvy Bridgeが出るのでその構成のメモ。 CPU: Intel Core i7 3770S CPU Fan: Thermaltake Contac 30+ M/B: MSI Z77A-GD55 Memory: Corsair CMX16GX3M2A1600C11 (8GBx2) PSU: Corsair CP-9020006-JP (650W) HDD: Western Digital WD25EZRX (2.5TB) ODD: …

SKK用の2ch顔文字辞書を作る

2chの一行AAの顔文字辞書は、MatsuConにいいのがあるけど、SKK用がない。なのでHaskellで変換ツールを書いた。 Google日本語入力用の辞書(UTF-8なので)をソースにして、以下のように使える。 最後にskkdic-expr2をしてるのは、文字コードをEUC-JPに変換して…

Linux(X11)でKensingtonのExpert Mouse 7を使う

KensingtonのExpert Mouse 7(EM7)には4つボタンがあり、以下のようにレイアウトされています。 .----------. .---------. | 2:Middle | | 8:Back | `----------' `---------' .----------. .---------. | 1:Left | | 3:Right | `----------' `---------'EM7…

鳥Haskellerコンテスト

副作用が無いと俺はプログラミングも出来ないのかよ もう半分くらい正格評価をしている、速くなるのかこれで 悪いね、純粋関数型言語で 参照透明性だけは一流のところをみせてやるぜ 遅延評価だぜ、信じらんねぇ 型は推論した、でもこれじゃだめなんだろ Has…

rxvt-unicodeで半角カナが豆腐になる件

rxvt-unicodeでjisx0201なフォントを設定して半角カナを表示をすると、文字化けして豆腐になってしまう。 原因はsrc/table/jis0201_1976_0.hで定義されているunicodeをjisx0201にマップする処理がおかしいから。 これは以下のパッチで修正される。 --- a/src…

tmuxでborderがまともに表示できない件

tmuxでTERMをscreenにして使うと、ncursesなどで使われるborderが"qqqqqqqq"の様になってしまう。 これは環境変数NCURSES_NO_UTF8_ACSを0に設定すると直る。 NCURSES_NO_UTF8_ACSの詳細はncursesのmanを参照。tmuxで環境変数を設定するには以下のように書く…