hamadata's diary

エンジニアのブログ

Nokogiriのせいでvagrant-awsやらvagrant-digitaloceanやらvagrant-parallelsがインストールできない件

[環境]

use system libraryとかなんとかってログを吐くので、こう対応すれば良いようです。

NOKOGIRI_USE_SYSTEM_LIBRARIES=1 vagrant plugin install vagrant-windows

[引用元] http://stackoverflow.com/questions/23621717/vagrant-plugin-and-nokogiri-install-issue

Dateの引数に配列を入れる話(Javascript)

JavscriptでDateオブジェクトを生成する場合、引数のmonthに入る値は0-11の範囲になる(たとえば、2014年1月1日だと new Date(2014, 0, 1) になる。) new Date(2014, 1-1, 1) みたいに他の言語で生成した値から1引くのが面倒。 Chrome, Firefoxみたく動いてくれればうれしいが、Safariじゃ動きまへん。

Chrome

> Date([2014,1,1])
< Wed Jan 01 2014 00:00:00 GMT+0900 (JST)

Firefox

> new Date([2014,1,1])
< Date 2013-12-31T15:00:00.000Z

Safari

> new Date([2014, 1, 1])
< Invalid Date

あーあ。

knife-solo 日本語抄訳(http://matschaffer.github.io/knife-solo/)

原文はhttp://matschaffer.github.io/knife-solo/

解説

knife-soloは、chef-soloと併せて動作させるために、いくつかのコマンドを追加で使います。それによって、chef-serverと同様にパワフルに動作することを狙っています。

knife-soloは、今のところ、knifeに5つのサブコマンドを追加します。

  • knife solo init は、新規にディレクトリ構造(kitchenのこと)を作成するコマンドです。このディレクトリは、Chefの標準的なディレクトリ構造に従っており、新しいレシピを作って保存するのに使います。
  • knife solo prepare は、対象となるホストにChefをインストールするコマンドです。このコマンドは、ホストのOSを自動的に検知し、それに従ってインストールの手続きを変更します。
  • knife solo cook は、kitchen(Chefレポジトリ)を対象ホストにアップロードし、chef-soloを実行するコマンドです。
  • knife solo bootstrap は、前記の2つのコマンドを併せて実行するコマンドです。(prepareしてcook)
  • knife solo clean で対象ホストからアップロードされたkitchenを削除することができます。

"knife solo cook" は、準備段階ながら、Windowsでもサポートされています。(下記参照。)

使い方:

インストールは、通常のgemのインストールと同様です。

gem install knife-solo

gitからインストールする場合は、

bundle && bundle exec rake install

Init command(初期化コマンド)

initコマンドは、kitchenの構造を保存するディレクトリの名称を引数にとります。今いるディレクトリを初期化したい場合は、"."をつかってください。

knife solo init mychefrepo

今のところ、ディレクトリ構造は下記のようになります。ただし、開発が続けば変更されるかもしれません。

mychefrepo/
├── cookbooks
├── data_bags
├── nodes
├── roles
├── site-cookbooks
└── solo.rb

Prepare command(準備コマンド)

準備コマンドは、ssh形式でホストの引数を下記のようにとります。

knife solo prepare ubuntu@10.0.0.201

このコマンドは、sshの情報を、標準では~/.ssh/configから、-Fをつけたばあいは指定されたファイルから読み込みます。ポートの情報(-p)、ID情報(-i)、パスワード(-P)をとることもできます。いくつかのコマンドの実行時にはsudoを使用するため、コマンドラインでパスワードが与えられていない場合は、コマンドプロンプトでパスワードが要求されます。

このコマンドは、対象のOSでChef Soloがインストールされるように最大限がんばります。可能であれば、どこであっても、Opscode Installerを使用します。

特定の振る舞いを実行させたい場合は、knife bootstrapを空のrunlistと一緒に実行させましょう。

knife bootstrap --template-file bootstrap.centos.erb -u root 172.16.144.132 echo '{"run_list":[]}' > nodes 172.16.144.132.json

このgistにあるように、Bootstrapのテンプレートは非常にシンプルです。

あなたが変更した内容が一般的に有用なものであった場合、pull requestをこのプロジェクトもしくはomnibusインストーラに送ることを考えてみてください。

Cook command(Cookコマンド)

Cookコマンドは、ssh形式のホスト情報を引数にとります。

knife solo cook ubuntu@10.0.0.201\

Cookコマンドは、今あるkitchenをサーバにアップロードし、chef-soloをそのサーバで実行します。もし一個しか引数を指定しなかった場合、コマンドはnodes/<hostname>.jsonにあるnodeの設定を探します。node設定を指定したい場合、2つめの引数にファイルのパスを指定することができます。

このコマンドでは、data_bagsフォルダから読み取り専用でdata_bagsを使うことを許可するパッチを加えて、cookbookをすべてアップロードします。

このコマンドは、暗号化されたdata bagもサポートします。使用するためには、kitchenのルートにあるdata_bag_key(もし移動させた場合は、solo.rbに新しいパスが反映されているか確認してください。)にkeyを置いてください。

暗号化されたdata bagを作成するknifeコマンドは、Chef serverを使用しない場合はうまく動きません。ローカルのファイルシステムで暗号化されたdata bagを作成するための例としてこのgistを参考にしてください。

Bootstrap command(Bootstrapコマンド)

Bootstrapコマンドは、prepare、cookコマンドのほとんどのオプションと同様の引数をとります。

knife solo bootstrap ubuntu@10.0.0.201

Boostrapコマンドは内部で、指定された引数とオプションで、最初に knife solo prepareを実行し、次にknife solo cookを実行します。

Clean Command(Cleanコマンド)

Cleanコマンドは、prepare、cookと同様の引数をとります。

knife solo clean ubuntu@10.0.0.201

Cleanコマンドは、対象のホストから、アップロードされたkitchenを完全に削除します。こうすることで、そのホストにパスワード等々が残されることがなくなるため、セキュリティが向上します。

Windows support(Windowsサポート)

Cookコマンドは、下記のHowtoに従えばWindowsでも動きます。

Init then tweak(初期化して弄る)

  • knife solo initを実行した後、solo.rbを、Windows形式のパス命名に従って編集してください。(https://gist.github.com/1773854を参考にしてください)

    Prepare the node manually(手動でnodeを準備する)

  • SSH serverをインストールする(例:WinSSHd)
  • ホストでrsyncをインストールする(https://github.com/thbar/rsync-windows)
  • ユーザのPATHにrsyncを加える
  • http://www.opscode.com/chef/install.msiをインストールする
  • nodes/hostname.jsonを作成し、中に{ "run_list": [] }を書き加える

    Cook

    cygwinrsyncを使用した場合、cookコマンドは期待した通りに自動的に動作します。

DEVELOPMENT(開発)

未完

ヤマダの無料長期保証を使って洗濯機を修理してもらった。

 

寮から追い出されたときに買った洗濯機が3年目で壊れた。

ヤマダ電機の5年無料長期保証というのに入っていたので、無料で修理に来てもらえる。のちのためにここに流れを書き残しておく。

 

ヤマダ電機のコールセンターに電話。

名前と電話番号さえ言えば、特に保証書等は必要なし。というわけで、無料長期保証に入ってるという記憶さえあれば、保証書やレシートの類いを持ってなくてもあきらめるのは早い。メーカーと型番は聞かれるのでどこかにメモっておいた方がいい(保証書持ってれば書いてるけど。)

 

パナソニックのサポートから電話がかかってくる。

市外局番が045だったので、各地にサポートセンターがあるのだろう。とりあえず早くと言ったら次の日に来てもらえることになる。とりあえず午後と回答しておいた。

 

当日、電話

当日サポートから電話がかかってきて、11:00~13:00の間に到着すると言われる。午後って言ってたはずなんだが。。とりあえず、ちょっとその時間は無理ですと回答しておく。

13:00前に家にダッシュで戻ると、修理専門のエンジニアの人が待機していて、その場で修理開始。さすがにプロだけあって、てきぱき分解して壊れている部品を交換。だいたい症状から壊れてる部分の検討はついていたようだ。結局かかった時間は30分ぐらい。さすがです。書面に印鑑を押して修理完了。

 

結局必要な保証は何か。

個人的に、洗濯機や冷蔵庫の類いは高々5年で壊れて有償修理というのはキツいので、たとえば他のヨドバシとかビックとかで商品価格の5%をとられる長期保証もまあ妥当かなと思う。人間払った金のことは忘れるしね。

ネットの情報を見ると、出張修理は小一万かかるようなので、(その道の専門の人を何時間か拘束することを考えるとむしろ安いと思う)たとえば8万円の洗濯機に4000円払わせて5年以内の故障率が10%と考えると電器屋さんずいぶんもうかってますね。まあいいや。

テレビやパソコンもなにがしかの延長保証はあるようだが、こういうデジタル家電の類いは、3年もしたら高性能な後継機種がもっと安く出てるに決まってるので、何千円も払ってわざわざ古いものを維持する必要性は感じない。

 

ヤマダの無料長期保証の改悪について

改悪されていた規定

http://img.yamada-denkiweb.com/contents/pdf/tyouki_muryou120601.pdf

元に戻った?

http://img.yamada-denkiweb.com/contents/pdf/tyouki_muryou121116.pdf

 

一時期問題になっていた、ヤマダの無料長期保証の改悪について。どう考えてもコアの部品と思われる部分が保証の対象から外れているのが訳わからん。ってか、洗濯機が動かなくなった原因がモーターかどうかなんぞ素人にわかる訳ないわな。

2012年の終わりに規定が変わったらしく、いくらか改善されている模様(上記リンク参照。)いかにも消耗品といった感じの部品以外は対象になっているようなので、これならヤマダで買ってもいいかなと思う。

 

その他

洗濯機が動かなくなったときにとりあえずマニュアルダウンロードしようとしたけど、パナソニックのウェブサイトがあまりにもいけてなくてびびった。ウェブで何かしようと言う気がないのは明らか。やはりソニーなんかはディジタルガジェットメインでやってるだけあってまだ良い。

 

追記

このエントリを書いてからはや数年、最近搬入設置の必要な家電でなければオンラインで買うことがほとんどになってしまった。送料無料のヨドバシと、プレミアムの契約しておけば直ぐに届くAmazonでほとんど事足りる。ただ、人気の商品は上記2店舗だと品切れになっていることがわりと多い。そんな時、楽天ユーザなら、Joshin楽天店を見るとわりと品がそろっているのでおすすめ。下記の商品はヨドバシとAmazonで品切れになっていて、Joshinで在庫があった商品の例。






 

MAMPをMountain Lion(10.8)にインストールする時にやったこと。

  • 実行許可を変更。

システム環境設定>セキュリティとプライバシー>ダウンロードしたアプリケーションの実行許可を変更する。
デフォルトでは、Mac App Storeからのアプリケーションのみを許可になっているため、インストールできない。

  • my.cnfをコピー

/Applications/MAMP/Library/support-files にある my-**.cnfをrenameしてコピー。
/Applications/MAMP/conf/my.cnf

[mysqld]
character-set-server=utf8
skip-character-set-client-handshake

[mysql]
character-set-server=utf8
  • vhostsを設定。

複数のアプリケーションを同時に開発したい場合は、vhostsを設定する。
/Applications/MAMP/conf/apache/extra/httpd-vhosts.conf

ひさびさに本を読んだ。 完全なる証明

完全なる証明―100万ドルを拒否した天才数学者 (文春文庫)
マーシャ ガッセン
文藝春秋 (2012-04-10)
売り上げランキング: 18802


ポアンカレ予想を証明し、フィールズ賞その他数々受賞を拒否したロシアの引きこもりニート数学者、グレゴリー=ペレルマンの生い立ち、その時代のソ連の数学事情を書き下したのが本書。

個人的には、そもそも概念自体がさっぱり分からないポアンカレ予想やペレルマン個人の生い立ちよりも、この本でかなりのページ数が割かれている旧ソ連の数学クラブの話の方に興味がいった。ペレルマンが所属したルクシン数学クラブから派遣された数学オリンピックの代表選手たちは、トータル70個以上のメダルを獲得したそうな。彼らはどうやって選別され、どのような教育を受けてその才能を開花させたのか?

本を読む限りでは、まず数学のできる子供がスカウトされ、数学クラブに所属して課外で特別な教育を受けていたそうだ。また、与えられた問題を考えて、先生にその解き方を1対1で説明するというプロセスを設けていたというのも興味深い。最初のスカウトのフェーズは、さほど精度の高いフィルタのようには思われないから、後者の指導方法の方になにがしか意味があったのだろう。

とりあえず、その指導方法について知った限りでは、数学オリンピックの選手をつくり出すには、とてつもない労力とコストがかかるようだ。(時間は区切られているが、一人の子供の指導に一人の指導者がついている超少人数教育が必要。)

ひさびさに本を読んだ。 動的平衡2

本書の筆者は、花粉症のアレルギー反応を抑える抗ヒスタミン薬を例に、人体のある機能に対して作用する「薬」というものの意義について懐疑的な見方を示している。ある機能を阻害する薬を飲めば、その異常な状態を本来あるべき平衡状態に戻すべくさらなる過剰反応を示すのは、動的平衡論からすればごく自然なことなのだろう。
しかし、花粉症はともかくさしあたって厄介な病気に対抗したい私たちは薬以外の何をつかって対処すればよいのだろう。ちょっと病気をすれば、ある症状や機能を改善する薬を飲み、さらにその薬の副作用をおさえるために、さらに別の薬を、と、結局アホみたいな種類の薬を飲む羽目になることを経験できる。が、しかし、それは現時点でそれなりに調子よく生き長らえるための手段として致し方ないものであるとも理解している。本書には、「じゃあどーすりゃいいのよ」という疑問に対する回答は書かれていなかった。

と、人間の健康や寿命といった問題についてちょっと悲観的な視点が見え隠れしなくもないが、ラマルクから始まる進化論と現代の分子生物学の対比など、生物学の歴史を著者独自の視点で解き明かしている部分については興味深い。化学(ばけがく)と生物をばっちり切り離して学んだ高校時代のいかにも無味無臭の教科書の内容に興味が持てなかった人にもおすすめできる内容。