ホチキス先生の「プログラマーと呼ばれたい」

InfoPath & SQL Server !

Archive for the ‘TCP/IP’ Category

2016年10月1日のアドミンティーチャーズのラボワークでは、ESP8266 WiFi モジュールを搭載した Arduino WeMos D1 を 2台使い、一方を WiFi アクセスポイント、もう一方を WiFi クライアントとして接続し、Web サービスでデータ通信をする。

leave a comment »

アドミンティーチャーズのラボワークでは、8月と9月にESP8266 WiFi モジュールを搭載した Arduino WeMos D1 を使って通信を試した。WeMos D1 は安価で手に入れやすいマイコンボードで、実習教材にも適していると思われる。しかしまとまった解説やサンプルスケッチがなかなか見当たらない。多く見られるのは WiFi クライアントにしてアクセスポイントに接続し、Web サービスを実装するというものだが、WiFi クライアントにすることや Web クライアントを実装する事例は少ない。試行錯誤が必要だったが、うまく通信できるようになった。

今回の「ラボワーク」では 2台の WeMos D1 を使う。一方の WeMod D1 を WiFi アクセスポイントの設定にし、Web サービスを実装する。Web サービスでは、アナログ I/O ポート A0 に接続したボリュームの電圧を Web ページに表示するようにしておく。もう一方の WeMos D1 は WiFi クライアントの設定をし、起動したら WiFi アクセスポイントにした WeMos D1 に接続するようにし、Web クライアントを実装して Web ページを取得し、HTML テキストからボリュームの値を取り出して Multifunction Shield の 7セグメント LED に表示する。

マイコンボードが互いに WiFi 接続できれば応用範囲が広がるだろう。また Web サービスや Web クライアントを実装することで、Web サービスの仕組みも理解できる。

アドミンティーチャーズのラボワークは、会の性質上「情報教育に関心のある方」としているが、必ずしも学校関係者に限定しているわけではないので、興味のある方はぜひ来てほしい。またノートパソコンの Arduino 開発環境は、当日ラボワークで設定することもできるし、ノートパソコンがなくても実習を楽しめるし、ゆるやかな体験、交流の場なので、気軽に手ぶらで来てもらってかまわない。

アドミンティーチャーズ Web サイト
https://adminteachers.wordpress.com/

P1400528_mid_640_480

アドミンティーチャーズのラボワーク LW04 「W5100 イーサネットシールドを使ったWebサービスのプログラミング」の報告

leave a comment »

今年2月から毎月第一土曜日と決めて神戸三ノ宮の会議室で行っているマイコンボード勉強会「ラボワーク」。5月は「W5100 イーサネットシールドを使ったWebサービスのプログラミング」をテーマにした。

P1100979_clip_640_480

このイーサネットシールドは Arduino の事実上のデファクトスタンダードなイーサネットシールドで、Wiznet の W5100 チップが使われている。Arduino IDE 開発環境で標準でライブラリが用意されているのでプログラミングもしやすい。

このイーサネットシールドを使って Web サービスを実装するには次のようにする。

———————————————————————————

void setup() {
  Ethernet.begin(mac,ip);
  server.begin();
}

void loop() {
  EthernetClient client = server.available();
}

———————————————————————————

たったこれだけで Web サービスが動く。あとは受け取ったデータを解析し、適切な HTML テキストをクライアントに返すだけだ。

クライアントに対してテキストを送り返すには次の一行でいい。

———————————————————————————

  client.println("This is my web");

———————————————————————————

ただこれを単に void loop() に書くだけでは、ひたすら際限なく同じテキストをクライアントに送り続けることになる。そこでクライアントから接続要求があったときに、テキストを一回だけ送るという処理が必要になる。

たとえば次のスケッチは接続要求のキャラクタを文字列につなぎ、文字列に「GET」があれば HTML のリクエストだと判断し、一回だけテキストを返してサービスを終了する。

———————————————————————————

void loop() {
  EthernetClient client = server.available();
    if(client.connected() == 1){
    c = client.read();
    stc.concat(c);
    if(client.available() == 0){
      Serial.println(stc);
    }
  }
  if(stc.indexOf("GET") != -1 && client.available() == 0){
    client.println("This is my web");
    client.stop();
    stc = "";
  }
}

———————————————————————————

これでクライアントから接続すると「This is my web」の文字がブラウザに表示される。正しい HTML 文ではないが、表示されるはずだ。

クライアントからの要求が POST メソッドだったときは、受け取ったテキストを解析して必要な処理をさせることができる。たとえば HTML 文にチェックボックスとボタンを用意して、8 x8 マトリックス LED をコントロールするようなこともできる。

P1160747_mid_640_480

P1160639_mid_640_480

しかし、メモリの制約だと思われるが、あまり長い HTML テキストを送ることや POST メソッドも長いメッセージを受け取ることができない。そこで、HTML テキストは SD カードに保存しておき逐次読みだして送信することを考えなければいけない。また POST メソッドも不要なテキストを削除して処理する必要がある。

イーサネットシールドになぜ SD カードスロットが付いているのかが疑問だったが、実用的な Web サービスを構築するには長い HTML テキストを処理する必要があるからだ、ということがよくわかった。

Arduino と Web サービスは今後も「ラボワーク」でとりあげることにする。無線ネットワークもやってみたい。わかったことの詳細は、また別途項を改めて報告したい。

今週末は神戸三ノ宮でアドミンティーチャーズのラボワーク。ArduinoでWebサービスをプログラミング。

leave a comment »

今週末は連休の後半だが、5月7日(土)に神戸三ノ宮でアドミンティーチャーズのラボワーク第4会をやる。今回のテーマは「Webサービス」だ。使うのは WIZnet の TCP/IP ハードウェア処理チップ W5100 を使った Arduino UNO 用の定番イーサネットシールドだ。

アドミンティーチャーズ「ラボワーク LW04 – W5100イーサネットシールドを使ったWebサービスのプログラミング」
https://adminteachers.wordpress.com/2016/04/18/%e3%83%a9%e3%83%9c%e3%83%af%e3%83%bc%e3%82%af-lw04-w5100%e3%82%a4%e3%83%bc%e3%82%b5%e3%83%8d%e3%83%83%e3%83%88%e3%82%b7%e3%83%bc%e3%83%ab%e3%83%89%e3%82%92%e4%bd%bf%e3%81%a3%e3%81%9fweb/

p1140109_clip_640_480

Arduino には、このイーサネットシールドを使って TCP/IP 通信をするライブラリが提供されている。このライブラリを利用すると簡単に TCP/IP 通信をするプログラムを作ることができる。Web サービスのサンプルコードも提供されており、簡単に Web サーバーを作ることができる。

Web サーバーを作るだけでなく、プログラム上で TCP/IP 通信のデータを見ると、Web サービスでどんなデータがやりとりされているかがわかる。すると単に決まった固定の HTML テキストを返すだけでなく、I/O ポートから受け取ったデータを返すことや、POST メソッドで受け取ったデータをどう処理すればいいかが理論的に理解できる。

このように今回の実習では、単に実用的な Web サービスを作るだけでなく、HTTP 通信の中身を明らかにすることもラボワークの目的とする。まさに「ラボ」という言葉にぴったりの時間にするように企画している。

USBで給電できる Logitec の超小型スイッチングハブ LAN-SW03PSWE を買った。

leave a comment »

出先でイーサネットを実験できるように、USBで給電できるスイッチングハブを探していた。これが意外にない。たとえば、ホテルのイーサネットを WiFi にするような WiFi ルーターは何種類もあり、USB で給電できるものも多い。しかし有線のイーサネットハブで USB 給電できるものは少ない。俺が探したところでは、これ以外には他に2種類しかない。PLANEX 8ポート 10/100M スイッチングハブ FX-08Mini か BUFFALO 10/100Mbps対応 プラスチック筺体 AC&USB電源 3ポート ブラック スイッチングハブ LSW-TX-3EP/CUB だ。

このロジテックの USB 給電スイッチングハブは 2種類あって、もうひとつは LAN ポートが3つしかない LAN-SW03PSWE だ。どちらにしようか迷った。というのも、出先でイーサネットの実験をするには多くのポートは必要なく、3ポートあれば十分だからだ。しかし 5ポートの LAN-SW05PSWE が実売価格で 1,091円、5ポートの LAN-SW03PSWE が 945円。その差はたったの 146円だ。ほんのペットボトル飲料一本程度の違いしかない。応用場面を考えると 5ポートのものを選ぶのがいいだろう、と思った。

P1140033_mid_640_480

USB 給電できる WiFI ハブがあって USB 給電できるスイッチングハブの種類が少ないのには、どうやら消費電力も問題があるようだ。そこは確かに気になっていて、たとえばこの Logirtec の製品でも、商品電力を考えて、あえて 3ポートのものを選択することも考えた。しかしこのモデルは、使っていないポートの電力供給を制限する機能が入っているらしい。それなら 5ポートを選択しても大丈夫だ。

大きさもとってもコンパクトで、掌にすっぽりと収まる大きさだ。実に小さい。

P1140036_mid_640_480

ちなみに厚さはこんか感じだ。イーサネットの RJ45 コネクタの大きさを考えると、厚みはこれがほぼ限界だと思われる。薄い。

P1140038_mid_640_480

持ち歩くことを考えると少しでも重量が小さいほうがいい。だがこれも、スペック上では 3ポートのスイッチングハブが 29g、5ポートのスイッチングハブが 39gとあった。10gの違いは大きくない。実際のところ、購入した 5ポートのスイッチングハブ LAN-SW05PSWE をキッチンスケールに載せて量ると 38g だった。

P1140041_mid_640_480

さてこれを何に使うのかといえば、マイコンボードのイーサネットを使うプログラミング、Web サービスを実装するようなプログラミングを出先で試したいからだ。ちなみに先日、これを持ち出して近所のホームセンターのフードコートでプログラミングをした。快適だった。

P1140106_mid_640_480

もちろん家でも職場でもプログラミングをするが、ちょっとした空き時間、いつもとは違う空間でプログラミングをするのも楽しい。意外に作業がはかどる。ということで、これからもこの USB 給電スイッチングハブを持ち歩き、あちこちでネットワークプログラミングをすることを楽しみにする。

Xbox360 のシステムリンクプレイが可能なゲーム – FORZA MOTORSPORT 2 はシステムリンクプレイに対応している

leave a comment »

Xbox 360 のシステムリンクプレイとは、2 台の Xbox 360 本体をケーブルで接続したり、最大 16 台までの本体をネットワークで接続したりできるマルチプレイヤー ゲームの方法だ。Xbox 360 本体は LAN ケーブルで接続し、ピアツーピア型のローカルネットワークになる。インターネットに接続しなくても楽しむことができるのだ。これは Xbox 360 の初期型から使うことができる機能だ。インターネットに接続せずにネットワーク対戦をするので、XBOX LIVE での対戦と区別するためにシステムリンクプレイという用語が使われている。

もちろんゲームがシステムリンクプレイに対応していなければならない。たいていの Xbox 360 ゲームは XBOX LIVE による対戦に対応しているが、リンクプレイに対応しているゲームは少ない。ちなみに手持ちの Xbox 360 ゲームでシステムリンクプレイに対応しているものを探してみた。

1.HALO Combat Evolved Anniversary: システムリンクプレイ 2-16 人

P1100659_mid_640_480

P1100660_clip_640_480

2.HALO 4: システムリンクプレイ 2-16 人

P1100661_mid_640_480

P1100662_clip_640_480

3.Gears of War Judgement: システムリンクプレイ 2-10 人

P1100663_mid_640_480

P1100664_clip_640_480

4.Forza Mortorsport 2: システムリンクプレイ 2-8 人

P1100665_mid_640_480

P1100666_clip_640_480

5.Project Gotham Racing 3: システムリンクプレイ 2-8 人

P1100667_mid_640_480

P1100668_clip_640_480

6.Project Gotham Racing 4 : システムリンクプレイ 2-8 人

P1100669_mid_640_480

P1100670_clip_640_480

俺はワイヤレスレーシングホイールを持っているほどレーシングゲームが好きで、とりわけ Forza Motor Sport は大好きだ。しかし Forza Motor Sport 2 がシステムリンクでマルチプレイができるとは気が付かなかった。ワイヤレスレーシングホイールと Xbox 360 を 2 セット用意して並んでゲームをしたらヒートアップするだろう。ちなみに Forza Motor Sport も 3 、4 、HORIZON はシステムリンクプレイに対応していないようだ。またテストドライブアンリミテッド Test Drive Unlimited、ニード・フォー・スピード・シフト Need for Speed Shift もシステムリンクプレイに対応していない。

神戸SQL Server Users GroupのSQL Serverセミナー(初級1)を実施した

leave a comment »

校務の情報化にはデータベースの知識と技術が必要なことから、SQL Serverを勉強するコミュニティを作った。とりわけ今年度から指導要録のデータベース化が一歩前進することから、各学校の担当者はデータベース化に取り組まざるを得ないはずだ。

神戸SQL Server Users Group
http://kobesqlserverusersgroup.wordpress.com/

昨日、2013年11月9日(土)には神戸SQL Server Users Groupと特定非営利活動法人 情報技術相互支援協会の共催で、SQL Serverセミナー(初級1)を開催した。

このSQL Serverセミナーでは、SQL Serverの初心者がSQL Serverの基礎を学び、データベースを使ったシステムを作り運用することができるようにすることを目標としている。1回のトレーニングを90分とし、初級講座を1、2と分けて企画した。初級1ではSQL Management Studioの使い方、テーブル作成、データベースダイアグラム、ビューとリレーションシップ、データの型、簡単なSQL文、を内容とした。初級2ではストアドプロシージャ、トリガ、ユーザー定義関数、データベースダイアグラム、SQLの応用、を計画している。

初級セミナーは1と2でおおよそ基本を網羅するように考えたが、やはり90分では深まりに欠ける。あらかじめ用意した初級1のプリントをひととおり網羅したが、やりたいと思っていた直積やPIVOTまで説明できなかったし、SQL文もごく基本的なものに留まった。次回は初級1.5的なセミナーとし、フォローアップを考えている。

今後もSQL Serverセミナーは神戸三宮で定期的に開催する予定だ。日程は決まり次第、神戸SQL Server Users Groupのblog http://kobesqlserverusersgroup.wordpress.com/ に公開するので、興味がある人はチェックしてほしい。

ネットワークに関するトラブルシューティングの実際(後編)

leave a comment »

ネットワークのトラブルでクライアントPCからファイルサーバーの共有フォルダが見えなくなった、との連絡をうけ、自宅からアドバイスを出しながら担当者にトラブル対応をお願いしていた。「人災」の可能性を考えた俺は、ネットワークのトラブルがおこった時間にネットワークに関して何かした人がいないか調べてみてくれ、とお願いした。すると普段はネットワークに接続していないノートPCを繋いだ人がいることがわかり、調べるとIPアドレスが既存のクライアントマシンと重複していたことがわかった。そこでそのノートPCのIPアドレスを重複のないものに設定しなおしてもらった。

担当者からは「いったん復旧したように思えたのですが、しばらくしてまた使えなくなりました」との報告だった。担当者からはPCからサーバーへPingを試した結果や、実際にクライアントPCから共有フォルダのマッピングがどのように見えているのかをデジカメで撮影した画像などを送ってもらった。このあたりはメールで文章で説明されたり、電話で聞いてもなかなか実際のところがわかりにくい。写真なら一目瞭然だ。

クライアントPCからドメインコントローラーやファイルサーバーなどにPingが正常に届くことがわかっている。またファイルサーバーは他にもあって、クライアントPCのいくつかは他のファイルサーバーの共有フォルダを正しくマッピングしているものもある。「ネットワーク」を開くとドメインを示すアイコンは表示されるものの、ドメイン内にあるはずのサーバーなどコンピュータはごく一部を除いてアイコン表示されていない。こうした中途半端な状態はやっかいだ。担当者は「名前解決の問題ではないでしょうか」と言ってきた。一般ユーザーは「見えない」とか「つながらない」と言うが、管理者としては接続において何が問題なのかを具体的に洗い出さなければならない。IPレベルだけでなく、「名前解決」ができているかどうかは重要だ。

ネットワーク経路のスイッチをチェックしたが、どのスイッチも異常がないようだ。ドメインコントローラーをチェックしてみる。すると確かにネットワークの障害がおこった時間にARPエラーログが記録されている。サーバーを再起動し、テスト用のクライアントPCをサーバー室に持ち込み、ネットワークを切りはずしながらチェックをしようとしていたとき、もうひとつIPアドレスの重複がみつかった。そしてIPアドレスを設定しなおすと、ネットワークの障害は解消された。

結局ネットワーク上に同一IPアドレスのマシンが2台あったことでネットワークのトラブルがおこったことがわかった。原因はきちんとしたIPアドレスの管理ができていなかったことにある。固定IPでネットワークを構成するなら、台帳で正確にIPアドレス管理をするべきであるが、言うは易し行うは難しで今までにも何度かこうしたトラブルを経験している。

まず設定時に不注意で間違ったIPアドレスを設定してしまうことがある。特に大規模なPCの更新時などは、単純作業を繰り返すうちに注意力が散漫になり間違う可能性を防げない。仮に2台同じIPのマシンを設定してしまっても、同時に起動していなければそれぞれは正常に動作するのでわからない。

次に実験的に構築したマシンのIPアドレスを「とりあえず」適当なものに設定してしまうことがある。実験機であってもIPアドレスの管理をするべきなのだが、実験中は思考が実験に向いているのでどうしてもIPアドレスのようなレベルの低い部分については、とにかく使えるようにすることを考えてしまうので、どうしても管理がおろそかになる。そして実験機がうまく動けば、そのまま実運用環境につないでしまったりするので問題になる。こうしていつのまにかネットワーク上に管理上ありえないIPアドレスのマシンが増えていく。

コンピュータを更新した場合もIPアドレスの重複がおこる。古いマシンを新しいマシンに置き換えたとき、新しいマシンを以前のマシンを同じIPアドレスにすることが多い。このとき古いマシンを廃棄すれば問題ないのだが、往々にして古いマシンも用途によってはまだまだ使えるということで、使用頻度の小さいクライアントPCに転用したりしてしまう。このときIPアドレスをそのままにしてネットワークにつないでしまったりする。

ネットワーク上にIPアドレスの重複があったとき、その重複のあるPCだけでなくネットワーク全体、厳密にはブロードキャストドメインにトラブルを与える。

Written by Yoshio Matsumoto

2011年7月16日 at 7:52 AM