2013年12月16日月曜日

Agile Samurai Base Camp行ってきました!

初心者向けみたいで参加しやすそうだなと思ったので行ってきました。明日から始められるというフレーズもいいですね。そういうのに弱いです私は。
TDDとインセプションデッキのセクションがあって、私はインセプションデッキの方に参加してみました。 メモや感想を書き出してみます。
はじめに著者のジョナサン・ラスマセン氏からのビデオメッセージが。やってほしいことを3つ。
  • 学んだことや今日あったことを共有する
  • 常により良い方法を探し続け改善し続けること
  • 楽しむこと
その後講演へ入りました。
前半はインセプションデッキとTDDは別れておらず、なぜアジャイルサムライという本が誕生したかといった内容や影響を与えた書籍、なぜサムライ?と言った話でした。
様々な書籍がある中で、
  • 現場にどう合わせていくか
  • 手法や用語にとらわれ過ぎない
  • 学びながら調整していく
これは重要な事だと思いました。意外に囚われてしまうことは多いんじゃないでしょうか。

インセプションデッキの話

明日からインセプションデッキを始めようの話。基本アジャイルサムライに則ったお話でした。それをどう明日から実戦していくか。
  • 準備→理解→調整→まとめ
の流れで進めていく。
  • 準備
    • まずは自分の理解をまとめてみる
    • 見聞きしたこと、経験、ドキュメント、調査したこと
    • たくさんのインプット
  • 理解
    • 知っている人に聞いてみる
    • 達成するべきこと
    • 誰が使うのか
    • そもそも経緯は
    • マネージャ、エンジニア、等、それぞれの立場
    • デッキじゃなくて質問しよう
  • 調整
    • 自分が不安に感じていることを伝える
    • こういうところが気になるんですが…程度で良いので聞く
  • まとめ
    • 最新情報をまとめて周りに伝える
    • スライドにまとめると伝えやすい、次に繋がりやすい
    • 共有フォルダはアカン!(誰も見ないw)
いつデッキ作ればいいの?
デッキを作るタイミングはたくさんある!
  • プロジェクトが始める前
  • 自分にとっての初日(参加した日)
  • ふりかえりのとき
  • 悩んだ時
  • などなど…いつでも良い


自分に当てはめてみる

インセプションデッキのお話のあと実際にワークショップを行いました。その後再び講演で現場ごとのお話でかっこいいセリフが出たりしていました。
インセプションデッキ。自分で始める際どうやってみようか考えました。とらわれ過ぎない。現場ごとにやりかたは変わる。

準備→理解→調整→まとめという流れ、うまく取り入れられないだろうか。
きっと理解、調整の部分は毎日の朝会でできるんじゃないかな、とか。
1周間そんなことを意識してみたりしました。そして常に改善していく!
今回参加してよかった!皆々様ありがとうございました!

2013年12月2日月曜日

jawbone up apiで自分をnagios監視下に置く

JAWBONE UP APIを触ってみた。
先月届いたリストバンド型ウェアラブルデバイスのUP。APIがあったのでなにかやってみようと思います。

API

こんなかんじでした。
  • OAuth2.0使用
  • UPに記録されているデータはひと通り取れる
  • 運動の記録(多分睡眠等も)は日付指定しなければ最新10日間分を取得
  • jsonで値はかえってくる
  • アクセストークンの期限は1年

自分を監視する

とりあえず何かやってみようということで自分を監視してみました。
運動量が一定の値以下なら警告をだしてみます。

何で監視するか

nagiosで監視してみます

流れ

  • UP側
    • jawbone.comのアカウント作成
    • https://jawbone.com/up/developerからorganization登録
    • application登録
      • アプリのホームページ
      • 認証のリクエスト等を送る際のウェブページ
      • リダイレクト先のページを登録
    • Client Id,App Secretが発行される
    • 認可コード取得
    • アクセストークン取得
  • nagios側
    • 監視のためのホスト設定追加
    • UPから運動量を取得しnagiosに結果を返すスクリプト作成(今回はRuby使用)
      • 10日分のいろんな運動データがjson形式で来るので解析&最新の総歩数のみ取得
      • 1万歩以下ならアラート

結果

1万歩以下だと下記お叱りのメールが送られてきます。よお豚野郎!

nagiosではこんな感じ。
サーバに混ざって自分がnagios監視下に置かれています。





認可コードから先はcurl使って手動でアクセストークン取得、運動量取得するスクリプト内ではアクセストークン決め打ち。
このへんはoauth2のgem使って汎用的にしたいところ。あとnagiosじゃなくてTwitterと連携させたい。
流れと言いつつ色々端折っているのでもっと細かくまとめたい。

参考
UP for Developers
Nagios API

2013年10月18日金曜日

Jawbone UP, runtastic 比較




上がJawbone UP
下がiPhoneのruntastic

4キロのランニングの結果比較。

runtasticの方が正しい数値だと思われる。GPS使ってるし。
UPはGPS無いので多分身長等のデータと加速度センサー的なもので計算した距離なのかな?

正確性にはかけるけど目的はたぶん装着しっぱなしにすることによる日々の運動の習慣化とデータ収集だから大体あってればそれでいいのかも
勝手に運動データ収集してくれるのはなかなか面白い。


とにかくつけっぱなしにしないと始まらないウェアラブルデバイス。それがUP!


これからのライフログアプリ、デバイスは全自動の時代!
夏休みの絵日記の宿題、ネタに関してはほぼ自動化されるわけです!
でも書くのくらいは自分でやれ!


そしてUPにはAPIがあるみたいですね。
運動、睡眠、食事等UPのアプリで見れる情報はひと通り得られるようです。

もっとこういうデバイスが一般的になれば他のライフログアプリやゲームなんかと積極的に連携されるようになるんでしょうね。
スポーツ用品店やアウトドアショップ、スポーツジムなんかともつながると楽しそうな予感…。



2013年10月17日木曜日

師弟登壇・新米サムライの集い 2013へ行ってきました

先日師弟登壇・新米サムライの集い 2013へ行ってきました。
その内容が大変面白いかったのでメモ。

発表全体を通して共通してるなと思った部分抜粋。
  • 一般的な基礎技術の理解の重要性
  • 実際にWebアプリを作る
  • レビュー、進捗の共有の徹底
  • chefやserverspec等Ops系のこと
当たり前といえば当たり前なのか?

でもアプリエンジニアの人もchefとかserverspecとかpuppetを勉強するような流れはちょっと意外だった。インフラもどんどん抽象化されていくんですね。

あと印象に残ったこと。

DeNAの徹底ぶり。Webアプリを作る研修。

各フェーズに分けて成果物をレビュー。1フェーズ5回くらい。多い人は10回とか。レビュー通ったら次のフェーズへ。レビューは研修生にとってアウトプットの場であり、インプットの場。

レビューする側は正しく論破する。だめならだめで相手が納得できるように話す。

レビューでの出来事や内容、対象の強み、弱点、何気ない会話、進捗の話、日報、ひたすら記録。徹底したデータ化とPDCAで成長を正しく計測。

フォローアップという制度も面白かった。あまり進捗が良くない人を対象に毎日1:1で30分講師と話す。問題解決、議論のトレーニング。急激に伸びる人もいた。一人ひとり丁寧に。自信を付けさせる。自信は成長のための潤滑油。

人にフォーカスした研修は人生を変える。


ほかにも各社特色があっていろいろ参考になることあったけどもう目が開かない。。。
おやすみ。

2013年10月3日木曜日

ターミナルの出力結果を保存



ウインドウ内で収まる範囲ならコピーできますけど上の方の出力結果もまとめて保存しておきたいとき

シェル→テキストを書き出す

で任意の場所にそのセッションで出力されている内容を保存できます


いろいろ試行錯誤した記録をhistoryだけでなく出力結果まで取りたいときに!便利!

2013年9月5日木曜日

サーバー上のcsvをGoogleスプレッドシートにインポート

web上のcsvファイルをGoogleスプレッドシートで読み込みグラフ化できる!

cronで自動実行して更新してるcsvファイルをGoogleスプレッドシートで読み込んでグラフ化とか

適当なセルに
=ImportData("http://hogehoge.hoge/foo.csv")

と入力すると自動で表が出来上がる
csvが更新されると表も更新されるので便利

あとは範囲選択でグラフを作ればOK
表が更新されるとグラフも自動更新されていく

2013年5月20日月曜日

iPhoneのGmailアプリで外部アカウントからメール送信

PCから設定します

まず外部アカウント(hogehoge@hoge.jp)をGmailアカウント(gmail@gmail.com)に追加します

Gmailの設定→アカウント→エイリアスで、
追加した外部アカウントを指定(デフォルトに指定)


iPhoneのGmailアカウントで送信
hogehoge@hoge.jpから送信されているか確認

vim中断と復帰

vim中に別のコマンドを実行したい、けど新しくタブやウインドウを開くのもめんどくさい、vimを閉じるのはもってのほか

そういう時にControl+Zで中断できる
fgコマンドでフォアグラウンドジョブとして復活

2013年5月5日日曜日

nginxで動かしてるwordpressの設定をいじったら503になってしまった

適当に設定いじってたらアクセスできなくなってしまった!!!!
たぶんパーマリンクの設定いじったせい…な気がする いや、違うか? とにかく多分設定ファイルいじったせいだと思われる

 Apacheだど.htaccess設置したりして回避してたみたいだけど、
nginxにそんなものはないので設定ファイルいじって何とかしないとダメらしい

以下設定

パスは適宜変更

location /wordpress {
    root /var/www/html;
    index index.html index.html index.php;
    if (-f $request_filename) {
      expires 30d;
      break;
    }
    if (!-e $request_filename) {
      rewrite ^.+?($/wp-.*) $1 last;
      rewrite ^.+?(/.*\.php)$ $1 last;
      rewrite ^ /wp/index.php last;

    }
  }

nginx -tして怒られなかったら再起動
403解消!
参考:http://hima-j.in/wordpress/nginx-wordpress-permalink/


nginxちゃん何しとん?

if文の中のrewriteとか
参考:http://wiki.nginx.org/HttpRewriteModule
This module makes it possible to change URI using regular expressions (PCRE), and to redirect and select configuration depending on variables.
If the directives of this module are given at the server level, then they are carried out before the location of the request is determined. If in that selected location there are further rewrite directives, then they also are carried out. If the URI changed as a result of the execution of directives inside location, then location is again determined for the new URI.
This cycle can be repeated up to 10 times, after which Nginx returns a 500 error.
ほうほうなるほどなるほど… わからん

-fはファイルの存在をチェック-eはファイル、ディレクトリ、シンボリックリンクの存在をチェック
breakはセット完了
expires 30dってのはexpiresヘッダくっつけて30日間キャッシュさせるってことでいいのかな
rewriteってのは…正規表現と置換文字列にあわせてURIを変換してくれる??なんすかそれ。
phpで自動生成される解り辛いuriを日付/タイトルみたいな静的uriに変更してくれる的なことをやってくれるの?
lastっていうので書き換えを適用させてるみたいだけど…。
$request_filenameってのは要求されたパスでいいのかな。hoge/wordpressみたいな
参考:http://wiki.nginx.org/HttpCoreModule#.24request_filename


あと503は回避できたけどパーマリンク変更したあと記事見ようとすると
no input file specified nginx
ってなるようになってしまった
これはまたこんど解決しよう


以上色々間違ってそうなざっくりメモ

2013年4月28日日曜日

Amazon EC2 ubuntu12.04とnginxでWordPress

Amazon EC2電話認証すげえー
設定していくと鍵の設定があったので指示に従い秘密鍵ダウンロード。そしてinstance起動したらログイン
ssh -i ほげ.pem ubuntu@ほげほげus-west-2.compute.amazonaws.com みたいな。ubuntuユーザーでログインしたらsu -でrootユーザーに切り替えてパスワード設定 EC2のダッシュボードからセキュリティグループに入って必要なポートを追加。80とか。

ワードプレスインストール。
入れたもの:php5, php5-mysql, php5-cgi, mysql5.5-server, mysql-client5.5, nginx

WordPressのためのDBの設定等はここを参照
http://wpdocs.sourceforge.jp/WordPress_%E3%81%AE%E3%82%A4%E3%83%B3%E3%82%B9%E3%83%88%E3%83%BC%E3%83%AB

nginxはそのままではphp動かないのでここを参照

僕の環境だと
location ~ \.php$ {
  include /etc/nginx/fcgi_params;
  fastcgi_pass  127.0.0.1:9000;
}

ではなく
location ~ \.php$ {
  include /etc/nginx/fastcgi_params;
  fastcgi_pass  127.0.0.1:9000;
}
だったのでそこだけ直した

2013年3月30日土曜日

ターミナルの表示名を変更

デフォルトのはなんか嫌だったので。

.bash_profileに、
PS1="["てきとうな名前:" \W]\$ "

保存したら
source . bash_profile
で再読み込み

するとこんな感じに表記されます。
[てきとうな名前: ~]$ say oppao


やったね!


ちなみにデフォルトではどうなってるのか知りたい場合は
echo $PS1
で出力されます。

2013年3月29日金曜日

キーボード操作のみでブルートゥースをオン

うっかりBluetoothをオフにしてしまいマジトラが使えなくなってしまった!


キーボードはusb接続なのでなんとかキーボードだけでオンにしなければ…
⌘+Shift+Aでアプリケーションフォルダが開くのでシステム環境設定を起動。
さらに検索窓からBluetooth設定画面へ入ったはいいものの、キーボードショートカット設定画面のフルキーボードアクセスにて全てのコントロールがオフになっていたため、入ボタンをTABキーで選択できず…。
キーボードショートカットの設定もラジオボタンだったので\(^o^)/オワタ

と思いきや、Mac画面上部に表示されているメニューバーはキーボードで操作できる事が判明!
Control+F8でメニューバーへ移動、カーソルキーでBluetoothメニューへ。そしてBluetoothをオンにするをハイライト…ターン!


こうしてなんとかUSBマウスを借りる手間が省けた

2013年3月27日水曜日

vimキーバインド ;→:

キーバインドは特にいじってなかったけどUS配列キーボードだとShift+;でコロンなのでめんどくさい

なので.vimrcに追記

map ; :

これだけでまたひとつ快適なvimライフに近づけました

2013年1月30日水曜日

git rmと.gitignore

git addでindexにファイル追加する際無視してほしいファイルを.gitignoreというファイルを作ってそこに書く
.gitignoreの場所はgit initした場所(トップ)
書き方は単純に無視してほしいファイル名書くだけ

例)
# .DS_Store無視
. DS_Store

# 拡張子rb全無視(そんな奴いるのか?)
*.rb

みたいな感じ。いろいろ条件つけられるから便利かも



本題。すでにリポジトリにうpってしまったものを消しつつ(ただしローカルリポジトリには残したい)git addから無視させたい場合

git rmを使う。普通にrmするとローカルリポジトリから消えるので、--cachedオプションを付ける

例)
git rm --cached .DS_Store

これでファイル自体は残るけど、これからは無視されるし:;(∩´﹏`∩);:リモートリポジトリからは消えるしやったね(◜◡◝)

2013年1月20日日曜日

Siriさんのいいところ

こんにちは。

先日画面割れのiPhone4からiPhone5に変えました。爆速!

速度以外で大きく変わった点といえばSiriさんですね。
4にはありませんでしたからね。
Siriさんに頼めば電話はもちろんリマインダー、カレンダー、アラーム、メール、天気、レストラン、ジョーク…いろんなことができますが、外で使う人は少ないんじゃないですかね?だって恥ずかしいし…

とはいえ家では使えるわけですからどうにか便利なものはないかといろいろ喋りかけていたところ2つ便利な使い方があったのでメモします。


1.アラーム

これは単純に寝そべってる時にホームボタンを長押しして、「20時に起こして」などというだけです。アラームのセットは特に眠い時はめんどくさいのでSiriさんに頼むと思ったより楽です。


2.特定の環境設定へのショートカット

iPhoneがAndroid端末と比較して不便なところはWi-Fiをさっさとオンオフできないところですね。Androidならボタン一発でできるのに…。
iOS4くらいのころはurlスキームで環境設定のWi-Fi項目に一発アクセスできたみたいですが、アプデによりできなくなったようで…。しかしSiriからなら呼び出せるのです。なぜか。
実行するiOSバージョンは6.0.2です。
画像のように連絡帳で適当な名前をつけてWebの項目にスキームを追加します。


prefs:root=WIFIはWi-Fi
prefs:root=General&path=AUTOLOCKは自動ロックまでの時間です



Siriで登録した名前を呼び出します。すると連絡帳が出てくるのでタップすると一発で目的の環境設定項目へ飛べます。

Siriで呼んで押すというふうに一発というわけではないのですが…でも正攻法よりは楽です!普通に連絡帳からタップすると特に何も起きません。なんで??

環境設定各項目のurlスキームがまとめてあるサイトです。こういうサイトはいいですよね。



2013年1月16日水曜日

東京ruby会議10行って来ました

千葉じゃねーか!!!!


あけましておめでとうございますm(_ _)m
1月の13日、14日に東京Ruby会議10へ行って来ました。
会社からチケットをいただけたのでラッキー!一般のチケットはすぐ売り切れてしまったようなので感謝感謝です。
2F会場の様子
BGMは終始東方アレンジw


Ruby系のイベントへ行くのはこれが初めてで楽しみでした。
せっかくなのでブログに感想等を。

1日目 晴れ
・趣味とRubyと私
仕事ではPerlという生井智司さんのお話を聞きました。
仕事の傍ら別の言語を使って遊ぶ(勉強する)ことはなかなか時間の取れない社会人にとって簡単ではないと思うので今年社会人となる僕としては興味深いお話でした。モチベーションをどう保つのか等…。

まず、必要だと思ったものを作る。FDD(不満駆動開発!)
これができないと死んじゃう><くらいに思い込んで進めるといいらしいですw
また自宅では会社で使っている言語は使わないといったルールを決めるということもよさそうだな、と思いました。
そしてモチベーションを上げていくため何をするか。
地域のコミュニティに参加、ネットでつぶやく。
これによりRuby友だちができる!勉強会の企画ができる!モチベーションアップ!以下ループ
と言った感じでした。やっぱり誰かと何かするっていうのが1番なんだな。楽しいのが1番!

・プログラミング未経験なんて怖くない!
どんなふうに勉強していくかといったお話。
1真似する
既存のコードから作りたいものに近いものを探す。そのコードが何をしているか調べる。
2形から入る
意味がよくわからなくても形から入る(テストを先に書くといいらしい…等)
わかる瞬間がそのうち来る。やり方に慣れる。
3途中経過を見せる
早い段階で見せる。こまめに見せる。

やっぱり実際にコードを見る、やってみるっていうのが1番ですよね。
途中経過を見せるというのもいいなと思いました。
絵文字が飛び交うPullRequestで爆笑

・日本酒評価サイトとxDD
お酒は最高ですね!
河野さんのいろんなDriven Developmentのお話です。
ADD:アルコールDriven Development
BDD:ビールDriven Development
WDD:ワインDriven Development
NDD:生ハムDriven Development
生ハムは大盛り上がりでしたw
そしていつの間にかいい話にw
CDD:コミュニティDriven Development
自分の知らないことを知っている人が必ずいる。もしコミュニティがなくても自分で作る。1人だと大変だけど1人でも仲間を見つければ継続していける。
やはりコミュニティは重要なファクターであることを再確認。なければ作ればいいじゃない!


ほかにも個性的な発表がたくさんありました。
フリスクのケースで違和感なく脈拍を計りそれとなくCapsLock点滅させることで上司に緊張していることをアピールする等会場がもりあがる発表ばかりでした。


2日目 雨・雪
・How to change the world
Rubyのパパのまつもとゆきひろさんのお話です。お子さんが成人式ということでSkype越しの発表でした。そういえばRubyも20歳ですね。
心に直接語りかけられました。
Rubyが成功した理由、世界を変えた理由です。
1.タイミング
10年後当たり前になるオブジェクト指向を当時の段階で取り入れた。当時スクリプト言語にオブジェクト指向はやり過ぎだとの声もあったようです。先見性ですね…。
2.モチベーション
20年こつこつ続けてきたこと。小さな世界から変えていく。

何にモチベーションを持つかは制御できない。自分が面白いと思ったことに対してモチベーションを見出す。
世界を変える鍵。テクノロジー、オープンソース、コラボレーション。
過程を楽しむ。未来は予測できないので賭ける。ただしリスクは分散する。小さく賭け、たびたび賭ける。小さく賭けることでもし賭けに負けても素早く撤退できる。
といった言葉が印象的でした。
ハッピーになろう!

・ブログのススメ
前島真一さんのブログをもっと書こうと言った話でした。
ブログを書くと考えが整理される、コメントをもらえる、ぼっちを回避できる。
モチベーションをどう保つか。途中でも公開してしまうことで継続していける。途中なのが嫌ならそれ用のブログを作ってしまう。GoogleAnalysisを導入しiPhoneのホームにその結果を見れるようにする。

途中でもうpするというのはよさそうですね。とにかく継続することが重要ですからね…。Twitterが流行り始めた時期とブログの更新が滞る時期が一致していておもしろかったです。鳥に吸い取られている…。
GoogleAnalysisアプリも初めて知りました。やる気うpに繋がりそう。
何かするときはやっぱりモチベーションとみんなと関わるっていうのが重要なんですね。

ブログを書くとみんなが幸せになれる!


ほかにはmRubyで柔軟なルータを作ったり勉強会の運営の話、ベトナムでRailsエンジニアの育成や採用の話等々…。
濃い内容でした。
2日目が雪で閉会してしまったのが残念でした…。
雪の中ランチ



・感想
思った以上に楽しかったです。適度なゆるさがあって居心地が良かったです。休憩室はみんな寝そべってるし…。
掲示板がカオス。

全体を通してコミュニティ(勉強会等)の話が多かったですね。会場でもバッヂ交換イベントやアンチぼっちランチ等誰かと関わりになれるような気遣いがされていて印象的でした。私ももちろんぼっち飯は嫌なので参加しました。
TwitterのIDを交換し合いました。また勉強会等でお会いできると思います。貴重な出会いでした。
Rubyはコミュニティが多いイメージでしたがほんとうに多いんですね。
ランチの時に、こういった勉強会では話せばみんな仲良くなれるのにあんまりそういう機会がない。Ruby関連のイベントはそこがすごいといった話を聞いて印象的でした。

テザリングは必須です!Twitterの実況が楽しすぎますw
Facebookは1度も聞かれませんでした…。Rubyistはツイッターのほうが好きなんでしょうかね?
初日ツイートまとめ
二日目ツイートまとめ

今年の目標にコミュニティへ積極的に参加することを付け加えようと思いました。
頑張ります!