ruby

Program & Service

カジノのルーレットシミュレータを書いてみました

概要 ダズンベット法を使うと勝ちやすいとか書いてあるので実際にプログラムを書いて検証してみました。 「勝率が高いベッティング方法とマーチンゲール法による資金管理を組み合わせれば最強じゃね?」と思ってプログラムを書いて検証してみました。 世の...
Ruby on Rails

FakerやGimeiのseedをrspecのseedと一致させる

概要 rspecにおいて、単体テストの順番や使うデータをランダム化してテストパターンを増やすために config.order = :randomを有効化するのは普通かと思います。テストが失敗したときに、rspecコマンドの--seedオプシ...
Diary

Toonesの利用料を取得するスクリプト

概要 Toonesのサービス利用料を集計するためにはWebの画面にログインしてCSVファイルをダウンロードする方法しか無く、APIで取得ができません。手元で毎月集計したいので簡単なスクリプトを作ってみました。とりあえず作っただけなのでハード...
Ruby

AASMでステータス変更と同じクリティカルセクションで実行

概要 主にActiveRecordと併用して使うステータス管理用のgemがあります。AASM(ステートマシーン)です。「ステータス変更と同時に別の処理を実行したい」という要求を満たすために排他制御(主にデータベースのトランザクション)を使う...
Ruby

分割されていない電話番号から市外局番と市内局番の求め方

概要 分割されていない電話番号から、市内局番や市外局番を求めたい。0292323011 => 029-232-3011phonelibが良さそう。phonelibはGoogle libphonenumberのデータをもとにしている。日本の市...
Ruby

CloudWatchにrubyアプリケーションからログを投げる

しかし、投げまくっていると以下のような例外が出るので、Throttlingされてしまったらsleepする必要があります。そうなると全体としての処理パフォーマンスのボトルネックになってしまうので要注意です。 Aws::CloudWatchLo...
Program & Service

新型コロナウィルス陽性者グラフのFeed

概要 以前、毎日の新型コロナウィルス陽性者数のグラフを投稿するTwitter Botを作ったのですが、神奈川県以外すべてTwitterにBanされました。プラットフォームに依存するとBanされたときに困るので1次情報源は自分のサイトで運営す...
Ruby on Rails

物理メモリが不足したらpumaを自動で再起動

概要 pumaがどんどんメモリを食っていってしまう。同様に、sidekiqもたくさんメモリを食ってしまっている。GCしても減らない。 ObjectSpace.each_object(ActiveRecord::Relation).each(...
Diary

DNSレコードのリグレッションテスト

概要 DNSのzoneサーバを移行する際に、新サーバで設定が正しく行われているかをプログラムで確認するためのコードを書きました。zoneサーバの移行は基本的にはコピペかと思いますので。設置が間違っていたり漏れていると大惨事になるのでテスト出...
API

Google APIのOAuth2に関連したトークンの扱い方法とシーケンス

概要 Using OAuth 2.0 to Access Google APIsにシーケンスがかいてあります。 上記のシーケンスはシンプルすぎて、重要なシーケンスとアクターが漏れているので、もう少し細かくシーケンス図を書き直しました。特に、...