try.この広告は、90日以上更新していないブログに表示しています。github.comvital.vimに「Data.BigNum」という名称でmergeされました。vital.vimを入れればお使いいただけます。Eulerを解こうと思ったのがきっかけでした。Eulerを順に解いていくと、3問目に1つの壁にぶち当たります。素因数のうち最大のものを求めよ。+2147483647)を超えています。最近登場した言語であれば標準で多倍長整数が扱えますし、そうでない言語でもそれを実現するライブラリが既にあります。Eulerを解きます。Eulerを解くことで基本的な数値演算、リスト/辞書の扱い方、map/filterの使い方、外部ファイルの読み込み、ライブラリの読み込み方法・・・などを段階的に学習できます。よい題材だと思います。Eulerを解き進めたかったのですが、3問目で止まってしまうのは悔しい。遅くてもいいから四則演算ができるものを作りたい、ということでググりつつ自分で野良実装をしました。無事mergeされました。3のコード例が以下です。あとは文字列とBigNumデータ間の変換をする関数などがあるだけの、ごくごくシンプルなものです。Eulerやりつつ機能追加できればいいなあと思っています。Please」プレイしたゲームがあまりにも自分の仕事内容を思い起こさせるものだったのでご紹介します。Please」というゲームで、Steamで980円で購入することができます。追記iPadでもプレイできるらしい。Steamにあるゲーム紹介の文章を以下に貼ります。10月度勤労抽選により貴方を入国審査官に命ずる。即座配属のため、至急グレスティン国境検問所の入国管理省に赴くように。貴方とその家族には、東グレスティンの8等級の住居が割り当てられる。アルストツカに栄光あれ。ここは、共産主義国アルストツカ。隣国コレチアとの6年間の戦争がついに終わり、国境の町グレスティンの半分を正当に取り戻し、晴れて国交を再開することに。あなたの仕事は入国審査官としてアルストツカへの入国者を審査することです。仕事を探している移民や観光客の中に潜む密輸業者、スパイ、テロリストたちを見極める必要があります。入国希望者のパスポートをはじめとする数々の書類をもとに、入国を認めるか、拒否するかを判断しなければなりません。説明文にある通り、このゲームでは国境に来る人が提出してくる書類を見て、全てが正しいかどうかを判定するわけです。これをIT業界ではフローチャートと言います。端的に言ってしまえば、人間フローチャートをするゲームなのです。以下では、ゲームの中でどのようなことをやらされるのかを見て行きたいと思います。ゲームの流れゲームは1日単位で区切られており、日の始まりにルールが通達されます。1日のうちに何人の人間をチェックしたかで給料が決まります(歩合制)。書類に不備がある人の入国を認めてしまう、また逆に不備がないのに拒否してしまった場合は当然ペナルティとなります。この基本ルールに加えて、入国希望者とのいろいろなやりとりによるストーリーがあってそれが面白いのですが、そういう要素については全部割愛。入国はアルストツカ国民のみ1日目はチュートリアルですから、提出されたパスポートがアルストツカのものであるかどうかだけを確認すればOKです。全ての書類は期限内でなければならない1日目の「アルストツカ国民のみ」という制限が外れ、正規パスポートを所持していれば外国民でも通れるようになりました。パスポート番号、と情報満載です。これらを分解すると以下の様な確認事項があります。全ての書類は期限内でなければならない外国人は入国券が必須2日目のルールに「入国券」が加わりました。入国券には有効期日のみが書いてあります。このぐらいのルール追加ならまだまだ余裕ですね。外国人は入国許可証が必須さて、ここで登場する「IDカード」と「入国許可証」が確認項目を一気に増やすことになります。IDカードに記載されている身長/体重はよく見逃してしまう危険項目です。(身長は人物後ろの高さの線、体重は画面下部に表示されている)また、入国希望者に対する質問との照合も必要になります。印が正しいかパスポートと入国許可証に記載された氏名が一致しているかパスポートと入国許可証に記載されたパスポート番号が一致しているか入国許可証に記載された入国目的と発言した入国目的が一致しているか入国許可証に記載された滞在期間と発言した滞在期間が一致しているか入国許可証の入国期限が期限内かと、このように毎日ルールがどんどん増えていきます。アルストツカは他国と戦争状態にあり情勢が不安定ですから、日々刻々とやることが変わってしまうわけです。テロが起こったりするとそのような人物を入国させてはいけないということになりますから、書類とか確認項目が山盛りになっていってしまいます。それでは一気に飛んで、15日目の確認項目を見てみましょう。書類が目に見えて増えているのがお分かりいただけると思います。規則に加えて指名手配犯の顔写真リストが渡されており、それも確認しなければいけません。不正を見つけたらそれを指摘してつっこみを入れる必要があるのですが、つっこみを入れると入国希望者の指紋を採取します。その際、指紋データとの照合も必要になります。入管省ID記録の氏名(もしくは別名)とパスポートの氏名が一致しているか入管省ID記録の指紋と採取した指紋が一致しているかこれでもまだ書き出しきれてないはずです。やばさが伝わるでしょうか。この段階に来ると、日が変わって新たな条件が与えられた時点で「アッ、もう無理」と悟ってしまいます。(既にだいぶネタバレを書いてしまっていますが、)ゲームの紹介はこのぐらいにしておきます。このゲームをインフラエンジニアに薦めるのか?このゲームは「人は必ず間違いを犯す」ということを実にわかりやすく痛感させてくれるからです。システムの構築、設定の変更、障害時の対処・・・運用で起こる様々なイベント、あなたの会社では自動化されているでしょうか。それともWordやExcel、Wikiなどで管理された手順書を元に人が行なっているでしょうか。全てが自動化されており、ルーチンワークなどないという環境にある方はおめでとうございます。ない環境で働いている人がまだまだ大半だと思います。できればエンジニアの人達には常に「これを手作業でやるのは無駄だから自動化を検討しよう」という意識でいて欲しいのですが、中にはフローチャート通りに間違いなくこなすことに非常に長けている人というのがいます。フローチャートに沿った手順をこなすのを得意としていて「自分は間違ったことがない、だから大丈夫」だと思っているエンジニアがいたら、一刻も早くこのゲームをプレイしてください。早くミスをしてください。別にフローチャートが得意でなくても、運用事故を起こしたことがない人にはおすすめします。他人からいくら言われても、やはり自分で実際に体感しなければわかりませんからね。ゲーム内でどんどん事故を起こして、仕事では事故を起こさない仕組みづくりを心がけたいものです。Please」Tweet広告を非表示にするもっと読むコメントを書く2015-01-18渦巻きの座標を返す関数uzumaki探したけど意外にもなかったので作りました。下図のような渦巻状の座標を返します。2014に参加してきました。今回の会場はmixiさん。最後の方はピザを取りにいくお手伝いをしていたために全ての発表を聞くことはできませんでしたが、ほとんどについては拝聴して楽しませて頂きました。以下、特に気になった発表について書きます。@kaoriyaVimをVimたらしめているものは一体なんなのか、アイデンティティについてのお話でした。今回の資料ははVimというものの立ち位置を説明する際に立ち返ることになるものになりそうです。人から「なんでVimなの?」「なんで○○使わないの?」と言われた時に、自分の中で確固とした理由・意見を持つことは、今後Vimに本当にcommitしていく価値が本当にあるのかどうかを見つめるという意味で非常に重要なことです。@ujmProcessManager及びPM2ライブラリの紹介でした。Civ5の話が強烈すぎてPM2の方をあまり覚えてない。笑いまくっていた気がする。@c0hamaカッコを自動で閉じようという話。私はこの発表をきいて、「ああ、俺自動補完あまり好きじゃないんだなあ」と思いました。(|)のときに)を入力すると()|になるのにいつもイライラしてしまうんですよね。カッコならまだしも、シングルクォートとダブルクォートが混在するようなコードを書くときは本当につらいので...そういうことを見つめ直せたのでよかったです。@supermomongaこの唯一無二の芸風である。@haya14busagifによる操作説明が超わかりやすい。(ああいうのどうやって作るのかな)incsearch.vimは、今回の発表で一番気になったプラグインでした。私は今回はじめてVimConf(およびVimConfに連なるこれまでの勉強会)に参加しましたが、TwitterやLingrを見ると参加者の全体的な満足度がとても高いように感じました。「過去最高だった」「感極まってきた」「便利」との感想が飛び交っています。(Lingrに生息している一部の人は日常的に発している言葉ですが。)懇親会も、私が見た限りではどのテーブルもかなり活発に会話が行われているように見受けられました。50人超の勉強会でこういう状態は、結構すごいことなのではないでしょうか。いうのも、過去に自分が参加した同規模の勉強会を振り返ると、発表を聞いてそのまま誰とも話さず解散となったり、懇親会で周りも自分と同じくらいの初心者ばかりで、時たま気まずい時間が流れてしまう、などを経験したことがあったからです。Vimコミュニティに長年関わっているujihisa(@ujm)さんは、今回の感想記事で以下のようなことを書いています。日本のVimコミュニティは今年をもって別の段階に進化したといえるでしょう。大きく分断されることなく、かつ、独裁ではない。持続可能な有機的コミュニティができています。この事実は、目に見えるものではないものの、ものすごく偉大なことではないでしょうか。https://gist.github.com/ujihisa/1e8925470d01794a002c私はこれを読んで、大学時代に少し勉強したスモールワールドのことを思い出しました。スモールワールドスモールワールドは「友達の友達の友達の...」と辿っていくと6〜7ステップで全世界の人に辿り着ける、という「7つの隔たり」の話に象徴されるような、現実の人間関係をモデル化した複雑ネットワークという分野の言葉です。詳しくは各自ググっていただきたいと思いますが、ざっくり言うと複雑ネットワークではグラフ理論のノードを人間、エッジを知りあい関係で表します。以下に、かなり極端な例を出してみます。上のようなグラフの場合、中心の3人にエッジが集中しています。これは勉強会でいうなら、講演会に近いようなタイプが連想されます。真ん中の3人は発表者であったり、主催者であったりといった存在です。このような構造の場合、エッジが集中している人間にかなり依存した状態になります。ここで、例えば一番エッジをたくさん持っているノードを消してみましょう。すると、左側の多くのノードが非連結な状態となってしまいました。特定の人間に関係が集中したグループの場合、中心人物が関係できなくなると、グループとして存続することが危うい状態となります。計画をたてる...などなど、会を催す上での諸々に中心人物がコミットすることができなくなり、結果数回で消滅の憂き目を見る...このような勉強会は数多くあります。次に、同じノード数、エッジ数のもう1つのグラフを見てみましょう。エッジを多く持つノードはありますが、最初のグラフほど極端な形ではありません。このグラフについても、ノードを1つ消してみましょう。独立するノードが発生してしまいましたが、最初のグラフに比べればだいぶましな状態です。このような関係性であれば、参加者に様々なタスクを任せたり、1人が急遽参加できなくなった場合でもコミュニティ自体は存続し続けられる可能性が高いです。コミュニティが成長する際、最初のグラフからだんだんと2つ目のグラフに移行していくことが多いと思います。*1上記の2種類のグラフは、構造の説明の為に同じノード数、エッジ数のものを例として出しましたが、実際はエッジ数は基本的に増えていきますから、例よりももっと網の目のような構造に至るでしょう。先ほど書いたような、「ノードを1つ消したときにグラフ全体の関係性がどのように変化するか」は、グラフの平均距離を計算することで数値化することができます。詳しくはこの辺を読んでみてください。ここでようやくVimConfの話に戻ります。コミュニティと貢献ujihisaさんの言う「持続可能な有機的コミュニティ」という言葉を、私は前述した複雑ネットワークの話として捉えました。このような構造を作り上げるためには、黎明期の中心人物が継続して貢献することが必要になるでしょう。calendarなどに代表される精力的な記事の公開が大きく寄与しているのではないでしょうか。結果、明確な中心的人物というものがなく、その人がいない状態でもコミュニティとしては正常にイベントを作ることができる。このような構造は新たなノードを取り込むという意味でも有利なように思います。私は、今回のVimConfの参加者の中でもVimの使い方が極めてライトです。Vimは日常的に使ってはいるけれども、vimrcを編集する頻度も少ないし、プラグインを導入することもそんなにありません。scriptも全然書けません。それでもLingrに毎日いたら仲良くしてくれる方がたくさんいて、それだけで既にいろんな恩恵を受けていると感じます。script本をthincaさんから頂いたので、そのレビュー記事とか、プラグインを作るとか...とにかくいろいろと、contributionしていきたいなあということは考えています。2014*1:別の移行パターンとして、中心人物同士のみで強固なクラスタが構成され、他のノードがそれぞれ孤立した状態になる、という状態もあるかと思います。この場合はコミュニティのノード数がなかなか増えないという問題に陥ることが考えられます。2014への参加とコミュニティの関係性について思ったことTweet広告を非表示にするもっと読むコメントを書く2014-09-02PuTTY設定覚書WindowsからPuTTYを使ってCentOSにログインし、ログイン先ではtmuxを使用している。使用しているエディタはvim。tmuxはtmux.conf、vimはvimrcをgithubにあげているからよいのだけど、PuTTYの設定を書くとこがなくて怖いです、ということでここに書く。#5巨体と独特の体系が特徴の海水魚氏から「レポート記事はいつだ」と圧力をかけられまして、とりあえず脳内ストリームを起動してdumpしたやつを貼り付ければいいんじゃないの、というわけで書いています。Scriptを書くわけではなく、vimrcの編集に熱心なわけでもありません。仕事柄、まっさらな環境で作業することもあるため、あまり凝った構成にするといらいらが増すような気がしており、あまり増やしたくないなあと思っているわけです。Vimの標準機能もまだまだ知らないわけで、momonga.vimでは日頃Vimを使っていて「これがこうなったらなあ」と思っている少し不満な部分、些細な部分を調べ、vimrcを編集し、コマンドに慣れるという作業を本腰をいれてやる、という行動パターンです。今回の調べたい・直したいのは主に以下の2点でした。日本語入力もうちょっとなんとかならんのというわけで前半でこの2つをあーだこーだしました。テキストオブジェクト調べる前はもっと仰々しいものを想像してたのですが、要は「いろんなキーバインドで範囲指定が楽にできますよ」「オペレータとかと組み合わせてエディットが便利」ということらしい。テキストオブジェクトやオペレータの拡張プラグインもいろいろあるようなので、おすすめされるままにいれたりしました。あれ、でもいれただけで全然試してない。この辺でテキストオブジェクトふ~んという気持ちが増大しており、次に進むことにしました。日本語入力この時ちょうど仕事で日本語の文章をたくさん書く必要があったのですが、まあめんどいんですよね。挿入モードで日本語入力にしておくと、ESCと[半角/全角]を両方押さないとその後のカーソル操作ができません。これがもっと快適になればなあという思いで調べ始めたのですが、正直あんまりいい解決方法が見つからなかったです。挙句の果てには世界最大の硬骨魚氏覚えてないのですが、誰かに「私は日本語の文章書く時Vimは使いません」とか言われてしまって、(・o・)みたいな顔になりました。いうわけでこれも割とどうでもよくなりやめました。mola氏は普段日本語のテキストもVimで書いており、上のようなことを言った覚えは無いということでした。謹んでお詫び申し上げます。用意していたタスクがいい感じに萎んだのでじゃあ何するかということで、最近Lingrでujm氏がClojureを進めているので、「ああ、S式系の言語をまたやってみたいもんだなあ」と考えて環境をいっちょ作ってみましょうか、という気持ちになりました。Lisp)とMathematicaです。MathematicaはLispに分厚い皮をかぶせたものだと思っている。(超語弊あり)ところがここでネットワークという壁が私に立ちふさがります。普段私はWiMAXとか持っていなくて、いつも他人の無線LAN環境におんぶにだっこなのです。momonga.vimでは毎回滑空によって飛翔する性質を持つリスの仲間氏の無線にタダ乗りさせてもらっており、みんなそこに接続するので速度とかお察しレベルです。そりゃしょうがないわけです。hogeとかやると「100個ぐらいインストールするものあるわー^^」とか言いやがるわけで、みなさんの貴重な無線帯域を圧迫し、かつ自分は何もできないという状況の完成です。勉強会にきて環境構築などやってはいけません。環境構築というのはこの世で一番つらい作業であり、忌避したいです。一回こっきりの作業であることも多く、問題解決は面倒で、環境が違った場合知識の敷衍が難しくてほんと嫌いです。そんなこんなで全体的なやる気は減衰減退、でもClojureはやりたいので4ClojureというサイトでClojureの問題を20問ぐらい解きました。まとめこの勉強会は人間が少ない。ブログを報告するスターをつけました引用をストックしましたストック一覧を見る閉じる引用するにはまずログインしてくださいログイン閉じる引用をストックできませんでした。再度お試しください閉じる限定公開記事のため引用できません。