• arduinoをさわってみる

    一か月ぐらい前にamazonで入門キットを購入したのだけど、忙しくてなんとなく放置してた。
    キットに入ってたのは「Arduino Duemilanove 328」。

    準備:

    • Arduinoの公式サイトからIDEをダウンロード。バージョンは0018。
      • JRE6が同梱されてる。
    • B端子のあるUSBケーブルを用意してPCとボードを接続
    • Windows 7の場合、ドライバは自動インストールをじっと待てばOK。そのまま使えるようになる。
      →公式サイトのGetting Startedで「Really, it works!」って書いてあるのがウケる。
      • ここの環境は64ビットだけど普通に使えた。
    • ここの環境では、USB Serial PortにCOM3が割り当てられた。

    実装

    実装、というほどのことはしていないけど、なにかしら入力と出力があるものしたいなと考え、
     スイッチをONにするとLEDが光る (^^;;
    を目指してがんばる。。

    12番ピンを出力としてLEDの点灯制御に。
    11番ピンを入力としてスイッチの入力に。

    タクトスイッチのどの足がどのように繋がるかも知らなかったので、テスタ片手にポチポチと試したり。

    ネットで調べると、デジタルの入力にはプルアップ/プルダウン抵抗というのを付けるのだとか。
    スイッチON→真でコードが書けないと気持ち悪いという理由でプルダウン抵抗にしてみる。
    ※Arduino(というかAVRマイコン?)は内部プルアップを持ってるので、回路的にはプルアップの方がシンプルに。

    Arduino IDEを起動して、ボードの種類とCOMポートを設定。

    コードはこんな感じに。


    void setup() {
    pinMode(12, OUTPUT);
    pinMode(11, INPUT);
    }

    void loop() {
    int sw = digitalRead(11);

    if (sw) {
    digitalWrite(12, HIGH);
    }
    else {
    digitalWrite(12, LOW);
    }

    delay(100);
    }

    SN3E0065.JPG

    コンパイルしてUpload。

    タクトスイッチを押したらLEDが点灯した。わぁ。

    入力にプルアップ/プルダウン抵抗を付けないと、スイッチOFF時の入力値が定まらないというか不安定になる、ということが、ソフトウェア屋からするとなんとも不思議な感じ。

    digitalRead()の後で入力値を、
     Serial.println(sw);
    でシリアルに出力してみると、確かに1だったり0だったりする。

    ソフトウェアってのは多くの抽象化レイヤの上に成り立ってるのだな~と実感する。


    環境:
      Windows 7 Ultimate x64
        Arduino 0018 (IDE)
      Arduino Duemilanove 328

    Arduinoをはじめようキット
    スイッチサイエンス
    売り上げランキング: 1553
    おすすめ度の平均: 4.5
    5 これではじめました
    4 USBはB端子です
    5 ここから大ジャンプは無理だけど

  • ESXiをアップデートしたらデータストアが見えなくなった

    VMware Infrastructure UpdateからESXi 3.5をアップデート。
    コアの部分はESXiを再起動しないと有効にならない、ということで素直に再起動。

    再起動完了後、VICで接続したらデータストアが認識されないという、目を疑う事態が発生。
    vmfsが消えたのか??
    どうやってサルベージしようか??
    と考えをめぐらせながらも検索したらまたもや2chに救われた。

    以下の操作後もインベントリ内の仮想マシンは「Unknown(inaccessible)」のままだったので、データストアのブラウザから、vmxファイルを右クリック→インベントリに追加(Add to inventory)、でなんとか。

    203 :名無しさん@お腹いっぱい。:2009/01 /16(金) 15:56:04 ID:gFIIee1g0
        >>202
        おぉ。VMFSのマウントがデキター
        Thx
        スレをちゃんと読めばよかったんですね吊ってきます

        リンク先の手順は、英語だったので、日本語に翻訳
        1.VI Clientを起動してESXiへログイン
        2.Configurationタブ、Softwareの中のAdvanced Settingを開く
        3.LVMの項目のLVM.EnableResignatureの値を「1」へ
        4.Configurationタブ、Hardwareの中のStorage Adapterを開き「Rescan...」を実行
        5.Configurationタブ、Hardwareの中のStorageを開くとVMFSがマウントされてることが分かる

    環境:
     VMware ESXi 3.5

  • redmine 0.9の Wikiとプラグイン

    Wiki Graphviz macro プラグイン
    例によって無保証です。
    redmineの wikiマクロで graphviz その1
    redmineの wikiマクロで graphviz その2
    redmineの wikiマクロで graphviz その3
    上のwikiマクロをgihubに置いている。
    tckz's redmine-wiki_graphviz_plugin at master - GitHub

    自分ところのredmineはまだ0.8.7なんだけど、早食いな人はもう0.9を使っているらしく、0.9で動かないよ、というメッセージが来た。
    せっせと自分のところでも環境を作って試してみると「Filter chain halted as [:authorize] rendered_or_redirected.」が出ている。

    リンクの作り方がまずいと言えばまずいんだけど、0.8.x時代のWikiのURLと0.9からのURLが異なることが原因みたい。
    0.8.7: http://example.com/wiki/project_id/WikiPage
    0.9-stableブランチ: http://example.com/projects/project_id/wiki/WikiPage
    それでは、とroutes.rbを書き換えてみるも反応なし。
    どうもプラグインROOT/config/routes.rbに置かないと読んでくれないっぽい。

    0.8系でも0.9系でも動くように二か所にroutes.rbを置くことにした。

    プラグインROOT/
     routes.rb ←(1):こっちは(2)をrequireするだけ
     config/
      routes.rb ←(2):redmineが0.9以降かどうかでURLマップを設定しわける

    (1)
    require File.join(File.dirname(__FILE__), "config", "routes.rb")

    (2)
    ActionController::Routing::Routes.draw do |map|

    if (Redmine::VERSION.to_a <=> [0, 9, 0]) >= 0
    # 0.9.0 or higher
    map.connect 'projects/:id/wiki/:page/graphviz', :controller => 'wiki_graphviz', :action => 'graphviz'
    else
    map.connect 'wiki/:id/:page/graphviz', :controller => 'wiki_graphviz', :action => 'graphviz'
    end
    end

    0.9もfeature freezeしたことだしリリースが待ち遠しい。
    「バージョンに状態(進行中、ロック中、終了)を設定出来て、チケットの編集画面に終了済みバージョンがドロップダウンに表示されない」機能が地味にうれしい。


    環境:
     CentOS 5.4
      ruby-1.8.7-p248(from source)
      mysql-server-5.0.77-3.el5
      graphviz-2.26.0(from source)
      redmine-0.9-stable branch at 2010/01/07(JST)


  • WMIを用いた DNS操作 をPowershellで書く

    あるイベント起動で、「AD統合DNSのCNAMEの指すAレコードを変える」、ということをしたい。
    イベントハンドリングはとりあえずおいといて、スクリプトでDNSのCNAMEを変更する方法を探す。

    やっぱりというかなんというかWMIにしっかりと用意されていた。
     DNS WMI Classes (Windows)

    PowershellはWMIオブジェクトも扱えるので、こんな感じに。

    $cnames = gwmi -Class MicrosoftDNS_CNAMEType -Namespace Root\MicrosoftDNS -ComputerName DCコンピュータ名
    $cname = $cnames | ? {$_.OwnerName -eq "cname.example.com"}
    $cname.Modify($null, "some.example.com.")

     
    特定のCNAMEを表すMicrosoftDNS_CNAMETypeだけすぱっと取得したかったが、全CNAMEを取る方法しか分からなかったので場当たり的にWhere-Objectで絞り込む。とても無駄な感じ。

    • CNAMEもAレコードも事前に作成してある前提なので、見つからない場合を考えていない。
    • 適切な権限が必要。

    環境:
     Windows XP Pro SP3 x86
      Powershell 1.0
     Windows Server 2008 Standard x64
      Active Directory
      DNS

  • Windows 7で VMware Player 3

    vmpl3.png
    ゲストにlinux系OSを動かせる仮想環境ということで、妙にパワーアップしたVMware Player 3をチョイス。
     http://www.vmware.com/jp/products/player/

    playerを起動して仮想マシン作って、お試しにCentOS 5.3 x64をインストール。

    とりあえずでNAT構成で始めたけど、サブネットを変更したいなと思った。
    VMware Serverだとスタートメニューに仮想ネットワークの構成ツールがあるのだけど、これが見当たらない。
    ネットで調べてみると、Program Files下にvmnetcfg.exeというのがあるの直接実行すればよい、ということらしい。


    が、64ビット環境のせいなのか
    C:\Program Files (x86)\VMware\VMware Player\にそのようなファイルはない。

    これまたネットで調べると、vmnetcfg.exeがインストールされない問題があるらしい。

    • セットアップファイルに「/e」オプションを付けて実行し、中身を取り出す。
      • VMware-player-3.0.0-203739.exe /e c:\path\to\somewhere
    • network.cabというファイルの中にvmnetcfg.exeがあるので、これを取り出してplayerのインストール先にコピー。
      • 自分ところでは管理者として実行したエクスプローラ上でコピーした。

    desktop PC上の仮想化環境はVMware Serverを使ってたので、Playerのウィンドウを閉じると仮想マシンOFF(orサスペンド)になるのは、ちょっとイマイチ。。。


    環境:
    Gigabyte MA790FX-DQ6
     Phenom II x4 965BE
     Radeon HD3850
     Intel PRO/1000 CT Desktop Adapter(PCIe接続)
    Windows 7 Ultimate x64
     VMware Player:3.0.0 build-203739