やる気がストロングZERO

やる気のストロングスタイル

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

2019年活動まとめ

2019年も終わるので1年を振り返る。 2018年のまとめで「より運用方向での知識を得ていきたい。」と言っていたのは新しい職場で経験できているので「クリアできた」ということにする。 RubyとRailsがメインになった 職場が変わって、.Net C#からRuby + Rails…

【Docker Ceotos7】systemctlが使えるようにする

dockerでcentos7のコンテナを作って普通にsystemctlを使うと怒られる # systemctl Failed to get D-Bus connection: Operation not permitted privilegedオプションを有効化し、/sbin/initで起動してやると使えるようになるらしい。 version: '3' services: …

【Docker】何もしないコンテナを起動しっぱなしにしたい時

こんな感じで、tail -f /dev/nullが実行されるようにしておく。 # docker-compose.yml version: '3' services: master: image: ubuntu:18.04 command: tail -f /dev/null 他にも何もしないwhileループを書く方法とかもあるっぽい。

https(ssl)通信設定の概要

サイトをhttpsにするには以下の手順を踏む必要がある。 参考) ちゃんと理解するSSL/TLS 前編 - Qiita 事前準備(認証局に認証してもらって証明書をもらう) hostの公開鍵とhostの情報を含めた「署名文書」を認証局に送る。 認証局は署名文書から実在性確認…

【テーブル設計】利便性のために余計なデータを持たせるのはアンチパターン

テーブルに見やすさや利便性などの為に余計なデータをもたせるのはアンチパターンだと思った。 ※アンチパターンというか、普通に駄目だと思う。 サンプルケース 以下のようなテーブルを使って社員情報を管理しているとする。 (会社テーブルを自己参照にすべ…

理解しづらかったコードメモ

こういう感じのコードがあると理解にすごい時間がかかるんですが、僕だけですかね? class A_Class def initialize self.b_obj = B_Class.new() end def some_func # このメソッドの処理を追いたい self.b_obj.a_func(self) end def get_some_value "なんら…

tableのstateカラムはアンチパターン(だと思う)

DBテーブルにstateカラムを用意して、stateを更新していくような作りは良くないと思ってるので理由を書く。 サンプルケース Aフォルダに大量のファイルが入っており、1時間に1回、1つのファイルをBフォルダにコピーする定時実行処理があるとする。 テーブル …

【RubyMine】docker-composeのコンテナ内の実行環境でラインデバッグするための設定

dockerコンテナ内にしか実行環境がない(ローカルでは実行できない)場合にrubymindeでラインデバッグ出来るようにするための設定を調べて設定した。メモ。 ここを見ながら設定したらできた。 リモートインタープリターとしてのDocker Composeの使用 - ヘル…

railsのrake taskをcron実行する

普通にcrontabでこんな感じで設定したけど動かなかった。 */10 * * * * cd /app && bundle exec rake rake:task RAILS_ENV=production 最終的にはwheneverというgemを使って解決した。 GitHub - javan/whenever: Cron jobs in Ruby なぜ動かん? cron実行の…

docker-compose execでcdしたい

普通にやるとエラーがでる $ docker-compose exec service_name cd /your_dir/ && bundle exec rspec bash -cでやるとできた。 $ docker-compose exec service_name /bin/bash -c "cd /your_dir/ && bundle exec rspec"

rails command の一覧を知りたい

なんかググってもあまりまとまった情報が出てこない(調べ方が悪いのかも。。) 普通にコマンドヘルプを見るのが良かった。 bundle exec rails --help で一覧が表示できる サブコマンドのヘルプを見たいときは以下のようにする。 bundle exec rails db:creat…

関数の引数でdictionaryを渡されてるやつがめちゃ嫌い

関数の引数でdictionary渡されてるやつがめちゃ嫌い。 どんなやつ? # こんなインターフェースのやつ。 some_func(process_param) # process_paramで色々わたす。 process_param = { "mode": "some_mode", #この値でsome_funcの挙動が変わったりする。。 "id…

【Rails】autoloadについて

app/以下に自分でディレクトリをほってclassを定義したときにどのように呼び出したらいいのかよくわからなかったが、ここに記載されてた。 railsguides.jp app/some_dir/some_class.rb だったら以下の名前でclass定義して class SomeClass ... end 以下の感…

【rails】既存DBの初期migrationファイルの作り方

参考) Rails - schema.rb(既存DBを使ったアプリ作成) - Qiita rails db:schema:dump でschema.rbを生成する マイグレーションファイルにschema.rbの中身をコピペする class CreateTables < ActiveRecord::Migration[5.0] def change # ここにschema.rbの…

【rails】dockerを使ってproductionでの確認ができる環境を構築する設定ファイル郡を作った

インフラ知識詳しくないので、とりあえず最低限動くところまで。 github.com これは何? railsの開発サーバーでの開発と、 dockerを使ってproduction環境での確認ができる環境を構築する設定ファイル郡 バージョン ruby 2.6.3 rails 6 構築方法 railsの新規…

【DB】テーブル集計結果を別テーブルに持たせたくない

DBからデータを集計し、新たなデータを生んで保存するようなことをしたくないと思っている。 サンプルケース 家計簿システムがある。 お金の出入りがあったらその日に金額を入力し保存する。 月集計と年収計が確認できる。 [実装] 金額入力をしたらdailyテー…

Railsのセットアップ

参考) システムのgemにrailsをインストールせずrails newする - Qiita 手順 ディレクトリ作成 mkdir rails_app ディレクトリ移動 cd rails_app rubyのバージョン決定 rbenv local 2.6.5 bundlerの初期化 bundle init railsインストールの有効化 vim Gemfile…

psqlコマンド覚書

この続き) PostgreSQLのデータ移行(dumpとリストア) - やる気がストロングZERO 接続 psql -h [host] -U [username] [dbname] [(tablename)] db一覧表示 postgres=# ¥d use db postgres=# ¥c [dbname] table一覧表示 dbname=# ¥l table定義表示 dbname=# ¥l …

緊急対応のときの動き方を考えておく

処理がコケたりバグコードにより誤った処理が実行されてたりしたときに緊急対応する必要があるが、焦って誤った判断をしがちなので対応方法を考えておく。 影響範囲の調査 まずはどういう影響があるのか、いつまでに対応しないといけないのかを調べる。 自分…

「JUDGE EYES:キムタクが如く」で学べた「抽象化」の力

「JUDGE EYES:キムタクが如く」を買って楽しく遊んでいるときにぼんやり考えた事を書いてみる。 JUDGE EYESとは 「龍が如く」シリーズで、実在の俳優などの顔でモデリングされたキャラクターがメインキャラとして登場するゲーム。たけしとか宮迫とか。 本作…

インスタンス変数に計算結果を保持させたくない

計算結果をインスタンス変数に入れて使い回すようなコードをちょいちょい見かけるけど、なるべくそういう事をしたくないなと思っている理由などを書く。 コードサンプル こんなん。 class User attr_reader :age # ...その他のコード def set_age @age = (# …

Twitter APIを使うために必要な作業

地味に複雑で忘れるのでメモ。 網羅はしていないので、不足があれば公式で調べる。 Getting started — Twitter Developers developer登録 (以前は登録の必要はなかった) twitterに開発者として登録する必要がある。 twitterアカウントに紐づく。 100文字程…

【Rails】Active Record のコールバックは使わない方がいいと思った

Active Recordのコールバックは便利な事もあるのかもしれないが、注意して使わないとコードの可読性がものすごく落ちていくので使わない方がいいと思った。 Active Record コールバック - Rails ガイド コードリーディングで処理を追うのが難しくなる コール…

Oculus Questを買ったのでレビュー

ムシャクシャしてOculus Questを購入した。 レビューを書く。 Oculus Quest 初体験の感動量はかなりあった Oculus Questを初めて起動するとオープニング映像(VR空間にオブジェクトが次々描画されては消えて、、のような感じ)が流れる。 これが結構なインパ…

ネットワークの疎通デバッグ(ping, traceroute, curl, nslookup)

あまりネットワーク周りの調査をする機会がなかったのでふわっとしか認識してなかった疎通調査の方法についてまとめる。 nslookup ドメイン名からIPアドレスを引けているかの確認ができる。 nslookup example.com ping ネットワーク層での通信疎通が確認でき…

DDDの要素についての個人的理解

良い設計ができるようになりたくてDDDを勉強している。DDDに出てくるワードに関して現状の理解をまとめる。 これがDDDの全てというわけではない。 コンテクスト アプリケーションを構築するときに、コンテクストを意識して境界をつくる。 すべてごちゃまぜの…

配列(array)や辞書(dictionary)を関数間で受け渡しまくるとしんどい

配列(array)や辞書(dictionary)を関数間で受け渡しまくるとしんどいコードが出来上がる気がするので理由を書いてみる。 何が入っているのかわからない 例: 関数内を読んでいて、user_dataやadded_dataみたいな名前のarrayやdictionaryの変数あった。 それに…

【DDD】ドメインイベントについて学んだので自分的理解をまとめる

例えば、注文が確定された時、注文確定メールを飛ばしたい。 パターンA 注文確定処理の中にメール送信処理を埋め込む # 注文クラス class Order def initialize(user_id) @user_id = user_id @item_ids = [] end def add_item(item_id) @item_ids << item_id…

【テーブル設計】売上詳細データをどう持つか

状況 2019/01/01にスーパーボールを100円で「たかし」に販売した。 初期テーブル設計 商品マスタ id 商品名 価格 1 スーパーボール 100 ユーザーマスタ id 名前 10 たかし 売上詳細 id ユーザーid 商品id 販売価格 販売日 100 10 1 100 2019-01-01 正規化し…

ビジネスロジック内でActiveRecordを直接つかいたくない

ActiveRecordのような、データベースとやり取りするライブラリをビジネスロジック内で直接使いたくない、とか思ってしまう。 なぜ? ビジネスロジック内で直接ActiveRecordを使うとAcriveRecordに依存したコードになってしまう。 ビジネスロジック的にはデー…