SlideShare a Scribd company logo
1 of 63
Download to read offline
サイボウズ・ラボユース
      最終成果報告
∼現役高校生の考えるクラウドOSの設計と実装∼
             粟本 真一




   注:WEBで公開するために一部のスライドを編集しています。
自己紹介

• OS作ってます。
• 神奈川県栄光学園高等学校2年
• サイボウズ・ラボユース 1期生サブメンバー
•   セキュリティ&プログラミングキャンプ2011参加 
    (セキュアなOSクラス)
唐突ですが、
暫く分散処理の話を
 させて下さい
我が家には
3台のパソコンがあります
ここで、一台のPCを使って
 コンパイルを走らせた
   としましょう
・・・お、おそい。
もうちょっと
何とかならないの?
全てのPCのCPUを合わせれば、Corei7の
 ハイエンドモデルに匹敵する性能が
 出てもおかしくないのに・・・。
それなのに・・・
皆で協力して計算した方が、
絶対効率が良いですよね!


cooperation
= 分散コンピューティング
これが、僕が分散処理に興味
 を持ったきっかけです
折角なので、分散処理の
 デモをしましょう



  Allba system Demo
今、手元に2台のPCが
    あります



  Allba system Demo
この2台を使って、僕の
OSのコンパイルをやって
 みたいと思います


  Allba system Demo
make


                 クライアントプログラム



サーバープログラム ×2




     サーバープログラム ×4



        Allba system Demo
Demo




Allba system Demo
計測データ

make (オプション無し) : 45s
make -j2       : 26s
 Allba         : 11s
(Mac Book Air 2proc, ASUS K53E 4proc)




    Allba system Demo
分散処理と
クラウドコンピューティング
  がどう繋がるのか
Answer
僕は、分散処理が一番
活躍するのはクラウド上だと
   思っているから
クラウド上での分散処理



• 分散処理で巨大なリソースが得られる
• そのリソースを時々しか使わないのは
 もったいない
クラウド上での分散処理


• クラウド上では、リソースを効率的に扱
 える(沢山のユーザーが絶えずアクセスするから)

• また、ユーザーは分散処理を意識する事
 なくサービスを使える
クラウドと分散処理は
  相性が良い
分散処理、及び
クラウドコンピューティングで
 OSは何ができるのか?
OSがやってあげた方が
効率が良い事は何なのか、
 という話をします。
環境整備

• 分散処理、並びにクラウドコンピュー
 ティングを行う環境が   っていた方が、
 当然、開発は楽になる

• より良い環境を提供する事がOSの使命
OSがやるべき事

• 分散処理に最適化されたAPIの提供
• ネットワーク越しの同期
• ハードウェア周りのサポート    
 (ex. メモリ管理)


• 仮想ファイル
最適化されたAPIとは

• 分散処理では、多数のノードとコネク
 ションを張る必要がある

• その中には「応答のない」ノードもある
 かもしれないが、その応答を待っている
 暇は無い
最適化されたAPIとは

• ノードに接続できない時、connect()のタ
 イムアウトに数十秒も掛かっているくら
 いなら、諦めて処理を始めた方が早い

• 先ほどのデモでも、connect()のタイムア
 ウトは5秒に設定してある
そもそも、複数ノードとの
      接続をAPI化した方が良い

foreach(node n : node_list)
{
  error = connect(n);         新しいAPIを
}
list < string > ip_list;
	   list<Node>::iterator it = server_list.begin();
	   while (it != server_list.end()) {

	   	    int server_sockfd = socket(AF_INET, SOCK_STREAM, 0);
	   	    if (server_sockfd < 0) {
	   	    	    cout << (*it).ip_addr << "(" << (*it).port << "): failed (1)"
	   	    	    	     	    << endl;
	   	    	    ++it;
	   	    	    continue;
	   	    }
	   	    struct sockaddr_in address;

	   	    address.sin_family = AF_INET;
	
	
	
    	
    	
    	
                    この70行のコード
         address.sin_addr.s_addr = inet_addr((*it).ip_addr.c_str());
         address.sin_port = htons((*it).port);
         int len = sizeof(address);

	   	    int result = fcntl(server_sockfd, F_SETFL, O_NONBLOCK);

	   	    if (result < 0) {
	   	    	    cout << "fcntl returned error(1)." << endl;
	   	    	    close(server_sockfd);

	   	    	    return -1;
	   	    }

	   	    result = connect(server_sockfd, (struct sockaddr *) &address, len);

	   	    if (result < 0) {
	   	    	    if (errno == EINPROGRESS) {
	   	    	    	     fd_set set;
	   	    	    	     struct timeval tv;
	   	    	    	     tv.tv_sec = 5; //5秒でタイムアウト
	   	    	    	     tv.tv_usec = 0;
分散処理に最適化されたAPI
       を作れば、この3行で済む

	   list<Node> node_list;
	   list<int> server_sockfd = grid_socket(AF_INET, SOCK_STREAM, 0);
	   vector<int> error = grid_connect(server_sockfd, node_list);
同期

• プロセス間の同期ならmutexを使えば良
 い

• ネットワーク越しの同期ならば?   
 →同等の機能があると嬉しい
デモプログラムでは

• そもそも、分散コンパイルでは    
 同期を殆ど取る必要が無い

• スレッドの同期に落とし込んで同期を取
 れば十分
もっと複雑なプログラムだと、
中央のノードを介さない同期
   等も必要になる
その辺のお世話は
OSがやりましょう、
 という話です
メモリの同期


• デモプログラムでは、メモリに書き込ま
 れたデータをソケット通信で送っていた
メモリの同期

• メモリの同期はOSがその実力を発揮で
 きる場所

• CPUの機能を使えば、容易に同期が取れ
 る
メモリの同期
ノードA

プロセス   カーネル



ノードB

プロセス   カーネル
メモリの同期
ノードA

プロセス       カーネル

 メモリ書き込み
ノードB

プロセス       カーネル
メモリの同期
ノードA

プロセス           カーネル

       メモリアクセス検出
ノードB

プロセス           カーネル
メモリの同期
ノードA

プロセス       カーネル

       ページフォルト
ノードB

プロセス       カーネル
メモリの同期
ノードA

プロセス        カーネル

 書き込まれたデータを転送
ノードB

プロセス        カーネル
メモリの同期
ノードA

プロセス        カーネル


       データの反映
ノードB

プロセス        カーネル
メモリの同期
• データを同期したいと思ったら、メモリ
 の特定領域を共有メモリ化して、そこに
 memcpyなりなんなりで書き込めば良い
 だけ

• プロセス間共有メモリと同じように扱え
 る
仮想ファイル

• OSは、各ノード間でファイルを共有
 し、他のノード上のファイルへの透過的
 なアクセスを提供できる

• プログラマは、ファイルの同期を気にす
 る必要が無い
仮想ファイル


• 実装は簡単で、カーネルがファイルの実
 体を持つノードのカーネルとデータをや
 りとりするだけ
デモプログラムでは

fstatシステムコールでタイムスタンプを確認して、ノードに問
い合わせて、ノードもfstatシステムコールを実行して、古い
ファイルならばそれをクライアントに伝えて、クライアントは
openシステムコールでファイルを開いて、readシステムコール
で読んで、サーバーはクライアントからファイルを受け取る
と、openシステムコールとreadシステムコールでまた書き込
む・・・
システムコールの呼び出しって
結構コストが掛かるんですよ?
こういう事は
OSがやってあげれば
良いじゃないですか
// 同期                                                          	     	   // 同期が必要かどうかを伝達

if (is_need_to_sync == 1) {                                    	     	   server->WriteNumber(server->IsNotLocalHost());
	      while (true) {                                          	     	   server->ReadString(tmp, ok.size());
	      	      int fn_size = client.ReadNumber();               	     	   if (tmp != ok) {
	      	      if (fn_size == 0) {                              	     	   	      cout << "Allba: error: system error" << endl;
	      	      	      break;                                    	     	   	      return -1;
	      	      }                                                	     	   }
	      	      client.WriteString(ok);
                                                             	     	     bool is_need_sync = true;



                          この、クライアントと
	       	    string sync_filename;                           	     	     list<string>::iterator it2 = ip_list.begin();
	       	    client.ReadString(sync_filename, fn_size);      	     	     while (it2 != ip_list.end()) {
                                                             	     	     	      if (*it2 == (*it).ip_addr) {
	       	    struct stat stat_tmp;                           	     	     	      	      is_need_sync = false;
	       	                                                    	     	
             int stat_status = stat(sync_filename.c_str(), &stat_tmp);   	      	      break;
                                                             	     	     	      }



                 サーバー合わせて150行
	       	    client.WriteString(ok);                         	     	     	      ++it2;
                                                             	     	     }
	       	    time_t time = (time_t) client.ReadNumber();     	     	     server_list_.push_back(server);


	       	    if (time <= stat_tmp.st_mtime && stat_status !=   	
                                                               -1) { 	   if (server->IsNotLocalHost() == 1) {
	       	    	      client.WriteString(ok);                    	     	   	      if (!is_need_sync) {
	       	    	      continue;                                  	     	   	      	      server->WriteNumber(0);



                                   のコードなんて、
	       	    }                                                 	     	   	      	      ++it;
	       	    cout << "refreshing " << sync_filename << endl;   	     	   	      	      continue;
	       	    string no = "no";                                 	     	   	      }
	       	    client.WriteString(no);
                                                            	        	   	     cout << "sync starting..." << endl;
	       	    int outputfile_length = client.ReadNumber();   	        	   	     list<string>::iterator it3 = sync_list_.begin();
                                                            	        	   	     while (it3 != sync_list_.end()) {
	       	    client.WriteString(ok);                        	        	   	     	      server->WriteNumber((*it3).size());
                                                            	        	   	     	      server->ReadString(tmp, ok.size());
	       	    string outputfile;                             	        	   	     	      if (tmp != ok) {
                                                            	        	   	     	      	      cout << "Allba: error: system error" << endl;
	       	    char *file_data = new char[outputfile_length]; 	        	   	     	      	      return -1;
                                                            	        	   	     	      }
	       	    client.ReadString(file_data, outputfile_length);
                                                             	    	      	     	      tmp = *it3;
	       	    FILE *fp = fopen(sync_filename.c_str(), "wb");  	    	      	     	      server->WriteString(tmp);
	       	    fseek(fp, 0, SEEK_SET);                         	    	      	     	      server->ReadString(tmp, ok.size());
	       	                                                    	 fp);
             fwrite(file_data, sizeof(char), outputfile_length,   	      	     	      if (tmp != ok) {
                                                             	    	      	     	      	      cout << "Allba: error: system error" << endl;
                                                             	    	      	     	      	      return -1;
ノードA

   プロセス



仮想ファイル経由でアクセスすれば

    ノードB

   プロセス

             仮想ファイル
「一行」もコードを
書かなくて良いんです
まとめるならば、
分散処理をより容易にする、
それが僕のやりたい事です
僕がラボユースでやった事
• 分散処理の勉強
• 既存OSの実装を勉強
• クラウドOSの設計
• OSの開発
OSの「開発」では、
基礎の構築を行っていました
•   メモリ管理


•   システムコール


•   ファイルシステム


•   デバイスドライバ


•   スケジューリング
今後の実装予定
• Ethernetドライバの実装
• プロトコルスタックの実装
• 分散処理システムのサポート
• アプリケーション実行環境の整備
• Linuxのドライバの移植
最後に(感想とか)
• 1年という時間はOSを作るには短すぎ
 るけれど、やれる事はやったと思う

• OS開発では、バグが発生すると1ヶ月
 開発が止まる事もしばしば。そういう時
 にラボのメンバーに相談できるのは心強
 かった
最後に(感想とか)

• この中にOS開発に興味がある学生がい
 れば、ラボユースに申し込むと良いかも

• OSASKの川合さん含め、ラボのメンバー
 がサポートしてくれます

More Related Content

What's hot

ラズパイでデバイスドライバを作ってみた。
ラズパイでデバイスドライバを作ってみた。ラズパイでデバイスドライバを作ってみた。
ラズパイでデバイスドライバを作ってみた。Kazuki Onishi
 
PHP と SAPI と ZendEngine3 と
PHP と SAPI と ZendEngine3 とPHP と SAPI と ZendEngine3 と
PHP と SAPI と ZendEngine3 とdo_aki
 
signal の話 或いは Zend Signals とは何か
signal の話 或いは Zend Signals とは何かsignal の話 或いは Zend Signals とは何か
signal の話 或いは Zend Signals とは何かdo_aki
 
SSHパケットの復号ツールを作ろう_v1(Decrypt SSH .pcap File)
SSHパケットの復号ツールを作ろう_v1(Decrypt SSH .pcap File)SSHパケットの復号ツールを作ろう_v1(Decrypt SSH .pcap File)
SSHパケットの復号ツールを作ろう_v1(Decrypt SSH .pcap File)Tetsuya Hasegawa
 
[TL06] 日本の第一人者が C# の現状と今後を徹底解説! 「この素晴らしい C# に祝福を!」
[TL06] 日本の第一人者が C# の現状と今後を徹底解説! 「この素晴らしい C# に祝福を!」[TL06] 日本の第一人者が C# の現状と今後を徹底解説! 「この素晴らしい C# に祝福を!」
[TL06] 日本の第一人者が C# の現状と今後を徹底解説! 「この素晴らしい C# に祝福を!」de:code 2017
 
運用構築技術者の為のPSプログラミング第2回
運用構築技術者の為のPSプログラミング第2回運用構築技術者の為のPSプログラミング第2回
運用構築技術者の為のPSプログラミング第2回Shigeharu Yamaoka
 
php-src の歩き方
php-src の歩き方php-src の歩き方
php-src の歩き方do_aki
 
OPcache の最適化器の今
OPcache の最適化器の今OPcache の最適化器の今
OPcache の最適化器の今y-uti
 
PHP AST 徹底解説
PHP AST 徹底解説PHP AST 徹底解説
PHP AST 徹底解説do_aki
 
Lisp Tutorial for Pythonista Day 6
Lisp Tutorial for Pythonista Day 6Lisp Tutorial for Pythonista Day 6
Lisp Tutorial for Pythonista Day 6Ransui Iso
 
PHP AST 徹底解説(補遺)
PHP AST 徹底解説(補遺)PHP AST 徹底解説(補遺)
PHP AST 徹底解説(補遺)do_aki
 
.NET Web プログラミングにおける非同期 IO のすべて (Build Insider OFFLINE)
.NET Web プログラミングにおける非同期 IO のすべて (Build Insider OFFLINE).NET Web プログラミングにおける非同期 IO のすべて (Build Insider OFFLINE)
.NET Web プログラミングにおける非同期 IO のすべて (Build Insider OFFLINE)Tusyoshi Matsuzaki
 
【学習メモ#7th】12ステップで作る組込みOS自作入門
【学習メモ#7th】12ステップで作る組込みOS自作入門 【学習メモ#7th】12ステップで作る組込みOS自作入門
【学習メモ#7th】12ステップで作る組込みOS自作入門 sandai
 
Cloud computing competition by Hapyrus
Cloud computing competition by HapyrusCloud computing competition by Hapyrus
Cloud computing competition by HapyrusKoichi Fujikawa
 
Development app-with-elixir
Development app-with-elixirDevelopment app-with-elixir
Development app-with-elixirk1complete
 
AVAの話 #mentaicojs
AVAの話 #mentaicojsAVAの話 #mentaicojs
AVAの話 #mentaicojsHiroyuki Anai
 
運用構築技術者の為のPSプログラミング第1回
運用構築技術者の為のPSプログラミング第1回運用構築技術者の為のPSプログラミング第1回
運用構築技術者の為のPSプログラミング第1回Shigeharu Yamaoka
 

What's hot (20)

ラズパイでデバイスドライバを作ってみた。
ラズパイでデバイスドライバを作ってみた。ラズパイでデバイスドライバを作ってみた。
ラズパイでデバイスドライバを作ってみた。
 
PHP と SAPI と ZendEngine3 と
PHP と SAPI と ZendEngine3 とPHP と SAPI と ZendEngine3 と
PHP と SAPI と ZendEngine3 と
 
signal の話 或いは Zend Signals とは何か
signal の話 或いは Zend Signals とは何かsignal の話 或いは Zend Signals とは何か
signal の話 或いは Zend Signals とは何か
 
SSHパケットの復号ツールを作ろう_v1(Decrypt SSH .pcap File)
SSHパケットの復号ツールを作ろう_v1(Decrypt SSH .pcap File)SSHパケットの復号ツールを作ろう_v1(Decrypt SSH .pcap File)
SSHパケットの復号ツールを作ろう_v1(Decrypt SSH .pcap File)
 
[TL06] 日本の第一人者が C# の現状と今後を徹底解説! 「この素晴らしい C# に祝福を!」
[TL06] 日本の第一人者が C# の現状と今後を徹底解説! 「この素晴らしい C# に祝福を!」[TL06] 日本の第一人者が C# の現状と今後を徹底解説! 「この素晴らしい C# に祝福を!」
[TL06] 日本の第一人者が C# の現状と今後を徹底解説! 「この素晴らしい C# に祝福を!」
 
運用構築技術者の為のPSプログラミング第2回
運用構築技術者の為のPSプログラミング第2回運用構築技術者の為のPSプログラミング第2回
運用構築技術者の為のPSプログラミング第2回
 
Boost tour 1.60.0 merge
Boost tour 1.60.0 mergeBoost tour 1.60.0 merge
Boost tour 1.60.0 merge
 
php-src の歩き方
php-src の歩き方php-src の歩き方
php-src の歩き方
 
OPcache の最適化器の今
OPcache の最適化器の今OPcache の最適化器の今
OPcache の最適化器の今
 
PHP AST 徹底解説
PHP AST 徹底解説PHP AST 徹底解説
PHP AST 徹底解説
 
Lisp Tutorial for Pythonista Day 6
Lisp Tutorial for Pythonista Day 6Lisp Tutorial for Pythonista Day 6
Lisp Tutorial for Pythonista Day 6
 
C-langage
C-langageC-langage
C-langage
 
PHP AST 徹底解説(補遺)
PHP AST 徹底解説(補遺)PHP AST 徹底解説(補遺)
PHP AST 徹底解説(補遺)
 
.NET Web プログラミングにおける非同期 IO のすべて (Build Insider OFFLINE)
.NET Web プログラミングにおける非同期 IO のすべて (Build Insider OFFLINE).NET Web プログラミングにおける非同期 IO のすべて (Build Insider OFFLINE)
.NET Web プログラミングにおける非同期 IO のすべて (Build Insider OFFLINE)
 
【学習メモ#7th】12ステップで作る組込みOS自作入門
【学習メモ#7th】12ステップで作る組込みOS自作入門 【学習メモ#7th】12ステップで作る組込みOS自作入門
【学習メモ#7th】12ステップで作る組込みOS自作入門
 
Cloud computing competition by Hapyrus
Cloud computing competition by HapyrusCloud computing competition by Hapyrus
Cloud computing competition by Hapyrus
 
Rakuten tech conf
Rakuten tech confRakuten tech conf
Rakuten tech conf
 
Development app-with-elixir
Development app-with-elixirDevelopment app-with-elixir
Development app-with-elixir
 
AVAの話 #mentaicojs
AVAの話 #mentaicojsAVAの話 #mentaicojs
AVAの話 #mentaicojs
 
運用構築技術者の為のPSプログラミング第1回
運用構築技術者の為のPSプログラミング第1回運用構築技術者の為のPSプログラミング第1回
運用構築技術者の為のPSプログラミング第1回
 

Viewers also liked

世界最速の正規表現JITエンジンの実装
世界最速の正規表現JITエンジンの実装世界最速の正規表現JITエンジンの実装
世界最速の正規表現JITエンジンの実装Ryoma Sin'ya
 
Ruby × Arduinoで フィジカルコンピューティング やってみた
Ruby × Arduinoで フィジカルコンピューティング やってみたRuby × Arduinoで フィジカルコンピューティング やってみた
Ruby × Arduinoで フィジカルコンピューティング やってみたshiftky
 
人が神姫ん感(原文ママ)を感じるコンピュータ
人が神姫ん感(原文ママ)を感じるコンピュータ人が神姫ん感(原文ママ)を感じるコンピュータ
人が神姫ん感(原文ママ)を感じるコンピュータharu2036
 
C-HelperでC言語を効率的に学習しよう
C-HelperでC言語を効率的に学習しようC-HelperでC言語を効率的に学習しよう
C-HelperでC言語を効率的に学習しようKota Uchida
 
正規言語でプログラミング
正規言語でプログラミング正規言語でプログラミング
正規言語でプログラミングRyoma Sin'ya
 
サイボウズ・ラボユース 最終成果報告会プレゼンテーション
サイボウズ・ラボユース 最終成果報告会プレゼンテーションサイボウズ・ラボユース 最終成果報告会プレゼンテーション
サイボウズ・ラボユース 最終成果報告会プレゼンテーションsn_monochr
 
中間成果報告会 発表資料
中間成果報告会 発表資料中間成果報告会 発表資料
中間成果報告会 発表資料sn_monochr
 
サイボウズ・ラボユース成果報告会
サイボウズ・ラボユース成果報告会サイボウズ・ラボユース成果報告会
サイボウズ・ラボユース成果報告会slankdev
 
サイボウズ・ラボ成果発表会
サイボウズ・ラボ成果発表会サイボウズ・ラボ成果発表会
サイボウズ・ラボ成果発表会Komei Kamiya
 
EMNLP 2015 yomikai
EMNLP 2015 yomikai EMNLP 2015 yomikai
EMNLP 2015 yomikai Yo Ehara
 
Humor Recognition and Humor Anchor Extraction
Humor Recognition and Humor Anchor ExtractionHumor Recognition and Humor Anchor Extraction
Humor Recognition and Humor Anchor Extraction裕樹 奥田
 
星野「調査観察データの統計科学」第3章
星野「調査観察データの統計科学」第3章星野「調査観察データの統計科学」第3章
星野「調査観察データの統計科学」第3章Shuyo Nakatani
 
Learning Better Embeddings for Rare Words Using Distributional Representations
Learning Better Embeddings for Rare Words Using Distributional RepresentationsLearning Better Embeddings for Rare Words Using Distributional Representations
Learning Better Embeddings for Rare Words Using Distributional RepresentationsTakanori Nakai
 
星野「調査観察データの統計科学」第1&2章
星野「調査観察データの統計科学」第1&2章星野「調査観察データの統計科学」第1&2章
星野「調査観察データの統計科学」第1&2章Shuyo Nakatani
 
[Yang, Downey and Boyd-Graber 2015] Efficient Methods for Incorporating Knowl...
[Yang, Downey and Boyd-Graber 2015] Efficient Methods for Incorporating Knowl...[Yang, Downey and Boyd-Graber 2015] Efficient Methods for Incorporating Knowl...
[Yang, Downey and Boyd-Graber 2015] Efficient Methods for Incorporating Knowl...Shuyo Nakatani
 
A Neural Attention Model for Sentence Summarization [Rush+2015]
A Neural Attention Model for Sentence Summarization [Rush+2015]A Neural Attention Model for Sentence Summarization [Rush+2015]
A Neural Attention Model for Sentence Summarization [Rush+2015]Yuta Kikuchi
 
Kubernetes in 30 minutes (2017/03/10)
Kubernetes in 30 minutes (2017/03/10)Kubernetes in 30 minutes (2017/03/10)
Kubernetes in 30 minutes (2017/03/10)lestrrat
 
サイボウズ・ラボユース成果発表会資料
サイボウズ・ラボユース成果発表会資料サイボウズ・ラボユース成果発表会資料
サイボウズ・ラボユース成果発表会資料masahiro13
 
2016プロシンスポンサー 加筆版
2016プロシンスポンサー 加筆版2016プロシンスポンサー 加筆版
2016プロシンスポンサー 加筆版Hirokazu Nishio
 

Viewers also liked (20)

世界最速の正規表現JITエンジンの実装
世界最速の正規表現JITエンジンの実装世界最速の正規表現JITエンジンの実装
世界最速の正規表現JITエンジンの実装
 
Ruby × Arduinoで フィジカルコンピューティング やってみた
Ruby × Arduinoで フィジカルコンピューティング やってみたRuby × Arduinoで フィジカルコンピューティング やってみた
Ruby × Arduinoで フィジカルコンピューティング やってみた
 
人が神姫ん感(原文ママ)を感じるコンピュータ
人が神姫ん感(原文ママ)を感じるコンピュータ人が神姫ん感(原文ママ)を感じるコンピュータ
人が神姫ん感(原文ママ)を感じるコンピュータ
 
C-HelperでC言語を効率的に学習しよう
C-HelperでC言語を効率的に学習しようC-HelperでC言語を効率的に学習しよう
C-HelperでC言語を効率的に学習しよう
 
正規言語でプログラミング
正規言語でプログラミング正規言語でプログラミング
正規言語でプログラミング
 
サイボウズ・ラボユース 最終成果報告会プレゼンテーション
サイボウズ・ラボユース 最終成果報告会プレゼンテーションサイボウズ・ラボユース 最終成果報告会プレゼンテーション
サイボウズ・ラボユース 最終成果報告会プレゼンテーション
 
中間成果報告会 発表資料
中間成果報告会 発表資料中間成果報告会 発表資料
中間成果報告会 発表資料
 
サイボウズ・ラボユース成果報告会
サイボウズ・ラボユース成果報告会サイボウズ・ラボユース成果報告会
サイボウズ・ラボユース成果報告会
 
サイボウズ・ラボ成果発表会
サイボウズ・ラボ成果発表会サイボウズ・ラボ成果発表会
サイボウズ・ラボ成果発表会
 
Emnlp読み会資料
Emnlp読み会資料Emnlp読み会資料
Emnlp読み会資料
 
EMNLP 2015 yomikai
EMNLP 2015 yomikai EMNLP 2015 yomikai
EMNLP 2015 yomikai
 
Humor Recognition and Humor Anchor Extraction
Humor Recognition and Humor Anchor ExtractionHumor Recognition and Humor Anchor Extraction
Humor Recognition and Humor Anchor Extraction
 
星野「調査観察データの統計科学」第3章
星野「調査観察データの統計科学」第3章星野「調査観察データの統計科学」第3章
星野「調査観察データの統計科学」第3章
 
Learning Better Embeddings for Rare Words Using Distributional Representations
Learning Better Embeddings for Rare Words Using Distributional RepresentationsLearning Better Embeddings for Rare Words Using Distributional Representations
Learning Better Embeddings for Rare Words Using Distributional Representations
 
星野「調査観察データの統計科学」第1&2章
星野「調査観察データの統計科学」第1&2章星野「調査観察データの統計科学」第1&2章
星野「調査観察データの統計科学」第1&2章
 
[Yang, Downey and Boyd-Graber 2015] Efficient Methods for Incorporating Knowl...
[Yang, Downey and Boyd-Graber 2015] Efficient Methods for Incorporating Knowl...[Yang, Downey and Boyd-Graber 2015] Efficient Methods for Incorporating Knowl...
[Yang, Downey and Boyd-Graber 2015] Efficient Methods for Incorporating Knowl...
 
A Neural Attention Model for Sentence Summarization [Rush+2015]
A Neural Attention Model for Sentence Summarization [Rush+2015]A Neural Attention Model for Sentence Summarization [Rush+2015]
A Neural Attention Model for Sentence Summarization [Rush+2015]
 
Kubernetes in 30 minutes (2017/03/10)
Kubernetes in 30 minutes (2017/03/10)Kubernetes in 30 minutes (2017/03/10)
Kubernetes in 30 minutes (2017/03/10)
 
サイボウズ・ラボユース成果発表会資料
サイボウズ・ラボユース成果発表会資料サイボウズ・ラボユース成果発表会資料
サイボウズ・ラボユース成果発表会資料
 
2016プロシンスポンサー 加筆版
2016プロシンスポンサー 加筆版2016プロシンスポンサー 加筆版
2016プロシンスポンサー 加筆版
 

Similar to ラボユース最終成果報告会(Web公開版)

Continuation with Boost.Context
Continuation with Boost.ContextContinuation with Boost.Context
Continuation with Boost.ContextAkira Takahashi
 
HandlerSocket plugin for MySQL
HandlerSocket plugin for MySQLHandlerSocket plugin for MySQL
HandlerSocket plugin for MySQLakirahiguchi
 
Python physicalcomputing
Python physicalcomputingPython physicalcomputing
Python physicalcomputingNoboru Irieda
 
ぱっと見でわかるC++11
ぱっと見でわかるC++11ぱっと見でわかるC++11
ぱっと見でわかるC++11えぴ 福田
 
mod_auth_ticket - Bringing Single-Sign-On to lighttpd
mod_auth_ticket - Bringing Single-Sign-On to lighttpdmod_auth_ticket - Bringing Single-Sign-On to lighttpd
mod_auth_ticket - Bringing Single-Sign-On to lighttpdTaisuke Yamada
 
研究生のためのC++ no.2
研究生のためのC++ no.2研究生のためのC++ no.2
研究生のためのC++ no.2Tomohiro Namba
 
Javaセキュアコーディングセミナー東京第3回講義
Javaセキュアコーディングセミナー東京第3回講義Javaセキュアコーディングセミナー東京第3回講義
Javaセキュアコーディングセミナー東京第3回講義JPCERT Coordination Center
 
show コマンド結果をパースする方法あれこれ #npstudy
show コマンド結果をパースする方法あれこれ #npstudyshow コマンド結果をパースする方法あれこれ #npstudy
show コマンド結果をパースする方法あれこれ #npstudyakira6592
 
Boost9 session
Boost9 sessionBoost9 session
Boost9 sessionfreedom404
 
Write good parser in perl
Write good parser in perlWrite good parser in perl
Write good parser in perlJiro Nishiguchi
 
【学習メモ#8th】12ステップで作る組込みOS自作入門
【学習メモ#8th】12ステップで作る組込みOS自作入門 【学習メモ#8th】12ステップで作る組込みOS自作入門
【学習メモ#8th】12ステップで作る組込みOS自作入門 sandai
 
社内向けTech Talk資料~Fluentdの基本紹介~
社内向けTech Talk資料~Fluentdの基本紹介~ 社内向けTech Talk資料~Fluentdの基本紹介~
社内向けTech Talk資料~Fluentdの基本紹介~ Daisuke Ikeda
 
Webサーバのチューニング
WebサーバのチューニングWebサーバのチューニング
WebサーバのチューニングYu Komiya
 
MongoDB Configパラメータ解説
MongoDB Configパラメータ解説MongoDB Configパラメータ解説
MongoDB Configパラメータ解説Shoken Fujisaki
 
Awsで構築したのだよ 05 プロセス監視、メモリ使用率、ディスク使用率をCloudWatchのカスタムメトリクスに追加したい
Awsで構築したのだよ 05 プロセス監視、メモリ使用率、ディスク使用率をCloudWatchのカスタムメトリクスに追加したいAwsで構築したのだよ 05 プロセス監視、メモリ使用率、ディスク使用率をCloudWatchのカスタムメトリクスに追加したい
Awsで構築したのだよ 05 プロセス監視、メモリ使用率、ディスク使用率をCloudWatchのカスタムメトリクスに追加したい聡 大久保
 
8 並列計算に向けた pcセッティング
8 並列計算に向けた pcセッティング8 並列計算に向けた pcセッティング
8 並列計算に向けた pcセッティングTakeshi Takaishi
 

Similar to ラボユース最終成果報告会(Web公開版) (20)

Rの高速化
Rの高速化Rの高速化
Rの高速化
 
Continuation with Boost.Context
Continuation with Boost.ContextContinuation with Boost.Context
Continuation with Boost.Context
 
HandlerSocket plugin for MySQL
HandlerSocket plugin for MySQLHandlerSocket plugin for MySQL
HandlerSocket plugin for MySQL
 
Python physicalcomputing
Python physicalcomputingPython physicalcomputing
Python physicalcomputing
 
ぱっと見でわかるC++11
ぱっと見でわかるC++11ぱっと見でわかるC++11
ぱっと見でわかるC++11
 
mod_auth_ticket - Bringing Single-Sign-On to lighttpd
mod_auth_ticket - Bringing Single-Sign-On to lighttpdmod_auth_ticket - Bringing Single-Sign-On to lighttpd
mod_auth_ticket - Bringing Single-Sign-On to lighttpd
 
Pfi Seminar 2010 1 7
Pfi Seminar 2010 1 7Pfi Seminar 2010 1 7
Pfi Seminar 2010 1 7
 
研究生のためのC++ no.2
研究生のためのC++ no.2研究生のためのC++ no.2
研究生のためのC++ no.2
 
C++14 Overview
C++14 OverviewC++14 Overview
C++14 Overview
 
Javaセキュアコーディングセミナー東京第3回講義
Javaセキュアコーディングセミナー東京第3回講義Javaセキュアコーディングセミナー東京第3回講義
Javaセキュアコーディングセミナー東京第3回講義
 
show コマンド結果をパースする方法あれこれ #npstudy
show コマンド結果をパースする方法あれこれ #npstudyshow コマンド結果をパースする方法あれこれ #npstudy
show コマンド結果をパースする方法あれこれ #npstudy
 
Boost9 session
Boost9 sessionBoost9 session
Boost9 session
 
Boost tour 1_44_0
Boost tour 1_44_0Boost tour 1_44_0
Boost tour 1_44_0
 
Write good parser in perl
Write good parser in perlWrite good parser in perl
Write good parser in perl
 
【学習メモ#8th】12ステップで作る組込みOS自作入門
【学習メモ#8th】12ステップで作る組込みOS自作入門 【学習メモ#8th】12ステップで作る組込みOS自作入門
【学習メモ#8th】12ステップで作る組込みOS自作入門
 
社内向けTech Talk資料~Fluentdの基本紹介~
社内向けTech Talk資料~Fluentdの基本紹介~ 社内向けTech Talk資料~Fluentdの基本紹介~
社内向けTech Talk資料~Fluentdの基本紹介~
 
Webサーバのチューニング
WebサーバのチューニングWebサーバのチューニング
Webサーバのチューニング
 
MongoDB Configパラメータ解説
MongoDB Configパラメータ解説MongoDB Configパラメータ解説
MongoDB Configパラメータ解説
 
Awsで構築したのだよ 05 プロセス監視、メモリ使用率、ディスク使用率をCloudWatchのカスタムメトリクスに追加したい
Awsで構築したのだよ 05 プロセス監視、メモリ使用率、ディスク使用率をCloudWatchのカスタムメトリクスに追加したいAwsで構築したのだよ 05 プロセス監視、メモリ使用率、ディスク使用率をCloudWatchのカスタムメトリクスに追加したい
Awsで構築したのだよ 05 プロセス監視、メモリ使用率、ディスク使用率をCloudWatchのカスタムメトリクスに追加したい
 
8 並列計算に向けた pcセッティング
8 並列計算に向けた pcセッティング8 並列計算に向けた pcセッティング
8 並列計算に向けた pcセッティング
 

ラボユース最終成果報告会(Web公開版)