カテゴリー: 技術系

  • Visual Studio のバージョン依存に苦戦した。

    大した内容ではないが、備忘録もかねて書いておく。

    昨日、PCを新しくしたところVBの”.sln”ファイルが開かないエラーに遭遇した。先に結論を書いておくと、ツールの些細なバージョンで違いで開く際にエラーになった。Visual Web Developer 2008 Expressにサービスパックが適用されているかどうか、これが原因だった。

    元々、作成に使用していたのはVisual Web Developer 2008 Express で新しいPCはOSこそWindows 7に上げたがIDEは同じくVisual Web Develper 2008 Expressだ。新PCでは、インストールに本に付属のDVDを使用して、開発に必要な環境を一括でそろえた。この状態で各種アップデートの後、”.sln”ファイルを開いたところ「このバージョンのファイルはvisual studioでは開けません」というようなエラーが発生した。何度か試してみたが状況は変わらず。仕方がないので、Visual Web Developer 2008 Express をアンインストールして、再度インストールした。今度は、”.vbproj”ファイルが開けないという。Visual Web Developerが起動しても、表示されるのは、XML形式のvbprojファイルだけ。エラーになっている箇所は、表示してくれるものの解決策はわからない。途方にくれて、MSのサイトをみてみるとSP1があるようなので当ててみることにした。SP1のファイル単体は見つからず、ウェブインストーラーしか見つからない。ウェブインストーラーを使って上書きインストール。もう一度、slnファイルから試してみると正常に開いた。

    同じツールであっても、SP(サービスパック)が適用されているかどうかで、ファイル形式が違うようだ。slnファイルのアイコンには、起動するバージョンの数字が書いてあったが、SPの有無までは解らない。(もしかしたら、どこかに簡単に見分ける方法があるのかもしれないけれど。)(2008形式なら数字は9、2010形式なら数字は10というように見分けがつく。)Visual Studioのファイルは、上位の(新しく発表された)Visual Studioで開くと、slnファイルが更新されてしまい、下位バージョンで開けなくなるのは知っていた。まさか、SPの有無でさえ開けない事態になるとは思っても見なかった。もうちょっと、互換性を作ってくれるといいのけど、MSだし無理だよな。

  • PCのDNSキャッシュをクリアする

    PCにキャッシュされているDNSのキャッシュをクリアする方法。PCの名前解決が不安定な時にやると良い。

    キャッシュをクリアするには、Windowsのコマンドプロンプトを起動して次のコマンドを入力する。

     ipconfig /flushdns
    

    これで、PC上のDNSキャッシュをクリアできる。また、PC上のキャッシュを確認したい場合は以下のコマンドを入力する。

     ipconfig /displaydns
    
  • dropboxがブロードキャストアドレスによくわからない通信をする件

    とってもタイトルは長いけど、単純な問題。何が嫌かというと、dropboxを使っている端末が増えるとLANの中に嫌なくらいパケットがめぐるので問題が起きた時に邪魔になる。

    どういうパケットが流れているかというと、Wiresharkでパケットをキャプチャしたときに自分の通信とは関係のないDropboxの通信がやってくる。

    Source : 192.168.XXX.XX1
    Destination: 255.255.255.255
    Protocol: DB-LSP-DISC -> UDPの1750番ポート
    Info: Dropbox LAN sync Discovery Protocol
    

    んな感じのパケットいっぱい拾ってしまう。実害はないのだが、あまり増えすぎるとLANのパフォーマンスを低下させるのでなるべくなら避けたい。

    この通信を調べてわかったのは、Dropbox LAN sync Discovery Protocolは、LANの中で共有する端末(PC)があるかどうかを調べている。もし、同期する端末があった場合はDropboxを介することなく、LANの中で同期させるためのもののようだ。

    まったくもってこまったもので、こんなパケットが溢れていたら、LANのパフォーマンスが低下してしまうではないか。この通信をOFFにするためには、DropboxのクライアントのオプションでLan Sync(だったかな?)のチェックを外せば良い。これでやたらとパケットを投げる行為をやめてくれる。それにしても、日本語の情報がない。結局、英語のサイトを探した。

    ■参考
    http://p0stmaster.blogspot.com/2011/01/dropbox-lan-sync.html

  • Powershellにエイリアスを追加する方法

    WindowsのPowershellを使っていると、間違えてlsとかpwdとか叩いてしまう。これらは、最初からPowershellの内部で対応するコマンドにエイリアスが切られているので 問題なく実行できる。

    でも、どうせならCUIから簡単にxyzzyを起動したい。ついでに間違えてemacsと入力したときにxyzzyを起動させたい。プログラムにパスが通っていれば、エイリアスで指定しなくても起動するがめんどくさいのでAliasに登録する。

    ■エイリアスの登録方法

    Set-Alias  エイリアス  コマンド
    

    xyzzyをエイリアスに登録する場合は以下。(xyzzyは、Cドライブ直下のbinに保存)ついでに、emacsでxyzzyが起動させるようにする。

    Set-Alias xyzzy 'C:\bin\xyzzy\xyzzy.exe'
    Set-Alias emacs xyzzy
    

    これで、xyzzy ファイル名 とか叩けば、そのファイルがxyzzyで開くようになる。簡単に起動できるので便利。

    だが、ここまでだとPowershellを終了させると消えてしまう。AliasをExportしてImportするか、起動時にプロファイルを読み込ませる方法がある。ちょっと調べてみたが、プロファイルを読み込ませるのはめんどくさそう。

    ■現在のエイリアスの確認方法

    Aliasと入力する。

    ■エイリアスの削除方法

    エイリアスの削除もコマンドから行うが、Remove-Itemという汎用的なコマンドから行う。(Remove-Itemはファイルやフォルダ、オブジェクトの削除に使うコマンド)

    Remove-Item Alias:エイリアス
    

    先に追加したemacsのエイリアスを削除するコマンド

    Remove-Item Alias:emacs
    

    この要領で便利なエイリアスを作ったり削除できる。

  • windows 2000 のADに windows 2008 R2 のADを追加するときにハマったポイント

    参考:AD2000からAD2008にアップグレードする手順

    1. Windows 2000のActive Directoryでドメインの機能レベルを「Windows 2000 Serverネイティブ」以上にする
    2. FSMOの機能をもったWindows 2000 Server上で、adprepを実行する
      1. 最初にフォレストのスキーマを拡張する。「adprep32.exe /forestprep」を実行
      2. 次にドメインのスキーマを拡張する。「adprep32.exe /domainprep」を実行
      3. 最後にリードオンリードメインコントローラ用にスキーマを拡張する。「adprep32.exe /rodcprep」を実行する
    3. Windows Server 2008 R2をドメインコントローラとして追加する
    4. FSMOマスタをWindows Server 2008 R2のADに転送する
    5. Windows 2000 Server のADを降格する
    6. 最後に必要に応じて、機能レベルを上げる

    adprepの実行でハマったこと

    以下のエラーだけ吐き出され、ハマり半日ハマり続けた。

    ---抜粋---
    [状態/結果]
    Adprep には、この操作を完了するために、スキーマ マスターから既存のフォレスト全体の情報へのアクセスが必要です。
    ---抜粋---
    

    他のエラーログも見たが、役にたちそうなものはなく、手探りで行っていくしかなかった。半日で解決できて良かったとも言える。adprepの実行でエラーが発生した場合は、以下のことを試すとよいだろう。(これは自分の失敗をまとめたもの)

    必ず、2008R2のインストールDVDをマウントして、adprep32.exeを実行すること。

    • adprepは、Windows Server 2008 R2のインストールディスクに格納されている。 このとき、”\support\adprep\adprep32.exe”だけ、コピーしても動作しない。 実行後、メッセージもなくすぐに終了するだけである。
    • adprepを、フォルダごとコピーした場合は、一見動くようにみえるが、何かが足りないらしく正常に動作しない。

    コマンドの実行は、コンソールから行うこと。

    • Windows 2000 serverにリモートデスクトップで(RDC経由で)アクセスし、コマンドを実行したが、アクセス権がないといわれる。
    • リモートデスクトップでアクセスした場合は、ログインに使っているユーザにドメインの管理権限があっても、スキーマの拡張権限がない振る舞いになった。コンソールから実行すれば、問題ないので、リモートデスクトップは使わない。

    幽霊のドメインコントローラは、しっかりと削除する

    • 以前にドメインコントローラの入れ替えや障害があり、ドメインコントローラの削除を行っている場合、ディレクトリ上にゴミが残っていることがある。
    • ADの一覧には表示されていないが、「ユーザとコンピュータ」以下にあるドメインコントローラに残っているなど。
    • 残っている場合には、アップグレード時に通信の確認を行おうとして失敗し、処理が止まるので、幽霊ドメインコントローラを見つけて削除する。

    マイクロソフトの移行ガイドを信用しない

    • これが一番、重要かもしれない。
    • 移行ガイドを実行すると、実行するコマンドに漏れがあったり、注意事項が書いていないため、失敗の原因になる。便利かと思ったが、信用してはいけなかった。

    adprep32.exeの実行中に、Enterキーなどのキーをたたかない。

    • Windows 2000 Serverのスペックに影響するのか、実行中に動作しているのかいないのかよくわからないときがある。この時にEnterキーを押すと、 busyのエラーが発生し、処理が強制終了してしまう。
    • スペック以外の原因はないため、adprep32.exeの実行後は終了するまで放置するとよい。結構時間がかかるので、コーヒーを飲むなどのブレイクにあてる。
  • メモ:WindowsのDNSサーバ機能を調べるのに役に立ちそうなURL

    Windows ServerのDNS機能は、なぜか資料が少ない。ネットを検索しても、ほしい情報はなかなか見つからない。油断すると、また最初から探してしまいそうなので見つけたURLをメモする。

    windows serverのDNSサーバ機能は、基本的にGUIで操作なので弄っているだけで設定できてしまったりもする。既に構築されているものだったら、比較的簡単に操作できるのけど、ちょっと凝ったことや別のサーバからDNSサーバを切り替えたりしようと考えると資料が少ない。今回調べているのは、そこら編の凝ったこと。調べていって、ある程度成果が出たら公開するつもりだ。(可能なら・・・だけど。)

  • IPv4アドレスの在庫終了。

    あっちこっちに書かれているが、備忘録として。

    IANAが持っていたIPv4のIPアドレスの在庫がついにつきた。のこりは、5ブロックのみで、各地域のNICに1ブロックづつ割り当てが決まっているそうなので、事実の配布終了と言っていいだろう。最後の2ブロックはAPNICに割り当てられている。アジア地域のインターネットの普及を考えると、簡単に分配がおわってしまうだろう。でも、このニュースは一般的なニュースとして取り上げられていない。かなり重要なことだと個人的には思っているが、世間は関係ないようだ。今では、iPhoneにもIPアドレスがついているというのに。秘匿されているから、一般の人は気にしていないからだろう。これからは、IPv6の時代になっていくのだろう(と信じたい)。

    企業や家庭はプライベートIPアドレスとNATで逃げられるから、危機感なぞないのかもしれないな。

  • メモ:scpでディレクトリをコピーする。

    scpで、ディレクトリを含むファイルをコピーするには “-r” を指定する。

     scp -r directory zen@www.xenon.jp:/home/
    

    WinscpなどのGUIツールばかり使っていると、scpコマンドの使い方を忘れてしまった。

  • zabbix 1.6.8 から 1.8.3にアップデートしたときに発生したエラーの回避方法

    yum を使って、プログラム自体は、1.8.3に簡単にアップデートすることができた。その後のDB(MySQL)へのパッチでエラーが発生した。このエラーを回避する方法を探すのに、ちょっと手間取ったので書いておく。

    発生したエラー

     [root@your-0bb7513658 mysql]# mysql -u root zabbix < /usr/share/doc/zabbix-server-1.8.3/db
     patches/1.8/mysql/patch.sql
     ERROR 1061 (42000) at line 1: Duplicate key name 'actions_1'
    

    対応方法

    先にIndexを削除する。MySQLでZabbixのデータベースに対して以下のコマンドを入力する。

     alter table dhosts drop index dhosts_1;
     alter table dservices drop index dservices_1;
     alter table httptest drop index httptest_2;
     alter table httptest drop index httptest_3;
     alter table history_log drop index history_log_2;
     alter table history_text drop index history_text_2;
     alter table actions drop index actions_1;
     alter table escalations drop index escalations_2;
     alter table graphs_items drop index graphs_items_1;
     alter table graphs_items drop index graphs_items_2;
     alter table services drop index services_1; 
    

    参考:http://www.zabbix.com/documentation/1.8/manual/installation/upgrading

    Index削除後に、もう一度、patch.sqlを当ててやれば、今度は成功する。このパッチは時間がかかるので要注意。

  • Macで半角カタカナ入力ができなくて困った。

    Mac OS X 10.6 で半角カタカナを入力しようとしたところ、入力できなくて困った。

    普通であれば、F8や “Ctrl+;”の入力で、半角カタカナに変換できるはず。そう、それを入力しても、なぜか半角の英数字になってしまう現象になやまされた。結構、長いじかんを使ってやっと問題の原因を発見した。

    もし、半角英数字にしか変換できない場合は、以下の設定を試してほしい。

    1. 左上のことえりのアイコンをクリックし、言語とテキストを開く。
    2. 次に、入力ソースのタブをクリック。
    3. ”ことえり”の中にある”半角カタカナ”にチェックが入っていなければ、チェックを入れる。
    4. チェックを入れた後は閉じる。

    これで、ことえりで半角カタカナの入力が選べるようになる。もしくは、F8キーで半角カタカナに変換できるようになる。解ってしまえば、簡単なのだが、普段使わない半角カタカナの敷居は高かった。F8キーを押しても半角カタカナに変換できない人は試してほしい。

    普段は使わないけれど、いざ使うことになると変換ってできないものだ。個人的には、半角カタカナは撲滅したいけれど、銀行とかがあるからな。。。