やったこと
09/05
- 久しぶりにキタムーと自転車へ乗る。小渡のサークルKまで走る。
- フロントのアウターに入りにくかったので、帰りに光で調整してもらった。
- 帰ってから初めておしどり寿司にいった。うまうま。
- 疲れすぎてて書けないので、関ヶ原を読んで寝た。
09/06 10:30-24:00(途中ぐっだぐだ。)
- DecodeからEncodeまでの整理をしたいが、なかなか進まぬ。
- うんこ虫->構造化->オブジェクト思考?に入りつつあるかも。
- こうなるといいなが自然と「関数ポインタと構造体でほにゃほにゃできればな」になってきた。
- ex) if(queue->IsFull)Enqueue(queue)としたいとか。
queue->IsFull(queue)になっちゃうのね。
struct ring_queue{
struct ring_queue *this;
void **obj_p;
int32_t top;
int32_t bottom;
int32_t length;
bool (*IsFull)(struct ring_queue *this);
bool (*IsEmpty)(struct ring_queue *this);
};
- 「モダンC言語プログラミングにオブジェクト思考や関数ポインタのことが書いてあったな」と思い出して読み始める。
09/07 23:00-
09/08
09/09 昼休み
09/10
09/11
- もぎ取った年休、このために他の平日を頑張った。清々しい、とても気持ちよく晴れたいい日だ。
- 朝からローラーを試し、散髪し、掃除・洗濯し、うどん屋でざるカツ丼を食べつつ移動。
- モダンC言語プログラミングのデザインパターンの続きよみ。
- ステートパターン
オブジェクト指向だとこうなるよ程度
- テンプレートメソッドパターン
継承が分かりやすくてよかった。使えそう。
- オブザーバパターン
読み飛ばし
- チェインオブレスポンしビリティパターン
フレームのエラーチェックに使えそう。
- ビジターパターン
「ディスパッチした先の処理を、対象のオブジェクトの外に起きた場合」という場合が分からなかった。
- はて、どう書きかえたものか。まずやりたいこと、気になる事を書き出してみる
- sslreadとplainreadを切り替えられるようにしておきたい
- frameのNewとDeleteはどこにいるべきか
- 必要になった「そのとき」New、不要になった「そのとき」Deleteするべし。
- ただし実装忘れでバグになるようなコードはいやだ。気をつけなくてもよい手法が欲しい。
- strerrorとperrorは以下で同等
#include <stdio.h>
#include <math.h>
#include <errno.h>
#include <string.h>
int main(void)
{
FILE *fp = NULL;
fp = fopen("test", "r");
if(fp == NULL){
perror(NULL);
fprintf(stderr, "%s\n", strerror(errno));
perror("hoge");
fprintf(stderr, "%s: %s\n", "hoge", strerror(errno));
}
}
参考