ブックマーク / watson.hatenablog.com (6)

  • 最終出社日でした - @watson1978 の日記

    今日はReproでの最終出社日。思い返せば 30 歳も過ぎてから Ruby とどう関わっていくかという人生だった。 MacRuby (2010年~) 暇つぶしに Mac OS X のアプリを作ってみようかと思い立った時に出会ったプロジェクトだった。 今のように Swift や clang というコンパイラもなく、 Objective-C 言語というとにかく [] を書きまくらないとならずどうにもなじめなかった。もともと趣味Ruby はさわっていたのでそれでアプリが作れたら良いのにと思っていたところで、渡りに船的にさわり始めたのがきっかけだった。 私がさわり始めたころはちょっとしたコードを書いてもすぐにクラッシュするような感じで、ちまちま「こういうコードを書くとクラッシュするんだけど何でだろう?」とプロジェクトの issue に書き連ね、気がついたら「こういう風に直すと動くようになるんだ

    最終出社日でした - @watson1978 の日記
    koyancya
    koyancya 2024/02/09
    乙乙っす
  • ObjectSpace を利用して Ruby 製 worker のメモリ使用量を改善した - @watson1978 の日記

    現在、Ruby 製 worker を作成することを業務で行っているのですが、継続的にメモリ使用量が増加する現象に遭遇してました。 (グラフの値が下がったタイミングが数回ありますが、それぞれでデプロイが行われてリセットされただけ) ObjectSpace.allocation_sourcefile や ObjectSpace.allocation_sourceline を利用してどのファイルのどの行でメモリ確保が多くなるのか調べれるようにしました。 以下のようなコードを worker に追加しました。 require 'objspace' class MemoryProfiler INTERVAL = 5 * 60 DISPLAY_COUNT = 20 def self.start Thread.start do loop do memory_usages = {} ObjectSpace.

    ObjectSpace を利用して Ruby 製 worker のメモリ使用量を改善した - @watson1978 の日記
    koyancya
    koyancya 2023/08/03
  • RMagick のメモリ使用量を改善した - @watson1978 の日記

    【追記 2019/06/17】パッチを含んだ RMagick v3.2.0 がリリースされました。 RMagick を使用すると馬鹿みたいにメモリ使用量があがると言われ続けてましたが、修正方法の見込みがたちようやく直しました。 何が起きていたか RubyKaigi 2019 で登壇した際にも話しましたが、RMagick が引き起こしていた多数のメモリリークは修正済み だったので、Ruby の GC が動作すると抱え込んでいる不要なメモリ領域は解放されていました。 問題は Ruby の GC がなかなか動作してくれないことにありました。例えば RMagick で画像用のオブジェクトを生成しても、サイズはたかだか 40 bytes しかありません。 require 'rmagick' require 'objspace' img = Magick::Image.new(1000, 1000)

    RMagick のメモリ使用量を改善した - @watson1978 の日記
    koyancya
    koyancya 2019/06/16
    偉業すぎる......
  • バッチ処理の一部で 30 分以上かかっていた処理を 14 秒で終わるようにした話 - @watson1978 の日記

    Ubiregi Advent Calendar 2018 の 18 日目です。 ユビレジではたくさんのお客様の大量の POS データをお預かりしており、様々なバッチ処理も実行されています。今回は特定のケースでバッチ処理の一部が 30 分以上かかっていた処理を 14 秒で終わるようにした話について書きたいと思います。前回の Ruby 2.5 の SEGV と闘った話 - @watson1978 の日記 に引き続き DTrace を使った話になります。 はじめに ユビレジでは CSV ファイルでお客様が特定のデータをダウンロードしたりアップロードできる機能があります。CSV ファイルにエクスポートしたり、CSV ファイルから DB に取り込む処理を Worker を起動してバッチ処理しています。 大量のデータを保有しているアカウントと同量のデータを用意して手元の環境で試したところ時間がかかるこ

    バッチ処理の一部で 30 分以上かかっていた処理を 14 秒で終わるようにした話 - @watson1978 の日記
    koyancya
    koyancya 2018/12/18
  • RMagick の ImageMagick 7 対応の進捗 - @watson1978 の日記

    Ubiregi Advent Calendar 2018 の 2 日目です。 私は ユビレジ でスクラムチームに所属し Rails や iOS、React.js なコードを書いております。スクラムチームでは各個人に得手不得手がありながらもサーバやクライアントのコードを分け隔て無く面倒見ています。チームの簡単な紹介については、初日の ユビレジ開発チームのご紹介 をご覧ください。 2 週間のスプリント期間で機能開発しています。この期間内にはバグマッシュデーという「普段の開発では見落とされがちな軽微な不具合の修正や技術的な調査をしたり、メンバーが自由にプロダクトに貢献」できる日が用意されています。私はバグマッシュデーを活用しながら弊社でも利用している RMagick を ImageMagick 7 に対応する作業を細々とやっております。 出発点 大江戸Ruby会議 07 の発表題材として作業をは

    RMagick の ImageMagick 7 対応の進捗 - @watson1978 の日記
    koyancya
    koyancya 2018/12/02
    めっちゃ進んでる -> “コード中に TODO と書き残した箇所が 90 ほどあったのですが、現在は 2 箇所になりました。”
  • #RubyKaigi 2018 2日目に参加しました。 - @watson1978 の日記

    RubyKaigi 2018 2日目に参加してきました。お昼に弁当べたあと、仙台城跡を見に歩いて行ってきました(帰りはタクシーだったけど)。天気が良くて満足度が高かったです。 My way with Ruby My way with Ruby 活動されている内容のはなし。 フリーソフトウェアを使って Ruby でできることをたくさん増やす ライブラリのメンテナンス 130くらいメンテナンスしているライブラリがある 自分にとって必要だったから。 Web の feed RSS/ATOM RSS/ATOM の validation Ruby 2.6 以降はキーワード引数に対応 REXML REXML → Ruby Electric XML ライブラリ作者と Ruby を通じてやりとりすることになった コード懇親会しますよ Matz も参加しますよ 2010年からメンテナーになった Ruby

    #RubyKaigi 2018 2日目に参加しました。 - @watson1978 の日記
    koyancya
    koyancya 2018/06/05
  • 1