この記事は情報セキュリティアドベントカレンダーの12日目の記事です。 開発組織でセキュリティをある程度のレベルに担保するための有効な施策として既にセキュリティ対策が施されているフレームワークを利用するようにする、というものがあります。 自分の…
オブジェクト指向設計実践ガイド ~Rubyでわかる 進化しつづける柔軟なアプリケーションの育て方作者:Sandi Metz技術評論社Amazon 上記の本の7~9章を読んで印象に残った部分をまとめました。 7章 継承の手法を使い「ロール(役割)」を共有する解決法につい…
オブジェクト指向設計実践ガイド ~Rubyでわかる 進化しつづける柔軟なアプリケーションの育て方作者:Sandi Metz技術評論社Amazon 上記の本の4~6章を読んで印象に残った部分をまとめました。 4章 オブジェクト指向アプリケーションは「クラスから成り立つ」…
オブジェクト指向設計実践ガイド ~Rubyでわかる 進化しつづける柔軟なアプリケーションの育て方作者:Sandi Metz技術評論社Amazon 上記の本の2~3章を読んで印象に残った部分をまとめました。 2章 変更が簡単であることの定義 変更は副作用をもたらさない 要…
ユーザーストーリーマッピング作者:Jeff PattonオライリージャパンAmazon 上記の本を読んでいて、13章から18章まで各章ごとに印象に残ったことをメモりました。 13章 オポチュニティから始める 浮かんだばかりの大きなアイデアはエピックと呼んだりオポチュ…
ユーザーストーリーマッピング作者:Jeff PattonオライリージャパンAmazon 上記の本を読んでいて、7章から12章まで各章ごとに印象に残ったことをメモりました。 7章 より良いストーリーテリングのために 以下のようなシンプルなテンプレートを使って会話を始…
ユーザーストーリーマッピング作者:Jeff PattonオライリージャパンAmazon 上記の本を読んでいて、0章から6章まで各章ごとに印象に残ったことをメモりました。 0章 まず最初に読んでください 言葉で表現された文章が正確な製品の実態を示すものではない スト…
Ransackでは特定のモデルのカラムだけでなく、そのモデルと関連する他のモデルのカラムでも検索を行うことができる。 例えば、Userモデルに1対多で紐づくCommentモデルのcontents属性で検索したい場合 <%= search_form_for(@q, url: user_search_path) do |f…
ちょっと仕事で調べることがあったのでメモ。 メールサーバには2種類があって、MTA(メール転送サーバ)とMUA(メールユーザエージェント)があって、メール転送サーバはDNSが持っているMXレコードのアドレスのサーバにメールを転送する。 このメールを転送して…
Railsで開発していると検索フォームを作成することがよくあると思います。 今日は、そのときよく使われるRansackについてまとめておこうと思います。 基本的な使い方 def index @q = User.ransack(params[:q]) @users = @q.result end のように特定のパラメ…
Rails 6.1以上になってCSVなどをダウンロードさせるコントローラのアクションに def download render( csv: 'users_list', template: 'users/download.csv.ruby' ) end のように書いているとRSpecの実行時に DEPRECATION WARNING: Rendering actions with '.…
Railsのモデルでenum値を扱うとき、enumerizeというgemを使うと便利です。 # Gemfile gem 'enumerize' class Task extend Enumerize enumerize :status, in: { pending: 0, todo: 1, done: 2 } end と書くと、 Task = Task.new(status: 'pending') #=> valid…
Railsで開発していると if Rails.env.production? # production環境用の処理 elsif Rails.env.staging? # staging環境用の処理 else # それ以外の環境用の処理 end という風に環境ごとの処理を書いたり、config/environments以下のproduction.rbやstaging.rb…
画面を作成していると単純に要素を横に伸ばしたりでスマホとPCの表示が作れず、要素の順番や配置が変わってしまうことがあります。 その度合いがまるきり別物ならPC版とスマホ版で別のテンプレートを使えばよさそうですが、順番が数カ所違う程度ならスマホ版…
レコードがあることを条件にしたいとき、findの代わりにexists?を使う if User.find_by(email: "...") # something.todo end のとき、findやfind_byではActiveRecordのインスタンスが生成されてしまう分遅いので、存在確認をしたいだけなら下記のようにexist…
uniquenessバリデーションを使うと、その項目の中で一意であるようにバリデーションがかけられます。 class User validates :email, uniqueness: true end とすると、emailはUserの中で一意となるようにRails側でバリデーションをかける。 これを、Userが会…
RSpecでテスト用のファイルを読み込む RSpecでテスト用のファイルを読み込む際はデフォルトでは spec/fixtures/files にファイルを置いて file_fixture("example.txt").read とすると、ファイルの中身がspec中で呼び出せる。 ファイル中にHTMLやJSONのレスポ…
scopeみたいにフィルタリングした要素について、フィルタリング対象の要素について let(:included) { Item.new(price: 250) } let(:not_included) { Item.new(price: 300) } let(:array) { [included, not_included] } subject(array.filtering) it '250円以…
最近細かく引っかかっていたので。 URLヘルパのnew, editの修飾子は前に付く xxxx_new_pathかnew_xxxx_pathかよく迷っていたけど、 new_xxxx_path, edit_xxxx_path のほうが正解。namespaceで # routes.rb namespace 'admin' do resources xxxxs end となっ…
特定のオブジェクトにあるメソッドの中身を実行せず結果だけ返して欲しい場合 allowとreceiveを使ってスタブの指定をします。 allow(some_object).to receive(:method_name).and_return(return_value) 特定のクラスのインスタンス全てにあるメソッドの中身を…
Userと1対多関連の関係にあるCommentというモデルがあるとする。 あるUserに関連したコメントに対して user.commentes.some_method のようにスコープやメソッドを定義したいという場合があって、その場合以下のように書ける。 class User < ApplicationRecor…
下準備としてモデルのSchemeとFactoryの定義 # schema.rb ActiveRecord::Schema.define(version: 2020_11_23_064724) do create_table "users", force: :cascade do |t| t.string "name" t.integer "age" t.string "mail" t.datetime "created_at", precisio…
週5以上活動していればよい感じで。 以下のようなコードを動かしながら、関数値gの中でその値が定義された関数f内の変数Aを利用すると、関数値gは変数Aの参照を持っているのだなぁ、という確認をしていた var once sync.Once onceFunc := func() { once.Do(f…
defer FILO/panicになっても実行される recoverはpanicが起こる関数と同じgoroutineの中に置く deferと対になる処理について errorに判定を生やす標準ライブラリの実装例 ログにもありますが、試したGoのバージョンは1.7.3です deferはFILOでpanicになっても…
type の略。 stackoverflow.com 現場からは以上です。
下記のフラグをつけてstartActivityする。 Intent intent = new Intent(ThirdActivity.this, MainActivity.class); intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TASK); startActivity(intent); サンプルコード https://gis…
開発用にダミーサーバへ接続したらやたらエラーになるので調べたところ、iOS9.0でシミュレータでlocalhostへ接続した場合だけに下記のエラーが出るみたいでした。 Error Domain=NSPOSIXErrorDomain Code=2 "No such file or directory" UserInfo={NSErrorFai…
即席で作ったシェルスクリプトのオプションの自前解析がしたくて。。 #!/bin/bash i=0 for OPT in "$@" do echo "index: $i OPT: $OPT OPTの一個後ろの要素 ${@:$(expr $i + 2):1}" # $i + 1 でないのは@の先頭は全要素を出力するため i=$(expr $i + 1) done…
後からAthenaのテーブル定義に列を追加したい、みたいな場合に気になったので、メモ。 テーブル定義に存在する列で検索対象データ内で型が違うものは怒られますが、テーブル定義に存在して検索対象のデータに存在しない列についてはNULL扱いみたいでした。 …
いまの日時 [NSDate date] 日付を扱うには NSCalendaer, 決まったフォーマットで文章にしたい場合は NSDateFormatter NSDateFormatter にセットする DateFormat の文字列には時間に関係しない文字列( yyyy, MM, dd みたいなもの以外 )が含まれている場合、 […