TIM Labs

2011年8月アーカイブ

本件はMercurialでアレを元に戻す108の方法に含まれるような内容ではあるのだが、非常に長くなるので独立した記事にしてみたい。QA形式に倣うのならこんな感じだろうか。

問題:誤ってブランチをマージしてしまった。しかしマージは公開され、それぞれのブランチには新しい修正も加えられている。それでもマージをなかったことにしたい。

ちょっと長くなる。サンプルのリポジトリを用意しつつ実際に実行できるようにしておいたので、読むだけでなくぜひ手元で実行してみてほしい。そうそう、途中 log -G と strip コマンドを使用しているので、graphlog と mq の extension は ON にしておいてほしい。具体的には hgrc に次の行を書いておく。

[extensions]
graphlog =
mq =

あと、各コマンドの結果は煩雑なので、blog に記載するにあたっていろいろとそぎ落としてある(特に log -G)。実際の実行結果は自分で確かめて欲しい。

前回@kana1さんによる「gitでアレをもとに戻す108の方法」が大反響で世間はやはりgit使いが多いのかと再認識しました。 私も普段はgitを使っていますが、お仕事ではMercurialを仕事で使っているのでのっかって書き連ねてみましょう。

以前 gitで一度行った変更をなかったことにする方法4つ を紹介しましたが、 日常的に git を使用していると他にも様々な 「なかったことにしたい」「元に戻したい」 という状況に遭遇します。 そのひとつひとつについて対処方法を紹介していきます。

問. PHPで、配列の先頭要素、もしくは末尾要素を参照するにはどのようにすればよいか。

Visual Studio は組み込みのユニットテストの仕組みを持っており、.NET開発を行う際にはテストプロジェクトを追加するだけで簡単にユニットテストを書いたり実行したりすることができます。

F# でもその恩恵に与りたいわけですが、残念ながら VisualStudio で F# のテストプロジェクトを作ることはできません。

これを回避する方法を紹介しているブログがあったので紹介します。

F# Unit Testing with Visual Studio 2010

F#テストプロジェクトを作る

  1. テスト用のF#プロジェクトを作成する。F#のテストプロジェクトは無いので、クラスライブラリを選択して作成する。
  2. Microsoft.VisualStudio.QualityTools.UnitTestFrameworkへの参照を追加する。
  3. プロパティ→ビルド→出力パスをbin\ にする。リリース構成もデバッグ構成もbin\にする。(bin\Debugやbin\Releaseではなく)

C#テストプロジェクトを作る

  1. C#テストプロジェクトを作成する。
  2. コードファイルを削除する。
  3. 「追加」→「既存の項目」から3で作成したディレクトリを開き、dllを選び「リンクとして追加」する プロジェクトを右クリックし、「プロジェクト依存関係の追加」からF#テストプロジェクトを追加する。

これでいつも通りのテストがF#で書けます。Enjoy!

TIM Labsの言い出しっぺなのに、まるで記事を書いていなかったhimuka_kenです。
ネタはヘビーな話題から、夜のおかずまで...あるんですが、なかなか書く時間がありません。
(サボっていると言われたらその通りですが、何か?)

さて、メモをしとかないと忘れてしまいそうなのと、割りと社内でも知られていない?ので
記事として残しておきます。

OpenSSH の manを、ある日しげしげと眺めていると、

-W host:port
         Requests that standard input and output on the client be for-
         warded to host on port over the secure channel.

なんじゃこりゃ?と調べてみると、OpenSSH 5.4から実質netcat の機能を取り込んだ様です。

今までは、踏み台等の特定のホスト経由で多段でログインを行う場合には、

ssh -o 'ProxyCommand ssh user@fumidai nc %h %p' user@innerhost

としたり、一旦踏み台に対して、ssh -D 1080 fumidai で別にログインしsocks prxoyをたて、

ssh -o 'ProxyCommand connect -S localhost:1080 -5 %h %p' user@innerhost

とsocks経由でつないでしまうという手を使っていました。
(socksが使えるため、ブラウザでの確認、管理WEBへの接続、もろもろsocks経由で通信させる怪しいロシア製windows用ソフトとかw を使うために私はもっぱらこっちを使っています。踏み台にずらずらと、ncのプロセスが大量にいるという状況もなくなりますしね。)

前者は、踏み台にncがインストールされていないと使えませんし、後者は別に-Dでログインしておき、またconnectをインストールしておく必要があります。

ところが、この Netcat modeを使うと、

ssh -o 'ProxyCommand ssh user@fumidai -W %h:%p' user@innerhost

と、sshだけで済み、また手元のOpenSSHが5.4以上であれば、踏み台のsshのバージョンは問いません。
こりゃ便利というわけで、手元の5.4以上の環境では、~/.ssh/configへ

Host *.hogehoge.ugauga
        ProxyCommand ssh user@fumidai -W %h:%p

と書き換えて運用しています。

しかし、-Dというこの手のオプション(個人的には、このオプションが入ったときに、最初に頭に浮かんだのは....やばい。こりゃなんでもやり放題...という言葉でした。)を始め、なんだかアングラ感というかクラッキング臭が漂うオプションがどんどん入って来ますね。
某大手ネット企業では、プライベートネットワーク内でのオペレーションは、セキュリティの為にsshを逆に使用禁止にしているというのを聞いて、まあその気持ちはわからんでもないと思った次第です。

機会を見て、どう適切にsshを運用すれば良いのか、書きたいと思います。

このアーカイブについて

このページには、2011年8月に書かれたブログ記事が新しい順に公開されています。

前のアーカイブは2011年7月です。

次のアーカイブは2011年9月です。

最近のコンテンツはインデックスページで見られます。過去に書かれたものはアーカイブのページで見られます。