コード日進月歩

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

2018-01-01から1年間の記事一覧

2018年の個人アクションざっくり振り返り

2018年最後の一本ということで振り返りテイストでお送りします。この日記は実務と個人を切り離している感じなので、実務のことは繁忙度だけ書いておきますがご愛嬌。 月別サマリ 1月 波乱の幕開け、まだそこまで忙しくなかった。 行った勉強会 サービスを Ru…

ざっくり知る「結果整合性(Eventual Consistency)」

「このブログはほぼ毎日更新しているという体裁だが、実際はリアルタイムに更新できていない、ある意味毎日更新という結果整合性だけが伴っている。」という話なんだけど、結果整合性ってなんだっけ、というのまっさらな話からざっくり理解するためのメモ 言…

壁紙用に便利なサイト FIND47

年末なので日記的な側面の記事です。 よく出先のMTGとか行くと、画面つないだときに拡張デスクトップが出るので、そこで話をつなげるために便利な壁紙 サイト FIND/47|みんなで集め、広めていくフォトアーカイブ。 便利なところ 権利的に丁寧な説明がある -…

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 # …

『銀座Rails#4』に行ってきたよメモ

銀座Rails#4に行ってきたよメモです 各発表の感想 Rails アプリを個人開発からチーム開発に成長させる スライドは見つけたら貼ります、なおQiitaのアカウントはこちら 感想 一人で取り回していたサービスからチーム開発へ至るまでの経験談の話 before_action…

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…

RubyのDate.parseはオプションを特につけず、年月日を2桁表記すると上位2桁を補完できるが独特の動きをするので気をつける

割と理由が読み取れない不思議な仕様なのでメモ 環境 $ ruby -v ruby 2.5.3p105 (2018-10-18 revision 65156) [x86_64-darwin18] 挙動と例 Date.parse には下記のような仕様がある。 年が "00" から "99" の範囲であれば、 年の下2桁表現であるとみなしこれ…

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

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

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

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

PHPカンファレンス2018に当日スタッフ参加してきたメモ

ほぼ休み宣言に近い雑記です。 去年からの継続 実は去年もやっていて、引き続きの当日ボランティアスタッフ参加。 shinkufencer.hateblo.jp 昨年も配信のお手伝いをして、今年も配信のお手伝いしてました。 箇条書き感想 一日1000人overの来場をするカンファ…

gitでhttpsを使った取扱の場合でも認証情報は一時保存ができる

表題の通りネタシリーズ やり方 一時的にキャッシュさせたい場合 .git があるディレクトリで git config --global credential.helper store --timeout={{維持時間}} と打つと、一定時間認証情報を保ってくれる。ずっと永続的に持たせたくないけど、営業時間…

誕生日とTimezoneのあり方に関してざっと調べてみた

誕生日ってTimeZone考慮すべきなの?みたいな雑記 考え方 割と下記のツイートに話をしたいことが集約されていて @onk 例えば誕生日って、タイムゾーン関係ないじゃないですか。JSTの6/5の午前6:00に生まれた人の誕生日が、その前後にちょうどイギリス旅行し…

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>…

高梨太郎のひどい伝言ゲームから見る、仲介役のバッドノウハウ

前から書いてみたかった、ということで初めて書きます!SHIROBAKO Advent Calendar 2018 8日目です。 adventar.org 夢と現実の間をさまよう、クリエイティブなものをつくる人たちのためのアニメSHIROBAKO。このブログの趣旨と併せたいということもあったので…

ブランチとかコミットとかよくわからない、という人にさっと出したいスライド『こわくない Git』

スライド回顧録です。 こわくない Git from Kota Saito www.slideshare.net Githubをなんとなくで使い始めて、ブランチとかコミットとか用語はわかってきたけど、はてどうしたら次のステップに進めるんだろうとかに勧めたいスライド。このスライドのすごいと…

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とは払う側(広告を出す側)においてのコストの話。そのためページやアプリで表示する側はもらう側にあたる。 「コスト」を言い換えて「単価」という読み方をするとイメージがつ…

Web広告を知るにあたり、当たり前の用語を改めて読み解いてみる

割合、Web開発してれば当たり前の用語から意外と知らん言葉もあったので「割とみんな知ってるよね」系をピックアップしてまとめてみた。 調べた用語 Page View (略称:PV) ページが見られた数。 Webページ発祥の言葉なのでWebサイトに使うことが主。ただネイ…