MENU

プログラミング

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

2022 年 11 月 28 日からのherokuが有料化に伴い、2つのサービスを停止します

ランキング参加中起業家・投資家・倹約家 2022 年 11 月 28 日以降からherokuのサーバーを無料で使えなくなる herokuの有料化に伴い、2つのサービスを停止します サービス停止後はソースコードを公開する 2022 年 11 月 28 日以降からherokuのサーバーを無…

railsでROW_FORMAT=COMPRESSEDのオプションがついてるmigrationでこけた場合の対処

# エラーが出る $ rails db:migrate Caused by: ActiveRecord::StatementInvalid: Mysql2::Error: Table storage engine for 'table' doesn't have this option: CREATE TABLE `table` (`id` bigint unsigned NOT NULL AUTO_INCREMENT PRIMARY KEY, `id` var…

macosにmysql5.7をhomebrewでインストールする手順

$ brew update $ brew install mysql@5.7 # インストール成功 $ mysql --version mysql Ver 14.14 Distrib 5.7.38, for osx10.16 (x86_64) using EditLine wrapper # my.confを編集 $ find /usr/local/Cellar/mysql@5.7/5.7.38/ -name "my*.cnf" /usr/local/…

dockerコンテナのmysqlとredisのバージョンを変更する

本記事は以下に移転しました。 zaitaku-tushin.com

dockerで起動したmysqlDBにrailsを接続する設定

dockerでmysqlDBだけ起動させてrailsから接続したい 以下の理由からやってみた。 dockerでrailsの起動に使うミドルウェア一式を立ち上げると、起動に時間がかかったり、動作が重かったりしたから。 プロジェクトごとに異なるバージョンのmysqlを使っており、…

rubyの||=とinstance_variable_defined?の違い

調べたきっかけ 結論 使い分け 参考 調べたきっかけ プロジェクトのコードに、メモ化を行う上で「||=」と「instance_variable_defined?」を使っている部分があった。 これらの違いはなんなのか、気になったので調べてみた。 結論 ||=は結果がnilだった場合は…

modelを経由しないでSQLでDBに直接レコードを作れる

やり方 # 接続するDBのconfigを読み込む conf = Rails.configuration.database_configuration[Rails.env] # DBと接続する ActiveRecord::Base.establish_connection(conf) # クエリを実行する ActiveRecord::Base.connection.execute("INSERT INTO~") 使い所…

スペースを押している間だけいい感じの間隔で弾が発射できる

概要 unityで作る2dシューティングゲームで、自機から「スペースを押している間だけいい感じの間隔で弾が発射できる」スクリプト。 発射間隔を調節する処理を入れないとすごい勢いで弾オブジェクトが生成されてしまうので注意。 スクリプト using System.Col…

Unity学習メモ

Sceneをロードする キー入力の受付 衝突判定 オブジェクトの複製(prefab) Sceneをロードする 画面を切り替える。 // シーンのロードをするときに必要な宣言 using UnityEngine.SceneManagement; SceneManager.LoadScene("読み込みたいScene"); キー入力の…

レビューがしやすいように不具合修正PRの概要に書くこと

いいPRの概要の書き方をしている方を見かけたのでメモする。 不具合修正PRの概要に書くことは以下の3つ。 不具合の内容 不具合の原因 不具合の解消方法 1は、大体いつも書くPRの「概要」と同じ要領で書く。 2は、3をしなければならない根拠として書く。 …

条件分岐の中の重複コードをまとめる

以下のように条件分岐の中に重複コードを書いてしまいがちなので気をつける。 if 条件 hoge = "ほげ" fuga = "ふ" + "が" else hoge = "ほげ" fuga = "ふがが" - "が" end 上記の重複箇所は、「 hoge = "ほげ"」と「fuga =」。 重複箇所をなくして以下のよう…

rmagick -v '2.16.0'がインストールできない場合の対処

rmagick -v '2.16.0'がインストールできない エラー have_header: checking for wand/MagickWand.h... -------------------- no "clang -E -I/Users/ore/.rbenv/versions/2.3.1/include/ruby-2.3.0/x86_64-darwin19 -I/Users/ore/.rbenv/versions/2.3.1/incl…

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を作ってみた

使い方 仕様 RSIとは RSI(アールエスアイ)とは 活用方法 作ったきっかけ 使い方 以下のURLから、「Go49くん」を友達追加するだけ。 lin.ee 仕様 S&P500指数が以下の状態になったときに通知する。 ・RSIが、30を下回った場合と、70を上回った場合。 ・直近3…

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

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

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

本記事は以下に移転しました。 zaitaku-tushin.com

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

本記事は以下に移転しました。 zaitaku-tushin.com

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ブラウザのバージョンを合わせること

本記事は以下に移転しました。 zaitaku-tushin.com

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」が出ないようにする

本記事は以下に移転しました。 zaitaku-tushin.com

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…