学習記録

2020-02-09に作成

個人用の学習記録。成果がなくとも毎日更新。

所有者限定モードのためこのボードには投稿できません ボードとは?

noticeで表示されるメッセージに改行を入れたい

調査

実装

redirect_to(notice: ['message1', 'message2'])
<%= safe_join(notice, tag(:br)) unless notice.nil? %>

git push -u の-uって何

"git push" に "-u" あるいは "--set-upstream" を付けると、push 先のブランチをトラック (デフォルトで push や pull の対象に) するように設定されます。
引用元:【Git】リモートにブランチを push してそのままトラックする

調査

  • https://git-scm.com/docs/git-push#Documentation/git-push.txt---set-upstream

GithubのプライベートリポジトリにDependabotからの通知が来ない。

パブリックリポジトリにはGemのバージョンアップの通知が来るのに何故だろうと思った。

調査

「Dependabot alerts private repository」で検索した結果
条件の中に「enabled read-only analysis by GitHub, dependency graph, and vulnerability alerts」とある。
親切にも操作手順まで書いてあった。


「Bundler が Ruby 2.7 で変な件」が私の環境でも起こる件

railsコマンドを入力するたびに警告が出ていたのを放置していたので、対処してみた。

調査

下記の警告のメッセージを丸々コピペしてググる。
"the running version of Bundler (2.1.2) is older than the version that created the lockfile (2.1.4). We suggest you to upgrade to the version that created the lockfile by running"
Bundler が Ruby 2.7 で変な件が検索結果に出た。
唯一の日本語記事なので、まずこれを参考にしてみた。
記事にある事象と自分の環境を比較してみる。
$ bundle -v
Bundler version 2.1.4


$ gem list bundler
*** LOCAL GEMS ***
bundler (2.1.4, default: 2.1.2)


p Bundler::VERSION
"2.1.2"


対処

$ gem update --system 3.0.8 && gem update --system

対処後

対処したことで警告は出なくなったが、
バージョンの表示はこれで良いのか?

p Bundler::VERSION
"2.1.2"


$ gem list bundler
*** LOCAL GEMS ***
bundler (default: 2.1.4)

bundle checkで警告が出る

$ bundle check
The dependency tzinfo-data (>= 0) will be unused by any of the platforms Bundler is installing for. Bundler is installing for ruby but the dependency is only for x86-mingw32, x86-mswin32, x64-mingw32, java. To add those platforms to the bundle, run `bundle lock --add-platform x86-mingw32 x86-mswin32 x64-mingw32 java`.
The Gemfile's dependencies are satisfied

参照:bundle installする際のtzinfo-dataのwarningがウザい
「UnixベースのOSではtzinfoからシステムのタイムゾーン情報に直接アクセスできるので、このgemを入れる必要はないそう。」という言葉を鵜呑みにするなら、下記の行をコメントアウトするのみ。

gem 'tzinfo-data', platforms: [:mingw, :mswin, :x64_mingw, :jruby]

期待通りエラーは出なくなった。


今日調べたこと

1台のEC2でもELBを使うメリット

疑問

【初心者向け】AWSのサービスを使ってWebサーバーをHTTPS化する
を読んでいたところ、LBを設置する意図を知らない(負荷分散のイメージしかない)ことに気づいた。

検索

Google検索で「load balancer 1台しかない」とかいうキーワードを入れたところ、運よく下記の記事が候補に出た。
1台のEC2でもELBを使うメリットについてまとめてみました
ELBのありがたい点を下記にピックアップ。
- DNSの変更を行うことなく、バックエンドの切り替えが可能
- ELBのヘルスチェックを利用してWEBサーバの死活監視ができる
- SSLの管理をAWSにオフロードできる(オフロードって何だ)
- ELBを利用すればACMの無料SSL証明書が利用でき、また証明書の更新は自動で行われる。

ヘルスチェックって何

  • サーバーからのレスポンスのコードが期待通りかどうかを確認するような機能らしい。Ping Pathへのリクエストの結果で判断しているらしい。
    参考:https://norm-nois.com/blog/archives/3017
  • ヘルスチェックといってもELBとRoute 53で異なるものを指す。
    参考:https://dev.classmethod.jp/articles/health-check-spec-elb-route53/

つまずいた点

  • Rubyでは変数に全角文字を使うことができるということを知らず、バグの解決が遅れた。

Pythonでつくる対話システム

3-4-4で調べたこと

OpenNMT-pyのパラメタの説明
https://opennmt.net/OpenNMT-py/options/translate.htmla

colabで直接動かすので、コマンドライン引数でなくargparseへ直接渡したい。
Jupyter lab / notebookで argparseそのままで実行する方法

学習したモデルはGoogle Driveに置かれているので、
cliからファイルを取得させたい。
wget/curl large file from google drive


Pythonでつくる対話システム

3-4-4

learn_generative_model.ipynbに書いてある通りに動かすと、
エラー「torchtext.so: undefined symbol」で止まる。
OpenNMT-pyのinstallationに従っておけば良さそう。
参考:https://github.com/OpenNMT/OpenNMT-py#requirements


Railsチュートリアル2周目

つまずいた点

fixtureのymlファイルにインデントをつけるとエラーでテストが失敗するようになった。