Category Archives: Uncategorized

自分ならニュートンの経営をどうするだろう

ニュートンの件。


民事再生手続開始の申立てについて
http://save.cms2.jp/newtonpress/pressrelease_170220.html のPDF文書より一部引用

 

出版は継続するそうだけど、今のスタイルで続けても今後ビジネスを成り立たせるのは難しいんじゃないかなぁ。

子供のころ、親が定期購読してくれてたのを貪るように読んだのでニュートンへの思い入れは今もすごくある。
自分が親になった今、自分の子供にも同じようにしようとニュートンを見かけるたびに買っていくんだけど、子供たちの反応は良くない。

子供たちは図書館に行けばサイエンス系の本を読んでるからサイエンスに興味が無いわけではない(はず)。

たしかに、いまのニュートンを読んでも正直グッと来ないのですよね。いま、定期購読する気になれないんだ。

なんでだろう、、、、昨日から考えているんだけど、ひとつ考えられるのはやはり時代にそぐわないんじゃないだろうか。

誌面が自分が子供の頃と何も変わっていない。記事の内容はいまどきのトピックスを扱ってるけど、誌面構成は全く同じ印象。それがニュートンのスタイルといえばそうなんだけど。

じゃぁどうすればいいのかなぁ。よいソリューションはすぐに思い浮かばないけど、

  1. ターゲットが絞り込む
  2. ターゲットにあわせたマーケティングと売り方
  3. 紙メディア(電子書籍も同じ)は主でなく従にする

かなぁ。

ターゲットが小学生以下なら体験型に変える、キッザニア的なsomething.必然的にその親も取り込める。あと、アニメとのコラボ。いまうちの子供はベイブレードバーストに夢中だから、それをサイエンスするとか。極端だけど、YouTUBEerと手を組んでもいい。ヒカキンとかってテーマにけっこうサイエンスな実験要素をふんだんテーマにしているんだよね。

中高生の子供は自分の周囲にいないからちょっとわからん。

中年のおっさんおばさん層は過去の資産を活かすなにか。たまにkindleでニュートン記事の100円セールやっててそのときは爆買するけど、あれって特集記事だけまとめたやつで、正直全然満足できない。オレが読みたいのは部分じゃなくて一冊まるまる眺めたいんだよ!今どきのは冒頭に書いたとおりあまりグッと来ないので、やはり自分が子供の頃に読んだものをもう一度読みたい。もしかしたら今読むと新たな発見があるかも。
紙しかなかった自分の子供時分といまはまったく取り巻く環境が異なる。良質なコンテンツがいちばん大事なんだけど、それだけでなく周囲のメタな部分を時代に合わせて変えていく必要があるんだろうなぁ、なんてぼんやり。

ITイベントでトランシーバーアプリつかったらすごく便利だった話

PHPconference2016に会場ネットワークのスタッフ(CONBU,http://www.conbu.net/)として参加してきました。
その際に使用したトランシーバーアプリのZello(https://zello.com/)について他所で少しネタにしたところ思ったより反響があり、需要がありそうなので用途や使い勝手などなどの詳細をまとめてみます。

zelloの画面。話す時は丸ボタンを押し続けます。(PTT:Push to talk)
20161106-224346-134_30513699930_o

用途

ITイベント当日の運営チームメンバー内の情報共通です。CONBUチームはネットワーク設営や撤収で会場のあちこちでメンバーがバラバラに作業するので、不明点の問い合わせや進捗確認に非常に手間取ります。トランシーバーがあると情報共通がとてもスムーズになります。

slackやLINEなどの文字ベースでもよいですが、イベント当日の準備や開催中に即時性が求められる場面で文字を読み書きするのは難しいです。その点、音声会話のトランシーバーはリアルタイム性がとても優れています。もちろん、slack等は文字が残るという優れた特性があるので、併用すると良いかと思います。

トランシーバーアプリを使ったワケ

CONBUチームではイベント当日のリアルタイムな情報共通用途でトランシーバーの専用端末を使っていました。こういうやつ

img_5769

 

とても便利なんですが、難点もあります。

  •  メンバー全員分のトランシーバー端末を用意できない
    • メンバーが10人を超えると買っても借りてもかなりのコスト高になります。ちなみにAmazon等で安価に変える端末はせいぜい見通し距離しか飛ばないので役にたちません。
    • トランシーバーを使うのはイベント当日+前日準備日だけなので、我々のようなボランタリーな活動では買うというのはコスト的に見合いません。今までトランシーバー端末は各個人の私物を使っていましたが、負担はそれなりに大きいです
  •  ボッチがでてきてしまう
    • リーダークラスのメンバーだけ端末を使うのもありですが、非使用のメンバーとの情報格差がでてしまいチームとしての一体感が出にくくいように思えます。とくに当日に初めて参加するスタッフはボッチになりがちで深刻です。
  • 専用端末の管理が大変(とくにレンタル)
    • 端末の故障や紛失リスクがとても怖いです。とくにレンタルの場合、そういったリスク補償費用込みで借りないと怖くて使えません。

トランシーバーアプリzello

今回はスマートフォンにトランシーバーアプリのZelloを入れて使いました。実際に今回使ってみてとても便利だったので、また使おうと思ってます。

使い方はこちらが詳しいです。

 

良いところ

  • メンバー全員が使える
    • これが最大の利点だと思います。リーダークラスとメンバー全員が同じ情報をリアルタイムで把握できる利点はイベント運営ではとても大きいです。メンバー間の情報格差が埋められます。
    • ボランティアイベントですと当日初めて顔を合わせる人も多いので、当日メンバーは疎外感を抱きがちです。全体の流れが(ぼんやりでも)把握できるのでチームの一体感が上がります。

写真は最初に使う練習をしてるとこ。

phpcon2016-zello

  •  コストはほぼゼロ
    • スマートフォン以外のコストはほぼゼロです。アプリ自体は無料。イヤホンも必須ですが手持ちので十分ですし、100均モノでも良いです。
  • iPhoneとAndroidともに使える
    • WindowsPhone用もあるようですが今回は未検証です。
  •  モバイル通信とwifiのどちらでも使える
    • パケ代を気にしなければモバイル回線だけで十分使えます。もちろんWifiでも可能です。
  •  自分の慣れてるスマホで使える
    • これも重要。トランシーバー専用端末を使ったこと無い人もメンバーにはそれなりにいるので、普段使いのスマホを使えるのはとても利点があります。
  • 画面ロック状態でも聞こえる
    • ロックしても声はきこえます。話す時はロック解除が必要。
  • 他アプリ使用中でもバックグラウンド動作する
    • zelloを常にスマホ画面の前面に出しておく必要はありません。slackやFacebookなど他アプリを操作しててもスピーカーから声がなります。
  • 会話が 同時双方向(全二重)でなく片方向ずつ(半二重)である
    • トランシーバーなら当たり前ですが、同時に2人以上は話せず、話せるのは1人だけです。LINEグループ通話やSkypeグループ通話は全員が同時に話せるので一見便利そうですが、人間の会話処理能力は作業のときは格段に落ちます。だれもが聖徳太子的に多重音声を処理できるわけじゃないので、この意味でもLINEやskypeのグループ通話は不適と思います。
    • その点、片方向ずつですとAさん→Bさん→Cさん→,,,と言った具合にシリアルに会話が処理できるので理解しやすい=情報格差が出にくい、です。
  • 声がでる前に信号音がなる
    • 通話が始まる前に「ププッ」っと信号音が鳴るのが便利です。信号音が聞こえると「今から誰かが話すんだな」と意識を耳に向ける事ができます。
  • 音声履歴が取れる&再生できる(追記:@tinbotuからのコメント)
    • 音声履歴を端末に保存できて、かつそれを再生することができます。聴き逃したら後から聴き直すことが可能です。これは普通のトランシーバー専用機ではできないことです。
    • 音声履歴はアプリが起動しているときのみ端末側に保存されます。世界の何処かにある謎サーバに保存されるわけではないので、アプリ起動していないときの過去履歴は聞けません。
img_5852
音声履歴の画面

もう一息なところ

もちろん良くない点もありますが、個人的には許容範囲です。

 

  • バッテリー消費がそここそ大きい
    • 手持ちのiPhone6だと、半日で電池残量が50%くらいになりました。それでもSkypeの大食いに比べれば雲泥の差です。
    • 待機状態であればそれほど大きくないです。
  • ユーザー登録が必要。
    • やや面倒ですか、これは仕方ないでしょう。
  • 画面ロック状態では話せない
    • 聞く事は出来ますが、話す時はロック解除が必要です。スマホなのでこれも仕方ないかな。
  •  ハンドマイクが高価かつ入手しにくい
    • ハンドマイク(手元で発声ボタンを押せる)があると作業時には便利です。アプリ専用が売っていますがソコソコのプライス($100以上)して、かつ国際配送になりますので気軽には買えません。実感としては手軽さを考えると無くても問題無いと思います。

使いこなすコツ

  • リーダーが情報を集約する
    • この手のツールではありがちですが、ツールがあれば自然と情報共有されると思ったら大間違いです。必ずリーダーが情報を収集して整理する必要があります。今回は私がリーダー役だったので、zelloでやり取りした結果をこんなふうにホワイトボードシートにまとめていきました。

phpcon2016-wp

  • 聞き手が応答や復唱をする
    • これもトランシーバー利用の一般的なことですが、聞き手が聞いたことを復唱(例:「◯◯の件、了解」)するのはとても大事です。話し手は話したことへの反応がないと不安になります。
    • 特定の人に向けての会話でない場合(全員へのアナウンス、誰宛かわからない話題など)はリーダーが応答や復唱をしましょう。
  •  イヤホンは必須
    • マイク付きのイヤホンがあると便利ですが、マイク無しでも良いです。Bluetoothイヤホンだともっと便利ですが、有線タイプにくらべてバッテリー消費がやや気になります。写真はイヤホンを使っている様子。

(@tinbotuさん写真を借用)

img_20161103_161721

 

  • 事前にアプリのインストールとアカウント作成しておく+可能なら事前練習する
    • 当日になってやるのは苛酷なので、使用するメンバーに事前にやってもらいましょう。
    • 可能ならグループ会話を事前に練習しておくと当日スムーズに使えます。
  •  モバイルバッテリー推奨
    • 現場作業で頻繁に会話すると電池消費がけっこう激しいです。モバイルバッテリーを併用すると安心です。
  • 使う時以外はアプリを停止させる
    • スマートフォンがロック状態でもスピーカーから音声が鳴るので、おもわぬタイミング(たとえばオフィスで仕事している状態)で会話が始まってしまうことがあります。グループをオフにするのもありですが、アプリを停止しておくと安心です。

イベントを運営するかたにはトランシーバーアプリを一度検討してみると良いかと思います。

たじー、JANOGやめるってよ

タイトルは釣りです。

2016年1月のJANOG37をもってJANOG運営委員を退任します。いわゆる退職ならぬ退任エントリってやつです。

JANOGコミュニティとの関わりはJANOG15からなので約12年、運営委員としては約6年半です。
これだけ続けられたのは、楽しかったからでしょうね。

ぼくのライフワークはインターネットを誰でも安心して使えるようにすることです。JANOGコミュの活動はこれにとてもマッチしてました。飽きっぽいぼくですが、それが楽しかったので続けられたのでしょう。

実は、運営委員はその活動にかなりの時間を割いています。毎月の定例打合せやイベントの企画運営、対外的な対応などなど。委員全員が本業をもっていますから、活動は会社の業務時間中やプライベートの時間を割いています。 ぼくだけでなく委員全員がミッションとして取り組んでいて、それを負担とは全く思っていませんが(たぶん)、会社の理解や家族等の周囲の理解があってからこそ続けれました。支えてくれた皆様には感謝がつきません。

JANOGで自分の世界が広くなり成長させてもらいました。運営委員の活動はとても楽しかったです。
楽しいコミュニティは居心地がいいですが、変化しないコミュニティや組織は腐っていきます。運営委員は下支え役であり決して主役ではありませんが、この役割を次の人に渡していくことでコミュニティが変化して成長していけたらと思います。

ぼくは「恩送り」という言葉が好きです。恩をくれた人に恩を返す恩返しだけではなく、受けた恩をまた別の人に送っていく。ぼくは先達から運営委員で活動する機会という恩をもらいました。活動はとても楽しかったけど、この席にずっと座っていてはいけないな、と1年ほど前から考えていました。この楽しい席を他の人にも体験してもらいたい。この席を次の人に送っていくのも一つの恩送りと思います。

運営委員の服は脱ぎますが、今後はイチJANOGerとしてコミュニティをサポートして行こうと思います。

みなさま本当にありがとうございました。これからもよろしくお願いします。
janog37-taji

P.S.
Tシャツは黒のアクリル絵の具で書いてます。墨汁だとにじみや色移りがしてダメとか。数日前に思い立って画材屋さんを探したり夜中にコンビニでTシャツを買いに行ったりで結構工数かかってる!

 

プログラム言語対抗綱引きで優勝する方法

前述のようにCROSS2015で行われた「プログラム言語対抗綱引き」でGoチームの一員として参加して、幸運にも優勝しました。

そのときの模様がデイリーポータルZの記事になっていますね。現場の雰囲気が伝わる素晴らしい内容なので、記事の援護射撃の意味で優勝のしかたをかいておきます。

 


 

知力+技術8割、腕力2割

そう、強く主張したいのですが、綱引きは腕力でなくテクなのです。

とくに今回のように(腕力体力的な意味で)もやしっこエンジニアによるネタ勝負の場合は腕力勝負では決して無いでしょう。

デイリーポータルZの記事では「このGoの強さには、綱引きって腕力なんだよな…」とありますが、綱引きは技術であると主張します。(注:記事では面白おかしく比喩的に書いているだけと思います)

実は我々は運動会綱引の必勝法!にて戦術を入念?に練っていたのです。ちなみにこれはGoチームらしくGoogle検索をしてみつけたものです。


  • 天井を見てロープを引く

ロープを引いた際におもいっきり仰向けになって天井を見るのです。必勝法の説明によると「空を見て引くこと: 斜め上を見れば、自然に体軸が後傾になり体重を利用しながら引ける」とあります。

実際にそのときの写真を比較してみると一目瞭然。デイリーポータルZ記事の写真を拝借すると

まずGoチームの引き方。後傾姿勢になって天井を見ているのがおわかりでしょう。

http://portal.nifty.com/kiji/150203192687_1.htm 記事より引用↓

 

次に引き合いに出して申し訳ないですがPythonの引き方。正面を見てロープにしがみついているように引いているように見えます。これですと引く力が分散してしまいます。

http://portal.nifty.com/kiji/150203192687_1.htm 記事より引用↓

 


 

  • 利き腕を意識してロープに並ぶ

並び方もあるのです。よくあるのが右左を交互に並ぶかバラバラに並ぶかですが、必勝法によると「右利きの人はロープの左側、左利きの人はロープの右側に並ぶ」です。Goチームは並びも意識していたのです。

再度写真を見てましょう。先頭の彼のみがロープの右に位置し、他は左にいるのがわかります。実は先頭の彼のみが左利きで、他のメンバは右利きだったのです。

http://portal.nifty.com/kiji/150203192687_1.htm 記事より引用↓

 


  • 掛け声をかけやすい言語を選択する。

勝負は言語の選択で決まっていたのです。前述の必勝法には「全員で大きな声を出して引く」とあります。大きな声を出すには、発声しやすい言語を選択しなくてはなりません。デイリーポータルZの記事にもありますが、「PHP」は非常に掛け声がかけにくい言語です。「ぴーえいちぴー!ぴーえいちぴー!」いかにも力が入りにくい。

対して「Go」は圧倒的に発声しやすい。「ゴー!ゴー!」ですからね。

ちなみに、私がGoを選んだのは参加申し込み時に「(受付時点で)一番人気の無い言語」を指定したから。その時点で掛け声云々はまっっっっったく意識してません。Goも書いたことないです、がちゃんと当日夜から書き始めましたよっ

 


  • タイミングよく小刻みに引く

現場で見た方はお気づきかもですが、Goチームは「ゴー!ゴー!」の声に合わせてタイミングをあわせて小刻みに引いていました。他のチームは1秒に1回程度のストロークでしたが、Goチームは1秒に4回程度のストロークでした。

じつはこの小刻みに引く方法、私の住む自治体の市民運動会では禁止されているほどでして、かなり力が入る引き方なのです。

 


さぁ、これで第二回があっても安心ですね。次はエディター対抗綱引きですよね。

あ、念の為、現地にいたのは綱引きだけじゃなくて会場ネットワークをつくるためですよ。

 

 

CROSS2015会場ネットワークの裏話

こっちの記事だとただ札束風呂入って綱引きして遊んできただけじゃねーか、なので本業タスク?について。

CROSS2015 の会場ネットワークをCONBUチームがサポートしました。ディープに技術的な内容は別途書くと思いますので、ここでは経緯とか準備について書きます。



===
宣伝===

技評さんのSoftware Design誌の3月号(2月18日発売)にCONBUメンバが執筆したカンファレンスNWについての特集記事が載ります。みんな読んでね!


経緯

実は前回のCROSS2014 でもご相談を頂いていました。昨年は実行委員さんチームでつくられたそうで、準備段階での技術的なご相談にのっただけでした。

今回CROSS2015については去年の夏頃に実行委員長である山口さんから手伝ってもらえないかとご相談いただきました。CONBUチームはエンジニアコミュニティ間の交流をゴール(の一つ)にしていますので、喜んでサポートさせていただくことにしました。

会場の下見

昨年11月、会場の下見を実施。CROSS2015のブログにそのときの様子が載っております。実はこの会場、現行のインターネット回線はADSLしかなくて、光回線が無い事が判明。しかも、構内配線も電話用のメタル配線のみで、新規回線を引くにはかなりの手間がかかる見込みでした。そこでNTT-PCコミュニケーションズ様のご協力をいただき、今回新たに光回線を敷設していただきました。感謝。

事前の構築テスト

さすがにぶっつけ本番はできないので事前に構築テストをします。実はCROSS開催の2週間前に行われたJANOG35でもCONBUが協力していたので、JANOG35が終わってから直ぐCROSS2015用のNWを設計しなおして構築テストをする必要がありました。

論理構成は同じなのですが、会場がひろいので機材追加やLANケーブルの準備などなど特急で実施。

ケーブルもすべて計測していた長さにあわせて調達して、タグ付けしておきます。ここに写ってるのはごく一部で、この倍以上使いました。

作業のおとも。遅刻メンバーが差し入れてくれたたい焼き。まいうー

本番前日のNW構築

CROSS2015本番前日にNW構築作業をします。

回線工事が本番前日になったので、その工事立会のため9時に現地入り。

回線工事完了。今回敷設したのは2回線です。使ったのは1回線で、予備1回線です。

今回敷設したファイバは40芯あるので、今後他のイベントでもっと沢山ひけますよ(フツー引かない)。

設営前の会場。だだっ広いです。この天井が非常にクセモノで、このデザインでかつ鋼板のため電波が乱反射しまくる恐れがあり、電波調整が非常に悩ましいです。

敷設したLANケーブル。追加や変更もあり、トータルで1Kmになりました。

設置するAPを譜面台にインシュロックで固定します。

APの群れ。

LANケーブルは事前準備してたものの、配線位置の変更や追加もありケーブル長を調べるため当日に測量しなおしました。ウオーキングメジャーを使って測ります。

敷設完了してヤレヤレと自宅に帰ったら、iOS8.1.3のリリースアナウンスが!まじか! ファイルサイズを調べたら100MB~500MB超。明日会場でダウンロードされまくるか?けっこうつらいかも、、、、まぁNWは使ってもらってなんぼの世界ですから、DL禁止なんて言いたくないなぁ。

本番当日

一番広い会場は人がいっぱい。人の数に加えて、こんな風に上方の空間が空いてると無線が飛びすぎちゃってコントロールしづらいです。さらに天井がギザギザ形状でかつ鋼板なので電波が乱反射しまくってる感じ。

一部WiFIが繋がりにくい箇所があり電波の調査をしつつAPの位置や電波強度を調整します。

撤収にむけてケーブルを巻く練習。撤去したケーブルは単純にグルグル巻いただけだと次につかうときに断線したり巻きグセがついて使いにくくなるので、8の字巻という巻き方をします。巻き方の練習中。

チームメンバの情報共有用のホワイトボード。これはシート状でどこでも張れて超便利。NW運用をしているといろんなトラブルが出てくるので、これになんでも書き込みます。へたにWebベースにするよりも短期決戦にはアナログが最強です。

アンカンファレンスをやっている横で撤去作業。練習した8の字巻きがうなります。

撤去完了!完全勝利に酔いしれるS先生。

みなさま、お疲れ様でした!!

CROSS2015で会場NWつくって札束風呂入って綱引きしてきました。

タイトルのとおりでして。

会場NW方面

メインタスク。CROSS2015 にネットワーク担当のCONBUチームとして参加しました。これは別途あとでちゃんと書きます。→かきました。

札束風呂方面

これ。ひとっ風呂してきました。そしたらおツイートしていただきました。

綱引き方面

最強の言語を決める決定戦(ただし綱引きで)に参加。参加受付で「いちばん人気のない言語お願いします」といったらGoをアサインされました。 そしたら優勝しました、マジで。

勝利者インタビューで「Goは書いたことないけど今日から書きます」と言ってしまい、ウソつくわけにはいかないので帰りの電車で環境つくって書きました。

~% brew install go
~% vim tsunahiki.go
~% cat tsunahiki.go
package main
import "fmt"
func main() {
      fmt.Println("CROSS綱引きGo優勝!")
}
~% go run tsunahiki.go
CROSS綱引きGo優勝!
~%

JPA Thanks CONBU トークセッション

JPA の牧さんやゆーすけべーさんからCONBUにお声がけいただいて JPA Thanks CONBU トークセッション に参加して話してきました。

JPA Thanks CONBU トークセッション 発表資料

このイベントはYAPC::Asia2014に協力したCONBUチームのテクニカルな話しをするテックトークとして牧さんが企画されたもので、主な客層はYAPCのスタッフのみなさんでした。当初このお話しを頂いた時、我々のようなネットワークレイヤ属性の人間がWeb開発系のみなさんに楽しんで頂けるようなトークをできるか正直不安満載でした。

CONBUメンバーでトーク内容について数回ミーティングをして、イチから用語解説するようなものよりも、お互いエンジニアなんだからおもしろネタもおりこみつつがっつりテッキーな話しをしようという方向にしました。

当日はピザや発泡性麦ジュースを飲みながらプレゼンするスタイル。CONBUがこれからやりたい妄想について会場のみなさんからアイディアをいただきながらディスカッションできたり、フランクに仲良くしていただいてすごくよいイベントでした。

写真は開始前に一瞬で消えたピザの遺影。。。。とおもったらテーブル下から隠しピザがでてきてビックリ。

 

 

 

 

 

トーク後にゆーすけべーさんに感想を聞いたら、同じWeb開発者属性だと勉強モードで聞くけど、今日はエンターテインメントとして楽しめたとのこと。意図してた方向でよかったかな。

自分のトークはこちら。あまりテッキーでなくまとめ的な内容ですが。

機会と軽食をいただいたJPAさん、会場提供をしていただいた森本@mixi さん、そしてYAPCスタッフの皆さんほか来場していただいたみなさんに感謝。

bash 脆弱性対応: ソースからビルドする

いまどきのOSですと大抵パッケージ管理の仕組みがあるので、yum なりapt-get なり ports update なりで対応可能ですが、ちょっと古めのOSだとサポート切れになっていたりしてパッケージシステムでは対応できないこともあります。

bashの脆弱性(CVE-2014-6271,CVE-2014-7169 )の対応を手元のFreeBSD 8.3 でやろうとしたころ、 portsがどうもおかしくなっているようで8.4に上げる必要がありそう。bashだけのためにOSを上げるは避けたかったので、GNU本家からソースを取ってきて対応しました。

意外と世の中にその方法が書いてないなーという気がしたので、忘備録としてまとめときます。基本的にLinuxでも同じ方法でできるはずです。
こちらのサイトを参考にしました。

[2014/10/02 11:28 追記: 以下で入手しているパッチではCVE-2014-7186CVE-2014-7187 に未対応のようです。現時点ではGNU本家からも対応パッチはでていませんのでご注意ください。]

[2014/10/02 13:09追記:  CVE-2014-7186 に対応したと思われるパッチ bash43-028   がでています。
下記4行目の bash43-0{20..27} の部分を bash43-0{20..28} にしてください。]
 ←手順を修正したので更新(2014/10/06)

[2014/10/06 10:52追記:  CVE-2014-7186,CVE-2014-6277 , CVE-2014-6278 に対応したと思われる パッチ  bash43-028, bash43-029, bash43-030 がでています。下記4行目の27を30にしてください。

本家から bash ソースとパッチを入手する
[bsd ~]$ cd work/
[bsd ~/work]$ mkdir bash ; cd bash
[bsd ~/work/bash]$ wget http://ftp.gnu.org/gnu/bash/bash-4.3.tar.gz
[bsd ~/work/bash]$ for i in `jot -w %03d 27 1` ; do wget http://ftp.gnu.org/gnu/bash/bash-4.3-patches/bash43-$i; done

パッチをあててbuildする。
[bsd ~/work/bash]$ tar zxvf bash-4.3.tar.gz
[bsd ~/work/bash]$ cd bash-4.3
[bsd ~/work/bash/bash-4.3]$ find ../bash43-??? -exec /bin/sh -c 'patch -p0 <{}' \;
[bsd ~/work/bash/bash-4.3]$ ./configure --prefix /tmp/bash_patched && make && make install

念のためテストする
[bsd ~/work/bash/bash-4.3]$ /tmp/bash_patched/bin/bash --version
/tmp/bash_patched/bin/bash --version
GNU bash, バージョン 4.3.27(1)-release (i386-unknown-freebsd8.2)
Copyright (C) 2013 Free Software Foundation, Inc.
ライセンス GPLv3+: GNU GPL バージョン 3 またはそれ以降 <http://gnu.org/licenses/gpl.html>

This is free software; you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.

[bsd ~/work/bash/bash-4.3]$ /tmp/bash_patched/bin/bash
/tmp/bash_patched/bin/bash
bash-4.3$ echo $BASH $BASH_VERSION
/tmp/bash_patched/bin/bash 4.3.27(1)-release

bash-4.3$ env x='() { :;}; echo vulnerable' /tmp/bash_patched/bin/bash -c 'echo hello'
hello
bash-4.3$ exit
exit

既存のbashを削除する
[bsd]~/work/bash/bash-4.3% cd /usr/ports/shells/bash
[bsd]/usr/ports/shells/bash% sudo make deinstall

#補足:削除は以下でも良い
honda# sudo rm /usr/local/bin/bash

buildしたbashを入れる

[bsd]~/work/bash/bash-4.3% ./configure --prefix /usr/local && make && sudo make install
[bsd]~/work/bash/bash-4.3% rehash
[bsd]~/work/bash/bash-4.3% bash --version
GNU bash, バージョン 4.3.27(3)-release (i386-unknown-freebsd8.2)
Copyright (C) 2013 Free Software Foundation, Inc.
ライセンス GPLv3+: GNU GPL バージョン 3 またはそれ以降 

This is free software; you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.

ログインシェル用に/etc/shellsに追加する。

[bsd]~/work/bash/bash-4.3% cat /etc/shells
# $FreeBSD: src/etc/shells,v 1.5.36.1.6.1 2010/12/21 17:09:25 kensmith Exp $
#
# List of acceptable shells for chpass(1).
# Ftpd will not allow users to connect who are not using
# one of these shells.

/bin/sh
/bin/csh
/bin/tcsh
/usr/local/bin/ksh
/usr/local/libexec/git-core/git-shell

[bsd]~/work/bash/bash-4.3% sudo su
bsd# echo /usr/local/bin/bash >> /etc/shells
bsd# cat /etc/shells
# $FreeBSD: src/etc/shells,v 1.5.36.1.6.1 2010/12/21 17:09:25 kensmith Exp $
#
# List of acceptable shells for chpass(1).
# Ftpd will not allow users to connect who are not using
# one of these shells.

/bin/sh
/bin/csh
/bin/tcsh
/usr/local/bin/ksh
/usr/local/libexec/git-core/git-shell
/usr/local/bin/bash

bsd#

[2014/10/06 追記: 脆弱性チェックはgithubで公開されているツールがよさそうです。

% git clone http://github.com/hannob/bashcheck.git
% cd bashcheck
% vi bashcheck
先頭の /bin/bash を /usr/local/bin/bash 等に変更する
% ./bashcheck /tmp/bash_patched/bin/bash
Testing /tmp/bash_patched/bin/bash ...
GNU bash, バージョン 4.3.30(3)-release (x86_64-unknown-freebsd8.4)

Variable function parser pre/suffixed [%%, upstream], bugs not exploitable
Not vulnerable to CVE-2014-6271 (original shellshock)
Not vulnerable to CVE-2014-7169 (taviso bug)
Not vulnerable to CVE-2014-7186 (redir_stack bug)
Test for CVE-2014-7187 not reliable without address sanitizer
Not vulnerable to CVE-2014-6277 (lcamtuf bug #1)
Not vulnerable to CVE-2014-6278 (lcamtuf bug #2)
%

SupervisorでMySQLのプロセス管理

プロセスの稼働管理をして死んだら再起動してくれるツールといえばdaemontoolsが超定番で長らく便利に使っておりましが、さすがに10年以上更新されていないので今どきのOSで使うのはソースからコンパイルしたりと結構手間です。

最近のubuntuだとSupervisorが便利なのでこれでMySQLのプロセス管理をしてみます。

参考:

http://qiita.com/yujiod/items/a35c53221bdb3468e105

 https://gist.github.com/solar/3900946

 

supervisor インストール

# apt-get install supervisor

インスト完了後にsupervisorは起動してるはずだが、未起動だったら以下を実行。

# service supervisor restart
以下のmysqldの起動スクリプトmysqld.conf を作成する。

/etc/supervisor/conf.d$ vi mysqld.conf

[program:mysqld]
command=/usr/bin/pidproxy /var/run/mysqld/mysqld.pid /usr/bin/mysqld_safe –pid-file=/var/run/mysqld/mysqld.pid –user=mysql
autostart=true
autorestart=true

 

supervisorにMySQLを登録する

$ sudo supervisorctl reread mysqld
mysqld: available

$ sudo supervisorctl add mysqld
mysqld: added process group
mysqlを停止する

$ sudo service mysql stop
mysql stop/waiting

supervisorのmysqlを起動する

$ sudo supervisorctl restart mysqld
mysqld: ERROR (not running)
mysqld: started
$ sudo supervisorctl status
mysqld RUNNING pid 23862, uptime 0:00:05

起動確認
$ ps ax|grep mysql
23862 ? S 0:00 /usr/bin/python /usr/bin/pidproxy /var/run/mysqld/mysqld.pid /usr/bin/mysqld_safe –pid-file=/var/run/mysqld/mysqld.pid –user=mysql
23863 ? S 0:00 /bin/sh /usr/bin/mysqld_safe –pid-file=/var/run/mysqld/mysqld.pid –user=mysql
24232 ? Sl 0:00 /usr/sbin/mysqld –basedir=/usr –datadir=/var/lib/mysql –plugin-dir=/usr/lib/mysql/plugin –user=mysql –log-error=/var/log/mysql/error.log –pid-file=/var/run/mysqld/mysqld.pid –socket=/var/run/mysqld/mysqld.sock –port=3306
24267 pts/2 S+ 0:00 grep mysql
元々あった mysql自動起動を無効にする
参考 http://blog.goo.ne.jp/59099/e/7cfc3adee76363885fe25707fa4c1963

$ sudo vi /etc/init/mysql.conf

↓ 以下をコメントアウトする
#start on runlevel [2345]$

 

動作テスト
mysqldをkillしてみると即座に再起動することを確認する。

$ ps ax|grep mysql
25307 ? S 0:00 /usr/bin/python /usr/bin/pidproxy /var/run/mysqld/mysqld.pid /usr/bin/mysqld_safe –pid-file=/var/run/mysqld/mysqld.pid –user=mysql
25308 ? S 0:00 /bin/sh /usr/bin/mysqld_safe –pid-file=/var/run/mysqld/mysqld.pid –user=mysql
25681 ? Sl 0:03 /usr/sbin/mysqld –basedir=/usr –datadir=/var/lib/mysql –plugin-dir=/usr/lib/mysql/plugin –user=mysql –log-error=/var/log/mysql/error.log –pid-file=/var/run/mysqld/mysqld.pid –socket=/var/run/mysqld/mysqld.sock –port=3306
31699 pts/5 S+ 0:00 grep mysql

$ sudo kill 25681

↓別のPIDで上がっていることが分かる

$ ps ax|grep mysql
31976 ? S 0:00 /usr/bin/python /usr/bin/pidproxy /var/run/mysqld/mysqld.pid /usr/bin/mysqld_safe –pid-file=/var/run/mysqld/mysqld.pid –user=mysql
31977 ? S 0:00 /bin/sh /usr/bin/mysqld_safe –pid-file=/var/run/mysqld/mysqld.pid –user=mysql
32352 ? Sl 0:00 /usr/sbin/mysqld –basedir=/usr –datadir=/var/lib/mysql –plugin-dir=/usr/lib/mysql/plugin –user=mysql –log-error=/var/log/mysql/error.log –pid-file=/var/run/mysqld/mysqld.pid –socket=/var/run/mysqld/mysqld.sock –port=3306
32370 pts/5 S+ 0:00 grep mysql
$

 

 

 

会場ネットワークの裏話 ー YAPC::Asia Tokyo 2014

先日行われた YAPC:Asia 2014 では無線ネットワーク提供が行われましたが、CONBUというネットワークエンジニアの有志グループが協力しました。
またCONBUの取り組みについては当日のトークでもやってきました。ちなみにこのトークは当初は私がやる予定ではなかったのですが、前夜に突然お鉢が回ってきたのでスライド作りが結局当日になってしまいトーク開始5分前にようやく形にしました。それでも会場は満席で話しを聞いて頂いたので(中身の評価はさておき)なによりです。


技術的にディープなお話しは別途書く機会があると思いますので、ここでは経緯とか準備とか当日の裏側を書こうと思います。

 

[9/6 追記: テクニカルなお話しは CONBUのブログ をどうぞ]

  • YAPC とCONBUの関わり

YAPC会場ネットワークへのCONBUの取り組みは昨年のYAPC:Asia 2013につづいて今年で2回めということになります(昨年はYAPC network teamと名乗っていました)。きっかけはとあるイベントで牧さん(去年までのYAPCの責任者)と知り合ったことです。牧さんは当初は業者に発注するつもりだったそうですが、見積もりをとったところ相当の額だったので躊躇していたそうです。そこで同じ費用をかけるなら、コミュニティ同士が交流できるような有意義な使い方をしたいということで、LLやjus方面で有名な法林さんを介してご相談を頂きました。

[9/4 10:32 追記  牧さんの記憶によると「お金払うのはいいんだけど、払ったらそれで終わりでなんにも残らないから、それだったらコミュニティの横のつながりを増やす方向でやりたい」とのことです。牧さんコメントありがとうございます!]

 

 

牧さんのこの発想には大変共感を持てました。IT系の技術コミュニティは沢山ありますが、言語系やサービス開発系のアプリ寄りのコミュニティのエンジニアと我々のようなネットワーク系のコミュニティのエンジニアはかなり関わりが薄いのを実感していました。ときおりJANOGなどのネットワーク系のカンファレンスでアプリ開発者にセッションを持ってもらうことは有りますが、なにかが足りない感を抱いていました。アプリ開発のかたにゲストで話してもらうのはそれは大変有意義なのことですが、ワンポイントで終了になってお互いが興味をもつ機会としては効果がいまいちな気がしていたのです。

 

そんなときに牧さんにコミュニティの交流を大切にしたいという言葉を聞いてすごく共感できたのです。IT系のカンファレンスの運営スタッフをやったことがあるかたは分かるかもですが、スタッフ同士がすごく仲良くなれます。我々のようなネットワークエンジニアはアプリ開発はあまり得意ではないけど、得意なネットワークで貢献できれば、スタッフ同士が深く興味をもつことができてよい交流の機会になるのではないかと思いました。

 

もし、このときの相談内容が、業者に頼むとすごく費用がかかるから安くやってくれない? ということでしたら即座に断ったでしょう。CONBUの活動でよく誤解されるのですが、我々は有志の集まりであってネットワークを安価に構築する業者ではありません。エンジニアやコミュニティ同士の交流をするのもCONBUのゴールの一つです。カンファレンスを運営するチームの一員としてお声がけ頂ければよろこんで協力したいと思っています。
もし、カンファレンス(特にビジネス向け)でネットワークをだすことだけがお望みであったら、きちんと成果の保証をしてくれる世のSIerや専門の業者に依頼されるがよいかと思います。

  • YAPC::去年とYAPC::今年
今年の構成はこちら
昨年、今年と会場が同じ慶応大日吉キャンパスの協生館なので、会場ネットワークも去年と同じだろ?と思われるかもしれません。じつは準備段階から機器や構成などなかり変わっています。
(去年の話しはこちらをどうぞ)

 

会場にいかれた方はご承知と思いますが、日吉でのYAPCは会場が複数あります。かつ会場同士が直接繫がっているわけでなく通路で隔てられています。この構成がネックでして、通路はカンファレンス参加者だけでなく一般人(学校関係だけでなく近所の人も含めて)が通るところなので、そこにLANケーブルや機器は一切置けないのです。

 

会場同士の通信のためには配線をしなくてはなりませんが、我々自身でLANケーブルを引くことは前述のとおりできませんので、協生館の既設の配線を借りました。実はこの部屋をつなぐ構成が去年と大きく変わっています。去年は施設の配線だけを物理的に借りた(つまり光ファイバやメタルケーブルの状態)のですが、それですと借用の手続きや事前の配線調査、当日の既設機器からの抜線及び結線作業、さらに後日の撤去作業やらで大変な労力がかかっていました。

 

そこで今年は構内の既設設備はそのまま使用して物理的には一切変更しないという方針で行きました。
つまり、配線とそこに繫がっているネットワーク機器の接続はそのまま使うということです。といっても大学側の既設の通信とYAPCの通信は分ける必要があるので、そこは論理的に分離(VLAN)しました。ここがなかなか悩ましくて、既設機器は大学設備なのでCONBUチーム側ではさわれませんので大学側に依頼する必要があります。

 

また、去年はインターネットと通信するためにNTT,ISPと契約して協生館にフレッツ回線を直接引き込みました。これも会場側との調整やら工事やら配線やらで相当重いタスクでした。そこで今年はWIDEプロジェクトさまとビッグローブさまに協力を頂いて会場に新規回線を敷設せずにやりました。ところが、これもなかなか難題でして、各所との調整が大変難航しました。それでも思いがけずにビッグローブ様には10Gbps回線をご提供頂いたり広域のL2接続する上でのトラブルを経験できたりと今後につながる良い機会となりました。

 

また、忘れてはならないのが今回会場となった慶応大学大学院KMDの加藤教授の支援です。先生は今回のCONBU活動を全面的にバックアップをしてくださり、学内外の各所との調整にとどまらず、機器設定や果ては当日の床配線まで、CONBUメンバーがまじビビるほどのご協力を頂きました。加藤先生はインターネットの黎明期を支えてきた巨人の一人で、我々ネットワークエンジニアにとっては仰ぎ見る存在です。今回ご一緒させていただき光栄に思っており、またそのような機会を作っていただいたYAPCには大変感謝しています。

 

ちなみに、メインホール(藤原洋記念ホール)の入り口前にあるピラミッド付近でもWiFiがよくつながることを気づかれましたか?上述のようにこの場所は公共スペースなのでネットワーク機器は設置できないのです。が、ピラミッド付近は吹き抜けになっていて、上のフロアとも空間的につながっています。その階上フロアにひっそりと無線アクセスポイントが設置されていたのです。この設置場所はKMDのフロアのため、加藤先生の粋なはからいで実現できました。ピラミッドの椅子に座って休憩されていた方々も存分にお仕事?が出来たでしょうか。

  • 交流の機会
会期中は事前にあまり準備できていなかった監視系の構築や、超満員の会場でWiFiがつながりにくくなったため急遽無線アクセスポイントを増設したりと何かとバタバタしてあまりトークを見られませんでした。それでも懇親会やスタッフ部屋など普段接点のない方々と沢山お話ができました。

 

YAPCは懇親会が無料であったり、無限コーヒーや無限ドリンクなどほんとにソーシャル系の仕掛けが充実してるなぁという印象です。とくに協生館一階にあるHUB(英国居酒屋?)を貸しきって参加者は無料の(ほぼ)無限ビールを飲めるとあって連日大変な賑わいでした。
YAPC参加者が去年は1100人、今年は1300人超と増加しているのもうなずけます。

 

スタッフが沢山いたので初見ではこんなにいらないのでは?と思いましたが、会場が複数あるので各会場毎に相当の人数が必要で、また適切な役割分担と適度な余裕をもたせていることでうまく回っているなという印象でした。
今後もなにかしらで一緒につくっていきたいですね。