真夏の技術部&BPR室 TechMTG #3(ペパボ社内勉強会)
更新サマリー 2017/11/28 print問題について加筆した。/独自マクロを除去。標準のものへ変更した。その他細かい文を修正した。 2018/7/19 幾つか正しくない表記を変更した。 はじめに Rubyがブラウザで動作する 先日、主要ブラウザでWebAssemblyを利用できる環境が整ったと話題になりました。 (参考リンク) WebAssembly対応、主要ブラウザChrome/Firefox/Edge/Safariで整う。 このことから、今後はWebアプリ(特にフロントエンド)でJavaScript系列以外の言語が選択肢にはいるようになります。(検索すると、Rustがよく引き合いに出されています。) 本コンテンツはmrubyインタプリタをWebAssemblyに変換し、ブラウザ上でRubyコード"p 'hello world! ...'を動作させるところまでを目標とします。なお、
人間とウェブの未来(旧) 「ウェブの歴史は人類の歴史の繰り返し」という観点から色々勉強しています。2014年までの人間とウェブの未来の旧ブログです。 本エントリはmruby advent calendar 2013 18日目の記事になります。 17日目はtsahara@githubさんによる「mruby で C 言語の構造体をラップしたオブジェクトを作る正しい方法」という素晴らしい記事でした。今回の話題はこの話にも少し絡むので、まるで内容を見透かされていた気分です。 はじめに ところで、僕がadvent calendarにmrubyネタを書くなら何が良いかなぁと考えていたのですが、おそらくmrubyに関する細かいネタは多くの人が書くだろうと思い、自分らしいネタを書こうと思っていました。そこでふと、mrubyが公開後、自分は大量にmrbgemとよばれるmrubyの拡張モジュールを書いてきた事
mruby v1.3 がリリースされましたね。 趣味mrubyウォッチャーとしてv1.2からv1.3で何が変わったのかを、個人的にまとめてみたいと思います。 注目すべきは、やはりmatzのcommit数。 もちろんmerge commitも含みますが、約半数のcommitがmatzのcommitになっています。 なぜmatzがここまでmrubyに力を入れるのか聞いてみたいところですね。 それではmruby v1.2 からv1.3への変更で何が変わったのか、ザックリ見ていこうと思います。 リリースノート http://mruby.org/releases/2017/07/04/mruby-1.3.0-released.html 1年以上あった割には、表向きにはそこまで変化はない感じ? わりと最新のCRubyの文法やメソッドも入っていたりしますね。 Contributions https://
4. Copyright © DeNA Co.,Ltd. All Rights Reserved. H2Oとは ! https://h2o.examp1e.net/ ! Google翻訳いわく ! おおむねこの通りです(⾚字部分を除いて) ! みんな⼤好き某kazuho sanが開発 ! 現在の最新verはv2.2.0-beta1 4 H2Oは、古い世代のWebサーバーと⽐較して、 CPU使⽤率が低いユーザーに迅速な応答を提供する、 新しい世代のHTTPサーバーです。 基盤から設計されたサーバーは、優先コンテンツ配信と サーバープッシュを含むHTTP / 2機能をフルに活⽤し、 Webサイトの訪問者に有望な経験を提供します。
mruby-redis で Redis の HMGET と HMSET を使いたかったのでパッチを送った。 Implement Redis#HMGET and Redis#HMSET by hfm · Pull Request #58 · matsumoto-r/mruby-redis mruby も Hiredis もよくわからない状態からの出発だったので、小さいパッチの割に時間がかかってしまった。Hiredis は README.md に書かれている API の説明を読み、mruby はソースコードのコメントアウトに書かれた仕様を読み漁った。 内容の正しさは十分に保証出来ないが、調べたことを備忘録として書いておく。なお、mruby はバージョン 1.2.0 のコードを読んだ。 HMGET の実装 まず、HMGET のコードは以下の通りである。HMSET も似たような実装なので、そちらは
speakerdeck.com 第5回ペパボテックカンファレンス〜インフラエンジニア大特集〜 - connpassという会社のカンファレンスで発表しました! 発表後に id:matsumoto_r から補足いただきました! ありがとうございます m( )m luaを積極的に使う場合はブロックするようなI/Oがあって、そこで性能が要求されるような状況。我々はそこがオーバーヘッドになるような使い方はあまりないし、ngx_mrubyの良さを活かせる場所(ブロックしないとluaより速かったり)が多いのでngx_mruby #pbtech— 松本亮介 (@matsumotory) 2016年5月14日 発表資料にもありましたが、クエリストリングのチェックやキャッシュファイルの有無にのみ使っているので、ブロックIOは発生しないのでオーバーヘッドは少ないです。 開発者が社内にいることで、困ったときはSl
今日は第68回Ruby関西勉強会にお誘い頂き、ミドルウェアへのmruby組込みの考え方であるMiddleware Configuration as Codeについて、事例を中心にお話しました。 rubykansai.doorkeeper.jp 会場がファーストサーバさんということで、何やら母校にいくような、地元に帰るような不思議な気持ちになり、いつもとは違う新鮮な気分で発表に取り組む事ができた気がします。 内容としては、まさにMiddleware Configuration as Codeであり、 Middleware Configuration as Codeに至る背景 Middleware Configuration as Codeの定義 Middleware Configuration as Codeの実装やメリット ngx_mrubyの簡単なチュートリアル 弊社(ペパボ)における事
H2Oにmruby拡張の提案を行いmergeされてから幾つかのPRを経て、少しずつ実用的になってきました。 github.com 今日は簡単にその使い方を紹介しようと思います。 h2o_mrubyを有効化したh2oをビルド h2o_mrubyを有効化してビルドするのは簡単で、OSのライブラリ環境(/usr/lib/以下とか)にlibmruby.a等のmrubyライブラリがある状態で、 cmake -DWITH_MRUBY=ON . make h2o するだけで、h2o_mrubyが有効化されたh2oバイナリがカレントにビルドされます。簡単ですね。 またこの記事も参考にすると良いかもしれません。 qiita.com 使えるメソッド mod_mrubyやngx_mruby程メソッドはまだ充実していませんが、少しずつ使えるものを実装しています。また、mod_mrubyやngx_mrubyとの互換
先日会社で「mysql のテーブルと、プロセス上の共有メモリを連携させたい」って話が出たとき、トリガで外部プログラムが実行できればいけるのでは?と思ったので、調べてみた。 MySQL で外部コマンドを実行するにはmysql で外部コマンドを実行するには system が使える。 mysql> system uname -a Linux cent6 2.6.32-504.16.2.el6.x86_64 #1 SMP Wed Apr 22 06:48:29 UTC 2015 x86_64 x86_64 x86_64 GNU/Linux ただ、これはターミナル上からとかでないと使えない。 調べてみると、mysql には UDF(User Defined Function) という仕組みがあって、自作関数を作成することができるらしい。これは、C や C++ で書いて共有ライブラリ(.so)を作成
github.com 会社の運用メンバーと色々議論していた中で、「カジュアルにWebサーバへのDoSみたいなアクセスが来た時に検知して制御したいよねー」という話が上がったので、http-dos-detectorというnginxでもapacheでも使えるWebサーバ拡張をmrubyで書きました。 もちろんmrubyなので、mod_mrubyとngx_mrubyを使っています。ので、Rubyコードはそのまま同じコードをどちらのミドルウェアでも使えます。mod_mrubyとngx_mrubyを使えば、ちょっとしたWebサーバの拡張は両方で同じ実装に落とし込めるので便利ですね。 使い方 例の如く、GitHubのREADME通りにインストールして下さい。Rubyのコードはmod_mrubyでもngx_mrubyでも有効なので、そのコードを読み込む設定をそれぞれ以下のように記述するだけでよいです。 a
dockerを使ってHerokuにアプリを簡単にデプロイできる感じの仕組みができた(という説明であってるのかよくわからないけど)そうなので、試してみた。 Heroku | Introducing 'heroku docker:release': Build & Deploy Heroku Apps with Docker github.com 動かしているのは、単になんか変な文字列を表示するだけのアプリ。 https://pacific-refuge-5105.herokuapp.com/ 以下に、手順を示す。 動かすまでの手順 herokuコマンドなどの準備 herokuクライアントを入れる。 $ brew install heroku ==> Downloading https://s3.amazonaws.com/assets.heroku.com/heroku-client/her
■ [mruby][ruby] 30d.jp に ngx_mruby を導入した話 (社内で共有した内容の転記です) 30d.jp に ngx_mruby を導入して、誰も手出しができないミドルウェアの置き換えとパフォーマンス向上を実現しました。 前提要件 30d.jp に保存している画像はサービスにログインしている時のみ見えるようにしたい 画像は MogileFS に保存しており、Rails を介さないでレスポンスを返したい ngx_mruby 導入前のシステム構成 ngx_mruby 導入後のシステム構成 導入後の効果 siege を用いたベンチマーク(siege -b -c 8 -r 50)でレスポンスタイムで 1割ちょっと、転送レートで 2割ちょっとの改善となりました。 Elap Time, Resp Time, Trans Rate, Throughput, Concurrent
Go言語便利だけど、文法をこねくり回して内部DSLを作るとかには向いていないので、ルビー風にDSLを読み込ませて設定と替えさせていただきます、と言うのが少し難しい。 いっそGo内部でRubyを組み込んで実行したい。mrubyならできるんじゃね? と思ってやってみたらそれっぽいのができた。 Vagrant、Packer、Consulなど、DevOps対応界隈でその名を知らない者はいない mitchellh さんの mitchellh/go-mruby · GitHub をつかう。 多分だけど、ハシモト氏も同じようなこと考えてたんじゃないだろうか。結局 hashicorp/hcl · GitHub を使われてるけれど。 完成したそれっぽいの.go package main import ( "fmt" "io/ioutil" "os" "github.com/mitchellh/go-mrub
Docker してますか! 実は実験的に Docker で Web アプリを数ヶ月運用しており、色々と試行錯誤してきたので、少しずつアウトプットしていきます。 ちなみに Ruby 製のアプリで、AWS の EC2 上で運用している、小〜中規模ぐらいのものです。 2014-06-16 16:00: 追記あり Docker イメージのビルドについて Dockerfile を普通に書いてます。 今のところ、2層構造にしていて、 ベースとなるイメージ Ruby アプリケーションサーバー (Puma) アプリケーションのソース (git clone) bundle install デプロイされるイメージ (ベースイメージを元に作る) git pull してソース更新 bundle install し直してベースにない gem を入れる asset の precompile という感じでやってます。
人間とウェブの未来(旧) 「ウェブの歴史は人類の歴史の繰り返し」という観点から色々勉強しています。2014年までの人間とウェブの未来の旧ブログです。 ApacheCon NA 2013に参加し、早めにポートランド国際空港に到着しました。時間があるので、今日(2013年3月2日)からmrubyを始める人へ簡単なチュートリアルをしようと思います。 mrubyというプロジェクト mrubyとは、組み込み機器やアプリ組み込みに最適化された軽量スクリプト言語です。記述方法は既存のRubyのように書くことができます。C言語で書かれたホストアプリにmrubyを組み込むことで、ホストアプリをRubyの記述でコントロールすることができます。例えばmod_mrubyは、RubyでApache APIをつつけるようにmrubyをApacheに組み込むためのモジュールで、ApacheモジュールをRubyで記述する
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く