安価な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


技術評論社さんより、書籍「改訂新版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 サーバを作る事もできます。拠点間で時刻を正確に合わせたい場合や、マイナンバー関連で局所ネットワークがインターネットから切り離しているパソコンの時刻合わせなどに使えると思います。時刻の合わない端末がある方はご相談下さい。


話題のポケモンGOをやっていました。ポケモンは流行っていたときには研究の方が面白くて全くやっていなかったのですが、結構なダイエットになるとのことで、それを信じて始めてみました。
オフィシャルの遊び方を参考にしました。

もちろん、ピカチュー ピカチュウ(ご指摘ありがとうございます)のことは知りませんでした。

 

初期設定を終わらせると、マップが表示されました。チュートリアルによると、こんな感じでポケストップなどのモニュメントが画面に出てくるみたいですね。マップにはポケストップなどが表示される

 

 

なるほど、なるほど。

さて、うちの近所はどうかな…?

なにもない

 

なんにもねぇ。

 

ぐるっと1時間ほど歩いてみたけど、見事に何も無い。

それでも、公道であれば野良ポケモンは出てくるみたいなので、それで我慢しましょう。

ただ、モンスターを捕まえるボールなどもポケストップで補給するらしいのですが、存在が確認できた最寄りのポケストップが8km先でした。うん、ダイエットにはなるかな。

 

それで、公道の野良ポケモンを狩ってました。

 

アプリを開きながら仕事してたら、部屋の Wi-Fi 環境下で道路にポケモンが出現!

スマホを持って家を出て、公道まで歩いて行くと、Wi-Fi が届かなくなって 4G 回線に切り替わりました。
ここでロードがおこると…ポケモン、居なくなります…orz

 

そこで、AP を家のギリギリにおいて、Wi-Fi のままギリギリプレイできるようにすると、モンスターゲット!! やっと1匹捕まえたー!!

…と、このタイミングで 4G に切り替わってしまいました。

そしたら…

動かないボール

 

しーん。

この画面でフリーズして、3時間待っても動きませんでした。(このスクリーンショットは部屋に戻った後なのでWiFiに繋がってます)

アプリを強制終了して、ゲットしたポケモンもなくなりました。キャッチアンドリリース!

 

そんな中、マップの中に、葉っぱが舞っている所を見つけました。

木の葉が舞ってます

これも何かありそうですね。裏山のほうなので行ってみましたが。。。

この先ですね…

木の葉が舞うところ

この10mぐらい先です。確かに木の葉が舞ってそうですが、軽装できてしまったのでちょっと無理です。

 

ポケモンボールの補充も気軽にはできないので失敗は許されません。旧日本軍だと思えばなんてことはありません。いつかこの茂みの向こうのインパールまで行って見せましょう。

どうも孵化器に卵をセットしたら、歩くダイエットになるみたいなのですが、その卵もポケストップで入手しないといけないそうで…

田舎に厳しいポケモンレポートでした。

ま、これ常に起動してたらバッテリー持たないので、どのみち続けるのは難しいンですけどね。きっとこのゲームは酸っぱいに違いない。皆さん楽しそうで良いですね。しくしく。

 

ー 追記 ー

ご存じの方も多いと思いますが、ポケストップは、Ingress というゲームのポータル(の一部)が使われています。富士山やヤクーツクにもポータルはあります。今、ポケストップがない人は、Ingress ブームの時に、ポータル申請をしていなかったツケが回ってきているのでした。(2016年7月現在、ポータル申請は休止されています)

もっとも、私も近所の神社を申請したのですが、ポータルにはなりませんでした。当時はそれほど Ingress をやってなかったので深追いはしなかったのですが、今となって残念です。


2016年7月24日(日)の午前に、中国電力のインフラ更新のため、弊社地域が停電となります。
予定ではバックアップ電源(バッテリ+自家発電機)にてサービスが止まることはありませんが、想定外の時にはご迷惑をおかけすることがあるかも知れませんので、予めお知らせいたします。
余談ですが、弊社太陽光発電所ともその時間切り離されますので、非常用電源を太陽光発電で賄うことができません。残念!


まだ分からない人のためのSNSの選び方

前提として、無理にやらなくても良いが、いちいち電話やメールをする時代でもなくなったので、何かしら始めると良いかも知れない。今のメールは、ちょっと前の携帯電話、携帯電話は固定電話ぐらいのハードルなっていて、わざわざメールするのもなあ、と思ってしまう人も多い。

LINE

導入のしやすさから日本では人気のSNS。電話番号を交換したり、友達の友達だったりが勝手に登録されていくので「使ってないから」という言い訳が使いにくい。「あまりよくわからない」と言いながら、面倒じゃない相手とだけ使うと良い。全部に答える必要は無い。
連絡網として使われることも多いので、勝手に繋がっていくのもそれなりに便利。スタンプは必須ではないが、返事や挨拶系の物を4セットぐらい買っておくと便利。連絡用と割り切って使う手もあり。
マーケティングに使うなら、LINE AT という企業アカウントを取得する。

facebook

実名SNS。リア充がリア充をアピールする場。基本的に良い事しか書かない。書くときも読むときもそれを忘れずに。自分に自信のない人は他人の書き込みは見ずに、ご飯の写真に「いいね」しておけばいい。
適当に読み飛ばしてくれるので、長く書いても迷惑にならないが、短いメッセージの方が伝わる。URLを引用して、記事やニュースに自分の意見を足すことも出来る。
公開範囲の「友達のみ」と「公開」をうまく使い分けよう。ただし「友達のみ」であっても、公開できないようなことは書いてはならない。
コミュニティーやメッセンジャーも便利で、メッセンジャーは単体アプリになっている。
企業Webページを作ったら、企業facebookページも作っておこう。広告媒体としても使える。もはや実社会の一部ともいえる。

mixi

一時期一世を風靡した和製SNS。ひっそりSNSしたい人にはお勧め。
最近はゲームプラットフォームになってしまった。

twitter

実名でも匿名でも使える。複数のアカウントを使い分けているひとも。140文字までしか書けないが、読んで欲しいなら40文字ぐらいでまとめるのが良い。まずは、面白そうな人を何人かfollowしてスタート。面白くなかったら遠慮無くunfollowする。しばらくは読むだけにしてみよう。
RT(Retweet)と呼ばれる、他人のtweetを再拡散できるのが特徴。面白いRTが回ってきたら、元tweetを発信した人をフォローし、偏った人のRTが回ってきたら、RTした人をunfollowする。1ヶ月もすると、色々なことを教えてくれる人を沢山フォローしていることだろう。自分もRTする必要は無い。
書くのに慣れてくれば、広報用や広告用途にも使える。大勢にRTされた時の宣伝効果は絶大だが批判も受けやすい。気の短い人、騙されやすい人には向かない。

 

個人情報は大丈夫なの?

大原則として、自分からは書かない。投稿する写真の背景などにも注意。他人のお子さんなど、自分に権利のない情報は絶対にアップしないこと。逆に、それを気にせずアップしてしまう人とは迂闊に遊びに行かないようにしたい。
知らない間にも色々な情報が収集されているが、あなたが重要人物なら、そんなものとっくに収集されているし、そうでなければ誰も興味を持たない(単に統計的に処理されるだけ)ので、特に気にしなくても大丈夫。
それよりも、上の放送局ユーザによる漏洩の方がよほど怖い。

匿名性

書き込みが増えてくると、書き込みから個人の特定は難しくないので、匿名アカウントでも、個人が特定されても困らないような書き込みにとどめておくことが重要。後でばれるより、最初から実名の方が安全かも知れない。


今でも納得いかないこと。
 
 
小学生の時、初めて「100マス計算」をやったときのことだ。
塾とか行ってなかった自分は、100マス計算そのものが初めてだったので、ルールを真剣に聞いていた。周りの児童の半分ぐらいはもう知っている雰囲気だった。
まず縦と横に任意の順番で数字を書き、その和を100マス埋めていくというルールを聞いた。そして、それをできるだけ早くやる(時間を競う)という事も聞いた。
この2つから導き出される合理的な解は1つだろう。最初に縦横に書く数字が任意の順番で良いなら、0から9を順番に書く事が「できるだけ早く」を満たす。(1から9だったかも)
しかし、どうもそれは、子供心にも、足し算の訓練という趣旨から外れているように感じたので、担任に「最初に書く縦横の数字は本当にどんな順番でも良いのか」と尋ねた。答えは「どんな順番でも良い」だった。
よい子だった私は、出された条件の中でベストを尽くし、かなりの好タイムを出した。先生の期待に応えたと思った。
 
ところが、その答案は「順番に列べちゃダメでしょ」と怒られることになった。やはり感じた不安は当たっていた。しかし、こちらはそれを事前に確認したし、どんな順番でも良いと言ったではないか。なにより、できるだけ早く100マスを埋めるという期待に応えたのは怒られることなのか。
 
できるだけ早くやれといわれているのに、わざわざ遅くなるような並びにしなければならないなら、そういうルールだと説明すべきであり、また、事後においても、ルールの説明不足に原因があるわけで、怒られる筋合いはないと今でも思う。
100マスを早く埋めることが目的なのか、足し算の訓練を100回行うことが目的なのか、相手が子どもだからこそ、きちんと説明すべきだろう。

以前、カープを応援するイベントをやりたいということで、広島駅近くの「弘法市スタジアム」さんで、お好み焼きなどを食べながらパブリックビューを見て応援するイベントをやってきました。

まだオープン戦で、急な呼びかけにもかかわらず、多くの方が集まってくださり、また、現地のファンからのtweetや、ネット参加での応援参加も頂けました。

イベントの運営には、同じくヒロハタで事業展開してきた「広島の楽しい100人」さんの運営力をお借りしました。最終審査ではライバルになる相手ですが、こうしたコラボができるのもヒロハタの楽しさだと思います。

残念ながら試合は負けてしまいましたが、コアなファンが集まれば、色々なカープ小咄が出てきますし、いろんな選手を応援しているファンがいるのもカープの特徴。色々聞いているうちに、ライトファンもよりカープに興味が湧いてきたみたいです。
また、ライトファンでも楽しめる独自ルールのビンゴゲーム企画なども予想外に盛り上がり、収益としても悪くない(高くもなく、赤字でもない)結果でした。今シーズン、「パブリックビュー×メガフォン」は、「あり」だと思いました。
是非、あちこちでやりたいです。タイアップしてイベントを主催して頂ける飲食店のオーナー様がいらっしゃいましたら、ご連絡ください!! カープファンの集まる店なら、絶対盛り上がりますよ!!