コード日進月歩

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

2018-05-01から1ヶ月間の記事一覧

JavaScriptで || を使う初期代入と気をつけること

変数の初期値代入 nullチェックしてなければ代入みたいなコードを 簡略化して書くと以下のように書くことができます。 base = "default string" insert = null result = insert || base // resultには"default string"が代入される ただし数値で使うと予期せ…

想定したキーがすべてあるかを確かめるRSpecの書き方

あくまでも私はこうしているよシリーズ。 let(:keys){ "id" , "updatedAt", "createdAt" } it "マッチするか" do # 何かしらチェックしたいhashを降り出す hash = subject # Array化したキーとチェック対象がマッチしていればある expect(hash.keys).to matc…

定数管理をするgem configにて動的に書き換える

定数を管理する config といgemがあるが、これはハッシュを指定すると上書きできる。上書きできるのでテストするときは上書きするなどの行為ができる。 ※普通のソースコード上ではsettingsの旨味なくなるのでやらないこと 環境 rails (5.2.0) config (1.7.0)…

HTMLのmetaタグ、noindexに関してのメモ

突然SEO知識を要求されるエンジニアです。 今回はメタタグ、noindexに関してのメモです。 概要 タグとしての役割 検索エンジンのクローラーBot達にインデックスしなくていい(≒検索エンジンの検索結果に反映しなくていい)よとお知らせするためのタグです。 書…

echoした文字列を権限を超えて付け足したい場合はteeを使うと安全かはさておき楽

タイトルがすべてを語っているTips。 ケース すでにexportした環境変数を永続的に使うために書き出したい echoして /etc/environment などに書きたい sudoしなきゃいけないのでただのリダイレクトだとできないので他の方法でやりたい シェル芸でなんとか設定…

『Webサイト』をつくる上で必要なドメイン知識

先日、とある人と会話していたときにふと思ったが、Webサイトを作る上のドメイン知識って ホームページはどうやって作られているか、HTMLとはなにか 動的ページと静的ページの違い PC向けとスマートフォン向けで考えねばならないUXとは何か みたいなものって…

binding.pryの強制終了方法

デバッグ用途で binding.pry を入れたはいいが、ループ内に仕込んでしまったので exit をしてもずっと聞かれ続ける しかも Ctrl + C とかでも止まらないし…みたいな人ためのメモ 方法 exit! もしくは !!! 参考リンク binding.pry 使ってる時に、一気にループ…

BigQueryで作ったクエリは保存できるし、共有もできる。

BigQueryはSQLだし、手元に違う形でクエリを残しがちだけど、普通にUI上で保存したり共有したりすることができる。 クエリの保存と共有 | BigQuery | Google Cloud プロジェクトで保存すると、同じBigQueryを覗ける人はリンクさえわかれば編集もできる。 編…

activerecord-importでバルクインサート / バルクアップデートする

Railsのデフォルトで大量のデータをinsertすると、1レコードずつinsertするのでDBが悲鳴をあげる可能性がある。それを防ぐgemとして activerecord-import があるのでそれを使う。 このgemはupdateも一気に出来るのでそれも紹介する。 環境 rails (5.1.5) act…

一般的なシステムとゲームシステムの垣根

こんなTweetがあった リプレイ保存の仕組みって、コントローラー情報を直接メインループで見るんじゃんなくて、プレイヤークラス的なのを作ってそこからメインループにコマンド送るようにしておけば、コマンドデータを保存するだけでプレイを再現できるよう…

『あしたの現場で役立つ「システム設計の原則」と「越境」のはじめかた』に行ってきたよメモ

業務がめちゃくちゃ忙しい最中だったが、あしたの現場で役立つ「システム設計の原則」と「越境」のはじめかた - DevLOVE | Doorkeeper に行ってきましたのでメモ 発表メモ speakerdeck.com 上のスライドベースで 現場で役立つシステム設計の原則 の著者 増田…

「テスト書かないと怖くてプログラム書けない」がだんだんわかってきた

現在過去あまりやったことがない感じでTDDライクな開発をしているんですが、すごい不安材料の消しやすさが楽。 いままでは 実装する その機能を実際に動かしてみる 止まったりしたらデバッグログ仕込んで直す 何度か動かして解決 デバッグログを消す みたい…

MySQLの出力結果を効率良くExcel(もしくはスプレッドシート)に貼るテクニック

MySQLの出力結果を非エンジニアに渡すときなどはExcelなどにはると思うのですがそういうときの話。 意外と知らない人は知らないのでメモがてら。 結論 MySQLの出力結果をテキストエディタなどに貼り付けて | を \t (タブ文字)に変換する。 原理解説 Excel(…

RailsでTimecopを使わず現在時間をずらすRSpecを書く

実はTimecopはいらなくなったという話題の実践編 環境 rails (5.1.5) rspec (3.7.0) やり方 helperに追記 rails_helper.rbのお好みのところに追加 RSpec.configure do |config| # 中略 config.include ActiveSupport::Testing::TimeHelpers end 使い方 trave…

InteliJ系のIDEでGithub上にすでにあるものをプロジェクトとして始める

新規作成の説明はたくさんあるのに、既存を開く場合は割とググっても出てこないのでスクショを混ぜて紹介 サンプルに使ったIDE RubyMine 2017.3 やりかた Githubのアカウントを設定する 落としてきたいリポジトリを選択する VCS > Checkout from Version Con…

Rubyで継承を強制するためにNotImplementedErrorを活用する

絶対継承後のクラスは実装しろ!!!いいな!!! みたいなJavaでいうところのInterfaceみたいなものを実装したいとき やりたいこと 子クラスで必ず実装させる義務が発生するメソッドを作りたい。 やりかた 親クラスで引き継がせたいメソッドで NotImplement…

FactoryBotでそのモデルの持つメソッドを生成後に実行する

Sorcery とか使っていると 『アクティベーションのユーザ』 みたいなオブジェクトが欲しくなるのでそういうのの書き方 環境 rails (5.1.5) factory_bot (4.8.2) factory_bot_rails (4.8.2) やり方 after(:create) のコールバックを活用する 例 Sorceryを交え…

docker / docker-compose build で 引数を複数渡す

やり方が全然書かれていない、いやシェル界ではよくある話なのかもしれないが… 環境 $ docker --version Docker version 18.03.1-ce, build 9ee9f40 $ docker-compose --version docker-compose version 1.21.1, build 5a3f1a3 コマンド 2回指定するだけ。 d…

いつも忘れるRailsコマンド ルーティングを調べる編

パスやルーティングを調べたいときのあれこれ 環境 gem "rails", "~> 5.1.5" ルーティングを調べる bin/rails c でコンソール立ち上げたあとに以下 > show-routes controller名に基づくパス生成ができるか確認 # hoge_controller.rb とかだったら > app.hoge…

docker-comporse で立ち上がっているコンテナ内をbashでみたい

docker-composeとかで立ち上がったファイルの中身を覗きたいとか、見たい場合 コマンド docker-compose exec {{docker-composeで指定しているサービスの名前}} bash 例 docker-compose.yml が下の場合 version: '3' services: db: image: mysql:5.7 volumes:…

swagger-codegenで生成される nodejs-serverのswagger-toolsのバージョンを変えたい

swagger-codegenって便利なんだけど、サポート言語と歩調併せている関係か部分的に最新版じゃないかったりする。なんでそれを歩調合わせたときのメモ やりたいこと 最新版のswagger-toolsでお手軽モックサーバを立ち上げたい 問題 最新版のswagger-toolsは1.…

Railsの設定でDBのコンソールを立ち上げる

本番のRailsアプリケーションで直接MySQLで調査したい時に mysql -p -u みたいにやると長いパスワードのときにつらいのでそういうときのためのコマンド $ bin/rails db -p

Rubyでハッシュのキーを全てローワーキャメルに変換する

すべてのキーをローワーキャメルに変換したいときってあったりなかったりするのでメモ コード # hashのキーを全てlowerCamelに変換する # @param [Hash] hash 変換元のハッシュ # @return [Hash] 変換後のハッシュ def lower_camel_key_hash(hash) hash.each…

Errorが起きた後の状態を調べるRSpecの書き方が全然見当たらないので書いた

表題の通り、Qiitaに投稿した。 RSpecでエラーが起きたあとの状態をテストするときの問題点と回避案 - Qiita 一応記事内では蛇足になりそうだったのでなんでこんなものを書いたのかの編集後記的補足。 今回実環境でやりたかったこと サービスクラスを実装し…

BigQuery上でUTCのTIMESTAMPをJSTで比較する

世界基準の時間で入れようという気持ちが働いた結果、UTCでデータレイクに保存されていることがある。 ただ、集計で絞りたいときは大概日本時間なので、そういうときに書き換えるクエリ。方法論は色々あるけど直感的に書ける書き方。 前提条件 STANDARD SQL…

他愛もないことでも書くということ

RailsのTipsとか書いていると 他のブログでも書いてるじゃん とか そんなん本腰入れて調べれば出てくるじゃん みたいな部分はあるんですが、これは自分自身の反省があって 他愛でもないことでも書こうかな と思った次第です 記憶のindexとして 5営業日あった…

Railsでエラーページ表示の確認をdevelopmentでしたいときに変えるconfig

エラーページって何がでるんだっけ、という確認をしたい時に。 デフォルトでは # config/environments/development.rb # Show full error reports. config.consider_all_requests_local = true developmentだとこの設定がtrueになっているのでfalseにする こ…

Railsのコンソールをいちいちexitせずに再読込する。

bin/rails c でコードの挙動を見ながら直すときに、逐一 exit をして再読込するのはめんどくさい。 そのときに使うのが reload! [1] pry(main)> reload! Reloading... => true みたいになって再読込される。 ただし reload! 以前に変数代入したオブジェクト…

既に三日坊主になりつつある

技術的なことメインで書こうとするとなかなかネタが続かないのと、書く時間がとれない(今も翌日に前日分書いている始末) 日頃からネタをためておかないとダメだなということで今日の記事は箸休め的なもので、明日分はちゃんと書きます。。 今日書きたいこ…

Docker for Macがつらいので開発はローカルでやることにした

最近の開発はもっぱらRuby On Railsなんですが、Docker化したほうが便利だろうという大雑把な考えから導入を頑張ってみた。 頑張った結果、起動出来るまでには至ったのだが凄まじく重い。どうやらホストマシンであるMacをマウントをすると重いらしい。 ただ…