ブログ

読んで思い出す。忘れるために書く

Ruby

月額報酬額に対して日割り計算をする

コードを書いた。 github.com copy_me.sh を用意している ので、好きな関数名 (eg. hiwari) をつけて その年の月数を渡してあげると「営業日」「日割り額」を出力してくれる hiwari 6 # 今年 (2024年) 6月の日割り額が知りたい 営業日: 20日 日割り額: 30,00…

経歴情報から のべ経験年数を計算する

計算したことなかったので、できるようにした 前提 経歴情報は Proff に保存している 各経歴の「いつから いつまで」は「年・月」のみで、「日」は含まれない 入力データは 20143 20149 20162 20175 のように「yyyymm」「yyyym」のいずれかで整形されている …

Q. ファクトリメソッドを主としたクラス実装で、クラスの初期化を外から隠したい

A. private_class_method :new を記述する 参考にしたコードは「良いコード/悪いコードで学ぶ設計入門」の「5.2.1 private コンストラクタ+ファクトリメソッドで目的別初期化」より gist.github.com Links How to make the class constructor private in Ru…

Q. reCAPTCHA の Ruby 側コードが分かりづらい

A. まとめるとこうなる gist.github.com

Q. docker-compose 環境で guard コンテナを実行したい

A. つぎの設定を追記する docker-compose.yml : # ... services: # ... guard: build: context: . env_file: - .env command: bundle exec guard depends_on: - mysql volumes: - .:/app tty: true stdin_open: true # ... Dockerfile (Alpine Linux) : RUN …

Twitter のリストに加えている人数を調べる

Twitter Web だったり、TweetDeck からはリストに加えているアカウント数が確認できなかったので、API 経由で問い合わせる 書いたコード Bash 関数を定義する Link リポジトリを作った: github.com 書いたコード # frozen_string_literal: true require 'twi…

日の出・日の入り時刻を調べる

スクレイピングで 日の出・日の入り時刻を調べられるようになった リポジトリ: github.com 都道府県名や、市の名前でその日・その場所の時刻を調べられる Links gouf/sunrise_sunset: Scrape sunrise sunset data from https://motohasi.net/SunriseSunset/J…

Q. 「月末の45日後」って いつ?

A. 次のコードで確認できる require 'active_support' require 'active_support/core_ext' Date.new(2021, 4, 1).end_of_month.advance(days: 45).to_s # => "2021-06-14" irb や pry で打ち込むと、すぐに確認できる 支払いサイトの計算が簡単になった!! Li…

pry-theme の windows? メソッドバグを潰した

OSS 活動の話 ほめられた! 概要 pry セッション内で、pry-theme install ocean みたいにコマンドを唱えるとエラーが発生するのに気付いて、修正した (詳細はリンク先) [1] pry(main)> pry-theme install ocean Installing "ocean" from Pry Theme Collectio…

3ケタの数字から「カプレカ数」を探す

3ケタの数字から見つかる カプレカ数 は「495」が唯一らしい 与えられた数値に対して「カプレカ操作」を実行し、値がおなじになるものの数を探してみた ループ処理でゴリ押し def kaprekar_manipulate(n) # 桁数を昇順・降順に並べ替える max = n.to_s .char…

「○ヶ月○日」と経過日数を表示させる

質問に回答したのでその転記 teratail.com Ruby 2.7 のパターンマッチ (実験的な機能) で書いてみた gist.github.com Link ActiveSupport::Duration#build

Q. RSpec で定数定義の有無を確認したい

A. (subject を定義して) it { is_expected.to be_const_defined :FOO } と記述する 回答の例 にあるように、be_ や have_ で柔軟なテストが可能になっている The reason is that Rspec has "magic" matchers for methods starting with be_ and have_. For …

Watir を Docker 環境で動かして Web ページのスクリーンショットを撮る

リポジトリを作った : gouf/watir_in_docker_demo - GitHub 詳しくはそちらを参照のこと 今回は最小限の環境で動くのを確認するのが目的だった もし次のステップを設定するなら、Watir を絡めたコードをもう少しモリモリ書いて動かしてみたい Links Watir Pr…

refine で簡易的に西暦から元号に変換する

module RegnalYear module JP refine Integer do def to_regnal_year_jp case self when 1868..1912 '明治' when 1912..1926 '大正' when 1926..1989 '昭和' when 1990..2019 # acutualy: 1/8/1989 - 4/30/2019 '平成' end end end end end using RegnalYear…

Q. バージョンアップで rubocop ( rubocop.yml ) が動かなくなってめんどうくさい

A. mry コマンドをつかう Vim + Ale で rubocop を自動で走らせていたけど、動かなくなったので その対処 インストールと使い方 # インストール gem install mry # つかいかた mry --help # => # Usage: mry [options] [.rubocop.yml] # -t, --target=TARGET…

「翌営業日 - その1」を解いた (Paiza 練習問題)

回答コードを載せるので、未挑戦の場合は先に 翌営業日 - その1 を参照のこと 前提・概要 前提 概要 回答コード, テストコード 次の一歩? Links 前提・概要 前提 レベルアップ問題集にある問題については、ユーザー同士で解答を教え合ったり、コードを公開し…

Ruby でじゃんけんゲーム

じゃんけんゲームの動作イメージ Qiita の記事「Rubyでじゃんけんアプリを作ってみた - Qiita」を見掛けたので 自分でも書いてみた 書いたコード 別解: 法則性を味方につける Links 書いたコード 出す手の種類が 3つと限られているので その勝敗パターンを愚…

Heroku の Stack をアップグレードした (Cedar-14 Stack EOL)

完成しててメンテしてないコードをそのまま放置してたら お知らせメールが来てた... ので対応した たとえコードが完成したとしてもインフラや OS など、周りの環境は変化を続ける 内容はほぼお知らせメールの案内に記されてる通り やったこと プラグインのイ…

Google Calendar API で面談候補日の管理を省力化する

日常生活をチョットべんりにした話 問題・背景 解決 動作イメージ 候補日の作成 候補日の確定 Links 問題・背景 就職・転職活動で「面談候補日をいくつか教えてね」と云われることがある 確定を待つ間、別の予定を被らせて入れたくないので Google Calendar …

Q. bundler のバージョンが上がってもすぐに annotate_gem を使い続けたい

エラーメッセージ: Bundler could not find compatible versions for gem "bundler" でインストールできないので、対処したい A. つぎの patch を適用して、自分で gem をビルド・インストールする (再び bundler のバージョンが大きく上がった場合は当該箇…

Q. pry の色設定をカンタンに変更するには (pry-theme)

A. pry-theme を導入する ターミナルは黒背景で使いたいので、それに合う pry-cold を設定した pry-cold テーマのプレビュー Links kyrylo/pry-theme: An easy way to customize Pry colors via theme files - GitHub

Paiza「月の日数 Ruby編」に正答した

「月の日数 Ruby編」に正答したのでメモ 書いたコード 所感 書いたコード gist.github.com 所感 Date#succ で日付を一日後ろに移動できるので、それを再帰のループに組み込めたのが良かった puts (date..date.next_month.prev_day).to_a.size で書ける...? …

Paiza 「日付のフォーマット Ruby編」に正答した

「日付のフォーマット」に正答したのでメモ 書いたコード 所感 Links 書いたコード gist.github.com 所感 月と日の検査値を Range と String#rjust とで作れたので そこはスッキリ書けた クラス内のメソッドにまとめたので、一つ一つ検査するようなコードで…

sorbet gem でメソッドの入出力型をチェックする

公式ドキュメントの sigs の部分だけ触ってみた 他に NAMES = T.let(["Nelson", "Dmitry", "Paul"], T::Array[String]) といった書き方もできる のでヨサソウ 何千行, 何万行とコードを書いて混沌としてきたコードベースに秩序をもたらすことができる...? 詳…

image_processing gem で画像ファイルのリサイズをする

内容は janko/image_processing の README.md と同じもの 簡単な処理であれば 利用する画像処理ライブラリを選ぶ以外には共通したコードになりそう 前提 画像ファイルを用意する 画像ファイルをリサイズ・保存する Links 前提 brew install imagemagick vips…

line-bot-sdk-ruby に公開されているサンプルコードを動かす (echobot)

line/line-bot-sdk-ruby に公開されている examples/echobot/app.rb を動かしてみた 前提・ゴール設定 準備 チャネル, bot の作成 LINE Messaging API SDK をインストールする dotenv gem を使う 署名検証をしない Sinatra と ngrok を動かす Webhook URL に…

Ruby で表現できる様々な書き方 (おみくじゲーム)

(他の言語でもそうだけど) 「Ruby ならいろいろな方法で書けるよ!」というお話 まとめ 要件 色々な書き方 1. if と == 比較 2. case...when で比較 3. Hash の対応付けから取り出す 4. 配列に収めて取り出す Links まとめ コードは書くばかりではなく 読む…

その日の勤務に関わる時間全体をタイムテーブルとして表示する

求人情報とか実際に会って話してみて、でも仕事を含めた毎日の生活ってどう変わるのかがイメージできないので、時間割として表示させるコードを書いた 出力結果 使い方 Links 出力結果 「10 時勤務開始, 8 時間勤務, 0 時間通勤」の場合 -------------------…

Q. Markdown のリンク リストをタイトルの短い順に並べ替えしたい

A. Nokogiri と github/markup, それと sort_by を使う 手順とコード 手順 コード Links 手順とコード 手順 大まかな手順としては: markup に Markdown を解析させて HTML に変換 Nokogiri でHTML 中から <a/> タグを抽出 <a/> タグのタイトル部分とURL 部分を抽出 <a/> </a/></a/></a/>…

英文から母音の数をカウントして多い順に並べる (Ruby)

「英文から母音の数をカウントして多い順に並べる」という Python の質問を目にしたので Ruby で書いてみた 「最初に動くものを書き、段階的に磨き上げていく」というのはコードを書く上でよくやることなので、今回はその初稿を残しておく この時点でテスト…