#システム屋限定怪談2017が流行っているようで・・・2

#システム屋限定怪談2017が流行っているようで・・・多少解説など付けてみようと思う。


物理媒体(HDD)とかに入れて、持っていくとか、郵送するってのは、割とマジである話。Amazonクラウドサービスの標準メニュー(AWS Snawball)にもあるぐらい。実際に1Gbpsの回線を占有して、まる一日頑張っても10TB程度しか送信できない。いかにして大量のデータを素早く送るかってのは大きな問題になる。HDD1台4TBで20台分のデータを持ってけば、移動に8時間かかっても、実質25Gbpsの専用線に匹敵する帯域速度となる。


短波無線は中継無しで全地球上と通信が出来るメリットがあり、短波無線FAXによる気象FAXサービスとかが広く使われている。世界中の複数のユーザーに同時配信できるので、帯域の狭さはあまり問題視されない。通信機器の小型化などの恩恵もあり、世界中で衛星無線による高速双方向通信が可能になったが、コスト面では依然として高価であり、荒天にも弱い。ランニングコストが安く、荒天下でも使える短波無線は海上通信や僻地での通信用として相応に需要がある。


複数種類のセキュリティ対策ソフトを使うのは有効な対策。実際に新種のウィルスの場合Aソフトでは検出できなくても、Bソフトでは検出できると言うことが良くある。後はメリットとデメリットを天秤にあっけて、何処まで複数種類のウィルス対策ソフトを入れるかという話になる。4種類も入れているというのは、かなりやり過ぎの例。
個人だと市販のウィルス対策ソフト+Windows標準のWindows Defenderのオフラインスキャンを組み合
わせるのがコスト的にも性能的にもお勧め。法人の場合はメールサーバーやファイルサーバーのウィルス対策ソフトと、クライアントPCのウィルス対策ソフトを別の会社のものにするとかが良い。

#システム屋限定怪談2017が流行っているようで・・・

#システム屋限定怪談2017が流行っているようで・・・多少解説など付けてみようと思う。


Excelの計算にへんな癖があるのは本当。わかりやすい例は「10/3*3」が3になったりする。そういうシステムを実装する場合BCD演算を用いて、さらに入力した値の有効桁数も別途管理する必要がある。だがExcelは、2進数固有の演算誤差も発生するのでBCD演算を使っているわけでも無く、10/3は普通に無限小数になるので有効桁数を常に意識する訳でもない、不思議な実装になっている。実際にどのように計算しているのかと言った仕様も公開されていない。
また過去に演算結果が誤っていると言ったバグ(Excelにバグがあった例や、CPUにバグがあった例)もあるので、別の手段で計算結果を検証するのは、必ずしも無駄ではない。


コレはよく見かけた。何故過去形なのかというと、現行バージョンのExcelではサイズ0の図形オブジェクトを作れないからだ。ワークシートに図形オブジェクトを配置した後、行や列を選択して削除をすると、図形オブジェクトはサイズ0に縮小されたまま残ると言う、非常にたちの悪い仕様が原因。一見すると何もないように見えるので作成者も気がつかずに、サイズ0になった図形オブジェクトをセルと一緒にコピーペーストを繰り返し、大量の図形オブジェクトを内包した巨大ファイルのできあがりとなる。


製造したプログラムコードには一定の割合で不具合が含まれ、プログラムの規模に比例して不具合も増える前提から、テスト工程で見つける不具合の数に基準値を設けている。これ自体は悪いことではないのだけどソフトウェア開発が属人的な作業であり誰が作ったかによって不具合の発生率が全く異なってくるとか、使用するミドルウェアや開発言語によって変動すると言う視点がないため、滑稽なことになる。
不具合の報告件数を水増しするという捏造を始めてしまうと、その後も不具合を水増ししたデータを元に基準値を見直すことになり、不具合捏造を繰り返す意外になくなる。


正規表現は文字列の検索置換などを行う場合に複雑な条件を指定するために使う。これを使えるのと、使えないのでは、普通に100倍くらい生産性が変わってくる。と言っても、今時は正規表現を多少は使えるのが当たり前なので、全く使えないエンジニアは普通の1/100程度の能力って事。
その一方で完璧に使いこなせるエンジニアは希少でもある。正規表現を新規に書くのは決して難しくはない。逆に「/^[a-zA-Z0-9.!#$%&’*+/=?^_`{|}~-]+@[a-zA-Z0-9-]+(?:\.[a-zA-Z0-9-]+)*$」のような記号羅列(ちなみにメールアドレスを表すらしい)を見て、既存の正規表現が何を異図しているのか、仕様通り正しく機能するのかを判断するのはかなり難しい。容易に読み解く能力を持っているなら、かなりとんがった技量を持つエンジニアと言える。


みずほ銀行のこと。2002年の銀行合併をうけて、情報システムの統合に向けたプロジェクトがスタートした。2011年には大規模なシステム障害を起こし、金融庁から業務改善命令を受けており、システム統合が緊急の課題となっている。・・・が、度々の延期と予算増額を繰り返しておりまったく終わりが見えてこない。一応は2018年夏に稼働予定。今ではデスマーチ(死の行進)の代名詞となっており、誰もが避けて通ろうとするブラック案件と化している。

ランサムウェアの被害を防ぐために必要だったこと

WannaCryptで変な方向に対策議論が行かないことを祈りつつ、本来行っているべき対策を述べておこうと思う。

ダウンロードしたファイルを無闇に開かない

ダウンロードした実行ファイルやスクリプトファイルを不用意にダブルクリックして実行してしまうようだと、感染を防ぐためのソリューションは殆ど意味をなさない。ウィルス対策ソフトウェアを導入していても、ウィルス対策ソフトウェアで対策できるのは「過去に知られていたウィルス」だけある。新しいウィルスには極めて限定的な効果しか無い。
特に標的型攻撃のように特定の組織だけを狙ってウィルスを送っている場合、狙われている組織が自ら感染に気がついてウィルス対策ソフトウェアの開発元に連絡しない限り、ウィルス対策ソフトでは防げないって事も起こりうる。
実行する必要がある場合には、電子署名を確認するとか、ダウンロード元サイトをしっかり確認するとかしよう。
幸いにもWindowsの場合はダウンロードしたファイルを開こうとすると警告が表示されるのがデフォルトになっている。もしうっかり開きそうになって警告が表示されたらなら、速やかに閉じよう。

パーソナルファイアウォールを有効にしておく

パーソナルファイアウォールは有効にしておこう。ゲームをするからとか、警告が出るからとか、そういった理由で不用意に「全て無効」にしてはいけない。
日本で感染が少ないのは、ブロードバンドルーターがファイアウォールの役割をしてくれたり、フリーWiFiの提供事業者側で通信制限をしていたことに救われているのでは?と言う意見もあるぐらい。ファイアウォールはセキュリティホールを使った感染を防いだり、あるいは不正プログラムへの感染に気がつく為に大事です。

適切にセキュリティアップデートを実施する

セキュリティアップデートが必要なのはOSだけではない。Office製品もそうだしサードベンダの製品もUpdateが必要。保守が終了してしまった(EOLを迎えた)ソフトウェアは、Updateが提供されないので使用してはならない。
意外にできていないもので、下記のような事がままある。
・WindowsはUpdateしているがOfficeはUpdateされていない(その他のマイクロソフト製品も更新すると言うオプション項目がある)
・AdobeReaderはUpdateされていない(自動更新には管理者権限が必要なため管理者が更新作業をする必要がある)
・古いJavaRuntimeがインストールされたまま(旧番のJavaは更新時に古いバージョンを残す設定になっていた。
・LZHファイルの解凍ツールをいまだに使っている(LZHはサポート終了しており、セキュリティ更新なども行われていない)
・Oracleのデータベースを使っているがOracleと保守契約していない(Oracleは有償サポート契約していないとUpdate提供してくれない事が多いよ)
etc・・・心当たりがあるなら、改める必要がある。

どうしても古いOSを使う必要がある場合

どうしても保守が終了してしまった(EOLを迎えた)ソフトウェアを使い続けなくてはならない場合、それなりのセキュリティ対策を取ろう。お勧めは再起動したときに、ファイル等への更新をロールバックしてくれるシステムだ。Windows XP Embededには標準で備わっていた機能で、物珍しいものじゃない。再起動でロールバックするシステムを導入していれば、万一ウィルスに感染しても復旧作業が容易になる。

データのバックアップを取る

データのバックアップを取っておく。良くある勘違いにRAIDを組んでいるから・・・と言うのがある。RAIDは故障等によるシステム停止の可能性を下げるための仕組みであって、故障その他の事由によるデータの喪失を防ぐための仕組みではない事を覚えておこう。RAIDを組んでいたとしてもRAID本体が故障すればデータを失うことになるし、もちろんランサムウェアに感染してしまえばデータを失うことになる。
普段はパソコンからアクセス出来ない別の媒体に、他のパソコンでも読み込める状態で複製して、初めてバックアップとして機能する。普段アクセス出来る媒体では、何かの拍子に両方を更新してしまうのが落ちである。幸いにも大容量のストレージをインターネット上に安価に借りれる時代になった。どこかにストレージを借りて、定期的に複製することをお勧めする。

「怪しいメールを開かない」とか、いい加減なことを言うのは流石に止めてほしい

たしかに20年くらい前なら、日本語としておかしい文面でるという事が多かった。当時のコンピューター犯罪は愉快犯的なものが多く、非技術的な部分にコストを掛けてまで実施する物好きが居なかっただけである。
だが、今時は文面で判断することは出来ない。コンピューター犯罪は莫大な利益をもたらす闇産業となっており、それなりのコストを掛けて実施されているのだ。もし怪しいか判断しようとするなら、最低でもReceivesヘッダを解析したり、そこに現れるサーバー名やIPアドレスの所在を追いかける程度のことはしないと話にならない。毎日数十~数百通のメールを手作業でヘッダを確認せよと言うのは、素人には無理だし、玄人だって遠慮したい作業だ。
しかも致命的なことに「怪しくないから問題が無いメールである。」とは言えない。取引先が既に感染していて「本当の業務連絡のメールに添付されているファイルがウィルス付き」って場合もある。もし怪しいか否かで判断しようとするなら、添付ファイルのあるメールは全て怪しいので文面を見ずに削除する程度には徹底しないと防げない。(僕の一番のお勧めは「添付ファイルのあるメールは全て怪しい」として扱うことだけどね。参照

WSUSで再配信のエラーが・・・

GWを開けて出社してみれば、WSUSで大量の適用エラーが・・・。

KB3008923、KB3003057、KB2987107など、2014年のInternet Explorer用セキュリティパッチが、何故か再配信されている模様。他にもOffice 2010も混じってる。緊急性の高いセキュリティホールが見つかったという話もあるので、Microsoft側でリリース作業中に何かポカったのかな?

常時SSL対応しました

遅ればせながらLets Encryptを使って、常時SSLに対応しました。使ってる広告サービスがSSLに対応したのがきっかけです。以前にもSSLを利用を検討したことがあったのですが、当時よりも各段に導入が容易になってますね。

手順については、次のページを参考にしました。Ubuntu 16.x&Nginxの場合の導入手順がわかりやすく纏められています。
How To Secure Nginx with Let’s Encrypt on Ubuntu 16.04

同様の被害を避けるために知っておくこと(てるみクラブ関連の諸々)

だいぶ日にちがあいてしまったが、てるみクラブ関連の諸々の書込をみて思ったことをメモしておく。

現金払いだから安くなる道理は無い

クレジットカード手数料が高かったり、預金金利型か高かったりした20年以上昔ならともかく、今時は現金払いだから安くなるという道理は無い。銀行振込の入金照合などは、お客様が金額を間違えていたり、振込手数料分を差し引いて入金してきたり、振込先口座番号を間違えたり、振込人氏名が異なっていたりと、とにかくトラブルが多く面倒くさいのである。窓口での現金支払いも、昔なら銀行の担当者が釣り銭用の小銭を持ってきてくれたりしたが、今時は銀行に行かなければ出来ないし、下手すれば有料サービスである。対応する担当者の人件費や、釣り銭の誤り、内引きによる損失、夜間金庫手数料負担まで考えたなら、決してクレジットカードに較べて特別に安く決済できると言うことは無いのだ。
にもかかわらず現金前払いなら安くする理由は何か・・・「当座の運転資金に余裕が無いから前払いして欲しい」以外には考えられないのだ。クレジット決済だって2週間から1ヶ月で現金が入金される。個人経営の小規模業者ならともかく、それなりの規模で商いしているのに1ヶ月待てないというのは、それなりにやばい状況のはずだ。

分割払いを利用する(支払停止の抗弁権)

初めて取引する格安業者で、取引額が高額ば場合には分割払いにしておくと良い。分割払いの場合には、販売業者側の問題で商品やサービスを受け取れない場合に、残金の支払いを止める権利(支払停止の抗弁権)が認められている。多くのクレジットカードでは2回分割の場合は手数料(利子)が発生しない。もしクレジットカードで2回分割にしていたなら、損失は2回目の支払分(購入金額の半分)で済んでいた。
支払停止の抗弁権は、事業のための取引は除外される、月謝など毎月料金が発生する物などは対象外、取引金額は4万円以上、クレジットの場合には2ヶ月以上、ローンの場合は3回以上に分割する。などなどいくつかの条件があるが、普通に個人が物品やサービスを購入した場合には、ほぼ対象になると思って良い。
「支払停止の抗弁権」を行使するには、クレジットカード業者または信販業者に連絡して手続きすれば良い。その後、販売業者と購入者の間で問題の解決にあたることになる。「支払停止の抗弁権」行使の連絡を受けたのに、速やかに支払停止の対応をすることが義務づけられている。また十分な調査を行なわずに、請求を継続したり、個人信用情報機関への事故情報登録を行うことは禁止されているので、販売業者と十分に時間を掛けて協議することが出来る。

個人でも会社の信頼度を確認する手段はある

東京商工リサーチや帝国データバンクなどの企業情報を参考にすれば個人でも非上場会社の信頼性を評価することは出来る。手数料も1件あたり数百円~千円程度でしか無い。買い物のために企業情報を見るのは流石に過剰だと思うが、非上場企業に就職しようとしているなら信用情報や企業概要を調べる程度のことはしたほうがよい。
例えば私は次のサービス(http://www.so-net.ne.jp/biz-search/)を使ってた。この手のオンライン検索サービスはインターネットの普及する前、30年前には存在していたので特別に目新しい物じゃ無い。
20年前の就職氷河期の頃ならいざしれず、今の雇用状況なら選ぶ余地はあったはず。その中で卒業後の就職先が倒産したというのは、天災でも事故でも無い。単純に調査不十分だったのだ。

仕事でPC使うなら、自前のキーボードとか使おう

時代遅れで動きの遅い「会社支給のPC」は、年間19日分の仕事時間を奪っている

本当にそう思う。元記事では経営者が古いPCを使わせ続ける事や、従業員のITスキル格差による無駄なんかが触れられているが、私自身も気になっていることがある。従業員の多くは何故に自前のキーボードやマウスを持ち込まない、あるいは経営者は持ち込ませないのだろう?市販のパソコンに付属しているキーボードは本当に必要最低限のもので、決して使いやすい物では無い。数万円の追加支出で、随分と疲れにくく、使いやすい物になる。毎日何時間もPCの前で過ごすのであれば、その程度の追加投資は決して高い物では無いのにもったいない。プロの事務屋やSEが使うべきお勧めのキーボードをあげておきたいと思う。

エルゴノミクスキーボード


人間工学的にデザインされたキーボードで、必要最小限の動きでキー入力出来るようにデザインされており、指や体への負担を軽減するために様々な工夫がされている。キーボード自体は複雑な曲線や曲面で構成されていて独特の形状をしています。
一般的なキーボードだと左右の手を近づけるために、脇の下を締めた体制で入力することになりますが、これって既に無理がありますよね。エルゴノミクスキーボードではまず左右の手を離して、脇の下を開けた自然な姿勢で入力するように配置されています。その上で指の動かす範囲が小さくなるように各キーも配置を最適化しています。

分離型キーボード


エルゴノミクスキーボードは左右の手を自然な状態に離すのが基本です。そのためキーボードが大きくなりがちです。その欠点を補うのが分離型のキーボーです。右手用のキーボードと、左手用のキーボードが完全に分かれていて、それぞれ好きな場所に置いて使用する事になります。ホームポジションが定まりにくいことや、キーボードを見ながら入力することが難しくなるので、タッチタイピングに慣れるまでどうしてもスピードが遅くなりますが、なれれば一体型のエルゴノミクスキーボードよりも高いパフォーマンスを得られます。

QWERTY以外のキーボード

QWRTY配列だとどうしても左手の負担が増えたり、特定の指に負担が集中する傾向があります。元々がタイプライターの機械的な制約から、素早く入力出来ないよに考案されたものなので、長時間使い続けるには色々無理があるのです。エルゴノミクスキーボードには一般的なQWERTキー配列を踏襲した物が多いのですが、いくつか全く異なる配列のキーボードを試みがあります。

DVORAK配列キーボード


英文を入力するときの負担軽減を重視して設計されたキーボードです。左側に記号が、右側にアルファベットが配置されています。これにより利き手の右手をより有効に活用する事ができます。

親指シフトキーボード


和文のカナ入力するときの効率を重視して設計されています。古くはワードプロセッサ専用機などで採用されていたキー配列です。変換キーやシフトキーなど、よく使うキーを中央に配置し親指で入力するようになっているのが名前の由来です。左手で入力するキーと、右手で入力するキーが完全に分かれています。カナキーの配置も特定の指に負担が集中することの内容に再配置されています。

トロン配列キーボード


こちらも日本生まれのキー配列です。ENTERキーなど頻繁に使うキーを親指で打つようにしており、右手で操作するキーと左手で操作するキーが完全に分離しているのが特徴です。キー配列は英字はDVORAK配列を、カナ文字は親指シフトキーボードを踏襲しており、日本文のタイプも、英文のタイプも負担が小さくなります。

ゲーミングキーボード

ゲーム用に開発されたキーボードですが、事務用やプログラミング用にも便利です。キー配列を大きく買えてしまうとゲームの操作性を損なう恐れがあるので、はオーソドックスなQWERTYです。キーの押し誤りを防ぐためにキーピッチを大きく取っていたりと、余裕のある作りになっています。キーの応答性を重視しているために素早くタイプしてもきっちりと追従してくれます。何よりも特徴的なのはマクロ機能です。
一連のキー入力をマクロとして登録しておき、必要に応じてショートカットキーを入力することで同じキー入力を再現することが出来ます。マクロ機能の無いアプリケーションでも操作したときのキーストロークを記憶させて、繰り返し呼び出すことで入力を効率化すると言ったことが出来ます。

トラックボール

最近は見ることの少なくなったトラックボール。紙資料等が多かったり、机が狭いという人にお勧めします。トラックボール自身を置く場所さえ確保出来れば良いので狭い場所でも操作できます。タッチパッドを搭載したキーボードもありますが、操作性の面ではトラックボールの方が勝っています。また腕を大きく動かさなくて良いので、長時間使い続けても疲れにくと言うメリットもあります。

初心者向け、お勧めのキーボード

参考に、キーボード初心者向けに、私のお勧めのキーボードをいくつか例示しておきますね。

Microsoft Natural Ergonomic Keyboard


初めてのエルゴノミクスキーボードのお勧めはコレ。Microsoftはキーボードやマウスを専門に研究している、数少ないメーカーの一つです。コストパフォーマンスも良くて私の周りでは人気のキーボードだったのだけど数年前に生産中止に・・・と思っていたら、生産再開されました。基本的なQWERTYキー配列を踏襲しており、初めてキーボードを買う人にはお勧めの一品です。

Logicool Gaming Keyboard G510s


初めてのゲーミングキーボードのお勧めはコレ。マクロ機能の充実したゲーミングキーボード。キーボード上に拡張表示用のLCDが儲けられており、現在時刻やタイマー、CPU負荷などを表示する事が出来ます。大きなアームレストのおかげで長時間の入力でも疲れにくいです。

Logicool Trackman Marble


初めてのトラックボールのお勧めはコレ。中指でトラックするタイプのトラックボールです。親指でトラックする物が多いのですが、親指トラックだとどうしても指の負担が大きくなります。中指トラックの場合、中指というより手首全体を使ってトラックできるので、指の負担が大分少なくなります。

VirusBusterとHouseCallって何処が違うのだろう

VirusTotalでウィルスらしきファイルのチェックをすることが度々あるのだけど、同じ日のパターンファイルなのに、TrendMicro(VirusBuster)では検出されず、TrendMicro-HouseCall(無償のウィルス検出ソフト)では検出されるのって何なんだろう。HouseCallは検体収集用で設定厳しめとかなのかなぁ?

ちなみにVirusTotalに送信した検体はVirusTotalと契約している複数の組織に提供されます。まんま漏洩する事になるので、ファイルをアップロードしないようにね。

私はここで確認したあと、利用しているウィルスベンダーに検体として送付してたりします。

Windows Management Framework 5.1公開

Windows Management Framework(以下WMF) 5.1がリリースされたそうで、記事を読んでいると、WMF5.0以降でDSCのサポートが強化されていたことに気が付く。

以前にPowershell DSCを使ってクライアントPCのソフトウェア資産管理をできないかと考えたことがあったのだが、Windows10以前のOSについてはPowershellからOSの環境設定を変更するようなコマンドレットが殆どサポートされておらず、結局あきらめたのだ。

いつの間にやらPackageManagementやらGet-NetworkSwitchEthernetPortなど、当時ほしかった機能が提供されているようだ。近いうちに、また試してみたいな。

WordPress 4.7のRSSフィードで日付のフォーマットエラーが発生する

RSSフィードのlastBuildDateの書式がおかしい。「月, 10日 1月 2017年~」って感じになる。コード上は日付を出力するときの書式指定は日本ロケールを意図していないにもかかわらず、日本ロケールの設定に基づいて日付を出力してしまうために、文字列が壊れるということらしい。

修正方法は以下のサイトを参考に・・・
WordPress4.7へアップデート後、Google Search ConsoleのサイトマップにRSSフィードを送信している場合、無効な日付エラーが発生している時の対処法。