ブログ

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

Ruby

Array#include? と Object#in? をつかう

まとめ include? と in? Links まとめ 「だれがどうしたのか」「どうしたのはだれか」みたいな文の主従の順序・逆転は些細なものかもしれない それでも、コードも文章の1つ、読み易しいコードを書いていきたい include? と in? たとえば、普段であれば次のよ…

wareki gem で日付から和暦表示に変換する (参考リンク)

wareki gem を利用すると西暦・和暦を相互変換できるようになる require 'wareki' pp Date.new(2019, 5, 1).strftime("%JF") # => "令和元年五月一日" pp Date.parse('令和元年五月一日') # => #<Date: 2019-05-01 ((2458605j,0s,0n),+0s,2299161j)> インストール方法や使い方は https://github.com/sugi/wareki</date:>…

Q. 毎週 Ruby に関連する情報をメールでお知らせして欲しい

A. Ruby Weekly を購読する Ruby Weekly が掲載する情報 最新情報 仕事情報 ブログ記事やチュートリアル コードとツール 「メールはヤダ」...? Ruby Weekly が掲載する情報 最新情報 たとえば 「Ruby 2.7 — Numbered Parameters – Brandon Weaver – Medium」…

Q. 渡された日付から7日分の日付表記を生成したい (日付操作)

A. Rails の activesupport gem にある Date#advance を使う (ドキュメント) Tips: Gemfile に rails と書かなくても gem 'activesupport' と単体で利用できる ActiveSupportとは編集Ruby on Rails のコアライブラリの一つ →Ruby on Rails 続きを読む このキ…

年月日を訊いて曜日を調べるプログラム

内容は Rubyで曜日を取得するプログラムの書き方【メンターが回答】 | TechAcademyマガジン のもの やることは: 年を訊く 月を訊く 日を訊く その情報をもとに、入力された年月日の曜日を表示する というもの これをいま知ってることを含めて書いたらどうな…

Amazon API Gateway + AWS Lambda で「診断メーカー」の結果を返す機能を実装する

AWS Lambda が Ruby をサポート した (2018年11月) ので、既存のコード (gouf/shindan) と組み合わせて、動作するものを作る 作ったものはコレ: gouf/serverless_ruby_demo 前提 プロジェクトの初期化 テストコードを書く 実装コードを書く API Gateway を設…

横書き表記を縦書き表記に変換してみる

github.com リポジトリを作った テストコード と 実装コード は GitHub に置いてある どこかで実際に動作しているところを見掛けて、でもそれを実装したことがなかったので挑戦してみた 使用例: text = <

Date 型情報から月と日のみで比較する (yield_self)

gouf.hatenablog.com やってることは上の過去記事とおなじ lambda の定義をなくして、 yield_self を使うように書き換えた こういうときが yield_self を使う場面なのだろか require 'date' pp current_day = Date.new(2018, 11, 1) # => #<Date: 2018-11-01 ((2458424j,0s,0n),+0s,2299161j)> pp to_comparing_</date:>…

Date 型情報から月と日のみで比較する

質問「Ruby - 【Ruby/Rails】西暦なしの日付同士の比較&年1回のメッセージの表示/再表示|teratail」を見掛けて コードの部分だけ書きたくなったので 頭の体操 「ああ~ Lambda が使いたいんじゃ~」というお話 手順をどうするか考えて 実際の処理を lambd…

Yokohama.rb Monthly Meetup #93 に参加した

初参加 FJORD Bootcamp の中のひとに「こういう集まりがあるんだよ」と紹介されて、興味を惹かれて行ってみた yokohamarb.doorkeeper.jp セッション 相談するひと 応えるひと 持ち物 コミュニケーション? Links セッション そんなものは (時と場合により) …

Code Climate で Ruby コードの複雑さを可視化する

Code Climate 対応する言語 機能 メンテナンス性の解析 そのほかの解析・機能 まとめ Bonus Tips Links Code Climate Code Climate というサービスがある 対応する言語 Ruby Python PHP JavaScript Java TypeScript GoLang Swift そのほかにも C#, Scala, Ko…

rerun gem で Docker コンテナ破棄・構築のイテレーションを素早く回す

問題 解決 rerun Link 問題 Dockerfile の内容や、コンテナに同梱したいファイルを編集したときに 編集内容が反映されているか 再ビルド (docker build )して 起動させて (docker run) 目視確認したい (ここでは Docker の正しい使い方は気にしない) (本当は…

1日なんどでも「うさぎがヒャー」する

できるようにした: github.com 説明しないこと 問題 解決 説明しないこと Lita という chat bot フレームワークがあること 「うさぎがヒャー」という診断メーカーのコンテンツがあること Slack 上で診断結果を表示させる方法について 問題 「うさぎがヒャー…

配列から条件に合う連続した要素の最大カウント数を計算する

teratail.com 再帰で書けそうだったので書いた # 配列のデータに対して # * 符号がプラスの値が最大何回連続したか # * マイナスの値が最大何回連続したか # を計算したい def max_continuous_element_count(data, count_element, count = 1, max = 0) retur…

配列から範囲を生成する

思いついたので書く 課題設定 入力値の例 期待する出力 書いたコード 課題設定 与えられた1次元配列を順次捜査して、現在位置からひとつ前を参照しつつ、それと現在の要素とを合成した Range オブジェクトを作りたい そのとき、処理結果として見たときの範囲…

Q. 開発環境で複数サーバを立ち上げたら CORS のポリシーで通信できない(Sinatra)

A. sinatra-cors で通信を許可する require 'sinatra' require 'sinatra/cors' set :allow_origin, 'http://example.com http://localhost:8081' # アクセスしてくる開発環境サーバをスペース区切りで追記 set :allow_methods, 'GET,HEAD,POST' set :allow_h…

テンプレート文字に沿って、文字列の合わない部分を「○」に置換する

teratail.com 回答して欲しい言語が Python だったので、こちらに書く(Ruby) 再帰楽しい 2つのテキストを渡して、条件に合致していれば両方を頭から食べてもらうイメージ # frozen_string_literal: true RESULT_TEXT = 'さて、私〇〇〇〇はこのたび〇〇〇〇…

ズン ズン ズン ズン ドコ キ・ヨ・シ!(Ruby)

後で読むリストを見返してたら出てきたので、書く まとめについて: qiita.com 実装 gist.github.com そのまま実装してもおもしろくないので: 逐次「ズン」「ドコ」を出力せずに配列に溜め込むようにした (クラスの役割をデータの生成に限定した) 終了条件…

rerun でファイル・ディレクトリを監視してコマンドを繰り返し実行する

今回は Yard に適用してみる 前提 やりたいこと 解決 Links 前提 ドキュメント記述ツール Yard を使っている 大規模なプロジェクトじゃないので、毎回最初からYard のドキュメント生成をやり直しても待てる やりたいこと 真っ新な状態でドキュメントが問題な…

URL にアクセスしたときのレスポンスコードをチェックする

やりたいこと テストコードを書く 実装コードを書く Links やりたいこと Ruby の標準ライブラリをつかって、URL の存在チェック (404 or not) をしたい テストコードを書く describe UrlAccessible do context 'When URL has exist' do it 'gets false (200 …

Markdown 書式のリストからリンクを抜き出す

Redcarpet と Nokogiri に全力で乗っかっていく なぜ書くのか テストを書く(RSpec) 実装を書く Links なぜ書くのか 「なんとなく」が答え 普段、Google Chrome 拡張の Copy as Markdown を使っている それがあるとタブの情報(タイトル, URL)を、複数選択して…

定数を外部からアクセス不能にする(参考リンク)

方法 まとめ Links 方法 Module#private_constant を使う class MyClass MY_CONSTANT = 'Value' MY_CONSTANT_B = 'Value B' private_constant :MY_CONSTANT, :MY_CONSTANT_B end まとめ Private constants in Ruby というページを見た いろんな状況の中から…

いつもの RSpec 初期化手順

意外とタイプ数が多いし定型的なので、関数化するか こうしてコピペで済むようにしたかった 手順 初期化 Guard の起動 Links 手順 初期化 mkcd ~/rspec # mkdir + cd = mkdir; 適当なディレクトリに移動 mkdir lib git init bundle init # Gemfile 生成 cat <<EOF ></eof>…

「単語の類似性を算出する」出題を解く

teratail.com 気になったので書いてみる(Ruby, RSpec) もとの質問で話題としている言語は Java であり、穴埋め問題であり、ぜんぜん関係ないのでこちらに書き残す 今回の RSpec によるテストでは One-liner syntax を利用して、 expect を書く テストコード …

始点終点を持つ範囲同士を比較するコードを考える

teratail.com 気になったので書いてみる RSpec の shared examples に適用できそうだったから書いたというのはナイショ 仕様 テストコードを書く 実装を書く 結果 Links

Slack で発生するちゃぶ台返しを封じる(lita-handler)

リポジトリを作った github.com 動作イメージ: 説明しないこと Lita という Ruby + Redis で動く chat bot があるということ handler に分類されるコードを書くことで機能追加ができること ほぼ全ての必要なことはドキュメントにシッカリと記述されていると…

<table/> 形式でカレンダーを表示させる(ヘルパーメソッド)

teratail.com qiita.com 質問で見掛けたので、参照元のコードをヘルパーメソッドに書き換えてみた まとめ コード Link まとめ これに、インスタンス群(= 配列)を受け付けられるように引数を増やしたりすれば、もう少しくらいはカスタマイズしたり機能が増や…

相対パス指定とコードの移植性について

環境の違いで動かなくなることがある、ので その対処 まとめ コード Links まとめ \ とか / とか、OS によってディレクトリ区切りの表現が違うので、それをパス指定で使わない方法を採ろう でも Windows で Ruby って動かさないとは思うけど コード # 実行さ…

Yakitori のコードをRuby っぽくした

FromAtom さんのコードを書き換えてみた、ので数少ないOSS 活動の記録としてここに残しておく github.com 日本語OK っぽかったので、気兼ねなくPull Request を送り付けることができてよかった Yakitori の詳細については以下の記事を参照のこと fromatom.ha…

Ruby(google-cloud-bigquery)でDATE_ADD関数が使えない?

自回答の転記: teratail.com 「GCP ってナニ」「BigQuery ってナニ」状態から、でも実際にプロジェクト作成したり、API キー発行したりしつつ、調べてみた 短い答え 調べたこと たとえば DATE_ADD() クエリ例(Legacy & Standard) legacy_sql オプションにつ…