コード日進月歩

プログラミングの技術的なメモなど

iOSシミュレーターでJavaScriptのデバッグを始める方法があんまり一緒にはまとまってないので書いた。

話の本筋はQiitaに記事を投稿した。 qiita.com なんでこんな記事を書いたかというと、iOS の とあるバージョンのみWebページが閲覧不可になるという事象が発生したためだった。 トランスコンパイルするようなJSだと環境によってはない関数があったりなどする…

ActionMailerのrpsecで件数を計りたいときはActionMailer::Base.deliveriesのsizeを測る

表題だけですべてを表現してしまう系Tips記事 環境 rails (5.2.0) 計り方 RSpec.describe "なんかメール送るやつ" do after(:all) { # 意図的にテスト後にクリアにする ActionMailer::Base.deliveries.clear } describe "#send_mail的な" do subject {"なん…

RubyのHash代入記述のパターンまとめ

JSONをそのままRubyのコードに貼ってrspecのダミーデータを作ろう!とかやると あれ、ここ文字列じゃなくシンボルになってるじゃん… みたいな意趣違いをよく起こすのでメモ。 環境 $ ruby -v ruby 2.5.0p0 ケース別サンプル キーを文字列にしたい ポピュラー…

Railsの整数で表せる時間シリーズ

忙しすぎてすごい小ネタ。 環境 てっきりrubyの標準かと思ったら違った系 rails (5.2.0) つかえるもの # 1秒 1.second # 2分 2.minute # 3時間 3.hour # 4日 4.day # 5週間 5.week # 6週間 6.month # 7年 7.year

オフィスで肩が凝ったときは肩甲骨はがしがオススメ

マジで勉強会行ったツケで徹夜相当の作業になってしまったので本当に小ネタ雑記 ima.goo.ne.jp 月イチで整体に行くのですが長時間労働だと首、肩甲骨、腰がめちゃくちゃやられるので適宜マッサージしています。肩甲骨は自分でも際を指圧するのですが、全体グ…

「DevLOVE201 越境ジャーニー」に行ってきたよメモ

忙殺されているけど、前回のお話がとてもよかったので DevLOVE201 越境ジャーニー| Doorkeeperに行ってきたので、そのメモ 今回はずっとB会場にいたので、B会場の話をメインに。 各発表の感想 妄想散歩・妄想ジャーニー (ボクの越境ジャーニー) speakerdeck.…

FactoryBotのcreateはRailsコンソール上でもつかえる

本当にタイトルままのTips 環境 rails (5.2.0) factory_bot (4.8.2) factory_bot_rails (4.8.2) やり方 以下のようにやればよい FactoryBot.create({{作りたいファクトリのシンボル}}) FactoryBot.create(:user) いざrspec書き終わったあとにfactoryが動かな…

InteliJ系には範囲指定拡張・縮小のショートカットがある

しばしInteliJから離れて戻ってきた時に使いたかったのに全然ググっても引っかからずやっと思い出したので紹介 バージョン RubyMine 2017.3 やり方(Mac) 範囲拡張をしたいところにカーソルをおいて「Option(alt)+↑キー」 範囲縮小をしたいところにカーソル…

Railsのkey名変更系便利メソッドには deep がつくより強力なバージョンがある

ハッシュにキーがややこしいことになっている時につかえるものたち 環境 rails (5.2.0) 効能 deep がつくものは値にハッシュ値がある場合、それらの値のハッシュのキーも対象として処理を行う。 例 deep_symbolize_keys はすべてシンボル化する ▼変化前 hash…

Rubyのgem, kaminari での pagenationの値の始まりは1から

普通に勘違いしていたのでメモ 要約 kaminariはページネーション用のgemでページ指定ができるが、ページは0始まりではなく、1始まり。0を指定すると1と同等の動きをする。 環境 rails (5.2.0) kaminari (1.1.1) 実演 kaminari は Model.page({{ページ数}}).p…

URLの最大長は2048文字ぐらいまでと考えておくほうが無難

2018年今現在の所感ですが、いろいろな方面で考えてみます 各視点ごとの見解 RFC定義としての見解 3.2.1 一般構文 HTTP プロトコルでは、URI の長さにどんな制限も設けていない。 サーバは、自身が持つどんなリソースの URI も扱えなければならないし、もし…

Ruby2.5時点のYAML標準ライブラリはYAML1.1

YAML1.2の仕様がある割には対応していないなーと思ったので対応状況を調べてみた。 YAMLのバージョンに関して YAMLの最新バージョンは1.2、2009年の10月1日にリリースされている Rubyの標準に関して 公式サイトに言語ごとの状況が書いてある Rubyで扱われる…

GoogleのマテリアルデザインアイコンはWebでも使い勝手のいいスグレモノ

本日ABCに行ってきたんですが、しっかりスライドメモとか取れなかったので聞いてきた話で面白かったトピックスを。 マテリアルデザイン用のアイコンっていうものが存在します。 Icons - Material Design Googleが提唱するマテリアルデザインに沿ったアイコン…

Rubyでファイルの文字列を変数に代入、変数の文字列を出力

『コンソール上で二バイト文字いれたいけどRailsコンソールだと文字化けしちゃって…』とか『処理中のJSONみたいけどログだとすげー切れちゃって…』とかそういうときに使うスニペット的なメモ Railsコンソール上でやると(当たり前ですけど)Railsルート配下…

InteliJ系のIDEはキャメルとスネークを切り替えるショートカットがある

完全にトリビアなメモ バージョン RubyMine 2017.3 やり方 範囲指定をして「Option+Shift+U」 で順次切り替わる 実際にやってみた 本当は指定範囲をよしなにやってくれるショートカットを探してたんだけど見つからない…

RubyにはBooleanというクラスは存在しないがYARDでは指定できる

YARDのドキュメントみたら、え、とおもったのでメモ 前提の話 RubyにはTrueClassとFalseClassしかなく、Booleanというクラスは存在しない。 x = true => true x.class => TrueClass x = false => false x.class => FalseClass YARDでの記載 []内に複数指定で…

Railsでi18nをView以外、Railsじゃないクラスでも使いたい

やり方 I18n.t("yamlのキー") を指定すれば良い。しかもHelperクラスなどとは違い、Rails管轄下のクラスを継承していなくても使える。 例 ▼ja.yml ja: thanks: result: default: message: "ありがとうございました!" name: message: "%{name}さん\ありがと…

Railsのfind_byは文字列を指定すると使えてしまうので注意

普通に凡ミスしてたのでメモ やりたかったこと # パラメータからとってきたID id = "1" User.find(id) 実行されるSQLの想定 SELECT `users`.* FROM `users` WHERE `users`.`id` = 1 LIMIT 1 起きたこと # パラメータからとってきたID id = "1" # タイプミス…

iOSのDeveloperCenterでの端末登録タイプ毎に100台までで、1年間消せない

いろいろ書きたいものがあるんだけど、書く時間が捻出できないのでマジで小ネタ。 iOSDeveloperCenterでUUIDを入力することで端末を登録できるのですが、いろいろ気をつけなければいけない仕様がある。 デバイスタイプごと(iPhoneとかAppleTVとか)100台ま…

WEBアプリケーションへのHTTPヘッダにアンダースコアを使うと到達前に弾かれることがある

表題の通り。毎度調べるんだけどちゃんとした理由は知らなかったのでまとめてみた。 理由 ざっと調べた限りの原理 RFC3875 4.1.18. の仕様としてヘッダは以下のように加工する仕様がある 元の名前に付随して HTTP_ をつける - を _ に変換する ヘッダをすべ…

Railsでタイムゾーンを気にする日時変換をするなら、to_timeよりもin_time_zone

開発環境がローカルで、サーバーはAWSとかだったりすると起きる問題。 環境 rails (5.2.0) 事象 to_time は環境のタイムゾーンで算出する。 to_i とかすると顕著にわかる ▼JST環境 > "2018-6-1 20:00".to_time => 2018-06-01 20:00:00 +0900 > "2018-6-1 20:…

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…