SlideShare uma empresa Scribd logo
1 de 18
匿名バイナリ配布集団
rwinlib
2016/08/20 Tokyo.R#56
@yutannihilation
1
ドーモ。
@yutannihilation
•インフラエンジニア
•電子工作ワナビー
•好きな言語:R、忍殺語
•好きな電子音:Factory
Floor、Radiohead
2
想像してください。
•無性にWebスクレイピングがしたい
•手元にはWindowsしかない
•xml2パッケージの最新版はまだCRANに上
がっていない
•どうする
•…githubinstall?
3
githubinstall:
某匿名知的集団の素敵パッケージ
4http://mockquant.blogspot.jp/
xml2パッケージとは
•R界の神 Hadley のつくったパッケージ
•rvestというパッケージと組み合わせて超快
適Webスクレイピングができます
•libxml2へのバインディング
5
…libxml2?
•よく脆弱性を出すことで有名な、XMLを
パースするためのC言語のライブラリ
•xml2パッケージをインストールする前に、
brew install libxml2、apt-get install
libxml2-devなどのコマンドでお手軽にイン
ストールしておく。
6
7
お手軽に、インストール…?
8
お前それ
Windows でも
同じ事言えんの?
Windows
•標準的なパッケージ管理はない
(NuGetとかChocolateyはあるけど)
•Rtoolsと同じビルドチェーンでビルドしな
いといけない
•つらい
9
10
それっておかしくねえ?
だってここGithubじゃん。
(AA略)
rwinlib
11
meta cranおじさん
(愛称)
jsonlite、curl
とかの作者
rwinlibとは
•Windows用にバイナリをビルドするレポジ
トリをホストしまくっているOrganization
•Hadleyとかも関わってる感じがするけど表
向きはあんまり出てこなくて、どういう組
織なのか謎
•xml2パッケージはWindows用にはここでビ
ルドしたバイナリを同梱している
12
xml2パッケージの場合
src/Makevars.win:
13
all: winlibs
clean:
rm -f $(OBJECTS) xml2.dll
winlibs: "${R_HOME}/bin${R_ARCH_BIN}/Rscript.exe"
"../tools/winlibs.R"
Windows以外ではふつうにビルドす
るが、Windowsはwinlibs.Rという謎
のスクリプトが実行されている
xml2パッケージの場合
tools/winlibs.R:
14
if (!file.exists("../windows/libxml…")) {
if(getRversion() < "3.3.0") setInternet2()
download.file("https://github.com/rwinlib/
libxml2/archive/v2.9.4.zip", …)
dir.create("../windows", …)
unzip("lib.zip", exdir = "../windows")
unlink("lib.zip")
} rwinlibからダウンロードしてきた
ものを展開するだけ
備えよう。
•Rcppの作者Dirkのお言葉:
The last bit, much like the so-called
anticonf pattern, is more or less a non-
standard practice exposing a security risk
by copying in code from a semi-
random location which could be
hijacked or man-in-the-middle'd.
15
https://stat.ethz.ch/pipermail/r-package-devel/2016q3/001050.html
意訳:
拾い食いはお腹を壊すぞ。
アッハイ。
Really all this is just pretending that
Windows is an envrionment on which you
can deploy proper build systems --
similar to what we are used from the
likes of dpkg/apt/yum or brew. But in all
honesty you just can't.
(中略) It is Windows after all.
16
https://stat.ethz.ch/pipermail/r-package-devel/2016q3/001050.html
意訳:
Windowsなんだから諦めろ。
まとめ
•Windowsはサバンナ
•rwinlibsという謎の集団ががんばってバイナ
リをビルドしてくれている
•でも謎のバイナリに頼るのはほどほどにね
•私たちの快適なRcpp生活は薄氷の上に成り
立っているのかもしれない
17
18
エンジョイ。

Mais conteúdo relacionado

Destaque

RでGISハンズオンセッション
RでGISハンズオンセッションRでGISハンズオンセッション
RでGISハンズオンセッション
arctic_tern265
 
初心者向けに機械学習のハンズオンセミナーをしてわかったこと
初心者向けに機械学習のハンズオンセミナーをしてわかったこと初心者向けに機械学習のハンズオンセミナーをしてわかったこと
初心者向けに機械学習のハンズオンセミナーをしてわかったこと
__john_smith__
 

Destaque (20)

go-apt-cacher/mirror
go-apt-cacher/mirrorgo-apt-cacher/mirror
go-apt-cacher/mirror
 
Tidyverseとは
TidyverseとはTidyverseとは
Tidyverseとは
 
Github pagesでRPubsにサヨナラ!
Github pagesでRPubsにサヨナラ!Github pagesでRPubsにサヨナラ!
Github pagesでRPubsにサヨナラ!
 
dplyrとは何だったのか
dplyrとは何だったのかdplyrとは何だったのか
dplyrとは何だったのか
 
押してダメなら引いてみろ! ggplot2逆引きプロジェクト
押してダメなら引いてみろ! ggplot2逆引きプロジェクト押してダメなら引いてみろ! ggplot2逆引きプロジェクト
押してダメなら引いてみろ! ggplot2逆引きプロジェクト
 
ggplot2再入門(2015年バージョン)
ggplot2再入門(2015年バージョン)ggplot2再入門(2015年バージョン)
ggplot2再入門(2015年バージョン)
 
RでGISハンズオンセッション
RでGISハンズオンセッションRでGISハンズオンセッション
RでGISハンズオンセッション
 
CTFとは
CTFとはCTFとは
CTFとは
 
機械学習とデータ分析プロセス
機械学習とデータ分析プロセス機械学習とデータ分析プロセス
機械学習とデータ分析プロセス
 
Mitigating User Experience from 'Breaking Bad': The Twitter Approach [Velocit...
Mitigating User Experience from 'Breaking Bad': The Twitter Approach [Velocit...Mitigating User Experience from 'Breaking Bad': The Twitter Approach [Velocit...
Mitigating User Experience from 'Breaking Bad': The Twitter Approach [Velocit...
 
DS LT祭り 「AUCが0.01改善したって どういうことですか?」
DS LT祭り 「AUCが0.01改善したって どういうことですか?」DS LT祭り 「AUCが0.01改善したって どういうことですか?」
DS LT祭り 「AUCが0.01改善したって どういうことですか?」
 
Dslt祭り2夜
Dslt祭り2夜Dslt祭り2夜
Dslt祭り2夜
 
階層ベイズモデルで割安mobile PCを探す
階層ベイズモデルで割安mobile PCを探す階層ベイズモデルで割安mobile PCを探す
階層ベイズモデルで割安mobile PCを探す
 
初心者向けに機械学習のハンズオンセミナーをしてわかったこと
初心者向けに機械学習のハンズオンセミナーをしてわかったこと初心者向けに機械学習のハンズオンセミナーをしてわかったこと
初心者向けに機械学習のハンズオンセミナーをしてわかったこと
 
tokyo_webmining_no51
tokyo_webmining_no51tokyo_webmining_no51
tokyo_webmining_no51
 
機械学習するな機会学習しろ - データサイエンスLT祭り 2夜目
機械学習するな機会学習しろ - データサイエンスLT祭り 2夜目機械学習するな機会学習しろ - データサイエンスLT祭り 2夜目
機械学習するな機会学習しろ - データサイエンスLT祭り 2夜目
 
面倒くさいこと考えたくないあなたへ〜Tpotと機械学習〜
面倒くさいこと考えたくないあなたへ〜Tpotと機械学習〜面倒くさいこと考えたくないあなたへ〜Tpotと機械学習〜
面倒くさいこと考えたくないあなたへ〜Tpotと機械学習〜
 
Rstudio上でのパッケージインストールを便利にするaddin4githubinstall
Rstudio上でのパッケージインストールを便利にするaddin4githubinstallRstudio上でのパッケージインストールを便利にするaddin4githubinstall
Rstudio上でのパッケージインストールを便利にするaddin4githubinstall
 
TIS 戦略技術センター AI技術推進室紹介
TIS 戦略技術センター AI技術推進室紹介TIS 戦略技術センター AI技術推進室紹介
TIS 戦略技術センター AI技術推進室紹介
 
GBDTを使ったfeature transformationの適用例
GBDTを使ったfeature transformationの適用例GBDTを使ったfeature transformationの適用例
GBDTを使ったfeature transformationの適用例
 

Semelhante a 匿名バイナリ配布集団rwinlib

DLR言語によるSilverlightプログラミング
DLR言語によるSilverlightプログラミングDLR言語によるSilverlightプログラミング
DLR言語によるSilverlightプログラミング
terurou
 
そろそろSublime Text 2を熱く語ろうと思う
そろそろSublime Text 2を熱く語ろうと思うそろそろSublime Text 2を熱く語ろうと思う
そろそろSublime Text 2を熱く語ろうと思う
Tadayuki Onishi
 

Semelhante a 匿名バイナリ配布集団rwinlib (20)

20161106 osc-tokyo-command-line
20161106 osc-tokyo-command-line20161106 osc-tokyo-command-line
20161106 osc-tokyo-command-line
 
ゆるふわLinux-HA 〜PostgreSQL編〜
ゆるふわLinux-HA 〜PostgreSQL編〜ゆるふわLinux-HA 〜PostgreSQL編〜
ゆるふわLinux-HA 〜PostgreSQL編〜
 
Wacode 忙しいバイオインフォマティシャンのための時短ワンライナー
Wacode 忙しいバイオインフォマティシャンのための時短ワンライナーWacode 忙しいバイオインフォマティシャンのための時短ワンライナー
Wacode 忙しいバイオインフォマティシャンのための時短ワンライナー
 
Alpine linuxを触ってみよう
Alpine linuxを触ってみようAlpine linuxを触ってみよう
Alpine linuxを触ってみよう
 
らくちん Go言語
らくちん Go言語らくちん Go言語
らくちん Go言語
 
XRDPで怠惰な日々を送る
XRDPで怠惰な日々を送るXRDPで怠惰な日々を送る
XRDPで怠惰な日々を送る
 
Raspberry Pi and WebIOPi
Raspberry Pi and WebIOPiRaspberry Pi and WebIOPi
Raspberry Pi and WebIOPi
 
SWIGでRubyバインディング
SWIGでRubyバインディングSWIGでRubyバインディング
SWIGでRubyバインディング
 
GMO プライベート DMP 開発で 取り組んできた DevOps と今後の展望
GMO プライベート DMP 開発で 取り組んできた DevOps と今後の展望GMO プライベート DMP 開発で 取り組んできた DevOps と今後の展望
GMO プライベート DMP 開発で 取り組んできた DevOps と今後の展望
 
今さら聞けない -Linux コマンドラインツールテクニック その1 rev. 4
今さら聞けない -Linux コマンドラインツールテクニック その1 rev. 4今さら聞けない -Linux コマンドラインツールテクニック その1 rev. 4
今さら聞けない -Linux コマンドラインツールテクニック その1 rev. 4
 
Python virenv
Python virenvPython virenv
Python virenv
 
DLR言語によるSilverlightプログラミング
DLR言語によるSilverlightプログラミングDLR言語によるSilverlightプログラミング
DLR言語によるSilverlightプログラミング
 
Tizen & Crosswalk
Tizen & CrosswalkTizen & Crosswalk
Tizen & Crosswalk
 
密着!わたしのコンソールアプリ開発環境
密着!わたしのコンソールアプリ開発環境密着!わたしのコンソールアプリ開発環境
密着!わたしのコンソールアプリ開発環境
 
マニアックなRuby 2.7新機能紹介
マニアックなRuby 2.7新機能紹介マニアックなRuby 2.7新機能紹介
マニアックなRuby 2.7新機能紹介
 
How to use SOAP interface of debbugs #tokyodebian
How to use SOAP interface of debbugs #tokyodebianHow to use SOAP interface of debbugs #tokyodebian
How to use SOAP interface of debbugs #tokyodebian
 
Composer
 Composer Composer
Composer
 
grpc-haskell.pdf
grpc-haskell.pdfgrpc-haskell.pdf
grpc-haskell.pdf
 
そろそろSublime Text 2を熱く語ろうと思う
そろそろSublime Text 2を熱く語ろうと思うそろそろSublime Text 2を熱く語ろうと思う
そろそろSublime Text 2を熱く語ろうと思う
 
進化するArt
進化するArt進化するArt
進化するArt
 

匿名バイナリ配布集団rwinlib