ryota21silvaの技術ブログ

Funna(ふんな)の技術ブログ

これまで学んだ技術の備忘録。未来の自分が救われることを信じて

【Go】Goでドメインオブジェクトをどのようにして生成すべきか

ゴール ドメインルールを守ったオブジェクトであることを保証したい。 Goの言語使用上外部からの変更(同一パッケージ内からの変更)を完全に防ぐことは難しいが、それでもなるべくドメインオブジェクトの不変性を保ちたい。 方針その1. 構造体のフィールド…

NoSQLの種類・特徴・良記事をまとめる

仕事でNoSQLに触れる機会がちょくちょくあるので、NoSQLの種類・特徴・良記事を簡単にまとめてみた。 NoSQLとは 特徴 拡張性と分散処理に優れている 大容量データの高速処理が可能 データの整合性が緩い 種類 キーバリュー型 キーとバリューの単純な1対1管理…

【MySQL】VARCHARの型サイズによってパフォーマンスが落ちることは無さそう

テーブル定義でVARCHARの型サイズをどこまで厳密に設定するべきなのか悩んだことがある。 どうやらLENGTHの長さはパフォーマンスに影響を与えないらしい。 無理にLENGTHを短くする必要は無さそう(ただのメモ記事でごめんなさい)。 qiita.com qiita.com

【TypeScript】Non-null assertion operator(変数の末尾に!)

「この変数はnullやundefinedeではないよ〜」とコンパイラに教えてくれる。つまり、 <T | undefined | null> 型の変数xがあったとして、x! って書いたらnull および undefinedを除外した<T>を生成してくれる。 実行時(JSに変換された後)にこのコードは削除される。 !オペレーターは</t></t>…

【Go】Enumを扱う

Go

Enum(列挙型)とは 列挙型とは、プログラミング言語やデータベース管理システムなどにおけるデータ型の一つで、複数の異なる定数を一つの集合として定義するもの。多くの言語では “enum” の略号で示される。 列挙型(集合型)とは - 意味をわかりやすく - I…

【Go】JSONの入れ子を構造体に変換する

■ はじめに APIから返ってくるJSON文字列をGolangの構造体に変換したいと思います。 ■ JSONを構造体に変換する基本形 例えば以下JSONを構造体にマッピングしたい場合 { "book":{ "google_books_id": "Wx1dLwEACAAJ", "title": "リーダブルコード", "authors"…

【Git】git rebase -iでpush済みのコミットまとめたれ

Git

コミットをまとめる コミットBとCをまとめたい $ git log -n 3 commit 78dbdc4439854253a4c65a23aad687488bcf2051 (HEAD -> feature/hogehoge) Author: ryota1116 Date: Tue Sep 21 01:27:14 2021 +0900 コミットC commit 185f507a6a32fd93505db1cd05b6effa2…

Railsの利点と欠点、RailsがDDDや大規模開発に向いていない理由

知り合いが「Railsの長所ってなんやっけ?」って話をしてたので、その辺のRailsの長所・短所とか、RailsがDDDや大規模開発に向いてない理由を自分なりに整理してみた。 間違っている点などあれば是非ご指摘頂きたいです。 ※2023/07/21 追記: 本記事において…

PHPでポリモーフィズム、インターフェイスを理解する

ポリモーフィズム(多態性)とは ポリモーフィズムとは「同名のメソッドを異なるクラス間で使用できるようにすること」を意味しています。 例えば以下のようなSoldierクラス、Wizardクラス、Warriorクラスが存在し、これらのクラスに「攻撃をするメソッド」…

PHPのPshSHで対話型デバッグを行う

composerを使ってインストール $ composer g require psy/psysh:@stable Changed current directory to /Users/funesakisuke/.composer ./composer.json has been created Running composer update psy/psysh Loading composer repositories with package in…

【現代語訳】スタートアップの情報収集のすヽめ

スタートアップの情報どこにあるねん スタートアップってリリースされている記事とかが少ないので、面白い企業を探したくても見つからないことがよくあるんですよね。 そこで「どんなメディアを使ってスタートアップを探せばいいの?」という方向けに、私が…

【備忘録】チェリー本第3章:テストを自動化する

3.1 イントロダクション 3.1.2 プログラマの3大美徳 以下の3つを持つプログラマは良いプログラマと言われる。 1. 怠慢(Laziness) 全体の労力を減らすために手間を惜しまない気質。 何度も同じことをやりたくない面倒くさがりのプログラマは、自動化やDRY原則…

【備忘録】チェリー本第2章:Rubyの基礎

2.6 メソッドの定義(P.36) メソッドの戻り値 Rubyは最後に評価された式がメソッドの戻り値になるため、returnのようなキーワードは不要。 以下のように、returnはメソッドを途中で脱出したい場合に使用することが多い。 irb(main):012:1* def greeting(count…

【環境構築】MySQLのパスワードが分からず、最終的にディレクトリごと削除して解決した話(オススメしない)。

(※2020/05のメモを記録) はじめに 環境構築の際、MySQLのパスワードが分からず詰まったので、以下に解決まで至った流れを記していきます。 これはあくまで私の環境上の話なので、どこまで参考になるか分かりませんし、皆様のお時間を無駄にしたくはないので…

mergeメソッドのメモ

以下は、あるテーブルのデータと、そのテーブルの関連テーブルの外部キーを代入している。 しかし、処理が2行に分かれていて冗長。 @meal_record = current_user.meal_records.build(meal_record_params) @meal_record.food_id = params[:food_id] mergeメソ…

範囲オブジェクトrange。 ..でリテラル表現

範囲オブジェクトとは 範囲オブジェクトのクラス。範囲オブジェクトは文字どおり何らかの意味での範囲を表します。数の範囲はもちろん、日付の範囲や、「"a" から "z" まで」といった文字列の範囲を表すこともできます。 docs.ruby-lang.org 範囲の開始値と…

mapメソッドでループする(ついでにreject(&:blank?)とflattenを使ってる)

わざわざ空配列を用意するのダサいし、冗長。 @food_lists = [] food_labels.each do |food_label| @food_lists = Food.search_by_label(food_label) end mapメソッドを使う。 reject(&:blank?)で配列からnilと空文字を除く。 flattenで多次元配列を一次元配…

マイグレーションファイルについて

マイグレーションファイルとは データベースの設計図。 マイグレーションファイルを実行すれば、マイグレーションファイルを元にDBが作成される。 →マイグレーションファイルを作成しただけではDBに反映されない。 マイグレーションファイルを作成 rails g m…

Rakeタスクのメモ的な(メールの自動配信機能)

Rakeタスク タスクファイル作成 rails g task mail_summary タスクファイルの編集 (lib/tasks/mail_summary.rake) namespace :mail_summary do desc '公開済の記事の件数と、昨日公開された記事の件数とタイトルをメールで送信' # task :article doだとDBに…

【Ruby】procとblock

procとblockについて block ブロックとは do...endや{ }のカタマリのこと。 do...endと{ } 改行を含む長いブロックを書く場合はdo...end 1行でコンパクトに書きたい場合は{ } プロを目指す人のためのRuby入門 言語仕様からテスト駆動開発・デバッグ技法まで …

【Rspec】build,create / sequence, trait, transientなど

build, createなどの違い DBへ保存するか否かなど違いがある。 メソッド 戻り値 DB保存 DB保存(アソシエーション) ID build() モデルインスタンス x o nil build_stubbed() モデルインスタンス x x 適当な値 create() モデルインスタンス o o DB保存された値…

【個人開発】ポートフォリオ作成にオススメなtipsやツールをまとめる

自分がポートフォリオ作成に活用したtipsやツールを以下にまとめてみました。 qiita.com ↪︎「こんな課題があるのか〜」と知ることも大事だと思います。 creators.eightbit.jp ↪︎ツクログで色々な個人開発を見て、アイデアや発想力を養うのもアリだと思います…

【Rails】404、500エラーをハンドリング(slack通知も)

エラーハンドリングのメモが残ってたから、体系的な内容に纏めてみた。 どうせなのでコッチに移しておく。 エラーハンドリングをする 404エラー時は、404エラー用のテンプレートを表示させる。 500エラー時は例外(エラー)クラス、エラーメッセージ 、バック…

【初学者向け】Gitのコマンドの使い方をよく忘れるから、纏めてみた

Git

はじめに Git: もう怖くないGit!チーム開発で必要なGitを完全マスター 山浦 清透を受講した時のメモがあったので、今の知識をもとに整理してみました。 これから新しいコマンドの使い方を覚えた時には、この記事に纏めていこうと思います。 はじめに 1. 基…

【Ruby】Date型で色んなメソッドを試してみる

今日、昨日、○日前、○日後とか # 今日 [1] pry(main)> Date.today => Sat, 22 Aug 2020 [6] pry(main)> Date.current => Sat, 22 Aug 2020 # 昨日 [7] pry(main)> Date.current.yesterday => Fri, 21 Aug 2020 # 昨日(1日前) [8] pry(main)> Date.current.ag…

Rails6にSemanticUIを導入

Rails6でのSemantic UIの導入 BootstrapのフレームワークであるSemantic UIをRails6で使ってみたので、以下に導入方法を記しておきます。 Semantic UI公式 以下の記事もよければ参考にしてください。 【Rails】Semantic UIを使って動的にフラッシュメッセー…

Rails6にjQueryを導入

Rails6でjQueryを導入する方法 yarn add jquery package.jsonとyarn.lockを確認すると、jQueryが追加されていることが分かる。 (package.json) { "name": "zero_calorie", "private": true, "dependencies": { "@rails/actioncable": "^6.0.0", "@rails/acti…

【Rails】マイグレーションファイルをmigrateする前に戻す方法(その他マイグレーション関連のコマンド)

be rails db:migrate:statusでmigrateの状況を確認。 upになっているファイルがmigrateされている。 $ be rails db:migrate:status database: zero_calorie_development Status Migration ID Migration Name ----------------------------------------------…

情報収集のやり方と好きなメディアサービスやブログを纏めておく

はじめに Feedlyを使って効率的に情報収集しよう 私は10個くらいのメディアを使って情報収集しているのですが、全メディアのサイトを訪問しているようでは、時間がいくらあっても足りません。 そこで色んなサイトの記事を1つのプラットフォームで一元管理し…

【Rails】RailsでAPIを叩く基本編

APIの特徴などを軽く抜粋(dysonさんメモ) jsonのserializerとは? 今回実装してみる要件 関連モデルのデータを返す リクエストスペックの書き方も APIの特徴などを軽く抜粋(dysonさんメモ) APIはインターフェイス=エンドポイントと思っておk →要はURL(http:…