phantomjsのスナップショットを日本語化対応する。
今回はさざなみフォントを導入してみます。
文字化けは日本語フォントが入っていないため起こってしまいます。
ですので、ubuntu自体にフォントをインストールします。
フォント設定ツールのインストール
sudo aptitude install fontconfig
現在のインストールされているフォントを確認する。
fc-list
さざなみフォントのインストール
sudo aptitude -y install ttf-sazanami-gothic ttf-sazanami-mincho
再度確認
fc-list Sazanami Mincho,さざなみ明朝:style=Mincho-Regular,Regular Sazanami Gothic,さざなみゴシック:style=Gothic-Regular,Regular ......
こんな感じで入っていればOK
ubuntuにphantomjsを入れてみる。
ubuntuにphantomjsを入れてみました。
ただCUIでスナップショットを取ってみようとソレだけです。
macでのローカル環境でも良かったのですが、せっかくですのでWEBAPIっぽいやつを作ってみます。
今回は導入編です。
ここに書いていることをやるだけです。
非常に簡単です。
macでしたらhomebrewで一発インストール出来ます。
sudo apt-get install build-essential chrpath git-core libssl-dev libfontconfig1-dev git clone git://github.com/ariya/phantomjs.git cd phantomjs git checkout 1.8 ./build.sh
ビルドが長すぎる・・・
あとは、パスを通します。
ホームディレクトリにgit cloneしたので~/phantomjs/binにパスがなりました。
適当に.baschrcとかにパスを追加します。
PATH=~/phantomjs/bin:$PATH export PATH
あとはちゃんとパスが通っているか確認します。
phantomjs -v 1.8.2
これでOKです。(タブンネ)
あとは日本語化とかの対応をしないと行けないけど、それは後日やってみます。
herokuのxeroundを導入した。すごくハマった・・・
最近herokuにどっぷりです。
昔からmysqlを入れていたので、herokuでmysqlを使いたいと思い「xeround」っていうアドオンを導入してみました。
導入自体は簡単だったのですが、文字化けががが・・・
何やっても直らない、導入自体は以下のURLを参考に
ヵェの部屋♪-BLOG- : herokuのアドオンでmysqlを利用する。もち無料。
で、何が悪いのか全くわからず、色々と挑戦していたらAdapterが「mysql2」ではなく「mysql」になってました。
しかし、それだけで文字化けになるとは・・・しかもなんで、「mysql」なんだよっと思いながら修正をかましてやりました。(元々はmysql2を入れたのですが、うまく動作せずにmysqlにしたら素直に動いたので、「あ、動いているじゃん」と勘違いしてしまいました。)
まず、Gemfileに追記
gem 'mysql2' gem 'activerecord-mysql-adapter' # activerecord-mysql-adapterはちょっといるのかわからないけど、入れろよって言われたのでつけてます。
ここからが面倒くさいです。
まず「heroku config」で設定周りの確認をします。
DATABASE_URL: mysql://******************* XEROUND_DATABASE_ADAPTER: mysql XEROUND_DATABASE_FAILOVER_ADAPTER: mysql XEROUND_DATABASE_FAILOVER_HOST: **********.db.xeround.com. XEROUND_DATABASE_FAILOVER_NAME: ********** XEROUND_DATABASE_FAILOVER_PASSWORD:******** XEROUND_DATABASE_FAILOVER_PORT: 5990 XEROUND_DATABASE_FAILOVER_URL: mysql://****************** XEROUND_DATABASE_FAILOVER_USERNAME: *********** XEROUND_DATABASE_HOST: *************.db.xeround.com. XEROUND_DATABASE_INTERNAL_ADAPTER: mysql XEROUND_DATABASE_INTERNAL_HOST: *********** XEROUND_DATABASE_INTERNAL_NAME: *********** XEROUND_DATABASE_INTERNAL_PASSWORD: *********** XEROUND_DATABASE_INTERNAL_PORT: 5990 XEROUND_DATABASE_INTERNAL_URL: mysql://*********** XEROUND_DATABASE_INTERNAL_USERNAME: *********** XEROUND_DATABASE_NAME: *********** XEROUND_DATABASE_PASSWORD: *********** XEROUND_DATABASE_PORT: 5990 XEROUND_DATABASE_URL: mysql://*********** XEROUND_DATABASE_USERNAME: ***********
上記のmysqlってなっている奴を全て「mysql2」に書き直します。
(全部やる必要があるかどうかは判りませんが、とりあえずやります。)
DATABASE_URL: mysql2://******************* XEROUND_DATABASE_ADAPTER: mysql2 XEROUND_DATABASE_FAILOVER_ADAPTER: mysql2 XEROUND_DATABASE_FAILOVER_HOST: **********.db.xeround.com. XEROUND_DATABASE_FAILOVER_NAME: ********** XEROUND_DATABASE_FAILOVER_PASSWORD:******** XEROUND_DATABASE_FAILOVER_PORT: 5990 XEROUND_DATABASE_FAILOVER_URL: mysql2://****************** XEROUND_DATABASE_FAILOVER_USERNAME: *********** XEROUND_DATABASE_HOST: *************.db.xeround.com. XEROUND_DATABASE_INTERNAL_ADAPTER: mysql2 XEROUND_DATABASE_INTERNAL_HOST: *********** XEROUND_DATABASE_INTERNAL_NAME: *********** XEROUND_DATABASE_INTERNAL_PASSWORD: *********** XEROUND_DATABASE_INTERNAL_PORT: 5990 XEROUND_DATABASE_INTERNAL_URL: mysql2://*********** XEROUND_DATABASE_INTERNAL_USERNAME: *********** XEROUND_DATABASE_NAME: *********** XEROUND_DATABASE_PASSWORD: *********** XEROUND_DATABASE_PORT: 5990 XEROUND_DATABASE_URL: mysql2://*********** XEROUND_DATABASE_USERNAME: ***********
3時間ぐらいハマったよォォォ
参考URL:
mysql - Using Ruby and XEROUND on Heroku - Stack Overflow
webでsqlを整形するツールを作った。
WEBでSQLクエリをインデントするツールで使いやすいやつが無かったので、新しく作ってみました。
SQL indent | WEBでSQL崩し、整形サービス
機能自体はシンプルで、すべてのデータはlocalStorageに保存されます。
最初の画面
結果
設定機能
インデント数と履歴を保存するか指定出来ます。
履歴機能
設定機能で「履歴を保存する」にしたら、ボタンが表示されます。
リンクをクリックすると、SQLの履歴が表示されます。
簡単な説明ですが以上です。
フィードバック等が有りましたら、ご連絡下さい。
macで文字入力が死ぬほど便利過ぎて泣きそう
はい、タイトル通りの内容です。
文字入力時のショートカットが便利過ぎてブログに書きました。
多分調べれば、出てくると思いますが、自分で発見した時の喜びと言ったら、天にも昇る気持ちです。
ということで、発見したショートカットを公開します。
コマンド | 項目 | 内容 |
control + f | 移動 | 右へ |
control + b | 移動 | 左へ |
control + p | 移動 | 上へ |
control + n | 移動 | 下へ |
control + a | 移動 | 行の先頭へ |
control + e | 移動 | 行の最後尾へ |
control + v | 移動 | テキストの最後へ |
control + d | 編集 | 右のほうを削除 |
control + h | 編集 | 左のほうを削除 |
control + k | 編集 | 一行切り取り(段落は切り取らない) |
control + y | 編集 | control + kした文字をペーストできる |
control + o | 編集 | 改行を入れる |
他にもありますが、これだけ覚えておけば良い感じです。
実はこれだけではありません・・・
変換中にもショートカットキーが使えます。
コマンド | 項目 | 内容 |
control + j | 変換 | ひらがなに変換 |
control + k | 変換 | カタカナに変換 |
control + l | 変換 | 全角英字に変換 |
control + ; | 変換 | 半角英字に変換 |
/(^o^)\ナンテコッタイ
もう便利過ぎますね。
cakephpやRailsのMVCデザインパターンに関して
私は開発する際に、cakephpなどのフレームワークを必ずと言っていいほど使用しています。便利だし、クラスなどの役割が明確になるので、誰が触っても似たような感じになります。
フレームワークを使わない場合でも、いつもいつもMVCで開発するべきだと、会社の後輩にも口を酸っぱくしていっているが・・・私の考えているMVCは実はMVC2と呼ばれているものでした。
私の無知さを教えてくたのが、以下の記事である。
PHPerのMVCの一体どこが間違っていたのか - MugeSoの日記
この記事を読んだ時に、理解が出来ませんでした。
何故ModelからViewを参照しているか?CakephpにModelを監視するクラスやメソッドが無いし、そもそもModelクラス自体呼び出す事が出来ません。(例外はあるけど、標準ではない)
全然納得が出来ませんでした。
でも、このままでは間違った認識で、後輩たちに情報を発信してしまうと思い、独自ではあるが調べてみました。
まず、MVCとはデザインパターンの一種で(Wikiではソフトウェアアーキテクチャとなっている)
機能ごとの分離が明確になることによって、それぞれの独立性が確保されます。開発においては分業がしやすくなり、デザインとプログラムの並行作業が容易になります。また機能がわかれているので、テストケースなども書きやすくなります。というところでしょうか・・・他にもあるかもしれませんが。
Model | モデルは、システムの中でビジネスロジックを担当する、いわばシステムの本体部分にあたります。 |
View | 表示、入出力といった部分を担当します。 |
Controller | ViewとModelを制御します。自分自身では表示を行ったり、ロジックの実行は行わず、Viewからの入力に応じて、必要なロジックの実行をModelに依頼し、その結果表示をViewに依頼します。 |
参考:Java Solution FAQ:MVCモデルという言葉をよく聞きますが何のことですか?
ここでも私の認識と違っていました。
Modelとはデータベースのデータを引っ張ってくる所、だけではなくビジネスロジックなども担当する部分です。例えば、データを取得するだけではなく、データの加工や変わらない処理(アプリケーション固有の処理やルールを記述)などは全てModelに書くべきだと思います。
Modelに処理を書くことでControllerの肥大化も防げます。またテストケースなども書きやすくなります。
ここで一番以外だったのが、ViewからModelを参照していいとのこと。
はい、えせMVC使いの私としては驚愕の事実ですね。
でも、実際に参照って何するのか全く分かりません。ここで一番ハマりました。
Observerパターンがそれに当たると思いますが、WEBの特性上毎回HTTPリクエストを経由する必要があり、Observerパターンなんて使えるわけがありません。
ですので、CakephpにしろRailsにしろView→Modelという流れが全くなくなっています。
(webSocketなどで似たような処理をできるかもしれませんが・・・)
参考:MVC と MVC2 について改めて考えてみる - スタジオ・アルカナ技術ブログ
以下の記事もえせMVCをdisってます。
参考:やはりお前らのMVCは間違っている
参考:Life is beautiful: Ruby on Railsの「えせMVC」の弊害
参考:「えせMVC論争」についてこそこそと一言言っておくか - uehaj's blog
では、何なの?という話ですが、MVCではなく、MVC2という定義をしています。
MVC2とはObserverパターンが欠損したMVCになります。
ですので、これからCakephpやRails使いの方が気をつけることは・・・
といったところでしょうか
cakephpやrailsはMVCとか言ってしまうと小馬鹿にされちゃいますんで、「MVC2だよねぇ」とかで濁しておけばOKだと思います。
その他参考:CakePHPを使ったMVC設計のベストプラクティス - Sooey
その他参考:Web アプリの MVC 設計まとめ - もやし日記