Category Archives: 未分類

ISUCON12の予選通過しました

このブログではとってもお久しぶりです。
最近は YouTubeチャンネルFantiaファンクラブ を始めたりしてみてます。 昨日 (2022-07-23) はISUCON12のオンライン予選でした。
今回もいつも通りのメンバー (@__math, @misodengaku, @chibiegg) で チームTakedashi として参加しました。
分担は明確には決めてないもののいつもの感じで以下の通り。

chibiegg (私) インフラ/デプロイ/プルリク管理/データ整備/コーディング
__math (まーす先生) コードリーディング/修正方針の検討/コーディング
misodengaku (みそでん) コードリーディング/ミドルウェアチューニング/コーディング

今回の予選問題は、 マルチテナントSaaS型 ISUCON 「ISUPORTS」 (eSportsではない) のリーダーボード (スコア表示画面) でした。
残り1時間でスコア表示が固定されたタイミングで5万点弱、1位と2位を独占してました (単なる表示上のバグです笑)。
この時点までの得点推移はこんな感じでした。
ISUCON12予選 スコアボードロック時点での遷移
この時点でこれ以上スコアを上げるのはやめて守りにはいり、再起動試験を行いベンチマークを実行。
再起動後の 17時22分 に 52957点(ベストスコア) を出したので作業完了としました。

先にまとめを書くと、今回は地道な下準備を5時間ぐらいやったおかげで最後の方にわかりやすく効果的な対策を入れることができたことが勝因だと思います。

5時間もデータクレンジングやプロファイリング、DBの載せ替えなんかやってスコアが全く上がらないと不安になりがちですが、その先の修正の見通しを信じて落ち着いて作業したのがよかったですね。
あと、いつものことですが3人の作業分担が完璧なのも重要です。

ここからは主にどんなことをしたか時系列で紹介しようと思います。
Read more …

SECCON CTF 2014 Online 予選 Write Up #6

他にもQRコードには手をつけていたのですが、最後まで解けず…

その一つがQR 200の、”QR (Easy)”

qreasys

なんと、パンケーキにQRコードが書いてある…しかも食べられてる!

しかし、大丈夫!QRコードは右半分に生データ、左半分にリードソロモンエラー訂正符号が入っているため、右半分あれば読める!

@misodenngaku が見える部分を画像にしてくれた。

qr200

これをQRコード、バージョン3の訂正レベルHの規則に従って、復元してみた。が、SECCONまでは読めたけどそこからがよくわからない…

qr200_numbers

Excelのbin2hexは8bitまでしか対応してないけど、Numbersならもっといけたので助かった。

もう一つが、QR 400の”BBQR”。バーベキューアールっていうネタ。

bbqrQRコードでBBQされている…焼く前に写真撮って欲しいものである。さっきとちがって、左半分が残っている。幸い制御情報がすべてあるので、バージョン3、訂正レベルH、マスクの種類もすべてわかったので、とりあえず綺麗な画像にしてみた。

bbqr_orig

リードソロモンで訂正するには何バイトかまだ足りない…というところであきらめた。

WordPressを速くするにはキャッシュしかない!

漸くわかりました。PHPを速くするのは限界があるみたいで、生成したHTMLをキャッシュしとくしかないみたいです。

で、Quick Cacheプラグインをインストールして有効にすると改善しました。

WordPress with Quick Cache

WordPress with Quick Cache

レイテンシ12ms、転送4msです。

ハードウエアのスペックでごり押しはだめですね。ちゃんとキャッシュできるところはしましょうってことです。

マイコン徹底入門

だいぶ紹介が遅くなってしまいましたが、大変便利な本なので紹介します。

いまAVRとともにメインで使おうとしているSTM32ですが、とっつきにくい原因としてはその莫大な周辺機能のせいで分かりにくいレジスタ。これはライブラリが用意されていているのですが、今度は資料が少ないためどうやって使えばいいのかわからない、ということにあると思います。

事実コンパイルして動作させるまでにかなりの時間を要しました。(ストロベリーリナックスで用意されているサンプルをmakeするだけならできたが動作原理が捉えにくかった)

それを解決する本が徹底マイコン入門(http://miqn.net/)です。実はかなり前に作者の方から相互リンクのお誘いを頂きリンクしておりました。

1ヶ月ほど前からホームページで90日間原稿全てをPDFで閲覧できる企画をなさっているので早速申し込みさせていただき、一ヶ月ほどこの本を頼りにSTM32をいじってきました。

プロジェクトの関係でなかなか時間が取れずレビューを書く事が遅れてしまいました。

で、この本の良いところはマイコン初心者に対しても細かな説明がされており、基礎から学習する(C言語はあるていど理解できているレベルから)のにも対応でき、さらに使いこなすようになってからもリファレンスとして使いやすい構成になっている点です。なかなか両方に対応するのは難しいところですがどちらから見ても便利だと思います。(特に後者については体感しました)

しかも、CANなどのマイナーどころはないにしてもSTM32のほとんどの周辺機能をカバーしており、さらによく使われるモジュール等(i2c液晶、フルカラー液晶やEEPROMなど)、の解説もありすごく便利です。

(かなりニッチな要望ですがCANの解説も欲しいです!)

是非とも発売されたときには部室と自宅に一冊ずつ欲しいなぁと。

近々STM32で作ったライントレーサーの動画をアップします。初めてPID制御にチャレンジしたのでかなりなめらかな動きとなっております。

ロボカップジャパンオープン2010

今日は後輩たちの日本大会決勝トーナメントでした。

結果は残念ながら7位で世界大会には進めませんでしたが、いろいろあったのにリーグ戦から決勝トーナメントに進出できたり、最終的には3勝4負とまぁまぁの成績だったので良かったかなと。

技術力で負けたのではないのがせめてもの救いかな、来年は1年間しっかり開発に使えるはずなので大丈夫かな。

P.S.

隣のクラブ(大阪大学鳥人間チーム)のサーバーがハッキングされたみたいです….うちもセキュリティーの確認しないと。

NHKの受信料と受信契約を考えてみた

よく扱われる話ではあるのですが…。どうしてNHKの受信料は払わないといけないのか、知的好奇心から検証してみることにしました。

先に断って置くとうちの家は受信料を払っています。

1.受信料未払い

まずはよく問題になっていた「受信料未払い」です。つまり、NHKとは既に受信契約を交わしている状態での未払いの場合を考えてみます。

AさんはNHKと「地上契約」を交わしているとします。この場合、当事者であるAさんは民法によりこの契約を履行する義務が発生します、つまり契約内容であるNHKの「日本放送協会放送受信規約」に従って受信料を払わなければなりません。これは法律で定められた義務にあたります。もしも不払いをした場合は債務不履行となり民法第414条に則って債権者であるNHKは裁判所に強制履行を請求することができ、民法第415条に則って損害賠償請求を行うことができます。

つまりまとめると、契約しているのに不払いをおこした場合はNHKは強制執行や損害賠償請求等の法的措置をとることができます

2.未契約

次に、受信契約すら交わしていない場合を考えてみます。

Bさんはテレビを購入し、家の屋根にアンテナを設置したとします。すると、NHKの人がやってきてこういうでしょう。「放送法で定められた義務ですからNHKに受信料を払ってください。」と。

NHKがいう放送法による根拠というのは放送法第32条にある「協会の放送を受信することのできる受信設備を設置した者は、協会とその放送の受信についての契約をしなければならない。ただし、放送の受信を目的としない受信設備又はラジオ放送(音声その他の音響を送る放送であつて、テレビジョン放送及び多重放送に該当しないものをいう。)若しくは多重放送に限り受信することのできる受信設備のみを設置した者については、この限りでない。」というものです。

「放送」とは一体何なのかという疑問もありますので、放送法第1条の1を読んでみると「「放送」とは、公衆によつて直接受信されることを目的とする無線通信の送信をいう。」とあります。ということはCATV等の有線はどうなるのかという疑問が湧きますがこれについては後で考えるとして、今はアンテナで受信する場合を考えます。

つまり、「協会の放送を受信することのできる受信設備」というのはアンテナとテレビのことと考えられます。アンテナが無くても受信はできませんし、テレビがなくても受信はできないのでこの2つはセットということになります。Bさんの場合はアンテナもテレビもあるので確かにNHKとの契約をする義務があります。

もし、契約せずに、NHKから訴えられたとすると考えられる最も悪い判決は「契約を締結し、テレビを設置してから現在までの受信料と「日本放送協会放送受信規約」によって決められた延滞利息を払え」というものでしょう。契約していなかったことに対する罰則はありませんのでこれが限度と思われます。ちなみにこの延滞利息というのは受信規約第12条の2「放送受信契約者が放送受信料の支払いを3期分以上延滞したときは、所定の放送受信料を支払うほか、1期あたり2.0%の割合で計算した延滞利息を支払わなくてはならない。」というものです。

しかし、よく放送法を読んでみると「ただし、放送の受信を目的としない受信設備(中略)ついては、この限りでない。」とあるので、例えNHKが映るテレビがあったとしても「民法しか見ない」のであれば契約する必要はありません。

つまりNHKを見る見ないに関わらず「受信料は払わなければいけない」とNHKがいうのであればそれに法的根拠はありません。ということは本当に民法しか見ないのであれば受信料は払わなくてもいいのです。(さらにいうとNHKが視聴者がNHKを見ていると証明するのは大変困難だと思われます…)

3.ケーブルテレビや光テレビ等の有線の場合

未契約の場合で触れたように放送法第32条によるNHKとの契約の義務があるのは「協会の放送を受信することのできる受信設備」を設置した場合です。前述したようにこの「放送」というのは放送法第1条の1により「無線通信の送信」ですから、「アンテナとテレビのセット」が「協会の放送を受信することのできる受信設備」です。ケーブルテレビを使っている場合はアンテナがありませんからそもそもこの「受信設備」を設置したことにはならずNHKを見ていたとしても契約の義務は発生しないことになりますから契約の義務はありませんし、契約していなければ受信料の支払いは必要ありません。

ここで注意しておかないといけないのはCATVだからといって契約していても払わなくてはいけないという意味ではありません。契約しているのであれば前述したように履行する義務がありますし、不履行の場合は法的措置もとられます。過去の東京地裁の判決においても契約しているのに支払わないのは認められないとしています。興味深いのはその理由として、「男性らは自由な意思に基づいて受信契約を結んでおり、解約の方法も事前に知ることはできた」としている点です。つまり解約していれば支払わなくてもよかったのに、ということです。

4.既に契約しているが、ケーブルテレビにする場合

今まで地上波でNHKを見ていたがケーブルテレビに加入し、アンテナを撤去する場合。

実はこれが興味深いのですが、「日本放送協会放送受信規約」の第9条には「放送受信契約者が受信機を廃止することにより、放送受信契約を要しないこととなったときは、直ちに、その旨を放送局に届け出なければならない。」とあります。つまり、アンテナを取り外すことによってNHKの放送を(無線で)受信できる受信設備がなくなる、即ち「受信機を廃止」した場合はNHKに届け出る義務があるのです。これは契約内容ですから履行する義務があります。さらに、第9条の2「放送受信契約の解約の日は、前項の届け出があった日とする。ただし、非常災害により前項の届け出をすることができなかったものと認めるときは、当該非常災害の発生の日とすることがある。」とあるように、この廃止届を提出すると同時に自動的に解約することになります。これも契約内容ですからNHKは断ることはできません。

ですからケーブルテレビに変える場合はNHKに届け出るのが義務であり、それと同時に解となり受信料の支払いも不要ということになります。

興味深いのは届け出るのが義務ということは即ち解約することが義務ということですね。まぁこの義務を果たさなかったとしてもNHKに損害はありませんから損害賠償請求もされませんが…

まとめ

テレビをアンテナで受信している場合で且つNHKを見る場合は契約する義務があり、受信料の支払いも必要。

テレビをアンテナで受信しているが、民法しかみない場合は契約する義務はなく、契約していなければ受信料の支払いは不要。

ケーブルテレビや光テレビ等の有線を使っている場合はNHKを見る見ないに関わらず契約する義務はなく、契約していなければ受信料の支払いは不要。

ということですね。ただしこれは一個人が興味で考察した内容であり、事実と異なる場合があります。この内容による如何なる損害も当方は一切の責任を負いかねます。

ホームページ「chibiegg研究ノート」開設

ブログだけで始めてきましたが、当初の予定でもあったホームページも開設しました。

chibiegg研究ノート:http://www.chibiegg.net/

ブログはほとんどメモのように記事を書いていますが、ホームページの方はもうちょっと纏まりのあるようにがんばります。

もちろんブログも続けていきますし、ノートにまとめるほどは進んでいない内容はブログに追加していきますのでどちらも見ていただけると喜ばしい限りです。

 

ホームページとブログもつくったので、トップページ(http://chibiegg.net/)も作らないとだめですね。まだ双方の移動手段があまりよろしくない点も改善したいと思います。

GCC4.3.3によるARMのクロスコンパイル

前回の記事でGMPとMPFRライブラリはインストールできたので、ARMのGCCクロスコンパイラを導入します。
Interface2008年11月号を参考にしています。
コンパイルディレクトリはソースディレクトリと同一で行うと次のようなエラーがでます。
Makefile:144: ../.././gcc/libgcc.mvars: No such file or directory
make[2]: *** No rule to make target `../.././gcc/libgcc.mvars'. Stop.
make[1]: *** [all-target-libgcc] Error 2
make: *** [all] Error 2

 

Read more …

LeopardにMPFRとGMPのインストール

OSX LeopardにARMクロスコンパイル環境の構築をしようと思い、GCCをインストールしようとしたのですが、MPFRとGMPをインストールするときにてこずったのでメモしておきます。

問題はCPUが64bitだったことでした。
GMPはオプションをつけずconfigureをかけると64bitモードでライブラリが生成されます。しかし、今のところMPFRは64bitに問題があるらしく両方を32bitにしなければいけません。そのときにつけるオプションが”ABI=32″でした。

このオプションをつけずにMPFRのcoufigureをすると、
checking for __gmpz_init in -lgmp... no
configure: error: libgmp not found or uses a different ABI.
Please read the INSTALL file -- see "In case of problem".

とエラーが出てしまいます。
Read more …