Hatena::ブログ(Diary)

regtan’s TechNote このページをアンテナに追加 RSSフィード Twitter

2014-03-30

[AWS]EC2でさくっと検証環境を立ててみる

AWSが42回目の値下げと聞いてさっそくEC2で色々試す環境を作ってみました。S3とかはこれまでよくお世話になってたのですがEC2はあんまりという感じ。なので、初めてEC2つかってインスタンスを作って使う所までをまとめました。

準備しておくもの

  • awsアカウント
    • 電話認証とかあるけどすぐ作れる
  • ログインに使うkeyPair
    • なかったらssh-keygenして作れ
  • お金
    • 今回は100円くらい

続きを読む

2013-02-14

デブサミ2013で「ニコニコ静画(電子書籍)の作り方」を喋ってきたよ

デブサミ2013の1日目のA会場で「ニコニコ静画電子書籍)の作り方〜みんながニコニコしてくれる読書体験を届けるために〜」というテーマでお話ししてきました。資料:https://speakerdeck.com/regtan/nikonikoshu-ji-falsezuo-rifang togetterhttp://togetter.com/li/453501

ちょこちょこっと補足していきます。バレンタインだけにチョコチョコっと。

github:enterpriseについて

まだまだ少ないながらもgithub:enterprise導入事例が増えてきました。正直、ある程度のコストを覚悟しなければならない分導入が難しいと思います。もっと安価に導入する方法として、githubのprivate repositoryがあります。インターネット上のgithubの有料サービスとして提供されている物ですが、github:enterpriseと同等の機能を持っています。これを利用すればご紹介した運用が実現できます。

github:enterprise以外にもatlassian stashというツールもあります。こちらはライセンス料が安く導入もしやすいでしょう。あまり機能について詳しくないのですが比較対象として十分な物だと思います

jenkins先生とリリース先輩について

リリースの準備をしてくれるirc botです。このbotは先輩と言う名の通りそれなりのポジションを持っています。ちなみにリーダーであるわたしより偉い立場です。チーム内序列でいうとJenkins先生>リリース先輩>>>>|越えられない壁|>>>エンジニアくらいの差があります。だから、わたしたちはそれぞれに敬意をこめてJenkins先生・リリース先輩と呼びます。

リリース先輩の詳細、開発に至るまでの話はリリース先輩というIRCボットを作った - 鳩舎 をご参考ください。

今回のセッションアジャイル

アジャイルプラクティスにはじまり、アジャイルサムライにいたるまで様々なプラクティスを紹介する本やそれにともなう勉強会が数多く開かれ一般的になってきました。しかし、一方ではプラクティスをそのままやればいいよねという風潮も感じられます。でも、アジャイルってそうじゃないよねっていうのがわたしの思いです。

アジャイルについて用語を並べて語ることはできます。それは知識量の問題で勉強すればできるようになります。でも、今回のセッションではそれでは意味がないと考えました。アジャイルって自分たちのチームに合わせて適用していくもの。なので、自分たちがやっている姿を自分の言葉で紹介しようと思い、「社会性のない人たちの集まったチーム」という表現をしたり、出来る限りアジャイルの文脈で使う言葉(スプリントとかスクラムとか)を使わずにお話しました。

あれをやらないとアジャイルじゃないとか考えるよりももっと自由に、もっと柔軟にやればいいと思います。

いや、まぁ、うちのチームの社会性は他所様と比べれば欠けてるのは事実ですが・・・

Actionカードに書いたメッセージ

「あたりまえのことをあたりまえにやろう!」このようなメッセージにしました。数年前ではそうでもなかったのですが、unittest/CI/アジャイルはもう当たり前の時代になりました。気がつくと「当たり前」と呼ばれる水準はあっという間に上がっています。じゃあ、出来てないことがあるならばどうすればできるようになるか。より、あたりまえにできるかを考えるきっかけになればとおもいます。

会場にお越しいただいた方には配布されたのですが、そうでない方にはスピーカー用に5枚頂きましたので4枚までは先着順で差し上げます。直接取りに来てください。

その他

時間が許せばどこかのイベントとかで話せたらなーと思ってます。会場でアンケート用紙に書いて頂いた内容は後日手元に届くのでそこでお答えできることはお答えします。

2012-12-31

2012年振り返り

いやー気がついたら大晦日ですよ。あっという間に1年過ぎました。というわけで振り返ってみようと思います。

1月

12月に転職して初めてむかえるお正月。なんだかんだいって落ち着いてお正月お休みしてた。

2月

@kwappaと@yoshioriといっしょにデブサミ初登壇。2日目の最終セッションという一番いい所もらって好きなだけ喋ってたというセッションでした。

3月

試用期間無事終了。クビになりませんでした。よかったよかった。

4月

この頃から担当するお仕事がバックエンド以外にもフロントも担当するようになった。phpゆるふわしてて色々泣きそうになった。あとは超エンジニアミーティングで司会したりと変わったお仕事も担当。

5月〜8月

仕事でバタバタしたりしてたけど充実した日々。

9月

ニコニコ静画電子書籍)の大型アップデートに向けて大忙し。この頃からちょっとずつマネージャのお仕事も担当。

10月

下旬に控えたニコニコ静画電子書籍)の大型アップデートに向けて大忙しの日々。この頃からマネージャ引き継ぎ。

11月

上司の退職にともなって、システムリーダーに就任。開発責任者っていう役職です。これまでのお仕事とは違うタスクが湧いて出てくるポジション。

12月

転職して1年たった。でもって、33歳になった。

まとめ

あれ?プライベートなイベントなにもなかったや・・・というわけで来年もよろしくお願いします。

2012-09-02

raspberryPiの焼き方

念願のraspberryPiを手に入れたぞ!!!というわけで、同僚がまとめて買っていたのを一つ譲ってもらいました。raspberryPiは名刺サイズの基盤むき出しのコンピュータ。その割にはLANのポートがついてたりHDMI出力やコンポジット出力までついているみょうに高性能な奴です。25.92ポンド。日本円で3,200円くらいです。今注文すると12月中旬お届けらしいです。

準備するもの

買った時におまけにケーブルなどがついてくるわけでもないので起動するためには色々と準備が必要です。

  • SDカード
    • raspberryPiはSDHC対応しているのでSDHC class10 16Gくらいのもの買えばいいでしょう。
    • ヨドバシで3,000円くらい。本体と同じくらいw
  • HDMIケーブル
    • せっかく対応しているので使わない手はないということで。
    • お手元のモニターが対応してなかったらHDMI-DVI変換コネクタとか使えばいい
    • ヨドバシで1,000円くらい
  • USB microBケーブル
    • これが電源供給用ケーブル
    • ヨドバシで500円くらい

基本的に必要な物はこれくらい。あとは必要に応じて購入しましょう。

OSイメージのダウンロード

オフィシャルサイトダウンロードコーナーから直接落としたりtorrent使って落としたりして準備します。今回はサイトにthis is the image we recommend you useとマジオヌヌメといっているRaspbian “wheezy”を落としてきました。

ダウンロードはこちら:http://www.raspberrypi.org/downloads

SDカードへの書き込み

おとしてきたファイルを展開してイメージファイルを取り出します。そのイメージをSDカードに焼きます。macならこんな感じ。

$ sudo diskutil unmount /Volumes/NO\ NAME/ #SDカード刺すとmountされるので一度unmount
$ sudo dd if=/path/to/2012-08-16-wheezy-raspbian.img of=/dev/disk1s1 bs=10240

SDカードのunmountが出来ない場合は一度mac再起動して、alfredとか色々止めてもう一度やってみるとうまく行きます。ちなみにここで書いたコマンドでみんなうまく行ったそうですがdiskイメージからうまくbootしてくれませんでした。何かまちがってるかもしれません。

windowsの場合はWin32DiskImagerというツールを使うと良いそうです。今回は負けを認めてwindows使いました。

起動する

SDカードへの書き込みが終ったら本体にさして電源を入れます。USB microBケーブルをさしたらすぐに起動プロセスが始まりますので他のケーブルは先に繋いでおきましょう。電源スイッチなんてないのでUSBケーブルの抜き刺ししてON/OFFします。

電源が入ったらPWDと書かれたLEDが赤く点灯します。起動が始まるとその隣のOKと書かれた緑のLEDが点滅します。OKのLEDが点滅しない場合はイメージの書き込みに失敗している恐れがあります。

起動するとこんな感じの画面が出てきます。

f:id:celitan:20120902151527j:image:medium

ここでkeymapの設定とか文字コードの設定やsshdの起動のon/offを設定します。設定が終ったらstartxでGUIを起動します。

f:id:celitan:20120902151528j:image:medium

上手に焼けましたー

日本語周りは日本語フォントインストールが必要なので写真では文字化けしてます。追いオリーブはお好みで。

まとめ

ddコマンドでうまく行かなかった原因がよく分かってない。bootセクタがうまく読み込めてないのかなという程度にしかわかってません。あとSDカードのunmountがうまく行かないという悲しみを味わった。うちではテレビにHDMIでつないで使ってます。意外と便利でおもしろい。メモリは256Mなのでハードな使い方は難しいかもしれませんがちょっとした検証なんかには使えるのではないでしょうか。

2012-07-28

Re:シェル操作課題 (cut, sort, uniq などで集計を行う) 設問編

ymsr先生書いたシェル操作課題 (cut, sort, uniq などで集計を行う) 設問編に答えてみた。環境はzsh。課題のファイルはtest.txtで保存しているという前提で。

問1 このファイルを表示しろ

more test.txt

more派です。

問2 このファイルからサーバー名とアクセス先だけ表示しろ

課題のファイルがサーバー名,unixtime,ユーザーID,アクセス先の形式なので1番目と4番目を表示すればよいのでawkつかう。awkのセパレータはデフォルトではスペースやタブなのでFS=","でカンマに設定する。どこを表示したいかは$1などで指定する。

awk 'BEGIN {FS=","} {print $1","$4}' test.txt

問3 このファイルからserver4の行だけ表示しろ

○○の行を表示する->grepでやるのが早い。

grep server4 test.txt

問4 このファイルの行数を表示しろ

行数だけならばwcでOKなんだけど環境によってwcの出力結果は違うので注意。

wc test.txt
--結果
      9       9     302 test.txt

こうすると左から順に行数、単語数、バイト数、ファイル名。行数だけなら-lオプションをつける。

wc -l test.txt
--結果
      9 test.txt

ファイル名もいらねーよ。クソが。という場合はこれもawkで切り出す。

wc -l test.txt | awk '{print $1}'
--結果
9

問5 このファイルをサーバー名、ユーザーIDの昇順で5行だけ表示しろ

ソートはsortコマンド。セパレータはーtオプションで設定。ソートキーはーkオプションで設定する。先頭5行などはheadコマンドをつかう。

sort -k1,1 -k3,3n -t"," test.txt | head -n 5 

この問題の引っかかりやすい所は

sort -k1,3 -t"," test.txt | head -n 5 

としてしまうと1,2,3番目のカラムをソートキーにしてしまうこと。今回は1,3番目をソートキーにしたいのでこんな感じにすると

sort -k1 -k3 -t"," test.txt | head -n 5 

今度は3番目のキーが辞書順ソートなので30が先頭に来てしまうのでnをつけて数字順ソートにする。

問6 このファイルには重複行がある。重複行はまとめて数え行数を表示しろ

重複分を省きたいときはuniqコマンド。uniqコマンドは同じ行が2つ以上続く時にのみ1行にまとめないのでファイル全体の重複を調べるときはsortしてからuniqする。

sort test.txt |uniq|wc|awk '{print $1}'  

最後のawkは行数のみを出すためにかけてる

問7 このログのUU(ユニークユーザー)数を表示しろ

ユーザーIDは3番目のカラムなので抜きだしてソートしてuniqかけてwcで行数カウント。

awk 'BEGIN {FS=","} {print $3}' test.txt | sort |uniq|wc|awk '{print $1}' 

問8 このログのアクセス先ごとにアクセス数を数え上位1つを表示しろ

重複行数を出すにはuniqの-cオプション。降順にソートするときはsortの-rオプション

awk 'BEGIN {FS=","} {print $4}' test.txt | sort | uniq -c | sort -r | head -n1

問9 このログのserverという文字列をxxxという文字列に変え、サーバー毎のアクセス数を表示しろ

基本的には問8と同じ。文字列置換はsedをつかう。

awk 'BEGIN {FS=","} {print $1}' test.txt | sort | uniq -c | sed -e "s/server/xxx/g"

問10 このログのユーザーIDが10以上の人のユニークなユーザーIDをユーザーIDでソートして表示しろ

条件にあうものだけを表示するときはawkで条件式を書く。awk職人の朝は早い・・・

awk 'BEGIN {FS=","} {if($3 >= 10) print $3}' test.txt | sort -n |uniq 

ログが数十Gだったら?

こんなところにエントリがあったので紹介しておきます。

http://d.hatena.ne.jp/celitan/20110824/1314176354

多分もっといいやり方あるとおもいます。