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

git reset コミットの整理方法

コミットの打ち消し git reset --soft HEAD^ -softオプション:ワークディレクトリの内容はそのままでコミットだけを取り消したい場合に使用。 -hardオプション:コミット取り消した上でワークディレクトリの内容も書き換えたい場合に使用。 [Git]コミットの…

【Object.assign()】データのコピーを作成したい時に便利

外部APIを叩いて、返ってきたデータがresponseであるとする。 const response = { data: [ { name: "Wiskey", price: "350", percentage: "10", }, { name: "Lemon Sour", price: "350", percentage: "5", }, { name: "Beer", price: "350", percentage: "5"…

Github上でフローチャート図を書く。

mermaid github上でフローチャート図を書く時に直感的に使用できるjavascript? URLにmermaid-jsと書いてあったからjavascriptかな?と思ったけど、githubのissue内でcommentとしてフローチャート図を書くときに下記のように使える。 ```mermaid sequenseDiag…

【Git】履歴の修正

Git

git rebase -i commitの履歴を整理することができる $ git fetch origin $ git rebase -i origin/<ブランチ名> $ git push --force-with-lease git push —force-with-lease pushする際、リモートrefとローカルrefを比較して、ローカルが最新だった場合のみpu…

【Linux】topコマンド

Linux command "top" ターミナルでtopと打つと、現在PCがどのようなprocessを実行中か見れる。 表示されているインデックスはそれぞれ下記の意味を持つ。 PID: タスクのIDを指す PR: processの優先順位を示す. 数字が高いほど優先順位が高い VIRT: タスク当…

【Git】 コミットの打ち消し・ブランチ削除

Git

コミットの打ち消し git reset --soft HEAD^ -softオプション:ワークディレクトリの内容はそのままでコミットだけを取り消したい場合に使用。 -hardオプション:コミット取り消した上でワークディレクトリの内容も書き換えたい場合に使用。 [Git]コミットの…

外部APIから取得したデータをGoogle Spreadsheetへ転記

外部APIから取得したデータをGoogle Spreadsheetへ転記する Faradayを使ってSmartnewsからあるキャンペーンのデータを取得 取得したデータをスプレッドシートへ転記する 2を分解すると スプレッドシートへアクセスするためのgemをインストール アクセスする…

sendと_send_

sendと_send_ sendメソッドとは レシーバーが持っているメソッドを、文字列(またはシンボル)で指定して呼び出すことができる。 Object#send (Ruby 3.1 リファレンスマニュアル) class Foo def bar? true end def send(*args) false end end foo = Foo.new …

【SQLの練習】sakila

SQL

sakilaを活用したSQLの練習 テーブル設計も載っている。 MySQL :: Sakila Sample Database :: 5 Structure 使用していくデータをインポートしてくる。 sakila sample databaseというものを使うみたい。 URLへアクセスして、example databasesにあるsakila sa…

外部API連携の抽象像

外部API連携 外部API連携をする時は、下記手順を踏む 1 APIキーを取得 2 curlを用いて通信が成功するか確認 3 取得したい情報が取れるエンドポイントを公式ページから探す 4 1日に実行できるリクエストの上限を調べる 5 外部APIに対するリクエストの実行をア…

外部結合と内部結合

外部結合と内部結合 InnerJoinとOuterJoin(left, right)について書かれている。 通常、データを保存する場所を作成する時は、正規化(比較・演算などの操作のために望ましい性質を持った一定の形にすること)が行われるため、データを複数のテーブルに分割し…

【デザインパターン】Composed Methodパターン

Composed Methodパターン 単一責任原則を実現する時に使う、肥大化した関数を分割する方法の一つ。 def a puts 'a' puts 'b' puts 'c' end def a puts 'a' b c end def b puts 'b' end def c puts 'c' end 「文章のように読めるメソッドを作る」 Composed Me…

データモデリング

データモデリング アプリのモデルを設計したいときは、メインの機能をまず抽出。 そして、「何が」「誰が」「何を」「どうする」「どんな」などを意識して、エンティティを抽出していく。 そうすることでテーブル設計(正規化)がしやすくなる。 業務ルール…

SQL(GROUP BY句)

SQL

集約操作(GROUP BY句) データセットを見ていると国によっては複数のレコードを持っていることが分かります。GROUP BY 句を利用すると指定したカラムの値でグループ分けした結果に対して COUNT 関数などを利用した集計を行うことができます。 SELECT <カラ…

クエリのキャッシュ制御

クエリのキャッシュ制御 一度実行したクエリはキャッシュとして保存されている。 # データベースからbooksを取得する author.books.load # booksのキャッシュコピ-に対してsizeメソッドを実行する author.books.size キャッシュを破棄して新しいキャッシュを…

【Rails】不要なマイグレーションファイルの削除

不要なマイグレーションファイルの削除 $ rails db:migrate:status #不要なマイグレーションファイルの日付を確認 database: hoge_development Status Migration ID Migration Name -------------------------------------------------- up 20220712031711 C…

ポリモーフィック関連付け

ポリモーフィック関連付け ダックタイピングの一種。 インスタンスにも親クラスと同じメソッドを持たせておくことで、親クラスを呼び出した時の出力を定義すること。 このように、「違うものがある決まった振る舞い/入出力を持つことで、同じように扱えるよ…

Storybookの使い方

Storybook 画面遷移のモックを開発中のアプリに作成することができるライブラリ。 reactやvueの書き方で既存のプロジェクトに画面遷移のモックを実装できるから学習コストが少ない。 下記参照記事が詳しい。 storybookを理解する Component Story Format 3.0…

インターフェースと抽象クラス

インターフェースと抽象クラス 前者が外部向けの設計図、後者が内部向けの設計図と表現されることが多い。 Javaで使われる用語だが、rubyにもインターフェースやダックタイピング、ポリモーフィズム等通ずるところが多いため、学習する価値はあると思う。 【…

IIFE(即時実行関数式)とは

ImmediatelyInvokedFunctionExpression(即時実行関数式) すぐに実行できる関数式のことを指している。 ラムダ式のような印象を受けた。 書き方は以下のようになる。 javascriptの場合 ;(() => 2 )() ;(() => console.log('hello'))() 実際にnodeで出力を確認…

クロージャ・to_proc

クロージャ 関数が内包するスコープを保持する性質 rubyのような手続型プログラミングにも、関数型プログラミングのような記法が存在する。 いわゆるブロックがrubyでいうクロージャに当たる。 rubyでは、do endや{}で囲まれた、メソッドのような手続きをブ…

Serviceオブジェクト

エンティティに最重要ビジネスデータと最重要ビジネスロジックを持たせて、ユースケースを考えて、詳細は方針に依存して、、 あれ、ユースケースの小さく分解したロジックってどこに書けば良いんだろう?と思った。 サービスオブジェクトに書くことが多いと…

ActiveModel::Attributes POROの属性をネイティブ型のまま保存するAPI

UI層から送られてきたparamsを、期待する属性のままデータベースに保存させるためのAPI POROなクラスでparamsを処理する時、通常だとデータがstringとして保存されてしまう。 例えば、勤務時間のレポートを作るクラスがあるとする。 ユーザーがフォームに出…

集約・集約ルート(DDD)

クリーンアーキテクチャ、DDDの学習をしていて、「集約・集約ルート」という言葉が理解できなかった。 集約だから、何かを一箇所に集めるのかな?そして、集めたものの根本が存在するのかな?という認識だった。 データ中心でモデリングを行うと、 ドメイン…

個人開発で作ったサービスをClean Architectureの視点で作り替える

豆腐、納豆、豆乳、玄米、鶏胸肉、プロテイン、オートミールという生活に飽きてきた24歳です。 最近、オブジェクト指向設計って何か、Cleanなソフトウェアを作るってなんなのかに興味が湧いています。 設計を学んでいくと、なぜ凝集度や結合度、そしてリーダ…

「Clean Architecture 達人に学ぶソフトウェアの構造と設計」所感

フランスから帰国しました。「彼女がお盆で家族に会うために帰省するのに同行した」ような感じでした。フランスにお盆という習慣は無いのですが、まあそんな感じです。 父、母、姉家族✖️2、彼女、僕という異様な光景で、さながらサマーウォーズのフランス版…

ServiceObjectとは

プログラミング言語と並行してフランス語の学習に精を出しているフラリモートスバルです。 21時になっても太陽が昇ったまま そのため仕事終わりは 近くにあるプールでぷかぷか浮かび無の時間を楽しんだり、 海辺へ行って散歩をしたりしてます。 今の内に暇と…

高凝集 低結合

東京〜フランス間のフライトがトランジット含めて31時間かかることに発狂している7月末です。 「Clean Architecture」「Clean Code」「独習UML」を借りました。これを読んで8月は開発者としてのプロ意識を高めていきたいです。 もっぱら小説に対する欲が薄れ…

デザインパターンとオブジェクト指向設計(カプセル化)

頼むからCovid-19インスタンスを中野クラスをスーパークラスに持つスバルインスタンスに移譲させないでくれと願う今日この頃です。 暇と退屈の倫理学のあらすじに興味深い描写があります。 時間とお金に余裕ができたら、好きなことをする。 19世紀だったら…

【Rails】コントローラーの浅いネスト

浅いネスト ネストしたリソースを書くときにshallowをtrueにするとshow/edit/update/destroyのような、idを必要とするアクションを省略して表現することができる。 resources :articles do resources :comments, shallow:true end POST /articles/:article_i…