Ruby
pdftotext Poppler のコマンドラインツールの一つである pdftotext は PDF からテキストを抽出することができます。 en.wikipedia.org 通常は入力に PDF ファイルを指定するのですが、マニュアルに "If PDF-file is ´-', it reads the PDF file from stdin."…
Ruby には nkf コマンドを利用するための NKF というライブラリがあります。 docs.ruby-lang.org 文字コードを変換する関数 NKF.nkf オプションは、nkf コマンドのオプションと同じものを文字列で指定します。 # -W 入力に UTF-8 を仮定する # -s Shift_JIS …
あまり時間をさけていませんが、細々と Factor をいじっています。 Hello, World! の次の定番、Fizz Buzz をやってみました。 前回のおさらい 「Factor とは何?」という話は、前回の記事に書きましたのでこちらを参照していただけたら。 プログラミング言語…
勉強不足を晒すことになりますが。 仕事で "Specification" なるオブジェクトが出てきたときに、しばらくは漠然としたイメージしか持てませんでした。 当面は直接関わることがなかったのでそのままにしていたのですが、原典に当たったことですっきりしました…
ことの起こり "google_drive" という Ruby gem があります。 rubygems.org これを使うと Ruby のコードから Google Drive にアクセスして操作することができます。 仕事で Google Spreadsheet に書き込みに使っているのですが、既存のコードではセルへの書き…
特定の値から出発して演算を繰り返し値の並びを出力する unfold 。 そういえば Ruby に unfold ってないんだっけ? というのが発端。 unfold とは 早い話が fold の逆です。 Elixir では Stream.unfold/2 が定義されています。 # 1 から始めて、前の値に 1 …
仕事では Ruby on Rails を主戦場としているわけですが。 最近、クエリメソッドについて考えています。 Rails のクエリメソッドといえば「スコープ」を定義するのが常套手段です。 # app/models/user.rb class User < ApplicationRecord scope :created_at_b…
動機 AWS のリソースの多くは key-value の組みをタグとして設定できるようになっているのですが。 例えば EC2 インスタンスを取得する aws-sdk のメソッド Aws::EC2::Client#describe_instances のレスポンスは次のようになっています。 resp.reservations[…
「元のCSVファイルから特定の条件の行だけを抜き出した新しいCSVファイルを作成する」という仕事中の話題から。 Ruby Rubyでしたら、不都合がない限り標準添付のcsvライブラリを利用すると思います。 docs.ruby-lang.org onliner 「ファイルから読み込んで、…
記事にするのが遅くなりましたが、6 月に Alpine.js が 3.0 にメジャーバージョンアップしました(ちなみに 2021-08-29 現在の最新は 3.2.4)。 alpinejs.dev 色々と改善されていますが、個人的に一番大きな利点はロジックをグローバルスコープに公開しなく…
昨年の 10 月に Discord Webhook で Elixir からファイルを POST する方法を記事に書きましたが、その Ruby 版です。 テキストをPOSTする テキストのみの場合、net/http の Net::HTTP.post_form メソッドを使うことで簡単に POST できます。 パラメータとし…
Alpine.js です。 軽量で、宣言的で、リアクティブなふるまいを記述できるということで注目されている、ようです。 github.com 既存のフレームワークの Vue.js や React と比べてシンプルで軽量というところが注目点のようなのですが、わたしとしては HTML …
Enumerable モジュールを使って Fibonacci number を実装する例です。 module Enumerable Fibonacci number - Wikipedia # fibonacci.rb class Fibonacci include Enumerable def each if block_given? n1, n2 = 1, 1 loop do yield n1 n1, n2 = n2, n1 + n2…
つまりこうゆうことです。 探した範囲でははっきりとした情報が見つからなかったので、めも。 このようなモデルがあるばあい、 class Article < ApplicationRecord has_one_attached :image end たとえばこのようにすることで storage にデータを格納できま…
Action Cable を使いたいときがあります。 Ruby on Rails の app を書いているのですから、サーバもクライアントも Ruby で書くのが自然です。 というわけで。Opal を導入してみました。 Rails app を用意する rails new コマンドで適当な Rails app を作成…
Ruby で書いた AWS Lambda の関数を Apex を使ってデプロイできたので、その時の覚書です。 誤りや認識間違いが混ざっているかもしれません。ご指摘いただけたら幸いです。 Apex – Serverless Infrastructure 仕事ではずっと Serverless + nodejs を使ってい…
Markdown から EPUB を生成する方法の備忘録です。 Markdown から EPUB に変換するなら、md2review + Re:VIEW という強力な組み合わせがあります。 Re:VIEW - Digital Publishing System for Books and eBooks takahashim/md2review: a converter from Markd…
AWS に CloudWatch Logs というサービスがあります。 Amazon CloudWatch Logs とは? - Amazon CloudWatch ログ コンソールが用意されていますが、正直使いやすくありません。 awslogs という、CloudWatch Logs からログを取得するコマンドラインツールがあり…
今月の初めの土曜日、秋葉原/神田開催どう書くの第10回が開催されました。 オフラインリアルタイムどう書くE10 - 横浜へなちょこプログラミング勉強会 | Doorkeeper 問題とみなさんの回答へのリンクはこちらから。 mtsmfm blog - オフラインリアルタイムどう…
library fiddle (Ruby 2.3.0) *.dllや*.soなど、ダイナミックリンクライブラリを扱うためのライブラリです。 Ruby は痒い所に手が届く便利な言語だと知ってはいましたが、こんなに便利になっているとは思いませんでした。と、いうわけで。 Fibonacci Number …
GitHub - kamui/retriable: Retriable is an simple DSL to retry failed code blocks with randomized exponential backoff. インストール $ gem install retriable 実装例 require 'retriable' class SampleError < RuntimeError end puts <<~EOS | except…
会社で「抵抗器のカラーコードは虹の順番だよ」という話をしたら。 「いや、そもそも虹の色の順番覚えてないから」と返されてしまいました。 そんなわけなので、Ruby の gem にしてみました。 gem は書き慣れていないので、雑です。 GitHub - mattsan/color_…
前回 は C++ で書いたのですが、調べたら Ruby でも同じように書くことができることがわかりました。今回は libRSVG を Ruby から利用する Ruby/RSVG (rsvg2 gem) を利用。 ruby-gnome2/rsvg2 at master · ruby-gnome2/ruby-gnome2 · GitHub require 'rsvg2'…
使うべきは Haml::Engine#to_haml でした。 $ pry [1] pry(main)> require 'haml' => true [2] pry(main)> Haml::Engine.new('.hoge HOGE').to_html => "<div class='hoge'>HOGE</div>\n"
PDF を生成する prawn と、Prawn で SVG を解釈する prawn-svg を使って、haml で書いた SVG を PDF にした時のメモ。prawn-svg の利用例として書かれているコード を haml で書き直したものです。 require 'prawn-svg' require 'haml' Prawn::Document.gene…
これ とか これ の入力になっている (A)(BC)(DEF)のような文字列から括弧の中にある文字列を取り出したい、というのが動機。 まわせ! Bouwkamp!! 横へな2016.2.6 問題 ESM オフラインリアルタイムどう書く 拡大版 · GitHub Ruby def tokenize(s, left, right…
気がつけば。diff を実装してから7年も経っていました。 diffをつくる(3) -後編 - エンジニアのソフトウェア的愛情 案の定、考え方がかなり頭から抜けて行ってしまっているのですが、当時 diff について詳しい記事を書かれていた方がいらっしゃって、加えて…
GitHub - railsconfig/config: Easiest way to add multi-environment yaml settings to Rails, Sinatra, Pandrino and other Ruby projects. Gemfile gem 'config' install $ be rails g config:install create config/initializers/config.rb create confi…
GitHub - binarylogic/settingslogic: A simple and straightforward settings solution that uses an ERB enabled YAML file and a singleton design pattern. Gemfile に追加する。 gem 'settingslogic' config/initializers/settings.rb ファイルを追加す…
探せばもっとよい方法があるかもしれない。 module Hoge def hoge puts "I'm #{self.class}. I'm including Hoge." end end class Foo include Hoge end class Bar include Hoge end class Baz < Bar end ObjectSpace.each_object(Class).select {|klass| kl…