miyachi]第1回ではRaspbianのインストールからsshでのログイン環境までまとめましたが、HDMI接続のモニターを利用していました。小さいRasPiに大きなモニターやTVを接続して利用するのも勿体ない気がしますし、組み込みを考えると小さなモニターが欲しくなりますよね?私もロボットへの組み込みを考えているので3~7インチ程度のLCDモニターを色々買って試してみました。ほとんどAmazonで買っています。LCD」で検索してみると、775件がヒットします。今回はそのうち4種類についてまとめます。ちなみにRasPiへのLCD接続方法は大きく分けて以下の3種類があります。タイプA)HDMI接続のLCDモニター(標準)タイプB)GPIO接続のLCDモニター(独自)タイプC)DSI接続のLCDモニター(公式)困ったことにそれぞれ一長一短があります。どれを選ぶのかは用途や好みの問題となります。私が買ったのは以下の4つです。金額は今日現在のもの。いずれもタッチ対応のLCDモニターです。1)7インチLCD:RasPi公式:DSI接続:静電容量式:10,200円2)5インチLCD:cocopar:HDMI接続:感圧式:5,800円3)4インチLCD:cocopar:GPIO接続:感圧式:2,999円4)3.5インチLCD:OSOYOO:HDMI接続:感圧式:2,980円では順番に見ていきます。Pi(以後、RasPi)は皆様ご存じのようにIoT向けの小さなLinux環境を提供するミニPCです。LinuxはDebianベースのRaspbian(使い方はほぼDebian)ですが、IoT向けと言うことで色々拡張することが多くセットアップやLCD選択も一筋縄では行きません。言うことで以下までのノウハウを残しておこうと言うことでとりま4回を予定しています。Raspbianのバージョンは現時点での最新である、2.1~2.3で動作確認した結果となります。Zeroの3種類です。第4回:RasPiのI2Cでサーボモーターを動かすでは第1回と言うことで、Raspbianをインストールしてsshでリモートログインするまでを以下簡単にまとめます。2012以降で、.NETを使ったC++/CLIでXmlDocumentクラスを使った場合に実行時に以下のようなエラーになる事があります。2012だけの現象かと考えていましたが違いました。2012以降に、C++/CLIを使った時に生じる問題でした。悩んだのできっと同じ道を辿る方の為に原因と対処方法をまとめます。ちなみにこの解決方法は「ここ」で知りました。Unoを使ってきました。これが非力だし何と言ってもIoTと言いつつネット接続に別シールドが必要だったりとなかなか面倒でした。IDEでソフト開発もできる素晴らしいチップに出会ってしまいます。ESP-WROOM-02単体ではUSB接続もできないしWiFi利用時の電源容量が300mA近く必要と言う壁にぶつかります。スイッチサイエンスが全てをまとめた開発ボードを販売しているのですがずっと品切れで試せない...と言うことで秋葉原の秋月で買える部品で安定動作できる開発ボードを自作したのでした。ベースがソフト屋なのでプルアップと言われても「なにそれ美味しいの?」レベルで苦労しました。楽しくもあったので良かったですが。安定してプログラミングできる環境ができたので公開することにしました。それを公開しようとしている今現在...スイッチサイエンスには大量の開発ボードの入荷があり私も注文中です。miyachi]久しぶりのプログラミングネタです。現在リリースしているLE:PAdES:LibのWindows64bit版が必要になりプロジェクトをリビルド...しようと思ったのですが使っているオープンソース系プロジェクトの幾つかでWindows64bit版のバイナリが無いものがありました。XML操作ライブラリであるlibxml2もその1つです。仕方が無いのでソースからビルドする事にしました。ついでにlibxml2が依存していたiconvも不要なので切り離すことにしました。miyachi]久しぶりの技術ネタです。私もオープンソースのライブラリには常日頃お世話になっています。公開してくださっている開発者の皆さんには心から感謝しています。私も今年はオープンソースとライセンスのプロジェクトを開発することで少しでも恩返しができればと考えていたりするのですが...閑話休題、今日のネタはライブラリの入出力がFILE構造体指定しか無いけどファイルでは無くメモリ上で入出力する方法です。これは実際に先日libpngやlibjpegを使おうとした時にぶつかった問題です。元ファイルを読み込んだ後で画像フォーマットの変換をメモリ上で行いたいのですが、サンプル等は全てFILE構造体になっています。これをメモリのポインタを利用するようにすることも可能だと思いますが面倒で時間もかかりそうなのでサンプル実装をそのまま使いたいと言うことです。今回はWindowsとLinuxの両方でこの問題を解決する必要もありました。残念ながらWindowsとLinuxで共通した方法は見つかりませんでしたが、どちらでもFILE構造体を使ってメモリ上で操作する方法が分かりましたので簡単にまとめます。miyachi]ActiveXコントロールのプログラミングに関する情報は書籍も含めてVisual-C++6.0のものが多いです。VC++6.0の時代では無い...と言う事でVisualStudio2005のC++でActiveXコントロールのプロジェクト作成を試してみたのでまとめてみましょう。貼り付ける」と言うブログ記事を発見。コントロールを作成して、Cabプロジェクトを追加して、HTMLを作成して表示してみるとさっくり動きました。これで良いのか...と思ったのですが罠が待っていました。結論を先に言えば「実行しても安全」とマークしておく必要があります。簡単に手順を説明します。備忘録なので簡易に書いていますが経験者の方なら不足は無いと思います。今回はCabファイルは作成しないで話を進めます。使う必要があるのでまずは書籍を購入。アプリケーションプログラミング」の2冊。Rubyも使うのが初めてなのでリファレンス用に1冊。インストール手順もあるのでまずはWindows用をこの本の記載通りにサクッとインストールして無事に動作を確認。ところがどうも今回使うRubyネイティブモジュールの中にはWindowsでは動作しないものもあることが分かりました。言うことで少し苦労をしたのでネタとしてブログにまとめておきます。miyachi]前回の投稿もそうですが「プログラマの日記」なものでプログラム等のソースコードをブログに書く場合が多いです。表示は手を抜いていたので見苦しいものでした。以前から何とかしなければと考えていましたが、お昼休みにエイヤッとやってしまったので記録です。いうやり方が一般的なのかググってみました。JavaScriptやPHPのプラグイン的にやるケースが多いようです。行番号が付けられたりして便利そうですが、プラグインを使うのはどうも好きではありません。そんな中で見つけたのがMTサイト構築Tips集様の以下の記事。pre、codeタグを使ってソースコードを美しく表示するCSSを使って結構美しく出来るようです。参考にしてみてCSSにPREとCODEタグの定義を組み込んでみました。_)mただまだ問題があります。ソースを入れる場合にソースコードの特殊文字を変換する必要があります。これは比較的簡単なのでJavaScriptで作ってみました。以下長くなるので続きを読むにて。miyachi]Flashに組み込むActionScript3.0でXMLの扱いを勉強。なんと文字列としてでは無く直接代入が出来ることに感動。<data>coffee</data>;でもふと困った。ヘルプを見ても良く分からなかったけど検索して発見。見つけにくかったのでここにも書いておきましょう。括れば変数の値をそのまま使ってくれるそうです。<data>{drink}</data>;これは楽だ。あと当然ながらノードや要素のリプレース等も出来るが独自すぎてDOM等に慣れていると逆に分かり難い面も。何にせよActionScriptは独自の世界だなぁ。[追記]ActionScript3.0からURLRequestとURLLoaderを使ってHTTP通信のプログラミング。登録コマンドを送って再読み込みコマンド...あれ?反映されていない?ブラウザからチェックしてみると登録されている。?????暫く何が悪いか分からず時間を無駄にしてしまいました。調べてみるとどうやら強力にキャッシュされてしまいサーバに接続しないで古い内容が戻って来ているらしい。これを避けるにはなんとURLの最後に乱数を付けて毎回異なるURLにアクセスしていると思わせる方法が一般的のようです。言うことで以下のように現在時刻のミリ秒をダミーとして引数に与える事で解決。ActionScript3.0はなかなか手強い。miyachi]訳あってJavaScriptからサーバの環境変数を取得する必要がありました。理屈から言えばJavaScriptはクライアント側で動作するのでサーバの環境変数は取れないらしい。ネットで調べると結構皆さん苦労されているようでした。他の方法も考えられないでは無いのですが出来ればJavaScriptで取得したいと思って色々検討した結果、以下の手順を思いつきました。JavaScriptからPHPの変数を取得PHPはサーバ側で動作することもあって環境変数は全く問題無く取得できます。JavaScriptからPHP変数の値が取得できれば出来るはずです。動作したのでここに書いておきます。htmlの中に以下のようにPHPとJavaScriptを記述して実現しました。jaddr);</script>ここでは環境変数REMOTE_ADDRを取得しています。PHPが先でJavaScriptを後に記述しないと順番があるのでうまく動作しません。釈然としない部分はあると思いますがまずは目的クリアの為にはこういう方法もあると言うことでご参考まで。miyachi]先日事情があってWindows上でのSSLクライアント認証のプログラミングの調査をしました。考えたら数年前に使ったことがあったのを忘れていました。健忘録として書いておきます。始まるサイトを利用する事で使っていると思います。クライアント認証はサーバ側が逆にクライアントを認証して接続の可否を決める仕組みです。X.509形式証明書と秘密鍵を使いますのでPKI的な素養が必要ですがPKIとは言えませんね。言うことでプログラミングで考えるとクライアント側からサーバへのhttp通信になります。良く使われているレガシーな通信APIとしてはWinInetがあります。Win32からhttp等の通信をするならWinInetが一般的です。msxml等からも使われています。ところがWinInetはSSLサーバ認証は対応していますがSSLクライアント認証には対応していません。SSLクライアント認証に対応するにはWinInetの後継であるWinHTTP(英文)を使うとなっています。何だかWinHTTPを生で使うのは面倒そうです。FrameworkのクラスであるHttpWebRequestとHttpWebResponseを使う事をお勧めします。HttpWebRequestとHttpWebResponseを使ったクライアント認証の説明とサンプルのページもあります。私の場合はこのページだけでうまく使うことができました。クラスで接続に利用するクライアント証明書を用意するところでしょうか。ファイルが必要」となっていますがこれはWindows証明書ストアから取得した方が間違いがありません。X509Certificate2クラスの関連クラスを利用すればGUIによる証明書選択も可能になりますし必要な証明書を取り出す事も可能です。miyachi]現在開発中のプロジェクトはMacOS-Xで動作しているあるアプリをWindowsに移植するというもの。FrameworkだけでGUIも作ってしまおうと初めて本格的にC#だけでアプリを開発しています。経験値はアップしていると思うので頑張りどころです。今週取り組んでいたのは以下のようなスマート検索のダイアログです。問題になるのはメインの検索条件を入力する部分です。クラスを使うことにしました。これが思った以上に簡単には使えない!何の罰ゲームですか?と言う感じでした。情報はあるんですが私には判りにくかったです。ここで簡単にポイントだけ押さえておこうと思います。