とーますメモ

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

【fail2ban】WordPress用の独自フィルタ作成

以下のログに対応したものを作成する。・wp-login.phpに対してPOSTをリクエストを送っているもの※ 管理者のみがwp-login.phpするものなら良いが、不特定多数(woocommerceなど)が利用する場合は wpのフィルター機能と連携して作成するのが良いと思う。 fail…

【fail2ban】基本的な使い方

概要 Fail2banは、誤解を恐れずに言うと1)様々な種類のログファイルを監視して、 2)特定のパターンにマッチしたログ情報(主にアクセス元IP)を元に 3)アクション(主にiptablesで接続拒否)を行うためのツール。2)の特定のパターンにマッチさせる設…

【Nginx】OCSP Staplingについて

Nginxのエラーログを見てたら「OCSP_basic_verify() failed・・・」というエラーが出ていたので調べてみた。OCSP Staplingとは何か?の説明については以下のサイトの説明がわかりやすい。 OCSP Stapling nginx で OCSP Stapling (RapidSSL) | | 1Q77 How To …

【fail2ban】Ubuntu 18.04上で単純なsshdフィルターのみ使用しているのに、IPがbanされない現象

結論から言うとbackendに、pollingを指定していたのが原因だった。 ちなみにFail2banのバージョンは「v0.10.2」 backend: 対象のログについての指定。 auto, pyinotify, gamin, systemd, pollingの5つから選択可能。 systemdを選択すると、systemdのjournal…

Amazon LightsailでSSL設定をするときに注意すべき点

かなりハマった。 Amazon Lightsailには簡易ファイヤーウォールがあり、デフォルトだと22番と80番しか空いてないため ufwなどで443を開けてしまっていても、この簡易ファイヤーウォールのせいで、443が遮断されてしまう。注意してほしい。

【Chrome】httpのアドレスを入力してるのに、強制的にhttpsでリクエストされてしまう現象を止める方法

以下参考 How to stop an automatic redirect from “http://” to “https://” in Chrome - Super Userchrome://net-internals/#hstsを開いて、 「Delete domain security policies」の項目に、対象のURLを入力して、Deleteボタンを押せば強制的にhttpsリクエ…

【Ansible】Ubuntu 18.04でのMySQL設定

MySQLの設定ファイルであるmy.cnfの場所の確認方法 $ mysql --help | grep my.cnf /etc/my.cnf /etc/mysql/my.cnf ~/.my.cnf 左から順に読み込まれる。 Default options are read from the following files in the given order: /etc/my.cnf /etc/mysql/my.c…

【Ansible】Githubのプライベート・リポジトリからGit cloneができない!!!

結論から言うと以下の流れで解決。1)ssh-agentの設定 2)ansible.cfgの設定 3)ansible taskの設定 1) ssh-agentの設定 以下のサイトにまとまっているので、そのとおりに対応。 qiita.comこの設定を行うことで、ssh接続時のパスフレーズ入力を省略する…

【Ansible】Nginx + Gunicornの設定

Nginx + Gunicorn + Flaskの環境構築を行った際のメモ。流れは、Client => Nginx => Gunicorn => FlaskNginxとGunicornの接続については以下のサイトが参考になった。 Nginx + Gunicorn + Django + Aurora (MySQL) の本番環境をAnsible Playbookで構成する -…

【Git】中身だけをcloneする方法

以下のように「.」を追記するだけ。 $ git clone [git_url] . ただし、git cloneを行うディレクトリは「空」である必要がある。

【SSH】VPS上でGithubからPullするときの設定

CI/CDの設定とかは、とりあえず忘れて単純にGithubにSSH経由で接続して、リポジトリをPullするまでの設定 ちなみに以下の環境があり、ローカルでの秘密鍵(id_rsa)と公開鍵(id_rsa.pub)がある前提。[開発マシン(Mac)] [本番サーバ] [Github]いろんなサイトを…

【Flask】HTTPS環境で、Ajaxを使用するページを開いたら、エラーが出た。

件名の通り、以下のようなエラーが出た The page at 'URL' was loaded over HTTPS, but requested an insecure XMLHttpRequest endpoint 'URL'. This request has been blocked; the content must be served over HTTPS.原因はスラッシュ漏れ。FlaskもDjango…

【MySQL】SQLAlchemy内でMySQLの全文検索を試めしてみた

MySQLの設定は以下を参考 thoames.hatenadiary.jp 検索対象のインデックスがつけられる単語の最小長と最大長の設定 InnoDBなら「innodb_ft_min_token_size」、MyISAMなら「ft_min_word_len」で最小長を設定 InnoDBなら「innodb_ft_max_token_size」、MyISAM…

【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系のソースをダウンロードして使用…