2024年6月7日金曜日

Parameter と Argument の違い

どちらもなんとなく「引数」だと思ってなんとなくで使ってしまうのですが…
  • Parameter=仮引数(関数の定義に使用する引数)
  • Argument=実引数(関数を呼び出す際に渡す引数)

  function example(parameter) { // 関数の定義に使用する引数
    console.log(parameter);
  }

  const argument = "foo";

  example(argument); // 関数を呼び出す際に渡す引数
  
(コード例はMDNのParameter (仮引数)のページより)

参考資料:
MDN Web Docs 用語集 Parameter (仮引数)

2023年9月6日水曜日

git rebase の私の理解

厳密に正しい表現かはわかりませんが、私は

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

2023年8月3日木曜日

Googleカレンダーの言語設定が切り替わらなくて困った時のメモ

解決した方法

ブックマークしていた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カレンダーの設定通りに英語に切り替わりました。

2022年7月15日金曜日

Dialogflowを削除してもFirebaseプロジェクトが削除できない問題に対処 (エラー:削除を防ぐリーエンがプロジェクトに配置されました。)

Firebaseに新しいプロジェクトを追加しようとしたところ、プロジェクト数の上限が近づいていました。 

過去にActions on Googleを色々試していた時にサンプルを動かすためだけに作ったプロジェクトが多数あったため、それを削除して整理しようと思いました。

発生した現象

Firebaseコンソールでプロジェクトの設定画面からFirebaseプロジェクトを削除しようとすると、「削除を防ぐリーエンがプロジェクトに配置されました。削除を許可するには、リーエンを削除してください。」というエラーが表示され、削除できませんでした。

Dialogflowとリンクされていることが原因のようだったので、Dialogflowコンソールから該当するDialogflowエージェントを削除しました。

ところが、Dialogflowエージェントの削除後も同じエラーが表示され続け、Firebaseプロジェクトが削除できない状態になりました。

解決した方法

下記手順で、プロジェクトの削除を防いでいる「リーエン」を削除することで解決できました。

  1. gcloud CLI (Google Cloud CLI) をインストール
    参考: https://cloud.google.com/sdk/docs/install-sdk?hl=ja

  2. リーエンの一覧を確認
    >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.
    
  3. liens/<NAME欄に表示されたリーエンの名前> の形式でリーエン名を指定して、下記コマンドを実行
    >gcloud alpha resource-manager liens delete liens/p703716169729-*********-****-****-****-************
    Deleted [liens/liens/p703716169729-*********-****-****-****-************].
    
  4. リーエンが削除されたことを確認
    >gcloud alpha resource-manager liens list --project my-project-name
    Listed 0 items.
    
  5. Firebaseコンソールに戻り、Firebaseプロジェクトを削除

2021年7月14日水曜日

ruby, erb の複数行コメント

=begin
ここがコメントになる
ここがコメントになる
=end

VS Code では editor.action.blockComment に割り当てているショートカットキーで出てくる。デフォルトは Shift + Alt + A ? 私はIntelliJ IDEA KeybindingsでRubyMineっぽい割り当てにしているので Ctrl + Shift + / で出てくる。
erbでも、先に <% %> を入力した後その内側で Ctrl + Shift + / を押すと出てくる。
色々Disableして試した所おそらく VSCode Ruby extension のおかげ。

2021年2月21日日曜日

偶数か奇数か調べるだけのサイト作ってみた

偶数と奇数が分からない人が結構(?)いるらしいというニュース記事を見かけて、入力した数字が偶数か奇数か判定するだけのサイトを作ってみました。

本当の本当にそれだけの機能しかありません。

偶数?奇数?


素のJavaScriptやCSSを書いて基本に戻ってみる練習として。私は偶数奇数は分かります(笑)

2021年1月21日木曜日

VS Code の入力候補を好きなキーで閉じられるようにする

単語を打ち終わって改行したいのに、Suggestions(入力候補)で別の単語が出てしまっていて、改行すると違う単語になってしまう。

Escで抜けることはできるんですが、キーが遠い…
Enterキーで確定する設定をOFFにしてTabキーで確定するのも試したのですが、やっぱりEnterで確定したい。

自分がSuggestionsを閉じようとして直感的に押すキーは方向キーの「←」。しかし単語の頭まで移動しないと抜けてくれない。
行末で、次の行がある状態なら「→」を押せば良いのですが、ファイルの1行目を書き始めたところだったりすると→を押しても閉じてくれない。

なのでEscapeキーの動作を←キーに割り当てられないか?と調べました。

2021年1月1日金曜日

Windows10のスタートメニューが特定のユーザーのみ表示されなくなった

最終的にはユーザーアカウントを移行すれば解消されるようだけど、開発環境を作り込んでしまっていたのでユーザー移行はできればしたくない…!と色々試して解決した方法です。

解決につながったと思われる操作は「ライブタイルのピン留めを外す」です。

発生していた現象

  • スタートボタンをクリックしてもなにも表示されない。
  • スタートボタン上で右クリックは反応する。(アプリと機能、モビリティセンター…などのメニューが正常に表示される)
  • 他のユーザーアカウントでは正常にスタートメニューが表示される。

これまでにもたまに表示できなくなることはあったものの、一時的なもので気が付いたら直っていたのですが、今回は1日経ってもPCを再起動しても解消されず。

2020年7月5日日曜日

MongoDBで "_id" フィールドの値で検索する

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
}

2020年6月18日木曜日

freeCodeCamp Data Visualization certification

I hadn't been doing freeCodeCamp lessons for a while, but finally I earned my Data Visualization certification!

One more certification to go!

2020年6月5日金曜日

VS Code のターミナルで Ctrl+K

Visual Studio Code のリモートWSLを使っていて、内蔵ターミナルでカーソルから行末まで削除のつもりで Ctrl + K を押すと、VS Codeのショートカットキーとして認識されてしまい動作しない。

解決策

設定で「Terminal > Integrated: Allow Chords」をOFFにすることで、ターミナルのキーバインドとして動作させることができた。

設定画面のスクリーンショット

2020年5月8日金曜日

ActiveJobの処理でファイルを添付していると performed_jobs が想定より1件多くなる?(Ruby on Rails, Minitest, ActiveStorage)

遭遇した現象

こちらを参考に、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します。

2020年2月1日土曜日

URI.encode が obsolete だそうなので WEBrick::HTTPUtils.escape に書き換えた

日本語を含む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"

【参考】 URI.encode (Ruby 2.5.0 リファレンスマニュアル)

2019年12月27日金曜日

Rails 6.0にアップデートすると ArgumentError: Invalid formats: "json" エラーが発生するようになった

発生したエラー

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]

2019年12月17日火曜日

fixture_file_upload を使うと他のテストがエラーになる

遭遇した現象

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:NilClass
  • 常にではない。成功するときもある。
  • fixture_file_upload を含むテストをコメントアウトすると、常に成功するようになる。
    コメントアウトを戻すとまたランダムに失敗する。
  • ActiveStorageの代わりにCarrierWaveを使っているプロジェクトでは、発生したことがない。(Railsのバージョンは同じ)
  • content_type をチェックするようなバリデーションがあるので、そこで失敗していそう。

2019年10月15日火曜日

Git Bash の起動ディレクトリのカスタマイズと「Git Bash Here」メニューを両立させる

実現したいこと

Git Bash を起動したときにデフォルトで表示されるディレクトリを変更したい時、 .bashrc や .bash_profile ファイルに cd $HOME/other_directory のようなコマンドを追記して設定すると、Windowsのエクスプローラーから右クリック>「Git Bash Here」 のメニューから起動した時でもこのコマンドが実行されてしまい、常に .bashrc や .bash_profile で指定したディレクトリから起動されてしまう。

ショートカット/スタートメニューから起動したときには指定のディレクトリ、「Git Bash Here」から起動した時にはそのディレクトリから起動されるようにしたい。

解決策

Windowsのショートカットのプロパティで設定する。

2019年10月4日金曜日

#100DaysOfCode R2 Day39-40

Day 39-40: October 2-3, 2019

Today's Progress:

  • Firebase Functions ローカル開発環境の構築方法をブログに
  • nodemon が起動できないエラーの調査

やってみてすごく便利!と思ったのでブログに書こう書こうと思っていた、 Firebase Functions のローカル環境の作り方をブログにまとめました。
最初に設定したときから1か月くらい経ってしまっていたので、色々バージョンアップしたせいかサーバーが起動できなくなっており…。

結局エラーメッセージからは全然予想しなかった設定で解決しました。だいぶ悩みました…。解決してよかった!

Links to work:

Actions on Googleで使うFirebase Functionsの開発用ローカルサーバーを作る

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と連動して動作しているプロジェクトがある前提で進めます。

2019年10月2日水曜日

GitHubが複数行コメントに対応!

GitHubで複数行に対してコメントをつけることができるようになったそうですよー!

むしろ今まで何でできないんだろうと思ってました。プログラマの人にとってはそういうものなのかしら…私が初心者だからその感覚がわからないのかしら?と思ってました(笑)

2019年10月1日火曜日

#100DaysOfCode R2 Day37-38

Day 37-38: September 29-30, 2019

Today's Progress:

  • FirebaseUIの導入
  • ログイン後、他のページに遷移させてみる
  • 他のページでもログイン後の情報を利用してみる

JavaScriptの読み込み順、実行順でとにかく引っかかっているなと思います。
ドキュメントを上から順に読んでその通りに並べても動かなくて、どこでinitializeしたインスタンスをどこで使って…というのを意識して読み込み順を整理すると動くようになりました。

ログイン後別のページにリダイレクトさせた際、 firebase.auth() の情報はどうやって引き継いだら…?と思ったのですが、普通に別ページにもfirebaseをinitializeするコードを入れて firebase が使えるようにすると、引き継ぐことができました。

どこまで引き継がれるかはここら辺で設定できるのかな?
認証状態の永続性

Google, Twitter, Email+Password でログインフローが動作することを確認。

Links to work: