SlideShare a Scribd company logo
1 of 27
Download to read offline
メモリアロケーションからみた
拡張ライブラリに大切な
こと
または、Ruby内部構造の基礎知識
日本Rubyの会 etc.
樽家 昌也
自己紹介
• 樽家 昌也 (MasayaTARUI)
• twitter id: @taru
• ircnet: tal_
• freenode: tarui
• 平日はふつうに?サラリーマン。
• 年に1,2度、networkと無縁な生活を求めて旅に
• 仕事で直接Rubyが対象になることは今のところない
• Rubyを使い始めてから13年目ぐらい?
これまで
1. Rubyを使い始める
2. よくわからない不具合はRubyレベルのWorkaroundで適当にごまかす
3. メモリリークとかSEGVに泣かされる
4. 仕方がなく、Cコードに手を入れる
5. Rubyの独特な構成が面白くてCコードに手を入れる ← Now!!
今日の対象者・・・
『NKT77さん「Hadoop with Ruby-僕がPythonを選んだ理由」』
『初心者からコミッターまで、更にPythonistaやらC#erなど幅広い言語
経験を元に、日頃のふとした疑問や事例を紹介できたらとおもいま
す。』
Σ(゚д゚;)
どうやらawayらしい。。。
.rbなのに、おかしくね?
(http://kawasakirb.doorkeeper.jpから引用)
なに話そう…
Rubyがよくわからない人にもわかるプレゼン
=C言語コードについてのプレゼン。
これしかない
メモリアロケーションからみた
拡張ライブラリに大切なこと
アジェンダ
• 拡張ライブラリ書き方復習
• Ruby のGC
• 拡張ライブラリ by C++ 準備不足によりキャンセル ホントウニスイマセン
• おまけ:最近のGC事情
拡張ライブラリ
•RubyにC言語など他言語で書かれたプログラムを
リンクさせて動かす仕組み
•Rubyは拡張ライブラリが書きやすい言語と言われて
いる [誰]
•プロトタイピングをPure Rubyで行ってその後不満が
あれば拡張ライブラリを書けばいいと思います!
はじめての拡張ライブラリ
1. Cコードを用意する
2. ruby –r mkmf –e ”create_makefile(’sample’)”
3. make
4. ruby –r ./sample –e”p JUST_CLASS”
5. 出来上がり
サンプルライブラリAYB
• 全ての基地を頂くライブラリ
• AYBのオブジェクトのbelong_toメ
ソッドに文字列を渡すと、その中
のbaseをXXXXと塗りつぶして最後
に”All your base are belong to us”と
のたまってくれます
• C拡張ライブラリなのに中でsplitと
かconcatとか呼んでますが今回は
気にしないでください・・・
• “base”で分割してforループ
で”XXXX”つけて最後だけ特別な
メッセージを付ける
実行してみる
を実行
めでたく全部の基地をいただけました。
もっと基地がほしい
error! これはrubyのbugですか?
いいえ。拡張ライブラリのです。
悪いところ
RubyのGCってmark&sweep
だから保守的でmark漏れな
んて起こらないんじゃない
の!?
大体この辺が悪くて、利用中のデータが
Garbage Correct されてしまっている
Arrayの中身を走査している最中に
Arrayが消されてお亡くなりに。
※こんな恣意的なコードになったのはなかなかチェックから漏れなかったから・・・
ここで、あまり世間で聞かない話をひとつ
• RubyのGCはRubyオブジェクトの先頭に対してしか調査をしない!
• ArrayとかStringの大きな配列はGCで管理されていない領域に確保される。
(多分、もう当たり前すぎてだれも言及しない…のか?)
Ruby
Object
ただ単に
mallocで
確保され
た領域
保護対象ここだけ
RARRAY_PTR
どうしてmark漏れが発生し、Rubyが落ちる
のか
Ruby
Object
ただ単に
mallocで
確保され
た領域
保護対象ここだけ
RARRAY_PTR
1. RARRAY_PTRで配列の
先頭アドレスをもらう
2. もうこちらのアドレスは使わないので、
レジスタorスタックは再利用可能!
4. このオブジェクトは使われてないと判断。
オブジェクトに関係するものを
RARRAY_PTR先も含めて全部回収。
3. GC発生
5. RARRAY_PTR先の
内容が壊れる
Why?
Ruby
Object
normal
• 単純に言えば効率のため
Ruby
Object
Ruby
Object
Ruby
Object
normal normal
normal
normal
norm
al
小さい
固定長
heaps_slot
名前すらない?
malloced memory?
こちらの領域の
データが何を意味
するかはRubyObject
が管理
こちらのアドレスに関係するデータだけを見ればいい
固定長なので簡単に枝切可能
対処方法
Ruby
Object
ただ単に
mallocで
確保され
た領域
保護対象ここだけ
RARRAY_PTR
1. RARRAY_PTRで配列の
先頭アドレスをもらう
2. もうこちらのアドレスは使わないので、
レジスタorスタックは再利用可能!
4. このオブジェクトは使われてないと判断。
オブジェクトに関係するものを
RARRAY_PTR先も含めて全部回収。
3. GC発生
5. RARRAY_PTR先の
内容が壊れる
ちょっと
待った!!
使っているよマークの挿入
RB_GC_GUARDを挿入することにより、そのオブジェクトを利用する事を
コンパイラに通知
無事に基地をいただけた(忘れかけてたけど)
RB_GC_GUARD() とは
•そこに広がって
いるのは黒魔術。
余人は決して手
を出してはいけ
ない。。。
• 正直、何をしているのかよくわからない
• コンパイラに値をスタックに残しておくように出せる指示はない
• いつコンパイラの最適化によって無効になるかわからない過酷な世界
気をつけるべき点
• RubyのAPIにはいくつかchar *を引数にとるものがありますが…
(rb_str_newやrb_reg_newなど)
• ふつうにあります
• ただ、これに関してはRubyのAPI側で何とかすべきじゃないかと
思わなくもない。 malloced memoryに対して一部保護を入れるなど
GC!ObjectAの中身
ObjectAの回収
Ruby Core
ObjectAの中身を使おうとする
死亡!
所で500000回廻さないと出てこないBugと
か
やってられない
GC.stress = true
1回で十分に
まとめ
• 拡張ライブラリは簡単にかけるよ
• たまには気をつけておかないと、GCで痛い目をみるよ
• でも、たまにだけだよ
• RubyのGCは完全に保守的なわけではなくて、Ruby Objectが入ってる
Heapsしかみないよ
• RB_GC_GUARDは今の所、コンパイラの最適化とのおにごっこ
• 拡張ライブラリを書いたら一度はGC.stress=1で走らせておこう
• mallocで確保しているだけの領域にもなんらかの手当てがほしいなー
• (最近もRuby本体で今回の例と同じバグがありました…)
Rubyの書きやすさ+C言語のスピードの世界へようこそ!
おまけ: 最近のGC事情
•がんがん 手が入ってます
•Bitmap marking すばらしい
•RGenGC すばらしい
hashベンチマーク(ソースは後)
mark user system total real
193p374 22.004 30.46 0.54 31 31.08143
200p195 17.09916 25.79 0.3 26.09 26.1964
r41094 14.4588 28.12 1.34 29.46 29.62575
r41095 12.13761 25.9 1.29 27.19 27.27527
r41097 7.250059 18.98 1.05 20.03 20.10459
r41128 6.633022 18.35 1.12 19.47 19.59778
r41325 1.272689 10.79 0.64 11.43 11.52074
r41634 0.870261 9.07 0.37 9.44 9.456588
0
5
10
15
20
25
30
35
193p374 200p195 r41094 r41095 r41097 r41128 r41325 r41634
mark
user
system
total
real
一部
回数 r41634 Python 2.7.4
1000000 2.809293 1.559357
2000000 5.932282 3.421049
3000000 8.812863 5.801263
Pythonと適当に比較してみた(ソースは後)
Oprofile 取ってみたところ、
支配的なのはst_lookupとsiphashが半々ぐらい
ご静聴ありがとうございました
hashベンチマーク ソース
Pythonとの比較用ソース

More Related Content

What's hot

Python と Xpath で ウェブからデータをあつめる
Python と Xpath で ウェブからデータをあつめるPython と Xpath で ウェブからデータをあつめる
Python と Xpath で ウェブからデータをあつめるShuhei Iitsuka
 
IT業界における伝統芸能の継承 #hachiojipm
IT業界における伝統芸能の継承 #hachiojipmIT業界における伝統芸能の継承 #hachiojipm
IT業界における伝統芸能の継承 #hachiojipm鉄次 尾形
 
bottleで始めるWEBアプリの最初の一歩
bottleで始めるWEBアプリの最初の一歩bottleで始めるWEBアプリの最初の一歩
bottleで始めるWEBアプリの最初の一歩Satoshi Yamada
 
DBエンジニアに必要だったPythonのスキル
DBエンジニアに必要だったPythonのスキルDBエンジニアに必要だったPythonのスキル
DBエンジニアに必要だったPythonのスキルSatoshi Yamada
 
捗るリコメンドシステムの裏事情(ハッカドール)
捗るリコメンドシステムの裏事情(ハッカドール)捗るリコメンドシステムの裏事情(ハッカドール)
捗るリコメンドシステムの裏事情(ハッカドール)mosa siru
 
Rosとgazeboを使った3d空間での3次元畳み込みニューラルネットによる物体認識
Rosとgazeboを使った3d空間での3次元畳み込みニューラルネットによる物体認識Rosとgazeboを使った3d空間での3次元畳み込みニューラルネットによる物体認識
Rosとgazeboを使った3d空間での3次元畳み込みニューラルネットによる物体認識Hiroaki Kaneda
 
グラフデータベース「Neo4j」の 導入の導入
グラフデータベース「Neo4j」の 導入の導入グラフデータベース「Neo4j」の 導入の導入
グラフデータベース「Neo4j」の 導入の導入Hisao Soyama
 
Ros,gazeboとchainerを用いた畳込みニューラルネットワークによる3次元形状の学習
Ros,gazeboとchainerを用いた畳込みニューラルネットワークによる3次元形状の学習Ros,gazeboとchainerを用いた畳込みニューラルネットワークによる3次元形状の学習
Ros,gazeboとchainerを用いた畳込みニューラルネットワークによる3次元形状の学習Hiroaki Kaneda
 
Electron + Mithril Async File Search
Electron + Mithril Async File SearchElectron + Mithril Async File Search
Electron + Mithril Async File Search和晃 西澤
 
Rubyで連結リスト使うためのgemを作った(tsukuba.rb版)
Rubyで連結リスト使うためのgemを作った(tsukuba.rb版)Rubyで連結リスト使うためのgemを作った(tsukuba.rb版)
Rubyで連結リスト使うためのgemを作った(tsukuba.rb版)Sho Hosoda
 
深層学習ライブラリのプログラミングモデル
深層学習ライブラリのプログラミングモデル深層学習ライブラリのプログラミングモデル
深層学習ライブラリのプログラミングモデルYuta Kashino
 
Ruby programmer silverの取得に向けて
Ruby programmer silverの取得に向けてRuby programmer silverの取得に向けて
Ruby programmer silverの取得に向けて善弘 植木
 
再帰、漸化式、差分方程式とアルゴリズム Gx#20
再帰、漸化式、差分方程式とアルゴリズム   Gx#20再帰、漸化式、差分方程式とアルゴリズム   Gx#20
再帰、漸化式、差分方程式とアルゴリズム Gx#20鉄次 尾形
 
Rubyの会社でPythonistaが3ヶ月生き延びた話
Rubyの会社でPythonistaが3ヶ月生き延びた話Rubyの会社でPythonistaが3ヶ月生き延びた話
Rubyの会社でPythonistaが3ヶ月生き延びた話Tokoroten Nakayama
 
Rosのリアルタイムツールの紹介
Rosのリアルタイムツールの紹介Rosのリアルタイムツールの紹介
Rosのリアルタイムツールの紹介gakky1667
 
JAWS-UG沖縄第1回勉強会 EBS/RDSがなくてもwrite massiveに耐えるDBの作り方
JAWS-UG沖縄第1回勉強会 EBS/RDSがなくてもwrite massiveに耐えるDBの作り方JAWS-UG沖縄第1回勉強会 EBS/RDSがなくてもwrite massiveに耐えるDBの作り方
JAWS-UG沖縄第1回勉強会 EBS/RDSがなくてもwrite massiveに耐えるDBの作り方Koichiro Nishijima
 
Rubyとプログラミング言語の潮流
Rubyとプログラミング言語の潮流Rubyとプログラミング言語の潮流
Rubyとプログラミング言語の潮流Kazuhiko Kato
 

What's hot (20)

Python と Xpath で ウェブからデータをあつめる
Python と Xpath で ウェブからデータをあつめるPython と Xpath で ウェブからデータをあつめる
Python と Xpath で ウェブからデータをあつめる
 
IT業界における伝統芸能の継承 #hachiojipm
IT業界における伝統芸能の継承 #hachiojipmIT業界における伝統芸能の継承 #hachiojipm
IT業界における伝統芸能の継承 #hachiojipm
 
bottleで始めるWEBアプリの最初の一歩
bottleで始めるWEBアプリの最初の一歩bottleで始めるWEBアプリの最初の一歩
bottleで始めるWEBアプリの最初の一歩
 
DBエンジニアに必要だったPythonのスキル
DBエンジニアに必要だったPythonのスキルDBエンジニアに必要だったPythonのスキル
DBエンジニアに必要だったPythonのスキル
 
捗るリコメンドシステムの裏事情(ハッカドール)
捗るリコメンドシステムの裏事情(ハッカドール)捗るリコメンドシステムの裏事情(ハッカドール)
捗るリコメンドシステムの裏事情(ハッカドール)
 
Rosとgazeboを使った3d空間での3次元畳み込みニューラルネットによる物体認識
Rosとgazeboを使った3d空間での3次元畳み込みニューラルネットによる物体認識Rosとgazeboを使った3d空間での3次元畳み込みニューラルネットによる物体認識
Rosとgazeboを使った3d空間での3次元畳み込みニューラルネットによる物体認識
 
2つのmosaic plotと日本語表示
2つのmosaic plotと日本語表示2つのmosaic plotと日本語表示
2つのmosaic plotと日本語表示
 
グラフデータベース「Neo4j」の 導入の導入
グラフデータベース「Neo4j」の 導入の導入グラフデータベース「Neo4j」の 導入の導入
グラフデータベース「Neo4j」の 導入の導入
 
Ros,gazeboとchainerを用いた畳込みニューラルネットワークによる3次元形状の学習
Ros,gazeboとchainerを用いた畳込みニューラルネットワークによる3次元形状の学習Ros,gazeboとchainerを用いた畳込みニューラルネットワークによる3次元形状の学習
Ros,gazeboとchainerを用いた畳込みニューラルネットワークによる3次元形状の学習
 
S18 t0 introduction
S18 t0 introductionS18 t0 introduction
S18 t0 introduction
 
Electron + Mithril Async File Search
Electron + Mithril Async File SearchElectron + Mithril Async File Search
Electron + Mithril Async File Search
 
Rubyで連結リスト使うためのgemを作った(tsukuba.rb版)
Rubyで連結リスト使うためのgemを作った(tsukuba.rb版)Rubyで連結リスト使うためのgemを作った(tsukuba.rb版)
Rubyで連結リスト使うためのgemを作った(tsukuba.rb版)
 
深層学習ライブラリのプログラミングモデル
深層学習ライブラリのプログラミングモデル深層学習ライブラリのプログラミングモデル
深層学習ライブラリのプログラミングモデル
 
Ruby programmer silverの取得に向けて
Ruby programmer silverの取得に向けてRuby programmer silverの取得に向けて
Ruby programmer silverの取得に向けて
 
再帰、漸化式、差分方程式とアルゴリズム Gx#20
再帰、漸化式、差分方程式とアルゴリズム   Gx#20再帰、漸化式、差分方程式とアルゴリズム   Gx#20
再帰、漸化式、差分方程式とアルゴリズム Gx#20
 
Rubyの会社でPythonistaが3ヶ月生き延びた話
Rubyの会社でPythonistaが3ヶ月生き延びた話Rubyの会社でPythonistaが3ヶ月生き延びた話
Rubyの会社でPythonistaが3ヶ月生き延びた話
 
Rosのリアルタイムツールの紹介
Rosのリアルタイムツールの紹介Rosのリアルタイムツールの紹介
Rosのリアルタイムツールの紹介
 
JAWS-UG沖縄第1回勉強会 EBS/RDSがなくてもwrite massiveに耐えるDBの作り方
JAWS-UG沖縄第1回勉強会 EBS/RDSがなくてもwrite massiveに耐えるDBの作り方JAWS-UG沖縄第1回勉強会 EBS/RDSがなくてもwrite massiveに耐えるDBの作り方
JAWS-UG沖縄第1回勉強会 EBS/RDSがなくてもwrite massiveに耐えるDBの作り方
 
Pythonで簡単ネットワーク分析
Pythonで簡単ネットワーク分析Pythonで簡単ネットワーク分析
Pythonで簡単ネットワーク分析
 
Rubyとプログラミング言語の潮流
Rubyとプログラミング言語の潮流Rubyとプログラミング言語の潮流
Rubyとプログラミング言語の潮流
 

Viewers also liked

高度に最適化された移植可能なメモリマネージャ
高度に最適化された移植可能なメモリマネージャ高度に最適化された移植可能なメモリマネージャ
高度に最適化された移植可能なメモリマネージャDADA246
 
shared_ptrとゲームプログラミングでのメモリ管理
shared_ptrとゲームプログラミングでのメモリ管理shared_ptrとゲームプログラミングでのメモリ管理
shared_ptrとゲームプログラミングでのメモリ管理DADA246
 
Heliumエンジンの設計と実装
Heliumエンジンの設計と実装Heliumエンジンの設計と実装
Heliumエンジンの設計と実装DADA246
 
Component basedgameenginedesign
Component basedgameenginedesign Component basedgameenginedesign
Component basedgameenginedesign DADA246
 
20130626 kawasaki.rb NKT77
20130626 kawasaki.rb NKT7720130626 kawasaki.rb NKT77
20130626 kawasaki.rb NKT77nkt77
 
Design your 3d game engine
Design your 3d game engineDesign your 3d game engine
Design your 3d game engineDaosheng Mu
 
Doom3 commentary
Doom3 commentaryDoom3 commentary
Doom3 commentaryDADA246
 
Vimを学びたい初心者のための5つの豆知識
Vimを学びたい初心者のための5つの豆知識Vimを学びたい初心者のための5つの豆知識
Vimを学びたい初心者のための5つの豆知識alwei
 
FrameGraph: Extensible Rendering Architecture in Frostbite
FrameGraph: Extensible Rendering Architecture in FrostbiteFrameGraph: Extensible Rendering Architecture in Frostbite
FrameGraph: Extensible Rendering Architecture in FrostbiteElectronic Arts / DICE
 
Docker1.13で変わったことをわからないなりにまとめてみた
Docker1.13で変わったことをわからないなりにまとめてみたDocker1.13で変わったことをわからないなりにまとめてみた
Docker1.13で変わったことをわからないなりにまとめてみたKouta Asai
 
Loyalty Presentation - CM Forum April 15
Loyalty Presentation - CM Forum April 15Loyalty Presentation - CM Forum April 15
Loyalty Presentation - CM Forum April 15Ronan Gilhawley
 
MY JOB WENT TO VIETNAM?
MY JOB WENT TO VIETNAM?MY JOB WENT TO VIETNAM?
MY JOB WENT TO VIETNAM?Ryo Amano
 
Iba bangalore 2017 prospectus
Iba bangalore   2017 prospectusIba bangalore   2017 prospectus
Iba bangalore 2017 prospectusibabschool
 
HOST | SPEAKER | Leonardo (Leo) Meyer @leomeyer
HOST | SPEAKER | Leonardo (Leo) Meyer @leomeyerHOST | SPEAKER | Leonardo (Leo) Meyer @leomeyer
HOST | SPEAKER | Leonardo (Leo) Meyer @leomeyerLeonardo Meyer Z.
 
Internet of Things
Internet of ThingsInternet of Things
Internet of ThingsMphasis
 
VoIP-Qualität im Netzwerk
VoIP-Qualität im NetzwerkVoIP-Qualität im Netzwerk
VoIP-Qualität im NetzwerkUCExpertTalk
 
カスタムメモリマネージャと高速なメモリアロケータについて
カスタムメモリマネージャと高速なメモリアロケータについてカスタムメモリマネージャと高速なメモリアロケータについて
カスタムメモリマネージャと高速なメモリアロケータについてalwei
 

Viewers also liked (20)

高度に最適化された移植可能なメモリマネージャ
高度に最適化された移植可能なメモリマネージャ高度に最適化された移植可能なメモリマネージャ
高度に最適化された移植可能なメモリマネージャ
 
shared_ptrとゲームプログラミングでのメモリ管理
shared_ptrとゲームプログラミングでのメモリ管理shared_ptrとゲームプログラミングでのメモリ管理
shared_ptrとゲームプログラミングでのメモリ管理
 
Heliumエンジンの設計と実装
Heliumエンジンの設計と実装Heliumエンジンの設計と実装
Heliumエンジンの設計と実装
 
Component basedgameenginedesign
Component basedgameenginedesign Component basedgameenginedesign
Component basedgameenginedesign
 
20130626 kawasaki.rb NKT77
20130626 kawasaki.rb NKT7720130626 kawasaki.rb NKT77
20130626 kawasaki.rb NKT77
 
Design your 3d game engine
Design your 3d game engineDesign your 3d game engine
Design your 3d game engine
 
Doom3 commentary
Doom3 commentaryDoom3 commentary
Doom3 commentary
 
Vimを学びたい初心者のための5つの豆知識
Vimを学びたい初心者のための5つの豆知識Vimを学びたい初心者のための5つの豆知識
Vimを学びたい初心者のための5つの豆知識
 
FrameGraph: Extensible Rendering Architecture in Frostbite
FrameGraph: Extensible Rendering Architecture in FrostbiteFrameGraph: Extensible Rendering Architecture in Frostbite
FrameGraph: Extensible Rendering Architecture in Frostbite
 
Docker1.13で変わったことをわからないなりにまとめてみた
Docker1.13で変わったことをわからないなりにまとめてみたDocker1.13で変わったことをわからないなりにまとめてみた
Docker1.13で変わったことをわからないなりにまとめてみた
 
Loyalty Presentation - CM Forum April 15
Loyalty Presentation - CM Forum April 15Loyalty Presentation - CM Forum April 15
Loyalty Presentation - CM Forum April 15
 
Portadas nacionales 8 marzo-17
Portadas nacionales 8 marzo-17Portadas nacionales 8 marzo-17
Portadas nacionales 8 marzo-17
 
MY JOB WENT TO VIETNAM?
MY JOB WENT TO VIETNAM?MY JOB WENT TO VIETNAM?
MY JOB WENT TO VIETNAM?
 
Iba bangalore 2017 prospectus
Iba bangalore   2017 prospectusIba bangalore   2017 prospectus
Iba bangalore 2017 prospectus
 
Cuadro comparativo Corrientes Económicas
Cuadro comparativo Corrientes EconómicasCuadro comparativo Corrientes Económicas
Cuadro comparativo Corrientes Económicas
 
Frontera de Posibilidades de Producción
Frontera de Posibilidades de ProducciónFrontera de Posibilidades de Producción
Frontera de Posibilidades de Producción
 
HOST | SPEAKER | Leonardo (Leo) Meyer @leomeyer
HOST | SPEAKER | Leonardo (Leo) Meyer @leomeyerHOST | SPEAKER | Leonardo (Leo) Meyer @leomeyer
HOST | SPEAKER | Leonardo (Leo) Meyer @leomeyer
 
Internet of Things
Internet of ThingsInternet of Things
Internet of Things
 
VoIP-Qualität im Netzwerk
VoIP-Qualität im NetzwerkVoIP-Qualität im Netzwerk
VoIP-Qualität im Netzwerk
 
カスタムメモリマネージャと高速なメモリアロケータについて
カスタムメモリマネージャと高速なメモリアロケータについてカスタムメモリマネージャと高速なメモリアロケータについて
カスタムメモリマネージャと高速なメモリアロケータについて
 

Similar to メモリアロケーションからみた拡張ライブラリに大切なこと

Rails5クイックスタート
Rails5クイックスタートRails5クイックスタート
Rails5クイックスタートHirata Tomoko
 
とある Perl Monger の働き方
とある Perl Monger の働き方とある Perl Monger の働き方
とある Perl Monger の働き方Yusuke Wada
 
Javaから見たRubyの世界
Javaから見たRubyの世界Javaから見たRubyの世界
Javaから見たRubyの世界Takafumi Yoshida
 
Rubyist started to learn Groovy - things important to leran new LL
Rubyist started to learn Groovy - things important to leran new LLRubyist started to learn Groovy - things important to leran new LL
Rubyist started to learn Groovy - things important to leran new LLUchio Kondo
 
困らない程度のJDK入門
困らない程度のJDK入門困らない程度のJDK入門
困らない程度のJDK入門Yohei Oda
 
RubyとRのおいしい関係
RubyとRのおいしい関係RubyとRのおいしい関係
RubyとRのおいしい関係sady_nitro
 
これからはじめるための JavaScript 開発環境
これからはじめるための JavaScript 開発環境これからはじめるための JavaScript 開発環境
これからはじめるための JavaScript 開発環境Ryo Higashigawa
 
Tokyurubykaigi05
Tokyurubykaigi05Tokyurubykaigi05
Tokyurubykaigi05yamanekko
 
MF GeeksNight pplogの話
MF GeeksNight pplogの話MF GeeksNight pplogの話
MF GeeksNight pplogの話Naoto Koshikawa
 
Mrubyについて 第16回 岡山ruby, ruby on rails勉強会
Mrubyについて   第16回 岡山ruby, ruby on rails勉強会Mrubyについて   第16回 岡山ruby, ruby on rails勉強会
Mrubyについて 第16回 岡山ruby, ruby on rails勉強会Masaya Konishi
 
Perlbeginnes 9 lt_ytnobody
Perlbeginnes 9 lt_ytnobodyPerlbeginnes 9 lt_ytnobody
Perlbeginnes 9 lt_ytnobodyazuma satoshi
 
gemの複数バージョンカジュアルテスト #shibuyarb
gemの複数バージョンカジュアルテスト #shibuyarbgemの複数バージョンカジュアルテスト #shibuyarb
gemの複数バージョンカジュアルテスト #shibuyarbGo Sueyoshi (a.k.a sue445)
 
なぜか技術書典5で 3サークルの運営をやってた話
なぜか技術書典5で 3サークルの運営をやってた話なぜか技術書典5で 3サークルの運営をやってた話
なぜか技術書典5で 3サークルの運営をやってた話ota42y
 
JavaScriptで出来る、あんなことこんなこと
JavaScriptで出来る、あんなことこんなことJavaScriptで出来る、あんなことこんなこと
JavaScriptで出来る、あんなことこんなことMayu Kimura
 
地域Ruby会議に参加してきた話とか
地域Ruby会議に参加してきた話とか地域Ruby会議に参加してきた話とか
地域Ruby会議に参加してきた話とかKen Muryoi
 
JRubyで作るapiサーバー
JRubyで作るapiサーバーJRubyで作るapiサーバー
JRubyで作るapiサーバーYamamoto Kazuhisa
 
「RSpec初心者に送るRSpec最強チュートリアル」発表資料 #sg_study
「RSpec初心者に送るRSpec最強チュートリアル」発表資料 #sg_study「RSpec初心者に送るRSpec最強チュートリアル」発表資料 #sg_study
「RSpec初心者に送るRSpec最強チュートリアル」発表資料 #sg_studyJunichi Ito
 
シャイなRubyistがRubyKaigiでできること
シャイなRubyistがRubyKaigiでできることシャイなRubyistがRubyKaigiでできること
シャイなRubyistがRubyKaigiでできることNarihiro Nakamura
 
Happy Life Hacking Ruby on Rails
Happy Life Hacking Ruby on RailsHappy Life Hacking Ruby on Rails
Happy Life Hacking Ruby on RailsKoichiro Ohba
 
20100619 wakhok important_of_io_with_jror
20100619 wakhok important_of_io_with_jror20100619 wakhok important_of_io_with_jror
20100619 wakhok important_of_io_with_jrorYoshiharu Hashimoto
 

Similar to メモリアロケーションからみた拡張ライブラリに大切なこと (20)

Rails5クイックスタート
Rails5クイックスタートRails5クイックスタート
Rails5クイックスタート
 
とある Perl Monger の働き方
とある Perl Monger の働き方とある Perl Monger の働き方
とある Perl Monger の働き方
 
Javaから見たRubyの世界
Javaから見たRubyの世界Javaから見たRubyの世界
Javaから見たRubyの世界
 
Rubyist started to learn Groovy - things important to leran new LL
Rubyist started to learn Groovy - things important to leran new LLRubyist started to learn Groovy - things important to leran new LL
Rubyist started to learn Groovy - things important to leran new LL
 
困らない程度のJDK入門
困らない程度のJDK入門困らない程度のJDK入門
困らない程度のJDK入門
 
RubyとRのおいしい関係
RubyとRのおいしい関係RubyとRのおいしい関係
RubyとRのおいしい関係
 
これからはじめるための JavaScript 開発環境
これからはじめるための JavaScript 開発環境これからはじめるための JavaScript 開発環境
これからはじめるための JavaScript 開発環境
 
Tokyurubykaigi05
Tokyurubykaigi05Tokyurubykaigi05
Tokyurubykaigi05
 
MF GeeksNight pplogの話
MF GeeksNight pplogの話MF GeeksNight pplogの話
MF GeeksNight pplogの話
 
Mrubyについて 第16回 岡山ruby, ruby on rails勉強会
Mrubyについて   第16回 岡山ruby, ruby on rails勉強会Mrubyについて   第16回 岡山ruby, ruby on rails勉強会
Mrubyについて 第16回 岡山ruby, ruby on rails勉強会
 
Perlbeginnes 9 lt_ytnobody
Perlbeginnes 9 lt_ytnobodyPerlbeginnes 9 lt_ytnobody
Perlbeginnes 9 lt_ytnobody
 
gemの複数バージョンカジュアルテスト #shibuyarb
gemの複数バージョンカジュアルテスト #shibuyarbgemの複数バージョンカジュアルテスト #shibuyarb
gemの複数バージョンカジュアルテスト #shibuyarb
 
なぜか技術書典5で 3サークルの運営をやってた話
なぜか技術書典5で 3サークルの運営をやってた話なぜか技術書典5で 3サークルの運営をやってた話
なぜか技術書典5で 3サークルの運営をやってた話
 
JavaScriptで出来る、あんなことこんなこと
JavaScriptで出来る、あんなことこんなことJavaScriptで出来る、あんなことこんなこと
JavaScriptで出来る、あんなことこんなこと
 
地域Ruby会議に参加してきた話とか
地域Ruby会議に参加してきた話とか地域Ruby会議に参加してきた話とか
地域Ruby会議に参加してきた話とか
 
JRubyで作るapiサーバー
JRubyで作るapiサーバーJRubyで作るapiサーバー
JRubyで作るapiサーバー
 
「RSpec初心者に送るRSpec最強チュートリアル」発表資料 #sg_study
「RSpec初心者に送るRSpec最強チュートリアル」発表資料 #sg_study「RSpec初心者に送るRSpec最強チュートリアル」発表資料 #sg_study
「RSpec初心者に送るRSpec最強チュートリアル」発表資料 #sg_study
 
シャイなRubyistがRubyKaigiでできること
シャイなRubyistがRubyKaigiでできることシャイなRubyistがRubyKaigiでできること
シャイなRubyistがRubyKaigiでできること
 
Happy Life Hacking Ruby on Rails
Happy Life Hacking Ruby on RailsHappy Life Hacking Ruby on Rails
Happy Life Hacking Ruby on Rails
 
20100619 wakhok important_of_io_with_jror
20100619 wakhok important_of_io_with_jror20100619 wakhok important_of_io_with_jror
20100619 wakhok important_of_io_with_jror
 

Recently uploaded

20240523_IoTLT_vol111_kitazaki_v1___.pdf
20240523_IoTLT_vol111_kitazaki_v1___.pdf20240523_IoTLT_vol111_kitazaki_v1___.pdf
20240523_IoTLT_vol111_kitazaki_v1___.pdfAyachika Kitazaki
 
ロボットマニピュレーションの作業・動作計画 / rosjp_planning_for_robotic_manipulation_20240521
ロボットマニピュレーションの作業・動作計画 / rosjp_planning_for_robotic_manipulation_20240521ロボットマニピュレーションの作業・動作計画 / rosjp_planning_for_robotic_manipulation_20240521
ロボットマニピュレーションの作業・動作計画 / rosjp_planning_for_robotic_manipulation_20240521Satoshi Makita
 
Amazon Cognitoで実装するパスキー (Security-JAWS【第33回】 勉強会)
Amazon Cognitoで実装するパスキー (Security-JAWS【第33回】 勉強会)Amazon Cognitoで実装するパスキー (Security-JAWS【第33回】 勉強会)
Amazon Cognitoで実装するパスキー (Security-JAWS【第33回】 勉強会)keikoitakurag
 
Hyperledger Fabricコミュニティ活動体験& Hyperledger Fabric最新状況ご紹介
Hyperledger Fabricコミュニティ活動体験& Hyperledger Fabric最新状況ご紹介Hyperledger Fabricコミュニティ活動体験& Hyperledger Fabric最新状況ご紹介
Hyperledger Fabricコミュニティ活動体験& Hyperledger Fabric最新状況ご紹介Hyperleger Tokyo Meetup
 
情報を表現するときのポイント
情報を表現するときのポイント情報を表現するときのポイント
情報を表現するときのポイントonozaty
 
部内勉強会(IT用語ざっくり学習) 実施日:2024年5月17日(金) 対象者:営業部社員
部内勉強会(IT用語ざっくり学習) 実施日:2024年5月17日(金) 対象者:営業部社員部内勉強会(IT用語ざっくり学習) 実施日:2024年5月17日(金) 対象者:営業部社員
部内勉強会(IT用語ざっくり学習) 実施日:2024年5月17日(金) 対象者:営業部社員Sadaomi Nishi
 
Intranet Development v1.0 (TSG LIVE! 12 LT )
Intranet Development v1.0 (TSG LIVE! 12 LT )Intranet Development v1.0 (TSG LIVE! 12 LT )
Intranet Development v1.0 (TSG LIVE! 12 LT )iwashiira2ctf
 
論文紹介:Deep Occlusion-Aware Instance Segmentation With Overlapping BiLayers
論文紹介:Deep Occlusion-Aware Instance Segmentation With Overlapping BiLayers論文紹介:Deep Occlusion-Aware Instance Segmentation With Overlapping BiLayers
論文紹介:Deep Occlusion-Aware Instance Segmentation With Overlapping BiLayersToru Tamaki
 
研究紹介スライド: オフライン強化学習に基づくロボティックスワームの制御器の設計
研究紹介スライド: オフライン強化学習に基づくロボティックスワームの制御器の設計研究紹介スライド: オフライン強化学習に基づくロボティックスワームの制御器の設計
研究紹介スライド: オフライン強化学習に基づくロボティックスワームの制御器の設計atsushi061452
 
5/22 第23回 Customer系エンジニア座談会のスライド 公開用 西口瑛一
5/22 第23回 Customer系エンジニア座談会のスライド 公開用 西口瑛一5/22 第23回 Customer系エンジニア座談会のスライド 公開用 西口瑛一
5/22 第23回 Customer系エンジニア座談会のスライド 公開用 西口瑛一瑛一 西口
 
論文紹介:ViTPose: Simple Vision Transformer Baselines for Human Pose Estimation
論文紹介:ViTPose: Simple Vision Transformer Baselines for Human Pose Estimation論文紹介:ViTPose: Simple Vision Transformer Baselines for Human Pose Estimation
論文紹介:ViTPose: Simple Vision Transformer Baselines for Human Pose EstimationToru Tamaki
 
MPAなWebフレームワーク、Astroの紹介 (その1) 2024/05/17の勉強会で発表されたものです。
MPAなWebフレームワーク、Astroの紹介 (その1) 2024/05/17の勉強会で発表されたものです。MPAなWebフレームワーク、Astroの紹介 (その1) 2024/05/17の勉強会で発表されたものです。
MPAなWebフレームワーク、Astroの紹介 (その1) 2024/05/17の勉強会で発表されたものです。iPride Co., Ltd.
 
Keywordmap overview material/CINC.co.ltd
Keywordmap overview material/CINC.co.ltdKeywordmap overview material/CINC.co.ltd
Keywordmap overview material/CINC.co.ltdkokinagano2
 
クラウド時代におけるSREとUPWARDの取組ーUPWARD株式会社 CTO門畑
クラウド時代におけるSREとUPWARDの取組ーUPWARD株式会社 CTO門畑クラウド時代におけるSREとUPWARDの取組ーUPWARD株式会社 CTO門畑
クラウド時代におけるSREとUPWARDの取組ーUPWARD株式会社 CTO門畑Akihiro Kadohata
 

Recently uploaded (14)

20240523_IoTLT_vol111_kitazaki_v1___.pdf
20240523_IoTLT_vol111_kitazaki_v1___.pdf20240523_IoTLT_vol111_kitazaki_v1___.pdf
20240523_IoTLT_vol111_kitazaki_v1___.pdf
 
ロボットマニピュレーションの作業・動作計画 / rosjp_planning_for_robotic_manipulation_20240521
ロボットマニピュレーションの作業・動作計画 / rosjp_planning_for_robotic_manipulation_20240521ロボットマニピュレーションの作業・動作計画 / rosjp_planning_for_robotic_manipulation_20240521
ロボットマニピュレーションの作業・動作計画 / rosjp_planning_for_robotic_manipulation_20240521
 
Amazon Cognitoで実装するパスキー (Security-JAWS【第33回】 勉強会)
Amazon Cognitoで実装するパスキー (Security-JAWS【第33回】 勉強会)Amazon Cognitoで実装するパスキー (Security-JAWS【第33回】 勉強会)
Amazon Cognitoで実装するパスキー (Security-JAWS【第33回】 勉強会)
 
Hyperledger Fabricコミュニティ活動体験& Hyperledger Fabric最新状況ご紹介
Hyperledger Fabricコミュニティ活動体験& Hyperledger Fabric最新状況ご紹介Hyperledger Fabricコミュニティ活動体験& Hyperledger Fabric最新状況ご紹介
Hyperledger Fabricコミュニティ活動体験& Hyperledger Fabric最新状況ご紹介
 
情報を表現するときのポイント
情報を表現するときのポイント情報を表現するときのポイント
情報を表現するときのポイント
 
部内勉強会(IT用語ざっくり学習) 実施日:2024年5月17日(金) 対象者:営業部社員
部内勉強会(IT用語ざっくり学習) 実施日:2024年5月17日(金) 対象者:営業部社員部内勉強会(IT用語ざっくり学習) 実施日:2024年5月17日(金) 対象者:営業部社員
部内勉強会(IT用語ざっくり学習) 実施日:2024年5月17日(金) 対象者:営業部社員
 
Intranet Development v1.0 (TSG LIVE! 12 LT )
Intranet Development v1.0 (TSG LIVE! 12 LT )Intranet Development v1.0 (TSG LIVE! 12 LT )
Intranet Development v1.0 (TSG LIVE! 12 LT )
 
論文紹介:Deep Occlusion-Aware Instance Segmentation With Overlapping BiLayers
論文紹介:Deep Occlusion-Aware Instance Segmentation With Overlapping BiLayers論文紹介:Deep Occlusion-Aware Instance Segmentation With Overlapping BiLayers
論文紹介:Deep Occlusion-Aware Instance Segmentation With Overlapping BiLayers
 
研究紹介スライド: オフライン強化学習に基づくロボティックスワームの制御器の設計
研究紹介スライド: オフライン強化学習に基づくロボティックスワームの制御器の設計研究紹介スライド: オフライン強化学習に基づくロボティックスワームの制御器の設計
研究紹介スライド: オフライン強化学習に基づくロボティックスワームの制御器の設計
 
5/22 第23回 Customer系エンジニア座談会のスライド 公開用 西口瑛一
5/22 第23回 Customer系エンジニア座談会のスライド 公開用 西口瑛一5/22 第23回 Customer系エンジニア座談会のスライド 公開用 西口瑛一
5/22 第23回 Customer系エンジニア座談会のスライド 公開用 西口瑛一
 
論文紹介:ViTPose: Simple Vision Transformer Baselines for Human Pose Estimation
論文紹介:ViTPose: Simple Vision Transformer Baselines for Human Pose Estimation論文紹介:ViTPose: Simple Vision Transformer Baselines for Human Pose Estimation
論文紹介:ViTPose: Simple Vision Transformer Baselines for Human Pose Estimation
 
MPAなWebフレームワーク、Astroの紹介 (その1) 2024/05/17の勉強会で発表されたものです。
MPAなWebフレームワーク、Astroの紹介 (その1) 2024/05/17の勉強会で発表されたものです。MPAなWebフレームワーク、Astroの紹介 (その1) 2024/05/17の勉強会で発表されたものです。
MPAなWebフレームワーク、Astroの紹介 (その1) 2024/05/17の勉強会で発表されたものです。
 
Keywordmap overview material/CINC.co.ltd
Keywordmap overview material/CINC.co.ltdKeywordmap overview material/CINC.co.ltd
Keywordmap overview material/CINC.co.ltd
 
クラウド時代におけるSREとUPWARDの取組ーUPWARD株式会社 CTO門畑
クラウド時代におけるSREとUPWARDの取組ーUPWARD株式会社 CTO門畑クラウド時代におけるSREとUPWARDの取組ーUPWARD株式会社 CTO門畑
クラウド時代におけるSREとUPWARDの取組ーUPWARD株式会社 CTO門畑
 

メモリアロケーションからみた拡張ライブラリに大切なこと