2016年12月29日木曜日

Doxygenのメモ

きっかけ

ちょっとだけDoxygenの勉強をしたのでメモっておこうかと。
(引用元はわすれました、ごめんなさい。)

メモ

# Doxygenの書き方

## ソース内ドキュメント
/*
 * 
 * 
 * 
 * 
 */

## 書き方
ファイルのはじめに書くもの
/**
 * @file ファイル名
 * @brief 一行要約を書き入れる
 * 
 * @par パラメータ(引数,returnする値)
 * @date 日付
 * @date 更新するたびにつける
 * @author 作者、筆者
 */

関数毎に書くもの(関数ドキュメント)
/**
 * コメント
 * @param 引数の説明
 * @param 引数の説明
 * @retunr returnする値
 */

ドキュメントに残るコメント
/** @var 変数の説明 */
/** @struct 構造体の説明 */
/** @class クラスの説明 */
/** @exception 例外の説明 */

ドキュメントに残らないコメント
/* */

非推奨コメントアウト
/*
こーど
*/
/*
こーど  
*/

推奨コメントアウト
//コード
コード

2016年12月28日水曜日

クリスマスイブにRaspberry Piでイルミネーションを作った話。

きっかけ


  • Raspberry Piが余っていたから
  • クリスマスまでに何かしたかったから
  • 外で見た自転車を漕ぐと点灯するイルミネーションを見たから
  • 友達に「工学部だからキーボードで点灯するようにしたら」と言われたから
  • 本屋で見たイケメンが「Raspberry Piで何か作りてーな」っていう意識高いことを言っていたのがムカついたから

参考にしたもの

やりたいことはLチカ(LEDをチカチカ点灯させること)だったので、以下を参考にしました。

さっそく

できました。

キーボードを叩くと、
点滅します。

仕組み

まず、OSの準備からですが、第8回「2皿目のラズベリーパイ!Model B+のスピード調理に書いてあるので割愛します。

次に、ブレッドボードにLEDと抵抗、導線を次のように置きます。

ちなみに置きかたについても、第9回「ラズベリーパイで電子工作!Lチカ…の前にLピカ!」に書いてあるので割愛します。

LEDを光らせる電源として利用するのはRaspberry PiのGPIOです。
GPIOはRaspberry Piからの命令を電気信号で送る部分のことです。

LEDは次のようにつなぎます。抵抗を反対につなげると光りません。

GPIOのピンは次のような配置になっています。
黄色丸は命令が来るピンで、黒丸はアース(接地)のピンです。ちなみに、濃い黄色丸や赤丸は安定して電気が流れているピンです。
使用しているのはRaspberry Pi B+なのでA+と比べ、ピンの本数が違いますが、左から26本目までは同じらしいです。

今回は、3、6、14を利用します。(14番は本当は必要ないんだけど、接地まで導線が届かなかった...。)

さて、この3番のGPIOに電気信号を流す方法です。
Raspberry Piのターミナルを開いて、次のコマンドを打ちます。
すると、/sys/class/gpio/内に、gpio2へのエイリアスが作られます。
ここで、次のコマンドを打ちましょう。

これで点灯テストは終了です。

次に、点灯させるためにキーボード入力の検出をしましょう。
とは言っても、調べてみると、キーボード入力のイベントハンドラ(キーボードで打ち込んだら動くプログラム)を検出しないといけないので、ちょっと面倒くさい。
なので、標準入力を使いましょう。

OSには標準でPython2と3が入っているので、2を使います。(3を使ったほうがいいことはわかりますが、調べた方法では3が使えなかった...。)
次にこのコードを書きます。text editerが使いやすいかも。
そして、python2 getch_test.pyで実行しましょう。(実行する前にgetchをインストールしておきましょう。pip install py-getchでできます。)

これでキーボードをカタカタすると光るはずです。

感想

目的は一応達成しました。とにかく、

「クリスマスの光は僕らのタイピングでできているんだ...。」がやりたかった。

反省点としては、
確かに光るんだけども、消えたりしないでほしい。交互に光ってほしい。反転するようにしたら良いかも。GPIOピンを2つ使えばいいかな。
あと、LEDの数が少なくてしょぼい。悲しい。
くらいです。来年もやりたいな。修論...。

2016年12月22日木曜日

「よくわかる人工知能」読了

清水さんの「よくわかる人工知能 最先端の人だけが知っているディープラーニングのひみつ」を読みましたので、感想を書いてみようかと思います。

きっかけ

そもそもなぜこの本を読んだかというと、TwitterにKindle版発売の情報が流れてきたからです。(あまり覚えていない)
実際、清水さんのページを見てみると、いろいろ興味をそそるものが書いてあるわけです。
「人工知能って漠然としてて何だろう?情報工学(?)を学んでいる身としては読んでおきたい!」と思った次第です。

僕の前知識

人工知能ってニューラルネットワーク(NN)とか深層学習(DNN)とかでしょ。仕組みはわからないけど知ってます、仕組みはわからないけど。
あと、なんだっけCNNとかRNNとかChainerとかTensor flowとかいろいろあるよね、よくわからないけど。ああ、並列計算もするよね。CUDAだっけ。Geforceが云々...。

これくらいの断片的な知識しかありません。

読んでる最中の僕

「はえ〜すっげ〜。なんでもできるやん。」
「一部では人間よりもいいじゃん。」
「あー、そういう方法があるのか。これってあれに応用できるよな...。」

読んだ後の僕

「人間ってどうなってしまうんだ...。」

最後の疾走感がすごかったです。
特に、人間の進化について。
宇宙規模のネットワークになるって話には「マクロスF」かな?ってなりました。
インプラントみたいな技術は出来始めているらしいから、あと5年くらいでいろんなニュースが生まれそうです。

僕の断片的な情報はパズルピースを埋めるように繋がっていきました。
DQNのような強化学習は面白そうです。オートエンコーダは使ってみたいですね。


2016年7月28日木曜日

BCB10.1 Berlinにアップグレードできました!

この前のつづき。
進展があったので書きます。

進展あったよ

問い合わせのメールをembarcadero社から連絡があって、
弊社のサーバーエラーでした
とのことでした。とほほ。連絡してよかった。(一応、サーバーエラー時のやり方も教わったけども)

気をとりなおしてつづける

windows 64bit版と32bit版を選ぶ。(動かないことがあると困るから念のため)
パッケージはすべて選んでおいた。(動かないことがあるとk(ry)

完成

とりあえず、インストールできました。( ^ω^ )

2016年7月26日火曜日

BCB10.1 Berlinへアップグレードしてたけど...

きっかけ

研究室のC++ Builder(以下BCB)がXE6なので一気に10.1へアップグレードする、というお話。研究にも使うので。BCBについては前に話した通り。

さっそく落とすぞ

embarcadero社のページからメールが来ていたので、それに従う。
3分くらいでセットアップファイルを落とせる。

実行してみると、ウィザードが始まる。
するとembarcadero社から送られてきたSerial Numberと、ESDのユーザ名、パスワードを打ち込めと出るので打ち込む。

... 1分後。

Internal server error ??
サーバーからダウンロードできなかったらしい。

あれ?エラー?

んー。探す?
するとこんなのが。試してみます。

  • 今あるC++builder 関連のソフトをアンインストールする。 -> Internal Server Error
  • isoファイルを利用してインストールする。 -> Internal Server Error
  • ライセンスに関連するファイルを消す。-> Internal Server Error

だめだ。できない。
学科にあるUTMが原因かな?それとも、ファイアーウォール?
とりあえずissueを出しておきます。


2016年7月21日木曜日

TeX Live2016へアップデート

きっかけ

TeXは去年のこの時期にMac TeX Live2014を入れて(2015がなかった?)以来、アップデートしていませんでした。でも、レポート書く時に不便なことが。今回はそのアップデートをしようかと。

で、どうするよ?

とりあえず、TeXといえばTeX Liveを探すでしょ。すると、
tlmgrを使用してのアップデート
あるじゃないですか。( ^ω^ )
なになに...
sudo tlmgr update --self --all
でTeX Liveの更新ができるらしい。やってみよー、ポチー。
Unknown directive ...containerchecksum c5920x........ , please fix it! at  /usr/local/texlive/2016/tlpkg/TeXLive/TLPOBJ.pm line 210, <$retfh> line 5579. (コピるの忘れた...。後述の松浦先生のwikiのを拝借。)
んん!?
なんだこのエラーは...。見知らぬディレクティブがある? (読めない)

なんだこれは

なにはともあれググる。すると出てくる松浦高志先生のwiki

この場合,tlmgr自体を更新する必要があります.
へー。どうするね。
Macなら(中略)update-tlmgr-latest.shをダウンロードし実行します。
なるほど。
リンクからとってみよー。

...
...
...

あれ?リンク切れてる。
ググるしかない。ここに同じ質問が来ているみたい。同じ人はたくさんいるなー。
お目当のスクリプトはここにあった。

実行だ!

よし実行するか。
sudo sh update-tlmgr-latest.sh
今度はうまくいきました。
では、改めて
sudo tlmgr update --self --all
お、アップデートが始まった。
[    1/1361, 02:20:56/02:21:56] auto-install: ...
ん?1361?多くない?

...
... イカしながら ...
...

結局

3時間後、ようやくできた。

2016年7月19日火曜日

GUIアプリを作ったことがない人がBCBでwindowsアプリをつくる・1

実験のために専用の実験アプリが必要になりまして。
研究室にある、アプリを作るソフトといえばBorland C++ Builder(BCB)がありまして。

BCBを使ってwindowsアプリを作る

ことになりました。GUIアプリを作ったことはないですが。(注:友達が作っているのは見たことがあります)

さて、BCBってなんだよ!って感じですね。

BCBはEmbarcadero社が売り出している統合開発環境(IDE)です。
IDEでは何ができるかというと、コードを書いたり、実行したり、デバッグしたり、バージョン管理したり、ビルドしてリリースしたりすることができます。しかも全て簡単に。(注:やり方を知っていれば)

BCBでは特にビジュアルコンポーネントライブラリ(VCL)が用意されています。
VCLとはアプリを作る上で必要なラジオボタン、チェックボタン、フォーム、タイマーなどが用意されて、一つのライブラリになっているものです。つまり、VCLを画面に設置していくだけでアプリが作れる。(注:動きのないハリボテアプリです)

ふむふむ、という感じ。
じゃあ作ってみるかー。

 (´・ω・`)
_(__つ/ ̄ ̄ ̄/_
  \/     /
     ̄ ̄ ̄ ̄

 (´・ω・`)
_( つ ミ  バタンッ
  \ ̄ ̄ ̄\ミ
     ̄ ̄ ̄ ̄

 (´・ω・`)
_(   )
  \ ̄ ̄ ̄\
     ̄ ̄ ̄ ̄
わからん...。

何がわからんって、まずボタンが多すぎる。ソースツリー?インスペクタ?プロパティ?
よくわかんねぇよ!!

というわけで次回につづく。
(追記2016/12/17: つづきません。一応、作ったものは使われています。)

2016年7月14日木曜日

たこ焼きパーティー

研究室で作業ばかり、勉強ばかりしてると息がつまるときがありますよね?
そういうときは息抜き。

たこ焼きパーティーがしたい

ということで、やっちゃいました。
他の研究室もおにぎりとか焼肉とかしてるし、いいよね?(よくない)

材料は、


  • たこ焼きの粉 1kg(300個分)
  • 水 たくさん
  • 卵 6個
  • ネギ 1本
  • 天かす 1袋
で生地をつくり、
具材は、

  • タコ 1パック
  • 切れてるチーズ 1箱
  • トマト 1パック
  • さんまカンズメ 1個
  • 食べるラー油 1瓶
  • カニ缶 1個
  • 貝柱缶 1個

ですね。トマトとさんまはどうなるのかと思いましたが。
あと、
  • オリーブ油
  • 青のり
  • カツオ節
  • ソース
があればおしまいでしょう。


トマトの違和感がすごい。あとさんま。ラー油はいいとしても...。

トマトはそのままひっくり返すと割れるので、一度どけてから、生地を継ぎ足すとうまくいくみたい。職人技が必要ですね。あまり大きくないトマトを買うと良いのかも。

味の感想。
  • タコ ー> 普通。うまい
  • 切れてるチーズ ー> チーズが溶けちゃった。風味だけ。まあまあ。
  • トマト ー> ピザの上にあるプチトマトのような味。うまい。
  • さんまカンズメ ー> 僕は好き。
  • 食べるラー油 ー> うまい。が、辛い。
  • カニ缶 ー> うまい。が、かゆい(カニアレルギー持ち)
  • 貝柱缶 ー> うまい。が、そのまま食べたい。
だいたい4000円かかってしまった。
ま、たくさん食べれたし、息抜きになったからいいけど。
今度は2台のたこ焼き器でやろう。あと、もっと人を増やそう。

勉強は明日からでもできるぞ。(おいおい)

2016年7月12日火曜日

paizaコードガールこれくしょんのpython編を終えて

1ヶ月くらい前からちょくちょくpaizaのコードガールこれくしょん(以下コードガール)をしています。
きっかけはPythonを使う・教えるようになったから。

機械学習や構文解析をするときはPythonは必須みたいなところがありますね。
また、低級言語(CやC++)よりも軽量言語(PythonやRuby)の方が学びやすいのかもしれません。(アーキテクチャを知る上では低級言語を学んだほうがいい気もするけど)

コードガールではRuby、Java、PHP、Pythonが学べて、私はPython編を終わらせたというわけです。
感想は、

自分でweb検索して勉強するほうが早い

です。
私はCやC++、Rubyでプログラミングできるので、web検索でPythonの構文を覚えるのは難しくないです。
しかし、

反復練習にはもってこい

です。
1 ~ 17章くらいまであるのですが、標準出力から制御構文、標準入力、乱数くらいしかやらないです。つまり、徹底的に覚えるわけです。
さらに、

タイピングの練習にもなる

のです。
というのも、このゲームでは速くクリアするほど得点が多いのです。したがって、プログラミングもタイピング練習も同時にできるのです。

ちなみに、コードガール「これくしょん」と付いているので、ガチャの要素があります。
しかし、課金は一切ありません。だから、まわし放題。

ガチャ欲と勉強欲が満たせるので、疲れたときの息抜きでやってみるのがオススメです。


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月16日木曜日

ie人狼2回目振り返り

結構頻繁に人狼をしています。
今回は振り返るけど、いい点、改善点しか示しません。(振り返りメモに人名があるので書けない...。もし、参加者の方がこのブログを見ていてよければ、それも載せます。)

以下振り返り

今回の反省をまとめます。
良かったところ
・人数が多く、その村なりの楽しみ方ができた。
・各々が自己紹介できた。
・人狼を苦手と思う人がいなかった。(予習ページがあると、なお良い)
・狐勝利を出せた(一般的に勝利できないので)
・PCに配役を表示して、周知しやすい環境にした。
・観戦者が多かった。
・Twitter周知はわりと良かった。
・思い切って他の研究室に話しかけたら、意外に参加してくれた。
・酒飲みということで、たくさんのお菓子とお酒を参加者が自主的に持ってきてくれた。そのため、人狼で吊られても楽しくない思いがなかった。
・twitterでの人狼推理は楽しい。

改善点
・人数が多いと、人の名前が把握しづらい。
-> ガムテープで名前を書く?
-> プレートを置く?
-> スライドで表示する?
・人数が多いと、ゲーム進行が遅くなる。
-> 遅くなっても楽しめるようにする?
-> 少人数(8人まで)にする?
・自己紹介の仕方が甘い
-> 興味のあること、所属、今やってること、使ってる言語、押しキャラ
・アプリの問題で、狩人二人設定や背徳者を選べない
-> こちらで簡易なアプリを作る
-> ついでに推理ツールを導入する
・酒飲みでは思考が落ちる、または酔ってしまう(それは狙い通りなんだけど)
-> 目的を最初で説明する
・初心者への配慮がたりない?
-> 経験者はフォローを
・村人が吊られたがっている(別に悪いとは言わないけど、TRPGとしてどうか)
-> 「積極的に生きようとしてください」とお願いする。
・twitterでの推理は、最初は参加するけど、あとあとダレる。
-> 墓場は基本twitterでの推理にして、あとは自由に。柔軟性を持たせる方法を

2016年6月13日月曜日

ie人狼振り返り

僕のいる学科ではアナログゲームが流行り始めています。
ちょうど人狼をやりたいという要望が多かったので、人狼アプリをダウンロードしてGM役を引き受けています。

今後の人狼の参考にという意味で、人狼を振り返ります。

以下振り返り

人狼振り返り

開始時刻が30分以上遅れた
-> 即日だったため。ワンナイト人狼などに変更できるようにする。

狼1狂1占1狩1村3
狼が即釣れてしまう。占いが初日に出ないパターンがある。
出ない理由は、占いと狂人が占いとして出やすいため、狩人が迷うから。
セオリー的には出た方が1/2で守れるし、狼は基本的に噛みに来ないからいいと思うが、今回は初心者もいたので残念ながら、思考が足りなかった。

この構成で3ゲームしたが、2ゲームほど狼RTAが続いた。

狼2狂1占1狩1霊1村2
割と村側が強い。金川さんが発言力が強いためもある。人狼アプリでは、人狼同士の会話がないのが難点である。

狼2狂1占1狩1霊1村2役欠けあり
占いが欠けてしまうと、狼側が相当な有利になる。実際、狂人が占い騙りをして、村側は全員信じてしまった。そのため、役欠けはチャットがない限りしにくい。

動画を見て
狼1狂人3占1狩2村1の構成は面白そう。占いが大量に出てきそう。

今後
狐と背徳者を入れる、共有者を入れるというのがセオリーかな。
役欠けは狼側が不利な時に行うと良いかもしれない。
あと、タブレットの電池が減るため、充電もする。議論時間は4~5分くらいがよいと思う。twitterによる推理を導入したが、tweetする人は少なかった。墓については、このままにしておいて、今後考える。

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は今後必要になるかも。

2016年6月3日金曜日

一ヶ月まるまる放置記念と、今更自己紹介

なんと、一ヶ月まるまる放置してしまいました。

どうも、あきおです。

生活環境の変化と研究関連の雑用、講義課題の消化に明け暮れてました(言い訳)。

最近、ふと気付いたことがありまして、





僕、自己紹介してない!

いろんなblogを読んでみたけど、みんな自己紹介してる!!1

というわけで、反省の自己紹介。


名前:   
「あきお」ともうします。本名は伏せます(伏せきれてない)。

性別:    
男性だよ。

なにしてる人?:
情報系の院生をしています。専門は音声です。今は週1で情報講義のTAをしてます。

趣味は? : 
プラモデル作ったり、車の世話をしたり、映画見たり、ボドゲしたりしてます。最近は黒猫のウィズをしてます。その名前も「あきお」です。見かけたら友達申請よろしくお願いします。

だいたいこれでいいかな?

というわけで、これからも気ままに投稿します。

2016年6月2日木曜日

Facebookに登録すると顔写真を求められる?検証してみた。

講義でTAをしています。TAしていて勉強になることとか、やったことをまとめようと思っています。

しかし、今回はちょっとホットなものを先に書いちゃいます。

「先週の講義でFacebookに登録しよう!」という課題でのこと。

受講している学生の方々からトラブルの質問が殺到しました。
「Facebookに登録しようとすると顔写真を送ってくださいと言われます!」

ええ〜。そんなことあるの?
どうやらセキュリティチェックのために送ってほしいそうな。
こんなのあったかなぁ?と悩んでいる間に、結局、解決できず。

仕方がないので、検証してみよう!
※注意! 検証では使用しないGmailアカウントやFacebookアカウントを取得して検証しています。一度に大量のアカウントを取得することはいろいろ問題が起こります。くれぐれも軽い気持ちでしないように!(まあ、1つや2つは大目に見て...。)

facebookでセキュリティチェックされるので、避けられる方法がないか試してみる。
gmail 5アカウントとってfacebookに登録してみる。(メールアドレスは伏せます)

まず、gmailにアクセス。

まずはここから。
いうまでもないか。

1つ目のgmailアカウントは無事取れた。

2つ目に差し掛かった時、ここで問題発生。アカウント確認のために、電話番号かボイスメールを要求される。ブラウザが同じだからか?IPが同じだからか?とりあえずブラウザを変更して登録してみる。

セキュリティのためのアカウント確認画面

できた。あと、男性からその他に変えてみた。あと名前も、日本語にした。

どうやらfirefoxでは複アカはだめらしい。chromeでもダメなようだ。
サーバーではIPアドレスとOSが同時に取れるから、もしかしたら一定時間内でアカウントを複数作ろうとしたらセキュリティ確認がくるのかも。

しょうがないので、5アカウントを取るのをやめて2つのアカウントを使って登録してみる。

Facebookは、google先生に検索してもらえば一発ででてくる。

必要なことを記入しよう。

1つめのやつでできた。特に何も言われなかった。
特になにもなく登録完了。

2つめいってみよう。できた。なんだろ。んーーー。
表示は違うものの、難なく登録できるの図。

もしかしたらだけど、gmailと一緒で、同じIPアドレスからの複数アクセスがあったとき、認証が起きる感じかな?

少し調べてみると、こんな記事があった。
http://sns-lib.com/Facebook/2014/11/05/42

個人で複アカを持つことができないらしい。規約違反になるそう。
つまり、写真提示を求められている人って、もしかして、プロフィールを同じにして登録している?
この場合、確認のために写真提示はありうるかも。

じゃあ、どうするべきか。

プロフィールを変えたらいいんじゃないかな?

あるいは、個人アカで講義登録するか。



2016年4月8日金曜日

CentOS7にClamdを入れてもウイルス検知しない。

研究室のサーバーを新しく作ることになって、CentOS7でやってます。
CentOS7にした理由は、講義で触ったことがあるからです。
Clam Anti Virus(clamav)は有名なアンチウイルスソフトで、yumでインストールできます。
今回はclamavを導入しようとして問題が起きたことを書きます。

下調べ

  1. 基本はアンチウィルスソフト導入を見ながら構築
  2. RPMforgeは導入済み(RPMforgeリポジトリ導入CentOS7にサードパーティリポジトリの追加を見ながら)
  3. 本家Clamavのドキュメントを見ながら

やったこと

まず、RPMforgeリポジトリを入れるところから。
yum-plugin-prioritiesを入れて、これから追加するリポジトリに対してpriority(使用する優先度)をつけていく。これでリポジトリの中身が競合しないはず。

そして、RPMforgeを追加する。
ついでに、epelリポジトリとremiリポジトリも追加する。
この3つのリポジトリを使うためには--enablerepoオプションを明示しておく必要があります。ただ、僕はその方が間違って他のリポジトリからインストールしないと思うので、明示的にしました。

ここからが本番。

clamavを導入します。
ちょっと雑になってきた...。

問題点

clamavをインストールしたからには、ウイルスを検知するはず。テストウイルスを用いた検知を行ってみます。 これは当然の結果。 次は、ウイルスのある状態です。eicar.comというテストウイルスを使います。
まずは、ウイルスがない状態で。
あ、あれ??
なんで反応しないんだろう?単体でテストしても引っかかりません。あるぇー?
ここでこの問題の原因を予想します。

  1. もしかしたら方法が間違ってる?
  2. もしかしたら学科にUTMがあるから?
  3. もしかしたらバージョンが古い?

結果

1について、
友人に検証してもらった結果、できませんでした。

2について、
友人の環境で同じ方法で検証してもらいましたが、できませんでした。

3について、
調べた結果、バージョンが少しだけ古いですね。
というのも、最近RPMforgeリポジトリはメンテされてないらしいんです。
でも、epelを使ってもできないからな〜。

2016年4月1日金曜日

go langを勉強してみる(1)

「並列処理できる言語ないかなー。Cばっかりだし、他のがいいよー」とか思ってたら、学内でgo lang勉強会が開かれてたので参加してみた。

やってたこと

goは講義でも聞いたけど、触るのは初めて。
勉強会では、ツアーをして構文に慣れることから始めました。

触ってみての感想

変な感じの言語だなー、と。僕はCとRubyを主に使ってたので入りは楽でした。
どんな感じで変かというと、
  • 型宣言が変(型宣言が後にくる)
  • return文が変(最初に宣言するパターンとreturnに明示するパターン)
  • for文とif文に()がなくて変(これカッコを入れるとエラーなんだぜ?)
  • 構造体pointerが変(たまに変な挙動が)


でも、便利なものもあって
  • 型推論が便利(:=が便利)
  • deferが便利(遅延して実行してくれるのは何かに役立ちそう)
  • sliceが便利(初めての概念)

今回はできなかった並列分散のgo routin(?)は今度やってみます。

2016年3月25日金曜日

bloggerの予約投稿

「投稿を書きためて投稿できたら楽なのになー」ってことで、やってみます。

下調べ

まあ、大体そうだと思ったんだけど。
一応、週1で投稿できたらいいなと考えています。
いろいろoutputしたいことがあるので。

2016年3月20日日曜日

「ちびドットアイコンジェネレータ」でアバター作る

「blogやるなら、可愛いアバターが作りたいなー」ってことです。

↑これ

下調べ

どうやらいろいろwebサービスがあるみたい。便利だなー。
実物はこんなにかわいくない。

bloggerとtwitter投稿連携

「bloggerを始めたらtwitterと連携したらかっこいい」と思い、勉強してみた。すげー安直。

1.下調べ

あらかじめbloggerとtwitterに登録していること前提です。

  1. Bloggerのブログの更新に連携・連動してTwitterに自動投稿 -ブログというより備忘録 - 
  2. Twitterと連携してブログの更新を自動投稿する方法

2.feedburnerに登録

詰まったところは、feedburnerにURLを貼るところくらいです。
「フィードURLって何?」とか思ったもので...。

あとは、集客支援->socialize->add a twitter accountでおしまい。

3.確認

どきどきです。このページの投稿時にテストしてますから。

「ああああ!!!!更新されてない!!!!」
って思ったら、feedburnerの有効ボタンを押してなかった...。

追記(ちょっとあと):
twitterに投稿されるのは新規投稿のみ??な感じですね。とほほ。