ruby
\K を使うと、そこまでのマッチ部を省略できる ip -br a からIPv4 を取り出す例 $ ip -br a | grep eth2 eth2 169.254.70.21/16 fe80::4154:6db4:aec3:32f/64 コレを、\k で書くとこうなる。 ip -br a | grep -oP 'eth2\s+\K[\d.]+' つまり、後方参照を使わ…
net-smpt xoauth2 でGmailを使って送信する。 GMail はアレコレややこしい。とりあえず、OAuth2に対応させれば、SMTPサーバーを使わせてもらえる。 require 'gmail_xoauth' require "googleauth" require "googleauth/stores/file_token_store" require 'gma…
画像がカラーか、白黒かを判別する方法では、偶然にはてな質問の回答を見つけたので、コピペで行っていた。正直言って何がどうなってるのかよくわかってなかった。自宅の書籍や書類を整理するために大量にスキャンしていると、やっぱりこの判定がほしいなと…
bundle コマンドの使い方 bundle コマンドは apt で入れている前提 apt install ruby-bundler 初期化 フォルダを作る mkdir my-work cd my-work 初期化する bundle init パッケージの追加 bundle add struct bundle add pry パッケージの利用 / ソース作成 …
書いたソースコードをgem にして自分で使いたい。 自分で書いたソースコードを再利用するために gem の仕組みを活用し、再利用する。 目標 自分の git ライブラリを読み込み活用する。 必要なもの 自分のライブラリ bundler ruby 手順 gemspec を作って、git…
年齢計算とは、単純だけどちょっと難しいものです。 色々と考えられるけど、判断していいのか困ったのであれこれ考えた。 日数から、年が何回出てるか(365の商)を見る 剰余は無視すればい。 (Date.parse('2022-12-01') - Date.parse('1989-12-02')).to_i/3…
ユーザ空間を使う sudo とかつかってグローバルを汚したくないし、bundler でプロジェクト単位にインストールも不便ってとき。 自分のユーザ空間の環境があるって最高ですよね。 ユーザ空間にgem をインストール gem install --user-install PKG_NAME たとえ…
vscode で WSLの ruby を使う。 vs code をちょっと使おうと思うと、めっちゃめんどくさいのが wsl 経由でコマンドを使うことですね。 vscode のWSL環境内の実行に慣れていれば、大丈夫なはず。 通常であれば、VS CodeをWSL内部環境で起動して終わり。 今回…
gmail を送信するために、OAuthで権限をもらう。 Gmail でSMTPを使うには、OAuth利用が必要になる。 less secure apps ( 安全性の低いアプリ) は非推奨になった。 git clone git@github.com:takuya/ruby-oauth-google-gmail.git bundle install bundle exec…
ruby の popen に関して。 ruby からIO.popenでプロセスを呼び出すときに、「〇〇」が取れない。というブログがいっぱい見つかって、そうじゃないだろ。という気分になったなったのでメモを残すことにする。 そして、Qiitaなどの記事を丸コピした「いかがで…
ひみつの質問の回答をジェネレーターで作る (1..10).each do puts (1..20).map{|e| (0x3042+Random.new.rand(0..82)).chr(Encoding::UTF_8)}.join end 実行サンプル ランダムな文字列を生成するのである。 /usr/bin/ruby himitu.rb ふぉゔゃまゅめゅいごなこ…
ruby でメールを送信する ruby からgmail を送信するには、 mail ライブラリだけでも出来るんだけど。 MIMEエンコードされたデータを受け取ってそのまま forward するには、もう少しいい方法がないかなと思って考えていた。 メールリレーの中間に入って、指…
ubuntuシステムからメールを送りたい。 メールを送ろうとすると、SMTPをつかって、MIMEでエンコードして SMTP over TLSで接続してとあれこれ手順が必要。 その手順をrubygemでインストールして使い方を調べるのも面倒。 ローカルの postfix にリレーさせる。…
日本語(ローマ字)表記をひらがなにしたい 「shatiku → しゃちく」 にしたい 本日の目的 ローマ字で表現された名前を変換したい。 hatarakusaibou のような名前を ’はたらくさいぼう’のようにひらがな表記に変えたい。 ローマ字を'ひらがな'に変換できれば…
mecab - ruby を使いたい 久しぶりにmecab をインストールしようとしたら・・・ bundle add mecab エラーになるんですね。 extconf.rb:12:in ``': No such file or directory - mecab-config mecab は extconf で外部ライブラリ(.h)を参照するので、 mecab…
文字の実体参照と実コード(文字)を変換する。 sed や nkf でもできる ruby なら出来るんだけど >>> escaped_data = b'\\x50\\x51' >>> escaped_data.decode("unicode_escape") python / nodejsだと、どううやるんだっけ。。。 参考資料 https://stackoverf…
簡単に衝突しないような文字列をつくってファイルを保存するようなことをしたい。 OpenSSLを使えば割と楽 require 'openssl' str = [OpenSSL::Random.random_bytes(12)].pack("m*").delete("\n") puts str ワンライナーで ruby -r openssl -e 'print [OpenSS…
JSとか書いてたら、グローバルマッチをついつい、次のように書いてしまう。 "aa aaa aaaaa".match( /a+/g ) ああ、シンタックスエラー ruby 書くんだったらこう書くっポイ! "aa aaa aaaaa".scan( /a+/ ) #=> ["aa", "aaa", "aaaaa"] ruby でマッチした結果…
Selenium のWebDriverからCookieを取り出したら Seleniumで画像をだけを取り出して保存したり、ファイルを取り出すのは不便だよね。 だけど、直接Curlで叩くのもCookieの問題でもっと不便だよね。 そこでSeleniumのCookieをCurlで使える形式やNetscape形式で…
ruby でクラスに所属するメソッドを呼び出す。 クラスに所属するStaticなメソッドを呼び出したときに、クラス名を直接指定するのは不便だよね。 class A def self.do puts :do end def say A.do # クラス名が・・・ end end a = A.new a.say self で参照する…
モジュールのメソッドを、クラスの特異メソッドに取り込む module で定義した、メソッドやローカル変数を、クラスの特異メソッドに取り込む 次のようにすると実現できる。 module S1 def sample puts :sample end end class A class << self include S1 end …
コピペなどでエコーが邪魔なとき _pry_.config.print = proc {} irb の場合は conf.echo = false こうすれば、長いStringのスクロールで死ななくて済む 一時的にオフにして、元に戻すなら _pry_.config._print = _pry_.config.print _pry_.config.print = pr…
Selenium + chromedriverで 印刷プレビューにアクセスするのが面倒くさい Chromeを webdriverでアクセスすると iframe で作られた、印刷プレビューにアクセスするのがとてもめんどくさい。(セキュリティ関連のアレコレの制限をdisableオプションで取っ払え…
ruby のロガーについて調べておきました ruby ではログを出すときに Logger が便利です。 require 'logger' logger = Logger.new(STDOUT) 標準出力に出す場合は STDOUT($stdout) 、標準エラー出力に出す場合は STDERR($strerr) を指定する。 ログを出す logg…
先月の月末を求めるには まず、月初の01日を作ります。 Date.parse(Date.today.strftime('%Y-%m-01')).to_s 今月の1日を作る方法を知ってると後はなんでも応用が効くよね。 次に−1日する (Date.parse(Date.today.strftime('%Y-%m-01'))-1).to_s 簡単でし…
selenium でリンクの指定が楽になった。 ドキュメントを読んでたら、良いものを見つけた 今までのやり方。 driver.find_element(:xpath, "//a[contains(./text(), 'ログイン')]") driver.find_element(:xpath, "//a[./text()='ログイン']") 今回知ったやり方…
ruby でスクリプトを実行したのは誰? スクリプトの実行ユーザーを知りたい。root以外で動かされるとパーミッションがあとで面倒なので、root 以外が起動しようとすると拒否したいってことが、わりとあるわけで。 実行ユーザーIDを知るには Process.euid #=>…
DB にアクセスするなら Sequel が便利 データベースにアクセスしてデータを扱うには Sequel が便利。ActiveRecordもいいんだけどアレはめんどくさい。 SQLに極めて近い構造で余計なことはなにもなく便利でいい。 インストール gem install sequel DBに接続 D…
RMagick を久しぶりに使おうとしたら・・・ インストール gem install rmagick はい、エラー。extconf.rb ってほんと良く詰まるわ 色々調べたら、Rmagick が imagemagick 7 に非対応だった。 brew unlink imagemagick brew install imagemagick@6 brew link …
mac OSX の ri がgems パッケージを見てくれない。 ri はgems ファイルを探してくれないので、ri は使えないものだと思ってた。 takuya@~$ ri Sequel Nothing known about Sequel takuya@~$ OSX バンドルの ri が見てくれないだけだった。 takuya@~$ which r…