明日会社がいないなんて

明日会社がなくなっていても動揺しないように、情報を残していきたい

8/21(月) お仕事日記

Python

  • インクリメント/デクリメントがない!!(i++ / i--)

Java

  • ラムダ式がまだ使いこなせない。調べるのに時間がかかる。 findFirtsメソッドが思いつかなかった。(下記コード参照)
//1件に絞り込んだ結果を取得

//今日、書いたコード
List<String> filterdList = list.stream().filter(..).collect(Collectors.toList());
String str1 = filterdList.get(0);

//たぶんより良い書き方(findFirstを使用)
Optional<String> optional = list.stream().filter(..).findFirst();
String str2 = optional.get();

UNIX

  • seqコマンドで連番を作成できる。
# [1 3, 5, 7, 9]
seq 1 2 9
  • ループを使った値を参照
for i in `seq 1 2 9`; do
    echo "${i}個目の出力"
done

機械学習

  • 「A Neural Network Playground」というサイトがおもしろそう。まだ完全には分からないけど、早く理解できるようになりたい。 A Neural Network Playground

その他

  • テストのエビデンス取るのが面倒だ。。。

  • ファイルの入力チェックに時間がかかってしまった。あそこまで入力チェックは必要だったのだろうか?

  • terasolunaのfileDAOでCSVを読み込んでいるのだが、BigDecimal型に対して空文字を読み込もうとすると、WARNが出る。なぜ?

夏休み8日目の学習記録

08/19(土) Nagoya.Swift勉強会で、勉強しました。

『ゼロから作るDeep Learning

  • 3時間
  • 19ページ(123-142P)
  • 5.1-5.5.1章

学んだこと

  • 計算グラフの特徴:「局所的な計算」を伝搬することによって最終的な結果を得ることができる
  • 計算グラフを使う理由:逆方向の伝搬によって「微分」を効率よく計算できる
  • 連鎖率:合成関数の微分についての性質
  • 加算の逆伝搬:上流の値をただ下流に流すだけ。順伝搬の入力信号の値は不要
  • 乗算の逆伝搬:順伝搬のときの入力信号の値が必要。
  • ReLUレイヤ
  • Sigmoidレイヤ
  • Deep Learningの勉強に、Udacityの「Deep Learning by Google」で参考になるらしい。字幕も日本語にできる。 Udacity

Python

# ReLU {y=x(x>0), y=0 (x<=0)} 変換
original = np.array([2, 0, -2])
mask = original <= 0
print(mask) # ⇒ [False True True]
masked = original.copy()
masked[mask] = 0
print(masked) # ⇒ [2 0 0]

Indexing — NumPy v1.13 Manual

疑問

HackMDを使って、スライドを作成

はじめてHackMDを使いました。 Tensorflow Tutorialを試してみて - HackMD

  • 約4時間

HackMDとは?

  • HackMDは、 Markdownで書いたDocumentを複数人で編集でき、リアルタイムプレビューが可能なツール
  • 数式やUML図なども書ける。
  • 画像もクリップボードから貼り付けられる。
  • 自動で保存して、履歴管理もしてくれる
  • スライドモード、ブックモードがある
  • スライドモードのときは、縦スクロールバーが出ない(Qiitaは出る)
  • HTMLタグなどで、細かいレイアウトを修正できる(Qiitaはできない)

reveal.jsとは?

感想

  • クリップボードからの画像貼り付けは便利!
  • HackMDは「自分の書いた文書」というより「みんなで修正するもの」という感覚.
  • レイアウト気にしないなら、Qiitaスライモードの方がよいかな?検索されやすいし。

勉強会の感想

  • 参加者は9人。
  • 勉強するテーマは自由。iOS機械学習、Web開発、Dockerなどなど。
  • 成果発表会では、いろんな話を聴けておもしろかった!
  • 9:00-17:00までの7時間、集中して勉強/作業できた気がする。
  • また次回も参加しよう!

夏休み7日目の学習記録

RedMine

『入門Redmine 第5版』を読みながら、Redmineを触りました。 ウチのチームはいまだにExcel管理なので、いい加減導入したいと思い、まずは触ってみました。

www.shuwasystem.co.jp

  • 3.5時間
  • 170P(110-280P)
  • 6-10章
  • 必要そうなところだけ読みました。

学んだこと

  • トラッカー:チケットの大分類。プロジェクト全体で共通。

  • redmineの階層構造:プロジェクト > サブプロジェクト > バージョン > 親チケット > 子チケット > トラッカー > カテゴリ

  • 7.8章:「バージョン」:プロジェクトの実施期間をいくつかの段階に分割したもの

  • 8.14章:デフォルトでは進捗率とステータスは同期がとれていない。ステータスに応じて、進捗率を固定的に決めることができる。

  • ガントチャートは開始日、期日、進捗率を入力しないと、表示されない

  • 作業時間の記録は、日をまたいで入力できる

  • プロジェクトには期限が作成できない、バージョンには期限が設定できる

  • ユーザの追加

  • プロジェクトの追加

感想

  • カレンダー便利
  • ガントチャート便利
  • フィルタ機能で、絞り込み条件を入力した後「適用」ボタンを押さないといけないのが、めんどくさい。そして分かりづらい。
  • いまいち、トラッカーとカテゴリの違いが分かりにくい。
  • 最初にプロジェクトやバージョンなどの粒度を決めることが、大事だと思った。トラッカーなど後から変更しにくいだろうし。

疑問

  • トラッカー、カテゴリとバージョンの使い分け。プロジェクトに合わせるのかなという印象。
  • サブプロジェクトの使い道

参考サイト

決めておいた方が良いRedmine運用ルール - Qiita 3年使ったRedmineの使い方について共有したい10のこと


業務にRedmineを導入するには

導入するための作業

  • インストール
    • まずは許可をもらわないと。
  • ユーザを追加する
  • ステータス、トラッカーの中身を決める
  • プロジェクト、バージョン、カテゴリ、チケットの粒度を決める

メンバーに教えること

  • チケット、バージョン、カテゴリの作成方法
  • 作業時間の記録方法
  • フィルタの使い方
  • カレンダー、ガントチャートの使い方
  • 予定工数と実績工数の比較方法

本の感想

  • Redmineで何ができるか、を知るには良い本。ネットだけで勉強すると、もう少し時間がかかっただろう。
  • Redmineの解説書なので、Redmineを使ってどう運用していくか、などは書かれていない。
  • Redmineを粗方理解したら、もう読むことはないだろう

夏休み6日目の学習記録

08/17(木)、勉強しました。

Python

MacでTensorflow環境構築

ハマったのでメモします。 下記サイトを見て、virtualenvでインストールしました。 https://www.tensorflow.org/install/install_mac

  1. virtualenv --system-site-packages -p python3 [targetDirectory]
    ⇒ python3がない

  2. brew install python3
    Rubyopen_httpで部分でエラー。brewのupdateが必要らしい。
    MacにScheme処理系を入れる - /boost/developers

  3. brew update
    ⇒ エラー。Sierraにアップデートしたことにより、パーミッションが変わったらしい。
    Mac Os をSierraにしたらHomebrewがupdateできなくなった? - 4児パパ プログラミングを学ぶ

  4. sudo chown -R $(whoami) /usr/local
    ⇒ 成功

  5. brew update(2回目)
    ⇒ 成功

  6. brew install python3(2回目)
    ⇒ エラー。XCodeをバージョンアップする必要があるとのこと

  7. App Storeから最新のXCodeをインストール
    ⇒ 成功

  8. brew install python3(3回目)
    ⇒ エラー。XCodeのライセンスに同意しろとのこと。

  9. XCodeを開いてライセンスに同意 ⇒ 成功

  10. brew install python3(4回目)
    ⇒ 成功

  11. virtualenv --system-site-packages -p python3 [targetDirectory](2回目)
    ⇒ 成功

『ゼロから作るDeep Learning

  • 数値微分による勾配計算は、約4minかかった。遅い!
    • 5章では、誤差逆伝搬を使った効率の良い勾配の計算方法を学ぶ

Redmine

  • とりあえずインストールのみ

『転職に向いている人 転職してはいけない人』を読んで

転職に向いている人 転職してはいけない人 - 黒田真行|日本経済新聞出版社

この本を読んで、自分の考えをまとめた。

夏休み5日目の学習記録

08/16(水),フードコードでお勉強。

  • 2時間(18:30-20:30)
  • 13ページ(110-122P)
  • 4.4.2-4.6章(4章完了)

Python

for i in range(5):
   print(i, end=" ") 
# ⇒ 0 1 2 3 4 
a = np.arange(4).reshape(2,2) # 2×2の行列
for x in np.nditer(a):
    print(x, end=" ")
# ⇒ 0 1 2 3 4
it = np.nditer(a, flags=['multi_index'])
while not it.finished:
   print(it.multi_index, end=" ")
   it.iternext()
# ⇒ (0, 0) (0, 1) (1, 0) (1, 1) 
from IPython.core.debugger import Pdb; Pdb().set_trace()

JupyterまたはiPython Notebookでデバッグをする方法 - Qiita

from greeting import *
  • JupyterでIn [*]は、実行中を表す.

『ゼロから作るDeep Learning

夏休み4日目の学習記録

08/15(火)、図書館で勉強しました。

『TensorFlowで学ぶディープラーニング入門』

  • 2.5時間(13:30-16:00)
  • 29ページ(81-110P)
  • 2.1.3-2.3.4章

学んだこと

  • Sesion.runの使い方

  • トレーニングセットに対する正解率を計算することは、あまり意味がない

  • 過学習を避けるため、トレーニングセットの一部をテストデータに用いる。

  • 断定的に領域を決定することを「ハードマックス」、確率的に決定することを「ソフトマックス」という

  • ミニバッチは、一部のデータを使って誤差を小さくする方法。確率的降下勾配法。

    • 利点1: 1回当たりの計算量を減らす
    • 利点2: 極値を避けて真の最小値に達すること
  • Tensorflowは「データフローグラフ」という形で計算を表現している。
    TensorFlowのキーコンセプト: Opノード、セッション、変数 - Qiita

Python

  • zip関数:複数のリストを同時にループできる
list1=[1,2,3]
list2=[4,5,6]
for (a,b) in zip(list1,list2):
    print(a,b)

感想

「なごやでゆるふわ迎撃会」に参加しました

「なごやでゆるふわ迎撃会」という勉強会に参加しました。 その参加記録です。

kuxu.connpass.com

注意事項

  • 間違った情報や、発表者と異なるニュアンスで書かれている場合があります。
  • 自分の興味があることしか、メモしていません。
  • 以下のタグを使っています
    • [用語] : 発表で使われた言葉で、自分が知らなかった言葉。説明は私がネットで調べたもの。
    • [感想] : 私が思ったこと。
    • タグなし: 発表者が発言したこと(のはず)

Intel MPXとIoTセキュリティ

www.slideshare.net

  • MXP: Memory Protection Extensions
  • IoTのハッキングの原因が、C言語
  • C++でもバウンダリ例外は規定していない
  • MPXは、Intel CPUなら、skylake以上ならば使える。

  • [用語]コラッツ問題

  • [用語]NOP命令:何もしないことを意味する
  • [用語]Windows SEH: Structured Exception Handler. SEHはWindowsが提供している例外処理機構である。
  • [用語]Intel Atom: 携帯情報端末 (PDA) や低価格PC、組込みシステム向けのマイクロアーキテクチャ及びマイクロプロセッサ群

感想

  • CPU-ZというアプリでCPU情報を確認できる。ただし、MPXかどうかは分からない。 ⇒インストールしてみた。

  • コラッツ問題、おもしろい。

  • 機械語/アセンブラなどハード寄りのことは全然知らないなーと、改めて認識した。

JVM で Rx

  • RxJava: Javaでリアクティブプログラミングを行うためのライブラリ

@studio_graph のこれまで

  • 機械学習は、学習コストやハードのコストなどが高い。安易にサービス化するのは危険かも。

  • 機械学習を初めて勉強する際は、「Machine Learning Coursera」がいいらしい。あと、「ゼロから作るDeep Learning」も。

  • [感想] クックパッド機械学習やってるんだー

  • [感想] 学生の間ではSIerは不人気?

mrubyのデバッグの実演

  • [用語] mruby: 組み込み向けの軽量版のRuby

  • [感想] gdbデバッグしている!ロックだー!

ベアメタルハイパーバイザーにmrubyを組み込む

  • OSの下で動かすので、printfなどの標準関数が使えない。自作する必要がある。

  • [用語] FPU: Floating Point Unit

  • [用語] BitVisor: セキュアVMプロジェクトによって開発されている国産VMMソフトウェア

  • [感想] printfの中身はどうなっているんだろう?特に出力処理が謎。

@kanda_227 とは

ハッカソンの運営をしてみた

  • [用語] Microsoft Flow: サービスを連携するサービス

基盤チームについて

  • タスクを15分単位で見積もる

  • スキルマップシートを「知っているかどうか」でなく「使っているかどうか(GitHubにpullreqしているか)」で判断する。

  • ツールを導入する目的。発表者のチームは「できない人の無駄を減らす」ことは考慮しない。

    • できる人の無駄を減らす
    • できない人の無駄を減らす
  • やりにくいことの直観を信じる。ただしその対策に対する直観は信じない。

  • プロダクトオーナなどのロールを毎回変えている。

  • ゲーム性を高めている

  • 学習時間の時間を設けている

  • [感想] ウチのチーム/会社は、「できない人の無駄を減らす」ことばかり考えているんだろうなー

  • [感想] ウチの会社のスキルマップシート、ちゃんと考えた方がいいかもしれない。

全体的な感想

  • 「ゆるふわ」の定義はよく分からないが、全然「ゆるふわ」ではなかったと思う。

  • 学生が多い勉強でした。そして、学生のレベルが高い!

  • 幅広い話が聴けて、自分の視野が広がったなーという印象。ハード寄りの話が聴けたのは特によかった。また参加したいです。