やる気がストロングZERO

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

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

RSpecでmockを使ってテストする

こういう時にmockを使う あるメソッドのテストコードを書きたい。 そのメソッドは内部で外部システムと通信をするclass(以下apiクラスと呼ぶ)を使っているため、実行のたびに結果が異なるのでテストがかけない。 apiクラスが返してくる値を決めてしまいた…

Cypressの記法メモ

cypressとは? https://www.cypress.io/ ブラウザを操作してwebアプリのテストを自動実行できる。 seleniumとかと同じようなカテゴリに属すると思う。(ただし、クロスブラウザテストは現状できない) seleniumよりも環境構築が簡単で気軽に試せる感じ。npm …

バグ原因調査の手順を考える

バグ原因調査の手順を考える ログを確認する ログを確認するとかなり原因を絞り込める。 (エラーが起きていないか確認したり、想定されているアクセスが発生しているのかの確認など。) なんかのバッチ処理とかの場合、 だいたい「~~処理開始」とかがログに…

非エンジニア職からエンジニア職になるには

僕はもともとエンジニアではないが、現在エンジニアとして働いている。 その経験から得た「日曜エンジニアから職業エンジニアになる方法」を書いてみる。 注意)諸説あり。個人差があり。 前提:プログラミングが好きであること。 ・お金が発生しなくてもで…

ModelにApplicationが提供する機能を実装するとつらくなる

どういうこと? railsを例にとるが例えばアカウント登録機能を実装するとする。 アカウント登録が行われたらユーザーに完了メールが飛ぶという仕様。 コントローラーに処理を書くのは良くないので、Modelに実装された。 save()が実行されるとメールが飛ぶよ…

新規開発計画アンチパターン:画面毎担当(期限付き)

エンジニア職ではない人が新規システム開発の計画をすると、必要な画面一覧を洗い出して画面毎に期限を設定した計画を作成される場合がある。 この計画をそのまま受け入れて進めてしまう事自体がアンチパターンだけど、 力関係など様々な原因で通ってしまう…

入社直後の既存システム把握で奮闘

転職して新しいシステムを扱うので把握しないといけない。 把握を進めていく方法で悩んで色々試しているので書いてみる。 なぜシステムの把握が必要か? なにをやるにしても全体像が把握できていないと辛い。 新機能追加の際にも、合わせて調整しないといけ…

【activerecord】joins, includes, eager_load, preloadの違い

joins, includes, eager_load, preloadはよく似た状況を作り出すがいまいち理解し切れなかったので整理。 参考) ActiveRecordのjoinsとpreloadとincludesとeager_loadの違い - Qiita N+1問題を回避し、かつ、、 where条件に関連テーブルのカラムを使いたい…

【Rails】ブラウザ実行自動テスト設定方法

railsでブラウザ実行のテストの自動化をどうやるのか調べた。 結構把握に時間がかかったのでメモ。 前提知識整理 個人的認識なのでもしかしたら間違っているかも。 ◆Rspec railsでテストを書く際のインターフェース定義的なもの? 英語の文章のようにテスト…

【Rails】migrationコマンド周りまとめ

参考)Active Record マイグレーション - Rails ガイド $ bin/rails db:migrate 最新状態までマイグレートする $ bin/rails db:migrate VERSION=20080906120000 指定のバージョンまでマイグレートする $ bin/rails db:rollback 一つ前に戻す $ bin/rails db:…

【ActiveRecord】テーブルをまたいでwhere句条件を書きたい時

こういうsqlをActiveRecordを使って表現したい SELECT * FROM posts INNER JOIN comments ON comments.post_id = posts.id WHERE comments.created_at >= '2019-01-01' つまり、2019年以降にコメントがついたpostのデータを取得したい。 こう書いたらできた …

DBスペシャリストの問題で出てくる「テーブルサイズ見積もり計算」の解き方

必要になる数値 [見積もり行数(行)] テーブルの総行数の見積もり。 そのテーブルが最大でどれくらいの行数になるのかの見積もり [平均行サイズ(バイト)] テーブルの行長が可変の場合、そのテーブルの平均行サイズ [ページサイズ(バイト)] 扱われるデー…

【Docker】長期稼働でi-nodeを使い切ってしまう?

※一時解消はできたが原因解明には至らず。 Dockerの勉強の一環で、Twitterの投稿から画像リンク(コスプレ関係)のurlを収集して一覧しているwebサービスをEC2インスタンス一つにDockerコンテナで構築している。 http://cos.mixmaru.com 構成 appサーバーコ…

Rubyのメソッド引数メモ

Rubyのメソッド定義時の引数のパターンをメモ 飾りなし def some_method(a) puts a end some_method 100 # 100 飾りなし(デフォルト値指定あり) def some_method(a=100) puts a end some_method # 100 可変長引数(配列受け取り) def some_method(*a) p a…

DBスペシャリスト勉強メモ

候補キーを全て洗い出す問題 ※推移的関数従属や部分関数従属があればそれも記載するような問題 言葉に馴染みがないので何を問われているのかがそもそもわからなかったりした。 候補キーとは 候補キーとは「主キーとなる候補」の事らしい。 「主キーになる候…

【rails】コード読んだメモ

rubyのコードリーディングの練習でrailsのコードを少し読んだのでメモ railsでのautoloadについて railsではActiveSupportというmoduleが使われていて、色々便利な機能を提供してくれているらしい。 その一つにActiveSupport::Autoloadがあって、これをexten…

【Rails】 Capybaraの使い方メモ

参考) https://www.rubydoc.info/github/jnicklas/capybara/Capybara https://github.com/teamcapybara/capybara https://qiita.com/morrr/items/0e24251c049180218db4 railsへのインストール Gemfilesへ追記し、bundle installでインストールする。 rails …

【Rails】RSpecの使い方メモ

参考: GitHub - rspec/rspec-rails: RSpec for Rails-3+ RSpec Expectations 3.8 - RSpec Expectations - RSpec - Relish インストール Gemfileに追記 # Run against the latest stable release group :development, :test do gem 'rspec-rails', '~> 3.8' …

Railsの開発環境とステージング環境をDockerを使って構築したのでメモ

Railsの開発環境とステージング環境をDockerを使って構築してみた。 注意:Docker周りインフラ周りについてエキスパートではないので本当にこれが要求を満たせているのかは不明 ディレクトリ構成 . ├── app │ ├── Dockerfile # webサーバー構築用 │ ├── conf…

【Docker】単なるUbuntuイメージを起動してすぐ終了させないようにするコマンド

直感的でないのですぐ忘れるからメモ docker run -itd ubuntu /bin/bash 接続するには docker ps でコンテナ名を調べて docker exec -it [コンテナ名] /bin/bash

【Django】ロギング設定について

いまいち使い方・設定の仕方がよくわからなかったので色々しらべた。 現状の知識をメモっとく。 Djangoで使われているロギング機構は、 別にDjango独自の機能ではなく、pythonの標準で用意されているloggingが使用されているという事のよう。 なので、特にDj…

webサーバーのファイルのパーミッション設定はどうするのがいいのか考えた

今まであまり意識して設定していなかったので考えた。 ※もともとeveryoneの権限設定を使ってwebサーバーにアクセスさせるように考えていたが、 ツッコミを受けて修正した。※ありがとうございます 2つ目のケース、開発者ユーザ(devuser)をWebサーバ用のグル…

pyenvでインストールしたpythonのpipでインストールしたuwsgiをwebサーバーで使用するための設定

webサーバー環境で実行されるuwsgiを、pyenvで入れたpythonのpipでインストールしたuwsgiにするにはどうすればいいのか考えた。 pyenvでインストールされたpython関連のコマンドを使うには予め export PYENV_ROOT="$HOME/.pyenv" export PATH="$PYENV_ROOT/b…

【Django】Custom Command と ArgumentParserの使い方メモ

DjangoでCustom commandの作り方とその時使うArgumentParserの使い方のざっくりメモ 参考) カスタム django-admin コマンドの実装 | Django documentation | Django ArgumentParserの使い方を簡単にまとめた - Qiita app_dir/management/commands/以下にフ…

ターミナル環境(zsh)の設定メモ

Ubuntuを開発環境にするにあたり、ターミナル環境の整備を行っている。 ググりながら良さげな設定をチョイス中。 知識不足でなかなか情報どおりの設定ができなかったりするが、少しずつ理解しながら設定していく。 zshインストール zshをインストール sudo a…

Git GUIクライアントツールからの脱却検討

git操作自体はgit cuiコマンドで行っているが、差分やtreeを見るためにSource Treeを使っている。 いちいちwindowを切り替えるのもめんどくさくなってきたので、CUI環境で完結出来るならそうしたいと思い検討中。 tigを使うとかなりの部分がGUIクライアント…

【C#】virtual, override, new

下記のようなコードを書きたいときがある。(staffに複数形はないらしいがとりあえず無視) Staff[] staffs = new Staff[2]; staffs[0] = new Alice(); staffs[1] = new Bob(); foreach(var staff in staffs){ staff.who_am_i(); } who_am_i()は自分の名前を…

【WPF】高DPIディスプレイの場合、Screenオブジェクトから取得するサイズはDPI仮想化の比率で計算し直す必要がある

高DPIディスプレイのノートと普通のディスプレイでデュアルディスプレイを設定しているような場合、wpfアプリでscreenのサイズが直感どおりに使えなかったのでメモ 環境例 例えば上記の高DPIディスプレイノートをprimalyディスプレイとして、普通のディスプ…

Ubuntuにてmacの英数・かなキーで日本語入力切り替えするための設定方法

macキーボードを認識させる デフォルトでは英数・かなキーおしても認識していなかったので下記設定を行った。 参考) https://qiita.com/koreyou/items/341e1fac95c72d9743ad sudo dpkg-reconfigure keyboard-configuration を実行して、下記を選択 Apple ア…

個人開発環境をUbuntuにすることを検討・検証中

現在個人開発ではmacbookpro 13インチ 2014を使っている。 なんとなく次のマシンを買うことを考えているが、macではないという選択肢もありかとUbuntuを検討している。 なぜか macやappleに依存しているのが嫌になってきた。 実際macはよくできていると思う…