- Parameter=仮引数(関数の定義に使用する引数)
- Argument=実引数(関数を呼び出す際に渡す引数)
function example(parameter) { // 関数の定義に使用する引数
console.log(parameter);
}
const argument = "foo";
example(argument); // 関数を呼び出す際に渡す引数
function example(parameter) { // 関数の定義に使用する引数
console.log(parameter);
}
const argument = "foo";
example(argument); // 関数を呼び出す際に渡す引数
厳密に正しい表現かはわかりませんが、私は
git rebase [新しく下敷きにするブランチ] [その上に載せるブランチ]
と理解してます。
例えば git rebase main topic とすると、topicブランチのベース(分岐元)を、(現時点の)mainに差し替えられる。
古い時点のコミットEから分岐していたブランチが、
A---B---C topic
/
D---E---F---G main
現時点のmainの最新から分岐するようになる感じ。↓
A'--B'--C' topic
/
D---E---F---G main
図はこちらのドキュメントから:
https://git-scm.com/docs/git-rebase
ブックマークしていたURLに hl=ja というクエリパラメータが入っていたことが原因でした。
https://calendar.google.com/calendar/u/0/r など、該当のクエリパラメータがついていないURLにアクセスすれば、カレンダーの設定に応じた言語で表示されます。
英語圏の人にメッセージを送るため、会議情報を英語でコピーしたかったのですが、Googleカレンダーの「設定」>「言語と地域」>「言語」を英語に設定しても日本語表示のまま切り替わらない。
Googleアカウント自体の設定言語や、ブラウザの言語も英語にしてみたが変わらない。
で、URLをよく見ると https://calendar.google.com/calendar/u/0/r?hl=ja&t=..... となっていたので、そういえば以前Google検索の言語の切り替え方を調べたときにこのパラメータが関係あったなと思って hl=ja& の部分を削除したら、Googleカレンダーの設定通りに英語に切り替わりました。
Firebaseに新しいプロジェクトを追加しようとしたところ、プロジェクト数の上限が近づいていました。
過去にActions on Googleを色々試していた時にサンプルを動かすためだけに作ったプロジェクトが多数あったため、それを削除して整理しようと思いました。
Firebaseコンソールでプロジェクトの設定画面からFirebaseプロジェクトを削除しようとすると、「削除を防ぐリーエンがプロジェクトに配置されました。削除を許可するには、リーエンを削除してください。」というエラーが表示され、削除できませんでした。
Dialogflowとリンクされていることが原因のようだったので、Dialogflowコンソールから該当するDialogflowエージェントを削除しました。
ところが、Dialogflowエージェントの削除後も同じエラーが表示され続け、Firebaseプロジェクトが削除できない状態になりました。
下記手順で、プロジェクトの削除を防いでいる「リーエン」を削除することで解決できました。
gcloud CLI (Google Cloud CLI) をインストール
参考:
https://cloud.google.com/sdk/docs/install-sdk?hl=ja
>gcloud alpha resource-manager liens list --project my-project-name
NAME ORIGIN REASON
p703716169729-*********-****-****-****-************ You cannot delete this project because it is linked with a Dialogflow agent. Please follow the link to Dialogflow and delete the agent: https://console.dialogflow.com/api-client/#/agent/430c5fc3-****-****-****-************/ Deletion blocked by Dialogflow.
liens/<NAME欄に表示されたリーエンの名前>
の形式でリーエン名を指定して、下記コマンドを実行
>gcloud alpha resource-manager liens delete liens/p703716169729-*********-****-****-****-************
Deleted [liens/liens/p703716169729-*********-****-****-****-************].
>gcloud alpha resource-manager liens list --project my-project-name
Listed 0 items.
=begin
ここがコメントになる
ここがコメントになる
=end
VS Code では editor.action.blockComment に割り当てているショートカットキーで出てくる。デフォルトは Shift + Alt + A ?
私はIntelliJ IDEA KeybindingsでRubyMineっぽい割り当てにしているので Ctrl + Shift + / で出てくる。
erbでも、先に <% %> を入力した後その内側で Ctrl + Shift + / を押すと出てくる。
色々Disableして試した所おそらく VSCode Ruby extension のおかげ。
偶数と奇数が分からない人が結構(?)いるらしいというニュース記事を見かけて、入力した数字が偶数か奇数か判定するだけのサイトを作ってみました。
本当の本当にそれだけの機能しかありません。
素のJavaScriptやCSSを書いて基本に戻ってみる練習として。私は偶数奇数は分かります(笑)
単語を打ち終わって改行したいのに、Suggestions(入力候補)で別の単語が出てしまっていて、改行すると違う単語になってしまう。
Escで抜けることはできるんですが、キーが遠い…
Enterキーで確定する設定をOFFにしてTabキーで確定するのも試したのですが、やっぱりEnterで確定したい。
自分がSuggestionsを閉じようとして直感的に押すキーは方向キーの「←」。しかし単語の頭まで移動しないと抜けてくれない。
行末で、次の行がある状態なら「→」を押せば良いのですが、ファイルの1行目を書き始めたところだったりすると→を押しても閉じてくれない。
なのでEscapeキーの動作を←キーに割り当てられないか?と調べました。
最終的にはユーザーアカウントを移行すれば解消されるようだけど、開発環境を作り込んでしまっていたのでユーザー移行はできればしたくない…!と色々試して解決した方法です。
解決につながったと思われる操作は「ライブタイルのピン留めを外す」です。
これまでにもたまに表示できなくなることはあったものの、一時的なもので気が付いたら直っていたのですが、今回は1日経ってもPCを再起動しても解消されず。
MongoDBにこういうデータがあって、findOneでIDを指定してこの1件を取得したい。
{
"_id": {
"$oid": "5f00f8d2e2b54b54646cac19"
},
"title": "new book"
}
最初こんな感じで書いてみたけどダメだった。検索結果がnullになってしまう。
var bookid = '5f00f8d2e2b54b54646cac19';
// NG例1
collection.findOne({ "_id": bookid }, function(err, doc){
// do something
}
// NG例2
collection.findOne({ "_id": { "$oid": bookid } }, function(err, doc){
// do something
}
I hadn't been doing freeCodeCamp lessons for a while, but finally I earned my Data Visualization certification!
One more certification to go!
Visual Studio Code
のリモートWSLを使っていて、内蔵ターミナルでカーソルから行末まで削除のつもりで
Ctrl + K を押すと、VS
Codeのショートカットキーとして認識されてしまい動作しない。
設定で「Terminal > Integrated: Allow Chords」をOFFにすることで、ターミナルのキーバインドとして動作させることができた。

こちらを参考に、Jobが1件実行されたことを確認するテストを書いてみました。
https://api.rubyonrails.org/classes/ActiveJob/TestHelper.html#method-i-assert_performed_jobs
# download_job_test.rb
require "test_helper"
class DownloadJobTest < ActiveJob::TestCase
setup do
@my_image = my_images(:one)
end
# (省略)
test "perform download job" do
assert_performed_jobs 0
perform_enqueued_jobs do
DownloadJob.perform_later(@my_image.id)
end
# Jobが1件実行されたことを確認する
assert_performed_jobs 1
end
end
ところが実行してみると、何故か2件のJobが実行されてFailします。
日本語を含むURI文字列をエンコードするために URI.encode を使っていたのですが、Rubocopさんに URI.encode は obsolete だと怒られたので書き換えたい。
W: Lint/UriEscapeUnescape: URI.escape method is obsolete and should not be used. Instead, use CGI.escape, URI.encode_www_form or URI.encode_www_form_component depending on your specific use case.
encoded_uri = URI.escape(str)
^^^^^^^^^^^^^^^
これでうまくいった!
irb(main):023:0> require 'webrick/httputils'
=> true
irb(main):024:0> WEBrick::HTTPUtils.escape(str)
=> "http://sample.com/My_Directory/2020/01/20200131_%E6%97%A5%E6%9C%AC%E8%AA%9E%E3%81%AE%E6%96%87%E5%AD%97%E5%88%97.jpeg"
Rails 5.2.3 → 6.0.2にアップデート後、テストを実行すると下記のエラーが発生
ArgumentError: Invalid formats: "json"
Controllerで下記の記述をしている箇所で発生している
render "index", formats: "json", handlers: "jbuilder"
Rails ガイドの レイアウトとレンダリング > 2.2.12.5 :formatsオプション を参照すると、以下のような例が記載されている
render formats: :xml
render formats: [:json, :xml]
ActiveStorageを使っているプロジェクトで、fixture_file_upload を含むテストを追加したら、
関係ないはずの他のテストがランダムに失敗するようになった。
追加したのはこんな感じのテスト。
test "create with valid file attachment" do
image_file = fixture_file_upload("test/fixtures/files/sample.jpg", "image/jpg", :binary)
post somethings_path, params: { something: { name: "新規作成",
image: image_file } }
assert_response :created
end
失敗時のエラー
NoMethodError: undefined method `column_types' for nil:NilClassfixture_file_upload を含むテストをコメントアウトすると、常に成功するようになる。content_type をチェックするようなバリデーションがあるので、そこで失敗していそう。Git Bash を起動したときにデフォルトで表示されるディレクトリを変更したい時、 .bashrc や .bash_profile ファイルに cd $HOME/other_directory のようなコマンドを追記して設定すると、Windowsのエクスプローラーから右クリック>「Git Bash Here」 のメニューから起動した時でもこのコマンドが実行されてしまい、常に .bashrc や .bash_profile で指定したディレクトリから起動されてしまう。
ショートカット/スタートメニューから起動したときには指定のディレクトリ、「Git Bash Here」から起動した時にはそのディレクトリから起動されるようにしたい。
Windowsのショートカットのプロパティで設定する。
Today's Progress:
やってみてすごく便利!と思ったのでブログに書こう書こうと思っていた、 Firebase Functions のローカル環境の作り方をブログにまとめました。
最初に設定したときから1か月くらい経ってしまっていたので、色々バージョンアップしたせいかサーバーが起動できなくなっており…。
結局エラーメッセージからは全然予想しなかった設定で解決しました。だいぶ悩みました…。解決してよかった!
Links to work:
Actions on Google のドキュメントやチュートリアルだとあまり詳しく書かれていない、Firebase Functionsの代わりにローカルサーバーを使用する環境を構築する方法です。
コードを1行変えて動作を確認するにも毎回Firebaseにデプロイして…という手間から解放されます…!
【参考記事】
Speed up Actions on Google development workflow with local fulfillment
https://medium.com/voiceano/speed-up-actions-on-google-development-workflow-with-local-fulfilment-7de17d5f166f
実行コマンドやjsonの設定内容も上記記事から引用させていただいています。大変参考になりました。ありがとうございます!
Windows 10 Home (バージョン1903)
Node v10.16.3
firebase-functions @3.2.0
firebase-admin @8.6.0
ngrok @3.2.5
nodemon @1.19.2
躓いたポイントは後でまとめるとして、まず全部うまくいった場合の手順を。
すでに、Firebase FunctionにデプロイしてDialogflowと連動して動作しているプロジェクトがある前提で進めます。
GitHubで複数行に対してコメントをつけることができるようになったそうですよー!
Multi-line comments have arrived!
— GitHub (@github) October 1, 2019
You can now highlight multiple lines in a pull request diff and add a comment, all at once. pic.twitter.com/nqIgdBkRql
むしろ今まで何でできないんだろうと思ってました。プログラマの人にとってはそういうものなのかしら…私が初心者だからその感覚がわからないのかしら?と思ってました(笑)
Today's Progress:
JavaScriptの読み込み順、実行順でとにかく引っかかっているなと思います。
ドキュメントを上から順に読んでその通りに並べても動かなくて、どこでinitializeしたインスタンスをどこで使って…というのを意識して読み込み順を整理すると動くようになりました。
ログイン後別のページにリダイレクトさせた際、 firebase.auth() の情報はどうやって引き継いだら…?と思ったのですが、普通に別ページにもfirebaseをinitializeするコードを入れて firebase が使えるようにすると、引き継ぐことができました。
どこまで引き継がれるかはここら辺で設定できるのかな?
認証状態の永続性
Google, Twitter, Email+Password でログインフローが動作することを確認。
Links to work: