読者です 読者をやめる 読者になる 読者になる

詳説WebAssembly

CMU#51で「詳説WebAssembly」という題目で解説を行いました。 詳説WebAssembly from 祐司 伊藤 www.slideshare.net webブラウザで処理できる言語をJavaScriptだけに限定している現状をリセットする一手。 現状のwebブラウザの互換性問題はECMAScriptへの準拠…

VPNサーバを仮想マシン上に建てようとしてハマった話

再現環境 仮想マシンのホスト : VMware vSphere Hypervisor ESXi 仮想マシンのゲストOS : Ubuntu Server 16.04 VPNサーバ : SoftEther vpnserver (OSS版) VPNクライアント : macOS Sierra 10.12.2 設定 仮想マシンのホストのネットワーク設定をプロミスカス…

WebWorker調査メモ

Webブラウザ上でマルチスレッドを実現する方法を調査していたところ、WebWorkerなるものを見つけた。当初探していたものと異なるが、メモリ空間の分離ができ、他のところで役立ちそうなため、メモ。 developer.mozilla.org 特徴 ブラウザ上のJavaScriptは1…

JTF2016で発表してきました

7/24にJuly Tech Festa 2016で以下の内容で発表をしてきました(一部画層を差し替えています)。 PROCESS WARP「プロセスがデバイス間で移動する」仕組みを作る from 祐司 伊藤 www.slideshare.net www.youtube.com www.youtube.com 思っていた以上に見に来て…

RaspberryPi 32台で可搬型クラスタ実験環境を作る(ハードウェア編)

PROCESS WARPの実験やデモ用にある程度の台数で移動可能なクラスタ実験環境があったら凄く良いだろうなということで、RaspberryPiを32台利用した、クラスタ実験環境を作りました。 追記:JTF2016登壇時に現物持参する予定です。興味ある方見に来てください。…

CMakeの設定ファイルを削除する

CMakeを実行すると作業用ファイル?が大量に生成される。 削除する場合、以下のコマンドで削除できた。 find . -iwholename '*cmake*' -not -name CMakeLists.txt -delete CMakeList.txt以外のファイル名にcmake文字列を含むものを削除している。 削除したく…

RaspbianでBoost 1.60を野良ビルドする

Clang 3.8につづいてBoost 1.60もコンパイル & インストールするというシンプルなお話です。 前提 Raspberry Pi 2 Model B以上(多分3 Model Bでも行けると思う) Raspbian(update, upgrade済み) ほかのBoostとの共存は考慮していません Clang 3.8 準備 以下の…

RaspbianでClang 3.8を野良ビルドする

2016年3月に日本でもRaspberry Pi 3 Model Bが販売開始されました。しかし、オフィシャルから提供されているRaspbianのC/C++コンパイル環境では依然gcc 3.8または、clang 3.0までしか提供されていないようです(自分はRaspberry Pi 2 Model Bまでしか確認して…

Webブラウザで使えるいろんな処理系

CMU #36で「Webブラウザで使えるいろんな処理系」というタイトルでLTをしてきました。 Webブラウザで使えるいろんな処理系 from 祐司 伊藤 www.slideshare.net 発表者数20人以上で、クオリティも非常に高い満腹会でした。 lab.designsatellites.jp

Boost.勉強会 #19 東京 に参加してきました

C++で開発する割に、C++系の人と滅多に会わないので初めて参加してきました。 connpass.com 厳つい老齢の開発者にコテンパンにのされるのかとビクビクしていましたが、July Tech Festaより若い人が多い印象です。 内容は低レイヤーや規格、Boostの実装につい…

OSXでループバックデバイスっぽいことをする

OS Xではあまり馴染みがないかもしれませんが、ループバックデバイスっぽいことができます。 itpro.nikkeibp.co.jp 前提 OS X Yosemite Version 10.10.5 homebrew 今回入れたもの FUSE for OS X 2.8.2 fuse-ext2 0.0.7 e2fspros 1.42.13 archivemount 0.8.3 …

ライブラリをコンパイルしてLLVM-IRを出力する方法

皆さんご存知、LLVM-IRはコンパイラ基盤であるLLVMの中間生成物であり、emscriptenやPROCESS WARPはLLVM-IRを読み込んで動かすことができるプラットフォームです。 現代のプログラミングでは既存ライブラリを利用することにより開発期間の短縮や品質向上を図…

デザインに凝り過ぎた名刺は名刺スキャナ通らなかった

Evernoteでは名刺をスキャンする機能(名刺を写真で取ると取り込む)があります。 チョットデザインに凝ったものは失敗することが多いのでポイントをリストアップしました。 コントラストは高め。 コントラストを補正しているけど、やっぱり限界がある リバー…

PIAXで作る P2Pネットワーク

CMU #33で「PIAXで作るP2Pネットワーク」という題目で発表してきました。 cmu.connpass.com PIAXで作る P2Pネットワーク from 祐司 伊藤 www.slideshare.net メモ やっぱJavaScriptで使えればな〜という雰囲気があった。

PROCESS WARPが総務省異能vationプログラムの最終選考を通過しました。

ご助力、応援いただいている方々に御礼を申し上げるとともに、自分が何をするのか、したいのか、どうするかを見つめなおす機会でもあるなと思いました。 www.inno.go.jp

第48回 情報科学若手の会に行ってきました。

情報科学若手の会に参加してきました。雰囲気、内容ともに、とても充実した会でした。 情報科学若手の会 第48回情報科学若手の会まとめ #wakate2015 - Togetterまとめ 情報処理学会プログラミング・シンポジウムに関連する会だそうです。 学生、社会人が半々…

PROCESS WARPが総務省異能vationプログラムの一次選考を通過しました。

二次選考まであるので、手放しに喜べるわけではないですが、それでも嬉しいです。協力いただいている方々に感謝です。 異能(Inno)vation | 一次選考通過者 研究テーマwww.inno.go.jp

新しい分散実行の仕組み PROCESS WARPについて

CMU #31で「新しい分散実行の仕組み PROCESS WARPについて」という題目で発表してきました。 第31回Creators MeetUp (2015/08/15 15:00〜)cmu.connpass.com 新しい分散実行の仕組み PROCESS WARPについて from 祐司 伊藤 www.slideshare.net emscriptenにつ…

64bit長以上の計算はRubyにお任せ

プログラムのバグ修正をするときに64bit長(約2千京)の整数の計算を確認する必要がありました。 しかし、手持ちの電卓やオンラインの電卓で64bit長ギリギリの計算ができないんですね。エラーも吐かずに答えが間違っているものもちらほらありました。 どうしよ…

JTF2015で見た分散、並列処理

2015/7/26に産業技術大学院大学で開催されたJuly Tech Festaを見てきました。メインストリームとして、仮想化(Docker, CloudStack)や自動構築(Ansible)が多かったのです。興味分野の並列実行環境(Hadoop, Spark)に関連しそうなセッションを中心に回り、思っ…

通信の最適化対策

一部の方々の間で話題になっている通信の最適化について、原理と対策について説明します。 今回の説明では、説明責任や法律は置いておいて、技術的な問題だけにフォーカスします。 「通信の最適化」の話題の発端 とあるゲームのパッチ配布がSoftbank環境で失…

マルチスレッド時のメモリのシンクロ保証イロイロ

PROCESS WARPでは、今マルチスレッドプログラムの分散処理機能を作っています。同機能の実現には複数デバイスでメモリを同調、シンクロさせる必要があります。PROCESS WARPはMap Reduceや関数型言語でない普通のプログラムを実行するVMを作ろうとしているた…

梅酒の経過報告1

前回の続きです。あんずが手に入ったので早いですがウイスキーを抜いて、あんずと氷砂糖を入れました。 伊藤式ウイスキー梅酒の作り方 - ~llamerada/memo/llamerad-jp.hatenablog.com もう少し梅をお酒につけておきたいと思った場合、ウイスキーを抜かずにあ…

pthreadとスレッド終了時の動作について

PROCESS WARPでマルチスレッド対応、分散処理対応を行うためにpthreadの動作、特に終了処理について調査しました。 manを読みながら明記されていない部分をMacOSX環境でサンプルを作って確認しました。 exitで終了した場合、子スレッドも終了される。 atexit…

C/C++のAPIの規格

標準Cライブラリ、POSIXなどの単語は知っているものの、厳密な規格は分かっていなかったので調べました。 標準Cライブラリ Cの規格はISO/IEC 9899で定義されているそうです。APIについても同時に定義されているようです。 俗称 ISO JIS C89? C90 ISO/IEC 989…

C/C++コンパイラでの標準ヘッダファイルのパスの指定方法方

PROCESS WARP用のプログラムコンパイル環境を作るにあたり/usr/includeのなどの大元のヘッダファイルの場所の変更方法を調べました。 clang -I <某>と指定すると既存の/usr/include(など)に追加してヘッダの場所を指定することができることは知っていました…

emscriptenでC/C++プログラムをwebブラウザから使うまでの難所攻略

CMU#29で「emscriptenでC/C++プログラムをwebブラウザから使うまでの難所攻略」というタイトルで発表してきました。発表資料の作成など、振り返りにもなりました。 emscriptenでC/C++プログラムをwebブラウザから使うまでの難所攻略 from 祐司 伊藤 www.slid…

伊藤式ウイスキー梅酒の作り方

小さい頃から祖母が梅ジュースを作るのを普通に見ており、社会人になってから自分は梅酒をつけるようになりました。毎年改良を加えながら作っており、ウイスキー梅酒はとくに好評なので作り方を載せておきます。是非ご家庭で梅酒をつけてみましょう! 前提 …

久しぶりのFreeBSD設定

PROCESS WARPの動作検証のため、大学の研究室時代以来、ご無沙汰だったFreeBSD@VirtualBoxをインストールしました。大学時代はPortsでの管理にシックハックしながら勉強していましたが、久しぶりに触ったらpkgという、RedHatのyumやUbuntuのaptのようなパッ…

C/C++のプリプロセッサを使ってHTMLやJavaScriptのデバッグ用コードを操作する。

HTMLやJavaScriptにデバッグやテストのためだけのコードを書いておき、リリース時は消しておきたいといというシチュエーションがあると思います。 gulpなどを使うのかなと思って、調べたら意外にC/C++のプリプロセッサを使う方法が出てきました。 Cのプリプ…

Socket.IO C++ Client over HTTPS

先日投稿したSocket.IO C++ Clientが早くもTLSに対応しました。これでHTTPSを使ったセキュアな通信が可能になります。 Release 1.4.0 Release · socketio/socket.io-client-cpp · GitHub 前提 OS X Yosemite 10.10.3 Node.js 0.12.2 Socket.IO 1.3.5(サーバ…

Socket.IO C++ Clientを利用する

Socket.IOはwebブラウザ上のアプリケーション間でリアルタイム性の高い通信を実現するためのNode.jsのライブラリです。 Socket.IO C++ ClientはそのSocket.IOのサーバへネイティブアプリから接続するためのライブラリです。 コレを利用するとwebとネイティブ…

CMake導入

前提 CMake 2.8 + Ubuntu 14.04 (server amd64) CMake 3.2 + OS X Yosemite 10.10.3 経緯 PROCESS WARPのビルドは元々Makefileを手作りしていました。 Linux/MacOSXごとにライブラリのパス、デバック用かリリース用かなどををハードコードしており、Makefile…

LLVM-IRの作り方

PROCESS WARPではLLVM-IRを読み込んでプログラムを実行しています。 この記事では、LLVM-IRを作成する環境(MacOSX/Linux)と実際にLLVM-IRを生成する簡単な手順を説明します。 内容 clang/llvmをインストールする(MacOSX + homebrew) clang/llvmをインストー…

socket.ioでUin8Arrayを転送するときの注意事項

前提 socket.io 1.3.5 socket.io(1.3.5)でUint8Arrayを転送しようとしたところ、既存ArrayBufferの一部を参照するviewとして利用している場合、うまく転送できませんでした。sliceを使って転送したい部分だけを抜き出すとうまくいきました。

MessagePack on socket.ioでのバイナリ転送案

前提 socket.io 1.3.5 socket.ioのroomかnamespaceか悩んだ末、問題はバイナリの転送だけなので、MessagePackなどを使えば良いのではないかと考えました。プロトコルも素直になるので。 MessagePack:JavaScript向けのライブラリではいずれもバイナリを文字…

socket.ioでサーバからクライアントへバイナリデータを送る際の送信元

前提 socket.io 1.3.5 socket.ioのroomにはsocket.io自体にクライアントがどのroomに対してメッセージを送ったか判別する手段がない。つまり、1ユーザが同時に複数のroomに所属する場合、どのroomにメッセージを送るかは送信メッセージ上で組み込む必要があ…

socket.ioのon('connect')とon('connection')の2通りの書き方があった

前提 socket.io 1.3.5 socket.ioの接続イベントはon('connection', <接続時に呼ばれる関数>)とマニュアルに書いているけど、プログラム中ではon('connect', <接続時に呼ばれる関数>)と実装されている。バグかドキュメントのミスじゃないかと調べたら、なんと…

JavaScriptのlocation.hostが返す値にはポート番号が含まれる場合がある

前提 JavaScript @ Opera 28 socket.io 1.3.5 ブラウザのJavaScript、location.hostはlocalhost:8080のようにポート番号が付記される。ただしポート番号が80の場合はlocalhostだけとなる。サンプルを実行してlocalhostだからといって、ポート番号を結合する…