SlideShare a Scribd company logo
1 of 19
Download to read offline
ツイターの皆様からの声

2013/10/19 Boost.勉強会 #13 @仙台
( ◔⊖◔)...
鳥小屋を支える技術
&
問題点
ま
あり
進捗 !!
す!

2013/10/19
自己紹介
アッ、ぶんちょうです
@yutopp
C++とか文鳥とか好きです。
鳥小屋 is 何
● いわゆるオンラインコンパイラ・実行環境
○ wandbox
○ ideone
○ codepad

● ユーザーが投げたコードをサーバー側で実行
し、結果を返す
● http://sc.yutopp.net/
作った理由
● オンラインコンパイラの処理系は更新が遅いも
のが多い
● 競技プログラミング用のジャッジサーバーなど
のセキュリティに興味があった
● iPadなどのタブレットで簡単にコードを実行でき
る環境が欲しかった
将来的に
● 実際にジャッジサーバーとして使ったり
● 様々なバージョンの処理系・ライブラリを用いた
コードの検証に使えるように
実装
!!!問題点だらけな
ので
アイディアを下さ
い!!!
鳥小屋用の処理系

構成

ビルド
サーバー

● 実行ノード
● ビルドサーバ
● フロントエンド

S3

GCCやBoostなどのビ
ルド

フロントエンド

Rails
タスク
管理
キュー
ソースコードや入力など

ソースコード
バイナリ
実行結果

実行ノード
実行ノード
● コードを実際に実行するサーバー群
● Amazon EC2(Amazon Linux)を利用
○ 万が一破壊された場合は使い捨て

● データの通信にmsg packを利用
● セキュリティは最低限
○ ネットワークの利用
○ ユーザーによる別プロセスへの干渉など
実行ノード(sandbox)
●
●
●
●

ユーザーの操作一つをタスクとする
タスク一つの実行につき、実行ユーザーを生成
実行環境を整えた後、権限を奪いまくる
その他、ネットワークなどのLinux名前空間を分
ける
実行ノード(sandbox)
● ptraceやsecomp-bpfも使ってみたい
○ C++ Compiler Firmなど

● Amazon Linuxのkernelが古い
○ つらい

● せめてchrootとか
ビルドサーバー
● 実行ノードで利用するバイナリをビルドする
● Amazon EC2(Amazon Linux)を利用
○ 使いたいときに使いたいだけ

● 実行ノードと環境が同じなので、ひたすらビルド
する
● バイナリをRPMに詰めて、各実行ノードに配信
(S3 bucketで共有)
フロントエンド
● 末端のデータ管理
○ ユーザー管理
○ ソース管理
○ タスクキューイング

● データベースにMongoDB
● Ruby on Rails4
● 実行ノードなどとのやり取りにmsgpack
問題点がザクザク
● セキュリティの問題
○ sandboxがやっつけに近い
○ 内部の破壊

● ビルドサーバーでRPM化が失敗しまくる
○ checkinstallがアアアッ

● 文鳥用のプログラミング言語が載っていない
○ 文鳥言語をBoost.Spirit.QiとLLVMを使って作ってみて
る
これから
● sandboxの強化
● ビルドサーバーの安定化
● APIの提供
鳥小屋たのしい
ヤッター!!!
ありがとうございました

More Related Content

What's hot

シェル芸で使いたくてLINQが使えるコマンドを作ったらawkでよかった話
シェル芸で使いたくてLINQが使えるコマンドを作ったらawkでよかった話シェル芸で使いたくてLINQが使えるコマンドを作ったらawkでよかった話
シェル芸で使いたくてLINQが使えるコマンドを作ったらawkでよかった話xztaityozx
 
ET2016 小さなRubyボード GR-CITRUSの紹介
ET2016 小さなRubyボード GR-CITRUSの紹介ET2016 小さなRubyボード GR-CITRUSの紹介
ET2016 小さなRubyボード GR-CITRUSの紹介三七男 山本
 
Goodby Hatena, hello Sphinx
Goodby Hatena, hello SphinxGoodby Hatena, hello Sphinx
Goodby Hatena, hello SphinxKouhei Maeda
 
20161203 Gentoo勉強会
20161203 Gentoo勉強会20161203 Gentoo勉強会
20161203 Gentoo勉強会alice ferrazzi
 
gcoreでプロセスメモリダンプ -mysqlプロセスメモリを見てみる-
gcoreでプロセスメモリダンプ -mysqlプロセスメモリを見てみる-gcoreでプロセスメモリダンプ -mysqlプロセスメモリを見てみる-
gcoreでプロセスメモリダンプ -mysqlプロセスメモリを見てみる-monochrojazz
 
Cargo makeを使ってみた話
Cargo makeを使ってみた話Cargo makeを使ってみた話
Cargo makeを使ってみた話emakryo
 
難読化シェル芸
難読化シェル芸難読化シェル芸
難読化シェル芸xztaityozx
 
RubyではじめるIoT(Wakayama.rb活動報告)
RubyではじめるIoT(Wakayama.rb活動報告)RubyではじめるIoT(Wakayama.rb活動報告)
RubyではじめるIoT(Wakayama.rb活動報告)三七男 山本
 
[Vitocha.iso] FreeBSDカスタムiso作ってみた
[Vitocha.iso] FreeBSDカスタムiso作ってみた[Vitocha.iso] FreeBSDカスタムiso作ってみた
[Vitocha.iso] FreeBSDカスタムiso作ってみたshutingrz
 
Rubyボードハンズオンテキスト
RubyボードハンズオンテキストRubyボードハンズオンテキスト
Rubyボードハンズオンテキスト三七男 山本
 
Wakayama.rbボードの使い方
Wakayama.rbボードの使い方Wakayama.rbボードの使い方
Wakayama.rbボードの使い方三七男 山本
 
破壊的難読化シェル芸
破壊的難読化シェル芸破壊的難読化シェル芸
破壊的難読化シェル芸xztaityozx
 
Shell で制限付き並列処理をしよう
Shell で制限付き並列処理をしようShell で制限付き並列処理をしよう
Shell で制限付き並列処理をしよう博文 斉藤
 
Unixコマンド入門
Unixコマンド入門Unixコマンド入門
Unixコマンド入門Satosi Sakai
 
Type scriptmemo
Type scriptmemoType scriptmemo
Type scriptmemoytanno
 

What's hot (20)

シェル芸で使いたくてLINQが使えるコマンドを作ったらawkでよかった話
シェル芸で使いたくてLINQが使えるコマンドを作ったらawkでよかった話シェル芸で使いたくてLINQが使えるコマンドを作ったらawkでよかった話
シェル芸で使いたくてLINQが使えるコマンドを作ったらawkでよかった話
 
ET2016 小さなRubyボード GR-CITRUSの紹介
ET2016 小さなRubyボード GR-CITRUSの紹介ET2016 小さなRubyボード GR-CITRUSの紹介
ET2016 小さなRubyボード GR-CITRUSの紹介
 
Goodby Hatena, hello Sphinx
Goodby Hatena, hello SphinxGoodby Hatena, hello Sphinx
Goodby Hatena, hello Sphinx
 
GR-CITRUSの紹介
GR-CITRUSの紹介GR-CITRUSの紹介
GR-CITRUSの紹介
 
20161203 Gentoo勉強会
20161203 Gentoo勉強会20161203 Gentoo勉強会
20161203 Gentoo勉強会
 
gcoreでプロセスメモリダンプ -mysqlプロセスメモリを見てみる-
gcoreでプロセスメモリダンプ -mysqlプロセスメモリを見てみる-gcoreでプロセスメモリダンプ -mysqlプロセスメモリを見てみる-
gcoreでプロセスメモリダンプ -mysqlプロセスメモリを見てみる-
 
Cargo makeを使ってみた話
Cargo makeを使ってみた話Cargo makeを使ってみた話
Cargo makeを使ってみた話
 
難読化シェル芸
難読化シェル芸難読化シェル芸
難読化シェル芸
 
RubyではじめるIoT(Wakayama.rb活動報告)
RubyではじめるIoT(Wakayama.rb活動報告)RubyではじめるIoT(Wakayama.rb活動報告)
RubyではじめるIoT(Wakayama.rb活動報告)
 
[Vitocha.iso] FreeBSDカスタムiso作ってみた
[Vitocha.iso] FreeBSDカスタムiso作ってみた[Vitocha.iso] FreeBSDカスタムiso作ってみた
[Vitocha.iso] FreeBSDカスタムiso作ってみた
 
Rubyボードハンズオンテキスト
RubyボードハンズオンテキストRubyボードハンズオンテキスト
Rubyボードハンズオンテキスト
 
Wakayama.rbボードの使い方
Wakayama.rbボードの使い方Wakayama.rbボードの使い方
Wakayama.rbボードの使い方
 
破壊的難読化シェル芸
破壊的難読化シェル芸破壊的難読化シェル芸
破壊的難読化シェル芸
 
Shell で制限付き並列処理をしよう
Shell で制限付き並列処理をしようShell で制限付き並列処理をしよう
Shell で制限付き並列処理をしよう
 
Unixコマンド入門
Unixコマンド入門Unixコマンド入門
Unixコマンド入門
 
TextMate
TextMateTextMate
TextMate
 
Type scriptmemo
Type scriptmemoType scriptmemo
Type scriptmemo
 
Rdkitの紹介
Rdkitの紹介Rdkitの紹介
Rdkitの紹介
 
Mishimasyk 3 20140705
Mishimasyk 3 20140705Mishimasyk 3 20140705
Mishimasyk 3 20140705
 
Mishimasyk6 iwatobipen
Mishimasyk6 iwatobipenMishimasyk6 iwatobipen
Mishimasyk6 iwatobipen
 

Viewers also liked (20)

BendicióN AñO Nuevo 2010
BendicióN AñO Nuevo 2010BendicióN AñO Nuevo 2010
BendicióN AñO Nuevo 2010
 
Pares i alumnes davant l'eso
Pares i alumnes davant l'esoPares i alumnes davant l'eso
Pares i alumnes davant l'eso
 
051209 Preparad El Camino Al SeñOr
051209 Preparad El Camino Al SeñOr051209 Preparad El Camino Al SeñOr
051209 Preparad El Camino Al SeñOr
 
HOTELES POR TUENTI POCO Y TUENTI PICO
HOTELES POR TUENTI POCO Y TUENTI PICOHOTELES POR TUENTI POCO Y TUENTI PICO
HOTELES POR TUENTI POCO Y TUENTI PICO
 
"Presentacion de las redes sociales"
"Presentacion de las redes sociales""Presentacion de las redes sociales"
"Presentacion de las redes sociales"
 
広研塾(新谷)
広研塾(新谷)広研塾(新谷)
広研塾(新谷)
 
tv diguital
tv diguitaltv diguital
tv diguital
 
Representação i seletividade e inércia
Representação i   seletividade e inérciaRepresentação i   seletividade e inércia
Representação i seletividade e inércia
 
Vaibhava Kengeri
Vaibhava KengeriVaibhava Kengeri
Vaibhava Kengeri
 
WWII
WWIIWWII
WWII
 
Planos y ejes. slideshare
Planos y ejes. slidesharePlanos y ejes. slideshare
Planos y ejes. slideshare
 
Biografia
BiografiaBiografia
Biografia
 
Olá
OláOlá
Olá
 
Sentença 24ª vc rj
Sentença 24ª vc rjSentença 24ª vc rj
Sentença 24ª vc rj
 
Рельєф
РельєфРельєф
Рельєф
 
Rochelle Coffey recommendation letter
Rochelle Coffey recommendation letterRochelle Coffey recommendation letter
Rochelle Coffey recommendation letter
 
Кейс "Кокон Like"
Кейс  "Кокон Like"Кейс  "Кокон Like"
Кейс "Кокон Like"
 
Artigo 1
Artigo 1Artigo 1
Artigo 1
 
Gebeurtenis3
Gebeurtenis3Gebeurtenis3
Gebeurtenis3
 
Ekonomi makro-dan-mikro
Ekonomi makro-dan-mikroEkonomi makro-dan-mikro
Ekonomi makro-dan-mikro
 

Similar to Boost.勉強会 #13 @仙台 鳥小屋

Halide, Darkroom - 並列化のためのソフトウェア・研究
Halide, Darkroom - 並列化のためのソフトウェア・研究Halide, Darkroom - 並列化のためのソフトウェア・研究
Halide, Darkroom - 並列化のためのソフトウェア・研究Yuichi Yoshida
 
15分で知るVagrant (NSEG 2013-08-24)
15分で知るVagrant (NSEG 2013-08-24)15分で知るVagrant (NSEG 2013-08-24)
15分で知るVagrant (NSEG 2013-08-24)hiro345
 
ゼロから始める自作 CPU 入門
ゼロから始める自作 CPU 入門ゼロから始める自作 CPU 入門
ゼロから始める自作 CPU 入門Hirotaka Kawata
 
ネットワークコマンド入力に対応したツール事例
ネットワークコマンド入力に対応したツール事例ネットワークコマンド入力に対応したツール事例
ネットワークコマンド入力に対応したツール事例fumoto kazuhiro
 
Python, RaspberryPi, Arduinoで作る消費電力モニタリングシステム
Python, RaspberryPi, Arduinoで作る消費電力モニタリングシステムPython, RaspberryPi, Arduinoで作る消費電力モニタリングシステム
Python, RaspberryPi, Arduinoで作る消費電力モニタリングシステムJunichi Kakisako
 
シンラ・テクノロジー第2回クラウドゲーム開発者会議
シンラ・テクノロジー第2回クラウドゲーム開発者会議シンラ・テクノロジー第2回クラウドゲーム開発者会議
シンラ・テクノロジー第2回クラウドゲーム開発者会議Shinra_Technologies
 
Platform io で シュッと arduino 開発を高速化しよう speed up your arduino development with p...
Platform io で シュッと arduino 開発を高速化しよう speed up your arduino development with p...Platform io で シュッと arduino 開発を高速化しよう speed up your arduino development with p...
Platform io で シュッと arduino 開発を高速化しよう speed up your arduino development with p...74th
 
Docker と ECS と WebSocket で最強のマルチプレイ・ゲームサーバを構築
Docker と ECS と WebSocket で最強のマルチプレイ・ゲームサーバを構築Docker と ECS と WebSocket で最強のマルチプレイ・ゲームサーバを構築
Docker と ECS と WebSocket で最強のマルチプレイ・ゲームサーバを構築gree_tech
 
Django ORM道場:クエリの基本を押さえ,より良い形を身に付けよう
Django ORM道場:クエリの基本を押さえ,より良い形を身に付けようDjango ORM道場:クエリの基本を押さえ,より良い形を身に付けよう
Django ORM道場:クエリの基本を押さえ,より良い形を身に付けようTakayuki Shimizukawa
 
hbstudy#6LTyuzorock
hbstudy#6LTyuzorockhbstudy#6LTyuzorock
hbstudy#6LTyuzorockyuzorock
 
Nodeにしましょう
NodeにしましょうNodeにしましょう
NodeにしましょうYuzo Hebishima
 
GoでEPC作って本番運用している話
GoでEPC作って本番運用している話GoでEPC作って本番運用している話
GoでEPC作って本番運用している話雄也 日下部
 
さくらのIoT Platformを使ってみよう ~Developers in KOBE編~
さくらのIoT Platformを使ってみよう ~Developers in KOBE編~さくらのIoT Platformを使ってみよう ~Developers in KOBE編~
さくらのIoT Platformを使ってみよう ~Developers in KOBE編~法林浩之
 
わんくま同盟名古屋勉強会18回目 ASP.NET MVC3を利用したHTML5な画面開発~クラウドも有るよ!~
わんくま同盟名古屋勉強会18回目 ASP.NET MVC3を利用したHTML5な画面開発~クラウドも有るよ!~わんくま同盟名古屋勉強会18回目 ASP.NET MVC3を利用したHTML5な画面開発~クラウドも有るよ!~
わんくま同盟名古屋勉強会18回目 ASP.NET MVC3を利用したHTML5な画面開発~クラウドも有るよ!~normalian
 
OpenCLに触れてみよう
OpenCLに触れてみようOpenCLに触れてみよう
OpenCLに触れてみようYou&I
 
Infrastructure as Codeの取り組みと改善
Infrastructure as Codeの取り組みと改善Infrastructure as Codeの取り組みと改善
Infrastructure as Codeの取り組みと改善Takashi Honda
 
【20-E-5】実践!Infrastructure as a Codeの取り組みと改善
【20-E-5】実践!Infrastructure as a Codeの取り組みと改善【20-E-5】実践!Infrastructure as a Codeの取り組みと改善
【20-E-5】実践!Infrastructure as a Codeの取り組みと改善Developers Summit
 
オープン・ソースで構築するARMマイコン開発環境 ―― GCC,Eclipse,OpenOCDで統合開発環境,JTAGデバッグもできる!
オープン・ソースで構築するARMマイコン開発環境 ―― GCC,Eclipse,OpenOCDで統合開発環境,JTAGデバッグもできる!オープン・ソースで構築するARMマイコン開発環境 ―― GCC,Eclipse,OpenOCDで統合開発環境,JTAGデバッグもできる!
オープン・ソースで構築するARMマイコン開発環境 ―― GCC,Eclipse,OpenOCDで統合開発環境,JTAGデバッグもできる!Masaki Muranaka
 

Similar to Boost.勉強会 #13 @仙台 鳥小屋 (20)

Halide, Darkroom - 並列化のためのソフトウェア・研究
Halide, Darkroom - 並列化のためのソフトウェア・研究Halide, Darkroom - 並列化のためのソフトウェア・研究
Halide, Darkroom - 並列化のためのソフトウェア・研究
 
15分で知るVagrant (NSEG 2013-08-24)
15分で知るVagrant (NSEG 2013-08-24)15分で知るVagrant (NSEG 2013-08-24)
15分で知るVagrant (NSEG 2013-08-24)
 
ゼロから始める自作 CPU 入門
ゼロから始める自作 CPU 入門ゼロから始める自作 CPU 入門
ゼロから始める自作 CPU 入門
 
ネットワークコマンド入力に対応したツール事例
ネットワークコマンド入力に対応したツール事例ネットワークコマンド入力に対応したツール事例
ネットワークコマンド入力に対応したツール事例
 
Python, RaspberryPi, Arduinoで作る消費電力モニタリングシステム
Python, RaspberryPi, Arduinoで作る消費電力モニタリングシステムPython, RaspberryPi, Arduinoで作る消費電力モニタリングシステム
Python, RaspberryPi, Arduinoで作る消費電力モニタリングシステム
 
シンラ・テクノロジー第2回クラウドゲーム開発者会議
シンラ・テクノロジー第2回クラウドゲーム開発者会議シンラ・テクノロジー第2回クラウドゲーム開発者会議
シンラ・テクノロジー第2回クラウドゲーム開発者会議
 
Platform io で シュッと arduino 開発を高速化しよう speed up your arduino development with p...
Platform io で シュッと arduino 開発を高速化しよう speed up your arduino development with p...Platform io で シュッと arduino 開発を高速化しよう speed up your arduino development with p...
Platform io で シュッと arduino 開発を高速化しよう speed up your arduino development with p...
 
Docker と ECS と WebSocket で最強のマルチプレイ・ゲームサーバを構築
Docker と ECS と WebSocket で最強のマルチプレイ・ゲームサーバを構築Docker と ECS と WebSocket で最強のマルチプレイ・ゲームサーバを構築
Docker と ECS と WebSocket で最強のマルチプレイ・ゲームサーバを構築
 
Django ORM道場:クエリの基本を押さえ,より良い形を身に付けよう
Django ORM道場:クエリの基本を押さえ,より良い形を身に付けようDjango ORM道場:クエリの基本を押さえ,より良い形を身に付けよう
Django ORM道場:クエリの基本を押さえ,より良い形を身に付けよう
 
SnapDishの事例
SnapDishの事例SnapDishの事例
SnapDishの事例
 
hbstudy#6LTyuzorock
hbstudy#6LTyuzorockhbstudy#6LTyuzorock
hbstudy#6LTyuzorock
 
Nodeにしましょう
NodeにしましょうNodeにしましょう
Nodeにしましょう
 
GTC Japan 2017
GTC Japan 2017GTC Japan 2017
GTC Japan 2017
 
GoでEPC作って本番運用している話
GoでEPC作って本番運用している話GoでEPC作って本番運用している話
GoでEPC作って本番運用している話
 
さくらのIoT Platformを使ってみよう ~Developers in KOBE編~
さくらのIoT Platformを使ってみよう ~Developers in KOBE編~さくらのIoT Platformを使ってみよう ~Developers in KOBE編~
さくらのIoT Platformを使ってみよう ~Developers in KOBE編~
 
わんくま同盟名古屋勉強会18回目 ASP.NET MVC3を利用したHTML5な画面開発~クラウドも有るよ!~
わんくま同盟名古屋勉強会18回目 ASP.NET MVC3を利用したHTML5な画面開発~クラウドも有るよ!~わんくま同盟名古屋勉強会18回目 ASP.NET MVC3を利用したHTML5な画面開発~クラウドも有るよ!~
わんくま同盟名古屋勉強会18回目 ASP.NET MVC3を利用したHTML5な画面開発~クラウドも有るよ!~
 
OpenCLに触れてみよう
OpenCLに触れてみようOpenCLに触れてみよう
OpenCLに触れてみよう
 
Infrastructure as Codeの取り組みと改善
Infrastructure as Codeの取り組みと改善Infrastructure as Codeの取り組みと改善
Infrastructure as Codeの取り組みと改善
 
【20-E-5】実践!Infrastructure as a Codeの取り組みと改善
【20-E-5】実践!Infrastructure as a Codeの取り組みと改善【20-E-5】実践!Infrastructure as a Codeの取り組みと改善
【20-E-5】実践!Infrastructure as a Codeの取り組みと改善
 
オープン・ソースで構築するARMマイコン開発環境 ―― GCC,Eclipse,OpenOCDで統合開発環境,JTAGデバッグもできる!
オープン・ソースで構築するARMマイコン開発環境 ―― GCC,Eclipse,OpenOCDで統合開発環境,JTAGデバッグもできる!オープン・ソースで構築するARMマイコン開発環境 ―― GCC,Eclipse,OpenOCDで統合開発環境,JTAGデバッグもできる!
オープン・ソースで構築するARMマイコン開発環境 ―― GCC,Eclipse,OpenOCDで統合開発環境,JTAGデバッグもできる!
 

Boost.勉強会 #13 @仙台 鳥小屋