新人をバイナリアンに育てる ~ その7 ~
新人で C の初心者高橋君。4週間本を読んで配列を理解し、社長からコメントをもらいます。
新人「ー拡張させてみたが予想以上にソースが煩雑なため訂正予定」
社長「重要なことは”煩雑”であることを一歩引いて感じることができるかどうかだね。
あと、無駄な処理をしていないかとか、、、、
この経験が重なると、美的感覚が(プログラミング上の美的感覚)が養われてくる。
これらのことを感じるためには、”動いた”を終着駅にしないことだね。」
こんな”哲学的”なこと言ったってわかるわけないじゃん。そもそも、今の自分でも理解が難しい。この数年後「神の数式」を見て、「美的」ということがいかに空疎な事かを知ることになります。数式やプログラムが「美しい」なんてのは妄想でしかないと今は思っています。
新高橋君:日報 7/11(Mon)
作業報告します
今日行ったこと
ー"Unix/linuxコマンドの使い方"を322ページ中237-247まで読み進める
ー"新C言語入門"を198ページ中75-98まで読み進める
今週の計画の詳細をまとめる
プログラム関連
ー線分を描画するプログラムの作成
ー第四象限内の線分を描画するところまで終了
今後のtodo
ー"Unix/linuxコマンドの使い方"を読み進める
ー"新C言語入門"を読む
ー入力に応じて三角形、四角形、円を複数個描画その後にrawデータで保存するプログ
ラムの作成
ー三角形を描画させる関数を作成するための前準備として線分を描画するプログラムの作成
ーあらゆる点の線分を描画するプログラムの作成
ー与えられた値に応じて適切な線分の描画関数を呼び出すプログラム
ーfloatを使わずに線分を描画するプログラムにするように変更
ーまた円を描画する方法について調べるべき
ー図を回転させるプログラムを応用できないか確認したい
ー図を回転させるプログラムの作成
ー行列計算を用いるため要確認
ー変換後の座標の判定方法についても考える必要がある
コメント
C 言語の習得はやはり難しい。とにかく回数。と思い、複数の本の配列までをやってもらうことにしていた。線の描画は、第四象限内までできたらしい。え!こんなペース?と思う人もいるかもしれない。でも、実際はこれくらいがが妥当なのだ。
社長通信 7/11(Mon)
みんながリーナス・トラバースさんになろう。
=>どうすればなれるか?
=>科学的アプローチが必要
脱線しつつ、、、直接スレッデッドコードを勉強。(LOL で読んだはずなのだが、、、、)
http://jp.rubyist.net/magazine/?0008-YarvManiacs
がわかりやすい。
スタックマシンの本を読むことにする。
あと、IA64 の本も読むことにする。=>レジスタウィンドウを使っているから。
GLSL について調査したことを一杯忘れたので、やり直し、、、
スーパースカラー=>アウトオブオーダーなプロセッサ
ついでにレジスタを動的に割り当てるかレジスタウィンドウにするかしたい。
コメント
社長が率先して技術的なことを頑張っているなというメッセージ
新人じゃない人の日報
- Fill Rect の、性能評価テスト
fps を計って表示するようにした
HW 使った場合 -> 580 FPS 前後
HW 未使用 -> 60 FPS 前後
コメント
おーさすが。Fill Rect (DirectFB のアクセラレータとして実装)、HW 使うと相当速くなる。当たり前だけどちょっとうれしい。
新進高橋君:日報 7/12(Tue)
作業報告します
今日行ったこと
ー"Unix/linuxコマンドの使い方"を322ページ中248-260まで読み進める
ー"新C言語入門"を198ページ中99-120まで読み進める
プログラム関連
ー線分を描画するプログラムの作成
ー第四象限内の線分を描画させた
ーfloatを使用しないで線分を描画させた
ー少々汚いため軽く手直しが必要
ー実行時の引数で線分を描画するように改良
今後のtodo
ー"Unix/linuxコマンドの使い方"を読み進める
ー"新C言語入門"を読む
ー入力に応じて三角形、四角形、円を複数個描画その後にrawデータで保存するプログ
ラムの作成
ー三角形を描画させる関数を作成するための前準備として線分を描画するプログラムの作成
ーあらゆる点の線分を描画するプログラムの作成
ーまた円を描画する方法について調べるべき
ー図を回転させるプログラムを応用できないか確認したい
ー図を回転させるプログラムの作成
ー行列計算を用いるため要確認
ー変換後の座標の判定方法についても考える必要がある
コメント
前日までは線分描画に float を使っていたらしい。この辺が、数学とプログラミングの違いかな。float つかったら遅くなるからね。
新進高橋君:日報 7/13(Wed)
作業報告します
今日行ったこと
ー"Unix/linuxコマンドの使い方"を322ページ中261-272まで読み進める
ー"新C言語入門"を198ページ中121-140まで読み進める
プログラム関連
ー線分を描画するプログラムの作成
ー引数の数に対応したヘルプの作成
ー点が指定された範囲を越えた場合の処理の関数の作成
ーあらゆる線分を描画するプログラムの作成
ただし手直しすべき部分があるかもしれない
今後のtodo
ー"Unix/linuxコマンドの使い方"を読み進める
ー"新C言語入門"を読む
ー入力に応じて三角形、四角形、円を複数個描画その後にrawデータで保存するプログ
ラムの作成
ー三角形を描画させる関数の作成
ーまた円を描画する方法について調べる
ー図を回転させるプログラムを応用できないか確認したい
ー図を回転させるプログラムの作成
ー行列計算を用いるため要確認
ー変換後の座標の判定方法についても考える必要がある
コメント
ついに線分描画で全方向の描画ができるようになった。if を使ったのか case を使ったのか、、、、いずれにせよ場合分けが出来たということ。「ただし手直しすべき部分があるかもしれない」が何なのかは不明。
新進高橋君:日報 7/14(Thu)
作業報告します
今日行ったこと
ー"Unix/linuxコマンドの使い方"を322ページ中272-281まで読み進める
ー"新C言語入門"を198ページ中141-161まで読み進める
プログラム関連
ー線分を描画するプログラムの手直し
ー三角形を描画するプログラムの作成
ー複数個描画させる仕組みについて考える必要がある
今後のtodo
ー"Unix/linuxコマンドの使い方"を読み進める
ー"新C言語入門"を読む
ー入力に応じて三角形、四角形、円を複数個描画その後にrawデータで保存するプログ
ラムの作成
ーまた円を描画する方法について調べる
ー円を描画させるアルゴリズムはあるようなので利用したい
ー図を回転させるプログラムの作成
ー行列計算を用いるため要確認
ー変換後の座標の判定方法についても考える必要がある
コメント
線分を組み合わせて三角形を作るプログラムにチャレンジ。Logo とかだと簡単にできそうな気がするが、、、
新進高橋君:日報 7/15(Fri)
作業報告します
今日行ったこと
ー"Unix/linuxコマンドの使い方"を322ページ中282-294まで読み進める
ー"新C言語入門"を198ページ中161-174まで読み進める
プログラム関連
ー三角形を描画するプログラムの手直し
ー円を描画するプログラム
ー見たアルゴリズムには欠点があるらしいので別の方法を模索中
今後のtodo
ー"Unix/linuxコマンドの使い方"を読み進める
ー"新C言語入門"を読む
ー"C実践プログラミング"の読んでいない部分を読み進める
ー入力に応じて三角形、四角形、円を複数個描画その後にrawデータで保存するプログ
ラムの作成
ーまた円を描画する方法について調べる
ー円を描画させるアルゴリズムはあるようなので利用したい
ー線分を描画するプログラムの訂正
ー関数が多すぎて逆に分かりにくくなってる問題
ー線分を描画させる関数について冗長性がありすぎる問題
ーエラー判定も若干冗長性がある
ー図を回転させるプログラムの作成
ー行列計算を用いるため要確認
ー変換後の座標の判定方法についても考える必要がある
C実践プログラミングを今週の休日中借ります
コメント
三角形の次はなぜか円。四角形が簡単すぎるから?「関数が多すぎて逆に分かりにくくなってる問題」があるらしい。どんな問題なのだ?土日の間に勉強するらしい。えらいぞ。
新人をバイナリアンに育てる ~ その6 ~
新人で C の初心者高橋君。4週間本を読んで配列を理解しました。バイナリアンになるためについに fopen/fclose を勉強します。
いままで、あまり具体的に指示を出していなかったためプログラムを書くのに四苦八苦していました。ここは、いままでの私の講師の経験を活かし(なぜいままでやらなかったのか、、、、それはここまで、C 言語初心者ははじめてだったから。入社した人は大抵 C 言語かけた)具体的な指示を出すようにします。
さすがに噛み砕いた指示だったらしく、順調にこなしはじめます。やっと ToDo で進捗が出始めました。本人もうれしいことでしょう。
新人:高橋君 日報 7/4(Mon) 17:59
作業報告します
今日行ったこと
ー"Unix/linuxコマンドの使い方"を322ページ中182-193まで読み進める
ー"やさしいC++"を98-109まで読み進める
プログラム関連
ー実行時に第1引数で与えたファイルをfopen,fcloseするプログラムの作成
ー実行時に第1,2引数で与えたファイルをfopen,fcloseしてそのときのコメントをつけるプログラムの作成
ー第1引数で与えたグレイスケールのrawイメージデータを
第2引数で与えた名前のRGBのrawイメージデータに変換するプログラムの作成
ー第1引数で与えられたRGBのrawイメージデータを
第2引数で与えた名前のグレイスケールのrawイメージデータに変換するプログラムの作成
今後のtodo
ー"Unix/linuxコマンドの使い方"を読み進める
ー"やさしいC++"を読み進める
ー実行時に第1引数で与えられた72x34のグレースケールのデータに四角を書き加え、
第2引数で与えられた72x34のグレースケールのデータに”出力”するプログラム作成
ーシェルプログラムを使い今まで作成したコマンドを組み合わせて実行して、
与えられた第1引数をgimpでよめるRGBのrawデータでこれに四角を書き加え、
第2引数をgimpでよめるRGBのrawデータに”書き加え出力”するプログラムの作成
ー今まで作成したプログラムの改良、具体的には入力に応じて三角形、四角形、円を複数個描画、その後にrawデータで保存するプログラムの作成を行いたい
社長コメント 7/4(Mon) 21:35
少しアイデアが出てきたようです。
実現可能でもなくてよいので、あとアイデアを5個、できれば 10個、もっとできれば
20個考えて書き出してください。
”実現可能でなくてもよい”がポイントです。
コメント
報告時間も 17時50分台になり、落ち着いてきた模様。報告も詳細化され、本人も達成感があることでしょう。「その後にrawデータで保存するプログラムの作成を行いたい」と報告も want が入ってきてモチベーションも上がったようです。
最初からそうすればよかった、、、、
なのに、私は、それ以上を要求しているぞ。だめじゃん。ほめてるけど、ほめてない。道を険しくしすぎ。
新人:高橋君 日報 7/5(Tue) 18:09
作業報告します
今日行ったこと
ー"Unix/linuxコマンドの使い方"を322ページ中194-202まで読み進める
ー"やさしいC++"を110-120まで読み進める
プログラム関連
ー実行時に第1引数で与えられた72×34のグレイスケールのrawイメージデータに四角形
を書き加え
第2引数で与えられたファイル名で書き出すプログラムの作成
今後行ってみたいプログラムの立案
今後のtodo
ー"Unix/linuxコマンドの使い方"を読み進める
ー"やさしいC++"を読み進める
ー"新C言語入門"を読む
ーシェルプログラムを使い今まで作成したコマンドを組み合わせて実行して、
与えられた第1引数をgimpでよめるRGBのrawデータでこれに四角を書き加え、
第2引数をgimpでよめるRGBのrawデータに”書き加え出力”するプログラムの作成
ー今まで作成したプログラムの改良、具体的には入力に応じて三角形、四角形、円を複数個描画、その後にrawデータで保存するプログラムの作成を行いたい
ー図を回転させるプログラムの作成
ー関数電卓の作成
ーチェス、オセロ、五目並べなど簡単な人工知能プログラム作成
ー文章から任意の文字列のを数えるプログラムの作成
ー四角形の適当な情報、座標などを与えられたらその形状、面積を出すプログラムの作成
ーー難易度から考えてプログラムの改良の後に文字列についてのプログラム作成を行いたいと思う
コメント
道を険しくする社長に必死についてきています。「今後行ってみたいプログラムの立案」してます。えらしなぁ~~。まさかこのあと、私は、それは無理だろ~~とかモチベーション下げること言ってないだろうな。
社長コメント 7/5(Tue) 21:55
ふむふむ。
悪くないんじゃない。
やりたい順(難易度を無視して)は?
コメント
「ふむふむ」とか普段使わない言葉でオブラートに包んでいるね。あと、時間もづらしてメールして、怒らないように(怒っているように見えるらしいよ。早口だから)直接のコミュニケーションは現場に任せている。いろいろ気を使った跡は見える。
新人:高橋君 日報 7/6(Wed) 18:14
作業報告します
今日行ったこと
ー"Unix/linuxコマンドの使い方"を322ページ中203-210まで読み進める
ー"やさしいC++"を121-126まで読み進める
ー"新C言語入門"を2-22まで読み進める
プログラム関連
ー今まで作ったプログラムをシェルプログラムを使って
第1引数で与えられた72×34のRGBのrawデータに四角形を書き加えて
第2引数で与えられた名前のファイルに書き出すプログラムの作成
ー四角形を描く関数に不備があったため訂正
ー操作説明させる関数も同様に不備があったため訂正
今後行ってみたいプログラムについての計画
今後のtodo
ー"Unix/linuxコマンドの使い方"を読み進める
ー"新C言語入門"を読む
行ってみたいプログラムについての細かい仕様の決定
ー今まで作成したプログラムの改良、具体的には入力に応じて三角形、四角形、円を複数個描画、
その後にrawデータで保存するプログラムの作成を行いたい
ー三角形を描画させる関数を作成するための前準備として線分を描画するプログラムの作成
ーまた円を描画する方法について調べるべき
ー図を回転させるプログラムの作成
ーおそらく行列を用いるため確認
ー変換後の座標の判定方法についても考える必要がある
ー関数電卓の作成
ー簡単な電卓のプログラムの作成は行っているため肉付けをしていく方向で
ーあまりくどくならないようにすべき
ーチェス、オセロ、五目並べなど簡単な人工知能プログラム作成
ー文章から任意の文字列を数えるプログラムの作成
ー四角形の適当な情報、座標などを与えられたらその形状、面積を出すプログラムの作成
コメント
なんかしらないが、成長の跡が見れる。プログラム作成時に細かくブレイクダウンしないといけないというのが伝わったんだね。
新人:高橋君 日報 7/7(Thu) 18:06
作業報告します
今日行ったこと
ー"Unix/linuxコマンドの使い方"を322ページ中211-226まで読み進める
ー"新C言語入門"を24-50まで読み進める
プログラム関連
ー四角形を描画するプログラムについて説明を追加
ー線分を描画するプログラムの雛形を作成
ー縦線、横線、簡単な斜線については描画に成功した
今後行ってみたいプログラムについての計画
今後のtodo
ー"Unix/linuxコマンドの使い方"を読み進める
ー"新C言語入門"を読む
ー入力に応じて三角形、四角形、円を複数個描画その後にrawデータで保存するプログ
ラムの作成
ー三角形を描画させる関数を作成するための前準備として線分を描画するプログラムの作成
ー簡単な斜線については成功したので今後はあらゆる点に対応できるようなプログラムの作成に入る
ーまた円を描画する方法について調べるべき
ー図を回転させるプログラムを応用できないか確認したい
ー図を回転させるプログラムの作成
ー行列計算を用いるため要確認
ー変換後の座標の判定方法についても考える必要がある
コメント
配列を VRAM に見立てて、縦線、横線、簡単な斜め線(たぶん45度) の線を書いてもらった。なんか進んでいる気がする。まだこの時点でポインタは出てきてないね。先は長い。
新人:高橋君 日報 7/8(Fri) 18:13
作業報告します
今日行ったこと
ー"Unix/linuxコマンドの使い方"を322ページ中227-236まで読み進める
ー"新C言語入門"を198ページ中51-74まで読み進める
プログラム関連
ー線分を描画するプログラムの作成
ー拡張させてみたが予想以上にソースが煩雑なため訂正予定
今後のtodo
ー"Unix/linuxコマンドの使い方"を読み進める
ー"新C言語入門"を読む
ー入力に応じて三角形、四角形、円を複数個描画その後にrawデータで保存するプログ
ラムの作成
ー三角形を描画させる関数を作成するための前準備として線分を描画するプログラムの作成
ーあらゆる点の線分を描画するプログラムの作成
ーまた円を描画する方法について調べるべき
ー図を回転させるプログラムを応用できないか確認したい
ー図を回転させるプログラムの作成
ー行列計算を用いるため要確認
ー変換後の座標の判定方法についても考える必要がある
コメント
配列を VRAM に見立てての任意の線分描画に挑戦。達成できたのかどうか不明。「拡張させてみたが予想以上にソースが煩雑」。まぁそうなるよね。初めての C みたいな感じだから。よく5週目でここまできたよ。
6週目の目標として三角形、四角形、円を描きたいみたいだ。できるといいね。(できたんだっけ?おぼえてない)
新人をバイナリアンに育てる ~ その5 ~
ここまで新人:高橋君たんたんと本を読んでます。もちろん手も動かしてますが。FORTRAN は経験ありでも C は初めてです。配列で四苦八苦しています。バイナリアンの道はまだはじまったばかりです。
しかし、社長の私は期待しすぎて、ついに4週目の木曜日に決断します。この試練を乗り越えられるのか?
社長の指示 6/30(Thu) 22:01
関数を改良するために
寄り道をします。
int main(int argc, char *argv[])
で
1) 引数の数を返すプログラムを書く。
例えば
a.out a b c
とすれば、
引数の数は 3ですと表示する。(漢字は使わないほうがよいので次のようになる)
Argument Count:3
と表示する。
[めやす] argc, argv を理解する。特に argc
2) 引数を表示するプログラムを書く。
例えば
a.out a b c
とすれば、
1:a
2:b
3:c
と表示する。
a.out aaa bb cccc
なら
1:aaa
2:bb
3:cccc
[めやす] argc, argv を理解する。特に argv
3) 文字と文字列の理解
再度、"C実践プログラミング"の文字列の部分を読んで、実際に試して理解を深め
る。
特に、今までの
unsigned char data[72][34] あるいは char data[1000];
との違いを”考える”
4) 数字と文字と理解
実行時の第1引数を分解し、文字(文字列ではない)として、さらに数字として表示
する。
例えば
a.out abcdef
とあれば
0:a:<数字>
1:b:<数字>
2:c:<数字>
3:d:<数字>
4:e:<数字>
5:f:<数字><数字> には実際の数字が入る。大文字のA なら 16進数で 0x41 になるはず。
5) 数字の表現と文字の理解
例えば
char c;
とあったときに
c = 48;
c = 0x30;
c = '0';
c = 060;
の違いを理解して、それぞれ表示するプログラムを作る。
6) 実行時の第1引数を与えられたらそれを fopen して fclose するプログラム。
a.out in.bin
としたら、in.bin を fopen して、fclose するプログラム
fopen と fclose 以外は何もしないことに注意。つまりほとんど何もしないプログラ
ム。
6-1) さらに動作の様子を表示するプログラム
fopen 字には fope:in.bin
fclose 時には fclose:in.bin と表示する。
動作の表示をするだけで、それ以外、何も変わらないことに注意。
難しく考えすぎないこと
7) 実行時に第1,2引数を与えられたらそれを fopen して fclose するプログラム
a.out in.bin out.bin
fopen:in.bin
fclose:in.bin
fopen:out.bin
fclose:out.bin
と表示しながら fopen/fclose するプログラム。
fopen と fclose 以外は何もしないことに注意。つまりほとんど何もしないプログラ
ム。
8) 実行時に第1,2引数を与えられたら
第1引数を 72x34 のグレースケールのデータ(いままでの out.bin)
第2引数を gimp でよめる RGB の raw データに”変換”するプログラム。
cp コマンドに似ている動きをする
例えば
a.out in.bin out-rgb.bin
としたら out-rgb.bin を作るプログラム。できたデータ out-rgb.bin は
in.bin を元にした RGB の raw データとなる。
9) 8) の逆をするプログラム。
第1引数を gimp でよめる RGB の raw データ
第2引数を 72x34 のグレースケールのデータ(いままでの out.bin)
に”変換”するプログラム。
10) 実行時に第1,2引数を与えられたら
第1引数を 72x34 のグレースケールのデータ(いままでの out.bin)
これに四角を書きくわえ(rect 関数で書き加える)
第2引数を 72x34 のグレースケールのデータ(いままでの out.bin)
に”出力”するプログラム。
11) シェルプログラムを使い上記コマンドを組み合わせて実行して
与えられた第1引数を gimp でよめる RGB の raw データ
で
これに四角を書きくわえ
第2引数を gimp でよめる RGB の raw データに”書き加え出力”するプログラ
ム。
シェルプログラムを使うところに注意。
すべてのプログラム名がa.out だと大変混乱する。工夫が必要。
12) ところどころで、改善点をあげる。
コメント
ついに社長の私、決断。バイナリアンへの道を具体的に指示。C 初心者の高橋君に argc, argv のプログラムを指示します。ポインタの理解もままならないのにこれを乗り越えられるのでしょうか?
新人:高橋君 日報 7/1(Fri) 18:43
作業報告します
今日行ったこと
ー"Unix/linuxコマンドの使い方"を322ページ中172-181まで読み進める
ー"やさしいC++"を81-97まで読み進める
ー引数の数を返すプログラムの作成
ー引数を表示するプログラムの作成
ー第一引数を分解し、文字として、数字として表示するプログラムの作成
今後のtodo
ー"Unix/linuxコマンドの使い方"を読み進める
ー"やさしいC++"を読み進める
ー"新C言語入門"を読む
ー実行時に第1引数を与えたらそれをfopen,fcloseするプログラムの作成
ー実行時に第1引数、第2引数を与えることでグレイスケールデータを操作するプログラムの作成
新人をバイナリアンに育てる ~ その4 ~
新人:高橋君、あまりに難しいことを頼んだため飽和中。数学はできるけど、C 言語は配列で四苦八苦している。FORTRAN できるって言ってたじゃん。FORTRAN の配列と C の配列は違うの?と思っても後の祭り。社長の私が導入をミスったのだ。
がんばれ、新人。
新人:高橋君 日報 6/27(Mon) 18:12
作業報告します
今日行ったこと
ー"linuxコマンドの使い方"を322ページ中133-141まで読み進める
ー"C実践プログラミング"を136ページ中114-121まで読み進める
グラフィック関係
ーrawイメージデータを読み込んで各グレイスケール値を数え表示するプログラムについて
仕様を満たしていなかったため訂正、ただしまだ解決していない
今後のtodo
ー"linuxコマンドの使い方"を151ページまで読み進める
ー"C実践プログラミング"を133ページまで読み進める
グラフィック関係
ーrawイメージデータを読み込んで各グレイスケール値の値を読む込むプログラムの作成
ーOpenCVを使わずに72×34の白黒イメージに四角を書き、rawデータで書き出すプログ ムの作成
コメント
返す返す残念だ。このときのプログラムが残っていない。どう間違えたのかわからない。やはり、簡単に raw イメージデータを扱うことは出来ない模様。ただ、18:12 の報告になり、やや落ち着いた。今後の ToDo がおとなしめになった。期待値としては、”パット”できるとおもっていたけど、そうはいかなかった。反省してます。
週刊社長通信 6/27
■ What's New
最近 tomorrow という曲をリピートして聞いてます。
Tevin Cambell の声が素晴らしい。
ユーチューブにあるのね
http://www.youtube.com/watch?v=WPrHx2sSdDs
■ 読書
「ゲーテル・エッシャー・バッハ」再帰が難しいまま、160ページくらい=>完全に止
まった、、、
コネクションマシンをざっとななめ読み
モチベーション入門をななめ読み
あと、C言語の本をななめよみ
コメント
2011 年の6月というと、震災の直後なのか。tomorrow を聞いて頑張ろうと自分自身を鼓舞しているね。涙ぐましい。震災で直接困っていたわけじゃなくて(被害にあった人ごめんなさい)、震災で仕事がなくなって困っていた。
あと、高橋君の教育に迷っているね「モチベーション入門」とか読んでいる。自分に必要ない。コネクションマシンの知識は、、、、今に生きてないな。
新人:高橋君 日報 6/28(Tue) 18:02
作業報告します
今日行ったこと
ー"Unix/linuxコマンドの使い方"を322ページ中142-151まで読み進める
ー"C実践プログラミング"を123-135まで読み進める
C実践プログラミングについては大体読み進めることができた
グラフィック関係
ーrawイメージデータを読み込み各グレイスケール値の数を数え表示するプログラムの作成は終了
ーOpenCVを使わずに72×34の白黒イメージに四角形を描きrawデータで書き出すプログ ム
ー四角形を描くための前準備として直線、点を描くプログラムの作成中
ーそれに伴いポインタの勉強が必要だと思われる
今後のtodo
"Unix/linuxコマンドの使い方","C実践プログラミング"を読む
OpenCVを使わずに点,直線を描くプログラムの作成
同じくOpenCVを使わず72×34の白黒イメージに四角形を描きrawデータで書き出すプロ ラムの作成を行う
コメント
4週目にしてついにポインタの話になった。がんばって、raw イメージデータを読み込むプログラムは出来たみたい。
その後の私の指示「ポインタを使わずに、配列で書いてください。」
う~ん。モチベーションを下げてないか?もうちょいやさしくいってあげればよかった。「モチベーション入門」を有効に使っていない。
新人:高橋君 日報 6/29(Wed) 18:03
作業報告します
今日行ったこと
ー"Unix/linuxコマンドの使い方"を322ページ中152-161まで読み進める
ー"やさしいC++"を8-78まで読み進める
グラフィック関係
ー保存されたrawデータを読み込み各グレイスケール値の数を数えるプログラムを作成した
ー保存されたrawデータを72×34になるように二次元配列で読み込みそのまま表示する ログラムを作成した
今後のtodo
ー"Unix/linuxコマンドの使い方"を162-172まで読み進める
ー"やさしいC++"を79-86まで読み進める
OpenCVを使わずに72×34の白黒イメージに四角形を書き出しrawデータで保存する
コメント
どんどん、下方修正されていく。かわいそうだ。「やさしいC++」になってしまった。これマンガじゃないか?マンガだけど中は難しい、、、、って前に教育した人が言っていた。
二次元配列にチャレンジ。ポインタは本を読んでから、、、という(私の)判断だね。本人は不満だったろう。
新人:高橋君 日報 6/29(Wed) 18:37
作業報告します
今日行ったこと
ー"Unix/linuxコマンドの使い方"を322ページ中162-171まで読み進める
ー"やさしいC++"を78-80まで読み進める
グラフィック関係
ー四角形を描写する関数の作成を行った
ー四角形の内側を塗りつぶす関数の作成を行った
ーrawイメージデータを読み込む関数の作成を行った
ー描写された四角形をrawイメージデータとして書きだす関数の作成を行った
今後のtodo
ー"Unix/linuxコマンドの使い方"を172-181まで読み進める
ー"やさしいC++"を81-91まで読み進める
ー作成した関数を改良する
コメント
2次元配列を使って、四角を作るプログラムを書いている。斜めの線はまだ難しいね。表示用のプログラムをこれからつくるのだろう。
「作成した関数を改良する」とある。なんか少しわかってきたのでモチベーションが上がったのかな?
新人をバイナリアンに育てる ~ その3 ~
サブタイトル:そら飛ぶ バイナリアン
新人の高橋君 GNU Development Tools を2週間で読了。どんな本かというと、、、
オーバーシー・パブリッシング - GNU開発ツール
このウェブサイトには目次もある。
http://www.oversea-pub.com/wp/wp-content/uploads/2013/01/gnudevjp_index_1st.pdf
なんで、社長の私がこれ読ませたのかなぞ。よくよく考えたら、正直無理だろう。でも2週間で読み切った。で、ちょっと早く行き過ぎたということで、「C言語プログラミング」(どの本かは今となっては不明)という本を読んでもらうことにした。
技術系の上司の良くあるミス。期待しすぎて、高望みのして、実力以上の事をさせてしまったんだ。こうなると、かじ取りが難しくなる。本人に「ちょっと難しかったね。」といってしまうと「がっかりして」しまう。ごまかしながら、易しい本に変えたのだった(たぶんそういうことだろう)。
まぁそれでも、もらったソースをコンパイルぐらいはできるから OpenCV のソースをコンパイルして、72x34 の画像を作ることには成功した。
中堅社員の日報 6/17(Fri) 18:42
- 昨日の作業の整理
- git の登録
- FrameBuffer 対応
- CMakeLists.txt の更新
- GTK, QT と同じレベルで、FB というのを追加
- cmake オプションで -DWITH_FB=ON とすると、
modules/highgui/src/window_fb.cpp をコンパイルするよう変更
- WITH_FB=ON の場合、デフォルトのダミー API がコンパイルされないよう変更
- ほぼ空の、window_fb.cpp を作成
- cvNamedWindow() に、printf() による呼ばれたことを明示する処理を追加
- cmake & make のやりなおし
- qemu で、自分の作った cvNamedWindow() が呼ばれたことを確認
- 高橋君の環境で OpenCV を動かす作業のサポート
コメント
OpenCV で FrameBuffer 対応している。ここでやってたのか。今の会社の資産になっている。6年前にはじめてたんだな。一応、高橋君の作業のサポートをやってもらっている。まぁ、やっぱり新人君にはいやってね、じゃ、できないわな。
新人:高橋君 日報 6/20(Mon) 18:35
作業報告します。
今日行ったこと
unix/linuxコマンドの使い方322ページ中 55-63ページまで読み進める。
知識にあるコマンドがあるため問題なく進んでいる。
C実践プログラミングを404ページ中39-57ページまで読み進める。
こちらは配列に入ったため少し慎重に行うべき。
OpenCV関連
-72×34の白黒イメージに四角形を描くところまでは進むことができた。
今後行うべきこと
unix/linuxコマンドの使い方64ページ以降を読み進める。
C実践プログラミングを58ページ以降をプログラムを行いながら読み進める。
OpenCV関連
-72×34の白黒イメージを45度傾ける。
-その後白黒のrawデータでセーブを行う。
-普通のプログラムで白黒のrawデータを読み込んで白と黒の数を数えるプログラムを作成する。
-普通のプログラムで72×34の白黒イメージに書いた四角形を書き、rawデータで書き出す。
-普通のプログラムで72×34の白黒イメージに書いた四角形を書き、45度傾けてrawデータで書き出す。
週刊社長通信 6/20
■ 読書
「ゲーテル・エッシャー・バッハ」再帰が難しいまま、160ページくらい
最新コンパイラ構成技法の読み返しとプログラミング
生存解析を Lisp で書いている途中
命令レベル並列実行処理(プロセッサ・アーキテクチャとコンパイラ)スーパースカラのプロセッサを作ってみたくなった
関連して Interface のCPUの動作原理とアセンブラの基礎知識を読む
社長通信<技術編> 6/20
みんながリーナス・トラバースさんになろう。=>どうすらばなれるか考えよう
GLSL について調査した。
http://http.developer.nvidia.com/Cg/arbvp1.html
vertex 用の Low Level Shader 言語(ほぼアセンブラ)。ジャンプ命令すらない。
文法通りに作ればよさそう。レジスタ(変数)は無限に使える。
したがって、
まず文法の木を作る=>一直線の木。複雑な木構造にならない。
生存解析をする
カラーリングする
レジスタの割り当て
をすれば、Low Level Shader 言語用のアセンブラに落とせそうだ。
構文解析は本質ではないので、人間が文法の木を作ってコンパイラに渡す。
つまり lisp で書く。(書いている途中)
アセンブラに落としたら今度はそれが動く vertex 用のプロセッサが必要。
これは
Lisp でシミュレーション
VHDL で簡単なプロセッサを書く
VHDL で複雑なプロセッサを書く
できればスーパースカラーに対応したプロセッサを書きたい。
積和演算をするので、スーパスカラーいらないかも。
スーパースカラー=>アウトオブオーダーなプロセッサ
ついでにレジスタを動的に割り当てるかレジスタウィンドウにするかしたい。
新人:高橋君 日報 6/22(Tue) 18:25
作業報告します。
今日行ったこと
unix/linuxコマンドの使い方322ページ中64-96ページまで読み進める。
使ったことがあるコマンドがあるため問題なく進んでいる。
C実践プログラミングを404ページ中58-60ページまで読み進める。
配列文字列で思った以上に手間取った。
OpenCV関連
72×34の白黒イメージを45度傾けるプログラムを作成していたが終了させることはで
きなかった。アフィン変換をするところに原因があると思われる。
今後行うべきこと
unix/linuxコマンドの使い方95ページ以降を読み進める。
C実践プログラミングを61ページ以降をプログラムを行いながら読み進める。
OpenCV関連
-72×34の白黒イメージを45度傾ける。
-その後白黒のrawデータでセーブを行う。
-普通のプログラムで白黒のrawデータを読み込んで白と黒の数を数えるプログラムを作成する。
-普通のプログラムで72×34の白黒イメージに書いた四角形を書き、rawデータで書き
出す。
-普通のプログラムで72×34の白黒イメージに書いた四角形を書き、45度傾けてrawデ
ータで書き出す。
新人:高橋君 日報 6/23(Wed) 18:35
作業報告します。
今日行ったこと
unix/linuxコマンドの使い方322ページ中97-110ページまで読み進める。
シェル系統の知識はあまりないため慎重に読み進めたい。
C実践プログラミングを404ページ中61-74ページまで読み進める。
OpenCV関連
白黒イメージに四角形書き45度傾けるプログラムを作成した。
またrawデータのセーブを行った。
今後行うべきこと
unix/linuxコマンドの使い方111ページ以降を読み進める。
C実践プログラミングを75ページ以降をプログラムを行いながら読み進める。
OpenCV関連
-普通のプログラムで白黒のrawデータを読み込んで白と黒の数を数えるプログラムを作成する。
-普通のプログラムで72×34の白黒イメージに書いた四角形を書き、rawデータで書き
出す。
-普通のプログラムで72×34の白黒イメージに書いた四角形を書き、45度傾けてrawデ
ータで書き出す
社長の指示 6/22(Wed) 22:40
よくよく考えたら、
”四角形を書き”
”45度に傾ける”
というプログラムを作るには、直線を書くプログラムを必要とするので後回しにします。
ということで以下のように変更
グラフィック関係
- OpenCVを使わず、グレイスケールのrawイメージデータを読み込んで
各グレイスケール値の数を数え、表示するプログラムを作成する。
- (OpenCV は使わずに) グレイスケールのrawイメージデータを読み込んで
Gimp が読めるカラーの rawイメージデータに変換しファイルにセーブする。
コメント
何を思ったか(おぼえてない)、突然、方向修正。OpenCV やっぱり新人には難しいということなんだろうね。どんどん、下方修正されている。ちょっとかわいそう。うちのような小さな会社にはこの手のノウハウはないんだよね。
新人:高橋君 日報 6/23(Thu) 19:38
作業報告します
今日行ったこと
linuxコマンドの使い方111ページから120まで読み終わる。
シェル系のため慎重に行いたい。
C実践プログラミング75ページから93まで読み終わる。
知識にほとんどないものがあるため、慎重に行いたい。
グラフィック関係
ほとんど進展はなし。
今後行うべきこと
linuxコマンドの使い方、C実践プログラミングをそれぞれ読み進める。
OpenCVを使わずにrawイメージデータを読み込んで各グレイスケール値の数を数え、表
示するプログラムの作成を行う。
同じくrawイメージデータを読み込みGimpが読めるカラーのrawイメージデータに変換しセーブする。
新人:高橋君 日報 6/24(Fri) 17:59
作業報告します
今日行ったこと
linuxコマンドの使い方を322ページ中121-132ページまで読み進める。
C実践プログラミングを404ページ中94-113まで読み進める。
どちらも読みこぼしがないようにしたい。
グラフィック関係
Opencvを使わずグレイスケールのrawイメージデータを読み込んで各グレイスケール値の数を数え表示するプログラムを作成した。
Opencvを使わずグレイスケールのrawイメージデータwp読み込み、Gimpが読めるカラーのrawイメージデータに変換しセーブを行った。
今後行うべきこと
linuxコマンドの使い方、C実践プログラミングをそれぞれ慎重に読み進める。
普通のプログラムで72×34の白黒イメージに四角形を作成、rawデータで書き出す。
普通のプログラムで72×34の白黒イメージに書いた四角形を作成、45度傾けてrawデータで書き出す。
コメント
ブラック企業脱出。17:59 にメールがきている。「どちらも読みこぼしがないようにしたい。」とかなり弱気。やっぱり、最初に難しいのをさせ過ぎると自信を失うんだな。今頃になって反省。
とはいえ、なぜか復活して、各グレイスケールの値の数を数え表示するプログラムが出来上がっている。これもう今となってはどこにもない。取っておけばよかった。
このころすでに git を使っていると思うけど、まだ、高橋君は使えてないみたい。
新人をバイナリアンに育てる ~ その2 ~
サブタイトル:そら飛ぶ バイナリアン
このブログは 2011 年に新人教育をしたメールの断片から書きこおこしている。もう6年も前の話であることに注意。新人君(高橋くん - 仮名 - )は理工学系大卒のピカピカの新人。数学は得意で球の体積を積分で簡単に出せる。結構優秀。そして、学部では FORTRAN を学んでプログラミングもしたことがあるので、結構、できると信じて疑っていない。
そこで、GNU Development Tools という某所の自費出版本をよませて(それ以外の仕事はなし。勉強が仕事)自習させてみた。その記録である。
よくわからないけど、サブタイトルもつけてみた。どっかの出版社の人、本にしてください。:-)
新人くん日報:6/15 17:52
今日行ったこと
移行作業を終了させる。
GNU Development Tools第7章動的リンクを読み終える。
内容については完全に把握していないので読み直しが必要。
今後やるべきこと
GNU Development Tools を読み終える。
FreeBSDを導入する。
実務経験7~8年の人の日報
- 画像認識
- 顔認識のサンプルプログラムの、API レベルでやってることを把握
OpenCV は haar 分類器というものを持っており、
xml で与えられるパターン情報を元に、画像のパターン認識を行うことが出来る
パターンにヒットした箇所は座標で得られ、
テストでは座標をもとに赤い丸を書いている
テストに用いた顔の認識パターンは、正面を向いたもの、である
- エッジ検出のテストの修正
エッジ検出のテストでは、matrix を使って rotate していたが、必要無いことが分かった。`
利用するカメラの性質により、画像の左上を座標の起点とするか、左下を起点とするか分かれる
どちらを起点にするかは、取得した画像データ IplImage の持つ origin メンバにより取得出来るで、
もし origin が IPL_ORIGIN_BL ( 左下起点 ) の場合、cvFlip() という API で
上下の反転が可能であることがわかったため、テストを修正した
- OpenCV 2.2 と OpenCV 1.0 の違いをより明確に調査(特に、H/W アクセラレーションについて)
H/W アクセラレーション、正確には GPU の利用機能は、2.2 から導入された
対応する GPU は NDIVIA 製のもののみで、cuda ライブラリが必要となる
GPU を使うライブラリは、既存のソフトウェアで計算する API と別モノになっている
( DirectFB のように、API は一つで、API の中でソフトウェアを使うかハードウェアを使うか
処理が分岐するような設計にはなっていない)
GPU を使った HogDescriptor という画像検出器が、CPU による検出に比べ桁違いに高速らしい
リファレンスマニュアル:
http://opencv.jp/opencv-2svn/cpp/index.html
http://opencv.jp/opencv-2svn/cpp/gpu._gpu-based_functionality.html
ChangeLog:
http://opencv.jp/opencv2-x-tips/changelog_from_21
- IplImage 構造体の中身の調査
image_data, image_size をもとに、raw データをファイルに保存するテストを作った
社長から高橋君への指示 6/15(Wed) 22:50
次の事を達成してください。
72x34 の白黒画像イメージに四角を書く
PNG でセーブ
- OpenCV で次のプログラムを作る
72x34 の白黒画像イメージに書いた四角を書く
45度傾ける
PNG でセーブ
- OpenCV で次のプログラムを作る
72x34 の白黒画像イメージに書いた四角を書く
45度傾ける
白黒のraw データでセーブ(すでに実現しているのでそれをそのまま流用)
- 普通のプログラムで
白黒の raw データを読み込む
白の数と黒の数を数えて表示する。
- 普通のプログラムで
72x34 の白黒画像イメージに書いた四角を書く
raw データで書き出す
- 普通のプログラムで
72x34 の白黒画像イメージに書いた四角を書く
45度傾ける
raw データで書き出す
今月中にすべてこれができたら大したもの。
新人:高橋くん日報:6/16(Thu) 18:16
今日行ったこと
GNU Development Tools を読み終わる。
ただし、理解がまだまだ浅いと思われるのでこのまま2周目に移行。
VMware上でFreeBSDを導入した。
ただし設定が終わり切っていないため明日以降も行う予定。
これから行うべきこと
GNU Development Tools を読みつづける。
FreeBSDの設定。
OpenCVのインストール及びプログラム作成。
コメント
この日だけ 18:16 の報告になっている。実は 18:00 に帰るためには 17:30 には仕事を終了して、日報をかいて 17:50 に日報をメールして帰るように指示していた。ブラックでない会社。まぁ小さい会社、いいことばかりじゃないけどね。ここは私の方針で継続して働ける環境を作っている。(もちろんデスマーチもありました。それで会社がピンチになったことも)。この日はきっと本を読み切るためにちょっと遅くなったんだね。
GNU Development Tools 読み終わった!!1週間ちょっと?おー誰かが指示したのかな?このままで終わらせずに2周目に突入。まだ、よんだだけだからね。でも、新人だけに、出来る気になっている。
実務経験7~8年の人の日報
- 移植用 todo の更新
- qemu for ARM の環境をサーバ に作る
- arm 向け OpenCV 1.0.0 の build
- arm 向けに、グレースケール変換のテストをコンパイル
- qemu-arm 上でグレースケール変換のテスト
-> ok
- arm 向け OpenCV 2.2.0 の build
-> ok. 手順書を書いた
- arm 向けに、グレースケール変換のテストをコンパイル( 2.2.0 )
- qemu-arm 上でグレースケール変換のテスト( 2.2.0 )
-> ok
- qemu-arm 上でエッジ検出変換のテスト( 2.2.0 )
-> ok
- ARM のボードに、OpenCV 2.2.0 のライブラリをコピー
- ARM のボード上でエッジ検出変換のテスト
-> ok
高橋くんへ
マトリックスを使った回転をしているプログラムを添付します。
新人をバイナリアンに育てる ~ その1~
以前新人教育をしたメールの文章をブログに書き起こす。
登場人物は 高橋(仮名)くん。まずやったこと。
例の自費出版本の GNU Development Tools を読ませた。
6/8 17:59 日報
GNU Development Tools 第4章コンパイルについて読み終わる。
同じくGNU Develpoment Tools 第5章 アセンブルについて実行コードの逆アセンブルまで読み終わる。
4章、5章ともに今現在読み取ることができない点はなし。
コメント
そんなことはないだろう。この時点で、新人くん大きく勘違い。がんばれ。でも、まだスキルが足りなくて4章、5章なんて理解できないぞ。理解できないことを理解できないのが新人たるゆえんか。
6/9 17:52 日報
GNU Development Tools 第5章アセンブルを読み終わる。
同じくGNU Development Tools 第6章静的リンクを_startシンボルによる致命的エラーま
で読み終わる。
アセンブラについては若干解析が不十分だと思われる。
また、静的リンクについてはリンクが異常終了するため少々難航するかと思われる。
コメント
その後何が起こるか正確には思い出せないけど、まぁしかたがない。というか、その技量を上の人が見極めるのはどれだけ大変かが後でわかった。ついつい期待しちゃうんだよね。だって本人の報告から「アセンブラについては若干解析が不十分」ってあるから、裏を返せば、ちょっとがんばって解析すると、アセンブラとかできちゃう?とおもっちゃう。
私の回答
エラー内容を精査してXXXさんと一緒に解決してください。
社長通信
社長技術通信 6/13
みんながリーナス・トラバースさんになろう。
=> そのためには、A面B面を作らない
=> 具体的には、自分探しをしない(夢や憧れを追わない)
GLSL について調査した。
http://http.developer.nvidia.com/Cg/arbvp1.html
vp1 => vertex 用の Low Level Shader 言語(アセンブラ?)
文法通り作ればよさそう。
あとはスタックを作るのと、テンポラリレジスタのセーブ・ロード
Sparc のように in register をtemp register 8をout register 8とすればよさそ
う?
Result 用のレジスタも必要かも。
コメント
当時、社長通信とか言ってみんなに発信していた。いまも技術通信に変わってやり続けている。この何とか通信10年以上、社員に向けて毎週発信しているんだよね。継続は力なり。
6/13 17:55
GNU Development Tools 第6章静的リンクまで読み終わる。
完全に理解したわけではないので今後読み直しが必要。
今後の予定としてはGNU Development Tools を読み進めつつ、Ubuntsuの導入などを行う
予定。
コメント
これだけ読むとすごい進捗。2~3年かかることを3日で達成している。新人すごい。