9/29

進捗報告

論文構成を検討した ( 4 sessions )

 論文に記載する内容を一通り書き出して,なんとなくの構成を考えることができた.これをもとに,もう少しかっちりと構成を作って目次としたいと思う.途中,WebUIの利用モチベーションをきちんと述べないといけない部分があるので,次のセッションで詳細に調べたいと思う.

 WebUIの利用モチベーションを調べると,法人の利用では,運用保守会社と利用会社で分けるみたいな利用があるらしい.個人の利用でも実家のルータを,遠隔地から管理してトラブルシュートをするというような使い方があるらしい.さらには,ルータに接続したUSBドライブを遠隔地から利用するというようなサービスもあり,これが脆弱性を発生させている事例があるらしい.

 利用のモチベーションを調べて,それを埋めて,大まかな構成を検討することができた.あとはこれを提出して意見をうかがうなどしたいところ.

 執筆スケジュールなどについても書いて,指導教員に提出した.後は返答を待つ.

セキュリティ機構の修正方針を検討した ( 30mins + )

 セキュリティ機構の開発に先日一区切りがついてきたところだが,検知遮断をきちんとやっていくうえでは,まだ問題がある.これをきちんとまともに使える検知機構にしていくためには,修正が必要なので,それをどのようにやっていくかを検討した.これもスケジュールを考えてやっていきたい.

VPS環境を整備した ( 30mins + )

国勢調査に回答した

 国勢調査の案内側舞ってきたので,回答した.そこまで時間はかからなかった.サクサクとマウスで選んで回答するだけ.

生活面

朝7時半起床.おおよそ7時間半睡眠.十分な覚醒度を得た.

朝は軽めにホットサンドを食べた.朝食の欠食を極力なくしていきたい.

昼は丼ものと飲み物で,軽めに食べた.ヨーグルトも食べれたのはいいことだ.

夜は,朝のホットサンドの残りと,うどんを食べた.あんまり元気じゃないので,軽め.




9/27

 進捗報告

Variableの機能を拡張した ( 1 session + 50mins )

 昨日作成したcookieの値の取得の部分のコードを書いて,それぞれのテストを書いて,想定通りに動いていることを確認できた.これにて,cookieについては完了なので,次にURIのRAWの方の値を取得できるようにしているところ.pathとWEBUIからドメインを再構築してその値を持っておくことで,Variable側で取得できるようになるはずだ.コード自体はかけたので,次のセッションでテストする.

 URI_RAWのテストを書いて,期待通りに値がセットできていることが確認できた.また,VariableのPicker側の方のコードも書いて,そのテストも通過できるようになったので,これにてURIのコードは完成.

 Variableの機能拡張がかなり長らくかかったが以上で,この作業は完了とする.main branchにマージして,次の計画を練る.

買い物に出かけた ( 2 sessions ) 

 夏休み期間中に続けていたセキュリティ機構の開発が一旦,一区切りがついたので,出かけた.明日大分に戻るので,この夏何度も出かけた店にまた訪れたりした.今年の夏は主に日向方面の店に足繁く通った.本屋とか,スーパーとか.非常に長い夏休みだった.そこまで穏やかではなかったが,昨年よりは落ちついて創作活動に取り組めた気がする.次はタスクを抱えていない状態で戻ってきたい.

本読みをした ( 1 session + )

生活面

9時半起床.おおよそ8時間睡眠.十分な覚醒度を得た.

昼は,米,シャケ,とんかつ,ひきわり,サラダでバランスよく食べれた.

夜はすき焼きをした.結構ボリュームがあったが食べれた.

買い物の先で2時間くらい歩いたので,これによって十分な運動量を稼ぐことができた.

9/26

 進捗報告

Variableの拡張を進めた ( 3 sessions )

 ファイル名や相対ファイルパスの格納までがうまくいったので,それに対するテストを作成し,テストが無事にパスすることを確認した.Variableのpickerの方でもこれらの変数をバッファから取得できるようにして,これらについてもテストを作成して,期待通りに動作することを確認した.今は,クエリストリングのパースをするためのプログラムを書いている.基本的には&でクエリを切り分けて,=によって,keyとvalueを取ってきて,ARGSに投げ込んだらいいと思っている.次のセッションでもこの作業を続けていく.

 クエリをパースするプログラムを書いて,テストケースを走らせて,期待通りの処理結果が得られることを確認した.ARGS_GETについてはVariable側ではすでに処理が出来上がっていたらしく,新たに作成する必要のある部分はなかった.クエリの次は,cookieの値をパースするプログラムが必要なので,それを書いている.容量はクエリストリングと似たようなものなので,似たようなコードを書いて,テストしていきたい.

 Cookieについてパースする関数を書き足して,それに対するテストも作成し,期待通りにCookieの文字列をパースして,バッファに値がセットされていることを確認できた.愚直に値を持つとバッファがごちゃついてしまうので,cookie用に新たに構造体を拡張する必要があった.さらに,VariableのPicker側でも,これらを拾い上げるコードも書いた.今はそのコードをテストするためのテストコードを作成しているところ.次のセッションでは,このテストコードを完成させて,Cookieの値が入らなくなった時にメモリを解放するための機能を書き足していきたい.

散髪に行った ( 1 session ) 

 だいぶ髪が伸びていたので,散髪に行った.散髪屋のおばさんの凄まじいマシンガントークを聞いて,髪がさっぱりした上に,おばさんの家庭事情にも非常に詳しくなった.とにもかくにもメガネとか,ヘッドセットをする時に邪魔だった横髪が減って,非常に快適である.


生活面

10時起床.おおよそ8時間睡眠.十分な覚醒度を得た.

昼は米,味噌汁,シャケ,サラダでバランスよく食べれた.

散髪の復路を歩いて帰ったので,これによって十分な歩行量を稼ぐことができた.

9/25

 進捗報告

物件情報を調査した ( 1 session )

 来年度から居住する地域をなんとなく決めようとして,物件情報を色々とみることができた.価格のレンジは結構広めで,下は2万円弱からある.リモートワークがそこそこに発生するので,仕事部屋と生活部屋を分けようと思っているが,どのようなスタイルにするのかについては,あまり明らかで無い.

Variableの機能を拡張した ( 3 sessions )

 昨日書いていたPostIteratorの処理をテストすることができた.どうやらライブラリの実装の問題でJSONでデータが渡っている場合には当該コールバッグが動かないみたいである.別のデータ形式で送信してみるときちんと期待通りの動作をしていることが確認できた.編集内容をコミットして,次はクエリストリングへの対応を始めた.クエリストリング自体を編集する必要はないので,取り出してきたらパースして,値をARGSにセットしていくだけ.クッキーに関しても同じような処理になりそうではある.

 クライアント側のプロキシのコードを整理して,クエリストリングを取る処理やファイルパスを取る処理をする関数をクライアント側に移してきた.これによってvariableのpicker側でガチャガチャと文字列を触ってクラッシュさせるというリスクを低減できた.次のセッションでも引き続きクエリ周りを扱うコードを書いて,できればテストまでいきたい.

 クエリストリングを抜き出してくるコードについてのテストケースを作成して,コードが適切に動いていることを確認できた.また,クエリストリングを除いてファイル名だけを残す関数がまともに動いていないことが判明したので,書き直して,これについてもテストを書いて,きちんと動いていることを確認できた.今は,ファイルパスから,ファイル名だけを抜き出してくる処理を記述しているとこ露である.次のセッションでも同様の作業を続けて,テストを実施するところまでやりたい.

生活面

10時起床.おおよそ8時間睡眠.十分な覚醒度を得た.

昼はホットサンド,ミネストローネ,鶏皮,サラダでバランスよく食べれた.

夜はシャケ,米,納豆,以下の焼き物,サラダでバランスよく食べれた.

9/24

 進捗報告

Variableのコードを拡張した ( 4 sessions  )

 昨日からVariableのコードを拡張していて,今日はVariableの中で一番目立つARGSを実装している.ARGSはARGS関連のVariable同士で微妙に取れるところが違うという,少し複雑なVariableなので専用の構造体を抜きに作ると複雑になってしまうと考える.そこで新しく構造体を作り,初期化関数や,値のセットをする関数,パースをする関数などを作る必要がある.今はその辺りの道具を揃えているという段階.次のセッションでも引き続き,ARGS関連の関数を設計していく.

 さらにコードを書き進めて,ARGS関連のユーティリティを書いて,Variable picker側でこれを拾い上げるための処理を書くことができた.今は,これに対するテスト用の関数を書いていて,POSTについては問題なく動いていることが確認できた.次はGETについてて書いて,その後にARGS全体について書く.次のセッションでもテストを引き続き書いていく.

 テストコードを書いて,ARGS関連の関数が適切に動作していることが確認できた.次はこのセット用の関数を使って,client proxyが値をセットできるようにコードを書き進めていく.

 クライアントプロキシ側でARGSの値をセットするためのコードを書き足した.これによってひとまずはPOSTデータに関しては,値がセットできているはずである.これをテストするために初めてクライアントプロキシについてテストを書いて準備する予定で,そのためのコードを書いている途中である.次のセッションでは,このテストコードを完成させて動作を確認し,クエリストリングのパースもできるようにする予定である.

 Post Iteratorの動作を確認しようとしたが,どうやら,そもそも該当するコードが実行されていないように見える.調べてみるとどうやらPost Processorの定義の仕方ががあまりよく無いということらしい.これは修正が必要.ちょっと詰まったので,別のことをしようと思って,ルールのオペレータの否定演算に対応することができた.また,複数文を拾ってきた場合の演算にも対応した.これが動くのかどうかテストできていないが,明日のテストでここも含めて確認したい.

内定式準備 ( 1 session )

 内定式の研修で使う事前課題をこなすことができた.時間がかかるものだと思っていたが,やり始めたら割合すんなりと書くことができた.まだ,本番までに時間があるので何回か見直すなどしておくと良いだろう.

生活面

朝10時起床.おおよそ7時間睡眠.十分な覚醒度を得た.

昼は,チャーハン,ピーマンの炒め物,ほうれん草の和物,鶏皮とで,ボリュームがあったが食べれた.

夜は,生ハム,米,麻婆どうふ,キャベツの和物であっさり目で食べれた.夕方に鮭も食べたから,それも含めると結構食べてるかも.

9/23

 進捗報告

睡眠の本を読み切った ( 1 session ) 

 睡眠リテラシーを高めるために睡眠の超基本を読み切った.ここ数日で睡眠環境は改善してきていて,夜間の電気を薄暗くしたり,夕方位以降のカフェインを避けたり,寝る時にアイマスクをしたり,していてる.そして,寝れない時に布団に居続けるのもよくないということなので,布団に入って20分くらい寝れなかったら布団から出るようにしている.こうした改善の効果もあって,徐々に入眠はスムーズになってきているような気がしている.今後も,睡眠の改善を続けていく.

メモリエラーの解消をした ( 5mins )

 昨日の夜に発生したメモリエラーの出所の検討がなんとなくついていたので,そこのコードを少し変更したら,システムはクラッシュしなくなった.今回の修正は僅か5分で完了.すばらしい.

取得できるVariableを増やした ( 1 session +  ) 

 これまでは1個のデータだけを返してくる実装をしていたのだが,複数個のデータを一度に返せるようにVariableを拡張できた.これによってRequest headerの名前一覧をまとめて返したり,headerの保持する値をまとめて返したりができるようになった.テストも通るようになって,ヘッダ周りはかなり幅が広がった.今は,file_namesやfile_basenameを取得できるようにコードを書き進めている.このためにはクエリストリングを取り除くためのコードを書かないといけない.次のセッションでも引き続きこの作業を続けていく.

買い物に行った ( 2 sessions )

 昼間に買い出しの用があったので,ついて行ってニトリやトライアル,ミスターマックスなどを見て回ることができた.家具や,電化製品,文房具などをかなり見て回ることができた.来年の新生活もあるので,どのような部屋を目指すのか,レイアウトを考えたりしてみると良いと思う.

UnityのVCSについて勉強した ( 1 session + ) 

 Best practice for organizing a Unity projectを読み進めることができた.最初のうちはUVCSの基本的な用語の整理があり,リポジトリの管理方法などについての説明があった.今は,ファイル構造についての説明を読んでいる途中である.

生活面

10時起床.おおよそ8時間睡眠.十分な覚醒度を得た.

昼は鮭,米,味噌汁,卵焼きであっさり目で食べれた.

夜はハンバーグ,ピーマンの炒め物,鶏皮,ブロッコリー,米,おから,でかなりボリュームがあったが,バランスよく食べれた.

買い出しに行った先で3時間ほど歩いたので,これによって十分な運動量を稼ぐことができた.


9/22

 進捗報告

Checkerのコードを修正した ( 4 sessions )  

 request bodyに関するコードを修正することができた.どうやらリクエストをx-www-url-encodedの形式に直すコードに問題があり,データが適切にバックエンドに届いていないという問題があった.しばらくコードを書き直して,最終的にバッグエンドと適切にワンラリーができるようになったので,この問題は解決.色々な機能が揃ってきて,あとはvariableをきちんとハンドリングすることが大切になってきたので,次のセッションではvariableのコードをどんどん書き足していく.

 さらにコードを書き進めて,variableのrequest lineとquery stringを取得するためのコードを書いて,テストを通すと頃まで実施できた.今は,クライアントのIPアドレスを取得してバッファにセットするための関数を書いているところで,どうやらlibmicrohttpd側のconnection infoの中にその情報が入っているらしいので,それを抽出して文字列に変えてからバッファに書くようにする.次のセッションでも引き続きこの作業を進めていく.

 IPアドレスの抽出のコードを書き進めて,なんとなく完成系が見えるくらいのところまできた.connectionの情報をstruct sockaddr_inの形で抜き出せるので,ここからIPアドレスを得る.ただし,このままではアドレスが文字列型にならないので,inet_ntopという関数を使って,これを文字列に変換する.次回は,このコードが正しく動いているかテストしたいが,libmicrohttpdの構造体の中にあるものは,テストをセットアップするのが面倒だ.テスト用のConnection構造体みたいなのが作れればいいが,それも含めて次のセッションで考える.

 IPアドレスのコードについてテストをして,きちんと動作していることが確認できた.また,他にも,バージョンやボディについてもvariable_pickerの方できちんと拾って来れることを確認できた.ただ,テストの過程で,何か値をポストすると領域不足でクラッシュすることがあることに気づいた.明日はこの問題に対処するところからスタートする.

自己分析に対応した ( 40 mins )

 性格診断的なやつをやりなさいということだったので,ようやく対応した.SPIみたいな問題をまた解かされるのかと思っていたが,やってみたら性格診断だけだった.この手のアンケートに人間の性格をはかれるのかどうかについては疑問だが,兎にも角にも一つ作業が片付いて良かった.

生活面

11時起床.おおよそ9時間睡眠.高い覚醒度を得た.睡眠スケジュールが多少狂ってしまったが,そろそろ負債を返し切るくらいだと思うので,今日からまた目覚まし時計をかけて,寝るようにしたい.

昼は鮭,米,味噌汁でバランスよく食べれた.

夜は秋刀魚,米,小松菜炒め,味噌汁でバランスよく食べれた.おやつで栗食パンも食べたので,夕方以降は割とたくさん食べたことになる.

9/20

 進捗報告

Checkerの修正作業を進めた ( 1 session + 30mins ) 

 出発前に詰まっていたACの部分をデバッグすることができた.原因はregexのところとやはり同じのような物で,同じような作業をすることで直すことができた.これで,ルールが発火するかどうかの判定については全ルール分実施することができた.あとは,検査対象の文字列の取得のバリエーションを増やしていきたい.あとは,responseのbufferがリークしていて,かなり無駄になっているので,この部分を修正したい.次のセッションではresponse bufferのリークをなんとかしていく.

 レスポンスバッファのSIGSEGVを修正することができた.しかし,今までは,最後の処理がSIGSEGVで落ち続けていたので,メモリリークが報告されていなかったようであり,実は大量のメモリリークがあるということが判明した.なので,全体で換算すると90MB程度がリークしていて,組み込み機器では無視できないリーク量なので,修正が必要である.次のセッションでは,全体のメモリリークを見直して原因を調査していく.

睡眠リテラシーを高めた ( 1 session ) 

 睡眠の超基本を読み進めて,睡眠リテラシーを高めることができた.chapter3を読み切って,次はchapter4を読んでいる.前に一度読んだが,復習も兼ねてもう一回読んでいく.この本を読んで,だんだんと生活リズムを矯正してきている.

買い物に行った ( 2 session ) 

 かなり重荷だった作業に一区切りがついたので,息抜きに買い物に行った.ドラモリとイオンを回った.イオンのホームセンタにはかなり長い時間いた.

生活面

10時半起床.おおよそ9時間睡眠.ここ数日の睡眠負債をきちんと返すことができた.また,睡眠のパフォーマンスもそこそこ高かったと感じる.

昼は米,スープ,玉子焼き,サラダであっさりと食べれた.

夜は豚しゃぶ,オクラ,納豆,米,エリンギのバター炒めで,バランスよく食べれた.

9/17

 進捗報告

Checkerの調整作業を進めた ( 2 sessions + 40mins )

 regexの処理をparseのフェーズに移行することができた.これによって,regex patternsを実行時にコンパイルする必要がなくなるので,実行時間が短縮されるはずである.この作業は一発で成功した.難航する可能性もあったので,良かった.また,昨日の作業をcommitすることができた.これで,大分でも作業の続きができそうだ.regexについてはResponseのphaseでクラッシュするという問題があった.この原因を調査するとphase4でbinary dataが渡ってきた時に文字列終端を発見できないために,クラッシュするらしい.これについてはデータ長さを与えることで,なんとかなりそう.次のセッションではこの問題に対応する.

 データサイズをきちんとvariableのデータと合わせて提出する形にして,これをつかってregexのマッチングをするようにしたら,クラッシュせずに全てのマッチングをこなせるようになった.さすがにresponse bodyはデータ量が大きいからか,多少のもたつきを感じるが,もっと小さなWebサイトならそこまで問題にならないだろう.ただし,最後にacがregexと似たような問題でこけるようになった.今回はBuildACではなくて,parallelmatchingのほうだ.次のセッションではこの問題に対応する.最後のphaseで,ACのこの問題.結構ラスボス感がある.

 研究室の環境で試験をするために,研究室のWSLにOWASP Juice shopを入れようとしたら,npmがエラーを大量に出力して結局うまくいかなかった.ということで,ctfdを入れてみたところ,今度は見たことのない挙動をしてしまう.原因はよくわからないが,もう日も暮れたので帰ることにする.次のセッションでは,OWASP Juice shopの導入をする.それからWSLがあまりにも不安定なので,開発用のvpsを借りようと思う.

大分に移動した 

 大分のほうに用事があったので,特急に乗って大分に移動した.前日入りによって余裕を持てるのは非常に良かった.移動後にかつての研究室メンバーと再開することができた.なかなか元気にやっているようであって,良いことだ.

人工知能の勉強をした ( 1 session + 30mins )

 明日は人工知能関連の講義のTAをやることになったので,付け焼刃ではあるが,人工知能の知識をつけておこうと思って,特急でゼロから作る Deep Learningの2章と3章を読んだ. これによってパーセプトロンとニューラルネットの概念を復習することができた.学習に際してのポイントなどについては,より後の章に書いてあるので,帰宅後に読んでしまいたい.


生活面

朝8時半起床.おおよそ6時間睡眠.十分な覚醒度を得た.

昼は餃子と米,みそ汁でバランスよく食べれた.


9/16

進捗報告

Checkerのコードの調整を進めた ( 4 sessions + ) 

 setvarの文字列処理がらみのメモリエラーを解決することができた.また,数値代入の時の最後にこける問題についても原因を特定して解決することができた.これで,このアクションについての問題はしばらく大丈夫だとは思う.もう少しハードなテストケースも準備したいところだが,今はパフォーマンスの問題があまりに顕著なので,次のセッションで少しこの部分に手を入れてみる.

 パフォーマンスの問題を改善するために,ツリーの構築や正規表現のコンパイルに関する処理を全てパーサ側に持ってくるようにした.このためにコードをあちこち書き直すことになった.ただし,実際に動かしてみるとacのツリー構築の失敗関数の構築がメモリエラーを起こしているらしい.この問題はツリーのコードをもう少し細かく追わないと修正できない気がする.次のセッションではこの問題をもう少し細かく観察して,テストケースについても増強していく.

 ACのコードを見直したところインサートするところの処理が,おかしいことに気がついた.一文字がヒットするだけで文字列全体がヒットした扱いになっているらしい.先日GPTに相談して,指摘されて,確かにそうかと思って修正したのだが,元実装の方が正しかった.とはいえ,元実装の方はかなり意図の伝わりづらいコードだったので,元実装の意図を汲み取れなかったのは普通.次のセッションでは,この部分を書き換えていく.

 コードを見直したのだが,どうも釈然としない.FFのコードを無効にすると,とりあえずは動くので,できれば有効にするということで,進めていくことにする.FFのことを考えなければ,ルールの読み込みから実行までにかけてとりあえずは動くらしい.ユニットテストを見る限りマッチングも適切にできていそうではある.


買い物に行った ( 1 session ) 

 所用で大分に帰る必要があったので,特急の切符を取りに駅に行った.そのついででスーパーにいって,色々みてきたりもした.


生活面

11時起床.おおよそ9時間睡眠.高い覚醒度を得た.入眠に関してもそこまでの困難さがなかった.

昼はうどんを食べた.キウイフルーツと合わせて,あっさり目で食べれた.

9/15

 進捗報告

チェック機構のデバッグを進めた ( 5 sessions +  )

 チェック機構のオペレータのデバッグを進めて,メモリエラーをなんとか解消することができた.これによって,フェーズ1に関してはチェックをかけながらページをロードすることができるようになった.それはそれで非常に良いことなのだが,現状の実装では初期設定のフェーズでやるべき処理が実行時に回っている部分があり,ページの読み込み速度が非常に遅くなってしまう.そのため,処理の移動を次のフェーズに実施したい.そして,テストケースも修正する.

 setvarのコードを見返したら,文字列を全くうまくハンドリングできていないことに気がついたので,書き直している.おそらく途中で,別のタスクに移ってしまって,未完成のままに次の作業に進んでしまったのだろう.テストケースも一部に対してしか書かれていない.次のセッションではこの部分の書き直して,テストするところまで進みたい.

 さらにsetvarのコードを書き直して,代入の式の左右を別々に取得するように書き換えることができた.このコードによって文字列がきた場合でもハンドリングできるようになるはずだが,まだテストしていないので,次のセッションで検証したい.

 setvarのコードのテストをしてみて,コードにミスによってメモリエラーが出たりしているのを確認した.原因を特定して,この部分を治すことができたが,大規模な書き換えの結果以前動いていたコードが動かなくなってしまった.次のセッションでは,この部分を直していく.

 問題の原因を調査したところ,代入時の型の指定が間違っていたことが原因だった.これによって前述の問題は解決され,文字列のtokenizeについてもきちんとできることが確認できた.ただし,文字列の写しがうまくいかない.このためには片方をダブルポインタにしないといけない.この作業を次のセッションでやっていく.

生活面

昼はおにぎり,味噌汁,鮭で軽めに食べた.夜はスペアリブ,米,春雨スープ,納豆でバランスよく食べれた.夕方に地区を一周歩いていて,コンビニにも行って,十分な運動量を稼げた.


9/13

 進捗報告

睡眠のメカを勉強した ( 2 sessions + )

 ニコニコのポイントが余っていて,9月末で失効するので使いきれという通知が来た.これはBookWalkerという外部サービスと連携して使えるということなので,講談社ブルーバックスから刊行されている睡眠の科学を買って読んでみている.

 睡眠にはレム睡眠とノンレム睡眠があり,これらには別種の役割があることが知られている.ノンレム睡眠では,脳活動が同期的になり,レム睡眠ではバラバラに活動する.レム睡眠では,感覚器からの入力は低減されていて,脳内の内的な刺激で覚醒状態に近いレベルで活動している.ノンレム睡眠では,外部からの刺激はシャットアウトされている.

統計学の勉強を進めた ( 1 session + )

 はじめての統計学の第6章の練習問題を解き終えることができた.これで6章を突破.t分布を使った区間推定や点推定の方法についても,ある程度練習を積むことができた.サンプルサイズをどの程度必要かという話題も出てきて,結局は誤差をどの程度許容するのかによって変わってくる.誤差をεに抑えたいときは,だいたい(zσ/ε)^2程度のサンプル数を確保すれば良いということだった.次のセッションからは第7章に入ってくる.次の章はχ2検定を扱う.

ACのコードをデバッグした ( 2 sessions )

 ACのコードがルールファイルを与えることでなぜかSIGABRTを引き起こすという問題があるので,それのデバッグを進めることができた.デバッガで回してみて,とある入力によって,ある関数がコケるという部分までは特定できた.ただ原因は依然として不明.次のセッションで,この入力をさらに注意深くみていきたい.

 さらにACのコードをチェックすると,メモリの取る量を1 byte分間違えていて,それで境界外の書き込みをやっているのが問題だった.これを直して,さらに,ワードの追加であったバグも修正して,長らく放置していた問題を解決できた.


生活面

11時起床.おおよそ8時間睡眠.十分な覚醒度を得た.

昼はとんかつ,米,味噌汁,サラダでバランスよく食べれた.

夜はビーフンとチキンできちんと食べれた.

夕方にマルイチまで90分くらい歩き,これによって十分な運動量を稼ぐことができた.


9/11

進捗報告

Bufferの要素取得の実装を進めた ( 2 sessions + 40mins )

 Bufferの要素取得の実装を進めることができた.これによってリクエスト側の要素取得を色々とできるようになってきているが,レスポンスとは一転してリクエスト側は取得が非常に多様になっていて,まだまだ実装量が全然追い付いていないという感じ.ひとまずは型枠だけ取ってしまって,それから中のものを一つづつ実装していこうかという感じ.場合によっては,構造体自体の仕様にも手を入れることになるかもしれない.

 実装を進めて,型枠を取り続けた.もう少しで型枠は取れると思う.Buffer類のメモリリークが途中で気になって,これを直し始めたのだが,完全には治せなかった.インタフェースのポインタの扱いが間違っているかもしれない.

 さらに実装を進めて,リクエスト側の型枠を大体取ることができた.バッファ類の変更によって,テストが通らなくなるという事態があったが,これについても修正した.ヘッダなど一部についてはリクエストをすでに取得することができるはずだが,他にも色々取り方を実装しないといけないので,次回以降のセッションで一つづつ実装していきたい.

設定ルールを個別に読み込むように変更した ( 1 session ) 

 設定ファイルとセキュリティルールが,今までは混在した状態で読み込まれていたので,それらが個別に読み込まれるように変更した.まずはconverterのコードを変更して,設定ファイルとルールファイルを別のファイルに出力するようにした.加えて,データファイルについてもここでコピーをかけることにした.pythonのファイルコピーにはshutilという便利なものがあり,これを使うことでデータファイルのコピーはスムーズにできた.それができたら今度はparser側のコードに設定ファイルを読み込むための機能を付け足して,今までのparsing関数では新たに追加されたデータファイルを無視するように修正した.これらをmain側で呼ぶようにして,最終的にこれらのファイルが個別に読まれていることを確認できた.

統計学の勉強を進めた ( 1 session + )

 統計学入門を読み進めて,第6章を突破することができた.第6章は色々な仮設検定手法を紹介するというもので,その計算の詳細には立ち入らなかったが,様々なシチュエーションでどの検定手法を選べば良いかということを勉強した.1標本では,ある母平均を仮定してt検定を実施するなどが可能.2標本同士の比較でもt検定などが実施できる.この際,等分散性と正規性を確認することが必要だが,どちらもそれを検定する手法があるということだった.しかし,仮説検定では中心となるある一点を帰無仮説に置かないといけないという都合上,正規性をもつことや,等分散であることがその1点になってしまい,検定で正規性を持たないという対立仮説に対して帰無仮説を棄却できなかったとしても,その帰無仮説自体をサポートすることはできないから,それらを積極的には主張できないという問題があった.3標本以上では,分散分析や多重比較があった.分散分析はF値を元に検定をする.多重比較には,それぞれの標本同士を比較するTukeys' Testや基準の群を設定してそれと他の群を比較する Dummes' Test,右肩上がりになっているかを検定するWilliams' Testなどがあった.分散分析から多重比較に移っていく流れが多いが,結果が食い違うときはむしろ多重比較のみに絞った方が良いということだった.

生活面

12時起床.おおよそ7時間睡眠.十分な覚醒度を得た.

昼食はうどんを食した.割合あっさりと食べれた.

夜はチャーハン,チキン,納豆,切り干し大根でバランスよく食べれた.


9/10

 進捗報告

Bufferの要素取得を実装した ( 3 sessions )

 レスポンスバッファから所望の要素を拾い上げてくる処理を実装することができた.ルールセットを見返してみると,レスポンスに関しては色々な部分を取ってくるという感じでもなかったので,そこまでコード量を書かなくても実装がある程度形になった.リクエストについてはもう少し色々な部分を取ってきたりするので,工夫が必要.次のセッションではレスポンスの処理を一旦テストして,それができたらリクエスト側の要素の拾い上げにも対応していく.

 さらに書き進めて,レスポンス側のコードのテストケースを作成し,意図通りにコードが動いていることを確認することができた.途中でSIGSEGVが何度か起こったので,デバッグ作業が発生したが,テストによっていくつか修正点を見つけることができたので良かった.次のセッションではリクエスト側の処理を書き進めていく.

 リクエスト側ではリクエストラインを再構築できるように書く必要があるので,それに対応していた.途中で,proxyが通信を通過してくれないという問題が発生して,デバッガが途中で全く関係ない部分を指摘してくるので大変混乱したのだが,読み込めていないファイルがあることが原因だった.それから,bufferが解放されていないことによるメモリリークにようやく対応した.これでテスト実行後の大量のaddress sanitizerの出力を消し去ることができたので,いい感じだった.

9/8

 進捗報告

統計学の勉強を進めた ( 4 session + )

 統計学入門を読み進めて,確率分布や推測統計の基本的なアイデアを復習することができた.推測統計では,母集団を何らかの確率分布とみなし,得られた標本から母数を推測する.この際,全くのゼロから推測を始めるのは難しいので,通常は数学的な確率分布に母集団が近似すると仮定してから話を始める.標本を抽出する際には完全なランダムで値を抽出することが望ましいが,それが難しい場合には,層別に値をとったり,クラスタごとに値をとったりする.

 さらに同書を読み進めて,信頼区間の概念について学習した.ある値から標本平均を計算すると,それと母集団の真の平均には誤差があることになる.これを標本誤差という.標本誤差の分布については,中心極限定理によって,その分布は正規分布に近似され,サンプルサイズが大きい時には標本誤差は0に近づくことが知られている.このことから,得られた値から,0から±2σの区間を計算すると,その区間に95%の確率で真の平均値を含んでいることが期待できる.なお,サンプルサイズが十分に大きくできないケースでは,標本誤差はt分布に近似されることが知られており,こちらを使うケースも多い.

 それからまた読み進めて,仮設検定の基本的な流れと過誤について学習できた.t分布を用いた検定では,まずは分散を計算して,それを元にt値を計算する.そのt値が得られた標本間の差ということになるので,これを元にp値を計算して,それが有意水準を下回っているかどうかを確認する.下回っている場合には統計的に有意な差が見られたと言えるし,そうでなければ統計的な有意な差は見られなかったということで,帰無仮説は棄却できない.統計的検定がミスするのは2種類のミスがあり,帰無仮説が正しい場合に,帰無仮説を棄却して対立仮説を採択してしまう第1種の過誤と,対立仮説が正しい場合に帰無仮説を棄却できない第2種の過誤とがある.


生活面

10時半起床.おおよそ8時間睡眠.十分な覚醒度を得た.

昼はビーフンを食べた.野菜多めで,ボリューミーだったが食べれた.夜は卵焼き,豚しゃぶ,米,納豆でバランスよく食べれた.

夕方にスーパーやドラッグストア,100均の中を1時間以上歩き回った.また,作業時間の合間の休憩時間に椅子を持ち上げたりして,これによって運動量を稼げた.

9/6

進捗報告

A* pathfinding projectを試してみた ( 3 sessions )

 A* pathfinding projectのfree版を導入することができた.Pro版はAsset Storeにあるのだが,Free版は公式サイトでpackageデータを落としてきて,自分でローカルから入れる形式になっているようだ.あとは,これの使い方を学ばないといけないので,ドキュメントを読んでいる.次のセッションでもドキュメントを読んで使い方を勉強していく.

 ドキュメントを読んで,Unity上で試しにscanを実施するところまでやってみた.Tilemapの設定をして,A*のPathfindingのコンポーネントを付与したGemeObjectをマップに合わせてScanをすると,青線が引かれて,移動可能な経路の大枠が作られたらしい.次のsessionでは,試しにAIPathを付与したコンポーネントを配置して,ターゲットを置き,経路が計算されるかを試してみたい.

 試しに必要なコンポーネントをアタッチしたりしてみたが,プログラムがエラーを吐いてゲーム全体が落ちてしまう.どうやら,アップデートをかける関数が古いプロトコルをで通信をしようとしてUnity側がそれを落としてしまうらしい.どうせプロ版へのアップデートはしないので,update用のスクリプトに直接手を入れて,アップデートにまつわるところをコメントアウトして回ったら動くようになった.で,経路はどうもいい感じに計算されているので,これを使って,動き回るためのスクリプトを書いていきたい.どのようなデータ型で経路が保持されるのかは要調査.単方向リストか配列ならとても都合が良いのだが.スピードはどうするのか?

Redditのアカウントを作り直した

 なぜかRedditの僕のアカウントが永久BANを食らっていたので,アカウントを作り直した.紐づけただけで投稿がないアカウントというのはspamと間違われやすいのか,知らないが迷惑な話ではある.ついでなので,興味のある板をフォローしたり,アバターを真面目に作ったりしてみた.

Checkerのルール適用のコードを書き進めた ( 1 session ) 

 Checkerのルール適用のコードがphase1の分しか書かれていなかったので,別のphaseでも使えるようにコードを拡張した.この作業の結果phase 2,3,4,5でも同じ関数を実行できるようになった.また,SecRuleだけでなく,SecActionについても実行できるようになった.途中で,responseの引数の値を打ち間違えていたことでSIGSEGVが起こっていたが,最後の1分でミスに気づいて修正できた.これで一旦統合の作業は完了か.mainにmergeして,次の開発用ブランチを作ろうか.


ゲーム開発会議に参加した ( 1 session )

 ゲーム開発会議に参加して,今週の進捗状況について色々と報告することができた.向こうの進捗も聞いたが,序章のストーリーが少しづつ形になっているようで,いい感じだった.こちらも今週は新しいスクリプトを入れたりして,動きが増えたのが良かった点.

生活面

10時半起床.おおよそ5時間睡眠.それなりの覚醒度を得た.

昼間はハッシュドポテトなどを軽めに食べた.

夜は春雨スープを食べた,非常にあっさりでいい感じだった.

9/5

 進捗報告

Checkerのコードを修正した ( 4 sessions  )

 Checkerが実際のルールを読ませるとコケる問題について対応することができた.結局のところ原因は,Contextが0初期化されていないことだった.仕様上 "0"という文字列がそこにないと最初の値すらセットできないということになっているので,”0”という文字を入れて回る初期化関数を書いたらコケずに走るようになった.値のセットは,初期化以外の処理でも使うことになるので,外部に切り出しておくべきだと思う.次のセッションでは,この処理を書き足して,それに対するテストも準備するようにしたい.

 さらにコードを書き進めて,初期化関数のテストを書くことができた.そろそろテストがごちゃついてきて,見通しが悪くなってきている.そこで,関数ごとに切り分けたりしてテストを整理している.次のセッションでは,この作業を完了して,初期化関数の値のセットを専用の関数でやるようにやりかえていく.

 さらにコードを書き進めて,値のセットをするための関数を書いている.ただ,今回のケースでは複数ある選択肢から狙った変数だけを,狙った値で書き換えるということなので,うまくやらないと,コードがだらだらと長くなってしまう.スマートに書くのはむずかしいきがするが,列挙型でフィールドを指定するようにすることで多少は読みやすくなったかも.

 テストの作成をして,値をセットするための関数が動いていることを確認することができあ.これで,初期化関数の一連の作業は完了.もう一度動作の見直しをする.


生活面

13時起床.おおよそ7時間睡眠.十分な覚醒度を得た.

昼はピラフとサラダを食べた.あんまり食欲がなかったが,なんとか食べれた.

夜は米,豚肉,鰹のたたき,卵焼き,サラダ,納豆でバランスよく食べれた.

夕方に1時間ほど小学校までの通学路を歩いて,十分な運動量を稼ぐことができた.


9/4

 進捗報告

BTの記事を書き進めた ( 2 sessions )

 BTの記事を書き進めることができた.Actionの説明を書き終えて,Decoratorの説明も全て書き終えることができた.継承関係の部分についても説明を入れることができた.これにて,本文の部分は全て書き終えることができたので,見直しをして,概要とか,リンクとかを整備したら公開できる.次のセッションではそれらの作業を実施したい.

 さらにBTの記事を書き進めて,本文以外のところの文章も書き終えることができた.3回ほど見直しをして,ミスを修正するなどして,公開にこぎつけた.その後に,前パートのリンクを更新したりした.次のセッションでは,Part3の作成を始めたい.

Parserのデバッグ機能を拡充した ( 2 sessions )

 Parserにメモリ使用量を計算するための機構を追加することができた.これで,ルールがどれくらいのメモリ量を食っているかを手計算で求めたり,推測したりする必要がなくなるので,これはとても良いことだ.何のルールに対してのメモリ量計算も大体かけたのだが,テストがSIGSEGVでこけていて,どうもサンプルデータのパースがうまく行っていないらしい.原因を次回のセッションで調査する.

  デバッグを進めて,サンプルデータのフォーマットに問題があることを特定したので修正した.そこからさらにメモリ容量が適切に計算されているかどうかを確認するテストケースをいくつか作成して,手計算でもとめたメモリ容量と実際の計算値が一致することを確認できた.これにて,メモリ容量の計算関数は完成とする.

Checkerの検査機能の開発を進めた ( 1session + )

 checkerとproxyの統合作業を進めた.この前はその雛形のところまでを書いていたのだが,proxyの動きを改善するためにproxy側のコードをそこそこ変えたというところと,checker側のコードで他の種別のルールをサポートしたということで,加筆修正が必要になった.で,統合のためのコードがなんとなく書けたので,実際のデータとルールとで動かしてみたらメモリエラー.原因を探ってみると,コンテキストの初期化をNULLでやっていて,これがからかどうかをチェックする時に0と比較して真なら文字列が入っていない,みたいな仕様になっているらしい.これはとても面倒だ.力技だが,0\0みたいな文字を入れておくか?次のセッションで,この問題に対応して,ひとまずルールがこけずに全て走るようにしたい.

9/3

 進捗報告

BTの記事を書き進めた ( 3 sessions )

 BTの記事を書き進めることができた.制御ノードの図表をつくって,コードを貼り付けて説明を書くところをやっている.SequenceNodeの説明までが書き終わっているところだが,Selectorのコードを貼り付けたところで,リファクタリングが十分に住んでいない部分に気がついてしまって,コードを直し始めた.次のセッションでは,このコードを修正して,SelectorNodeの説明を書いていく.

 SelectorNodeのコードを修正して,制御ノードについてはあらかた説明を書き終えることができた.現在は末端ノードの説明を書いているのだが,実際にゲーム上で使う末端ノードを汎用的に作ることはできないので,ここで定義するAction NodeやCondition Nodeは,あくまでそれ専用のノードを作るための雛形であるということを説明しないといけなくて,図表を作るところまで行ったが,その説明がうまく書けていない.次のセッションでは,ここの説明を拡充していく.

 さらに書き進めて,DecoratorNodesのコードを貼り付けたり,ActionやConditionの説明を書いたりした.Actionの説明をかけていて,今はConditionNodeの説明を書いているところである.しかし,Conditionにもコードの気に入らない部分があるので,先をそっちに直している.

買い物に行った ( 1 session )

 ミスターマックスに買い物に行って,食料品や電化製品を見て回ることができた.今日は,工作用品とか,カー用品とか,普段あまり注目しないとも割合きちんと見て回った.


生活面

12時起床.おおよそ7時間睡眠.十分な覚醒度を得た.

朝は米,魚,玉子でシンプルに決めた.夜は山芋鉄板焼き,米,味噌汁,鮭でバランスよく食べれた.

買い物先で1時間以上歩き回っていたので,これによって十分な運動量を稼ぐことができた.後は,無酸素的な要素も入れようと思って休憩時間に椅子を30回ずつ持ち上げたりしていた.



9/2

進捗報告

Parserを調整した ( 4sessions )

 Parserの機能を調整してmarkerに対応するための一連の処理を書くことができた.これによってphase1においては,適切に新しいmarkerが追加されているのを確認することができた.しかし,複数フェースに同時に追加するという場合には,一つのオブジェクトが複数のリストに追加されようとするため,参照の書き換えがおこって意図しない動作をするようになる.そのため,この種のルールに関しては,オブジェクトのコピーをする必要がある.次のセッションではそれに関する処理を書いていく.

 さらに作成をすすめて,オプジェクトのコピー処理を追加して,全てのリストにMarkerが追加するようにした.途中,意図しない連結が起こったり,メモリがリークしたりというトラブルもあったが,最終的には全て解決して,SecMarkerの追加作業は完了した.ただし,まだParserは完全ではなくて,ファイルが命名通りにソーティングされていない.これはルール実行の上で重要な点ではあるので,次のセッションではこの問題に対応する.

 さらに改修を続けて,ルールファイルのソートを実装した.これによって,ルールが意図した順序で実行されるようになった.セットアップファイルが名前の問題で末尾に回ってしまうのだが,これはparserよりはconverter側の問題なので,そちらで解決するようにしたい.あとはここまで書いてきたParserの機能が十分にテストされていないので,次のセッションでテストを書いていきたい.

 さらにコードを書いて,ルール種別ごとのparseと,リストへのアペンドについてのテストケースを作ることができた.これによってparserの主要な機能の正常系は大体テストできた形.異常系のテストも準備することが望ましいが,ルールに関しては異常系の入力値が大量に届くということは考えにくいので,他のテストを書いて手が空いたタイミングで書いていきたい.この業務の最後のタスクは,ルールのサイズの計算の関数を書き直すことなので,次のセッションで対応したい.

 さらにコードを書き進めて,メモリサイズの計算の関数を書き直している.actionやvariableはそれ専用のメモリサイズ計算用関数を作った方が良いと思うので,それを作っている途中である.

生活面

11時起床.おおよそ7時間睡眠.十分な覚醒度を得た.

朝はシャケ,ご飯,味噌汁でバランスよく食べれた.


9/1

 進捗報告

プログラミングの書き方本を読み進めた ( 2 sessions )

 プログラミング作法を読み進めた.8章の移植性についての章を突破して,9章の記法についての章を読んでいるところ.8章の後半ではバイトオーダーが移植性に与える影響などについて確認した.リトルエンディアンとビッグエンディアンが混在しているような環境では,例えばintファイル保存したデータが元通りの値で解釈されるとは限らない.これを回避するためにはpack / unpackを実装して,固定の順番でデータが解釈されるように調整する.あるいは,テキストへの変換が可能なら,極力テキストデータとして保存することでこの問題は回避できる.

 さらに読み進めて,プログラミング作法の最後まで読み切ることができた.9章の記法では,作業に適した言語を選択することの重要性と,それがない場合に自分でそれを作る方法があれこれと解説されていた.また,jvmをはじめとする仮想マシン向けの言語の実装や,jitコンパイルについても紹介された.

 全体的にこの本は,プログラミングに関連する様々なトピックについての明確な判断基準をを養成してくれるものになっていて,非常に良いものであった.

コードの書き方本についての記事を書いた ( 1 session + 60mins )

 プログラミング作法をついに読み終わり,手元のコードの書き方本を一通り読み終えることができたので,それをまとめるような記事を書いた.構成を考えてから文章に起こし,公開するところまでたどり着いた.まとめ作業まで済んだので,これにてコードの可読性を高めるタスクは終了.割と時間がかかかったけど達成できたよかったし,結構成長できた気がするのでやる価値があった.

生活面

12時起床.おおよそ7時間睡眠.十分な覚醒度を得た.

昼は,スーパーで買ってきた天津飯を食べた.なかなかボリューミーだったが食べれた.

夕方に車で出掛けて,出掛け先の店内をしばらく歩き回ったので,これによって十分な運動量を得た.

夜はごぼう天うどんであっさり食べれた.