最近、DellのT100サーバにVirtualBoxって云うソフトをインストールしたんスよね。要はコンピュータの中に仮想のコンピュータを仕立てるソフトなんスよ。Fedora28って云うLinuxマシンを仮想コンピュータとして起動したのが上の図っすよ。旧態依然としたモノクロのキャラクターベースのログイン画面なんスけど、皆さんが普通にアクセスしてるサイトのウェブサーバも大体こんな感じっスからね。Termと云うのを使ってたんだが、Windows10にも標準でOpenSSHって云うのが付いてくるようになったんで、OpenSSHクライアントソフトを使ってみたんスよ。使い方は何のことはない。ツール]→[コマンドプロンプト]を選択すると上のような画面が出てくる。上の図は”C:\Users\user>”ってなってるんだが、PCにログオンしてるユーザー毎に”user”の部分は変わるんで、読み替えてみてね。上の図では何をやってるかと云うと...カレントフォルダ直下に.sshって云うファイルもフォルダがないのを確かめ...sshコマンドで、sunao-laboと云うユーザーでホスト192.168.11.11のPCにログインしようとする「ホントに接続を続けてもいいの?」って尋ねてくるので”yes”パスワードを入力すると...ログイン出来たっと!exitでログアウトして...カレントフォルダ直下に.sshって云うフォルダが出来て、その中にknown_hostsって云うファイルが出来てた。typeコマンドでknown_hostsの内容を見たらこんな感じだったって云う感じっすね。上の図はsshって云うコマンドだけじゃなく、ssh-keygenって云う公開暗号カギを生成するコマンドも付いてきって云う話ッスね。公開暗号を使ってサーバにログインする方法についてまた今度にしますんで悪しからず。PCの中に仮想のPCが作れるソフトで、仮想環境のサーバを使ってウェブアプリケーションを作るのに便利なんスよ。ハードウェアを用意する必要もないんでコストも掛からないしね。今ではAWSとかのクラウドで開発することが多いんで、VMwareで開発をお願いされることはなくなったんスけど、個人的な学習と云うか研究と云うのには今でも使ってるんスよ。Playerを起動すると下のような警告が出るようになって使えなくなっちゃったんスよ。云うサーバマシンで、システムのバージョン情報は以下の通り。Workstationのバージョン14からなんスよね。MR3500って云うCore2QuadのQ9400のCPU搭載のPCもあるんスけど、システムのバージョン情報は以下の通り。Playerが使えるんスよ。結論として、Core2Quad時代のCPUを使ってるPCは、VMwareのバージョンは12までで、Win10のバージョンを1809までしか上げられないと云う事っすかねぇ。iシリーズのCPU搭載のPCに買い替えてVMwareのバージョンを14以上にするしかないッスね。APIで成り立ってると云っても過言ではないくらい、インターネット技術の中枢的な存在っすね。コイツのおかげでオイラは飯を食わせてもらってるようなもんです。APIで取得して、カスタマーにサイトのページで提供したり、別のオリジナルなAPIとして提供してる訳っすよ。APIを使っていいよって証になるキーですね。すると下のようなJSONという構造体のデータを返してくれるんスよ。NHKオンラインのチャンネルIDは”UCip8ve30-AoX2y2OtAAmqFA”だわねってことが分かる訳っすよ。このあとチャンネルIDを使って動画情報を取得して、そういうデータをうまく加工してカスタマーに提供したりする訳っすね。ちなみにオイラのAPIキーがばれるとまずいので、ユーザーIDからチャンネルIDを取得するページを簡単に作ってみました。Viewをインストールしないと上のようにきれいに表示されないと思うけどご参考まで。次回はもう少し突っ込んだ話を。昨日の夕方、管理してるサーバの警告メールが届いたんスよね。要するにデータ領域が少なすぎて「別のサーバからデータを転送できねぇぜ」と云うお達し。管理サーバにsshでログインして調べてみたらデータパーティション領域の使用率が99%でした。仕方ないんで危急に必要のないバックアップデータとかを別のサーバに一旦移して使用率を96%にまで下げました。/mnt/xxxx容量を確認。96%になったけどあんまり余裕なし。そのうちまたデータが一杯になるのは想像に難くないので、ハードディスクを増設しようと。それで、AmazonのクラウドサービスEC2の便利なところがサーバが稼働中にハードディスクのボリュームを増量することができるんスよ。実機でだったら稼働中にUSB接続で外付けハードディスクをアタッチすることは出来るけど、さすがに動いてる内臓ハードディスクの容量を300GBから500GBに増量なんて出来ないっしょ?先ずはデータパーティションのデータのバックアップということでスナップショットを撮ります。万が一ボリューム変更時にパーティションを壊してデータをお釈迦にしても大丈夫なように保険っすね。AWSのコンソールからブラウザで操作っすよ。50GBから70GBへボリュームを変更すると...最適化が始まって、10分位すると100%になって使えるようになると...いうわけじゃないんスよ。この後、この管理サーバにsshでログインしてパーティション領域を拡張する作業が必要なんスよ。/mnt/xxxxボリューム増量後は70GBになってるね。ここでパーティションを拡張するコマンドを投入。typeありゃ?だわねぇ。ファイルシステムを強制的にチェックしよう。aborting.やっぱ、ディスクをマウントしたままじゃダメかぁ。エイやでアンマウントしてみるかぁ。blocks出来たねぇ。/mnt/xxxx出来ましたねぇ。Solr”という全文検索システムで、番組キーワードに該当するページの検索結果をサイトのサムネイルとともに表示するシステムを管理してる。サムネイルを作成する現行システムはあるにはあるんだが、理由があってリプレイスしたいと考えている。サイトを巡回してサムネイルを作成するアプリケーションをいろいろ探してるんだが、なかなかいいのがない。見つけたのが上のCrenaHtml2jpgと云うアプリ。コイツのイイところはGUI(グラフィカルユーザーインターフェース)とCLI(コマンドラインインタフェース)の両方で使えて、例えばサイトを巡回してバッチ処理的にサムネイルを作成するには、CLIを使えばいいのだ。試行錯誤したのだが、自分が管理しているサイトでは、GUIの方じゃないとちゃんとキャプチャーしてくんないということが判明。したものかと思ってたらWindowsに標準でついてるPowerShellを使えば、GUIのテキストボックスとかにターゲットのURIを入力したり、実行ボタンを押してくれるスクリプトが書けるらしい。前準備が必要で、動かしたいアプリケーションのテキストボックスやボタン等の部品(オブジェクト要素)のプロパティを取得したり、書き換えたりするUIAutomation.dllというのをインポートする必要がある。行き、Downloadボタンを押してzipをダウンロード、Documents\WindowsPowerShell\Modules\UIAutomationに展開する。次にPowerShellを開いて、上記のディレクトリに移動し、下のコマンドを実行。.\UIAutomation.dllGet-Moduleして以下のようにでてくればOK。{Add-UiaBannerText...そして、こんな感じでスクリプトを書いて、PowerShellに実行させるらしい。Files\CrenaHtml2jpg-v1.20\”にインストールされているという前提です。Chromeで順次指定したURLを開くバッチプログラムなんスけど、先ずメモ帳(notepad.exe)で参照したいURLを列記して、url_list.txtという名前で保存。メモ帳で下のプログラムの通り打ち込んで、test01.batという名前で保存。test01.batダブルクリックして実行。すると、10秒毎にURLのページをクロームで開き、閉じるという動作をするだけなんスけど、これに間に画面キャプチャーするコマンドを入れてやると、サイトキャプチャーソフトの出来上がりってぇわけです。ちなみにurl_list.txtとtest01.batは同一フォルダに置く必要があるんっすよ。url_list.txthttp://www.infoseek.co.jp/http://www.rakuten.co.jp/http://news.infoseek.co.jp/topics/itmedia_mobile_20170124030/http://news.infoseek.co.jp/topics/gendainet_370857/http://news.infoseek.co.jp/topics/170124jijiX678/別にクロームでURLを開いてもなんの意味もないんスけど、オフィス・オートメーションで単純な仕事やるときにこんな手法で事務処理をするっていうのが賢いやり方っすよ。よるキーボードのグローバルフックリリースしたシステムのプログラミングについて、先週の水曜日あたりからずっと悩んでいて、先週は非常に不機嫌でした。2005のC#で開発しているんですけど、「フォームがアクティブでないとキーボード入力の割り込みを受け付けないのでバックグラウンドでもキーボード入力を拾うようにして欲しい」という顧客からの要望が挙がってきました。ネットで調べて見ると「グローバルフック」とかのキーワードでいろいろ出てくるんですけど、ドットNETだとdllじゃないとだめだとか、参照の設定が面倒で名前空間に見つからないとか、デバッグ時にホスティングプロセスを有効にするチェックを外さなければいけないとか、いろいろあってまともに動くサンプルプログラムが見つかりませんでした。へぼプログラマだから仕方ないんですけどね。Hook”というキーワードで調べてみたらサンプルプログラムがわんさか出てきました。なんだ最初っからここで調べれば良かったんジャン!と思いつつ、サンプルプログラムをダウンロードして動かしてみたらちゃんと動きました。ちなみに会員登録しないとダウンロード出来ない仕組みになってるし、英語サイトになっています。会員になっててヨカッタァ。コメントを残すより高速にサムネイル画像(縮小画像)を作成するには?クリックで@ITの「より高速にサムネイル画像(縮小画像)を作成するには?」へ栃木県内の某カメラ量販店さんの店舗受付機のカスタマイズのお仕事をさせてもらっていて、以前からなかなか解決できていなかったことがあった。それは「より高速にサムネイル画像(縮小画像)を作成するには?」ということである。今回は、サムネイルだけでなくExif情報内の他の情報(例えば撮影日時など)の情報も取得しなければならないので、それだけ処理に手間が掛かると思っていた。ネットで調べて見るとより「高速にサムネイル画像(縮小画像)を作成するには?」と題して、「アットマーク・アイティ」というIT技術系情報サイトで解説をしていた。ポイントとなる点は2点。一つはFromStreamメソッドを使うことにより、大きなサイズのファイルでもファイル全体を一度に読み込まないで済むということ。一つは、JPEGファイルのExif情報に格納されているサムネイル画像のデータ(タグ番号は0x501b)をバイト配列のデータとして取り出し、そこからサムネイル画像の画像オブジェクトを作成するということである。このことによりDVDやSDメディアに入った膨大な量の画像ファイルも、飛躍的に高速に読み取ってくれるようになった。ちなみに自分のシステムで、1枚当り3~4MBほどある4000×3000の179枚の画像を4.56秒で全て読み込んでサムネイル画像を作成して保存してくれた。撮影日時の情報を取得したり、Exif情報のないJPEGファイルの場合は、元の画像からサムネイルを作成するなどの工夫をしなければならないのだが、とりあえず店舗受付機から注文してくれるお客さんが、全然ストレスを感じないほどに速くなったことに、お店の方から感謝のメールを頂いたのにはちょっと嬉しかった。いう仕事をして良かったと思う瞬間である。カラムにチェックボックスを入れて、チェックボックスをクリックしたときにリアルタイムにDataGridViewの同一行等に対してスタイルを変更したり、カラムに書き込んだりする方法がやっとわかった。要するにDataGridViewのCurrentCellDirtyStateChangedイベントで、チェックボックスを配置しているカラムのイベントを捉えて、コミットさせて、そのカラムの値を判定してチェックボックスの状態を取得すればいいわけねぇ。