スポンサーサイト

    上記の広告は1ヶ月以上更新のないブログに表示されています。
    新しい記事を書く事で広告が消せます。

    バーチャルWifiとSoftAPでWindows7PCが無線ルータに

    ■ Windows7にバーチャルWifiとSoftApという機能があるのをご存知でしょうか。

     ・Virtual Wifi
       簡単に言うと、1つの無線LANアダプターを仮想的に複数の無線LANアダプターに
      見せかける機能。

     ・SoftAP
      ソフトウエア的にアクセスポイントを提供する機能。
      つまり、PCがそのまま無線LANのアクセスポイントになってしまいます。

     これらを使うと、Windows7搭載のPCがアクセスポイントになります。
     たとえば、今私は出張中で、滞在先にはネットがないため、
     携帯電話会社の通信カードを使ってインターネットをしていますが、
     無線LAN環境はありません。
     スマートフォンを持っていますが、もともと無線LANでしか使わないと
     決めていたので、パケット割引の契約をしていません・・・。
     Windows7のSoftApを使うと、この状況でも、
     Windows7をアクセスポイントにして、

      スマートフォン → Windows7PC →通信カード →インターネット

     という感じに経由させて、スマートフォンをネットにつなぐことができます。
     (携帯ゲーム機等も同様ですね。もちろん、1枚の通信カードで複数のPCをネットにつなぐこともできます。)

    ■実際にやってみました。
     手順
    1:無線LANアダプターがVirtual Wifiに対応しているかどうか確認。
    2:インターネット接続の共有を設定
    3:コマンドラインからアクセスポイントを設定
    4:コマンドラインからアクセスポイントを開始
    ------------------------------------------------------------------------------------
    1:無線LANアダプターがVirtual Wifiに対応しているかどうか確認。
      コントロールパネルからネットワーク接続を開いて、
      一覧に「Microsoft Virtual WiFi Miniport Adapter」というデバイスが表示されていることを確認。
      これがない場合、無線LANアダプターのドライバがVirtualWifiに対応していない可能性があります。
      ドライバを更新するか、対応している無線LANアダプターを用意してください。

    2:インターネット接続の共有を設定
      ネットワーク接続の画面で、インターネットに接続しているネットワークを選択し、プロパティ画面を表示させて
      共有タブで、インターネット接続の共有にチェックを入れ、ホームネットワーク接続にて、1で確認したデバイスを選択し、
      OKで閉じます。

    3:コマンドラインからアクセスポイントを設定
     コマンドラインプロンプトを管理者権限で起動します。
     「netsh wlan set hostednetwork ssid=[アクセスポイント名] key=[パスコード] keyusage=persistent」
     と入力します。
     ここで、[アクセスポイント名]と[パスコード]は、適当につけてください。
     コマンド最後の、keyusage=persistent は、設定を保存するために必要です。

    4:コマンドラインからアクセスポイントを開始
     「netsh wlan start hostednetwork」
      と入力します。
     これでアクセスポイントが稼働します。

    これでアクセスポイントが立ち上がるので、
    あとは、スマートフォンなり、ゲーム機なり、PCなりを無線Lanから接続して使うだけ。
    結構簡単です。
    (参考記事:使い勝手が大幅に向上したWindows 7のワイヤレス機能 - @IT

    でも、これって、会社とかだとネットワーク管理者が管理するのは大変そう・・。
    ポリシーとかで禁止できるんだろうね。きっと・・・。

    ま、Wifiを使うデバイスが増えてきたし、ドコモもどこでも[日本Wi-Fi化計画]とかやっているし、
    果ては、家庭用無線LANアクセスポイントの一部を公衆無線にしようというサービス(参考:FON
    まで出てるし、将来はきっと、Wifiであふれた世界になるんだろうね。

    アフリカでもルワンダなどは農村部まで光ファイバーを引いてIT網を整備しているようだし、
    うちの実家も、田舎の山奥だけどやはり光ファイバー来てるし、どこでもインターネットが当たり前な世界に
    なってきたな~。
    そして、このWifi。ゲーム機や携帯等、Wifiを利用するデバイスが増えたことに対応してか
    ソフトウエアAP(USBの無線LANアダプターとかにも実はついてたりします。こっちはXPやマックでも使えますね)
    や携帯電話会社のポケットWifiなどが増えてきて、ほんとどこでもつながるようになった。

    こりゃあれですね。このままいけばIT系の会社は、オフィスにPCが要らなくなって、
    すべて仮想デスクトップでモバイル端末(PCだったりしますが・・)からVPNでつないで仕事する感じになって、
    しまいにゃ、出社とか言う概念がなくなって、オフィスは社員の会議場もしくは集会場という位置づけになって、
    拘束時間という概念がなくなり、報酬は仕事量もしくは、割り当て端末の使用時間とかで決まってきて、
    どこにいても仕事ができる環境が当たり前になって・・

    なあんて、ならないすかね。
    そしたら、休まずにバカンスいけるのに(笑)

    会議もネット上でもっとうまい具合にできれば、遠くにいても近くにいても変わらなくなる。
    (ちがいは、気軽に飲みに行けるかどうかぐらいか?)
    そして、私のような田舎住まいのSEにも仕事がもっと増える・・。
    そうすると、物価の安い田舎に若者が住むようになって、過疎化解消!
    人が集まらなければ、消費する2酸化炭素も減り、低炭素社会に!

    スポンサーサイト

    テーマ : Windows 7
    ジャンル : コンピュータ

    UNIONクエリの真実

    ちょっと大げさなタイトルですが、
    中身は大したことないです。

    しかし、そんなタイトルをつけたくなるほど、私にとってはお★ど★ろ★き!でした。

    それは、Sqlのunionクエリは、重複除外をしてくれていた!
    というもの。

    まあ、いまさらなんですがね。
    UNIONには、ノーマルの「UNION」と「UNION ALL」という2つの書き方があります。
    UNION ALLについては、存在は知っていたけど、いつ使うんだ?とか思ってました。
    そう、私は「UNION ALL」の意味を理解していなかったんです。

    簡単にいえば、
     ・重複した行を表示しないのが「UNION」
     ・重複した行も表示するのが「UNION ALL」
    UNIONを知った時、これも同時に知ったはずなんですが、
    いつの間にか忘れていて、UNIONは2つのクエリ結果をくっつけて返すものということだけが記憶になっていたようです。

    今、あらためて
     ・「UNION」は重複除外をしている
    ということを再認識しました。

    これがどう役に立つか。
    今までは、単純に2つのクエリ結果をくっつけて返す用途でしか使ってませんでしたが、
    2つのクエリ結果に差があるかどうかを調べることにも使えてしまうのです。
    どうやるかというと、
    1.まず、2つのクエリ結果それぞれについて、行数が一致しているかどうかを調べます。
      これは普通に SELECT COUNT(*) FROM クエリ結果1 とかで調べられますね。
      ここで行数が違えばその時点でテーブルに差があるということになります。

    2.次に行数が同じ場合、内容が一緒かどうかを調べます。
      ここで我らが「UNION」の登場です。
      もし、2つのクエリ結果が全く同じなら、UNIONで結合したとき、同じ行は重複除外されるので
      返される行数は、元の2つのクエリ結果と同じになります。
      というわけで、
      SELECT COUNT(*) FROM
          SELECT * FROM クエリ結果1
             UNION
             SELECT * FROM クエリ結果2
        ) AS a
         の結果が1で調べた行数と同じになれば、両クエリ結果は全くの同一ということになります。

     (ここでクエリ結果というのは、テーブルもしくはサブクエリを指します。
      なので、あるテーブルのこのフィールドが○○であるデータについて、△フィールドと■フィールドが同じかどうか
      調べたいとかいう場合は、サブクエリで書いてあげれば調べられるのです)

    こういう使い方もあったのか!という驚きにかられて、記事にしてしまいました。


    テーマ : データベース
    ジャンル : コンピュータ

    フォルダに対してクエリしたい!とおもったら。

    フォルダにたいしてクエリしたいと思ったら

    PowerShellを使いましょう。

    PowerShellとは?
     Microsoftが開発したスクリプト言語です。
     .netFramework2.0ベースでできていて、.netFrameworkのライブラリがそのまま使えます。
     各コマンドが返す者がオブジェクトになっているという代物で、パイプでコマンドをつないでいろいろやります。
     確か、Vista以上ではPowerShell2.0がデフォルトインストールされていて、
     PowerShell2.0からは、Windows Power Shell ISEというGUI環境が付いてきます。

    どう使うか?
    たとえば、
     フォルダAにあってフォルダBにないフォルダはど~れだ?
    という課題があったとして、フォルダ数がむっちゃ多かったら、目視で探すのいやですよね・・。
    (まあ、dirコマンドをファイルにリダイレクトして、できたファイルを比較っててもありますが・・。)
     PowerShellでやるとこうなります。

         dir フォルダAのパス -Name | Where-Object{ !(Test-Path('フォルダBのパス' + $_))}

    これ1行。
    便利でしょ。
    え、意味不明?まあ、そうかもしれません。
    これをC#で書いたらどうなるか。
    using System.IO;
        foreach (string path in Directory.GetDirectories("フォルダAのパス"))
        {
            if (!Directory.Exists(@"フォルダBのパス\" + Path.GetFileName(path)))
            {
                yield return path;
            }
        }
    

    これとほぼ同じ意味です。

    dir はDosコマンドのdirと同じ意味で、指定したフォルダの下にあるアイテムのリストを列挙します。
     実際にはPowerShellのコマンドは、動詞-名詞 という形のコマンドで、
     dir は Get-ChildItem のエイリアス(別名)です。(Get-Alias を実行すればエイリアスの一覧が見れます。)
    -Name はdirコマンドのオプションで、ファイルパスではなくファイル名を返します。
    dirが返すのはファイルパスのコレクション(今は-Nameをつけているのでファイル名のコレクション)
    で、それをパイプ(|←これ)を使って、Where-Objectコマンドへ渡しています。
    Where-Objectコマンドは、受け取ったコレクションを引数の式(ここでは{と}で囲まれたところが式)で評価してフィルタをかけます。式の結果がTrueになるアイテムだけをコレクションにして返します。
    引数の{と}で囲まれたところはスクリプトブロックで、普通にPowerShellのスクリプトが書けます。
    Test-Pathコマンドは、引数にわたされたパスが実在するかどうかをテストします。
    ここでは、フォルダBのパス+フォルダA傘下のフォルダの名前 でパスを作って実在するかどうかテストしています。
    !は否定なので、存在しないものだけをリストアップしていることになります。

    とまあこんな感じですね。
    コレクションが気軽に扱えるのと、パイプで結果が他のコマンドに渡せるので、
    なれると結構便利です。

    とはいえ、自分もまだフォルダやファイルをどうこうしたいときにしか使ってませんが・・。
    便利そうな使い方があれば随時メモっておこうかと思います。

    テーマ : プログラミング
    ジャンル : コンピュータ

    プロフィール

    ざっち

    Author:ざっち
    ざっちのーと
    ♪自由なSEのメモ帳です♪

    ざっちのスキル一覧
    ----------------
    上級(手足も同然!)
    ・.net FrameWork
    ・C#
    ・SqlServer
    ・VisualBasic6.0
    ----------------
    中級(だいたいOK!)
    ・WPF(XAML)
    ・Android
    ・WindowsMobile6.5
    ・HTML
    ----------------
    下級(や、やればできるさ!)
    ・PHP
    ・JavaScript
    ・SilverLight
    ・SQLite
    ・Python(だってjetCreaterが・・・)
    ・C++(OpenCVいじってみたくて・・・)
    ----------------
    最近のお気に入り
    ・WPF(XAML)
    ・Android
    ・GoogleAPI
    ----------------

    最近の記事
    月別アーカイブ
    カテゴリー
    夢見る羊さん
    地球の名言Ⅱ

    presented by 地球の名言

    Twitter...A

    Twitter < > Reload

    ブロとも申請フォーム

    この人とブロともになる

    ブログ内検索
    RSSフィード
    リンク
    上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。