My Daily Programming Life...

自宅でVPN

自宅にVPNで接続できるようにした。といっても、だいぶ前からできるのだけど、ほとんど使ってなかった。

ようやく手元に残っているMac miniをSVNサーバとして使うようになった。

VPNでどこからでもつなげるのはよいけど、逆に間違えると自分が持っている情報が外に漏れる可能性もあるわけで、もうちょっとVPNといっても制限をかけた状態で使うようにしたい。
自宅内にVPNからアクセスできるネットワークと、できないネットワークを作るようにするか・・・なんか面倒だな。なんかいい方法ないだろうか。

Visual Studioとcfix

Visual Studio 2010でCfixを使おうと思ってチュートリアルに従ってやろうとして、いくつか引っかかったので解決法を。

チュートリアルには、プロジェクトの作成については一切ふれられていないけど、テストを書く前の段階でテスト用のプロジェクトを作る必要がある。そして、それはDLL作成用のプロジェクトにすればよい。

まず、cfixのチュートリアルに"output window"という言葉が出てきて、そこにテスト結果のログなどが表示されるとあるけれど、この"output window"は"出力ウィンドウ"のことではなくて、コンソールウィンドウのことらしい。

cfixのチュートリアルで、最後にCtrl+F5で実行すればコンソールウィンドウに結果がでてそれが確認できるとあるけれど、普通にプロジェクト作ってやるとコンソールウィンドウが終了後すぐに閉じてしまって確認できない。
Ctrl+F5はVisual Studioの「デバッガなしで開始」に相当するけど、プロジェクトの設定の「リンカ」-「システム」-「サブシステム」が"Windows"になっているとすぐに閉じてしまう。これを"Console"に変えた上で、Ctrl-F5で実行すると、実行終了後にコンソールウィンドウが閉じずにキー入力を待つようになる。



追記:
cfixのヘルプをさらに読み込むと、Visual Studioの出力ウィンドウに結果を出している。でも、できない。どうやるんだろうか。コマンドラインで出力先を変えられる見たいに書いてあるけど、そんなオプション見つからない・・・

さらに追記:
最近のバージョンでは、それらのオプションはなくなったらしい。そして・・・どちらかというとその姉妹ソフトのVisualAssertを使えってことらしい。

なんとなく負け

for文を書くときにunsinedの値をカウンタにして、カウンタを減らしながら0まで実行したいことがある。
例えば

for( usigned int i = 10; i >= 0 ; i-- ){
    data[i+1]=data[i];
}
これは、data配列の中身を順番に1つずつずらしていく。
ただ、このループは永久に終わらない。iが0となったあと、i--が実行されて、unsignedであるために、INT_MAXになってしまい、i => 0の条件は常に満たされてしまう。

いろいろ方法はあると思うのですが、
http://q.hatena.ne.jp/1203477428
ここで質問があって、いろいろやり方があって、その中の6番目の回答に対する、質問者の答えがおもしろく、かなり共感できてしまった。
「なんとなく負けかな。」って。この、ちょっと何かスマートじゃないと感じるのは、みんな持っているものなんだな。

プログラム書いているとだいたい時間がかかるのはこういうどうでもよい問題だったりする。書く気になれば、そのまま書けるけど、なにか気に入らない。だから調べる。なかなか、スマートな方法が見つからない。もっと考える・・・。

プログラミングを仕事にするには、この感覚はちょっと向かないかもしれない。
feedSubscribe to my feed