そのたおおぜい

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

簡潔に話そう

結局日報を書くのを忘れがち…….それにしても,プログラミングは私には向いていない気がしてならない.

今日は研究室であることについて英語で説明する必要があったのだが,全くできなかった.そもそも日本語でも簡潔に話そうとすると頭が真っ白になって何も考えられなくなっていたんだから,英語でできるわけがない.訓練でどうこうできるかわからないが,やはり日報に一日にあったことをできるだけ短く書けるようになったほうがいいのではないかと思い,久しぶりに日報を書き出した次第.

今日は朝から牛丼を食べたんだけど,そのきっかけがテレビに写っていたファンキー加藤さんだった.別にこの人,好きでもないし,不倫して未だにテレビに写っていることに対して不快に思ったんだけど,それでも牛丼をかっこんでいるシーンはそれなりに魅力的に見えて,ちょっと悔しかったが牛丼を食べた.広告に誰が出ているかは大切だと思っていたんだけど,実は全然関係なかったりするのかな?

以上.短く.毎日500字以内で書くことにしたい.

実施内容27

  • 論文1(Abstractちゃんと読んでから印刷しようねって感じだった(私がやりたい話とレイヤーが違っていた))
  • 論文2(有益,1Pに次読むやつ,あとこの論文から上を探したい)
  • デレステ
  • Discordに絵文字追加する
  • 名刺の入稿
  • iTunesのジャケット編集
  • 発券
  • 読書
  • DIscordのBot動かすまで

 

研究をしろ → はい

 

実施内容26

頑張ったよ今日って感じなので書いておく.

 

  • 部屋の掃除
  • PC開けてダスター吹いて掃除
  • Discord立ち上げ
  • ↑のロゴ制作
  • ↑のスライド制作
  • ↑のTwitterで宣伝

 

がんばった.むっちゃ疲れた.寝る…….

食生活の見直し

最近乱れ過ぎなので少しでも軌道修正したいと思ってたらこんなものが.

 

newsteam.livedoor.biz

 

これ良さげなので実践していきたい.

後週報,日報を一切書かなくなったのが本当にマズいと思うので,頑張って書いていこう.

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歳児が大喜びするアクション以外のシーン(殺しの準備をするシーン)があって,ぼかぁそこだけで満足です.

 

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

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