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時間睡眠.十分な覚醒度を得た.

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

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

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

8/31

進捗報告

UVCSについて勉強した ( 3 sessions + 10mins )

 UVCSについて勉強を進めることができた.Unityのバージョン管理ツールであり,gitとは勝手が違うので敬遠していたのだが,Unityの管理をして共有する上では他に良さげなツールもないので使う他ない.Unity learn上で探してみると,Get started with Unity version Controlというコースがあったので,それを読んでいる途中.これで,基本的な概念とか,操作が拾えれば良い.

 さらにコースを読み進めて,クラウドの設定を確認したり,check inのながれ,branchの新規作成の流れなどを確認した.UVCSでは過去に状態に戻してから変更して,これを最新のワークスペースに反映するという機能があるらしい.これが過去の改ざんに思えてしまったのだが,調べてみると本質的には,末尾の変更リストへの追加で,インタフェース上でこういうことをできるようにしているだけらしい.コンフリクトがなければ,クラウドを経由して,最新のワークスペースで,過去のワークスペースでの修正を取り込める.

 さらにコースを読み進めて,完全に読み切ることができた.最後にはmerge conflictが発生した時の競合解決についての説明があって,参考資料もいくつか紹介されていた.最後には電子ブックの紹介もあって,こっちの方が解説は詳しそうなので,読んでみたら良いかもしれない.

https://unity.com/resources/best-practices-version-control-unity-6

生活面

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

昼はパン,ミネストローネ,ハッシュドポテト,キウイでバランスよく食べれた.

夜もキーマカレー,レタス,春雨スープ(トッポギ入り)でバランスよく食べれた.

夕方には30分ほど散歩をしたので,これによって運動量を稼げた.

8/30

 進捗報告

Parserの機能を拡張した ( 2 sessions + )

 Parserの機能を拡張するコードを書き,Actionへの対応を進めることができた.コードの概形は欠けているのだが,想定外の挙動をすることがあるので,その対応をしている.

 さらにコードを書き進めて,Actionの追加と削除が適切に実行されることを確認した.Dumpの結果を見ても,きちんと所望のphaseに対してSecActionが追加されていることが確認された.作成と削除の関数を作る,Parse用の関数を作る,リストへのアペンドの処理を作る,リストの削除関数を合わせて改変する,ダンプの関数を合わせて改変する,という作業を繰り返していくことで,新しいdirectiveにも対応することができるということがわかった.今はSecMarkerに対しても同様の作業をして,listへの追加を図ろうとしている.markerの場合は全てのphase listに対して追加をかけないといけないので,それを綺麗に書けるのかどうかというところが勝負になってくると思う.

ゲーム開発会議に参加した ( 2 sessions )

 ゲーム開発会議に参加して,お互いに作業進捗を報告し合うことができた.僕のほうでは,近接攻撃や弾丸スプライトの仕様について説明して,今週取り組むべき内容について報告した.また,イベントシーンの作り方について資料を示して議論することができた.Ririnはストーリーの構成について考えた結果を報告していた.

生活面

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

昼はシャケ,米,味噌汁,ハッシュドポテトであっさりと食べることができた.夜はフライドチキン,米,春雨スープ,サラダでバランスよくべれた.

昼間には運動公園のグラウンドを歩き回ったので,これによって十分な運動量を稼ぐことができた.

8/29

 進捗報告

parserのコードを修正した ( 1 session + 

 Parserのコードに手を加えて,昨日作成した基底構造体でもって,種類が混在するルール群をリストにまとめることができた.デバッグ用の関数で一覧を出力してみたところ,変更前と変わらない動作ができている.現在は別種のルール形式に対応するユーティリティを作っているところである.次のセッションではSecActionへ対応を進める.



生活面

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

8/28

進捗報告

本読みをした ( 1 session )

 昨日読んでいた偶然の統計学を読み切ることができた.最後の結びでは統計的に有意であることが,繰り返すことよって弱まるという話があって,それが面白かった.ある件について95%で正しく推論できるとしても,それが100件あると,全てが正しく推論される可能性は0.95 * 0.95 * 0.95 ... *0.95となり,とても低い確率になる.統計学ではこの手の問題を解決するための色々なテクニックもあるらしい.そこら辺は,勉強していきたい.

 プログラミング作法の方も読み進めることができた.移植性の部分で,標準ライブラリに固執することが,結局将来的にそのシステムをいろいろな箇所で使う上での早道になるという話だった.どうしても分ける必要がある時は,プログラムの制御構造と女権コンパイルの構造が混在するのは避けて,ファイルごとに分割して管理したり,環境を抽象化したインタフェースを定義してそれを前提に実装を進めたりすると良い.

Parserの修正作業を進めた ( 2 sessions + )

 Parserのコードの修正を進めて,大幅なメモリリークの正体を掴んで修正することができた.これでによって,今までずっと出力され続けていたaddress sanitizerの警告がようやく鳴り止んで,かなり気分が良くなった.今は,SecRule以外のルール体系への対応を進めている.そのためにここまで書いてきたインタフェースもいくつか書き直しになっているので,次のセッションでその作業に対応する.

 SecRule以外への対応を進めるために,ルールリストをこれよりも汎用的な基底構造体で持つことにした.そのために,SecRule用の構造体の中身を整理して,上位の構造体で,これまでと同様の操作ができるようにしようとしている.どうにも,実装がスムーズにいかず,結局一回git reset --hard HEADを実行することになったが,今度は慎重にやっているので,うまくいくと思う.次のセッションでも同様の作業を継続する.

Home Labbingについて調べた ( 1session + 30mins )  

 昨日紹介したhome labbingの入門記事を読み切り,どのように機材を選んで拡張を図っていけば良いかのイメージを掴むことができた.とにかくいろいろな記事を読んで慎重にハードを選んで行って,小さなミニプロジェクトをいくつも走らせながら段々と大きくしていけば良いという感じだった.情報源としては同サイト(linux blog.io)のほか,redditの/r homelabにも多くの情報が詰まっているということだったので参考にしたい.

生活面

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

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

8/27

進捗報告

proxyとcheckerの統合作業を進めた ( 3 sessions )

 昨日はmakeが通らないというところでストップしていたのだが,問題の原因は単純でlink時にライブラリを作るためのコンパイルフラグを付与していないだけだった.これでbuildをできるようはなったのだが,どうにもparserがルールファイルを読み込むときにこけているらしい.問題箇所はどうも文字列コピーをやっている箇所らしい.おそらく,事前に準備したメモリ以上のパラメータが渡されたときにこけるらしい.なぜreallocで取り直すようになっていないのか.事前に長さを見てからmallocする形式になっていないのか不明だが,そのように書き直す作業を進めているところである.

 Operatorの文字列を渡される文字列を見てからチェックスするように変更した.それから渡ってきている文字列がfreeされていないことに気づいて,parserのメモリリークを一つ減らすことに成功した.あとはdisposeがきちんと動いてくれればleakはしないと思う.Variablesについても書き換えたが,このせいでTest側で値を直接書き込めなくなったので,値をセットするためのutilitiyを追加で作っている途中.これも一応完成したので,Testでこれを使うようにして全てきちんと動けば,Actionにも同様の処理をすれば良いだろう.

 さらにコードを書き進めて,VraiablesについてもActionについてもSet系のコードを作ってテストを通すところまで進めることができた.で,どうやら,cJSONがStringfyで返しているメモリ領域は新たに確保されたものではなくて,cJSONのオブジェクトが持っているメモリ領域のようであり,これをfreeすると,cJSONのfinalizerのfreeとでdouble freeになってコードが落ちるという問題が起こった.これについては,わかりにくい部分なので,コメントに残しておくこと.

本読みをした ( 4 sessions )

 偶然の統計学という本を読み進めることができた.読んでみると,教科書というよりは読物系の本で,いわゆる偶然の出来事と思われるものが統計的に考えると,十分に現実にありうるということをひたすら説明している本であった.宝くじの奇跡とか,偶然の一致,霊的現象などなど,いろいろな事象をぶった斬っている.

Home Labについて調べた ( 1 session )

 Home labbbingの情報を漁ったりしていた.宅内LAN環境の参考で,最近かなりhomelabbingの情報を見ていて,これについて,包括的なガイドが見つかったので読んだりしている.以下のリンクは非常に面白いものだと思った.

https://linuxblog.io/home-lab-beginners-guide-hardware/

生活面

1時起床.おおよそ3時間睡眠.それから8時に寝て,12時に起きたので,トータルで7時間くらいの睡眠で,十分な覚醒度を得ることができた.

昼はチャーハンを食べた.これはカレー風味で,あっさりと食べれた.夜はハンバーグ,叩き,米,味噌汁,卵とじとで,バランスよく食べれた.

夕方に30分ほど散歩に出掛けて,十分な運動量を稼ぐことができた.


8/25

 進捗報告

proxyのコードを調整した( 2 sessions + )

 response側のバッファに対してもheaderの構造体の変更を反映することができた.本日の目標は,とにかくWebページをきちんと適切に表示できるようにすること.以前は,welcomeページを表示するということをテスト項目にしていたが,welcomeページは例題として単純すぎたので今回はjuice shopを対象にする.juice shopは割合複雑な仕掛けでできていて,ページの表示もリッチだし,取得するファイルも多いし,画像のようなバイナリファイルも含まれるので,juice shopがきちんと動けば,それはwebuiでも適切に利用できることの証左と言える.

 コードの修正を繰り返して,とりあえずサーバのレスポンスがいくつかクライアントのところに返せるようにはなってきた.SIGSEGVなしで,きちんと動き続けているというのを見ることができるのはいい体験だ.現状の問題はpathの解決がきちんとできていないところで,ドキュメントルートのファイルはきちんと取れても階層化されたところのファイルのパスがきちんと解決されていないから,画像やcssの取得に失敗している.次のsessionではこの問題に対処していく.


生活面

12時起床.おおよそ8時間睡眠.十分な覚醒度を得た.昨日は何も聞かずに寝た.

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

夕方にゴミ捨てを兼ねた散歩をして,地区を一周した.これによって十分な運動量が稼げた.

夜は豚肉,ほうれん草,サラダ,米,納豆でバランスよく食べれた.

8/24

 進捗報告

近距離攻撃用の弾丸を実装した ( 1 session )

おでかけをした ( 2 sessons )

 日曜日ということで,家族でお出かけをすることができた.ホームセンター,イオン,ブックオフ,ドラッグストアなど,いかにもfamiliesが行きそうな場所を巡って,ウィンドウショッピングを楽しむことができた.

8/23

 進捗報告

目的地への移動プログラムを書き進めた ( 5 sessions )

 目的地への移動プログラムについて検討することができた.どうやら,A*アルゴリズムというものを使うことにより,障害物を避けつつも短い経路を計算することができるらしい.そしてunityでは,A* findingpath projectというpackageが提供されていて,これを使うことでその処理を使うことができるということがわかった.次のセッションではこれを試してみたい.

 また,Unityのversionのbranchを統合しようと思って久しぶりにUnity version controlを触ってみたりした.しかし,僕のブランチがクラウドワークスペースにないとか,なんとかで,結局mergeが反映されない問題が発生して,これと2session格闘したけども解決できなかった.Unity version controlの仕様は正直って,馴染みがなくてわかりにくいが,使えないと困るので調査したい.

 Reticleの実装を見直したりした.Atan2(x, y)と思って作っていたら,Atan2(y, x)が正しい順番であり,この勘違いによる実装を直して回っている.これまでは逆にしていたために変な結果になるところを-1をかけたりして直していたのだが,ようやく解決できそう.

 Reticleの修正が完了して,この流れで武器や弾丸などのマネージャーに潜んでいるAtan由来の問題も治して回ることができた.meleeWeaponに関しては,2piを超えた処理を終了するみたいな謎の終了条件で動いていたので変なところで攻撃が終わっていた.この問題は速やかに修正された.

 次のセッションでは敵機のmelee Weaponについて書いていきたい.基本的には敵機での場合は全てを弾丸として扱うことで,処理を単純化するつもり.

花火大会に行った

 花火大会の花火を見に行くことができた.割と円形ではあったが,小粒の色とりどりの花火が重なって連続するスタイルのものがあり,それが綺麗だった.後は,火の軌跡が柳のような格好で残存するタイプの厳かなものも気に入った.

生活面

昼は米,ウインナー,玉子,味噌汁でバランスよく食べれた.

夜は米,ハンバーグ,エリンギ,キャベツ,叩きで,かなりボリュームがあったが食べれた.

花火大会に行く過程で海岸を歩いたので,これによって十分な睡眠を稼ぐことができた.

8/22

 進捗報告

proxyのコードを調整した ( 5 sessions )

 テスト環境でproxyが落ちる原因を調べることができた.どうやら,ServerProxy側のコードに問題があって,必要なバッファが確保されていないらしい.そして,全体的にコードの意図がわかりずらい.ということで,過去の関数群を書き直したりしている.テストも十分に作成されていないので,書き直して意味が明確になったものから順にテストにかけていきたい.

 libcurlのslistを組みた立てる関数を全体的に書き直して,テストを通すところまでできた.headerの処理にこの関数を使っていて,空値がやってきた時の処理まで作って,防衛的に仕上がった.

 bufferのコードが全体的にごちゃごちゃしていて,メモリをどこで取って,どこで解放しているのかと言うところが追いづらくなっているので,構造体を追加して整理した.これによって,初期化の処理が相当にわかりやすくなった.初期化したメモリ領域に対してデータをセットする関数を準備して,ここにreallocの処理も書いて仕舞えば,メモリ管理の見通しは格段に向上するのではないかと考えている.

 確保したコードの上に値をセットするための関数を準備することができた.これによって,クライアント側のプロキシのコードをやりかえてやって,動作テストを実施しているところ.これがうまくいったら,サーバ側のコードも本格的に手を突っ込もう.

 さらに作業をして,クライアント側のコードがきちんと動作していることは確認できたので,同じような変更をサーバ側に対しても施しているところ.サーバ側はなぜかバッファの事前確保をやらない設計になっていたみたいで,このせいで動的なメモリ確保があちこちに散財していて管理限界を迎えている.なので,次のセッションの変更でこれらを一元的に管理できるように改変したい.

ゲームキャラクタの動きの実装を進めた ( 1session ) 

 キャラクタのBTノードの調整をすることができた.これによって,持ち時間通りの行動をとるようになった.弾丸の発射レートが異常な部分があったのだが,この問題もBTノードの終了のタイミングが誤っていたことが原因であり,修正された.さらに弾丸の発射方向がおかしい問題についても修正され,これについては,atan2に与える引数の襦袢が逆になっていることが原因であった.次のセッションでは,キャラクタのランダムに動かしたり,目的の地点に対して移動できるようにするためのアクションノードを実装していきたい.

生活面

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

ブランチで,ベーコンと野菜の炒め物,鮭,米,味噌汁,ひきわりでバランスよく食べられた.

夕方に地区を一周散歩して回って,十分な運動量を稼ぐことができた.今日は過ごしやすい気候で散歩には適していた.

夜はイカの煮物,ロールキャベツ,米,ひきわりでバランスよく食べれた.