そのたおおぜい

研究とか英語とかプログラミングとか

Dockerを初めて使ったのでメモ

大したことはしていないけど,とりあえずメモっておく.

Dockerのインストー

OSがWindows10の Home なので,Docker Toolboxをつかった.インストールの仕方はこのページが詳しい.

devcenter.magellanic-clouds.com

裏でVirtualBox経由でLinuxが動いているので,世間一般にあるコマンドもWindows上で普通に使える.良いですね.

とりあえずUbuntuでも使ってみる

sudo docker run -i -t ubuntu:14.04 /bin/bash

このコマンドで動く.-i -tで起動してそのままターミナルに入れる.この時,いちいち事前にパッケージをローカルに持ってくる必要はない.いきなりこのコマンドを入れるとパッケージをダウンロードしてくれる.便利だ.あとは普通にUbuntuできる.楽しい.

データサイエンス用のコンテナを使うまで

github.com

こんなものが存在すると聞いて飛び上がって驚いた.というわけでとりあえず使ってみる.READMEのコマンドを実行.

docker run -it --rm -p 8888:8888 jupyter/datascience-notebook

ただし,これだと,表示されるURLからnotebookにアクセスできない.理由がissuesとQiitaに書いてあった.

github.com

qiita.com

さっきもちらっと書いたけど,Docker Toolboxは裏でDocker用にVMが別途動いている.つまり,VMで動いているipythonにアクセスしようとした場合,VMを経由してアクセスする必要がある.具体的には,VM側の設定を開いてポートフォワードするようにしてあげれば良い.

f:id:hagyou:20170722194931p:plain

VirtualBoxGUIで立ち上げて,該当するDocker-machineを選択(特に何もしていなければdefault)して①高度→②ポートフォワーディングを選択する.

f:id:hagyou:20170722194952p:plain

①で項目を追加,②に適当な名前,ポート番号を入力.これでコンソールに出てくるnotebookのURLをそのまま利用できるようになる.

編集したコンテナを保存

これ,結構戸惑ったので書いておきたい.Dockerで普通にコンテナを終了してもう一回立ち上げると 作業内容が保存されていない .もちろん,保存する方法はあるが,その場合,作業したコンテナをDockerのイメージとして保存する必要がある.イメージをまるまる保存するので,変な話Wordファイルの名前を変えてバージョン管理するみたいな地獄っぽい話のような気もする.

ただこれ,Docker自体の思想というか,使い所のお話が原因だと思っていて(結構適当にしか調べていないので眉唾で聞いてほしい),要するに開発環境を共有することが前提の場合にDockerを使うべきってことなんだと思う.

この辺のページを見れば普通にできる.

ottan.xyz

qiita.com

感想

結局最後の保存の部分が引っかかった.個人でローカルで開発するためだけに使うなら,普通にVagrantでいい気がする.Win10ProならHyper-Vが使えることもあって早いからDockerを使う方がいいってこともあるだろうけど,Homeなら結局裏でVM動いていて重いし,これなら別にVagrantでいいよなと言う気持ち.もちろんサーバなんかに環境をまるまるデプロイことが前提の場合は絶対にDockerの方がいいと思う.

www.slideshare.net

こんなスライドもあった.

SlackAPIでattachmentsが表示されなかった時

GoogleAppScript経由でSlackのAPIchat.postMessageを叩いて投稿するみたいなことがしたかったんだけど,その時に結構な時間ハマったので,今日はそんな話です.参考文献はこちら.

stackoverflow.com

attachments field actually does get sent as a string of JSON, but URL-encoded into a parameter.

要するに,Attachment部分は文字列で渡してあげる必要があるらしい.さすがにこれだけだとわかりづらすぎるので,ちょっと例を挙げる.世間一般でGAS経由でSlackのAPIを叩く場合,大抵の場合こんな感じで叩いている.

  var url = "https://slack.com/api/chat.postMessage";
  
  var payload = {
    "token" : "トークン",
    "channel" : "チャンネル名",
    "as_users" : true,
    "text" : "なんかテキスト",

   // ここにattachmentsを書く
  };
  
  
  var params = {
    "method" : "post",
    "payload" : payload
  };
  
  var response = UrlFetchApp.fetch(url, params)
  Logger.log(response);

要するに,URLのパラメータは関数側に放り投げて作ってもらっているってことです.挙動が見たい人は以下のページ参照.

Class UrlFetchApp  |  Apps Script  |  Google Developers

ハマったのはこのpayloadattachmentsを書くところ.これ,変数をそのまんま書いちゃうと,JSON形式であっても文字列じゃないので展開されないらしい.と言ってもわかりづらいと思うので,負例を挙げる.

    // NG
    "attachments" : [
        {
          "color": "#FFD700",
          "title": "ナンタラカンタラ",
          "fields": fieldsList
        }
    ]

このままだとJSON形式にはなっているらしいが,文字列にはなっていない.ので,APIを叩いてもattachmentsが表示されない.らしい.

f:id:hagyou:20170718094445p:plain

chat.postMessage method | Slack

これ,APIのドキュメントからスクショ取ってきたやつなんですけど,これで,文字列でほしいってことらしいです.わかんねーよ.でも,文字列で欲しがっているものは欲しがっているので,JSON.stringify()で文字列にしてあげる必要がある.

    // OK!
    "attachments" : JSON.stringify([
        {
          "color": "#FFD700",
          "title": "ナンタラカンタラ",
          "fields": fieldsList
        }
    ])

こんな感じ.これで後は表示されます.

これ,何がハマるって,文字列にしないでAPI叩いてもAPI側からエラーも警告も返ってこないんですよ.ひどくない?

あと,これは完全に愚痴ですけど,関数自体の呼び方も人によって異なっていたり,そもそも全部JSON.stringfy()で文字列にして送っていたりする人もいて,結局どこからどこまでを文字列にしなければいけないのかが全然わからなかったんですよね.あとSlackのAPI DocmentにあるTesterを使っても普通に表示されます.故にハマったハマった.同じような苦しみを生じさせないためにも記事にしました.参考になった人がいたら幸い.

ジョン・ウィック チャプター2を見た

johnwick.jp

 

待ってたぞ!!!!

 

どんな映画?

  • 伝説の殺し屋である主人公が引退したとおもったら(前作),昔の契約を持ち出されて,断ったら奥さんとの思い出である家を燃やされてブチギレて殺し屋復帰する話.
  • アクションの見やすさ・わかりやすさは相変わらずピカイチで,カメラが動かなくったって爽快感溢れるアクションができることを教えてくれる.
  • 自分の中の3歳児が大喜びするアクション以外のシーン(殺しの準備をするシーン)があって,ぼかぁそこだけで満足です.

 

ほんとうにいい映画だった.ラストがあんまり悲しいものだからちょっと終わったばかりの時は不快だったんだけど,思い返すと良い映画だったと思う.

不快ってわけでもないんだけど,今回はアクションをする場所自体を使った仕掛けが多くって,別にそんなことしないで,今までのジョンウィックのアクションを見せてくれという気持ちになってしまった.別に今回の演出が微妙だったというわけではないのだけれど,この映画に期待していたのは純粋にアクションだったので.

実施内容25

はい.ちゃんと毎日書こうね〜っていってたのにこれですよこれ.とりあえず今日の分から書いていこう.

 

研究

ちまちま作業,ちまちま改善という具合.

 

で,ミーティング

「だめー」「だめー」を連呼されたものの前よりは絶対良くなった気がするので積極的に「だめー」されていきましょう.あと,研究自体も何とかなりました.

 

シンデレラガールズ5th幕張公演

最高の一言に尽きた.本当に涙が出てしまった.あんなに感動的なシンデレラストーリーに立ち会えるんだから,やっぱりこのコンテンツ追いかけていて良かった.あとでツイートだけまとめておく.今回は人生で初めてこう,某所にお手紙を送ろうと思えたので,そんなことをします.はい.

 

ブログ(というかキンプリ・キンプラ

ブログ関連,今週はいろいろあいりすぎた.詳細はこのへん.

hagyou.hateblo.jp

 

hagyou.hateblo.jp

 

アクセス数が普段の20倍ぐらいになったりしていましたし,なぜかGoogleキンプラって検索すると1ページ目にこの記事が出ていてうひょあーって感じです.まぁ,興味持ってくれた人が多いなら嬉しいです.いるかわからんけど.

 

英語

取っていた授業がもうそろそろ終わってしまうので,何かしらで少しずつ続けていきたいと思っている.やっぱりDMM英会話でも使おうかな.

 

来週までにやること

研究は某の実装と引き続きデータのブラッシュアップ

キンプラの応援上映に今日いく予定なので,そちらの記事を書く.

例のお手紙も書く(SSAの現地にいるので,その時に実際にお届けする感じになると思う)

デジゲー博ように企画書をペラ1レベルで書いておく

デジゲー博の申し込み

企画書を簡単に書いておく

買い物(これはプライムデーだし今日やる)

SSAまでの金銭管理(予算確認)

闇作成(するのかこれ)

pylabのimshow()の幅が狭くて残念な時の対処法

from pylab  import *
import numpy

mat = rand(10,50)
im = imshow(mat)
colorbar(im)
gird(True)
hot()
show()

こんなコードを使うとこうなる.

f:id:hagyou:20170705151619p:plain

うーん,なんか横長でしょんぼりって気持ちになりますね.そんな時はimshow()をこうする.

im = imshow(mat, aspect="auto")

するとこうなる.

f:id:hagyou:20170705151723p:plain

みやすい!やったー!

以下,参考文献.

stackoverflow.com

qiita.com

実施内容24

最近すっかり日報書くの忘れていたので週報っぽく書いておく.

 

研究

ひたすら国語辞典とにらめっこして,なおかつちょこちょこPythonスクリプトを書く生活を続けていた.ずぶの素人なりに頑張ったけど,ダメだなぁ感は否めないので,積極的に良くしていきましょうという所存.一応,自力でWikipediaからWord2vec作るぐらいはそれなりの速度でできるようになった(前処理方法とかがいろいろ身についた)ので,そこは素直に良かった気がする.

また,今週はじめのころに久しぶりにメンターさんとミーティングを実施.これまで話していたような部分に対して「あれれ〜?(コナン風味)」と言いたくなる場面が多々存在してたので,そちらについて今週〜来週月曜日までの間に改善していくつもり.

 

LT

研究室のLTで大暴れしてしまった…….反省.

 

シンデレラガールズ

そう言えば5th静岡の記事を書きました.結局二宮飛鳥さんが最高って記事しか書いていない気がしますが,まぁ,最高だったのでね.仕方ないよね.

また,リトルリドルイベントが開催されたこともあってデレステもちまちまやっています.今回のイベントの譜面はmasterでもひーひー言いながらプレイしているのでつらみがあります.

あと,U149と4thBlu-rayを予約しました.Blu-rayコロムビアで予約できました.ビッグニュースとしては,SSAのチケットが(初日のみですが)取れました.最高ですね.

 

名刺作成

イラレで名刺を作った.SSAと福岡で配りまくるマンです.今回は200枚刷ったので積極的に配っていきたい.

 

色々購入

調子に乗ってフルグラTシャツ企画に2つ乗っかってしまった格好.お金ないのにね.まぁでも両方共良さげだし,これ着たら絶対テンション上がるよなって感じのやつだから,こういうのにはお金は積極的に使っていきたい気持ちです.

 

キンプリ

見た,というより見てしまったの方が正しい.プリズムの煌めきに完全に毒されてしまった.今週中に感想記事を書きたい.

 

今後の予定

研究は来週月曜を目処に一区切り済ませておきたい.また,論文講読の出番がそろそろなので,良さげな論文を見つけて,最低でもざっくり読みを15本,精読を1本済ませたい……そうしておかないと間に合わない.

シンデレラは,幕張LVとか,デレパとか,デレステとか,まぁいろいろ忙しそうだよね.頑張っていきましょう.

あと,いい加減に個人開発の計画を立てる必要があるので,積極的に個人開発していきましょうという所存です.頑張りましょう.

実施内容23

休みの日の研究室,明らかに作業効率が良くなるので積極的に使っていきたい.

 

  • 英語の課題(ひたすら添削されたのをヘコヘコしながら見る感じ)
  • 買い物
  • デレステ(2万点でちゃま取れそうなペースで良い感じ)
  • 指定した行数(範囲も可)を表示するためのコマンドを記事に書いた
  • 英語のもう一つの課題
  • 英語の課題
  • 研究(そこそこ)
  • 病院(かかりつけとそうじゃないやつと)

 

健康はとても大切なので積極的に金を使っていきましょう.病院にも行きましょう.

英語の課題がひたすらに重くなってきたので頑張ってこなしていきましょうというあれです.日本語ですら文章を書く苦しみを感じているのに,英語で文章書くので数倍の苦しみを感じています.

 

これから

  • 英語の課題(文章を書き終わらせる)
  • 研究(頑張って終わらせます)
  • 5th静岡感想記事(これを書くから毎回辛い感じになってくるんだよなぁ……でもライフワークなので積極的に書いていきましょう)
  • 遊んだゲームの感想(一本遊んだので遊びたい気持ちがある)
  • 個人開発の計画を建てよう
  • ↑ついでにMeisterTaskも使ってみる.

 

はい.やっていきましょう.