Docker mysql container with dynamic database creation
jwilder/nginx-proxy
では,コンテナの環境変数に応じて動的にReverse Proxyの設定をしてくれます.
同じかんじに,コンテナの環境変数に応じて動的にデータベースの作成や,ユーザの作成を行ってくれるコンテナを作ってみました.
使い方
コンテナを起動します.
$ docker run -d -v /var/run/docker.sock:/var/run/docker.sock -e MYSQL_ROOT_PASSWORD="password" nanofi/mysql
MYSQL_ROOT_PASSWORD
はrootのパスワードを設定します.
このコンテナは,環境変数DB_NAME
を設定したコンテナがあるとき,もしくは立ち上がった時に自動的にその名前のデータベースを作ります.
また,DB_USER
とDB_PASS
も設定されていた場合は,作成したデータベースに対する全権限をもったユーザを指定されたユーザ名とパスワードで作成します.
Controller test helpers for `rails_warden`
Devise::TestHelpersを参考にrails_warden
用のcontroller test helperを作ってみました.
Rails4 / turbolinksのローディングをnprogressで簡単に
最近趣味的にRails4も色々触ってみているんですが,turbolinksは面白い反面,制御が難しいです. turbolinksの解説は,ぐぐるとたくさん出るので,そっちを参照しましょう. 簡単に言うと,pushStateの機能を使ってJavaScript経由でリンクを取得することで,jsやcssやメタデータの読み込みを省いて高速化させるための機能です. ページの読み込みをAjaxを使って行うので,色々できることがあるのですが,今回はYoutubeのようにページ遷移に読み込み中を表すプログレスバーを表示させる方法を紹介します. この機能を実装するために,NProgress.jsというライブラリを使います.
上のリンクから,デモが見れます. 画面上部全体にプログレスバーが表示されているのがわかると思います. このプログレスバーの実装が,nprogress-railsというgemを使うと簡単にできます.
- [Gem] https://rubygems.org/gems/nprogress-rails
- [Github] https://github.com/caarlos0/nprogress-rails
環境
- Rails4 (turbolinks: on)
使い方
Githubそのまんまですが,使い方は以下のようになります.
Gemfileに以下の内容を記述します.
gem 'nprogress-rails'
そして,bundle install
まず,Javascriptの読み込みの設定を行います.application.js.coffee
に次の内容を記述します.(もちろん,application.js
でも大丈夫です.その場合は,#=
ではなく//=
)
#= 'nprogress' #= 'nprogress-turbolinks'
turbolinks以外にも,pjaxや直接使う方法もあるみたいです.
次に,cssの読み込みの設定を行います.application.css.scss
に次の内容を記述します.(こちらも,application.css
で大丈夫です.)
*= require nprogress *= require nprogress-rails
これだけです.これで,ページ遷移時に画面上部にプログレスバーが表示されていると思います.
PythonのPickleで関数を扱う?方法
久しぶりの投稿です.かなりほっぽっていましたが, なんとなく思い出したので書いてみようと思います.
最近は研究のコードをPythonで書くことが多いので,pythonの話題です.
Pickle for function object
今日の話題ですが,pythonのシリアライズ機構であるpickleついてです.pythonのpickleはオブジェクトをシリアライズしファイルなどに保存できる形に変換できます.ただ,すべてのオブジェクトに対応しているわけではなく,関数オブジェクトなどはシリアライズできません.
今回は,関数オブジェクトをシリアライズできる?ようにしてみました.一応動きますが,ちゃんとしているのかは保証できません.
とりあえず,コードをあげときます.気が向けば,解説書きます.
Code
コードをGistにアップロードしておきました.
Direct2D effectsを使うときにはっまたとこ "Windows8 Programming"
軽くメモ程度に。
Windows8からDirect2Dに新しくDirect2D effectsが導入されました。詳しくはここ。
http://msdn.microsoft.com/en-us/library/windows/desktop/hh802478.aspx
これを使うときに少しはまったとこがあったのでメモしときます。
Direct2D effectsでは、DeviceContextからEffectのオブジェクトを作成します。コードにするとこんな感じです
ComPtr<ID2D1DeviceContext> context; // Initialize context ComPtr<ID2D1Effect> shadow; context->CreateEffect(CLSID_D2D1Shadow, &shadow); // but error
上記のコードのCreateEffectの部分で"error LNK2001: 外部シンボル "_CLSID_D2D1Shadow" は未解決です。"のようなエラーが発生する時があります。これは、GUIDを使うためのヘッダファイルがインクルードされていないだけらしく、このコードより前のどこかで
#include <initguid.h>
とすると解決します。
DataTemplateSelectorを見る "Windows8 Programming"
どうも。最近は、Windows8のModern Styleのアプリを書いていたりしてます。WPFとかXAMLとかは既に触ったことがあったので、いろいろと試していたのですが、いろんなAPIが消えていたり動かなかったりで四苦八苦してます。
今日は、最近試してみたDataTemplateSelectorについて書きたいと思います。何をしたかったかというと、クラスに応じてDataTemplateを切り替えたかったのですが、DataTemplate.DataTypeはなかったのでDataTemplateSelectorを使うことにしました。
DataTemplateSelector classはこちら。
http://msdn.microsoft.com/en-us/library/windows/apps/windows.ui.xaml.controls.datatemplateselector
protected virtual DataTemplate SelectTemplateCore(
object item,
DependencyObject container
)
SelectTemplateCoreメソッドを実装していく感じです。はじめは、containerからリソースを検索しようとしたのですが、FindResourceメソッドはないし、自分で実装しようとしてもcontainer.Parentがnullなので探索もできなかったのです。
そこで、作成するDataTemplateSelectorの子クラスのContentをResourceDictionaryにして、そこのリソースを取得することにしました。
ということで、できたのがClassNameDataTemplateSelectorです。Gistにソースあげときます。
https://gist.github.com/3759888
続・Rubyでlibmecab.dllを本当に呼び出してみる
昨日書いた,windows環境でrubyでmecabを呼び出す方法なんですが,sparse_tonodeを何回も呼び出すとメモリ食うし,destroyよびだしても変わらないので,メモリリークしているのではないかといろいろ試行錯誤しています.
dl/import#structのnewを呼び出すのが悪いんじゃないかと,String.unpackをつかったラッパーに変えてみたのですが,変わらずめもりが・・・.
とりあえず,Gistのほうはunpackを使ったバージョンに変えてみました.
https://gist.github.com/2927253
なんかわかったら報告したいと思います.