技術ブログ

(技術系中心)基本自分用備忘録なので、あくまで参考程度でお願いします。

Gitのコミットメッセージを後から変更する方法

ケース1「直前にコミットしたメッセージを変更する」 あ、コミットメッセージ名をtypoしてしまった!などの時に利用できる。 1. コミット履歴を確認して、直前のコミットしたメッセージ内容を確認 git log --onelineでコミット履歴を確認して、メッセージ内…

ActiveRecord::Type::Booleanでフラグ条件判定する便利な方法

has_option_thumbnail == 'true' みたいな条件判定をした場合、has_option_thumbnail == 'TRUE'のような場合ではfalseと判定されてしまいます。 この対策としてhas_option_thumbnail == 'true' || has_option_thumbnail == 'TRUE'にすればOKなんですが、なん…

仕事する上でのtips

仕事していく上で大事なロジカルシンキングの考え方やチップスのまとめ 話し方 ■ 結論ファーストで話す 何が言いたいのかわからない人の典型的パターンは「で、何が言いたいの?」 その対策として結論ファーストで話すように意識する。 PREPを意識するともっ…

JavaScriptの引数について

呼び出し時の引数が多いとき 関数の仮引数に対して引数の個数が多い場合、あふれた引数は単純に無視されます。 function add(x, y) { return x + y; } add(1, 3); // => 4 add(1, 3, 5); // => 4 デフォルト引数 lhiroki1205.hatenablog.com 可変長引数 仮引…

JavaScritpの暗黙的型変換について

JavaScritpの暗黙的型変換について JavaScriptでは演算子による演算や関数の処理過程で暗黙的な型変換が行われます。 例 // 異なる型である場合に暗黙的な型変換が行われる console.log(1 == "1"); // => true console.log(0 == false); // => true console.…

公開鍵暗号方式について

公開鍵暗号方式について インターネットで情報をやり取りするには、情報自体を第三者から盗まれないようにすることが重要になります。 そのためによく利用される暗号方式が公開鍵暗号方式です。 仕組みについて ①情報を受信する側が公開鍵と秘密鍵を作成して…

Everyday Rails - RSpecによるRailsテスト入門のまとめ

Everyday Rails - RSpecによるRailsテスト入門のまとめ 読みました。 超適当に内容まとめる。 全体 describe、context、before、after を使ってスペックを DRY にする マッチャはREADMEを参考にすると良い。参考リンク shoulda-matchersを利用すれば、便利な…

DXの基本

DXの基本 DX is 何? DXとはデジタルトランスフォーメーションの略。 デジタル技術を用いてビジネスを円滑に進めるようにイノベーションを起こすこと。 DXによるビジネスモデルの変革 ■ サブスクリクションモデル サブスクとは定期購入するビジネスモデルの…

Rspecのマッチャの参考リンク

RSpec が提供するデフォルトのマッチャをすべて見たい場合はGitHub にある rspec-expectations リ ポジトリ20の README が参考になるかもしれません。 https://github.com/rspec/rspec-expectations

開発案件にジョインする前に確認したい心構えについて(開発者目線)

開発案件にジョインする前に確認したい心構えについて PMが技術に詳しいかどうか PMが技術のことを理解しているかでタスクの振り方が大きく変わる。 非エンジニア上がりのPMの場合、技術がわからないので無理難題を振られるケースがあるので注意が必要。 レ…

Bundle Updateする時は影響範囲を最小限にしようという話

Bundle Updateする時は影響範囲を最小限にしようという話 bundle updateをすると全部のライブラリの依存関係を持ったgemも含めてアップデートされてしまいます。 そうすると、影響範囲が大きすぎて予期せぬバグになるケースが存在します。 ですのでBundle Up…

あの時の面接官に伝えたい、Vue.jsを導入するメリットは?(簡易版)

あの時の面接官に伝えたい、Vue.jsを導入するメリットは? エンジニア採用面談にて「reactなどの他のフレームワークに比べてVue.jsを導入するメリットは何かね?」と問われモゴモゴしてしまいました。 モゴモゴしすぎて面接は落とされましたw またモゴモゴし…

Sidekiq アンチパターンのまとめ

Sidekiq アンチパターン 業務でsidekiqを利用するケースがあったのですが、sidekiqのアンチパターンについて知らなかったのでまとめました。 1. 命名規則について ワーカーの名前は後から変更するのは後から変更するのは大変です。 ワーカーの命名規則をつけ…

ActiveRecord::Base.connected_toの利用方法

ActiveRecord::Base.connected_toの利用方法 今の現場でActiveRecord::Base.connected_toを利用した実装をしており、初めてみた書き方だったのでメモを残す。 データベースのルールを明示的に指定することが出来る ActiveRecord::Base.connected_to(role: :w…

Rails.application.config_forで設定ファイル全体を読み込む方法

Rails::Application.config_forを使うと、設定ファイル全体を読み込むことができます。 例) Rails.application.config_for(:for) config_for(:for)とする事によって、config/foo.ymlに設定された内容を、そのまま定義することができます。 config/foo.ymlの…

Rubyの条件分岐判定方法

Rubyの条件分岐判定方法 Rubyの条件判定は癖があるのでメモ残す。 Rubyの条件分岐は他のプログラミング言語同様に条件式が成立する時に返される「true」は真として扱われます。 また成立しなかった時に返される「false」は偽として扱われます。 falseとnilは…

sidekiqの使い方備忘録

sidekiqの使い方備忘録 仕事でsidekiq利用する機会があったので使い方の備忘録を残す(自分用) sidekiqとは? github.com Simple, efficient background processing for Ruby. Sidekiq uses threads to handle many jobs at the same time in the same proc…

【Rails】更新系メソッドまとめ

【Rails】更新系メソッドまとめ すでにテーブルに保存されているデータを、新しい情報に更新するメソッドに関してまとめてみました。 自分用備忘録です。 updateメソッド user = User.create(name: 'Taro', age: 15) # 成功 user.update(name: 'Taro') # => …

ポスグレの初期化で詰まった話

DBをUTF-8で初期化しようとして下記のコマンドを入力 initdb /usr/local/var/postgres -E utf8 すると下記のようなエラーに遭遇 The files belonging to this database system will be owned by user "inouehiroki". This user must also own the server pro…

break, return, nextまとめ

break, return, nextまとめ たまにこの辺りの使い分けややこしくなるのでまとめます。 break breakを使うと、繰り返し処理を抜けることができます。 def block_break puts '----' (1..5).each do |i| break if i % 3 == 0 puts i end puts 'end' end 1 2 end…

docker-syncについてのまとめ

docker-sync is 何? Docker利用時にホスト側のディレクトリをマウントして使うと猛烈に遅いという現象が発生します。 Docker syncを利用することで速度改善することが可能になります。 docker-syncの仕組みとしては、 docker の -v で直接ホスト側のディレ…

TypeScriptでのクラスの取り扱い方について

// 継承にのみ利用できるクラスにはabstractを利用 abstract class Person { // インスタンス作らずにクラスを使う場合はstaticを利用する // 例 Person.species static species = 'Homo sapiens'; // インスタンス作らずにクラスを使う場合はstaticを利用す…

TypescriptのGenerics

// オブジェクトのキーのunion型を作る // U extends keyof Tのようにすると、Uの型は、name | ageのunion型になります。 function copy<T extends { name: string }, U extends keyof T>(value: T, key: U): T { value[key]; return value; } console.log(copy({ name: 'Quill', age: 20}, 'age')); // clas</t>…

Typescriptの応用

// ------------- インターセクション ------------- // エンジニアの型を定義 interface Engineer { name: string; role: string; } // ブロガーの型を定義 interface Blogger { name: string; follower: number; } // type EngineerBlogger = Engineer & B…

TypeScriptのInterfaceについて

TypeScriptのInterfaceについて interfaceは、オブジェクト・関数・クラスの構造を決めるためのもの。 サンプルコード // 関数の型を定義することも可能 interface addFunc { (num1: number, num2: number): number; } let addFunc: addFunc; addFunc = (n1:…

Reactコンポーネントの違い

Reactコンポーネントの違い Reactでも勿論コンポーネントを利用することは可能です。 コンポーネントを利用することで、再利用が楽になる、コードの見通しがよくなる、変更に強い設計にすることが可能になります。 Class Component Functional Component こ…

webpackまとめ

WEB

webpackとは webpackとはモジュールバンドラーになります。 webpacklを利用することで、複数のモジュールを依存関係を解決して一つのアセットにまとめることが出来ます。(下記イメージ図) webpackメリット モジュールを一つにまとめることで、パフォーマン…

:isで動的にコンポーネントを変更する方法

:isで動的にコンポーネントを変更する方法 動的にコンポーネントを変更する方法としてv-ifを利用する方法がありますが、コンポーネントの数が増えてくると非常に手間になります。 その時に便利なのが:isを利用してパラメーターによってコンポーネントを変更…

Type Scriptの型(基本)

Type Scriptの型(基本) // 型推論の場合は型を定義しなくてもOK let hasValue = true; let count = 10; let float = 3.14; let negative = -0.12; let single = 'hello'; let double = "hello"; let back = `hello`; // 型注釈の場合は型を定義する let he…

Cloud Build is 何?

GCP

Cloud Build is 何? Cloud Build は、Google Cloud Platform のインフラストラクチャでビルドを行うサービスです。 Cloud Build は、さまざまなリポジトリやクラウド ストレージ スペースからソースコードをインポートし、仕様に合わせてビルドを実行し、Do…