クリニック向けのマーケティング・ソリューションはじめました

弊社の 予約情報管理システム「アポ助」は、ちょうど5年前、初代が初めてクリニックに導入されました。

以降、先生やスタッフの皆さんのご希望を取り入れつつ機能改善を重ねながら、「クリニックの人達が本当に必要で使いやすいシステムってどういうのだろう」「貴重なデータをもっと有効活用できないのか」と熟考と議論を繰り返した末に、新「アポ助」の開発に着手しました。

その新しい「アポ助」がこの度完成し、「アポ助」と同じように先生のご希望を実現したアンケート・ソリューション「アケ助」と共に、皆様にご利用いただけるようになりました。

先生達と一緒に作り上げた、予約情報管理システム「アポ助」とアンケート・ソリューション「アケ助」は、クリニックの皆様にITの本当の楽しさや便利さを最大限に活用してもらいたい、という気持ちから生まれた、私たちの自信作です。
業務効率を向上しつつ、データを駆使したマーケティングにも活用できる、「アポ助」「アケ助」のコンセプトや機能などを、まずは専用サイトでご確認いただければ幸いです。
デモも体験できるので、是非一度クリックしてアポ助/アケ助専用サイトをご覧ください。

老舗ダウンロードサイトが勝手に独自インストーラでラップ

今年の8月よりCNETの老舗ダウンロードサイト Download.com が広告対象のソフト(ツールバー)の独自インストーラでオリジナルのインストーラをラップするという暴挙に出ているというFyodorさんの怒りの記事です…ちょっと前は広告対象をインストールしないと目的のソフトがインストールできないようになっていた(VLC)とか、お子様用のソフト(Kea Coloring Book)もとか、上塗りで何かとまずいですね…

追記: SourceForgeもやらかしました

複数経路で入手したハッシュ値での確認の必要性を再認識させられます。

国ごとのIPアドレスの範囲 – RIR stats -> 各国のIPv4とIPv6のCIDR

ありがちな作業なのでそのものずばりなツールはごまんとありそうですが、極力先人の知恵を組み合わせて手抜きしながらIPv6対応のものを自力生成してみます。net-mgmt/p5-Net-IPが超便利です。最近はaggregateされたものは置いてないようなので aggregate-cidr-addresses を使います。NANOG MLのメールのとおりにIPv6の場合はprefix()をprint()に変更します。

上を hoge.pl とでもして保存。先ほどの aggregate-cidr-addresses もその名前のままダウンロードして、最後の

の部分を

に置き換えます。日本のサイダーであればfetchなりwgetなりを使って

お気楽日本のサイダー jp のできあがり。全部のRIR statsは以下のとおり。

頻繁にRIRにftpしないように良い子はちゃんとftpしたファイルを保存します。あとRIR dbはただの登録情報なので、実際に設置されている国と異なったりanycastだったりする場合も多いので、もう少し精度良く場所を知りたい場合はGeoIPなどの他、looking glass, traceroute, whoisなどを使って推察していくことになります。

archiver/php5-zip (pcre.h: No such file or directory)

devel/php5-pcre (port directory error)の記事を書いてから早1年半以上たったところで思わぬ事態に遭遇。archiver/php5-zipのmake中に

In file included from /usr/ports/archivers/php5-zip/work/php-5.3.8/ext/zip/php_zip.c:30:
/usr/local/include/php/ext/pcre/php_pcre.h:29:18: error: pcre.h: No such file or directory

/usr/local/include/pcre.h はあるので、よく見ると -I/usr/local/include が無いです。configure がおかしかったことになるので config.m4 と config.log を見ると、 PHP_PCRE_DIR に /usr/local が指定されるところまでは正常、その後

をプリプロセッサに渡して出来上がりに yes があるかという条件判定で PHP_PCRE_REGEX=no になってしまっています。php/main/php_config.h は php/ext/php_config.h を読み込み、さらに php/ext/pcre/config.h を読んでいます。そこには #define COMPILE_DL_PCRE 1 の行が。というわけで1年半前のports/UPDATING の指示は微妙に作業が足りていないようです。/usr/local/php/ext/php_config.h に、必要の無い行がある場合は削除します(pcre spl以外は実際に存在していたか特に確認していません)。

間違いの無いようにファイルも

とでもしてリネームしておきます。最後に

あたりをしておけば安心です。ふぅ。/usr/ports/UPDATINGとしては1.5)を追加して

とでもなりましょうか。

RIP, dmr 1941-2011

すごい勢いでつぶやかれているようですが、まさにこの本(K&R)が世のプログラミング言語に与えた影響は計り知れず、彼がいなければ世のOSの状況も変わっていたし、それに広範囲に依存している世の中も大きく変わっていたと思います。鶯色のカバーのANSI C対応第2版の翻訳本は今でもきれいに本棚に並んでいますが、高校生のころ読んだ白いカバーの初版の翻訳本はぼろぼろです。

大きなSpriteを複数ページに分けて印刷するとおかしなことになる

ひとつのSpriteの上に、大小様々ないくつものSpriteを乗せました。 そのSpriteはA4の紙よりも大きいため、印刷する際には複数のページに分けないといけません。 ActionScriptで一つのSpriteを例えば2ページに分けて印刷するには、PrintJob.addPage()を2回呼び、それぞれの第2パラメータに、1回目ならnew Rectangle(0, 0, <ページ幅>, <ページ高さ>)を渡し、2回目ならnew Rectangle(0, <ページ高さ>, <ページ幅>, <ページ高さ>)を渡します。このように、各ページにSpriteのどの部分を印刷するかを指定します。

ActionScriptの日本語メッセージを解読してみよう

ActionScriptのコンパイル時やランタイムの日本語のエラーメッセージはなかなかどうして手ごわくて、暗号なんじゃないかと思えてくる時があります。

正しく解釈できるようになるには経験値が必要ですが、全てのエンジニアがその経験をすぐに積めるわけではないですし、試行錯誤を繰り返してこそ経験値が増えるのに、その試行錯誤の副産物であるエラーメッセージの解釈に経験値が必要だなんて、鶏が先か卵が先か。しかも分かり辛いエラーほど、そのエラーの文言とはまったく無関係の初歩的なケアレスミスによって発生するものが多いのです。

この記事には、そんな、ActionScriptのコンパイルエラーを解読…ではなく解釈するための経験値の素を継続的に追加していきます。

まず最初に、これから特定のメッセージが発生した際のいくつかの考えられる原因を説明しますが、そのメッセージの原因が必ずここに説明してあるものであるとは限らないので、注意してください。同じメッセージで複数の原因がある場合があるので、ここに説明してあるものは、あくまでそれらのうちの一つとして参考にしてください。

rightparenがcolonの前に必要です。

右括弧がコロンの前に必要です、と言っているわけですが、そんなことない時でも出ます。

関数の定義の際にfunctionのキーワードを書き忘れた場合。直前までJavaでコーディングをしていると、よく出会います。

誤: private isOk(strTest:String):Boolean {
正: private function isOk(strTest:String):Boolean {


ActionScript ファイルには外部から表示可能な複数の定義は使用できません

定義を使用できません、って何か使用しているつもりはないのだけど…と混乱しがちなメッセージです。

これは、クラス変数を定義するつもりが、public class….で始まるクラス定義の外に変数の定義文を書いてしまうとこれが出ます。もちろん、賢いIDEを使っていればこのようなことは起きません。


private 属性はクラスプロパティの定義でのみ使用できます。

または、「protected 属性はクラスプロパティの定義でのみ使用できます。」

「そうですよね」と答えたくなるメッセージですが、このエラーがある日突然起き始めることがあります。それまでは大丈夫だったのに。

これは、にょろ括弧{}の不一致です。このエラーが起きた場所から遡って行って、{}を含むfunction定義を見つけて、目を皿のようにして{}を見ましょう。多分if文やループ文など、どこかのブロックが閉じていないか、もしくは余計な}があるか、というところです。


1113 Array(x) は新しい Array(x) と同様に動作します。Array 型に値をキャストするには、Array(x) ではなく式 x を Array として使用します。

「式xをArrayとして使用」って、もう、文章が完全に崩壊しています。某アインシュタインの伝記の翻訳本ぐらい支離滅裂です。

この文章は、「Array(x)と書くとnew Array(x)という意味になっちゃうよ」と注意してくれているのです。さらに、「キャストしたければArray(x)ではなく、(x as Array)を使いましょう」(Arrayのキャストにはas演算子を使う)と正しい方法を教えてくれているのです。親切にもメッセージが正しい方法を教えてくれる稀有なケースであるにも関わらず、残念な翻訳でもったいないことになっていますね。


まだまだある?!

この記事は、正しい解釈が必要なメッセージに遭遇したら今後も引き続き更新します。

レセプトオンライン 7月分のレセプトデータが送れない

今まで長いことオンライン請求できていたのに2011年7月から急にレセプトデータの送信時にハングアップするようになったという方が増えているようですが、原因はInternet Explorer 9に対応できていない(webサイトが)ことのようです。(その後サイト側のIE9対応完了したようなので、この件に該当する方は既にいらっしゃらないと思います)




請求期限までに送らないといけないのであわてていらっしゃる方も多いと思います。Windows Vista, Windows 7, Windows Server 2008で以前はIE8以下だったけれども現在IE9がインストールされているという場合は更新をアンインストールして以前のIEに戻せば送信できるようになる可能性があります。アンインストールは Internet Explorer 9 をインストールまたはアンインストールする方法 の「Internet Explorer をアンインストールするには」以降(インストールの仕方の次の項です)に従えばできます。

レセプトオンライン用のPCでは、使用可能であることの確認ができるまではIE9をインストールしない、Windows UpdateでIE9を選択しない、あるいはIE9のインストールを開始する旨のダイアログが出た時点で「キャンセル」を押すなどの対応が必要です。

IE9のβが出てから大分たったような気がしますが、どんな時系列だったかを遡ってみると…

この辺が最近の主要なできごとのようです。Windows Updateで「重要な」ものを全部インストールするようにしている方は7月、能動的にIE9をインストールされた方は時期によって5月、6月でも問題に直面したことになります。動作環境ではないとはいえ非常に多くの人に生命線として利用されているものがいまだIE9で動作しない旨の表明が無い(2011/7/6現在)のが困りものですが、これだけ準備期間があったのにちょっと対応が遅いようです…

HylaFAXでの送受信速度を制限する

回線は大丈夫でもモデムがおかしかったりして強制的に送受信速度を制限したい場合は、HylaFAXのコマンド設定の先頭に!をつけるとその応答があったとみなす機能を使用します。

Class 1 FAXモデムの場合 ITU-T.31

送信 (ITU-T.31の8.3.3およびTable 6)

例えばログに

のように出ている場合で9600bit/sにしたい場合は、表を見ると121,122,145,146を削って設定ファイルに

と記載すればよいことになりそうですが、実際にはV.17のトレーニングが成功してしまうために14400bit/sでの通信が始まります。V.17でトレーニングさせないためには参照先の表をよく眺めてこの場合は73,74,97,98,121,122,145,146も削らなければならないのでした。

受信 (ITU-T.31の8.3.4およびTable 6)

同様に AT+FRM の応答ログと設定ファイルの Class1RMQueryCmd を使用します。

Class 2 FAXモデムの場合 ITU-T.32

ITU-T.32の8.5.1.1およびTable 21

同様に AT+FCC の応答ログと設定ファイルの Class2DCCQueryCmd を使用します。

Comodo affiliate RA was compromised

Comodoより重要サイトの証明書が不正な相手に発行されたという記事。RAはどこだったんでしょうか(参考1, 参考2)。ちょっと昔のnull-prefixの証明書の話とは異なります。

How to avoid fraudulent SSLでは、失効した証明書を

  • OCSPレスポンダが提供されていてOCSPをサポートしているクライアント使用でも
    • OCSPを有効にしていない
    • OCSPレスポンダの応答がタイムアウトした場合に有効な証明書とみなすようにしている

    場合に、クライアント側が有効な証明書とみなしてしまう

  • 大手ブラウザはそのような状況用にブラックリストを更新 ⇒ 最新にせよ
  • OCSPを有効にせよ、タイムアウト時に証明書を無効として扱うようにせよ
  • EV SSLを使用せよ(いきなりサーバ側の話)(現在CAはOCSPをサポートしないといけない 参照: EV SSL Certificate Guidelines 11.1.1)

などの、サーバ証明書を売る立場での説明があります。特に今回のような大きな問題の場合は、クライアントが検証用にCRLをダウンロードするタイミングよりOCSPレスポンダへの問い合わせのタイミングのほうが早い場合が多いのでしょう。

秘密鍵がポストされてしまったようなので、ブラックリストでの対応があるクライアントは最新にアップデート、OCSPに対応している場合はタイムアウトした場合も無効となることの確認が急がれます。

参考: MS01-017

Japan Earthquake: Possible scams / malware

Japan Earthquake: Possible scams / malware 詐欺、マルウェアを撒くメールが発生する可能性があるのでご注意をという記事 ⇒ その後各種発生しています。詐欺メールの内容は読むに耐えません。

Tsunami in Japan…既に検索エンジンに対するポイズニングが成功しているという記事。

国内でも善意につけこむ各種詐欺

CVE-2011-0411 Plaintext injection in STARTTLS

多くのSMTPクライアントはサーバ証明書を検証しない -> その場合そもそもMITMがいない確認ができていないので常にcommand injectionに脆弱な状態 -> だからこの問題は見た目より大きな問題ではない。という皮肉が効いてます…今時だとスマホアプリやIoT機器(こちらはそれなりの値段で買わないと手に入らないものが多いので比較的公開されてませんが、某社製のSSLスタックを積んでたりすると…)のサーバ証明書の検証不備の脆弱性がその状態ですね。

というわけでSTARTTLSからみでSMTP over TLS以外にもしばらく後続がありそうです。

入試問題リアルタイムQAサイト投稿問題対策?

金属探知機とか免許とって電波ジャマー導入とか技術的対策はされるでしょうが、ポイント制集合知サイトに限って言うならば、ポイント欲しさに検索して得た文章が適当に転記され、さらに悪いことに締め切ることができるのでいい加減な答えのまま締め切られてしまい修正もできない、という状態のものが少なくありません。正しいかどうかを見極める能力が必要である性質を利用すれば次のような対策が可能?

例えば英語の場合、大学側が英語のテストで赤点を取りまくるけど英語が大好きな生徒を集めます。あるいは人材派遣会社が英語が大好きだけど英語のテストではまったく点が取れない陽気な人を集めます(自分の場合、英語の点が取れない上に好きではないので答を書くことすらできない)。そしてどんな質問にも即答できるように簡単な講習を行います。正しい答えを書くのではなく、とにかくすばやくいい加減に回答する練習です。古きよき例を使うと「あなた方の基地は竹の子に占拠された」を即座に「ALL YOUR BASE ARE BELONG TO BAMBOO CHILDREN」と英訳できればOKです。そして試験当日QAサイトにへばりつかせてがんがん回答させます。これで自動的に容疑者は落第になります。おかしな回答であることで論文盗作チェッカーと同じような仕組みでのチェックも容易になるはずです。

とアホなことを書きましたが、今度はQAサイトから「偽計業務妨害罪」に問われちゃしゃれにならないし、そして何より本当に何か知りたかった人が巻き添えを食うことなので実行するわけにはいかないです。これからQAサイト側も自主的に入試時間中は新規質問受付停止とかするのかもしれませんが、なぜ公開サイトを利用したのかも不明ですし、いたちごっこなのでその方向での対策は無意味かもしれません。お後がよろしゅう。

しかし、結局ガラ携から直投稿ですか…たいした捜査もする必要もなかったということですね…

ハンドルネームという字面を頻繁に目にしたので久々に検索してみて見つけたこのページ「Handle Name は間違った英語か」とても面白く拝読しました。

自転車用リアチャイルドシートリコール問題

鉄製「自転車用リヤチャイルドシート」無償交換のお知らせを何気に見てから街を歩いていると、あることあること、そこらじゅうにあります。いや、まじで。それもそのはず〈ニュースリリース〉「鉄製 自転車用後席幼児座席(リヤチャイルドシート)」無償交換のお知らせ 〜リコール対象の拡大〜にあるだけで別ブランドもあわせて569,523台。自転車に人がいて止まっていたら、買ったチャリンコ屋で確認した方が良いかもと声をかけるようにしていますが、ぜんぜん知らなかったという人が結構多い感じです。検索してみると、安全には代えられないものの交換品が色も選べないという不満が多いようです。というわけで少しでも多くの人が知る助けになればとJFYIでした。

FreeBSD ACPI acpi_tz0: _CRT value is absurd, ignored (256.0C)

HP Compaq nx6320/CT Notebook PC(ノートPC)にFreeBSDをぶち込んだところ表題のメッセージが出続けます。absurdですか、そうですねハンダが溶けそうです。acpi(4) と SEE ALSO の acpi_thremal(4) が関係ありそうです。 hw.acpi.thermal.tz%d._CRT は致命的なのでシャットダウンする温度だそうな。上書きできると書いてありますが、実は一瞬できるように見えるだけですぐにもとの値に戻るようです。 hw.acpi.thermal.polling_rate を 0 にしてポーリングを止めてしまうという荒技だと猛暑のときに機械が壊れそうなので、こちらacpi_tz0: _CRT value is absurd, ignored (256.0C) (was pr kern/105537) FIX?のようにしてみます。

中身を眺めると、 ThermalZone (TZ0) の中が記事で参照しているところと同様のようです。単位は0.1Kのようなので、90℃=363.15K=3631.5*0.1K を返すようにしてみます。

これを元に

あとはハンドブックの通りに /boot/loader.conf に以下を追加。

リブートして表題のメッセージは止まりました。よかったよかった。