まだプログラマーですが何か?

プログラマーネタとアスリートネタ中心。たまに作成したウェブサービス関連の話も http://twitter.com/dotnsf

タグ:windows

久しぶりの LotusScript ネタです。LotusScript は IBM ノーツ/ドミノのカスタマイズに使えるマクロ言語です。内容そのものはノーツじゃなくても(VBA でエクセルなどにも)応用できると思いますが、Windows 前提です。

Windows OS に標準搭載されている ServerXMLHTTP オブジェクトをノーツの LotusScript から使って、LotusScript で WEB API っぽいことを実現してみました。

まず ServerXMLHTTP オブジェクトについて。MSDN によるとこんなものです:
https://msdn.microsoft.com/ja-jp/library/ms762278(v=vs.85).aspx

簡単に言えば「HTTP クライアントライブラリとして使える ActiveX オブジェクト」です。このオブジェクトをインスタンス化すれば、比較的簡単に HTTP クライアントプログラムが作れます。特にノーツのマクロ言語である LotusScript はソケット通信とかネットワークプログラミングに若干弱いところがあるので、このオブジェクトを外部利用して WEB API を使ってみよう、という試みです。

例えばこんな感じ。開発環境であるドミノデザイナーを使ってノーツデータベースのエージェントを LotusScript で作り、Initialize サブルーチンに以下のような内容を記載します(エージェント名は ServerXMLHTTP としました):
Sub Initialize
  Dim obj As Variant

  Set obj = CreateObject( "Msxml2.ServerXMLHTTP.6.0" )
  Call obj.open( "GET", "http://ibm.com/", False )
  Call obj.send()
  MsgBox obj.responseText
End Sub

内容がシンプルなのでなんとなく理解できると思いますが、簡単に解説すると CreateObject を使って ServerXMLHTTP オブジェクトインタンスを生成し、"http://ibm.com/" を HTTP GET して、その内容をメッセージボックスで表示する、というものです。要するに http://ibm.com/ の HTML ソースコードを画面に表示する、というものです。

またエージェントのプロパティとして、実行時のトリガーは「イベント」で「アクションメニューの選択」、対象は「データベースの全ての文書」に設定しておきます。もちろん実行内容によってはここを変更する必要がでてきますが、今回の例ではこの設定でメニューから選択して実行できるようにしました:
2017081001


改めてこのデータベースをノーツで開くと、メニューから作成したエージェント(図では "ServerXMLHTTP")が選択できるようになっているはずです。これを選択して実行すると・・・
2017081002


こんな感じのダイアログボックスが表示され、中に http://ibm.com/ の HTML ソースコードが表示されているはずです:
2017081003


いかがでしょう。上記例では HTTP GET の例を紹介しましたが、この ServerXMLHTTP オブジェクトを使うと、POST など他のメソッドを指定することもできるし、もちろん送信データを指定することもできます。その辺りの詳しい話は公式ドキュメントを参照ください:
https://msdn.microsoft.com/ja-jp/library/ms762278(v=vs.85).aspx


HTTP クライアントがここまで簡単に使えると、各種 Web API が使えるようになるので、IBM Bluemix のワトソン API をノーツクライアントから(それもフロントエンドから)直接実行する、なんてことも可能になると思っています(余談ですが以前に Java を使って、ノーツのバックエンドからワトソン API を使う、という内容を紹介したことがあります。その記事はこちら)。


ノーツデータを広く応用・活用する際に使えそうなライブラリです。

クラウドファンディング Indiegogo で申し込んで以来、ずっと楽しみにしていた GPD Pocket が届きました!まだ2日程度しか使っていませんが、さっそくレビューを書いてみます。ちなみにこのレビューエントリは GPD Pocket (と IKEA の無線LAN)で書いています。

GPD Pocket はわずか 480g の超小型 PC ですが、Intel Atom z8759 CPU を駆り、8GB メモリと 128GB eMMC(Surface Pro 3 は4GB+128GB SSD で 622g)を搭載しており、エントリーモデルとはいえないスペックを誇っています。クラウドファンディングではこれで $399 でした(量産後も $599 予定らしいので超お買い得だと思ってます):
2017062501


大きさは横18cm、縦10.6cm、厚さ1.85cm。iPhone6 と比較するとこんな感じです:
IMG_0937


いくつか注文していたのですが、届いたのは最初に注文した Windows 10 Home 搭載版です。Ubuntu を選択することもできます(これも注文しているので、届いたらいずれ)。とりあえず初期セットアップして、Windows Update して、Defender を有効にして、いくつかの定番ソフト(Chrome, 7Zip, Teraterm, WinSCP, Paint.Net, サクラエディタあたり)を導入して使っています。(ディスククリーンアップとかはしていない)この時点で 99.2 GB の空きがあります:
2017062501


キーボードは結構しっかり作られています(英語キーボード)。打鍵感もあって、サイズの割に両手で打ちやすい印象。ただ、かなり特殊な配列になっているので、アルファベットや数字以外の特殊キー(カッコとかーとか)はまだかなりの頻度で打ち間違えます。今はまだウェブやSNS、ブログ編集がメインで本格的なプログラミング目的では使ってないのですが、そうなってくるともう少し慣れが必要かも。ちなみに英語<->日本語の切り替えは Alt + `(ESC の右横)で可能です:
IMG_0933


タッチパッドはトラックポイント(!)です。しかも僕がメイン機として公私にわたって愛用している ThinkPad と互換の感圧式トラックポイントで、スティックそのものにも互換性がありました(写真は僕が持っていた ThinkPad 用の赤いスティックを GPD Pocket に差して使っている様子です):
IMG_0934



外部インターフェースはこんな感じ。右からUSB 3.0、オーディオ、micro HDMI、USB C(電源)。これらに加えて無線LANとBluetoothを搭載しています。あー、micro HDMI の変換アダプタ買っとこ:



2日ほどしか使ってないのですが、「期待をはるかに超える出来」だと思います。実はこれまでセカンド機には Portabook を使っていました(ネタで買ったら意外と使いやすかったパターン)。今でもキーボードの入力のしやすさはメイン機であるThinkPad と比較しても劣らないと思っているのですが、いかんせん基本スペックの低さがネックになり、使いにくさを感じることが多くあるのも事実です。また GPD が出している別のミニ PC : GPD Win も所有しているのですが、こちらはどちらかというと「Windows の動くゲーム機」で、Windows としての使い勝手は必ずしもいいものではありませんでした。その点 GPD Pocket は編集機能を多く使う人にとっても使いやすいし、充分すぎるスペックが搭載された魅力的な PC だと思っています。


(2017/Jul/01 追記 続編を書きました)
GPD Pocket に ThinkPad のトラックポイントスティックを試す

この週末に猛威を振るった(振るう?)ランサムウェア "WannaCry" 。影響範囲が大きく、公式なサポートが終了した Windows XP/Vista 向けにも対策パッチが提供される事態になりました。サポートが終了しているとはいえ、使われていることは事実だし、その状態で使われた結果(被害者ではなく)加害者側になってしまう可能性があることで例外的に対策パッチが提供される判断に至ったのだと思います:
http://thehackernews.com/2017/05/wannacry-ransomware-windows.html


私自身は Windows XP/Vista を普段使っているわけではないのですが、仮想デスクトップ環境として「冷凍保存」しています。まあ懐古趣味みたいなものです(ちなみに Windows 2000 や OS/2、 PC-DOS 環境も冷凍保存してますw)。この環境を一時的に解凍してパッチを適用してみたので、その手順を紹介します。

まず Windows XP を起動し、Windows Update を実行・・・してもサポートが終了しているので何もできません。そりゃそうだ。 今回のパッチを XP や Vista で適用するには Microsoft Update カタログから OS 毎のパッチを直接ダウンロードして実行する、という手順を取る必要があります。

というわけで、XP で InternetExplorer を起動し、Microsoft Update カタログ(catalog.update.microsoft.com)にアクセスし、今回の対策対象である "MS17-010" を検索します:
2017051401


すると OS 毎の検索結果が見つかってリスト表示されます:
2017051402


今回は Windows XP 用のパッチが目的なので、"Windows XP" と書かれたものを探して「追加」します(僕が確認した時の日付は 2017/05/13 でした):
2017051403


で、これをダウンロードして実行してパッチを適用します:
2017051404


最後に再起動して適用完了、です。



(参考)
世界中で感染が拡大中のランサムウェアに悪用されているMicrosoft製品の脆弱性対策について(IPA プレスリリース)
マイクロソフト セキュリティ情報 MS17-010
ランサムウェア WannaCrypt 攻撃に関するお客様ガイダンス(Microsoft TechNet)




 

Windows 環境向けの Raspberry Pi エミュレータ(Raspbian エミュレータと呼ぶべき?)を使ってみました。

準備は簡単。パッケージが用意されているので、最新ファイルをダウンロードして展開するだけです:
https://sourceforge.net/projects/rpiqemuwindows/


最新ファイル(2016/Jul/18 時点では qemu.zip)をダウンロード&展開できたら、実行は run.bat ファイルを実行するだけです(QEMU上で動く、ってことだと思う):
2016071801


これだけでラズパイの起動が開始します。CPU は1つだけなんですね。ちなみにこの画面をアクティブにするとマウスコントロールが奪われてしまうので、他のウィンドウを操作する場合は Ctrl+ALT でマウス制御を戻してください:
2016071802


そしてしばらく待つと(ラズパイを触ったことがある人ならお馴染みの)初期設定画面が起動します:
2016071803


上記メニューの update を選んでシステムのアップデートを行うと自動的にテキスト端末画面に戻ります。ここで普通にコマンドを実行しての利用もできますが、ここで "startx" と入力すると X Window のデスクトップを起動することができます:
2016071801


こんな感じ。Scratch も使えそうです:
2016071802



ラズパイに興味あるけど、まだ持ってなくて、試しに操作を体験してみたい、という人向け・・・かな? OS イメージを SD カードに書き込んで・・・とか、余計な意識なしにとりあえず動く環境が使えるので、気分は味わえると思います。

自分は自己紹介する時に「言語マニア」である、ということがあります。

ある程度モノにしている言語は日本語と英語。読むだけなら韓国語とフランス語、かじった程度ではアラビア語。かじった直後に断念したのがヒエログリフ(象形文字)。 言語という意味では更に加えて Java, PHP, JavaScript, C, C++, (Visual)Basic, LotusScript, Perl, Pascal, Fortran, CASL,  ... あたりのプログラミング言語も使えます。が、今回は前者の話です。

最近はウェブの翻訳サービスを使うことも多いのですが、外国語を勉強するには実際に使うのが近道だと思ってます。英語のアルファベットはパソコンで普通に入力できますが、フランス語アルファベットには特殊な表記をするものがあったり、韓国語のハングルに至っては普通には入力できません(よね?)。どうせならパソコンでも勉強中の文字入力をできるようにして、それらの言語でパワポの資料を作ってみたりできるとカッコいいです。


というわけで、Windows パソコンで日本語/英語以外の文字が入力できるようにするための設定方法を紹介します。ちなみに多言語入力は Windows XP 以降から標準機能として可能になっていますが、以下の紹介画面は Windows 7 です。


まずコントロールパネルを開き、「地域と言語」を選択します:
2015071901


「キーボードと言語」タブから「キーボードの変更」ボタンをクリックします:
2015071902


「全般」タブの「インストールされているサービス」には現在使うことのできる、英語以外の言語サービスの一覧が表示されます(画面では日本語だけです)。ここに韓国語を追加してみます。「追加」ボタンをクリックします:
2015071903


「韓国語」 - 「キーボード」 - 「Microsoft IME」にチェックを入れて「OK」ボタンをクリックします:
2015071904


先ほどの画面に戻り、「インストールされているサービス」に「韓国語」が追加されていることを確認します。必要であれば、同様に他の言語も追加します。最後に「適用」ボタンをクリックしてから「OK」ボタンをクリックします。これで準備は完了です:
2015071905


では実際に韓国語を入力してみます。メモ帳を起動しておきます:
2015071906


ここでキーボードの 左Alt + Shift を押す度に使用言語が切り替わっていくはずです。韓国語を入力するには図のように "KO" と書かれた表記になるまで切り替えます。これでハングル入力モードになりました:
2015071907


日本語入力モードでも日本語と英語を切り替えて入力するように、ハングル入力モードでも同様の切り替えを意識する必要があります。ハングル入力モードで 右Alt を押す度にハングルと英語の切り替えができます。ハングルを入力する場合は「A」ではなく「가」という表記に切り替えます。
2015071908


この状態でメモ帳内で適当にキーボードを叩くと、ハングルが入力されていくはずです(ちなみにこの内容は適当に打っただけなので意味無いです):
2015071909


キーボード配列をまだ覚えていない場合はソフトウェアキーボードを参照することも可能です。そのためにはまずソフトウェアキーボードを有効にする必要があります。言語バーの▼印をクリックし、メニューから "Soft Keyboard" にチェックを入れます:
2015071910


チェックすると言語バーにソフトウェアキーボードボタンが現れます:
2015071911


ここをクリックすると画面内にソフトウェアキーボードが表示され、ここからハングルを入力することもできますし、このキーボード配列を参照しながら目的の文字をキーボード入力する(ための勉強をする)こともできます:
2015071912


同様にしてアラビア語なども導入し、言語を切り替えて入力することで多言語テキストを作成することも可能です。ちなみにアラビア語はちゃんと(?)右から左に入力されていきます:
2015071913


実際問題として、たまに外国人が日本語のローマ字変換でパワポの資料を作っているのを目の当たりにすると、それだけで尊敬してしまいます。ただでさえ難しい外国語である日本語を、それもローマ字変換とか・・・ そんな感じで自分も色んな言語が操れるようになったらいいなあ、と思ってます。


余談ですが、この多言語テキストが標準機能として入力できるようになったのは Windows XP からでした。当時アラビア語を勉強していた自分にとって Windows XP は神 OS でした。開発者としてはシステムデバッグが楽な Windows 2000 も気に入っていたのですが、この機能を知って乗り換えを決意したものでした。


このページのトップヘ