Subscribed unsubscribe Subscribe Subscribe

oinume journal

Scratchpad of what I learned

Udemyがなかなかいい感じ

最近は健康のために、六本木→渋谷まで歩いて帰っているのでPodcastをよく聴くようになった。1日30分以上歩いていて、その間は暇なのでPodcastを聞いていたのだけれどPodcastが在庫切れになってしまった。どうしようかと悩んでいたところ、以前Udemyでいくつかコースを購入したことを思い出して、Udemyのコースを垂れ流すようにしたところいい感じに技術的なものが勉強できるようになった。UdemyがPodcastよりいいなと思ったのは

  • (自分が聞いている)Podcastだと話している内容が薄いが、Udemyは学習サイトなのでPodcastよりは内容は濃い
  • 聞いていてどうしても画面を見なくてはいけない時は立ち止まって見れば良い。もしくは電車の中で再度見直す
  • 英語OKな人だったら本当に様々なコースがある(React, Machine Learning, Docker, etc…)
  • Udemyは定期的にキャンペーンをやっていて、普段だったら2万円かかるようなコースが1200円になっていたりする
    • 例えば今だとUdemy Learn Festという割引キャンペーンをやっている(5/27まで)
    • さらにiOS/Androidアプリ限定で常設的な割引キャンペーンもやっている

という点。1200円という値段なら書籍を買うより安くつく。特にアプリの使い方を学ぶような場合は動画の方が効率的に学習できると思う。というわけでUdemyオススメです。

go test in practice

This blog post describes basics and practical examples of go test. Go’s automated test mechanism is well designed and easy to use. I’ll show you some techniques of go test in this article.

What is go test

go test is a command to run automated tests of go packages.

  • Automated test must be defined in _test.go file
  • Automated test function must start with Test prefix

Example: stack

I implement a stack as real world example to explain go test. stack package provides stack.go. If you want to write tests for stack.go, create a file named stack_test.go. The source code is in GitHub repository.

go test [packages]

First of all, let’s test a simple function stack.NewIntStack.

package stack

import "testing"

func TestNewIntStack(t *testing.T) {
    istack := NewIntStack()
    if istack == nil {
        t.Error("NewIntStack() returns nil")
    }
}

The test checks NewIntStack returns non nil. To run the test, type go test ./stack. You’ll get following output. It means the test succeeded.

go test ./stack

ok      github.com/oinume/go-test-in-practice/stack       0.136s

go test -v

-v flag enables verbose mode. You can get a message TestNewIntStack finished by running with -v flag.

func TestNewIntStack(t *testing.T) {
    istack := NewIntStack()
    if istack == nil {
        t.Error("NewIntStack() returns nil")
    }
    t.Log("TestNewIntStack finished") // This message is output only in verbose mode
}
go test -v ./stack

=== RUN   TestNewIntStack
--- PASS: TestNewIntStack (0.00s)
        stack_test.go:10: TestNewIntStack finished
PASS
ok      github.com/oinume/go-test-in-practice/stack       0.132s

all outputs in STDOUT are printed in verbose mode. You can use t.Log or t.Logf if you want to print a message with line number.

If you want to do something only when verbose mode, You can use testing.Verbose() in your test code.

go test -short

You can use -short flag to skip long-running tests. You can refer the flag is on or off by testing.Short() in your test.

Example:

func TestIntStack_PushALot(t *testing.T) {
    if testing.Short() {
        t.Skip("Skip pushing a lot of numbers to a stack")
    }
    istack := NewIntStack()
    for i := 0; i < 10000000; i++ {
        istack.Push(i)
    }
}

go test -run

-run flag is used to specify tests to run. If you have test functions TestNewIntStack and TestIntStack_PushALot, you want to run only TestIntStack_PushALot. You’ll save time with -run flag in order to avoid running whole tests.

Example:

go test -run TestIntStack_PushALot ./stack

=== RUN   TestIntStack_PushALot
--- PASS: TestIntStack_PushALot (1.01s)
PASS
ok      github.com/oinume/go-test-in-practice/stack       1.156s

reflect.DeepEqual

You can use reflect.DeepEqual to compare two values of structs. Following example ensures istack1 and istack2 are the same.

func TestIntStack_Compare(t *testing.T) {
    istack1 := NewIntStack()
    istack2 := NewIntStack()
    for i := range []int{1, 2, 3} {
        istack1.Push(i)
        istack2.Push(i)
    }
    if !reflect.DeepEqual(istack1, istack2) {
        t.Errorf("Stacks must be the same: istack1.Size=%d, istack2.Size=%d", istack1.Size(), istack2.Size())
    }
}

TestMain

TestMain is a main function in automated tests. Sometimes it is necessary for a test program to do extra setup or teardown before or after testing. If func TestMain(m *testing.M) function exists in your package, the generated test will call TestMain(m) instead of running the tests directly. This is an example to set up and tear down with TestMain.

func TestMain(m *testing.M) {
    // Set up something for tests
    status := m.Run()
    // Tear down something for tests
    os.Exit(status)
}

And more

go test has much more features like benchmark, example test, etc. You’ll find them out in document of testing package. There are also good slides of testing like Advanced Testing with Go // Speaker Deck.

Jupyter NotebookをAnacondaを使わずにセットアップする

Web+DB Press Vol.97のEmerging Web Technologies を見て、「Anacondaは別に使わなくてもいいんでない?」って思ったので、Anacondaを使わずにJupyter Notebookをセットアップしてみる。

Mac + Homebrewを使う場合だとこんな感じ。

Python3のインストール

brew install python3

venvで仮想環境を作る

pydataという仮想環境を作る。

python3 -m venv pydata

作った仮想環境を有効にする。

source pydata/bin/activate

ちなみに仮想環境から抜けたい場合は deactivate とタイプすればOK。

pandasやJupyter Notebookなどをインストール

仮想環境を有効にした状態でpipでインストールする。

pip install jupyter pandas matplotlib

Jupyter notebookを起動

仮想環境を有効にした状態で

jupyter notebook

とタイプすればOK。

まとめ

Anacondaなくても簡単!

参考リンク

読書感想「ルポ MOOCS革命」

ルポ MOOC革命――無料オンライン授業の衝撃

ルポ MOOC革命――無料オンライン授業の衝撃

を読んだので、メモと感想。

感想

まず「MOOCSってなに?」という状態からスタートした自分。MOOCSとはMassive Open Online Coursesのことで、有名なところだと coursera とか udacity がある。大学の講義などをオンラインの動画で見ることができて、どこにいても講義を受けられることがメリット。

この本の最初の方は、いかにMOOCSが素晴らしいか、MOOCSを使っていい教育を受けた人がいるかを述べていて、若干退屈だったけど、中盤から後半はMOOCSの仕組みとかビジネスモデルについて詳しく書かれていて良かった。あと、作者本人が取材しているので実際の生徒の生の声が書いてあるのが良かった。

2013年に出版された本なので若干情報が古いけど、作者自身シリコンバレーに行ってcouseraやudacityにヒアリングしているなど、かなり骨太なルポですごいなと思った(小並感

最初の方

  • 学び続ける母親の姿は家族にも良い影響を与える。子供も勉強するようになる。
  • コンピュータを使ったデータ解析がいいらしい。
  • 一度は教科書で学んだ内容でも、大学教授の解説を聞くと不思議なほど理解が深まった。スタンフォード大学の講座を受けた人の話。

p.40

求職中の受講生の学習履歴を見ることができる。この講義で成績トップ10の情報を知りたい、との企業からの依頼にもコーセラは応じる。

p.47 ユダシティのビジネスモデル

企業が講座の制作費をサポートし、講師が学生に教える。受講生はきちんとスキルを証明することで就職できる。企業は能力と努力を確かめて新しい人材を探せる。 プラットフォームとしてのユダシティにも運営資金が入る

p68

ムークで好成績を収める人は大学入学にも道が拓ける

p75 オープン教材について

高校の数学の授業ではなぜその公式が機能するのかを説明しないが、MITの教材では動画でそれを説明していた。

p135 サルマン・カーン

わかりやすい説明で有名になった。足し算から高度な数学や経済学、生物学、物理学、宇宙論など一人で講義動画を撮影している。日本語字幕もある 講義の中では、微分積分のコースで、マイナスとマイナスをかければプラスになる、というような細かいことも声に出す。これをありがたいと思う子供がたくさんいるらしい。カーンアカデミーの運営費は700万ドル。VCの資本は入れず、ゲイツ財団や個人の寄付から成り立っている。

p146

現在の学校教育では、教える時間が固定されていて、生徒の理解度は変数になっている。これは逆で生徒の理解度を固定するべき。特に数学は一度理解が追いつかなくなると、次の授業も理解できなくなってしまう。

p158 反転授業

講義のビデオを自宅で見て、授業では宿題や課題をやること。生徒は実践的な学習や友人との共同作業、友人の成果を評価することに取り組む。先生たちは子供たちに一対一で教えたり、助言したり、鼓舞したりできるようになる。これは先生が中心の教室から、生徒が中心の学習環境へのシフトである。

p202 日本でのオープンエデュケーション

manavee。大学受験応援サイト。 予備校に通えるのはお金がある家庭だけ。マナビーは全て無料。 動画を見ていた受験生が大学生になりボランティアで講義で教えるという好循環。

学校では教えてくれない教科でもマナビーでは講義がある。 テクノロジーで教室を再現することはできないか?hangoutとかで。

お金を節約するワザ

個人的にやっているお金の節約方法をまとめてみる。

Amazonで商品をなるべく安く買う方法

Amazonギフトカードを安く買う

まずはAmazonでの買い物を2〜8%安くする方法。世の中にはAmazonギフトカードを安く手に入れることができるサイトがいくつかあって、だいたい2〜8%OFFぐらいで買うことができる。代表的なサイトとしては下記がある。

「アマゾンギフト券 安く」でググると色々とこの手のサイトが出てくるので調べてみるといいと思う。

Amazonのマーケットプレイスを活用する

新品にこだわらなければAmazonのマーケットプレイスはかなり安く商品を買うことができる。自分は本に関しては新品かどうかは気にしていない。新作の本でなければ、Amazonのマーケットプレイスは送料込みでだいたい半額ぐらいで買うことができる。そして読み終わった本はメルカリなどで売ってしまえば「一粒で2度おいしい」感じになる。

Amazonプライムすごい

  • 送料が無料になる
  • 映画が見放題
  • 音楽も聴き放題
  • Kindle本が毎月1冊無料
  • 写真を無制限にクラウドストレージに保存可能

という特典がついて年間3900円(税込)なんだからすごい(月で換算したら325円!)。自分はNetFlixやHuluは解約してAmazonプライムだけにしてしまった。

ネット通販ならヨドバシもいいぞ

自分の中ではAmazonと並ぶぐらい利用しているのはヨドバシ。ヨドバシがなぜいいかはおいぬま日報: ヨドバシドットコムが始まり過ぎてる件にまとめてあるが、

  • どんな商品でも送料が無料
    • AmazonはAmazonプライムに入らないと送料無料にならない場合があるが、ヨドバシではそんなことはない。
  • 13時までに注文すれば当日配送
  • 日用品も含めて商品が充実している
  • 10%のポイントが付く。このポイントを考慮するとAmazonより安い場合がある

などが良い点。ヨドバシの余ったポイントはWebMoneyかiTunes Cardを買ってしまうとさらにお得だ。

格安SIMを使う

oinume.hatenablog.com

以前上の記事を書いたんだけど、3大キャリアから乗り換えるだけで月数千円は節約できる。自分は月6000円かかっていた携帯代がIIJ mioにすることで月3000円未満になった。SIMフリーのiPhone7はかなり高いけど、iPhone SEは税込みで約5万4000円で買えるので、2年使えば本体を買い替えてもお釣りがくる。

格安SIMは今だと

  • Facebook/Twitter/Instgram/LINE の通信料がチャージされないLINEモバイル
  • 速度が安定しているらしいmineo
  • なんだかんだでユーザー数が多いIIJ mio

あたりが良さそう。

iTunes Storeで安く買う方法

年に何回かコンビニなどでiTunes Storeのギフトカードがおまけ付きで買える(実質10%OFFになる)キャンペーンがやっているので、iTunes Card割引速報をチェックすればいつキャンペーンがやっているかがわかる。音楽を買ったり映画をレンタルする人にはオススメ。

住宅ローンの借り換え

これはすごい対象者を限定する内容だけど、チャットで質問に答えることで今より安い住宅ローンの借り換えプランを提案してくれるアプリがあるので、金利が高めで借りた人は借り換えを検討してみることをオススメする。

mogecheck.jp