Simple minds think alike

より多くの可能性を

GitHub Actionsで実行中のworkflowを自動的にキャンセルする

時間単位で課金されるGithub Actionsです、新しいワークフローが実行された時、古いワークフローは自動キャンセルされるようにしてみました。2回連続でworkflowを動くと、古い方は自動的にキャンセルされます。

github actionsを使った electron アプリインストーラの自動ビルド (action-electron-builder)

Electronは、MacOSやWindowsといったマルチプラットフォームのデスクトップアプリを簡単に作れますが、複数プラットフォームのアプリを作れる分、ビルド/署名といった作業が手間になっていました。Github Actionsを使ってタグ付けした時にGithub releasesに…

RailsプロジェクトでVisual Studio Code Remote Container使ってみた

コンテナ内のファイルシステムを直接触れるVisual Studio Code Remote Containerを使い始めたのですが、手間を減らしつつも便利開発できていそうな感じがしています。 シンプルなRuby on railsアプリケーションを例に取って導入方法を紹介したいと思います。

【Golangスクレイピング】 Colly と goqueryを一緒に使うには

Golangでスクレイピングする時はとりあえずgoquery使っておけば良さそうーと思って、あまり別のライブラリを使おうとしてこなかった。けれど、高機能なスクレイピング用ライブラリでCollyというのがあって、スクレイピング処理の中でgoqueryのHTMLElementを…

Herokuで動いているGolangプロジェクトをDockerコンテナで動くように

前回の記事で、Herokuで動くようになったGolangプロジェクト(フレームワークはEcho)を今回Dockerコンテナで動くようにしてみました。 simple-minds-think-alike.hatenablog.com 前提 Dockerfileの作成 実行バイナリファイルを作るイメージ 変数ENV_CGO_ENABL…

Golang EchoプロジェクトをHerokuにデプロイしてみた (依存パッケージ管理: go module)

Go modulesが入って、GolangのHerokuへのデプロイがだいぶ簡単になっていたので、備忘録のためプロジェクトの作成から確認までの手順を書いておきます。 環境 前提 ローカルで動くまで プロジェクトディレクトリ作成 簡単なリクエストを受け付けるGolangのコ…

Zendesk widgetをマルチブランド対応せずに複数Webサイトで活用するためのカスタマイズ方法 (ヘルプセンターだけ消したい)

Webサイトを運用しているとユーザの抱えている課題を受け付けるためにも、お問い合わせ機能を作りたいという要望が出てますよね。 そうした時に 低予算で導入できる 導入が容易 といったメリットがあるZendeskを使うことが選択肢として挙がるかと思います。 …

Railsプロジェクトでvue.js + typescriptを使うためのts-loaderの設定

Webpacker gemを導入したRailsプロジェクトにtypescript+vue.jsを導入した時に調べたことのメモ記載しておきます。 TypeScript/vueのインストール/設定 Vue-loaderの動き PnpWebpackPlugin.tsLoaderOptionsについて Pnpとは? PnpWebpackPlugin.tsLoaderOptio…

Pull Requestがマージされた時に自動でブランチを削除するようにしてみた

GithubでPull Requestがマージされた後ブランチを毎回削除するのが面倒だったので、自動で削除されるようにしてみました。 また、Git-flow運用している場合、develop,stagingのようなブランチからPRを出す場合があるので、これらのブランチからPul lRequest…

Heroku SSL Endpoint から Automated Certificate Managementへ移行してみた

Herokuの公式ドキュメントを読むとSSLを導入する方法は Automated Certificate Management (ACM) Heroku SSL SSL Endpoint の3種類がありますが、Automated Certificate Management (ACM)にすると Let's EncryptのSSL証明書を自動更新してくれるので、手動更…

Rails権限管理ライブラリ cancancan gem バージョンアップ(2.x => 3.x)の際の対応と注意点

Ruby on rails の権限管理ライブラリの中で一番ダウンロード数が多いGemであるcancancanのv3.0が2019年4月にリリースされました。 仕事のプロジェクトで使っているcancancanのバージョンは随分前にv3.0に上げていたのですが、結構大きな変更が入っていること…

Rails bulk insertのパフォーマンス比較 (Railsのinsert_allとactiverecord-import)

Railsでbulk insertする方法は主に Rails6のinsert_all activerecord-import gemのimport の2つの方法があります。パフォーマンス観点では、どちらが良いのか知りたくて検証してみました。 activerecord-importに関しては、READMEを読む限り、いくつかimport…

Rails6アプリのデプロイ時にヘルスチェックに失敗した時にやったこと

先日、稼働しているRailsのWebアプリケーションをRails5.2から6.0に上げて本番デプロイしようとした際に、ヘルスチェックに失敗していてデプロイできない状態になっていたのですが、そのときに対応した内容を書いてみます。 何が起こったか まず、AWS EC2イ…

Rails と Firebase Authentication でJWT認証実装してみた

最近スマホアプリの開発は大体firebaseを使うようになっていて、認証もfirebase authenticationを使っておけば、実装がすごく楽になっていると感じます。 既にRuby on railsでwebアプリケーションを開発していて後からJWT認証を付けようとするとちょっと面倒…

Golangとginのリクエストハンドリングについて

最近仕事で使い始めた Golang ( net/http 標準ライブラリ)とWebフレームワーク Gin のリクエストハンドリングについてどのような仕組みで行っているのかをまとめてみます。 前提 Golang マルチプレクサとは goデフォルトのマルチプレクサ goカスタムのマルチ…

Kubernetesクラスタを作ってみた with ラズベリーパイ〜上品なファブリックケーブルを添えて〜

一家に一台Kubernetesクラスタの時代が到来したとちらほらと聞こえ始めてきたので、いまさらながらRaspberry PIでKubernetesクラスタを作ってみました。 Raspberry PIのKubernetesクラスタであれば、EKSのようなクラウドベンダーが提供しているサービスでは…

【Rails】ビューに date_select や date_time_select を使ったフォームで UnknownAttributeError が発生する場合の対処

利用ケースは少ないと思いますが、ActiveRecord::Base を継承しないフォームと date_select や date_time_select を使ったビューの組み合わせだと、フォーム初期化時に UnknownAttributeError が発生していて、原因と対処方法がよく分からず若干ハマってしま…

Github actionsでRuby on railsプロジェクトのRspec / System test CIを動くようにしてみた

8月8日にGithub actionsでCI実行できるようになったと発表があってから早くも1ヶ月、先日ようやくbetaの申し込みが通って触れるようになったので、Ruby on railsのプロジェクトでRspecが動くようにしてみました。 作ったプロジェクトはこちらです。よかった…

kiib.ioのQuefrencyで自作キーボード初心者がキーボード作ってみた

秋葉原にある自作キーボード専門店「遊舎工房」さんに行って、キーボードを作ってきました。お店の雰囲気としては、色々なキーボードが飾ってある電子部品のお店みたいな感じでした。 keeb.ioのQuefrencyというPCB(Printed circuit board:プリント基板) …

Web開発に選ぶKubernetes ローカル開発支援ツールまとめ (minikube, Kind, microk8s, Docker Desktop)

Kubernetes使って普段のRails Web開発を行いたいなと思って、Kubernetes ローカル開発支援ツール(minikube, kind, microk8s, Docker Desktop)のどれが良いのか調べてみました。 将来的にはローカル環境のコンテキストから本番環境に切り替えるだけですぐに…

kubernetesの認証と認可、サービスアカウントとユーザーアカウントの概念

Kubernetesのドキュメントを読んで、認証と認可、サービスアカウントとユーザーアカウントの概念をまとめてみました。 kubernetes.io 認証と認可 認証の対象(サービスアカウントとユーザーアカウント) 認証方式 Service Account Tokens Webhook Token Auth…

kubeadminでAWS環境にkuenetesクラスタを作ってみた - マスターノード・ワーカーノードの構築 (2/2)

前回の記事の続きです。 前の記事に引き続き、ubuntuユーザでログインして実行したコマンドを記載していきます。 以下の公式ドキュメントを参照して、マスターノードを構築しました。 kubernetes.io 構成図 マスターノード コントロールプレーンノードの初期…

kubeadminでAWS EC2環境にkuenetesクラスタを作ってみた - 各ノード共通の設定 (1/2)

kubernetesのドキュメントを読んでAWS環境にkuenetesクラスタを作ってみました。 基本的にはクラウドプロバイダーから提供されているkubernetes環境を使うことになるので、コマンドを叩いてクラスタを作ることはないと思いますが、内部で何をしているかを把…

AnsibleでEC2にRuby環境(rbenv, ruby, bundler)をインストール

以前まとめたAnsibleでのAWS環境構築のPlaybookに続いて、Ruby環境(rbenv, ruby, bundler)もインストールできるようにしてみましたので、Playbookの書き方をまとめておこうと思います。 構成 環境 Ansibleのインストール Ansible定義ファイルのディレクトリ/…

AnsibleでAWS環境 (VPC、セキュリティグループ、EC2、RDS)構築の自動化

パフォーマンス検証環境を新たに作りたい場合など柔軟にAWS環境の構成を何度も作り直したい時、構成管理ツールを使って自動化すると非常に便利だと感じています。 同じミドルウェアの設定の環境を迅速に作れる。 サーバの環境、ミドルウェアの設定内容をコー…

AWS CLI、Ansibleのインストール方法 (Ubuntu 18.04)

構成管理ツールAnsibleのインストール方法を記載していきます。 AnsibleでAWSの環境構築も行えるようにAWS CLIのインストールも行っていきます。 ローカル環境のAWS CLIを用いてAWS環境を構築できるようにするので、ローカル環境で以下のインストールを行っ…

JMeter で Rails のCSRFトークンを取得する方法

JMeterでRailsアプリケーションの負荷テスト作ると、サーバ側にCSRFトークンが渡ってないために、フォームを使った登録処理のテストが失敗します。 それを回避するために、JMeterでCSRFトークンの取得し、登録操作などのリクエストにトークンを渡す必要があ…

JMeter を使った ActionCable ( WebSocket ) 負荷テストの設定方法

最近、Railsアプリケーション開発でもReact.jsやVue.jsなどを使ったフロント開発の案件が増えてきました。 比較的規模が大きなシステムでは リリース前にどの程度の高負荷まで耐えられるか リリース後でもステージング環境でどの程度の高負荷まで耐えられる…

JMeter WebSocket Samplersのインストール方法

JMeter WebSocket Samplers は、JMeterでWebSocket通信を使った負荷テストを行うための拡張機能です。 以下の2つをインストールすることで利用可能になります。 JMeter WebSocket Samplers Plugin Manager 環境 JMeter 5.1.1 ( 未インストールの場合はこちら…

JMeter レスポンスの結果で操作を条件分岐する設定

負荷テストのシナリオを考えた時に、例えば検索画面で検索を行い、その結果に表示される件数が0件でなければ、詳細画面(検索結果の最初の1件目)に遷移するなどの条件に応じたシナリオのテストを作る必要が出てくるかと思います。 そのようなシナリオのテス…