プログラミング

プログラミングに関係する記事です。

herokuのstackをheroku-20にし、rubyのバージョンを2.6.6に上げました

herokuのstackをheroku-20にし、rubyのバージョンを2.6.6に上げました 安定稼働のために、herokuのstackをheroku-20にし、rubyのバージョンを2.6.6に上げました。 手順メモ 1、stackを上げる heroku stack:set heroku-20 2、rubyのバージョンを上げる@gemf…

rubyで書くテンプレートメソッドのメモ

テンプレートメソッドとは テンプレートメソッドとは、以下の2つのクラスによって構成するデザインパターン。 共通の処理を行う「抽象的なベースのクラス」 個別の処理を行う「具象的なサブクラス」 どういう時に使うのか 処理の流れがほとんど同じコードが…

S&P500の買い時がわかるLINEbotを作ってみた

登録はこちらから lin.ee 仕様 S&P500のRSIが、30を下回った場合と、70を上回った場合にLINEに通知する。 RSIとは RSI(アールエスアイ)とは RSIとは、買われすぎ、売られすぎを判断するオシレータ系と呼ばれるテクニカル指標です。一定の範囲内における、…

herokuのwoker dynoでworkerに複数のseleniumを起動させるとエラーが出る件を解決する

開発運用中のサイト www.suumo-de-aimitu.com sidekiqでworkerに複数のseleniumを動かさせるといろんなエラーが出る ちなみに、worker1つにつき1つのseleniumを起動させるようにするとエラーは出ない。 実行環境 heroku hobbyのwebとworkerを1台ずつ。 発…

Jenkinsのjobが「SCMのポーリングが実行」によって実行されないようにする

Jenkinsのjobが「SCMのポーリングが実行」で短い間隔で無限に実行される 原因はわからない。gitと連携しているので、git側の何かの更新を捉えてしまってjobが実行されるようになっているのかもしれない。 とりあえず無限に実行されるのを何とかしたい。 job…

RPC failed; curl 56 LibreSSL SSL_read: SSL_ERROR_SYSCALL, errno 60を解決する

やったこと rbenvでrubyのバージョンを変更したかった 変更しようとしたら以下のエラーが出た。 $ rbenv install 2.5.9 ruby-build: definition not found: 2.5.9 See all available versions with `rbenv install --list'. If the version you need is miss…

githubAPI経由でPRをmergeしようとするとOctokit::BadGateway 502エラーが出ることがあるので対応する

githubAPI経由でPRをmergeしようとするとOctokit::BadGateway 502エラーが出る rake aborted! Octokit::BadGateway: POST https://api.github.com/repos/merges: 502 - Server Error 出る時と出ない時がある 出る時の条件はわからないが、3回くらいリトライ…

デバッグするときの問題に対する2つのアプローチ方法

デバッグするときの2つの問題に対するアプローチ方法 「問題のある状況」と「問題のない状況」の差分を埋めていく 時系列で物事を並べたときにどこまで問題がなくて、どこから問題があるのかというのを確認する デバッグするときの2つの問題に対するアプロ…

heroku上のredisの容量がいっぱいになった時の挙動を設定する

heroku上のredisが落ちてしまう問題 暫定対処としては、redisが落ちたらdynoを再起動した。 spreadthec0ntents.com redisの容量がいっぱいになった時の挙動を設定する noeviction will return errors when the memory limit is reached. (リミットに達したら…

heroku上でSelenium::WebDriver::Error::WebDriverError: unable to connect to chromedriver [redisのip]が発生したらdynoを再起動させる

redisが落ちてSelenium::WebDriver::Error::WebDriverError: unable to connect to chromedriver [redisのip]が発生する dynoを再起動させると直る 根本的な解決のために調査する redisが落ちてSelenium::WebDriver::Error::WebDriverError: unable to conne…

Selenium::WebDriver::Error::SessionNotCreatedErrorの解決方法はChromeDriverとchromeブラウザのバージョンを合わせること

ローカル環境でエラーが出た エラー Selenium::WebDriver::Error::SessionNotCreatedError (session not created: This version of ChromeDriver only supports Chrome version 89 Current browser version is 92.0.4515.159 with binary path /Applications…

herokuでworker dyno(jobサーバー)を建て、railsアプリのsidekiqを動かす

手順 heroku管理画面から「heroku redis」を追加する sidekiqをredisに接続する railsプロジェクト直下に「Procfile」を作成し各サーバーの起動設定を記述する 上記の設定をデプロイ後、herokuにworker dynoを作成する 参考 手順 heroku管理画面から「heroku…

herokuのdynoにサブドメインを設定する

herokuのhobbyプランのdynoにはルートドメイン(Aレコード)は設定できない IPアドレスはない。 無理やり設定する方法もあるが、SSLエラーが出ることがある模様 サブドメインを設定するのが無難か サブドメインを設定する手順 お名前.comのDNS設定が完了しな…

メモリ省力化設定を入れて「Selenium::WebDriver::Error::UnknownError: unknown error: session deleted because of page crash」が出ないようにする

前回記事 spreadthec0ntents.com 対応 seleniumの引数に省メモリ化するための引数をつける 例 options = Selenium::WebDriver::Chrome::Options.new # メモリ省力化設定 # コマンドラインからchromeを開く。GUIよりこっちの方が軽い。 options.add_argument(…

SUUMO掲載賃貸物件の初期費用の見積もり依頼が一括で出せるサイトを作っている

SUUMO掲載賃貸物件の見積もり依頼が一括で出せるサイトを作っている サイトを作ろうと思った動機 サイト制作の進捗 URL入力フォーム 見積もり依頼フォーム作成画面 公開までにやること SUUMO掲載賃貸物件の見積もり依頼が一括で出せるサイトを作っている 作…

技術的な記事を書くときは読んだ人が現象を再現できるように書くこと

技術的な記事を書くときは読んだ人が現象を再現できるように書くこと

引数がハッシュのような形になっているものはブレースをつけてもよい

例 こうしてもいい。 I18n.t("i18n_key", {name: "hoge", locale: en}) なので上記の例だと、i18n.tの第二引数にハッシュを渡せば、動的に文中に埋め込む値を変えることもできる。

JavaScriptで経過時間をリアルタイムで表示するサンプル

サンプルコード // HTMLが読み込まれた後に以下の処理を読み込む window.onload = function(){ function Time_exchange() { now_time = new Date(); sec_present = (now_time.getTime()/1000).toFixed(0); // 経過時間の始点 sec_start = (Date.parse("2021-…

rails6にredisを導入してheroku上でも動かす

rails側の設定 gemの導入 config/initializers/redis.rbを作成し以下を書く redisを使うクラスでredisオブジェクトを作る redisオブジェクトに値を入れる処理を作る ローカル環境での設定 herokuでの設定 herokuの管理画面からheroku redisをインストール サ…

gemをプロジェクト直下にインストールしない方法

gemがプロジェクト直下にインストールされる原因 bundle install --path vender/bundleとしたから。 gemをプロジェクト直下にインストールしない方法 プロジェクト/.bundle/configの「BUNDLE_PATH: vendor/bundle」を削除する。 削除はbundle installで使用…

rails6でrails newした後に入れるgemとその導入方法まとめ

view系 slim インストール htmlをslimに変換する 参考 bootstrap 導入 参考 デバッグ系 pry-rails 導入 参考 テスト系 rspec 導入 参考 文法系 rubocop 導入 参考 view系 slim インストール gem 'slim-rails' htmlをslimに変換する gem 'html2slim' for i in…

rails5でDBの代わりにymlを使って値を記録・更新する方法

DBの代わりにymlを使って値を記録・更新したい 複雑なデータを記録したいわけじゃないので、DBは使いたくない。 サンプル 前回の起動時間からn日経ってたらtrueを返す例 class TimeKeeper require 'yaml' def last_acted_at data = open('./lib/time_keeper/…

rails6でdeviseを使ってユーザー機能を実装してみた

本記事は「メディアサイトを作る」の作業の一環です spreadthec0ntents.com やったこと deviseを使ってユーザーの作成、ログイン、ログアウトなどの機能が実装できる。 やったこと一覧 deviseのインストールと設定 userクラスの設定とテーブル作成 dotenvの…

rails6でメディアサイトを実装する

rails6でメディアサイトを実装する 現在、rails6でメディアサイトを実装している。実装中は各実装フェーズごとに記事を書いていく。本記事ではそれらの記事をまとめた目次的な物である。 実装しながら随時加筆していく。 やったこと rails6の環境を構築する …

gemをvendor/bundle以下にインストールしない

問題 以下の手順でrailsのプロジェクトを立ち上げた際に、以下のコマンドによってgemがvendor/bundle以下にインストールされてしまい、gemを追加するごとにプロジェクト配下に膨大な差分が生まれてしまう。 膨大な差分が生まれるとgitで差分を確認し辛くなる…

Ruby on Rails 6の環境を構築してみた(macOS)

やったことまとめ brewのアップデート Ruby2.6.2のinstallとglobal設定 bundlerのupdate railsプロジェクトの作成 yarnのインストール webpackerのインストール Webpackerで使うNode.jsのバージョンを上げる ハマったこと(解決策は「参考」のページを参照)…

3wayマージでコンフリ解消をよりわかりやすくできる

3wayマージの利点 コンフリ状態のコードが、「マージの起点コミット」「マージさせたいコミット」「2 つのコミットの最近共通祖先となるコミット」で見れること 例えばこんな感じ。 <<<<<<< マージの起点コミット def hoge puts "hoge" end ||||||| 2つのコ…

Arctic Code Vault Contributorに選ばれていた

Arctic Code Vault Contributorとは qiita.com いつの間にか対象になっていた 保存対象になったレポジトリは全てクソコードが入ったものだけどなんだか嬉しい。。

herokuのclearDBにsequel proでアクセスする方法

herokuのclearDBにsequel proでアクセスする方法 herokuの管理画面から「Config Vars」を開く heroku管理画面: https://dashboard.heroku.com/apps/アプリ名/settings Config Vars: 環境変数DATABASE_URLの中身を確認する 以下のような形になっている値が…

herokuでclearDBを使う時は手動でmigrationする

herokuの管理画面からのデプロイにはmigrationは含まれていない なので手動で実行する。 heroku run rake db:migrate -a アプリ名 ちなみにrake db:createは実行される模様。。