36.Ruby|instance_of?/is_a?(kind_of?)

instance_of?(klass) -> bool オブジェクトがクラス klass の直接のインスタンスである時、真を返します。 obj.instance_of?(c) が成立する時には、常に obj.kind_of?(c) も成立します。 [PARAM] klass: Classかそのサブクラスのインスタンスです。 class C …

35.Ruby|strptime/strftime

strptime 「文字列」をDate._strptimeを用いて、Timeオブジェクトに変換。 require 'time' Time.strptime('2001-02-03T04:05:06+09:00', '%Y-%m-%dT%H:%M:%S%z') #=> 2001-02-03 06:05:06 +0900 require 'time' Time.strptime('91/5/18 4:13:00', '%Y/%m/%d …

34.Sidekiq

プロダクトに導入されているが、問題が多すぎて散々迷惑を被っているSidekiqについてお勉強。 今までは無料版を使っていたが、流石に酷すぎてProを導入する運びとなった。設定などはこれから。 (ただSidekiqそのものが悪いというよりは、よく分からないまま…

33.Ruby|ループの種類・使い分け

処理が遅くてトランザクションが中断される問題が頻発していて、リファクタリングをする機会に恵まれた。 この機会にRubyのループ処理について不足している知識を補い整理しておきたい。 forよりもeach forとeachの違い まず大きな違いとして、eachはブロッ…

32.「CODE COMPLETE 上」

20201010 p.32~ 3.1.3.コンストラクションの準備に有無を言わせない根拠 p.34 コンストラクションを開始する前に欠陥を取り除いた場合は、 プロセスの最後や、システムテストの最中や、リリース後に欠陥を取り除いた場合よりも、 作業の手戻りが10~100倍少な…

31.Elasticsearch|search API

応答については、次の部分がわかります。 took - Elasticsearchが検索の実行にかかった時間(ミリ秒) timed_out - 検索がタイムアウトしたかどうかを示す _shards - 検索されたシャードの数と検索に成功/失敗したシャードの数を示す hits - 検索結果 hits.t…

30.Elasticsearch|match_phrase/スコアリング

match_phraseで検索をかけた時、何を基準としてスコアリングされるのか、仕事で問われる機会があったので学習。 analyzerの基本 blog.chocolapod.net www.elastic.co medium.com _analyze GET Index名/_analyze { "field": "~Field名~", "text": "~Value~" }…

29.hotfix|Git

Git

致命的な不具合が見つかった際に行うhotfix。 今の会社の開発においてはよく聞くけど、自分でリリースをしてないので流していた。 改めて正確な意味を確認しようと思う。 リリース後、不具合が見つかったらhotfixブランチを用いて修正を行うことができる。 …

28.Rails|binding.pry

これまで余り使ってこなかったbinding.pryを使いこなせるようにしていきたいので、整理。 使い方① 例えば今の開発環境では、処理を止めたい箇所にbinding.pryと記述すれば、 Dcokerを立ち上げているConsole上で、その処理が止められた位置の前後で定義されて…

27.TypeScript|Optional Chaining

前回に引き続きTypeScriptの?関連について。 Optional Chainingは、?.という構文のこと。 最も基本的な用法はプロパティアクセスの.の代わりに?.を使うもの。 You might find yourself using ?. to replace a lot of code that performs repetitive nullish …

26.TypeScript|Optional Property

TypeScript上でよく?が付けられているのを見掛けるので、きちんと理解する為に整理していく。 TypeScriptには、Objectの持つpropertyにOptional Propertyという機能がある。 propertyの末尾に?を付けることで、そのpropertyが無い場合もあるということを表現…

25.Ruby-Grape|declared

RubyのAPIの処理中でよく出てくる。 ぼんやりした理解だったのでおさらい。 Grape allows you to access only the parameters that have been declared by your params block. It filters out the params that have been passed, but are not allowed. Consi…

24.React|Mount/Unmount

Unmount…って何やったっけ?ってなったのでおさらい…。 Mount ReactコンポーネントがDOMツリーに追加されること。 Unmount ReactコンポーネントがDOMツリーから削除されること。 ja.reactjs.org UNSAFE_componentWillMount() コンポーネントがDOMにマウント…

23.React/Redux|async/await

asyncの処理の中で呼び出している関数の頭にawaitが抜けていて、他のawaitの処理と順番が入れ変わってしまうという問題があった。 今回はJavaScriptにおけるasync/awaitについて、React/Reduxでの書き方も含めて確認したいと思う。 まずはasync/awaitと密接…

22.Ruby|presence

フロントから空文字が入ってくるけど、モデルでnilしか受け付けないバリデーションをかけている。 イレギュラーな空文字が入ってくることでエラーが発生するというケースに遭遇。 しかし空文字判定・nil代入をわざわざ条件式を書いて実装したくない…。 そん…

21.Ruby|frozen_string_literal

Rubyファイルの頭に下記のような記述があって、何となくスルーしてたけど改めて見るとこれってどういう役割なんやろ…?と疑問に思ったので整理。 # frozen_string_literal: true まず前提として、Rubyの文字列はミュータブル・つまり破壊的な変更が可能なオ…

20.文字コード|ASCII-8BIT

先ほどの文字コードの記事の続き。 ASCII-8BIT 「ASCII」は最大7ビットの文字コードであり、 「ASCII-8BIT」はBINARYまたは『文字列エンコーディングが不明である』ことを意味する。 サンプル pry> 'a'.encoding #=> #<Encoding:UTF-8> pry> '���'.encoding #=> #<Encoding:ASCII-8BIT> 今回問題が</encoding:ascii-8bit></encoding:utf-8>…

19.文字コード|代表格

謎の「ASCII-8BIT」文字コードエラーに悩まされ…。 そもそも文字コードって…ってところから振り返り。 文字コード コンピュータ上で文字(キャラクタ)を利用する目的で各文字に割り当てられるバイト表現。 もしくは、バイト表現と文字の対応関係(文字コー…

18.React|条件付きレンダー

以前はjQueryを使ってたのでコンポーネントとか出てこなかったけど、Reactでの条件分岐はコンポーネントにプロパティの値を与えてその値を元に条件分岐するといったやり方になる。 まだ慣れが必要なのでメモ。 React における条件付きレンダーは JavaScript …

17.React|フラグメント

フラグメントとは Reactコンポーネントが要素を返す際に、フラグメント(Fragment)を使うことでDOMに余分なノードを追加することなく子要素をまとめることができる。 render() { return ( <React.Fragment> <ChildA /> <ChildB /> <ChildC /> </React.Fragment> ); } 短い記法 下記のような省略記法も使用できる。 class Col…

16.React|フック

フックの理解はReactを使っている限りマストだと思うが、まだしっかりと理解できているとは言えないので随時整理しつつ理解を深めていきたい。 まずフックとは何か フック (hook) は React 16.8 で追加された新機能です。state などの React の機能を、クラ…

15.Ruby|よく使う記号

Rubyのコードを読んでると『よく出てくるけど何だっけコレ?』となって、毎回のように調べている記号がある。 確認しやすいようにここにまとめておこうと思う。 ||= a ||= xxx 自己代入演算子。aが偽か未定義ならば、aにxxxを代入(aが正ならば、代入しない…

14.ES|Post Filter

Post Filterとは、検索結果とAggregations(集計結果)の両方に対して、Filterをかける機能。 サンプルクエリ GET /shirts/_search { "query": { "bool": { "filter": { "term": { "brand": "gucci" } …① } } }, "aggs": { "colors": { "terms": { "field": …

13.ES|Aggregations(Bucket/Metrics)

Aggregation 集計する機能。SQLで言うところの、GROUP BY。 sumやmaxといった集約を行える。 集約クエリ(Aggregations)は、BucketとMetricsに分かれる。 「Bucket」…検索結果を指定条件で分類。(例)検索結果を期間ごとにグループ化するなど。 「Metrics…

12.ES|scroll_search API

Elasticsearchでの検索時、オプションに何も指定しなければ10件までしか取得されない。 オプションでsizeを指定すると件数を増やせるが、最大でも10,000件までとなる。 10,000件を超えるデータを取得する際は、scroll_search APIで何回かに分けて取得するこ…

11.ES|Nested Query

「Nested Query」とは、「Nested データ型」という配列構造を持ったオブジェクトを取得する為のクエリのこと。 「Nested データ型」は、「Object データ型」の中の特殊な型。 サンプルクエリ GET /drivers/_search { "query" : { "nested" : { "path" : "dri…

10.ES|Bool Query

概要 Elasticsearch 2.0からANDクエリとORクエリが非推奨となり、代わりにBoolクエリが推奨となった。 Boolクエリは複数クエリの組合せ(AND・OR・NOTの結合)に使う。 「must」…ANDとして使う。小クエリは総合スコアに影響を与える。 「filter」…mustと同じ…

9.JS|Webpack

フロントの開発環境周りでちょくちょく出てくるけど、何かよく分かっていないので整理。 Webpackは、JSファイルをまとめる高機能なモジュールバンドラーのこと。 モジュールバンドラーとは、複数のモジュールを依存関係を解決してまとめる為のもの。 モジュ…

8.Neo4j|CREATE・DELETE

プロパティ・リレーション無し ノード作成 CREATE (n: Dummy) ・Neo4j公式/3.10.CREATE neo4j.com ノード削除 MATCH (n: Dummy) DELETE n ・Neo4j公式/3.11. DELETE neo4j.com プロパティ・リレーション有り ノード・プロパティ・リレーション作成 CREATE …

7.SSH|Key設定

今日インフラエンジニアの人にサーバーのアクセス権限を与えて貰った際に、SSH Key設定を行ったのでおさらい。 ローカル環境で、SSH公開鍵・秘密鍵を作成。 $ cd ~ $ mkdir .ssh $ ssh-keygen -t rsa 質問に対して3回とも何も入力せず、エンター。 作成した…