予測不可能な決定系

決定論的なのに予測が不可能……つまり, そういうことだよ

ssh コマンドのユーザーの指定方法について

特定の状況下において今までできていた鍵認証を使った ssh 接続ができなくて困ってたけど,
とりあえず解決したので,その個人的メモ.

特定の状況

普段使ってるメインマシンの調子が悪かったので久しぶりにOSを入れなおすことにした.

そこで今まで使ってたホームディレクトリ下にある .ssh ディレクトリを一時的に外付け HDD に退避して,
OS入れなおし後に新しいホームディレクトリに戻した.

そんな状況.

問題

入れなおし前までできてた VPS への鍵を使った接続ができなくった…

Permission denied

…困った.

やったこと

秘密鍵パーミッションを変更したり,
ssh コマンドに v オプションとかいっぱいつけてログ眺めたりした.
とりあえず秘密鍵が読めてないらしいけど,
どうすれば解決するかはわからない.

ムキー!

解決

友人に状況説明してログ見せたら,

友「鍵が読めてないね」
自「だよね」
友「どんなコマンド?」
自「こんなコマンド」

ssh -p *** -i private_key user@homuhomu

友「"user@"じゃなくて"-l user"使ったら?」
自「ほぅ,どれどれ…」

解・決!

まとめ

"user@"で指定した場合はサーバー側の情報使ってて鍵が読めなかったとそんな感じだろうか…
それだと入れなおし前に接続できてた説明できないけど,とりあえず解決はしたから良しとする(適当).

CLR/H #85 に行ってきた

10月19日のCLR/Hに行ってきた.


今回は個人的に興味ストライクな内容ではなく正直最初は行こうかどうか迷っていたんだけど,
結果的には参加できてよかった.
技術的な内容はそんなに多くはなかったけど,普段なにげなくやってることや考えてることを違う視点で眺めたみたいな感じだった.


以下,簡単な振り返り&感想

複数のMSテクノロジーで会社のITインフラを改善してみた!

ナオキさんのセッション.
タイトル通りMSの色々な製品を駆使して社内インフラをより良いものにしていったお話.

元々なんとなーく興味のある話で,普段当りまえのようにお世話になってるインフラについて,裏で頑張ってくれている人がいるから普段あまり不自由なく仕事ができているという当たり前で有り難い話.

内容的にもMSの製品やサービスで知らないものがたくさん出てきて,
普段業務で使ってるツールなんかももっと効率良くできるんだろうな…と思った.

都会とは言いがたい街で勉強会が続いている理由〜北海道北見市 Ohotech の事例〜

北見工大の西原 翔太 (@tomio2480)さんのセッション.
Ohotech の今までの実績や想い,これまでの苦労などのお話.

北見は自分の地元ということもあって Ohotech については前から気になっていたから,
その実績や規模なんかが具体的に聞けたのがよかった.
でも,それ以上にコニュミティを運営する上での苦労や考え,失敗や成功などの話を聞いていると,
これからの数学勉強会@札幌をどうしていきたいか…
などと考えはじめて,色々と考える起点となった…かもしれない.

ハイパーおやつタイム


おいしい!

エンジニアのためのパフォーマンス入門〜人は見た目が 9 割?〜

日本マイクロソフトの佐々木順子さんのセッション.
言動によって人はどういう印象を受けるか,良い印象をもってもらうためにはどういう点を意識すればいいのか,というお話.

プレゼンの時や初対面の人との会話などで良い印象を持ってもらいたいのはもちろんだけど,
それ以外にも相手や状況に応じて
「どういう印象を与えたいか」
を考えて,そのためにはどういう振舞いをすべきかを意識して行動することが大事.

一つ前の西原さんのセッションを例に理由とともに説明していた辺りは,
自分も感じていた印象を理屈で説明された感じで「おぉ!」ってなってた.

普段の何気ない言動からでもそういう部分を意識することで練習することができる.

具体的には,話すときの声の緩急や大小だったり,ジェスチャーや姿勢だったり,表情やアイコンタクトだったり,
服や身に付けているものの色だったり,空間の使い方だったり…
と項目として挙げると多いけど,
その中から1つ,2つでも自分に出来そうなことを少し意識していくだけでも大分違いそうな気がする.

まとめ

全体を通して「これがわかったー」とか「技術的にここが面白かったー」というものではなかったけど,
だからこそ色々なものを色々な視点で考える良いきっかけになったと思うし参加できて良かった.

今回のスピーカーの方々はもちろん,スタッフの皆さん,ありがとうございました..

Code2013 に参加した

去年も参加したイベント:CodeJpに今年も参加してきた.

http://codejapan.jp/2013

今回は去年よりもさらに"コードで語る"というのが意識されたイベントで,その為の企画が多かった.

一日目

Drew Robbinsさんのキーノート

まずはDrewさんによるキーノート.
去年教えてくれた
"Learn, Practice, Share"
の合言葉をふりかえってから,ちょっとしたクイズ.
何の言語で書かれた"Hello, World"かを当てるものだったけど半分以上分からなかったorz

その後に最近のトレンドや動向などからどういったものが注目されているのかの話があり,
最後に"Learn, Practice, Share"を一歩押し進めた具体的な方法として,

Learn -> Clone
Practice -> Commit
Share -> Push

という置き換えがあった.
確かに今ならこういった方法が一番取っ付きやすくて有益だと思う.

きんぎょばち

今回のイベントのメイン,きんぎょばち.
Teach Me・Teach Youと題して,
「×××を誰か教えて!」 or 「×××なら説明できるよ!」
というテーマを事前に募集して,その中から適当にテーマを選びグループになり各々でワイワイやるという試み.

一日目は

  • Google Chorme拡張の作り方
  • Python + Django の話
  • webアプリのUIテストの自動化

に参加したけど,特に自動UIテストの話は使ってる技術は違えど普段自分が仕事で四苦八苦している部分でもあったからかなり興味深かった.

フリータイムなど

前回は夕食前に水の王国ラグーンで少し遊んだんだけど(一日目だけ利用料がイベントの参加費に含まれている),
今回はきんぎょばちが盛り上っていたのもあって,気がつけばあと少しで夕食という時間だったためラグーンで遊ぶことはなかった.
(ちょっと残念だけど,本来は正しい時間の使い方か..)

コードクイズ

去年に引き続いてのコードクイズ…のはずだったけど,どうやら回線(というかDB)の調子が悪くてあまりにもレスポンスがにぶかったので次の日に順延.
こういうトラブルも御愛嬌.

その後

各々温泉に入ってからは麻雀組や翌日のコードゴルフ(事前にお題が発表されている)に取り組む人がいる中,
自分は別のことでもくもくしたり普段はなかなか話せない人とずっと歓談してた.
(最初こそコードに関する話だったけど後半は全く関係ない話だった(ゲームとか漫画とか…).それはそれでいい…かな…)

二日目

コードクイズ

去年と同様に事前にサイトで問題を募集して皆で解いてスコアを競うという形式.
景品が魅力的でもっと頑張りたかったけど,問題が難しくて当てずっぽうで解いた問題もかなりあった.
やはり高得点を狙うには自分で問題を出すしかないか…

コードゴルフ

あるお題のコードに対していかに短かく書きかえることができるかを競うコードゴルフ
お題はJavaScriptで書かれたデジタル時計.
お題のコード自体は前日に発表されていて,当日に発表されたチーム単位で一つの成果物を出し,
最終的なコードの短かさを競った.

自分はJavaScriptを書いたことがほとんどなくアルゴリズムの部分も誰もが考えつくような部分しか思いつかなかったからチームの役には全く立てなかったけど,
JavaScriptのテクニックやコードを短かく書く技術などの話が聞けたのは面白かった.

なによりも各チームが出してきたコードが変態的すぎて…ただただ凄かった..

きんぎょばち

今回最後のイベントきんぎょばち.
途中からテーマが増えたのもありいろんなテーマが残っていたけど,
チームを越えてさらにコードゴルフに取り組む組やHadoopについての組があるなか,
自分は(コードじゃないけど)Drewさんとの英会話に参加した.
普段の自分の生活では英語で誰かと話す機会なんてそうそうないので意を決っして参加してよかった.

帰り

行きも帰りも車で送ってくれて,コードゴルフではそのあまりにも変態的なコードで優勝の立役者となった@sandinistさんが
「やっぱり考えるのは楽しいし,うまくいくと嬉しいですよね」
と言っていたのが妙に印象的だった.


今年も参加できて良かったし,スタッフの方々には感謝感謝です.
では皆さん,来年もまたコードを語り・コードで語りましょう!

UEFI とかの話

今年の1月に今のメインマシン(Thinkpad X230)に Ubuntu 12.10 をインストールするときにちょっとハマった.

現象

ディスクをいれた外付けDVDドライブからUbuntu12.10を起動しようとしても起動しない.

解決

マシン起動時のメニュー(F12で入るやつ)で UEFI/Legacy Boot の値を「Both→Legacy Only」に変更することで無事 Ubuntu が起動するようになった.

その後

はっきりとした原因はわからなかったけど,とりあえず動くようになったのでそのまま使用していたところ,最近以下のの記事を発見した.

この記事によると,どうやらインストールのときの問題は Ubuntu とか UEFI とかの問題っていうよりもlenove のファームウェアの実装の問題っぽいことがわかった.

となると,もうこっちとしてはどうしようもないから,このまま Legacy mode で起動するしかないのかな.

好きなメーカーなだけに,ちょっと残念な話だった.

文字列とかの話

下記のコードの出力は何か?
という問題に答えられなかったorz

static void Main()
{
    string a = "abc";
    Test(a);
    Console.WriteLine(a);
}
static void Test(string b)
{
    b = b + "def";
}

下記参照の解説や等価な表現を見れば理解は出きるけど,
パっと答えられないあたりがダメすぎる.

こんなことでバグなんて出さないように気をつけましょう(自分)


あと,こんな問題も出された.

static void Main()
{
    string a = null;
    string b = null;
    string c = a + b;
    Console.WriteLine(c.Length);
}

これも間違えた(例外出ると思った)けど,
この出力は「0」が返ってくる.

どうやら文字列連結において null は空文字として処理されるらしい.

ちょっとした豆知識でした.


【参照】
http://jikkenjo.net/820.html

http://msdn.microsoft.com/ja-jp/library/vstudio/ms228504.aspx

ASPIRE 1410 をディスクからリカバリーした

明けましておめでとうございます.
2013年になりました.


昨年末に lenovoThinkPad X230 を購入して,
それまでメインで使っていた acer の ASPIRE 1410 を実家に置くことにしたので,リカバリーすることにした.

最初は HD にあるはずのリカバリー領域からできると思っていたけど,
なんかの拍子に消してしまっていたらしく(たぶん前に Ubuntu 入れたときorz),
仕方がないのであらかじめ作っていたリカバリーディスクからリカバリーすることにした.

が,途中でエラーが出て先に進めなかったので,今回解決した手順をメモしておく.


リカバリーツールも途中まではうまく行ってて,いざリカバリーが始まろうとしたとこで

Restore failed - Error code=1005(...)

とエラーが出たので,それを元に google 先生にお聞きすると,

Restore failed - error code=1005 | Tom's Hardware Forum

がヒットした.

そこで,Ubuntu のライブCDを使って,今まで使っていたパーティションをまっさらにして,
Windows 用に作り直して,再びリカバリーを開始すると今度は無事にリカバリー終了!

めでたし,めでた…とはいかなかったorz


今度はマシンを再起動すると

>grub rescue

と出て OS が起動できなくなってしまった.

おそらく無計画に Ubuntu を消してリカバリーを行ったため,
パーティションの番号がおかしくなってブートができなくなってしまったのだろう.

今度はこれを解決するべくいろいろ調べると

Ubuntu日本語フォーラム / パーティションを削除したら grub rescue から起動できなくなった

がヒットした.

調べた限りだとどこも同じような手順になっているが,うちの場合はどうにも insmod の段階でエラーになってしまった.
(そもそも Linux じゃないからか..)


そんなこんなで困ってたらお次は次のようなページを発見.

MBR修復ツール ms-sys: IT備忘録

「この ms-sys を使えば今渡こそ…」

と期待を込めて手順を一つ一つ丁寧に実効すると,今度は

Windows ブート マネージャー

の画面が出て Windows を開始できませんとの表示.
(進んでるのかコレ…)


この辺でだいぶ心が折れそうになってきてるけど,
なんとかここから Windows7 のスタートディスクを使ってブートを修正して,
各フォルダが壊れてるとか言われたので,もう一度リカバリーディスクを使ってリカバリーすると,
やっと
復元完了!


ふぅ,めでたし,めでたし.

CodeJP2012 に参加した

7月28 - 29日にかけて行われた 「CodeJP2012 in 定山渓」に行ってきた.


セッションあったり公開ペアプロあったりLTあったりと,とても全部は思いだせないけど,
思いだせる範囲で印象に残ったことを振り返ってみる.

Windows Developer Evangelist - Drew RobbinsさんによるKeynote

コードを学習する過程とかの話.
"Learn, Practice, Share"がキーワード.
新しい言語を学ぶときに限った話じゃないけど,何かを学ぶときはまず簡単なところから始めて徐々に複雑なことを覚えながら Learn していく.
次に Practice, Practice, Practice ...
そして Share する.


言ってることは至極真っ当なことだけど,いざそれを意識して実行することはなかなか難しい.

コードに限って言えば簡単な四則演算とか制御方法とか覚えてから(Learn),実際にそれらを使ってコードを書いていく(Practice).
自分はいつもこの段階で何を書いていいかわからなくなるけど,何かちょっとしたものを作ったり(それが難しいんだけど...),
Project Euler みたいなのを利用してとにかく練習する(Practice).
そしてそれらをブログやgit-hub, bitbucket などで共有する(Share).


ちょっとへこたれちゃったときは "Learn, Practice, Share" を思いだそう.

Code クイズ

想像していたよりも面白くて,もっと最初から積極的に参加してればよかったと少し後悔.
もっといろんな言語を勉強するのも面白そうだな.

前鼻さんのセッション

"reliable code(安心できるコード)"について.
コードの内側と外側の質の話も面白かったけど,一番印象に残ったのは
"NOT WRITE TEST, JUST WRITE SPEC(BEHAVIOR)"!

Dan Reaganさんのセッション

"Windowsストアでお金を稼ぐ方法"
Window ストアやメトロアプリの話をしてくれていたけど,疲れがきていたため正直途中少し眠かった(言い訳カコワルイ).

水の王国ラグーン

ボールに入ってジタバタするのは見ているほうが面白い.
(でもいくつになってもバカみたいにはしゃいで遊びたいよね)

クラウディアさん

まさかクラウディアさんが現実に降臨するとは…
クリアファイルももらえたし,何より Azure の本(サイン入り)をいただけてしまったので,これはちょっち真剣に勉強せねば…


いろんな人のLTを聞いたりお話しているうちに,どうも最近の自分の関心が関数型言語に寄っていってる気がする.
これを機にしっかり Learn するぜい.


他にも裸の付合いだったり寝落ちするまで Code を語ったりと楽しいことがたくさんあったけど,とりあえずはこんな感じー