About 槌本 裕二

えっとワークのシステムを作っています。

シーズンも最終盤にさしかかり、既に順位が確定したチームも出てきました。

あと数試合で、全てのマスが 0%か 100%に収束してシーズンが終わるわけですから、1試合終わるごとに数字が大きく動くのは当たり前です。特に、分の悪い相手に勝てば大きく上がるかもしれませんし、逆に、分の良い相手に負ければ大きく下がるかもしれません。同時に、順位を争う相手が、分の悪い相手に勝った場合は、そちらの上位確率が上がる分、こちらの上位確率が下がります。場合によっては、試合に勝ったのに上位の確率が下がる日も出てくるでしょう。

また、CSのような短期決戦では、どんでん返しがよくおきますし、日本シリーズに至っては、さすがに交流戦の3試合の対戦しかないため、やってみるまで分かりません。ペナントレースでの勝率なども加味されていますが、リーグが違う上に、大きく負け越すチームの存在などがあり、条件を揃えられません。数字は数字として、試合は試合として楽しみましょう!


常駐しない、攻撃的な不正ソフト検出・駆除には、ノートン パワーイレイサー が使えます。インストール不要、誤検出上等で、不正っぽいエントリをスキャンします。手持ちのウイルス対策をかいくぐられたときには、これが使えます。

パワーイレーサーのオフライン版とも言えるのが、ノートン ブータブルリカバリツール です。USBなどでブートして使います。Windowsが起動しないレベルの障害でも、復旧を試みるみたいです。幸か不幸か、ここまでの強力なツールが必要になる感染を起こしたことがないので、どのように駆除されるのかはわかりませんが、ブートローダーなどOSが起動した状態では駆除できない部分への感染にも効果があると思われます。

(2020/8/8 リンク切れ修正)


最近、何かとご用命下さっている会社さん、最初の設計はしっかりしたものなのですが、それから十数年、時代に合わせたメンテナンスがあまりされていない様で、ネットワークにも明らかなボトルネックがあり、とてももったいない状況なんです。
ご理解もあり、ご決断の早いお客様なので、個別の問題に対しては万全の解決策を提案させて頂き、素早い対応ができております。これは任される側としてはとてもありがたいお客様です。良いシステムができあがるのは気持ちが良いですし、トラブルが起きない事へのコストを理解頂けるのは嬉しいです。「1時間で終わったのにこんなに取るのか?」と言われたら、毎日8時間壊れるように作るしかないですからね…(冗談です!)

欲を言えばもっと改善したいところはあるのですが、弊社の規模では、そのメンテナンスの全てを引き受けるのは難しいですし、多くは、設計さえしてしまえばお客様の既存のIT部署で対応可能だと思われます。
いっそのこと、1ヶ月に1回ずつ、各支社を回って現場の状況や不満を聴き、本社でそのまとめと解決案を提案させて頂くような、コンサルタント契約をして頂けないかなあ、と思ったりしていますが、今お困りでないなら、コンサル料をかけて、無駄なアップグレードをするメリットもないか…。NASへのアクセス速度とか、それほどコストかけずに1桁改善できるんですけどね。ネットワーク設定も、個別に設定するより、DHCPサーバを任せて頂ければ…みたいな所がありますし。

とはいうものの、弊社ではこなせる数が限られております。特に故障対応についてはとてもお困りでしょうから、そちらを優先させて頂いておりますと、他のご依頼が遅延することもあります。なにぶん零細企業ですので、大目に見ていただければ幸いです。


弊社が出版を担当した電子教科書「目からうろこの線形代数」(Kindle版)が発売されました。

せっかくの電子教科書なので、読んで分からないところがあれば、★1 を付ける前に、サポートページにてフィードバックを頂ければ、その部分を改訂していきたいと思っています。
また、演習問題を独習できる仕組みや、動画での解説などもいろいろ試そうと思っておりますので、温かく見守って頂ければと思います。

数学が得意な高校生から、線形代数が必修の大学生、既存の本では固有値の意味が分からない社会人の方が対象です。スマホやタブレットに入れてどこでも持ち運べます。是非手に取ってみて下さい。

世界的計算物理学者、中村純(なかむら あつし)先生の教科書が500円で読めるのは、正直あり得ない安さだと思います。去年線形代数を履修して、よく分からなかった理系学生のみなさん、是非スマホに入れて読んでみてください。


安価なNICモジュール、蟹さんで有名な Realtek RTL8111/8168 ですが、これのLinuxドライバはopenではないので、メーカー配布のドライバを入れなければ鳴りません。ドライバを入れると、結構安定しています。(昔と比べれば)

elrepo の kmod-r8168 がメンテナンスもされていてお薦めです。EL5,6 のモジュールも別ディレクトリにあります。

ここで使われているのが、kmod という仕組みで、モジュールに、モジュールがコンパイルされたときのカーネルAPI(kABI)の情報が入っています。新しいカーネルをインストールすると、API互換性チェックが行われ、モジュールが(表面上は)使えるとわかると、 /lib/modules/(新カーネル)/weak-updates/ にシンボリックリンクが作られ、depmod すれば、モジュールがそのまま使い回せます。
(APIに手が加わると、API情報が合わなくなるので、kmod-xxxx の src.rpm から再構築が必要です。)

もう一つの方法が dkms で、起動時に毎回カーネルモジュールを build する方法です。カーネル更新後の再起動時にコンパイルする時間がかかりますが、確実にロードされます。


ところで、この kmod-r8168 は、多く使われる Realtek RTL8111/8168 シリーズ用ドライバモジュールとして、なぜか姉妹機種の r8169 がロードされてしまう問題への解決策です。r8169 は r8168 と基本部分の設計が同じなので、見かけ上動いてしまうのですが、DMAやオフロードなどの細かい違いの部分が問題になったときにエラー対処が異なっているので、一度問題が発生すると途端に動かなくなってしまいます。ちょっとの差なら、組込の r8169ドライバが r8168 もきちんとハンドルしてくれれば良いのですが、何年もサポートしてくれないあたり、何か特許やライセンスが絡んでいるのか、誰も興味が無いのか…(それなりにユーザはいるはずですが)

kmod-r8168 を入れても、Jumbo frame がうまく動かないという話をよく見かけます。もともと RTL の DMAやオフロード周りは動作が怪しいので、jumbo frame はお薦めできません(効果も限定的ですし)が、型番によって、チップが対応している最大サイズが異なります。ドライバ側ではこれを超える値も設定手来てしまう(?)ので、ご注意下さい。型番は、lspci, dmidecode, dmesg といったコマンドではわからないので、メーカの Specification を読んでください。

Jumbo Frame 最大サイズ
RTL8168B/8111B – 4kB
RTL8168C/8111C – 6kB
RTL8168CP/8111CP – 6kB
RTL8168D/8111D – 9kB
RTL8168DP/8111DP – 9kB
RTL8168E/8111E – 9kB
RTL8168EP/8111EP – 9kB
RTL8168E-VL/8111E-VL – 9kB
RTL8168F/8111F – 9kB
RTL8168G/8111G – 9kB
RTL8168H/8111H – 9kB

9kB が一般的な 9000バイトなのか、9kiB(9126バイト)なのかイマイチ不明です。ソースコードをぱっと見た限りは、9kB(9216バイト)で定義されているように見えますが、ドライババッファサイズとハードウエアの実装が一致するとは限りません。また、これが MTU として、ヘッダの40を引いた値を設定しないといけないのかもしれません。安定しない人は試してみて下さい。上限9216バイトなら、ヘッダを含めない値だとしても、MTU 9000 で安定して欲しいところですが。。。

Jumbo Frame 安定しないけど jumbo frame したい人のMTUサイズ
RTL8168B/8111B – 3960
RTL8168C/8111C – 5960
RTL8168D/8111D以降 – 8960


ニュース(2016)

  •  3/26  2016年シーズンの計算を始めました。
  •  5/  6  ソフトバンク、CS進出確実。残り114試合を52勝ぐらいで。
  •  6/  3  ソフトバンク、優勝確実。残り91試合を47勝ぐらいで。
  •  6/18  ロッテ、CS進出確実。残り79試合を29勝ぐらいで。
  •  6/24  広島、CS進出確実。残り71試合を29勝ぐらいで。
  •  6/28  日本ハム、CS進出確実。残り71試合を27勝ぐらいで。
  •  7/10  広島、優勝確実。残り58試合を24勝ぐらいで。
  •  7/30  ロッテ、3位確実。
  •  8/  4  巨人、CS進出確実。残り46試合を17勝ぐらいで。
  •  8/18  ソフトバンク、優勝確実取消。春の快進撃はたまたまでした。激しくデジャヴ。
  •  8/24  巨人、2位確実。
  •  8/30  広島、CS進出確定!
  •  9/  7  オリックス、6位確実。
  •  9/  9  日本ハム、CS進出確定!
  •  9/  9  ソフトバンク、CS進出確定!
  •  9/10  広島、セ・リーグ優勝確定!! おめでとうございます!
  •  9/13  DeNA、CS進出確実。残り10試合を4勝6敗ぐらいで。
  •  9/15  DeNA、3位確実。
  •  9/19  巨人、CS進出確定!
  •  9/19  DeNA、CS進出確定!
  •  9/24  ロッテ、3位確定 & CS進出確定!
  •  9/24  中日、6位確実。
  •  9/25  中日、6位確定。
  •  9/26  日本ハム、優勝確実。残り3試合を1勝2敗ぐらいで。
  •  9/26  ソフトバンク、2位確実。
  •  9/27  西武、4位確実。
  •  9/27  楽天、5位確実。
  •  9/28  日本ハム、パ・リーグ優勝確定!! おめでとうございます!
  •  9/28  ソフトバンク、2位確定。
  •  9/29  オリックス、6位確定。
  • 10/ 1  阪神、4位確定。
  • 10/ 1  ヤクルト、5位確定。
  • 10/ 4  西武、4位確定。
  • 10/ 4  楽天、5位確定。
  • レギュラーシーズンの全日程が終了しました。

技術評論社さんより、書籍「改訂新版JavaScript本格入門 ~モダンスタイルによる基礎から現場での応用まで」を頂きましたので、ここでレビューを書きます。

知ってるようで知らない JavaScript こと ECMAScript。AngularJS などがでてきてから、もうブラウザのおもちゃではなくなっていましたが、それでも本格的な開発には、TypeScript などの、もう少し厳密な上位言語を使うことが多かったと思います。しかし、それも今年でおしまいになりそうです。この本で紹介されている、ECMAScript2015(JavaScript6)が規格として定まり、既に最新のブラウザの多くが対応しているからです。

この本では、ECMAScript2015 で新たに加わった部分を強調しつつも、互換性を持ってすぐ使えるサンプルコードで紹介されています。おそらく、全てのブラウザが完全対応した暁には、このあたりも完全に最新の ECMAScript2015 で書き直された再改訂版が出版されるかも知れません。

「本格入門」と、本格的なのか入門なのか、どっち!? と思ってしまいますが、JavaScript を、HTML の飾りではなく、アプリケーション言語として使う場合の入門、という位置づけだと思います。

例えば、「http:」を「https:」に置換したいとき、

function replaceURLsecure ( str ) {
  str.replace(/http:/,'https:');
  return str;
}

なんて野暮ったい関数を作ったりしていませんか?

JavaScript では String もオブジェクトなので、String クラスを拡張して、

String.replaceURLsecure = function() {
this.replace(/http:/,’https:’);
}

と書いてやるのが、JavaScript的なオブジェクト指向なんだと思います。

もし、この関数を広く使いたいなら、String.prototype に加えてやりましょう。

この本は、各所の説明がかなり低級な所まで掘り下げて説明されています。特に、JavaScript は、C言語や C++ の出来る人にとっては、JavaScript は、わかった気にさせておいて、実はもう一段罠がある言語とも言えると思います。C言語を理解している人にとっては、この本の掘り下げた説明は、スムーズに頭に入ってくると思います。そして、この Number オブジェクトこそ、JavaScript は全てがオブジェクトなんだという基本構造への入口だと思います。

この本では、JavaScript できちんとクラスを書く、きちんとオブジェクト指向のプログラムが書けるように、「本格入門」の名に恥じない基本がしっかり書かれています。プログラミング入門ではないので、何か言語を知っている人、特に、C++ や Java のクラスを知っている人向けに書かれているように思えました。JavaScript も Java のように書けたら、と思っている人には、この本で、JavaScript でもちゃんと書けますよ! と言えると思います。オブジェクト指向の実装は C++ のクラスの概念とは大きく違いますが、その違いをうまく説明してくれています。オライリーの分厚い本(サイ本)にももちろん同じ事がきちんと書いてありますが、私にはこちらの説明が非常にわかりやすかったです。この本を読んだ上で、オライリーの本を脇に置いて、AngularJS などに挑戦していけば、最短距離で本格的な JavaScript 開発が始められそうです。

ECMAScript2015 は最新の言語ですが、それでも JavaScript そのものは古い言語なので、色んな互換性を引きずっています。過去、様々なブラウザが群雄割拠していたときの名残か、同じような事を複数の書き方で表現でき、その振る舞いが僅かに異なるケースが結構あります。この本の中では、こうした書き方のバリエーションと、その際についても逐次書かれていたり、今ではお薦めできない書き方も教えてくれるので、JavaScript をきちんと書きたい人、いや、きちんと書いて欲しい人(私だ!)に読ませるべき一冊だと思います。特に、C言語はポインタのポインタまで扱えるのに、JavaScript も長大な main 関数でしか書けない人は、この本を読めば、今日からクラスライブラリを書けるようになるはず。

この本の中でメインに使われているブラウザは、新しめの Chrome(バージョン51以降)で、読んでいるうちに開発者ツールの使い方も自然に分かる様になります。コードエディタも Visual Studio Code を用いるなど、これを機に最新の開発環境を整えたい方にもお薦めの内容になっています。最新のテスト環境やドキュメント文法など、大規模なチーム開発や github での共同開発では避けて通れないモダンな開発スタイルも紹介されているので、vi で html ファイルに <script> を直書きして、若いエンジニアから顰蹙を買っている方(私だ!)には本当にお薦めです。

初_改訂新版JavaScript本格入門_オビ
改訂新版JavaScript本格入門 ~モダンスタイルによる基礎から現場での応用まで


3タテされることなく優勝したカープを祝して、3つ同時に壊れなければデータが失われないストレージ、トリプルミラーリングRAID1 か RAID6 ストレージサーバの構築を1名(社)様に限り半額で行います。(機材費用を除く) RAID6 は 7ストレージまで、6ストレージRAID10(2冗長×2)も承ります。

例えば 10TB×7台のRAID6の場合、10TB×(7-2) = 50TB ストレージを手元に置けます。社内のほとんどのデータを保存でき、さすがにクラウドでは速度的にしんどいサイズだと思います。市販品ならどうにもんらない本体の故障時にも、HDDさえ無事ならば新しい筐体でデータを再構築できます。

9月15日までにご相談下さい!


久々のLINEスタンプの話題です。

夏休みの自由研究としてLINEスタンプを一からデザインしたオリジナルキャラスタンプ「ねこぱんず」がリリースされました。
https://store.line.me/stickershop/product/1315812/ja
弊社もすこしだけアドバイスさせて頂きましたが、他にもかわいいキャラ原案があるのに、このキャラを選んだのは、イマドキの女子小学生の感性でしょうか!?

弊社の商品ではありませんが、もしお使い頂いて気に入ったスタンプなどのご感想があれば、弊社(info@eikai.co.jp)宛にお送り下さい。当人にお伝えします。励みになると思います。これは基本セットで、バリエーションを増やしていくかもしれません!

さすがにリリースは保護者の協力が必要ですが、小学生でもこんなのが作れちゃう時代なんですね。次世代のクリエイターを応援したいです!


このごろ、夜間にフレッツの混み具合がひどくなっています。大容量転送をしなければ支障が出るレベルではありませんが、遅延もひどく、ntp の delay が通常の20ms弱から60ms超へとひどく遅延しています。

夜間になるとひどく遅延が大きくなり、時刻合わせに影響が出る。
夜間になるとひどく遅延が大きくなり、時刻合わせにミリ秒レベルの影響が出る。

このグラフは時刻合わせ(ntp)のモニターなのですが、時刻サーバまでの通信時間(緑)が毎晩大きくなり、時間のジッタ(不確定さ)(橙)も15~20msまで悪化しています。こんなに時刻が揺らいでしまっては、この時間帯は時刻サーバを無視したほうがマシです。

そこで、ネットワーク経由以外の時刻合わせを使う事にしました。GPS信号を受信し、シリアルポートのキャリア検出か、パラレルポートのACKに標準時パルスを入力してやれば、ネットワークの混雑でも悪化しない、正確な stratum 0 の ntpd サーバを作る事ができます。

と言うわけで工作。

GPSモジュールをUSBとパラレルポートに接続する回路の製作
GPSモジュールをUSBとパラレルポートに接続する回路の製作

黒いボックスがオールインワンのGPSモジュールです。こいつに電源を繋いで、データ入出力をUSBでサーバに取りこみます。ユニバーサル基板は高校生の時のストックを切って使いました。

GPS の制御・受信情報は、シリアル-USB 変換をして USB ポートから /dev/ttyUSB0 (Windows だと COM3)として入力します。同時に、USBから 5V-DC の電源をとります。電源電圧が、USBは5V、GPSモジュールは3.3Vと異なるので、レギュレータで変圧します。消費電力が小さいのでヒートシンクはいらないでしょう。定石通り、手持ちのキャパシタ(電解+セラミック)を適当にいれます。

パラレルポートへのパルス信号は、アメリカの標準時計。日本の時計と秒刻みのズレは無いものの、何かちょっと悔しいですね。このパルスで正確に割込を入れるため、カーネルレベルで強い割込のかかるパラレルポートの ACK# ピンを使いました(IRQ4)。このケーブルは脱着式にしたかったので、ノイズに強く高周波を通す Ethernet (cat.5e) ケーブルを転用。PoE 対応なので DC から100MHzまで結構何でも通しちゃう優れものの万能ケーブルで、しかも安価で手に入りやすい。

パルス出力は 2.8V と中途半端ですが、パラレルポートの TTL には High に判別されるのでTTL変換は使いません。タイミングが命なのにバッファを入れたくないかなと(でももっとタイミングがシビアなメモリはバッファが入ってますね)。LED直挿しなのはお許しを。

これが正確に1秒を刻みます。パラレルポートの ACK# はカーネルに強い割込をかけられるので、このパルスのタイミングを高精度(およそ数十ナノ秒)に取りこむことができます。USBでは無理な、レガシーデバイスが活躍する場面です。

あとは、この回路での遅延などを計測・調整すれば、最上位 stratum 0 の ntpd サーバのできあがりです。

この標準時を使い始めたあと、先ほどのネットワーク経由の時刻合わせを見てみると…

夜間に遅延がひどいntpd

遅延(緑)が大きくなるときは、上りより下りの遅延の方が悪化がひどく、ジッタ(橙)だけでなくオフセット(青)も大きく(10~20ミリ秒)ずれていることがわかりました。これはかなりひどいですね。簡易な GPS-NTPD でも、stratum 0 で 100ns、ネット越しの stratum 1 で、10ms の精度が安定して確保できます。

安定しているときのオフセットが 0 になるように、ローカルの PPS Delay を調整して追い込んでいけば、100ns 以下の精度が出ます。

サーバに手を入れたくない場合は、Raspberry Pi 等を使って、単独 ntpd サーバを作る事もできます。拠点間で時刻を正確に合わせたい場合や、マイナンバー関連で局所ネットワークがインターネットから切り離しているパソコンの時刻合わせなどに使えると思います。時刻の合わない端末がある方はご相談下さい。