タグ

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

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

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

    最終出社日でした - @watson1978 の日記
    ryshinoz
    ryshinoz 2024/02/09
  • Ruby の FFI によるメソッド呼び出しのオーバーヘッド - @watson1978 の日記

    FFI を利用して C のライブラリを呼び出す時のオーバーヘッドがどれくらいなのかと思い調べてみました。 使用したコード 呼び出し時のオーバーヘッドを知りたかったので、処理負荷がかからない単純に加算するだけのコードとしました。 int add(int x, int y) { return x + y; } 使用したコード一式は https://github.com/Watson1978/ffi-benchmark にあるので、興味がある方はそちらを参照ください。macOS 上でしか試してないので、他の環境だと動かないかもしれません。あしからず。 環境 macOS 13.1 Apple M1 Max Apple clang version 14.0.0 (clang-1400.0.29.202) ruby 3.2.0 (2022-12-25 revision a528908271) [arm

    Ruby の FFI によるメソッド呼び出しのオーバーヘッド - @watson1978 の日記
    ryshinoz
    ryshinoz 2022/12/31
  • Xcode を使って Ruby C 拡張ライブラリをデバッグ - @watson1978 の日記

    RMagick のテストが通らないものを調べる際にどのようにデバッグしようかと思ったのですが、Debugging Ruby C Extensions in XCode - Emil Soman's blog に有益なことが書かれておりました。元の記事では Xcode 5.1 が使われていたので最新の Xcode のスクリーンショットを交えつつ手順を書いてみます。 この記事では Ruby C 拡張ライブラリの C 言語で書かれたコードをデバッグする手法を記述します。 デバッグ対象のコードを入手 $ git clone https://github.com/rmagick/rmagick.git Makefile を作成 Ruby C 拡張ライブラリの C 言語のコードは ext ディレクトリ配下にあります。RMagick では ext/RMagick となります。そこへ移動し Makefil

    Xcode を使って Ruby C 拡張ライブラリをデバッグ - @watson1978 の日記
    ryshinoz
    ryshinoz 2019/02/02
  • バッチ処理の一部で 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 の日記
    ryshinoz
    ryshinoz 2018/12/18
  • #RubyKaigi 2018 1日目に参加しました。 - @watson1978 の日記

    発表を聞きながらメモした内容を貼っておきます。 Keynote ことわざの話 ことわざ=先人の知恵 名は体を表す -> 名前重要 名前を付けてアイディアを交換する。名前付けは非常に重要。 1. 振る舞いに対して クラス、メソッド、変数などの概念 名前付けが難しいのは、概念を十分に理解しきれていないから 良い名前付けは使い勝手につながる → 良いソフトウェアにつながる 悪い例:yield_self もう少しましな名前に変更します → then version あげるコミット以外で、意味のあるコミットしたのは 5年ぶりくらい 2. プロジェクトに対して 良い名前はコミュニティーの旗印や求心力になる Ruby という名前じゃなかったら、いまのようではなかっただろう Ruby という名前付けは良かった (1993年) Google 登場前だったので、今なら Google アビリティの高いものに G

    #RubyKaigi 2018 1日目に参加しました。 - @watson1978 の日記
    ryshinoz
    ryshinoz 2018/06/01
    オチが最高でしたw
  • GitHub Flavored Markdown の Quick Look プラグインを作りました - @watson1978 の日記

    弊社ユビレジでは、開発要件や手動でテストすることをMarkdownファイルを書いてGitHub上のレポジトリにPull Requestし管理する運用をしています。 今までさっとプレビューしたいときにはQLMarkdownというプラグインを使用していたのですが、GitHub Flavored Markdownのタスクリストがちゃんとレンダリングされずもやもやしていたので自分でつくってみました。 GitHub Flavored MarkdownをパースするのはGitHubがメンテナンスしているgithub/cmarkが良さそうかと目を付けたのですがタスクリストが扱えないという・・・。機能追加しやすそうだったのでタスクリストを扱えるようにしてみました(https://github.com/github/cmark/pull/94)。 で、できあがったQuick Look プラグインはこちらです。

    GitHub Flavored Markdown の Quick Look プラグインを作りました - @watson1978 の日記
    ryshinoz
    ryshinoz 2018/04/22
  • macOS 上で Ruby のパフォーマンスを計測する - @watson1978 の日記

    (追記 2017-10-02 01:28:42 +0900) Xcode 9 からは以下のように計測に失敗するようです。解決策が見つかるまでは Xcode 8.3 を使うか、Instruments.app で直接計測する必要がありそうです。 $ iprofiler -timeprofiler ./a.out iprofiler error: DTPerformanceSession: Authorization failure. macOS では、ターミナルから iprofiler を経由してコマンドを実行することでパフォーマンスを計測することができる。 $ iprofiler -timeprofiler ./a.out iprofiler: Preparing recording resources iprofiler: Profiling process 66908 (a) for 1

    macOS 上で Ruby のパフォーマンスを計測する - @watson1978 の日記
    ryshinoz
    ryshinoz 2017/03/07
  • 1