第12回本当は怖くないシェル芸勉強会に参加してきた
2014年08月04日 01時15分
第12回本当は怖くないシェル芸勉強会&第29回本が出たよUSP友の会定例会に参加してきました。
http://usptomo.doorkeeper.jp/events/12763
シェル芸本を買ったは良いけど時間とれずにろくに読めて無く、awkを使ったことがほぼ無い状態でしたがサイン欲しかったというミーハーな理由のみで参戦してみました。
電子書籍の売上は芳しいけど紙の初版を売り切らないと今後のシェル芸本にも悪い影響が出そうなニュアンスをイントロで言っていたので買ってない人は紙媒体もよろしくお願いします。
私は本の冒頭のやり取りだけで十分新しい知見を得られました。
イントロが終わったら急に問題を紹介されて「さ、やってみて」と言われて「えっ、もうやるんすか!?」状態だったけどなんていうかアルゴリズム考えるこの感じ、すっごい久しぶりで学生の時のゲーム作ってる時のような感覚を久々に味わえました。
普段はアルゴリズムというよりはフレームワークに乗っかってひたすら手続き書いてるようなことが多いので頭使う部分がやっぱ全然違うんだということを再認識。
やっぱ何か解決することを考えるのに道が色々あってそれを導きだすのは楽しいです。
ただね、この勉強会は色々なコマンド知ってないと歯が立たないです。
普段からパイプでコマンド3つ以上繋げて無意識にシェル芸している人じゃないと問題に立ち向かえない気がする。
そこでPHPerな私はPHPワンライナーで立ち向かったのです!
というかPHPのワンライナー機能があることをこの会場で調べて初めて知りました。
|
cat filename | php -B '{最初に一回行う処理}' -R '{各行に行う処理}' -E '{最後に一回行う処理}' |
PHPにもBEGINとENDがあるんですよ。
-Rには $argnという変数に各行の内容が入り$argiに行番号が入ります。
これで戦える。
問題と正解例を上田さんのブログで公開されています。
http://blog.ueda.asia/?p=3535
で、ノリで下のTweetしたらまさかのピックアップですよ。
そんでもって上田さんのPCで実行したらphpがインストールされてないからphp-cliをapt-getしろと出てるのを見てphpの場違いさを肌に感じた次第です。
いるのか分からないけど折角だからPHPワンライナーの例です。(可読性の為に改行してますがコマンドは一行です)
続きをみる
Mac OSXでAnsibleでvagrantの仮想PCにつなぐまで
2014年07月21日 02時06分
vagrantで作った仮想マシンにansibleで環境構築しようと思ったら繋ぐところでいきなり躓いた。
|
ansible -i hosts all -m ping 192.168.33.10 | FAILED => to use the 'ssh' connection type with passwords, you must install the sshpass program |
よく読むとパスワード使うんならsshpassがいるよってことらしい。
HomebrewのofficialではないらしいのでGitHubで公開してくれてるものを有り難く使わせてもらう。
|
brew install https://raw.github.com/eugeneoden/homebrew/eca9de1/Library/Formula/sshpass.rb |
後、何気にパラメータのキーワードミスがあったりでハマった。
× ansible_ssh_id → ○ ansible_ssh_user
× ansible_ssh_password → ○ ansible_ssh_pass
ちゃんと公式確認する!(自戒)Ansible inventory-parameters
最終的にhostsファイルはこうなった。
|
[vagrant] 192.168.33.10 ansible_ssh_user=vagrant ansible_ssh_pass=vagrant |
-
Ansible
-
http://www.ansible.com/home
- Ansible Document
- http://docs.ansible.com/
追記
vagrantの鍵指定を~/.ssh/configに追記して鍵方式にすればsshpassの問題は発生しない
自立的に動くために
2014年07月08日 12時23分
転職して一週間、うまく力を発揮できずにいるなと悩んでる真最中だけど
Naoya Itoさんの素敵なスライドの言葉に心救われた。
「人間は十分な情報があれば、本来自立的に動くことができる」
スケールする開発組織の作り方 #jawsug by Naoya Ito
「人間が自立的に動けるようになるには、動ける範囲が把握できなければならない」
KAIZEN platform Inc. の開発マネジメント by Naoya Ito
色々と情報が足りない、コミュニケーションも意識して頑張ろう。
第8弾 週末ランサーズ「Infrastructure as Code」〜ヌーラボ社の事例によるVagrant や serverspec、ansibleツールのご紹介〜 に参加してきた
2014年05月25日 07時05分
無料の勉強会に参加させてもらったものとしての責務を果たすべく、
参加した内容をブログに書き留めます。
今回参加してきたイベント。
第8弾 週末ランサーズ「Infrastructure as Code」〜ヌーラボ社の事例によるVagrant や serverspec、ansibleツールのご紹介〜
http://weekendlancers.doorkeeper.jp/events/11216
勉強会の流れとかまとめようかと思ったけど綺麗なまとめ記事が上がってたので割愛。
自分の気になったところだけ記述。
中村知成氏(ヌーラボ)の興味深かった話
- Infrastructure as Code の先にはDevOpsが見えてくる
-
DevOpsで関わる全ての人が手軽に扱えるチャット系ツールはますます重要になる分野。
ヌーラボさんのTypetalkで他のツールと連携するところを見せてもらったらとても納得。
-
Chefのインストールするパッケージのバージョンに関してはケースバイケース。
ASP系は最新を入れているし、逆に受託系はバージョンを固定した方がよいのではないか
-
Chefは設定ファイルがとても柔軟に書ける => 複雑になりがち。
ansibleはyaml => 複雑なことはできないがシンプルが保てる
-
変更がなくても週1で仮想マシンのイメージは取っている。
こうすると環境系の問題を検知しやすい
ハンズオンで使ったツールや話題に出たツール
-
Vagrant
-
http://www.vagrantup.com/
言わずもがな。
仮想PCの作成とか破棄とかいろいろ簡単にできる。
- Chef
-
プロビジョニングするツールについては環境構築にかかる時間の都合上、ansibleではなくChefを選択。ansible目当てだったのでこの点は残念だった。
- serverspec
-
http://serverspec.org/
サーバの構成をテストするツール。
ハンズオンで初めて触ったけどこれは楽しい。
- Jenkins
-
http://jenkins-ci.org/
CIの定番ツール。
- Packer
-
http://www.packer.io/
大まかにVagrantのBox作成に特化したものと考えてよいらしい。
ヌーラボさんではコケた時の原因究明のやりやすさでPackerでやっている処理もVagrantに戻すことを考えているそうです
- Hubot
-
https://hubot.github.com/
githubが作ってるbotフレームワーク。これはチャット系ツールの夢が広がる
- Gradle
-
http://www.gradle.org/
Git/Jenkins連携に使用? 謎メモしか残ってないので別に調べよう
ハンズオンをしていただいた中村知成氏(@ikikko)はとても人柄もよく、うまく進めていない人へのフォローも優しくご対応されていました。
ちなみに私はNokogiri問題発症しませんでしたのでサクサクでした。
ハンズオン系のイベントで参加者全員がRuby, Ruby on railsのインストールだけでほぼタイムアップという黒歴史を経験していたのですが今回はタイムスケジュール通りに進んで本当によかった。
一つ一つのツール単独で使用してもとても便利だけど、それぞれを連携させると新しいワークフローが生まれてしまう程に可能性が増すことを肌で体験出来る内容でした。
場所と貴重な機会を提供していただいたランサーズさん、中村さん、本当にありがとうございました。
メモ】jQueryのclick関数がsafariだけでエラー。TypeError: ‘undefined’ is not a function (evaluating xxxx.click()と出る
2014年03月12日 15時07分
Lionのsafari(5.1.7)でjQueryのclick()関数を実行したらTypeError: ‘undefined’ is not a function (evaluating xxxx.click()と出た。
エラーメッセージでググると以下のページを発見。
http://stackoverflow.com/questions/12744202/undefined-is-not-a-function-evaluating-el-click-in-safari
「言語定義はclick()関数はHTMLInputElementにのみだよ」って感じかな。
確かにaタグに対して実行していたので納得。
でもsafariもバージョン上げるとエラー出ないんだよ。
納得いかないまま該当箇所に関してはjQuery使わずにevent作って対応。
|
// 対象オブジェクト取得 var element = $('#foo'); // イベント作成 var click_ev = document.createEvent("MouseEvent"); // 初期化 click_ev.initEvent("click", true, true); // 発火 element.dispatchEvent(click_ev); |
IEの旧バージョンがディスられまくっててsafariの旧バージョンが皆に忘れされれているのは母数の少なさに加えてOSの安さがある。
この症状報告した会社の人もLionから無償でアップデートできるんだから特別な理由がない限りさっさと最新OSに変えて欲しい。