技術ブログ

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

特定のブランチのファイルを現在の作業ブランチにマージする方法

特定のブランチのファイルを現在の作業ブランチにマージする方法

あるブランチのファイルを現在の作業ブランチに移動させたいケースの対応方法を記載

例)materブランチのhoge.textを現在の作業ブランチに移動(コピー)させる

git checkout origin/master app/views/hoge/hoge.text

個人開発のおすすめ無料素材

1. Adobe Stock

Adobe Stock(アドビ ストック)は、商用利用可能な1億点を超える素材(写真、イラスト、ベクター画像)を提供するストックフォトサービスです。

商用利用も可能です。

使い方はこちらを参考にできます。

公式サイト:Adobe Stock 無料コレクション : 写真、ベクター、ビデオ | Adobe Stock

Railsのメリット、デメリット

メリット

■ 開発速度が速い

RaislはRubyを使ったフルスタックWEBフレームワーク(DBを扱うActiveRecordが優秀、、メールを送る仕組みがデフォルトである、ジョブを実行できる)で、Rails Wayな書き方をすることで開発スピードを上げることが出来る。

Rails Wayについてはこちらの記事が参考になる Only My Rails Way

フルスタックフレームワーク RaulsはフルスタックフレームワークでWEB開発に必要な機能を大枠全て兼ね備えています。

例) - DBを扱うActiveRecord - メールを送る仕組み - ジョブを実行できる仕組み - ストレージ管理の仕組み

デメリット

ActiveRecordを利用すればSQLを知らないのにSQLが書ける

ActiveRecord(O/Rマッパー)を利用すると、SQLを知らなくてもSQLを書くことができます。

ただ、難しい処理の場合実際に発行されるクエリがわかりにくい、ActiveRecordから逸脱したことをやろうとすると面倒といったデメリットもあります。

■ 実行速度が遅い

スクリプトプログラミング言語Rubyでは、Rubyコマンドが読み込んだプログラムを逐次解析して処理を実行します。 そのためコンピュータで直接実行できるプログラムに変換するコンパイル型に比べると、処理速度が遅いです。

結論、Railsは利用すべき?

結論はAPIモードとしてRailsを利用するケースが一番良い。

Railsフルスタックフレームワークなので、もちろんViewを持っていてHTML出力も可能ですがフロントフレームワーク(Vue.js, React)と相性が良くない。

なので、フロントとバックエンドは完全に分けて利用するのがよい。

どんな企業がRailsを採用すべき?

Railsの最大のメリットは、開発スピードが速く高速でPDCAを回すことが可能なことです。

そう言った特徴を考えると、スタートアップ企業にとっては一番良いフレームワークなのかなと考えます。

参考

DB設計をするときに気をつけていること

データベースはシステムの基盤です。

DB設計に失敗するとアプリケーションの実装が複雑になる、などの辛い思いをします。

また、後から修正するのは実装影響が大きいため容易ではありません。

DB設計する上で自分が普段気をつけている箇所を記載します。

1, 検索するカラムにはINDEXを貼るようにする。(JOINするテーブルが2つ程度なら問題ありませんが、JOINの回数が増えると急激に重くなるの)

2, 後から必要になりそうなデータ(ユーザー情報)削除は物理削除ではなく、論理削除にする

3, booleanの場合はnull許容しない、またdefult値を必ず設定する

4, 自分だけではなく他人が見てわかりやすいカラム名称をつける

5, ユーザー(利用者)の購入履歴などのユーザーが後で見返したい情報は履歴テーブルに保存する

6, 開発者が後のバグなどを調査しやすいようにログテーブルを作成する

7, Json形式での保存はできる限り避ける(JSONデータ型は汎用性が高く便利だが、保存内容が不透明、SQL検索しづらいなどのデメリットが多い)

8, booleanのカラムはひと目でわかるようにする(is can has_ の様なprefixを付ける)

9, 正規化する

参考

DBエンジニア必見 => 名著「失敗から学ぶRDBの正しい歩き方」のまとめ - Qiita

【初心者向け】データベースのテーブル設計で僕が意識している6つのこと - Qiita

データベース設計の際に気をつけていること - 食べチョク開発者ブログ

データベース(RDB)設計の進め方! - Qiita

gitコミットをまとめる方法

gitコミットをまとめる方法

コミットメッセージを修正する場合

コミットID_4 (HEAD -> master)コミットメッセージ_4
コミットID_3 コミットメッセージ_3
コミットID_2 コミットメッセージ_2
コミットID_1 コミットメッセージ_1

1, git rebase -i <コミット ID>

コミットID_2 〜 コミットID_4 をまとめる場合は コミットID_1

git rebase -i HEAD^^^ HEAD^^^^で3つ分のコミットを編集します。

2, Edit モードで rebase 指示書を修正する

r コミットID_2 コミットメッセージ_2
f コミットID_3 コミットメッセージ_3
f コミットID_4 コミットメッセージ_4

# Rebase xxxxx..yyyyy onto zzzzzz
#
# Commands:
# p, pick <commit> = use commit
# r, reword <commit> = use commit, but edit the commit message
# e, edit <commit> = use commit, but stop for amending
# s, squash <commit> = use commit, but meld into previous commit
# f, fixup <commit> = like "squash", but discard this commit's log message
# x, exec <command> = run command (the rest of the line) using shell
# b, break = stop here (continue rebase later with 'git rebase --continue')
# d, drop <commit> = remove commit
# l, label <label> = label current HEAD with a name
# t, reset <label> = reset HEAD to a label
# m, merge [-C <commit> | -c <commit>] <label> [# <oneline>]

3. コミットメッセージの修正

Edit モードを :wq でセーブして抜けるとコミットメッセージの修正が求められるので修正する

ミスったときの対象方法

error: cannot 'fixup' without a previous commit
You can fix this with 'git rebase --edit-todo' and then run 'git rebase --continue'.
Or you can abort the rebase with 'git rebase --abort'.

こうなった時は、git rebase --abortで元に戻せます

参考リンク

基本これみればOK

コミットをまとめる方法(git rebase -i)

gitで細かくコミットしたのを1つにまとめる|十 taro 十|note

【Git】離れた複数のcommit(コミット)をまとめる方法|Webエンジニア研究室

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

ケース1「直前にコミットしたメッセージを変更する」

あ、コミットメッセージ名をtypoしてしまった!などの時に利用できる。

1. コミット履歴を確認して、直前のコミットしたメッセージ内容を確認

git log --onelineでコミット履歴を確認して、メッセージ内容を再確認する

2. git commit --amendでコミットメッセージ修正

git commit --amendでメッセージ修正できます。

例)git commit --amend -m "cssを修正"とすると直前のコミットメッセージをcssを修正と変更できます。

3. コミットログを見て内容が書き変わっているか最終確認

git log --onelineで再度直前のメッセージを確認してみよう。

直前のコミットメッセージが"cssを修正"`に変更されていればOK

参考リンク

Gitのコミットメッセージを後から変更する方法をわかりやすく書いてみた | 株式会社グランフェアズ

Gitのコミットメッセージを後から修正変更する方法! | Qumeruマガジン

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

has_option_thumbnail == 'true' みたいな条件判定をした場合、has_option_thumbnail == 'TRUE'のような場合ではfalseと判定されてしまいます。

この対策としてhas_option_thumbnail == 'true' || has_option_thumbnail == 'TRUE'にすればOKなんですが、なんかダサい。

■ Active Model Type Booleanで条件判定する

Active Model Type Booleanを利用すればスマートに条件判定できます。

ActiveRecord::Type::Boolean.new.cast('true' ) -> true ActiveRecord::Type::Boolean.new.cast('TRUE' ) -> true

参考リンク:

ActiveRecord::Type::Boolean