とーますメモ

Ruby on Rails / Goなどの学習メモ

【Ruby】MacでRailsが突然動かなくなった話

原因が何だったのか定かではないが、 恐らくXcode関係かbrew関係のコマンドを弄ったかが原因で Railsを起動しようとしたところ以下のようなエラーが表示された。 $ bundle exec rails s ... LoadError - library not found for class Digest::SHA1 -- digest…

【Ruby】Rubyバージョンが影響して、小数点計算が合わなくなることがある

以下の記事を見るとどうやらrubyのバージョンが2.4未満だとround関数が正しい値を返さないことがあるらしい。 irb(main):001:0> 1024.975.round(2) => 1024.97 irb(main):002:0> 1023.975.round(2) => 1023.98 Ruby - roundで四捨五入にならない場合の理由を…

【Rails】Quickbooks Web Connector(QBWC)を使って、RailsとQuickBooks Desktopを接続してみた

中小企業会計ソフトの分野で、日本ではfreeeやマネーフォワードが普及しているが 海外ではQuickbooksが広く普及している。 このQuickbooks内に外部からデータをRailsアプリ経由で追加することで入力作業を省き、業務効率を上げようという話になった。前提と…

【Python】Flaskの本番環境について調べてみた

Flaskにはbuilt-inサーバがついているので、開発には全く困らないが 公式サイトを見ると以下のように記述があるので、本番環境は別に構築する必要がある。 While lightweight and easy to use, Flask’s built-in server is not suitable for production as i…

【Vue.js】v-forの配列を削除すると、最後の行が消される問題

v-forで配列内をループで回して、表示させており その中で以下のように、削除を行う機能を実装したのだが 削除すると選択した行が消されず、最後の行が消されるという変な現象が発生した。[HTML] <tbody> <tr is="sample-component" v-for="(item, index) in items" v-bind:index="index" v-bind:item="item" :key="index" v-on:remove="remove_item" ></tr> </tbody> [JS] this.items.splice(index, 1);原因を調べてみると…

【Vue.js】v-forの配列を削除すると、最後の行が消される問題

v-forで配列内をループで回して、表示させており その中で以下のように、削除を行う機能を実装したのだが 削除すると選択した行が消されず、最後の行が消されるという変な現象が発生した。[HTML] <tbody> <tr is="sample-component" v-for="(item, index) in items" v-bind:index="index" v-bind:item="item" :key="index" v-on:remove="remove_item" ></tr> </tbody> [JS] this.items.splice(index, 1);原因を調べてみると…

【Vue.js】v-forの配列を削除すると、最後だけが消されていく問題

v-forで配列内をループで回して、表示させており その中で以下のように、削除を行う機能を実装したのだが 削除すると選択した行が消されず、最後の行が消されるという変な現象が発生した。[HTML] <tbody> <tr is="sample-component" v-for="(item, index) in items" v-bind:index="index" v-bind:item="item" :key="index" v-on:remove="remove_item" ></tr> </tbody> [JS] this.items.splice(index, 1);原因を調べてみると…

【MacOS:Catalina】"default interactive shell is now zsh" を非表示にする方法

とりあえずはbashを継続して使用したいのにターミナルを開くたびに、タイトルのメッセージが表示されるのは鬱陶しいので情報を探したところ以下の記事がヒット。www.addictivetips.com単純に以下を「.bash_profile」に書けばOK export BASH_SILENCE_DEPRECAT…

【Rails】migrationファイル実行時に同時にSQLを実行する方法

作成するmigrationファイルの処理は、1つのカラムを追加するというシンプルな処理のみを行う。 しかしdefault値は設定せず、全レコード上の作成されるカラムには、特定の値を埋め込みたいという要件があったため migration実行時にカラムを追加後、その特定…

【MySQL】フランス語などのアクセントが正しく取得できない。

以下が参考になった。mysql – selectクエリを使用してアクセント記号のない文字でカラムをフィルタリングする方法 - コードログ utf 8 - How to conduct an Accent Sensitive search in MySql - Stack Overflow以下のように「COLLATE utf8_bin」を付ければ良…

【Rails】ActiveRecordの属性メソッドを上書きする

使用しているWebアプリの1つに Railsが管理しているDBではない、他のDBからのデータを取得する必要があった。当たり前の話だが、Railsではapplication.rbのtime_zoneの設定のため 日付取得の際に自動で、タイムゾーン変換が行われる。thoames.hatenadiary.j…

【Rails】難しすぎる!? Timezone(タイムゾーン)についてのメモ

自分用メモ。大事なことは全て以下のページにあった。 qiita.com qiita.com上記の内容から重要なポイントを抜き出すと以下の通り。 1)タイムゾーンの設定 システムまたは環境変数のタイムゾーンとapplication.rb(time_zone)が同じならば、 Time.nowでもTim…

【Rails】サービスクラスについて自分なりにまとめてみた

最近、設計した画面が4〜5個のモデルが絡む画面があった。 その時コントローラー内で実装した場合、肥大化することが容易に想像でき、 またどれか一つのモデル内で実装する処理としては複雑なため「サービスクラス」が必要なのではないかと思い調べてみた…

【Rails】Form Objectを使ってみた

Formオブジェクトについての説明は省略。自分なりの定義方法は以下ファイル名: XXXX_form.rb クラス名: XXXXXForm 配置ディレクトリ: app/forms/[参考] 【Rails】FormObjectを使ってほしい - Qiita

【Rails】Rails4で親モデル用のサブディレクトリを作成し、STI(単一テーブル継承)をやってみる

サブディレクトリの作成 サブディレクトリを配置する場所は app/models内。ディレクトリ名はここでは「app/models/parents」とした。Rails4ではmodels直下しか読み込まれないので 「config/application.rb」内に以下を追加し、models内のサブディレクトリ内…

【Laravel】Mac上で環境構築をしてみる

[前提] ※1 homebrewが既にインストールされている ※2 DBはMySQLを使用する Composerのインストール Railsでいうgemみたいなパッケージ管理ツールであるComposerをインストールし ComposerからLaravelをインストールインストール $ brew install composer 確…

【CakePHP2.x】メンテナンスページを作成する方法

今更だが、古いCakePHP2.x系のソースを修正する必要があり、 メンテナンスモードを簡単に実装するため、以下のプラグインを使用。github.comただ、TOPページはCakePHP3.x系のものっぽいので、 branchesをたどり、以下の2.x系のソースをダウンロードして使用…

【Python】Pythonを学習してみて思ったこと

自分用メモ。普段はRubyを使っているので、 以下の本を読みながら思ったことをメモしていく。 なにかの言語を既に触っているんだったら、1日あれば十分読める。独学プログラマー Python言語の基本から仕事のやり方まで作者: コーリー・アルソフ,清水川貴之…

【Python】簡単な開発環境構築

Pythonの基本環境構築は前回の記事で書いたので、その続き。 thoames.hatenadiary.jpアプリの起動を逐一「pipenv shell」=> 「python app.py」とかするのが面倒くさいので Pipfileに以下のように書いておけば、「pipenv run start」とすることでアプリを一発…

【Python】Python初心者がMac上で環境構築をしてみる

homebrewが既に入っており、Python3環境を作成するのが前提。新しい言語を使用するときに、自分がまず調べることは以下の2つ。1)デバック方法の把握 2)グローバル環境を汚染せず「プロジェクト毎の環境(バージョン及びパッケージ)」が構築できるツー…

【Python】デバック方法について

自分用メモ。Rubyのbyebugみたいなやり方を探していたら、 以下の一行を入れれば良いだけ。 import pdb; pdb.set_trace()でも長すぎる・・・JetBrainsのPyCharmやVSCode入れれば、上記のコード入れなくても ブレークポイントをエディタ上でつけられるので良…

【WordPress】Wordmoveで、ローカルのDocker環境をProductionのDocker環境へpushする

以前の記事の続き。 thoames.hatenadiary.jp以下がプロダクション環境のdocker-compose.ymlの設定。 本当は細かく各ミドルウェアのバージョンを指定したほうが良いが 今回は省略。またこの記事ではWordMoveのmovefile.ymlの説明も省略する。 version: "3" se…

【Docker】docker-composeで立ち上げたphpmyadminコンテナのbashに入れない

phpmyadminコンテナ内で使用されているconfig.inc.phpの中身を見たかったので 以下のコマンドでphpmyadminのコンテナに入ろうとしたが入れなかった。 $ docker exec -it [container_id] /bin/bash ※ちなみにphpmyadminのイメージは公式の「phpmyadmin/phpmya…

【セキュリティ】Ubuntu上で、Auditを使用しファイル監視を行ってみた。

以下のサイトがすごくまとまっている。 第7章 システム監査 - Red Hat Customer PortalAuditを使用することで、システム上のファイルやディレクトリの読込/書込情報を追跡し、監視ログを出力することができる。 またそれに付随するログ検索ツール(ausearch…

【cron】改めてcronの設定方法について勉強し直してみた

今までなんとなく使ってきたが 以下の3つのパターンで設定することができるらしく 何が違うのかはっきりさせたかったので、学習し直すことにした。1)/etc/cron.(daily|weekly|monthly)/内に設定する方法 2)crontabコマンドで設定する方法 3)/etc/cron…

【SSH】ログイン時にSlackに通知する

下記のサイトさんのやり方を参考に作成 [Linux]SSHログイン時にメール/Slackで通知する – 備忘録の覚書以下の"XXX.XXX.XXX.XXX"箇所は信頼できるIPを設定 半角スペースを入れることで複数指定可能。 e.g.) "XXX.XXX.XXX.XXX YYY.YYY.YYY.YYY"{{ slack_login_…

【Lynis】[ACCT-9622] プロセス・アカウンティングの設定をする

Enable process accounting [ACCT-9622] https://cisofy.com/lynis/controls/ACCT-9622/ プロセス・アカウンティングを行うことで ユーザー自身が自由に編集・削除可能な history とは別で、詳細なコマンド履歴を残すことができるようになる。 ユーザがコマ…

【Lynis】表示された警告や推奨設定の詳細を調べるコマンド

以下のように[show details テストID]でそのテストの詳細が表示される。 $ sudo lynis show details PKGS-7392 [参考] How to Perform Security Audits With Lynis on Ubuntu 16.04 | DigitalOcean

【Lynis】Suggestionsの項目を無視する方法

以下の記事を参考 How to Perform Security Audits With Lynis on Ubuntu 16.04 | DigitalOcean 設定ファイルを編集 $ vi /etc/lynis/custom.prf 以下は設定例 # Lines starting with "#" are comments # Skip a test (one per line) # This will ignore sep…

【Lynis】[BOOT-5122] シングルユーザモードでもログインできなくする

自分用メモ。以下方法を行うことでデータの損失その他あらゆる不具合、不都合が生じた場合についても、一切の責任を負いません。 あくまでも自己責任でお願いします。 Set a password on GRUB bootloader to prevent altering boot configuration (e.g. boot…