高木のブログ

【Amazon Linux 2】「curl: (60) SSL certificate problem: certificate has expired」の対応

Tags: Amazon Linux

問題 🔗

Amazon Linux 2 の EC2 インスタンスから curl ができなくなった

$ curl https://ifconfig.me
curl: (60) SSL certificate problem: certificate has expired
More details here: https://curl.haxx.se/docs/sslcerts.html

curl failed to verify the legitimacy of the server and therefore could not
establish a secure connection to it. To learn more about this situation and
how to fix it, please visit the web page mentioned above.

解決方法 🔗

CA 証明書を更新してあげたら良い

$ sudo yum update ca-certificates

Before 🔗

$ yum list installed | grep ca-certificates
ca-certificates.noarch                2020.2.41-70.0.amzn2.0.1       @amzn2-core

After 🔗

$ yum list installed | grep ca-certificates
ca-certificates.noarch                2021.2.50-72.amzn2.0.7         @amzn2-core

参考 🔗

dev ドメインを Google Domains から Cloudflare Registrar に移管した

Google Domains が終了 ということで、普段からコアに使っている Cloudflare にドメインを移管した

終了が発表された時点では Cloudflare Registrar では dev ドメインが対応していなかったが、つい最近対応したようなので早速 dev ドメインを移管してみた

before 🔗

$ whois takagi.dev | grep Registrar:
Registrar: Google LLC.

after 🔗

$ whois takagi.dev | grep Registrar:
Registrar: CloudFlare, Inc.

移管手順 🔗

ドメインのロックを解除、認証コードの発行、認証、メールで移管の承認をするだけ

詳しくは以下の記事がわかりやすい
.dev を Google Domains から Cloudflare Registrar に移管してみた

元から CloudFlare DNS を使っていたので、移管の手続きをしただけで作業は終わった

Bskyrb でメンションがポストできるようになった

Tags: Bluesky Bskyrb

Bskyrb でメンションがポストできるようになった(正確には、なりそう)

今まではメンションができなかった 🔗

リプライできるが、単体のメンションはできなかった

001.png

ハンドル名がただの文字列になってしまう

コードは Ruby で Bluesky を触る で紹介したものと同じ

メンションができるようになった 🔗

メンションができるようになったらしい Issue を見つけたので試してみた

ただ、まだリリースされていない(2023年7月30日時点)かつ、使い方も変わったっぽい

以下が対応したコード

require 'bundler/inline'

gemfile do
  source 'https://rubygems.org'
  gem 'bskyrb', github: 'ShreyanJain9/bskyrb' # リリースされていないので、リポジトリ指定
end

credentials = ATProto::Credentials.new('username', 'password')
session = ATProto::Session.new(credentials)
client = Bskyrb::Client.new(session)

client.create_post('@ytkg.bsky.social card')

002.png

ハンドル名がちゃんとリンク?になっている

Deno Deploy では Cache Web API はまだ動かない

※ これは2023年7月23日現在の話

Deno 1.26 でサポートされた Cache Web API を Deno Deploy で使おうとしたら、そんなもんはないと

ReferenceError: caches is not defined

どうやらまだ Deno Deploy ではサポートされていないみたい
Future support にはなっていたのでそのうち
https://deno.com/deploy/docs/runtime-api#future-support

【iTerm2】ターミナルで画像を表示する

Tags: iTerm2

ターミナルで画像を表示させたくて、調べてみると、普段使っている iTerm2 でできることがわかった

手順 🔗

iTerm2 公式でスクリプトが配布されている

Images - Documentation - iTerm2 - macOS Terminal Replacement

スクリプトのダウンロードと実行権限の付与 🔗

$ wget https://iterm2.com/utilities/imgcat
$ chmod +x ./imgcat

画像ファイルを指定して表示 🔗

$ ./imgcat animal_stand_buta.png

001.png

画像URLを指定して表示 🔗

$ ./imgcat -u https://3.bp.blogspot.com/-vuwe9ksFA8M/Wat2E7TehXI/AAAAAAABGUk/ERQpcgCv52cLWGCXbXETvwpAVQpMuU8mQCLcBGAs/s400/animal_stand_buta.png

002.png

必要に応じて、/usr/local/bin に配置する

参考 🔗

【iTerm2】ターミナル上で画像を表示する方法 - Qiita

【Bluesky】ハンドルにカスタムドメインを設定した

Tags: Bluesky

Bluesky のハンドルにカスタムドメインを設定してみた

001.png

公式でドメインの購入から設定まで簡単にできるサービス?仕組み? (https://account.bsky.app ) が提供されているが、今回は昔から持っていたドメインを使って設定した

ハンドルが短くなり、取得だけして放置していたドメインが役に立つ時が来て良かった

手順については既にいくつかの記事が出ているので、ここでは割愛する

【Ruby】bundler/inline で dotenv が動作しない(しなくなった)

Tags: Ruby Bundler

問題 🔗

いつも書いている書き方で dotenv が動作しなくなった

EXAMPLE=test
require 'bundler/inline'

gemfile do
  source 'https://rubygems.org'
  gem 'dotenv', require: 'dotenv/load'
end

p ENV['EXAMPLE']
$ ruby app.rb
nil

nil が返ってくる

バージョンは以下

$ ruby -v
ruby 3.1.2p20 (2022-04-12 revision 4491bb740a) [x86_64-darwin20]

$ bundler -v
Bundler version 2.4.13

暫定対応 🔗

gemfile のブロック外で require してあげたら動く

require 'bundler/inline'

gemfile do
  source 'https://rubygems.org'
  gem 'dotenv'
end

require 'dotenv/load'

p ENV['EXAMPLE']
$ ruby app.rb
"test"

原因 🔗

ちゃんと深くは追ってはいないが、この PR でおかしくなってしまったっぽい?

https://github.com/rubygems/rubygems/pull/6306

参考 🔗

bundler/inline resets ENV · Issue #6651 · rubygems/rubygems

【Bluesky】おみくじボットを作った

Tags: Bluesky Ruby

自動で返信するボットを作ってみたくて、肩慣らしとしておみくじボットを作ってみた

「@omikuji.bsky.social おみくじ」とポストすると、おみくじの結果のリプライが飛んでくる

001.png

Ruby で Bluesky を触る で紹介した bskyrbskyfall を使って実装して、Raspberry Pi で動かしている

補足 🔗

リポジトリ 🔗

ytkg/bluesky-omikuji-bot - GitHub

おみくじのロジック 🔗

今のところこんな感じの単純ロジック

%w[大吉 吉 中吉 小吉 末吉 凶].sample

いずれいい感じにチューニングする予定

skyfall は v0.1.2 以上推奨 🔗

最初は v0.1.0 で動かしていたが、ストリーミング中に変なレスポンスが来た時に例外で止まってしまう不具合があった
v0.1.2 では問題なく動いている

Ruby で Bluesky を触る

Tags: Ruby Bluesky

Ruby で Bluesky を触るやり方

ポスト、リポスト、リプライ、ライク 🔗

bskyrb という Gem を使えば、Bluesky での基本的な操作ができる

# frozen_string_literal: true

require 'bundler/inline'

gemfile do
  source 'https://rubygems.org'
  gem 'bskyrb'
end

# 認証
credentials = Bskyrb::Credentials.new('username', 'password')
session = Bskyrb::Session.new(credentials, 'https://bsky.social')
bsky = Bskyrb::RecordManager.new(session)

# ポスト
post = bsky.create_post('Hello world from bskyrb!')

post_uri = post['uri']

# リポスト
bsky.repost(post_uri)

# リプライ
bsky.create_reply(post_uri, 'Replying to post from bskyrb')

# ライク
bsky.like(post_uri)

ストリーミングでポストを取得する 🔗

skyfall という Gem を使えば、ポストをストリーミングで取得できる

# frozen_string_literal: true

require 'bundler/inline'

gemfile do
  source 'https://rubygems.org'
  gem 'skyfall'
end

sky = Skyfall::Stream.new('bsky.social', :subscribe_repos)

sky.on_message do |m|
  next if m.type != :commit

  m.operations.each do |op|
    next unless op.action == :create && op.type == :bsky_post

    puts '------------------------'
    puts op.raw_record['text']
  end
end

sky.on_connect { puts 'Connected' }
sky.on_disconnect { puts 'Disconnected' }
sky.on_error { |e| puts "ERROR: #{e}" }

sky.connect
sleep
$ ruby app.rb
Connected
------------------------
Ei @diviviann.bsky.social olha o que recebi (e vai ter) hoje
Porque lloras, Zuckenberg? 🤣
------------------------
😘😘❤️
------------------------
im not a US citizen but i get your point
------------------------
[超新星] +1400
ten : 2400
4 : CHO ---> MOY
------------------------
ХА! Я ВСЕ БАЧУ!!
------------------------
J.Lo spends nights in a hyperbaric chamber, her life force withdrawn intentionally from her senses to create a meditative suspended animation, while celestial beings pat the nectar of immortal bliss on her face. I’m saying she looks good, y’all!!!
------------------------
Fair enough! Thank you for the tip.

bskyrb と組み合わせて使うと好きなボットが作れる

RuboCop のキャッシュ

Tags: RuboCop

RuboCop を実行した時に、1回目と2回目で出力が違うことに気がついた
どこかに実行結果を保存しているのかなと思ったら、キャッシュ機能が備わっていた

デフォルトでキャッシュは有効になっている

一時的に無効にしたい場合 🔗

以下のようにオプションをつけて実行

$ rubocop --cache false

キャッシュファイルの保存先 🔗

  • $XDG_CACHE_HOME/$UID/rubocop_cache

もしくは

  • $HOME/.cache/rubocop_cache

補足 🔗

キャッシュの有効・無効の設定、キャッシュファイルの保存先の設定については他のやり方もあるので、詳しくは公式ドキュメントを参照

https://docs.rubocop.org/rubocop/usage/caching.html

【ls コマンド】数字順で表示する

ls コマンドはデフォルトでは辞書順で表示される

$ ls -1 | head
20230608164323_10.txt
20230608164323_101.txt
20230608164323_104.txt
20230608164323_106.txt
20230608164323_107.txt
20230608164323_109.txt
20230608164323_11.txt
20230608164323_110.txt
20230608164323_111.txt
20230608164323_113.txt

数字順で表示したい場合は、-v オプションを使うとできる(version number の v)

$ ls -v1 | head
20230608164323_3.txt
20230608164323_5.txt
20230608164323_6.txt
20230608164323_8.txt
20230608164323_9.txt
20230608164323_10.txt
20230608164323_11.txt
20230608164323_12.txt
20230608164323_13.txt
20230608164323_16.txt

Mac はできなかった

【Commit Genius】v0.5.0 をリリースした

Commit Genius v0.5.0 をリリースした
Commit Genius は ChatGPT にコミットメッセージを考えてもらう CLI ツール

https://github.com/ytkg/commit-genius
ytkg/commit-genius - GitHub

変更点 🔗

サブコマンド config の追加 🔗

今まで OpenAI の API キーは環境変数(OPENAI_ACCESS_TOKEN もしくは OPENAI_API_KEY)で設定する方法しかなかったが、コマンドでも設定できるようになった

設定は、~/.config/commit_genius/config.toml というファイルに記録される仕組みになっている

設定の値を追加 🔗

$ cg config set api_key sk-HogehogeXXX

設定の値を確認 🔗

$ cg config get api_key
sk-HogehogeXXX

設定の一覧を確認 🔗

$ cg config list
api_key = sk-HogehogeXXX

Bluesky のアカウントを作った

Tags: Bluesky

運良く招待コードをもらうことができたのでアカウントを作った

https://bsky.app/profile/ytkg.bsky.social

ちょうどアカウント数が10万人超えたっぽい( https://bluesky.denike.io

メモ 🔗

Bluesky について気になったことを調べたメモ

カスタムドメイン 🔗

独自ドメインをハンドル名として使用できるらしい

元のハンドルは他の人が取れるようになるので注意が必要
取られたくない場合は自分で取得しておく

https://scrapbox.io/Bluesky/ カスタムドメインをハンドルとして設定する

招待コード 🔗

招待コードは2週間ごとに1つ発行される

https://scrapbox.io/Bluesky/invite_code の取得方法

CLIからポスト 🔗

既にいくつかの CLI は出ているが、自分は bsky を選んだ

$ go install github.com/mattn/bsky@latest
$ bsky -v
bsky version 0.0.43
$ bsky login ytkg.bsky.social [password]
$ bsky show-profile
Did: did:plc:kibug5qaam5kntgemionxycz
Handle: ytkg.bsky.social
DisplayName: YOSHIKI
Description: Software Engineer
Site: https://takagi.dev
Blog: https://takagi.blog
GitHub: https://github.com/ytkg
Follows: 3
Followers: 1
Avatar:
Banner:
$ bsky post 'bsky からポスト'
at://did:plc:kibug5qaam5kntgemionxycz/app.bsky.feed.post/3jwy4eno5sk2t

Raspberry Pi に Cloudflared をインストールする方法

手順 🔗

$ wget https://github.com/cloudflare/cloudflared/releases/download/2023.5.1/cloudflared-linux-armhf.deb
$ sudo apt install ./cloudflared-linux-armhf.deb

最新バージョンは https://github.com/cloudflare/cloudflared/releases で確認できる

$ cloudflared --version
cloudflared version 2023.5.1 (built 2023-05-23-2246 UTC)

バージョンが確認できればOK

$ rm ./cloudflared-linux-armhf.deb

このファイルはもう不要なので削除する

参考 🔗

CloudflareでRaspberryPiをリモートSSHしてみた

【Cloudflare Workers】キャッシュが効いているかを確認する方法

レスポンスヘッダーの cf-cache-status が HIT になっていればキャッシュが効いている

$ curl -si https://example.net/ | grep cf-cache-status
cf-cache-status: HIT

Cloudflare Workers の Cache API はカスタムドメインを使用している時のみ有効になる

参考 🔗

【Mac】「"vagrant"を開くとコンピュータが破損します。」という警告がでるようになった

Tags: Vagrant Mac

問題 🔗

Mac で Vagrant を起動(vagrant up)しようとすると、「“vagrant"を開くとコンピュータが破損します。」という警告がでるようになった

001.png

ちなみに「OK」押しても問題ない(何も起きない)

解決方法 🔗

結論としては、最新バージョンの Vagrant をインストールしたら良い

$ brew install hashicorp/tap/hashicorp-vagrant

その他のインストール方法は https://developer.hashicorp.com/vagrant/downloads

原因 🔗

2023年1月23日に RPM パッケージの署名キーをローテーションしていて、古い署名キーが4月24日に失効したため証明書が無効になったらしい
それで古い証明書で署名されたソフトウェアを起動しようとすると、Mac はそれをマルウェアとして認識して警告が出るようになった

https://support.hashicorp.com/hc/en-us/articles/13177506317203

1月23日以前にダウンロードした Vagrant が対象となっている

参考 🔗

“vagrant” will damage your computer. | Macos monterey · Issue #13132 · hashicorp/vagrant

【Ruby】XOR 交換アルゴリズムで2つの変数の値を入れ替える

XOR 交換アルゴリズムとは、XOR演算子(^)を使って、2つの変数の値を入れ替えるアルゴリズムのことで、一時変数を使わず変数の値を交換することができる

a = 1
b = 3

puts "Before swapping: a = #{a}, b = #{b}"

a = a ^ b
b = a ^ b
a = a ^ b

puts "After swapping: a = #{a}, b = #{b}"
$ ruby app.rb
Before swapping: a = 1, b = 3
After swapping: a = 3, b = 1

配列の場合はこれが使えない 🔗

配列には XOR 演算子がないのでエラーが発生する

$ ruby app.rb
Before swapping: a = [1, 2, 3], b = [4, 5, 6]
app.rb:6:in `<main>': undefined method `^' for [1, 2, 3]:Array (NoMethodError)

a = a ^ b
      ^

算術演算子(+ と -)を使えばできなくもない(注意あり)

ChatGPT にコミットメッセージを考えてもらう CLI ツールを作った

Tags: ChatGPT CLI Deno

最近はコミットメッセージを ChatGPT に考えてもらっている
指示の入力と差分のコピペが面倒になったので、CLI ツールを作った

ytkg/commit-genius - GitHub

ツール名も ChatGPT に考えてもらった

インストール方法と使い方 🔗

インストール 🔗

Deno で作った

$ deno install --allow-env --allow-run --allow-net --allow-read https://deno.land/x/commit_genius/cg.ts
✅ Successfully installed cg

$ cg --version
cg v0.4.0

使い方 🔗

環境変数に OpenAPI の API キーをセット

$ export OPENAI_ACCESS_TOKEN=sk-HogehogeXXX

git add して、コマンド叩けばコミットメッセージの候補が出てくる

$ git add .
$ cg
Possible commit message suggestions:
- Update installation guide (インストールガイドを更新)
- Add --allow-write flag to installation command (インストールコマンドに --allow-write フラグを追加)
- Update README.md with usage examples (README.mdを使用例付きで更新)

日本語も欲しかったので表示するようにしている(後々オプションで表示・非表示に選べるようにする予定)

【Gatsby】v4 から v5 にアップグレードした

Tags: Gatsby

このブログは Gatsby で作って、Cloudflare Pages でホスティングしている

先日、Cloudflare Pages で Node.js 18 がサポートされた ので、Gatsby v5 にアップグレードした

自分の環境では公式が用意しているマイグレーションガイド 通りにやって問題なく動作した

唯一の変更点(自分の環境での話) 🔗

気づいていないだけで他にもあるかもしれないけど、gatsby-plugin-sitemap の仕様変更があった

デフォルトのアウトプットパスが /sitemap から / に変更された

デフォルト値を使っていたので、サイトマップ URL が変わった

https://takagi.blog/sitemap/sitemap-index.xml から https://takagi.blog/sitemap-index.xml になった

サーチコンソールに登録しているサイトマップ URL を登録し直して作業は終了

Ruby で ChatGPT API を触る(Stream 編)

Tags: Ruby ChatGPT API

前回、Ruby で ruby-openai gem を使って、ChatGPT API を触ってみた

今回は ChatGPT の Web 版のように返答を少しずつ表示するやつをやってみる

ruby-openai はまだ Stream には対応していないので、Faraday を使って実装した

完成物 🔗

コード 🔗

require 'bundler/inline'

gemfile do
  source 'https://rubygems.org'
  gem 'faraday'
end

url = 'https://api.openai.com'
openai_api_key = 'APIキー'
headers = { Authorization: "Bearer #{openai_api_key}" }

faraday = Faraday.new(url: url, headers: headers) do |conn|
  conn.request :json
end

params = {
  model: 'gpt-3.5-turbo',
  messages: [
    { role: 'user', content: 'こんにちは!' }
  ],
  stream: true
}

faraday.post('/v1/chat/completions') do |req|
  req.body = params.to_json

  req.options.on_data = Proc.new do |chunk|
    chunk.split('data: ')[1..].each do |data|
      text = JSON.parse(data)
      choice = text['choices'][0]

      return if choice['finish_reason'] == 'stop'

      print choice['delta']['content']
    end
  end
end

実行結果 🔗

001.gif

Cloudflare Pages で Node.js 18 がサポートされた

ついに Cloudflare Pages で Node.js 18 が動くようになった

公式ドキュメント の Node.js Supported versions も Any Version という書き方になっている(これは全部のバージョンに対応しているという意味でいいのかな?)

これでこのブログも Gatsby v5 に上げることができる(Gatsby v5 は Cloudflare Pages ではまだ動かない

Node.js 18 に変更する 🔗

さっそく、このブログも Node.js 18 に上げてみる

【Docker】Rails Console で日本語を入力すると落ちる

Tags: Rails Docker

問題 🔗

Docker コンテナ内で、Rails Consoleを起動して、日本語を入力しようとしたら落ちた

[1] pry(main)> '���'
/usr/local/lib/ruby/gems/2.0.0/gems/pry-0.10.1/lib/pry/history.rb:106:in `write': "\xE3" from ASCII-8BIT to UTF-8 (Encoding::UndefinedConversionError)
        from /usr/local/lib/ruby/gems/2.0.0/gems/pry-0.10.1/lib/pry/history.rb:106:in `puts'
        from /usr/local/lib/ruby/gems/2.0.0/gems/pry-0.10.1/lib/pry/history.rb:106:in `save_to_file'
        from /usr/local/lib/ruby/gems/2.0.0/gems/pry-0.10.1/lib/pry/history.rb:50:in `call'
        from /usr/local/lib/ruby/gems/2.0.0/gems/pry-0.10.1/lib/pry/history.rb:50:in `push'
        from /usr/local/lib/ruby/gems/2.0.0/gems/pry-0.10.1/lib/pry/pry_instance.rb:267:in `handle_line'
        from /usr/local/lib/ruby/gems/2.0.0/gems/pry-0.10.1/lib/pry/pry_instance.rb:243:in `block (2 levels) in eval'
        from /usr/local/lib/ruby/gems/2.0.0/gems/pry-0.10.1/lib/pry/pry_instance.rb:242:in `catch'
        from /usr/local/lib/ruby/gems/2.0.0/gems/pry-0.10.1/lib/pry/pry_instance.rb:242:in `block in eval'
        from /usr/local/lib/ruby/gems/2.0.0/gems/pry-0.10.1/lib/pry/pry_instance.rb:241:in `catch'
        from /usr/local/lib/ruby/gems/2.0.0/gems/pry-0.10.1/lib/pry/pry_instance.rb:241:in `eval'
        from /usr/local/lib/ruby/gems/2.0.0/gems/pry-0.10.1/lib/pry/repl.rb:77:in `block in repl'
        from /usr/local/lib/ruby/gems/2.0.0/gems/pry-0.10.1/lib/pry/repl.rb:67:in `loop'
        from /usr/local/lib/ruby/gems/2.0.0/gems/pry-0.10.1/lib/pry/repl.rb:67:in `repl'
        from /usr/local/lib/ruby/gems/2.0.0/gems/pry-0.10.1/lib/pry/repl.rb:38:in `block in start'
        from /usr/local/lib/ruby/gems/2.0.0/gems/pry-0.10.1/lib/pry/input_lock.rb:61:in `call'
        from /usr/local/lib/ruby/gems/2.0.0/gems/pry-0.10.1/lib/pry/input_lock.rb:61:in `__with_ownership'
        from /usr/local/lib/ruby/gems/2.0.0/gems/pry-0.10.1/lib/pry/input_lock.rb:79:in `with_ownership'
        from /usr/local/lib/ruby/gems/2.0.0/gems/pry-0.10.1/lib/pry/repl.rb:38:in `start'
        from /usr/local/lib/ruby/gems/2.0.0/gems/pry-0.10.1/lib/pry/repl.rb:15:in `start'
        from /usr/local/lib/ruby/gems/2.0.0/gems/pry-0.10.1/lib/pry/pry_class.rb:169:in `start'
        from /usr/local/lib/ruby/gems/2.0.0/gems/pry-nav-0.2.4/lib/pry-nav/pry_ext.rb:17:in `start_with_pry_nav'
        from /usr/local/lib/ruby/gems/2.0.0/gems/railties-4.0.2/lib/rails/commands/console.rb:90:in `start'
        from /usr/local/lib/ruby/gems/2.0.0/gems/railties-4.0.2/lib/rails/commands/console.rb:9:in `start'
        from /usr/local/lib/ruby/gems/2.0.0/gems/railties-4.0.2/lib/rails/commands.rb:62:in `<top (required)>'
        from bin/rails:4:in `require'
        from bin/rails:4:in `<main>'

解決方法 🔗

環境変数でマルチバイト文字列を使うようにしたら良い

Ruby で ChatGPT API を触る

Tags: Ruby ChatGPT API

Ruby で ruby-openai gem を使って、ChatGPT API を触ってみた

Hello World! 的なやつ 🔗

「こんにちは」とメッセージを送って、そのレスポンスを表示する

require 'bundler/inline'

gemfile do
  source 'https://rubygems.org'
  gem 'ruby-openai'
end

client = OpenAI::Client.new(access_token: 'access_token')

response = client.chat(
  parameters: {
    model: 'gpt-3.5-turbo',
    messages: [{ role: 'user', content: 'こんにちは' }]
  }
)

puts response.dig('choices', 0, 'message', 'content')
$ ruby app.rb
こんにちは!私はAIアシスタントです。どのようなご要望がありますか?

しりとり 🔗

ループでしりとりをやってみた

loop do
  print 'User: '
  content = gets.chomp

  response = client.chat(
    parameters: {
      model: 'gpt-3.5-turbo',
      messages: [{ role: 'user', content: content }]
    }
  )

  puts "Assistant: #{response.dig('choices', 0, 'message', 'content')}"
end
$ ruby app.rb
User: しりとりをしよう
Assistant: りんご
User: ごりら
Assistant: ごりらとは、哺乳動物の一種で、日本語では「サイチョウザメ」「ラッコウオ」とも呼ばれます。体重は約2~3トンにもなり、大型哺乳動物の一つです。鼻先に角質の「つの」があり、強力な力で木を倒したり、車両をも動かすことができます。草食性で、主に木の葉などを食べす。また、ごりらは現在絶滅の危機に瀕しており、保護が必要な動物の一つです。
User:

失敗 🔗

「りんご」の次に「ごりら」と送ると、ゴリラの説明が返ってきた

CentOS 7.9 に Ruby 3.1.3 をインストールする

Tags: Ruby CentOS

問題 🔗

CentOS 7.9 に Ruby 3.1.3 をインストールしようとしたら、gcc のバージョンが古いみたいでインストールできなかった

$ cat /etc/redhat-release
CentOS Linux release 7.9.2009 (Core)
$ gcc --version
gcc (GCC) 4.8.5 20150623 (Red Hat 4.8.5-44)
Copyright (C) 2015 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.  There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
$ rbenv install 3.1.3
To follow progress, use 'tail -f /tmp/ruby-build.20230403202324.15642.log' or pass --verbose
Downloading ruby-3.1.3.tar.gz...
-> https://cache.ruby-lang.org/pub/ruby/3.1/ruby-3.1.3.tar.gz
Installing ruby-3.1.3...

BUILD FAILED (CentOS 7.9.2009 using ruby-build 20230330-2-gf2c3a7f)

Inspect or clean up the working tree at /tmp/ruby-build.20230403202324.15642.bk87LP
Results logged to /tmp/ruby-build.20230403202324.15642.log

Last 10 log lines:
compiling dmyext.c
translating probes probes.d
miniinit.c: トップレベル:
cc1: 警告: 認識できないコマンドラインオプション "-Wno-tautological-compare" です [デフォルトで有効]
cc1: 警告: 認識できないコマンドラインオプション "-Wno-self-assign" です [デフォルトで有効]
cc1: 警告: 認識できないコマンドラインオプション "-Wno-parentheses-equality" です [デフォルトで有効]
cc1: 警告: 認識できないコマンドラインオプション "-Wno-constant-logical-operand" です [デフォルトで有効]
cc1: 警告: 認識できないコマンドラインオプション "-Wno-cast-function-type" です [デフォルトで有効]
make: *** [miniinit.o] エラー 1
make: *** 未完了のジョブを待っています....

解決方法 🔗

gcc のバージョンを上げる

switchbot gem v0.8.0 をリリースした

SwitchBot API 用の Gem、switchbot v0.8.0 をリリースした

https://rubygems.org/gems/switchbot
ytkg/switchbot - GitHub

変更点 🔗

今回のアップデートは内部的なリファクタリングが中心で、機能としては Plug Mini に対応した

いつもと違うのは、Plug Mini の対応はプルリクエストで頂いた点
とてもありがたい!

Add Plug Mini by kataring · Pull Request #21 · ytkg/switchbot

使い方 🔗

require 'switchbot'

client = Switchbot::Client.new('YOUR_TOKEN', 'YOUR_SECRET')

plug_mini = client.plug_mini('C271111EC0AB')

# ステータスの確認
plug_mini.status

# スイッチON
plug_mini.on

# スイッチOFF
plug_mini.off

# スイッチONかどうか確認
plug_mini.on?

# スイッチOFFかどうか確認
plug_mini.off?

# スイッチON/OFFのトグル
plug_mini.toggle

Categories


Tags