ラベル 講義 の投稿を表示しています。 すべての投稿を表示
ラベル 講義 の投稿を表示しています。 すべての投稿を表示

2016年6月28日火曜日

我が強い、連絡のとれないメンバーへの対処

先日、とあるプロジェクトが学科内の講義で行われていると書きました。
院生全員が1班につき 1〜2人くらいでPMをしています。僕もやってます。

中間の時期になるとPM同士で集まって話し合いをするのですが、そこでの出来事。

「なかなか連絡がとれないメンバーをどう対処するか?」

いろいろやってるらしく、
連絡ツールを使ったり、同級生から呼びかけたり、講義終わりを捕まえる等々...。
ただし、

これでも連絡をくれない

らしいのです。
どうやら、他のメンバーとも連絡を取っていないらしい。
ただし、テーマに対しては妙に意欲的らしく、自分の案を通したいらしい。
どうやら、「自分の案が最強だからPMにも連絡しなくてもいいもの」とのこと。

え、どこからそんな自信が生まれてくるの...。

とりあえず、嘆いてもしょうがないので、僕がそのPMの立場で考えてみた。


  • 自由にその子の好きにやらせてみる
  • リーダーを変える
  • 他班のPMが会議に出てみる

の3つが考えられそう。

自由にその子の好きにやらせてみる」というのは、投げやりなように見えます。
しかし、根拠はある。
 僕は教職をとったことがあります。子どもたちの中にはグループワークができない子が当然います。そういうとき、どうするか?自由にさせてあげればいいのです。無理にグループに入ってもらう必要はないのです。その子が気づくまで放置プレイです。「え、それじゃあ永遠に入ってこないのでは?」と思うかもしれません。大丈夫です。ほとんどの場合は入ります。なぜなら、グループワークの方が1人でいるより楽しいからです。(ここが重要なのですが...。)人間は、ほとんどの場合、社会的な生き物なので1人は寂しいのです。楽しくないのです。つまり、この方法は人間的な側面を利用したグループワークの作り方、だと思います。
 ただし、この方法が使えるかは実際にやってみなければわかりません。例は子どもの場合です。今回は大学生。もしかしたら、さらに引きこもるかもしれません。(もしそれで超大作ができれば、一応ウマウマなのですが...。)さらに、時間的制約がある場合はなおさら取りにくい方法です。班を2つに分けるようなものですから。

リーダーを変える」といのは、現実的な方法かもしれません。
 その子をリーダーにしてしまえば、もう後はついていくだけです。もしかしたら、強力にリーダーシップを発揮して大成功するかも。あわよくば、グループの大切さに気がつくかも。
 ただし、この方法はその子を増長させる原因になるかもしれません。この後さらにPMのアドバイスを聞かなくなるかもしれません。また、その子以外が従うだけの立場になるので、心情的に可哀想です。

他の班のPMが会議に出てみる」というのは、客観的にグループを判断する方法です。
要するに、うまくいっていないことを外部から指摘してあげるわけです。「え、その班のPMが言えばいいじゃん」と思うかもしれません。しかし、現に連絡も取れないのです。聞いてないも同然です。また、班のPMは参加者の立場なので客観的になれないかもしれません。なれても発言力が弱いです。
 これは特にデメリットはないと思いますが、会議に出てみたPMの話し方次第です。もし、ケチョンケチョンに言っちゃうと、その子はもう来ないでしょう。だから、話し方がわかるPMを読んだほうがいい。

だいたいこんな感じでしょうか。僕は最初の「自由にその子の好きにやらせてみる」を推したい。
僕だけの考えなので、他にもベストアンサーがあるでしょうが、とりあえずここまでにしておきます。こんな対処があるぞ、という方はコメントくださいお願いしますm(_ _)m

でも、ま、大学生になって連絡もできないのが悪いのだけど。

2016年6月21日火曜日

アイデアのつくり方

大学ではアイデアを出し合って企画する講義が多いです。
僕たちの学科にも大学 1年生と2年生が、あるテーマに沿ったプロジェクトを組む講義があります。そして大学院生はそのプロジェクトマネージャー(PM)を行う必要があります。

その講義の中で紹介されていた本がありまして、
ジェームス・W・ヤングの「アイデアのつくり方」です。

先日、本屋さんで手にとって、安かったので買ってきました。800円です。
しかも、本文は100pもないです。ちょー薄い。
ただし、この本のふれこみは、

「60分で読めるけど一生あなたを離さない本」

です。また、あらゆるアイデア本の祖なのでは?という本です。(正確にはわかりません)
発売されたのも1988年と、30年くらい前です。

書いてある内容はとても簡単で、
  1. 情報(事実)を集める
  2. 情報を理解する
  3. 他のことに没頭する
  4. ユーレカ!(見つかった!)
  5. アイデアを具体的にする
以上の5つだけ。どういう意味なのかは、本を読んで理解してほしい。(僕もあまり理解してなかったり...)

しかし、理解できそうで簡単そうなのに、この本の著者は「実践することは難しい」と言う。
なるほど、確かに。
「知っていることと、それを行えることは違う」とよく言う。

そう思いつつ、僕は研究に必要な情報をカードに書く作業をしようと思います。
ぜひ、買って(借りて)よんでみて!

2016年6月7日火曜日

TensorFlowソースコード読み会のメモ

# 5/21 ~ 22 ソースコード読み会
私たちの院にはソフトウェアシステム論という講義があります。
学生が読んでみたいソースコードを持ち合わせて、読んでいくという講義です。
今年はTensorFlowを読むことになりました。
以下、メモをカテゴリ別に"自分向けに"読みやすくしたものです。時系列順ではありません。だから言ってることほぼわかんないかも。

以下メモ

## C++ に関すること

* c++ raii
ポインタを宣言をしたところで、ポインタの解放の仕方を定義する
スマートポインタともいう。arcとも。

* <class T>
<typename T>と大差ない。

* thread pool
あらかじめスレッドを何個か作って、あとあと仕事を任せる。
仕事を任せるにはsynchronized queをつかう。

* auto
http://d.hatena.ne.jp/prettysoft/20101113/1418577983

* 引数に&が入り乱れるのはC++のだめなとこ?

* Copy()
 = 0を入れないとリンカが怒る
なぜ?

* C++は間違えるとぬるぽする

* 初期化する前の変数を代入するとぬるぽで即死

* ...ってなに?
可変長引数

* .*は何?
メンバへのポインタ演算子?

* _から始まる変数(あっとんさん)
C++ の場合は意味がない。強いて言うなら、自動生成されたコードの場合は、_をつけて変数の重複を防ぐ場合がある。
pythonには意味があって、インスタンスという意味がある。
obj-cにもまた意味がある。調べよう。

* Eigen
C++テンプレートで実装された線形代数ライブラリ

## Python に関すること

* p self.__dict__.keys()
でpythonのオブジェクトの中身を観れる
しかし、年に1回しか使わない?

## ソースコード読みに関すること

* factoryパターン
コンストラクタをそのまま使うのではなく、使うオブジェクトに頼んでもらう。
newの中になんでもしてはいけない。
C++ではその処理にチューリング不可能と書いている。
だから、オブジェクトに作らせたほうがいい。
積極的に使ったほうがいいパターンの一つ。

* return 0 or 1
古い。cobraからきてるはず。
関数の戻り値は複数戻してもいいはず。なぜならばレジスタは複数あるから。

* printfよりexitを
デバッグ時に追えなくなる可能性がある。

* メモリアロケーションチェックは無駄?

* 初期化は最初は読むのを飛ばす


## その他のこと

* SWIG
sinplifyd wrapper and interface generater
C/C++を他言語に接続するためのOCC。

* fortranとvector machine
なにか関係がある

* snprintf()を使え?
C99の定義らしい。なぜこれを使うのだろう?

* デバッガいじった
やらかした...
b : ブレークポイント設置
n : 一つの処理を進める (関数をスルー)
l : ソースを何行か読んでくる
l 数字 : 数字から読んでくる
l 関数 : 関数を読んでくる
p : 変数中表示
bt : バックトレース
up : 関数呼び出しに戻る
return : 帰る(Pdb)
s : 関数を見るn
blake list : ブレークポイントのリスト?
だいたいこんな感じか?もしかしたら間違ってるかも

* SWIGの定義ファイル
*.iにはいろいろ書いてある。

* rendez(vous)
出会う

* bariar?
スレッドが終わるまでまつ

* 309はlock
lockが抜けると、lはデストロイされる
lはスタックなので、デストラクタされる際にlock解除?

* ghcは歯が立たない
デバッガすら立ち上げられなかった

* lldb -p $pid
プロセスのデバッグができる。

* dst
destination

* cudaMemcpyAsync()
memcpy()でエラー?CUDAの中でだめなので、引数が間違ってる?
変数をGPUに送り込むところ。

* ExecutorState()
ワーカスレッド

* m_rightImpl.evalSubExprsIfNeeded()
supportしていなければ、folseを返す。
もしかしたら、folseを返せば上手くいく?

* LAUNCH_CUDA_KERNAL()
実際にGPU側で動く

* derived
派生

* rhs
right hand side

* async
ソフトでは計算が終わるのを待たずに、計算。
ハードの場合は、クロックに沿って計算する。

* ABCL
futer言語

* catastrophic error
破滅的エラー

* nvcc cccc.cc
コンパイルコマンド?

* cudafe
cudaコンパイラコマンド?

* vimでsyntaxを変えられる

* dirs コマンド

* 名前から機能がわかるのすごい
名前に努力があるの + 名前が何を意味するか推理できる

* ターミナル間の移り、ショートカットかっこいい
http://techacademy.jp/magazine/5155にある

* grep 探索するもの 探索範囲

* tensor flore
実はGPUのドライバだった。
機械学習用のライブラリってわけではない。
学習自体はsklearnがやっている。

* progressバーを廃止するとdown loadとinstallが3割増しで早くなる?

* bazel
ビルドツール
それにしてもビルドソフトって何が嬉しいんだろう。
規模が大きくなったコードにしか使わないイメージ。

* ゲーム専用マシンを買うとGPU機が買える?


メモ、以上です。

今後勉強したいことまとめ
・bazel ビルドツール(ビルドが簡単になるみたいなので)
・llvm デバッガ(挙動追跡する場面がいくらかありそうなので)
・Unix コマンド(特に検索系)
・python
・TensorFlow

多いな...。
Unixコマンドは即使うので、勉強しがいありますね。
pythonは今後必要になるかも。