2016-04-15 授業日誌
1・2限
Java。2回目なのでまだ型とかそのあたり。あと拡張for文の話とか。最後に肩慣らしとしてユークリッドの互除法がレポートで出た。
3限
画像処理の授業の先生が出張なので、代わりに水曜日のマイコンの授業。IOポートというかペリフェラルというか、その操作の際のビット操作を少し詳しく。最後にブレッドボードにLEDを3つ配置してそれを点けて終わり。その後「昨日のアナログ回路の回路もうできた〜」とかちょっとおバカな遊びをやってみたw
2016-04-14 授業日誌
1・2限
アナログ回路の設計実習。これからしばらく、車のウィンカーのような(スイッチを押すとLED3個が少しずつずれて一定時間点灯する)回路を作れというミッション。CMOS ICのORゲートをコンパレータのように使い、単安定マルチバイブレータを使う。他はディスクリート部品のみで、抵抗とコンデンサで時間制御を行う。
CMOS ICのスレッショルド電圧付近をスイッチングのために使うということはこれまでやったことがなかったので新鮮。いろいろと考慮しなければならないことがあるので、なかなか進まず。少し放課後も使って、とりあえずLED1個分はできた。来週はもう少し頑張ろう。
3・4限
Linuxプログラミングの授業。昨日の続きでシェルの復習。まだシェルスクリプトにいかないので、説明を聞き続けるのはなかなか大変。そういえば普段Emacsを使わないので、行編集の際のショートカットはきちんと覚えていなかった。最後に確認テストがあり、手早く片付けた。
2016-04-13 授業日誌
1・2限
Linuxプログラミングの授業。まだ環境設定が終わっていないので、まずVirtualBoxへのUbuntu 14.04のインストールから。終わったらシェルの復習。シェル変数と環境変数の説明でさりげなく fork(2)
が意識されていて、(少なくとも自分は)分かりやすかった。
3限
ARMマイコンのプログラミングの授業。少し古いけれど、Texas InstrumentsのLM3S811評価ボードを使って進めていくらしい。初回なのでHello worldっぽくLチカ。ライブラリが分かりやすく作られていて、これくらいならArduinoとあまり変わらない。昨年度までのH8マイコンとはだいぶ違って楽でいいなぁ。
2016-04-12 授業日誌
1限
アナログ回路。先日のテスト、予想通りクラス全員ぼろぼろ(笑) というわけで、キルヒホッフの法則から丁寧に復習。
ホイートストンブリッジっぽいが平衡が崩れている回路、式は簡単に立てられるが計算は大変。余程のことがなければ、3つの連立方程式は変数を1つ消した方が楽そうに見える。
2限
経営学。教科書におもしろそうなトピックが結構並んでいるので、いろいろ調べながら読みたい。
3限
機械工学。といっても、先生が言うにはあくまで概論らしい。完全に門外漢なので、力学等の復習をしながら学びたい。昔の院試勉強でひと通りやった熱力学も入っているが、こちらではやはり熱機関の話になるのね。
4限
生産技術とか自動化の話。ヤマザキマザックのビデオを見て、きちんとラインを作れるのはすごいと改めて感じた。これまで小さい系を扱うことしかしてこなかったので、うまく動く大きな系を作ることにはちょっとした憧れがある。
2016-04-11 授業日誌
1限
通信プロトコルの話。TCP/IPと、あとアプリケーションプロトコルとしてSQLも扱うとのことで実践的になりそう。
今日はTCP/IPのレイヤーの話で、軽めの復習。来週はマスタリングTCP/IP入門編でも持っていこう。
2限
電子回路製作。最終課題はおなじみ技能検定2級の電子機器組立て。去年しょうもないミスで実技を落としたので、今夏取れるように頑張ろう。あとブレッドボードで簡単なディジタル回路の復習をやった。
3限
知的財産法。前の大学を含めて法律の授業は初めてなので、きちんと要点を覚えたい。
4限
英語。オランダからいらっしゃった先生がおもしろい。英語で先生へ質問、自己紹介と初回らしい内容。
2016-04-08 授業日誌
1・2限
Java。教科書は林晴比古本。識別子の命名で変な省略が見られて気持ちがよくないが、ある程度はカバーしているから入門ならこれくらいなのだろうか。クラス設計については書かれていない。
今回は開発環境構築とHello worldで終了。浜松校での総合制作の時間で習ったときと開発環境はまったく一緒だったので、安心感はある。
3限
OpenCVによる画像処理とかをやるらしい。教科書をパラパラ見て、だいぶ昔にやった線形代数を復習しようと決めた。初回なのでガイダンスとWebカメラの確認のみ。
HHVM 上で動かしている MediaWiki の二重 gzip 圧縮問題
スパロボ Wikiをはじめとするクリエイターズネットワークの MediaWiki は、1 月末から表示速度改善・負荷削減のため HHVM + Nginx で動かしているのだが、そのときから特定の環境で表示がおかしいという問題が発生していたようだった。手元の Firefox、Chrome(PC・Android)では一切発生しなかったので気づかなかったが、改めて確認すると IE と Safari で CSS が一切適用されないという問題が発生していた。
原因
原因を探してもなかなか見つからなかったが、開発者ツールを見ていると load.php によるスタイルシート読み込みの一部で変な文字化けが発生していた。本家の「ResourceLoader/Features#Resource: Styles」を見ると gzip 圧縮機能が含まれていた。このあたりが怪しいと思い、検索していくと以下のページがヒットした。
- php - How to disable Nginx double gzip encoding when fastcgi backend occasionally serves gzipped with content-encoding? - Stack Overflow
- HHVM always compresses output if Accept-Encoding: gzip is set, even if zlib.output_compression=Off is set · Issue #5316 · facebook/hhvm
どうやら HHVM と Nginx の両方の設定(HHVM については標準・省略時設定)により二重に gzip 圧縮されていたらしい。この場合、HTTP レスポンスヘッダの Content-Encoding ヘッダが gzip, gzip
という値になる。ここで厄介だったのが、Firefox と Chrome はこの値に対応しており圧縮されていたファイルが正しく展開されるが、IE や Safari は未対応で文字化けファイルと化してしまうということ。この挙動は予想できず対応が遅れてしまった。
対策
ではどうやって対処するか。調べると以下のコミットが見つかった。
片方の gzip 圧縮を無効にすると良いということだった。このコミットでは HHVM 側の gzip 圧縮機能を無効にしている。この他に、MediaWiki 側の圧縮機能を無効にすることもできる(「Manual:$wgDisableOutputCompression - MediaWiki」)。HHVM 側の方がカバーできる範囲が広いので、今回はこちらを選択した。サーバー用の hhvm.ini に以下を記述する。
zlib.output_compression = "Off"
これにより、手元の全ブラウザで正常に表示されることを確認した。
今回のメンテナンス、学校の関係で時間がない中行った結果、確認不足だったりすぐに対応できなかったりしたので申し訳ない限りなのだが、特殊な環境の一部でのみ発生する問題だったので、仮に早く見つかったとしてもすぐに解決できたか怪しい。HHVM 上で MediaWiki を動かしているところはほとんど見ないし、日本語の情報も一切ないので、こういう問題が発生したときの対処は結構難しい…
WiFi アクセスポイント化した Raspberry Pi に iPhone・iPad から接続できなかった問題を解消した
卒研で使う Raspberry Pi を「Raspberry PiをWi-Fiアクセスポイントにする」あたりを見て WiFi アクセスポイント化していたのだけれど、なぜか iPhone・iPad から WiFi 接続できなかった症状に悩まされていた。いろいろ試してそれを解消することができた。
症状
WiFi アクセスポイント化した Raspberry Pi に対して iPhone・iPad から WiFi 接続しようとすると、ユーザー名とパスワードを要求される。ここを突破できなくて WiFi 接続できない。
原因と対策
hostapd.conf の wpa_key_mgmt に WPA-EAP が含まれていたこと。wpa_key_mgmt=WPA-PSK
だけにしたら直った(WPA パスフレーズのみ要求されるようになった)。
hostapd.conf は /usr/share/doc/hostapd/examples/hostapd.conf.gz を改変していたものだったが、これの wpa_key_mgmt の例をそのまま使っていた。
EAP というのは IEEE802.1Xという規格に採用されている認証プロトコルらしい。RFC 3748 で規定されているようだ。