1日1%成長するブログ

毎日成長するために仕事/プライベートで得た学びをアウトプットするブログです

プロダクトレッドオーガニゼーションを読んだ書評的なものを書きました

note.com

アジャイルの歴史・スクラムの型について書きました

所属している会社でテックブログを書きました。 PharmaX 社内でスクラム勉強会を開催しました!|PharmaX Blog

LLM初心者が3日でPoCを作るためにやったことを書きました

所属している企業でLLM関連のテックブログを書きました note.com

テスト戦略について

所属している会社でテックブログを書きました。 note.com

Buefyで3列のグリッドレイアウトを作る

tonyo.design こちら勉強になった。こんな感じにするだけで3列のグリッドレイアウトになって、 溢れた分は折り返してくれる。 ul.columns.is-multiline li(v-for="(todo, index) in todos" :key="index" class="column is-4")

Vue.jsのルートインスタンスとコンポーネントの違いを理解する

ルートインスタンスとコンポーネントの違い ルートインスタンスは既存のHTML要素のID属性で紐付ける * そのためelオプションがある VueコンポーネントもVueインスタンスなのでelオプション以外は同じオプションを受けられる グローバルコンポーネントとロー…

Firebase Authで匿名ログインを実装して作成したuserデータを取得する

Userドキュメント用のTypeを用意する import firebase from "firebase" export type User = { id?: string name: string createdAt: firebase.firestore.Timestamp updatedAt: firebase.firestore.Timestamp } export const initialUser: User = { name: "",…

PaypalのAPIでRailsのアプリケーションと決済を照会できるようにする

Paypalの管理画面で表示される取引IDを取得するのは以下の通り。 このIDをRailsの管理画面で見れるようにしておけば決済の成功有無を参照できるようになる。 実際に運用し始めてから照会する方法が無いと困り、見つけた方法。 カード払い用のAPIの場合 devel…

ベイビーステップから学ぶメンタルコントロール (自覚編)

自分はベイビーステップというテニス漫画が大好きです。 少年マガジンで2007年〜2017年まで連載されていたので、 初連載時は今から13年前なのですが、未だによく読みます。 主人公のエーちゃんがノートでひたすらデータを貯めて改善して、 一歩ずつ成長して…

Railsのコールバックをifで絞りつつ引数を指定する方法

before_xxx, after_xxxといったActiveRecordのコールバックを特定の条件で絞り込みしたい時は、 ifオプションを使うのが楽。 after_update :update_fuga, if: -> { saved_change_to_hoge_column? } ただこれだとコールバックに引数を指定したい時に上手くい…

Railsで特定のカラムが更新された時だけバリデーションを実行する

Rails5.1からは特定のカラムが更新されたかどうかは、以下のメソッドで判定するようになった。 Save前 {カラム名}_changed?の代わりにwill_save_change_to_{カラム名}? {カラム名}_was の代わりに {カラム名}_in_database Save後 {カラム名}_changed?の代わ…

Railsのupdateメソッドで特定の条件外でバリデーションをかける

特定の画面からの新規登録だけバリデーションをかけたいなど、 条件を絞ってバリデーションをかけたくなることはよくある。 そんな時は以下のようにsave時にcontextをオプションに渡してあげて、 with_optionsでその時に実行するバリデーションをまとめて設…

Rubyのアクセサメソッドを使ってEntityクラスを作ってAPIのレスポンスに使う

class HogePostsEntity attr_reader :author, :comments def initialize(post) @author = post.author @comments = post.comments end def self.collection(posts) posts.map { |post| new(post) } end end こんな感じでシンプルにEntity用のクラスを作れた…

RailsでFatControllerをリファクタリングしていく方針 (随時アップデート)

Viewで使うデータをどこで整形する? DBから取得したデータを整形してハッシュの配列を用意するみたいな処理は置く場所に困る Modelはvalidationやscope以外は対象テーブルの操作の処理以外は極力書くべきではないので適さない Viewはslimを良く使うのでruby…

業務システム開発する上でのデータベース設計の勘所

データベース設計の手順 システム化分析 システム化対象範囲の業務プロセスを視覚化する アウトプット: フロー図 (誰がどの手順で業務を行っているのか) 論理データモデル化 ビジネス視点でビジネス活動をデータモデルとして視覚化する アウトプット: ER図 (…

ハッシュと暗号化の違いについて

ハッシュ化とは SHA256などのハッシュアルゴリズムを使って復元不可能な別の値へ変換すること。 「パスワード」のように元が復元できないようにしたい時に使う。 暗号化とは RSA, DES, AESなどの暗号アルゴリズムを使って復元可能な別の値へ変換すること。 …

Railsでページ毎にJSとCSSファイルを読み込む

- content_for :css do = stylesheet_link_tag 'posts/show' - content_for :js do = javascript_include_tag 'posts/show' Rails.application.config.assets.precompile += %w( posts/* ) ページ毎にcontent_forでレイアウトファイルに読み込ませる assets.…

RailsにおけるCSS構成のプラクティス

body class="#{controller.controller_name}-#{controller.action_name}" コントローラー名とアクション名 .articles { &-show { .inputContainer { margin: 20px } } &-edit { .inputContainer { margin: 10px; } } } @import "user/articles" ユーザー画面…

Rails5でローカルではsqlite3で動かしてHerokuではPostgresを使う手順

group :development, :test do # Call 'byebug' anywhere in the code to stop execution and get a debugger console gem 'byebug', platforms: [:mri, :mingw, :x64_mingw] # Adds support for Capybara system testing and selenium driver gem 'capybara…

package.jsonのdevDependenciesとdependenciesの使い分け

devDependencies ライブラリをdev(開発)する時に必要なライブラリを書く 開発時のみに必要で実行時には入らないもの - テストツール - ビルドツール - タスクランナー等 dependenciesに含まれていても動作はする。ただバンドルファイルの容量が増えたり用途…

VSCodeにES6+ReactのESLint設定を行う

1. eslintをプロジェクトのローカルにインストール yarn add --dev eslint 手軽さからグローバルにインストールする例もありますが、 チームで開発する場合は以下の理由からローカルにインストールした方がいいです プロジェクト毎に別々のバージョンのeslin…

Rubyの&とRailsの#tryの違い

Rubyの&. ruby2.3から追加された新しい演算子 Safe Navigation Operator(&.) 10&.to_s # => "10" nil&.to_s # nil レシーバがnilでない場合にメソッドを呼び出す レシーバがnilの場合はnilを返す Railsの#try ActiveSupportで提供されるメソッド 10.try(:to_…

HerokuにRails5のアプリをデプロイする

Herokuにログインする $ heroku login Postgresを使ったアプリを作成 $ rails new myapp --database=postgresql 動作確認用にコントローラーを作っておく $ rails generate controller welcome <h2>Hello World</h2> <p> The time is now: <%= Time.now %> </p> app/views/we…

CarrierwaveでUUIDを使ったファイル名にする方法

UUIDとは Universally (普遍的に) Unique (一意な) IDentifier (識別子) の略 誰でも作れるが世界中で重複しないようになっているID RFC4122という共通の規格が決められている https://tools.ietf.org/html/rfc4122 UUIDの種類 UUIDの作成方法には5種類存在…

Rails5でajaxを使っていいね機能を実装する

ルーティングを用意する resources :diaries do resources :diary_comments, only: [:create] resources :diary_likes, only: [:create, :destroy] end diaryが重複するので後でスッキリさせる モデルを用意する class Diary < ApplicationRecord belongs_to…

laravelでURLパラメータを取得する

Route::get('user/{id}', 'UserController@show'); public function show(Request $request, $id) { こんな感じで取得できる

react-nativeでbox-shadowをつける

IOSの場合 shadowColor: #ccc, shadowOffset: { width: 0, height: 2, }, shadowRadius: 0, shadowOpacity: 1, shadowOffset width: 横への影 height: 縦の影 shadowOpacity 影の透明度 0が透明、1は透明なし これでこんな感じで下に影をつけられる Android…

yenta風の特定の位置までドラッグしたらフェードアウトする処理を実装する

$('.draggable').draggable({ drag: function() { var offset = $(this).offset(); var xPos = offset.left; var yPos = offset.top; if (xPos >= 210) { $('.xxx).addClass('fadeout-right').delay(700).fadeOut(1); } if (xPos <= -210) { $('.xxx).addCla…

Railsでコメント機能を作る

ルーティングの追加 resources :diaries do resources :comments, only: [:create] end コントローラー側 @diaryComment = DiaryComment.new(diary_comment_params) @diaryComment.user_id = User.first.id respond_to do |format| if @diaryComment.save fo…

Tinder風のUIをJavaScriptで実装する

https://codepen.io/developingidea/pen/meAIncodepen.io こちらのコードを参考に学んでみた。 $(".buddy").on("swiperight",function(){ $(this).addClass('rotate-left').delay(700).fadeOut(1); $('.buddy').find('.status').remove(); $(this).append('<div class="status like">L</div>…