macOSでの動的ロード問題まとめ

主な問題 最近のRuby+Xcodeでは以下の4つの問題があるっぽい dynamic_lookupがXcode 14で警告が出る two-level namespace vs. flat namespace 別の拡張ライブラリのシンボルを参照できない disable-sharedなrubyがfat binaryを読めない dynamic_lookupがXcod…

Rubyとnamespaceと拡張ライブラリについて

2020年代はモノリスの時代 ここ10年ほど流行っていたマイクロサービスについての理解が深まり、その限界が広く知られるようになってきた。ShopifyのModular Monolithについての記事などは代表例だろう。並行して必要性が叫ばれるようになってきたのがnamespa…

『研鑽Rubyプログラミング』をもらった

訳者の角谷さんから『研鑽Rubyプログラミング』をもらったので読みました。 研鑽Rubyプログラミング 実践的なコードのための原則とトレードオフ作者:Jeremy Evans,角谷信太郎ラムダノートAmazon 読んだ第一印象は「Effective Perl 第2版: 上級Perlプログラマ…

How to accelerate Ruby development; Provide real world use case

The history of decentralization of Ruby, and what you can do for the future The history of Ruby development is also a history of transferring and separating the power of Ruby's decision from Matz. Many years ago all Ruby development was do…

char8_tによせて

C++標準化委員会、ついに文字とは何かを理解する: char8_tという記事が話題だってので、つらつらと書いてみました。 「グリフ」について グリフ(glyph)という言葉の定義をめぐって でも触れられていますが、「グリフ」という言葉が「字体」を指すのか「字…

観察日記 2018-02-14

配列の全ての要素が等しいか否か mrkn 配列の全ての要素が等しいことはどう確認したら良いんだろう。 `ary.all? {|e| e == ary[0] }` これかな usa ary.uniq.size == 1 mrkn なるほど > uniq usa all?でブロック引数より速そうな予感 いやでもaryがでかくて…

はじめての投資

投資とは 最近、「投資を始めようかな」と考える人が増えたように思います。この記事を読んでいるあなたもきっとそうでしょう。 アベノミクス、株高、円安、ビットコイン、転職など理由はさまざまでしょうが、リーマンショックを乗り越えた世界の、日本の経…

SEGV探偵が往く

人は誰しも108つの夢を持つと言いますが、読者の皆さんにも探偵を夢見た人は多いことでしょう。実際問題として探偵業をやろうと思ったら地道な聞き込み&張り込みの日々でしょうし、逆に派手な探偵業は陰謀&殺人で恐ろしい。わたしも自分の命は大事ですから…

なぜマストドンは日本で花開いたのか、あるいはソシャゲが日本で流行るわけ

なぜマストドンは日本で花開いたのか マストドンが日本で流行ったのはなぜかという話題が盛り上がりましたね。わたしは『その理由がロリコンでないのなら、なぜマストドンは日本で花開いたのか』が当を得ていると思いました。つまり、海外では「一定人数以上…

2017年のruby-mswin事情

おしらせ 以下に最新版があります。 qiita.com 序 WindowsでRubyを使うのは難しいようで簡単なようで難しいことです。 ただインストールするだけならばインストーラがあるので簡単です。公式サイトのダウンロードページから探しましょう。 ……ここでいきなり…

Go言語感想文

序 最近、敵情視察を兼ねた仕事ととしてGoでアプリケーションを書いていた。このアプリケーションがどんなものかはそのうちid:tagomorisさんがどこかで話すと思うけれど、このコンポーネントがOSS化される予定はいまのところないので、そこで得た知見をここ…

RubyのTypo Checkerについての考察

RubyKaigi 2014の基調講演でまつもとさんが静的型の野望を明かしてから2年半が経った。 その間の進捗は芳しいものとは言えないけれど、それでもまじめな研究として例えば多相型、推論、Ruby が行われている。普通の人は私のこの記事を読むよりもこちらを読ん…

macOS上のAPFSはUnicode Normalizationを行うのか?

iOS 10.3がリリースされましたが、APFSへの移行が含まれていて話題です。特に文字コード界隈ではHFS+で搭載されていた暗黙のUnicode Normalizationがなくなっている点が指摘されています1。 ではmacOSではどうなのでしょうか。SierraならばすでにAPFSを扱う…

そして最近の分岐予測について2

先日の日記で最近のIntel CPUでは間接分岐の分岐予測がほとんどミスしなくなっているという話を紹介しましたが、Branch Prediction and the Performance of Interpreters - Don't Trust Folkloreという論文にまさに同じことが書かれているのを見つけました。…

ムーアの法則の終わり、そして最近の分岐予測について

ムーアの法則の終わり、そして最近の分岐予測について 序 僕らx86の大地の上に生きるものは、この10年Intelが告げるTick-Tockの鐘の音にあわせてムーアの法則の恩恵を享受してきた。*1 *2 しかし、Kaby Lakeの14nmプロセス採用つまり、2年おきのプロセスルー…

YARV命令ごとの実行コストを知るには

プログラムのボトルネックを探すには大きく分けて二つの方法があります。心眼を研ぎ澄ましていきなり最適化してみてから考えるのと、何かしらのツールでサイクル数やCPU時間を計測して地道に探す方法ですね。皆さん普通は前者だと思うんですが、それが行き詰…

CRubyとVisual Studio 15

先月「Visual Studio “15” Preview リリース」というニュースがありましたがみなさんはもう試してみましたか? おそらくCRuby的な意味で試した人は世界でも稀なんじゃないかと思います。MSVC14のときもcl.exeの起動でつまづいていましたが、今回はさらにその…

投機実行とOut of Orderはつよいというはなし

fluentdな人達と話していると定期的にRubyのオブジェクト生成が遅いとdisられます。 本質的にしょうがない部分もあるんですが、それにしても遅い部分も結構あるので、おもむろにperf statとperf recordを取ってみましょう。 % sudo perf stat -d ./miniruby …

GZIPをZlibデータとして読めるのか?

結論 ムリ。 何がしたいの 例えばMySQLにGZIPのデータが入ってるとき、誰しもこのデータを文字列関数とUNCOMPRESS関数だけで解凍できないのだろうかと思うのでは無いでしょうか。 GZIP +---+---+---+---+---+---+---+---+---+---+=======================+--…

割り切れてるかの確認を高速化しようとして、コンパイラに負けた話

今日見ていきたいのはtime.cのquo(VALUE x, VALUE y)です。akrさんのRuby における 2038年問題の解決で述べられているとおり、RubyのTimeは内部表現にRationalを使えるようになっているので、その辺を司る部品ですね。 static VALUE quo(VALUE x, VALUE y) {…

Bignumの10進文字列化を速くしよう

んー、花粉症がひどいし、ここはぱーっとRubyでも高速化して景気づけしたいですね。 先日の日記 でRubyとCしか読めないこの日記の読者の皆さんも、アセンブラに親しみが持てるようになったのではないかと思います。せっかくなので、引き続きこの方向で頑張っ…

CRubyとLink Time Optimizationについて

最近、夜寝る前にRubyのベンチマークを眺めたり、仕事の障害時のログを眺めるっていう悪趣味極まりない習慣がついてしまった。まぁ、草木も眠る丑三つ時にこの世の真理を求めて何かを読みふけるって言うのは、この業界にいる人間なら誰しもがやることなんじ…

What is nil? No matter. What is nil? Never mind.

"What is nil?" is mysterious question in Ruby. You may answer like "nothing", "nothing exists", or "NULL". Brian, the founder of Rubinius, wrote his thoughts around Lonely operator. CRuby developers sometimes discussed about nil for exampl…

therubyracer considered harmful

要約 therubyracerはやめてexecjsからnodeコマンド使え。 解説 Rails 3.1 で Asset Pipeline が導入されて以来、Gemfileにgem 'therubyracer'と書く人も増えたのではないでしょうか。しかし、それがどの程度のリスクを背負っているのか自覚のない人も多いよ…

RubyとGit for Windows

序 人は誰しも理想郷ユートピアを求めるものだし求めてしまうものだろう。「最強のUnix環境」、これもまたそうしたユートピアの一つである。 21世紀の正常な判断能力を持った人間A pragmatic programmerならば、ユートピアを探し求めることは諦めて、OS Xこ…

Ruby 2.3.0 released

Ruby 2.3.0 Releasedでした。皆さんお疲れ様でした。 リリーススケジュールとしては今回は例年になくぐだぐだで、リリース直前までブランチを切らなかったのも1.9系の仕様が安定した1.9.1以降では異例のことです。もっとも、これはCIが整備されたことで形式…

Ruby会議2015

Ruby会議2015 1日目 朝 家で Ruby 2.3.0-preview2 のsvnタグを打ってから優雅に会場に到着し、オープニングでリリースを行う予定だったのだが、雨で時間ロスしつつ会場へのラストワンマイルで迷ったため、焦ってしまっていまいちいい感じにならなかったのが…

Treasure Data に入社しました

今日から Treasure Data で働くことになりました。 前職が一段落して(退職エントリ)転職を考えた時に、ちょうどtagomorisさんが何社も回った末にTreasure Dataに決めていたので、TDにしました。 … もちろん物事を決めるときに理由はいくつもあるわけでして…

Visual C++ 14 と Ruby その2

というわけで、Rubyに普通にマージして良さそうな修正は既に入れてしまいつつ、workaroundをPull Request #884 として載せておきました。なんか妙にstack over flowしますが、おおむねtest-allも動きます。 また、Microsoft Connectにfeedbackも書きました。…

Visual C++ 14 と Ruby その1

Microsoft Visual Studio 2015 CTP6がでましたね。VS14ではVisual C++ Runtimeに大きく変更が入るそうで、とてもイヤな予感がしますから、ちょっと様子を見てみましょう。 Azure使いの人はMicrosoft Azure virtual machine galleryにあるVisual Studio Ultim…