tusbasaのブログ

業務や勉強中に調べたことを自分用にメモするブログ

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

複合インデックス

実行されるSQLの順番通りに、使われるカラムに対してインデックスを貼る必要がある。(whereとorderを使っている場合where→orderの順番でSQLが実行されるからインデックスを作成する時whereで使うカラム名を最初に記述して次にorderで使うカラム名を記述する…

【rails】パフォーマンス改善

N+1問題を解消するにはincludeメソッドを使う。 #TaskモデルにCategoryとUserモデルが紐づいている場合 @tasks = Task.includes(:category, :users).order(id: :desc).page(params[:page]).per(200) 小テーブルのレコードを最初にすべて取っておいてハッシュ…

【ruby】hash

キーが同じ値は同じハッシュ内に複数持つことができない

【rails】mergeメソッド

ハッシュを追加するメソッド。 キーが重複する場合は追加するハッシュの値に上書きされる。

【vim】uコマンド

undoコマンド 操作を取り消すコマンド

【Linux】sort

テキストファイルの中身をソートする。 sort オプション ファイル名 -n 数値をソート -r 逆順でソート -k 数値 指定した数値の列を対象にソート(デフォルトは最初の単語の一文字目でソート)

【Linux】tail

tail -f ファイル名 ファイルのリアルタイムの変化を出力する。 logファイルを出力する際に便利。

【Linux】touch

ファイルのタイムスタンプ(最終更新日)を更新する。 指定したファイルが存在しない場合新しいファイルを作成する。 -tオプションで更新時刻を指定できる。

【rspec】テスト構成について

・テストの組み合わせの数が非常に大きい時は変数値のすべてのペアをテストする。このやり方だと、作成・実行しなければならないテストケースは大幅に減る。 ・ほとんどの欠陥はシングルモード欠陥(テスト対象の機能が単に動かないのであり、その機能に対す…

【rspec】bom付きの文字コードでcsvした時の文字列の比較

同じ文字列に見えるbytesizeメソッドで比べてみるとbomがついている分バイトサイズが異なる。見た目は同じでもeqで比較するとpassしない response.body.sub(/^\uFEFF/, '') subメソッドでbomの部分を空の文字列に置き換えるとうまくいく。

【rspec】match

expect(response.body).to match dataでdataがresponse.bodyに含まれればpassする。完全に一致する必要はない。

【mac】行を選択

shift + command + → で1行を全て選択することができる・

cronについて

UNIX系に組み込まれているプログラム。定期的に設定した処理を実行させることが出来る。 railsではwheneverというgemでcronの処理をrubyを使って記述することができる。 参考 http://freecamp.life/rails-whenever/

【rails】compact/compact!

配列のnilを取り除いた配列を返す。 a = [a, f, s, nil] a.compact a = [a, f, s]

【rails】ネストしたtransactionについて

ネストしたtransactionは以下のようなオプションをつける ActiveRecord::Base.transaction(joinable: false, requires_new: true) do # inner code end 参考 https://qiita.com/jnchito/items/930575c18679a5dbe1a0

【rspec】テストをする際に気をつけること

「〜されないこと」のみをテストしない →期待した動きになっていない場合でもテストがパスする可能性があるから。「〜される」場合もテストすること。 境界値をテストする →引数が20以上でtrue,falseが分かれるメソッドをテストする場合19と20でテストを行う…

【rails】slice(整数, 整数)

配列から要素を取得することができる 第一引数が要素番号、第二引数が取得する要素数

【JQuery】 val option:selected

valメソッドでselectボックスの中の選択されている値を取得したい場合 option:selected を指定する。 参考 https://qiita.com/tomcky/items/8f1868f1fb963732de39

【JQuery】change

【 対象要素.change( イベント処理関数 ) 】 参考 https://www.sejuku.net/blog/41231

【JQuery】bind

対象要素にイベントを紐づける。 $('.button').bind('click', function(){ alert('Hello World'); }); 参考 https://pisuke-code.com/jquery-diff-between-on-and-bind/

【rspec】letの実行順

インスタンスを生成するletやpostの実行順が正しくないとletが生成される前にpostしてしまう可能生がある。

【rspec】renderのstatus

renderのresponse.statusは200、redirect_toは302 テストするには expect(response).to redirect_to("アクション名orパス") expect(response).to render_template("アクション名orパス")

【JQuery】tablesorterのupdate

これで追加した行の値もソートされるようになる。 $("#memberTable").trigger("update"); 参考 https://qiita.com/fj58p/items/2b47b84fd7223de8b9be

【JQuery】on

様々なイベント処理を実行できる。 <buttan>a</buttan> <script> $('buttan').on('click', function(){ console.log('クリックされました') }); </script> //実行結果 クリックされました

【Javascript】Object.keyについて

オブジェクトのプロパティを取得する。(オブジェクトが [キー:値] の構造の時キーを配列で取得する) const a = { name: "rose", age: 18 } const result = Object.key(a); console.log(result); ["name","age"] 参考 https://www.sejuku.net/blog/64361

加算代入演算子 += 文字列連結

加算代入演算子は数値で計算もできるが文字列の連結もできる。 var a = 5 console.log(a += 3) 8 var a = "test" console.log(a += "hoge") "testhoge" 参考 https://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/Operators/Addition_assignment

【JQuery】data属性

data属性とは独自に設定できる属性。 data-ではじまる。 data属性に任意の値を持たせることで様々な処理がしやすくなる。 <p data-name="hoge">name1</p> data属性の値の取得 引数を指定しないと全てのdata属性の値を取得する。 <p data-name="hoge" data-age="20">name1</p> var a = $("p").data(); console.log(a); { name…

【JQuery】next

レシーバーの要素の次の要素を取得する。引数を省略すると要素全体を取得する。 <p id="hoge">a</p> <p>b</p> <p>c</p> var a= $("#hoge").next(); //これで要素全体が取れる(<p>b</p>) cosole.log( a.text() ); //実行結果 a 引数にセレクタを指定すると条件検索することもできる。 <p id="hoge">a</p> <p>b</p> <p>c</p> var a …

【JQuery】val()

value属性の値を取得したり変更することができる。 <input id="hoge" value="col"> let a = $(#hoge).val(); console.log(a); //実行結果 col 参考 https://www.sejuku.net/blog/45297

【JQuery】prop

属性(valueやid)の値を取得できる。 $('input[type="checkbox"]').prop('checked'); //true 参考 https://techacademy.jp/magazine/29262 https://www.flatflag.nir87.com/prop-1812