コード日進月歩

しんくうの技術的な小話、メモ、つれづれ、など

Tips

とりあえず各種ブラウザの見え方を知りたい場合に便利なサイト「Browser screenshots」

崩れているかみたいけどIEとか手元にないわ…という時のためのサイト URL Microsoftのサイトにある Website Screenshots & Responsive Design Screenshots - Microsoft Edge Development どんな感じか 裏ではBrowerStackを使っているようで下記のようにざらっ…

UnicodeにおけるU+から始まる文字列はUnicodeの表現で、そのままUTF-8の表現で使えるものではない。

理解がぼんやりしていたので書いてまとめてみる コードポイントとは プログラム上で文字列を扱うためのマッピング情報、わかりやすい説明があったので引用すると以下 まずは基本中の基本だけど、(現在のところ)コンピュータが扱えるのは数値のみという大前…

Rubyでメソッドの最終行にif修飾子(後置if)を使って条件に当てはまらない場合はnil

表題の通りシリーズ、直感的にそうなるんじゃね?と思っていても試したことなかったのでメモ 環境 $ ruby -v ruby 2.5.0p0 (2017-12-25 revision 61468) [x86_64-darwin18] 例 test.rb として以下のファイルを用意する def one_of_true(target) true if targ…

Dockerfile内のENTRYPOINTとCMD(とRUN) の使い分け

人に説明するためにざっくりまとめる。 環境 $ docker -v Docker version 18.06.1-ce, build e68fc7a 分類 コマンド名 説明 RUN Shellの実行をするコマンド ENTRYPOINT docker run 実行時に行われるコマンド CMD 『ENTRYPOINTが未指定、かつ docuker run で…

OpenAPI3.0で使うcomponentsの種類をざっくりまとめる

Swaggerと呼ばれたりOpenAPIと呼ばれたりするOpenAPI Specification。どれが何やねん、ってなるのでメモ。 環境 openapi: 3.0.0 componentsセクションの種類 記述名 用途 schema 具体的なオブジェクト parameters APIのパラメータ、クエリストリングやパスパ…

RSpecには表示の出力をキレイにする --format documentation というオプションがある

キレイだが物量すげぇというので一長一短なやつ。 環境 $ bundle exec rspec --version RSpec 3.8 - rspec-core 3.8.0 - rspec-expectations 3.8.2 - rspec-mocks 3.8.0 - rspec-rails 3.8.1 - rspec-support 3.8.0 やり方 実行時に以下の感じで指定する bun…

RSpec内でcontrollerを定義して、concernのメソッドをテストする

俗に言うAnonymousControllerという手法です。 環境 $ bundle exec rspec --version RSpec 3.8 - rspec-core 3.8.0 - rspec-expectations 3.8.2 - rspec-mocks 3.8.0 - rspec-rails 3.8.1 - rspec-support 3.8.0 書き方 下記のようなconcernがあったとする m…

GoogleスライドでUnicode絵文字をきれいに出す場合はオフラインにする

実はオンラインだと出ないという話。 事象 作成時の状態でやるときれいに絵文字が出るが 編集時 プレゼンテーション状態になると出ない 解決策 オフラインにする ※おそらくインターネット接続状況が変化する契機っぽい 補足 ただしpdf書き出しはどうにもなら…

MySQLでデータは複製せず、テーブル構成だけを複製する場合、no-dataオプションでmysqldumpすると良い

既存のデータベースにRailsアプリケーションを導入すると、もともとmigrationがないからテスト用のschema作れないとかそういうことがあるので、そこらへんに対するアプローチ。 環境 $ mysql --version mysql Ver 14.14 Distrib 5.7.24, for osx10.14 (x86_6…

RailsでRSpecの実行時引数を.rspecに書いてRSpecの実行を便利にする

require忘れて時間を取られるみたいなことが多々あるので、.rspecを活用するときのメモ 環境 $ bundle exec rspec -v RSpec 3.8 - rspec-core 3.8.0 - rspec-expectations 3.8.2 - rspec-mocks 3.8.0 - rspec-rails 3.8.1 - rspec-support 3.8.0 使い方 設置…

Railsのerbで使われる記号の意味

意外とパターンすくないのでまとめてみた 記号別意味(パーセント/だいなり/しょうなりの表記は省略) <% %>(パーセントのみ) 出力が伴わないがRubyのコードとして操作したいときに使う。 if文で処理を分岐させる場合などに使う <% if @show_text == true …

Railsでログに残したくないパラメータなどはfilter_parametersに指定する

他の人がやってくれていたアプリのみ触っていたので今後のためのメモ 環境 $ bin/rails -v Rails 5.2.2 やりたいこと ユーザログインを作る場合などに受け取ったパラメータをそのままパラメータとしてRailsログに書き出してしまうが、場合によってはRailsの…

Railsでのテストにおいて、リクエストホスト名はデフォルトだと www.example.com

どこで指定してんだろ、と思って調べてみたメモ 環境 $ bin/rails -v Rails 5.2.2 概要 RSpecなどのテストにおいて、xxx_urlで生成されるurlのホスト名は www.example.com になる 例 たとえば自分のURLを生成してJSONとして返すコントローラーを作るとする c…

RailsにおいてModelのcreate!はブロックで囲めるし、それで関連レコードの作成ができる

こんな書き方あるんだ的なメモ 環境 $ bin/rails -v Rails 5.2.2 やり方 今回使うモデル # == Schema Information # # Table name: users # # id :bigint(8) not null, primary key # name :string(255) # created_at :datetime not null # updated_at :date…

RailsのActiveRecordのcreate_***は元からrelationがあるレコードがあっても新規で追加されるので気をつける

当たり前といえば当たり前なんだけど、冪等性保つ動きを期待しちゃう側面もあるのでメモ 環境 $ bin/rails -v Rails 5.2.2 概要 relationを行っているモデルに対して create_{{モデル名}} というメソッドを実行すると連動したレコードが作れるが実行するたび…

RSpecのitはブロックにしないことにより、箇条書きリストとして使うことができる

先日のt_wadaさんのライブコーディングで得た知見 環境 rspec (3.7.0) 概要 itはブロックを設けないことにより、pendingになるので、箇条書きとして機能する 例 例えば以下のようなUserモデルがあったとき # == Schema Information # # Table name: users # …

Rubyにおいてnilでも使えるメソッドを眺める

他の言語だとだいたいExceptionが起きるNULLだけど、rubyの場合は結構メソッドが用意されているので割と動いてくれる。そのメソッドたちを調べた 環境 $ ruby -v ruby 2.5.3p105 (2018-10-18 revision 65156) [x86_64-darwin18] 検証 使えるものを調べる nil…

GithubでRevertしたPullRequestをまた反映させたい場合はそのPullRequestをまたRevertさせる。

みんな書いてるけど簡潔な表現を表しているページがなかったので書いてみる系 やり方 PullRequestをRevertしたPullRequestをRevertしたPullRequest作ってマージする 例 修正をもとに戻す 以下の動作をしたとする branchAを作り、修正Aを行いコミット branchA…

GitHub2段階認証方式を変えた際にCUIでのパスワード入力はaccesss tokenを使う

ただの啓蒙記事。 起こる事象 前提のhttpsでのcloneに関して git clone https://github.com/shinkufencer/moshi2police.git のようにhttpsでのcloneをしようとするとEmailとPasswordを尋ねられる。従来であればGithubに登録したメールアドレスとパスワードで…

Firebaseはプロジェクトごとに閲覧や編集などの権限設定ができる

まだ発展途上っぽいので2018年12月時点の情報として。 やり方 左上の鍵マークから「ユーザと権限」を選択すると設定画面に遷移する メンバーを追加を押すと以下のように追加したい人のメアドと権限の設定ができる 権限の種類は メンバーの追加含めなんでもで…

Rails5でenumの文字列ではなく、実態値が取得したい場合は {{enumの名前}}_before_type_cast

昔はできたが今はできない系 環境 $ bundle exec rails -v Rails 5.2.1 例 以下のようなenumがあるとする class User < ActiveRecord::Base enum sex: { not_known:0, male: 1, female: 2, not_applicable: 9 } #...(後略).... こんなときに『男性のときは1…

WebMockでパラメータによって成功時のリクエストと失敗時のレスポンスのモックを分ける

前回の応用編。 環境 webmock (3.4.2) 実例 想定する用件 "https://example.com/hogehoge" というURLのに { "id": 100 } のようなJSONを作り、idが100だったら成功するが、0を指定すると500エラーで落ちる。みたいなAPIを想定した場合 実際の設定 以下のよう…

WebMockでリクエストの値そのものも見たいときはwithに内容を指定する

WebMock入ってる環境でrspecを実行すると勝手に出てくるサンプル例に出てくるけど紹介 環境 webmock (3.4.2) 書き方 通常モックをさせる場合以下の感じで書くと思います。 stub_request(:post,"https://example.com/post_endpoint") .to_return(status: 200,…

Railsでそのままparamをhashにしたいときは一回permit!する

小ネタ。 環境 $ bundle exec rails -v Rails 5.2.1 事例 paramsはそのままだと ActionController::Parameters なのでhashにまつわるクラスがつかえなかったりする # binding.pryなどした例 params # => <ActionController::Parameters {"contents"=>{"title"=>"hoge", "body"=>"huga"}, "controller"=>"</actioncontroller::parameters>…

nginxでどうしてもアンダースコアを使うheaderを使う場合はunderscores_in_headersという設定をonにする

表題の通りシリーズ。 前提 前に記事に書いたとおり、nginxなどがアンダースコアを含むheaderがあると自動的に間引かれる WEBアプリケーションへのHTTPヘッダにアンダースコアを使うと到達前に弾かれることがある - コード日進月歩 だがいろいろなルールによ…

RSpecにて対象のクラスを明示的にちゃんと書いている場合はdescribed_classを使うと便利

あ、こんな書き方あるんだという感じのメモ。 環境 rspec (3.7.0) 書き方 RSpec.describe User do let(:u) {described_class.new} end と書くと RSpec.describe User do let(:u) {User.new} end と同義になる 参考リンク 【RSpec】described_classの小さなサ…

JSONをさっと整形するときに便利なサイトJSONLint

よく使うサイトなので単純なオススメ的な話。 サイト JSONLint - The JSON Validator 使い方 見えやすい形に成形してくれる また、JSON的におかしいときにも指摘してくれるので便利 一応、外部サイトなので漏らしてはいけないものは貼らないように…

Web広告用語の頭にCがつく用語をざっと調べてみた

紛らわしいCから始まる略語シリーズの意味メモ Cost Per XXXX系 ここでいうCostとは払う側(広告を出す側)においてのコストの話。そのためページやアプリで表示する側はもらう側にあたる。 「コスト」を言い換えて「単価」という読み方をするとイメージがつ…

ndenvだとバージョンを追加するたびにyarnを毎度インストールしないといけないのでhookでやる

便利なプラグインがあるので紹介メモ 環境 $ ndenv -v ndenv 0.4.0-4-ga339097 やり方 ndenv-yarn-installという便利なものがあるので、それを使う。 まずはcloneして、ndenvの管理下のディレクトリに格納する $ git clone https://github.com/pine/ndenv-ya…

PlantUMLでER図を書く

Web開発からスタートするとあまり触ることのないUML。それを使ってER図を書く 今回の記事の端末環境 macOS Mojave ver 10.14.1 homebrew導入済み $ brew --version Homebrew 1.8.4 Homebrew/homebrew-core (git revision c1ab; last commit 2018-11-30) 準備…