hatenablog gem 0.5.0 をリリースした

Rubygem の hatenablog 0.5.0 をリリースしました。

github.com

アップデート

Hatenablog::Client.new にブロックを渡すことで認証情報を設定できるようにしました。

client = Hatenablog::Client.new do |config|
  config.consumer_key        = '<consumer key>'
  config.consumer_secret     = '<consumer secret>'
  config.access_token        = '<access token>'
  config.access_token_secret = '<access token secret>'
  config.user_id             = '<user name>'
  config.blog_id             = '<user_name>.hatenablog.com'
end

従来どおり YAML ファイル経由での設定もできます。

全エントリを取得するメソッド Hatenablog::Client#all_entries を追加しました。

entries = client.all_entries

あと、gem に直接関係ないですが、README が不足気味だったので増量しました

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

2016-11-12(土)の Yokohama.rb Monthly Meetup #74 に参加しました。

yokohamarb.doorkeeper.jp

  • 前半は Ruby レシピブック読書会
  • 後半は LT

という 7 月以来の流れでした。

レシピブック

今回はいつもより 30 分短かったこともあって、レシピ 238, 239 だけ読みました。

レシピ 238

のふたつを使って、プログラムの処理途中に実行ユーザの権限やグループ権限を切り替えたりする方法についてのレシピです。Docker や Foreman のグループを処理途中で使いたいときなどに便利ではという話でした。

スーパーユーザから一般ユーザへとプロセス実行権限を一時的に切り替えるために、実効 UID というものを Process#euid= を使って書き換えています。一方で、実 UIDというまた別の ID もあるようで、それらの違いがよくわからなかったので、質問してみました。その場で調査した結果(Wikipedia のユーザ識別子)、次の違いがあるとわかりました。

  • 実効 UID, 実効 GID(グループ ID)
    • ファイルの作成やアクセスに影響する ID
    • たとえばあるファイルを開く権限があるかチェックするときに使う
  • 実 UID, 実 GID
    • シグナル送信に影響する ID
    • たとえば kill でプロセス終了できる権限があるかチェックするときに使う

もはや Ruby とはあまり関係ないですが、勉強になりました。

レシピ 239

Windows レジストリにアクセスするためのライブラリ win32/registry についてのレシピです。メモ帳 (notepad.exe) 終了時のウィンドウ位置取得を例にした、レジストリの操作方法についてでした。

Windows ユーザが会場にいないので、完全に読むだけになるかと思いきや、@igrep さんがあらかじめ準備してあった自宅の Windows 環境にリモート接続しレシピを実演してくれました。ありがとうございます!

LT

LT 一本目は、@hamakn さんからリクエストがあったこともあり、僕が先月受けていたGMO ペパボの第二新卒向け研修についてかんたんにご紹介しました。

LT 二本目は、@hamakn さんから Rails の accepts_nested_attributes_forlimit オプションでハマった話や、DB 設計の悩みについてなどでした。DB 周りの知識大事という話に収束していきました。

懇親会

いつも使っている吉田飯店というお店の名前が「吉田飯店」に変わってました…

いかにエンジニアとして満足できる仕事をして成仏するか、みたいな人生観的な話と昨今のゲームの話が展開されていました。


次回 2016-12-10(土)の Yokohama.rb は以下リンクから申し込めます。読書会に参加するもよし、もくもくするもよし、他の方と技術トークするもよしで初心者から上級者までフィットするコミュニティだと思いますのでぜひぜひ。

yokohamarb.doorkeeper.jp

Fukuoka.rb #66 に参加した

現在、会社の研修で福岡に来ています。福岡には、地域 Ruby コミュニティとして Ruby コミッタの nagachika さんや弊社の udzura さんが主催されている Fukuoka.rb があります。今回、udzura さんに誘っていただき、10/12(水)に福岡・天神のグルーブノーツ社で開催された Fukuoka.rb #66 に参加してきました。

fukuokarb.connpass.com

弊社の研修メンバ 5 人が参加したので、会場がかつてない人口密度になりました。

LT として、morygonzalez さんから「Arel おじさんになって ActiveRecord のクエリを高速化しよう」というお話がありました。Arel は ActiveRecord のなかで様々な DB 用の SQL を生成するライブラリです。ActiveRecord で DB 操作を書いていると、Arel が無駄のあるクエリを生成することもあるらしく、Arel の性質をもとに、SELECT するカラムを絞るなどの方法で、できるだけ最適なクエリを生成するようにするのが大事ということでした。パフォーマンスに関わる部分は、できるだけ内部動作まで理解した対策が必要そうです。

その後、udzura さんの mruby gem ライブコーディングがありました。matsumotory さん作の mruby-mrbgem-template を使って gem のテンプレートを作成後、mruby や C で実装していくのを見ていました。mruby の C 拡張は Ruby の C 拡張よりとっつきやすいらしいので、試してみたいです。このあたりの記事が参考になりそう。

qiita.com

発表を聞いたあとはもくもくしていました。僕は最近利用者の方から意見をもらうことが増えた Ruby gem hatenablog の修正をしていました。徐々にやっていきます。