タグ

ブックマーク / qiita.com (211)

  • mrubyのJITにおけるメソッド再定義の対処方法 - Qiita

    Rubyはメソッドの再定義が出来るのですが、これがJITコンパイラを作るときに問題になります。メソッドそのものを再定義しなければならないのはもちろん、各所に散らばっているそのメソッドを呼び出している元も書き換えなければならないからです。さもなければ、再定義されているかを毎回チェックする必要があり、大幅に速度が落ちます。 mrubyのJITではコードの自己書き換えを駆使することで速度を落とさず再定義に対処しています。ただし、メモリ効率が悪いので、頻繁な書き換えには向きません。 mrubyのJITではこんな感じで生成コードを管理しています。この場合は、メソッドfooの場合です。 entry tableってのがあって、RITE VMの命令毎に対応する機械語コードのアドレスが入っています。Tracing JITなのでプログラムが全て機械語になっている保証はないですので、これを見て対応する機械語命令

    mrubyのJITにおけるメソッド再定義の対処方法 - Qiita
    YaSuYuKi
    YaSuYuKi 2015/12/21
    この辺のソースコードを読んだがほとんど理解できなかった……
  • iOSでRubyが書けるPictRuby - 平成を求める - Qiita

    PictRuby 0.2 がリリースされました。 タスクの自動化 アプリケーションの実行 Webへのアクセス 計算 イメージフィルタの作成 テキストを返すとテキストが表示されるようになりました。Browser.get(url)やBrowser.json(url)でインターネットから情報を取得することも可能です。全然Pictじゃ無くなってきましたが。 例えば以下のプログラムを入力するといつでも平成を求めることができます。 # # ja/平成 # # ## 概要 # 今が平成何年か表示します。 def convert t = Time.now h = t.year - 1989 + 1 "平成#{h}年#{t.month}月#{t.day}日" end

    iOSでRubyが書けるPictRuby - 平成を求める - Qiita
  • mrubyデバッガ(mrdb)にnextコマンドを追加してみた - Qiita

    mrdbにnextコマンドを追加してみました。 概要 mrdbとは mrubyのVM上で動作するデバッガです。mruby-1.1.0にてmrbgemsに追加されました。 nextコマンドとは デバッガ上でプログラムを実行する際、ソースコードの1行分を実行するコマンドです。nextコマンドという名前はC/C++のデバッガであるgdbを参考としています。 例えば以下のプログラムをデバッグするとします。

    mrubyデバッガ(mrdb)にnextコマンドを追加してみた - Qiita
  • Windows用インストーラのセキュリティ問題 - Qiita

    はじめに 概要 記事は、Windows用のソフトウェアのインストーラに潜むセキュリティ問題につき注意喚起するものです。 影響範囲 対象 OS: Windows Vista以降 ※検証はWindows 10 で行っております ※サーバ系のWindows OSも同様と推測しますが、対象範囲は把握しておりません ソフトウェア: 多数あると推測しています ※どの程度のソフトが該当するか詳らかには把握しておりません ※あくまで、個々のインストーラ作成者の設計上の問題であって、インストーラ作成ツールやフレームワークそのものの問題ではないという認識です 影響およびタイミング 当該ソフトや関連ソフト ( ブラウザ、プラグイン等 ) の脆弱性、バグ、あるいはユーザの誤動作による影響 ( ファイル、レジストリ改ざん等 ) が、システム部分にも拡大するおそれがあります ※新たに脆弱性ができる訳ではないため、影

    Windows用インストーラのセキュリティ問題 - Qiita
  • mrb_state 解説(必ずしも徹底ではない) - Qiita

    mrubyを改造したり、mrubyを何かアプリケーションとかに組み込むときに必ず必要になる物に、mrb_state型の構造体へのポインタ(多くの場合はmrbという名前で参照されている)があります。これは、mrubyで使う大域変数や状態を1つの構造体にまとめた物です。 mrubyのインタプリタを使うときにはmrb_state型の構造体のインスタンスを用意してそれをインタプリタに渡します。複数のインタプリタが欲しいときには複数のインスタンスを用意します。 こうすることで、構造体のインスタンスを複数用意することで複数のmrubyインタプリターをプログラムコードは共有して使えます。これは、並列性は息を吸うのと同じくらい普通で、メモリの一滴は血の一滴くらいメモリが貴重な1組み込み界隈ではとっても嬉しい仕様なわけです。 mrb_stateはmrubyの大域変数や状態が全て入っているので、mrb_sta

    mrb_state 解説(必ずしも徹底ではない) - Qiita
    YaSuYuKi
    YaSuYuKi 2015/12/14
    使うメモリの下限を下げる=使える環境が広がる、だからなぁ。ユニット全体で10円切るなんて普通の世界だし
  • Safari 9.0 の JS で「同じ関数を繰り返し実行しただけで返り値が変わる」という強烈なバグが発見されてる - Qiita

    Webkit の Bugzilla で強烈なバグが報告されていると、同僚に教えて頂いた。 あまり話題になっていないものの、単純ゆえに強烈なバグだと思ったので Qiita にも公開しておく。 https://bugs.webkit.org/show_bug.cgi?id=151354 にそのバグ報告が上がっている。 最初に Google+ でやりとり があった模様。 URL のクエリ文字列から値を取り出す関数が正常に動作していないことから発覚したようだ。 その後は、簡単なテストケースに落とし込まれ jsfiddle というサイトにテストケースが公開されている。 Safari でこのページを開くと、実際に JavaScript を実行して確認できるようになっている。 続報 (2015.12.14) この記事を上げてすぐに Bugzilla の方で進展があった。 Yusuke SUZUKI さん

    Safari 9.0 の JS で「同じ関数を繰り返し実行しただけで返り値が変わる」という強烈なバグが発見されてる - Qiita
    YaSuYuKi
    YaSuYuKi 2015/12/14
    昨日、JITが行う最適化の流れを人力で再現するデモを見てきたばかりなのだが、その過程で間違うと確かにこういうバグを起こしそうな気がする
  • プログラマ向けニュースキュレーションサービスを作ってみた話 - Qiita

    Deleted articles cannot be recovered. Draft of this article would be also deleted. Are you sure you want to delete this article? はじめに 2015年度新卒でドワンゴに入社しました@ytanakaといいます。普段はAndroidアプリ開発を主に担当していますが、大学院時代は増井俊之先生のもとでユーザインタフェースと情報推薦システムの研究をしていました。 ドワンゴに入社後、それまでの研究を活かしプログラマ向けのニュースキュレーションサービスMenthas(メンタス)を個人開発しました。今回はせっかくの機会なので、開発の経緯と概要そして仕組みについて述べたいと思います。 追記: 続編を書きました こちらの記事は以前のバージョンの内容になります。現行のMenthasの仕

    プログラマ向けニュースキュレーションサービスを作ってみた話 - Qiita
    YaSuYuKi
    YaSuYuKi 2015/12/10
    このアルゴリズムだと、ブックマークが伸びづらいが質が高い(技術的に高度すぎるなど)ものを取りこぼしやすそうだな
  • Emacsに mrubyを組み込んでみた - Qiita

    [1 2 "fizz" 4 "buzz" "fizz" 7 8 "fizz" "buzz" 11 "fizz" 13 14 "fizzbuzz" 16 17 "fizz" 19 "buzz"] (let ((mrb (mruby-init))) (mruby-send mrb -10 'abs)) ;; => 10 (let ((mrb (mruby-init))) (mruby-send mrb "hello WORLD" 'swapcase)) ;; => "HELLO world" (let ((mrb (mruby-init))) (mruby-send mrb [1 [2 3] [4 [5 6]]] 'flatten)) ;; => [1 2 3 4 5 6] 仕組み Emacs 25で実装予定の Dynamic module機能を使って実現しています(なので実際のところ, 組み

    Emacsに mrubyを組み込んでみた - Qiita
  • RubyでBoolClassではなくTrueClass/FalseClassな理由を理解する - Qiita

    @mattn_jp BoolClassを入れるとkind_of?でチェックしたくなってduck typingを阻害するから。 — Yukihiro Matsumoto (@yukihiro_matz) 2015, 12月 4 30回くらい読みなおしたけど何のことを言っているのか分からなかったので、周りのRubyistに質問して理解を深めたメモ。 まずDuck Typingというのは、Wikipediaによると ダック・タイピング(duck typing)とは、Smalltalk、PythonRubyなどのいくつかの動的型付けオブジェクト指向プログラミング言語に特徴的な型付けの作法のことである。それらの言語ではオブジェクト(変数の値)に何ができるかはオブジェクトそのものが決定する。つまり、オブジェクトがあるインタフェースのすべてのメソッドを持っているならば、たとえそのクラスがそのインタフェ

    RubyでBoolClassではなくTrueClass/FalseClassな理由を理解する - Qiita
    YaSuYuKi
    YaSuYuKi 2015/12/07
    コメント欄が圧倒的に本番だ
  • BigQueryで150万円溶かした人の顔 - Qiita

    ※ かなり前の記事ですが、未だに引用されるので一応追記しておきます。タイトルと画像がキャッチーなのはちょっと反省していますが、これを見てBigQuery使うのを躊躇している人は多分あまり内容を読んでいないので気にする必要はないです。自分は当時の会社でも今の会社でも個人でも普通にBigQuery使っていて解析用データなどはBigQueryに入れる設計をよくしています。また、アドベントカレンダーだったのでネタっぽく書きましたが事前に想定できる金額です。 ※ 代役:プロ生ちゃん(暮井 慧) 巷のBigQueryの噂と言えば「とにかく安い」「数億行フルスキャンしても早い」などなど。とりわけ料金に関しては保存しておくだけであれば無視できるほど安く、SQLに不慣れなプロデューサーがクエリを実行しても月数ドルで済むなど、賞賛すべき事例は枚挙に暇がありません。 しかし、使い方によってはかなり大きな金額を使

    BigQueryで150万円溶かした人の顔 - Qiita
    YaSuYuKi
    YaSuYuKi 2015/12/07
  • Swift on Linux: Getting Started ASAP - Qiita

    キター! Swift is Open Source - Swift Blog - Apple Developer 理念的にはオープンソースであることが最重要ですが、実地ではApple製品以外の環境も正式サポートされたことが大きいでしょう。これでやっと真の意味での汎用言語となったわけです。 というわけで、早速使ってみましょう。 下準備 Ubuntu 14.04 LTS or Ubuntu 15.10 (64bit) もちろんVMでも構いません。メモリー2GB、仮想ディスク16GBもあれば余裕です。ソースから debugugging symbol までサポートしたフルビルドをしたい場合は、打って変わってメモリー16GBでも足りず、さらに16GBほどswapを足してやっと事なきを得ましたが、バイナリーをダウンロードして使うのであれば最低限で事足ります。 clangのアップデート(14.04 LT

    Swift on Linux: Getting Started ASAP - Qiita
  • 今一番JSで熱いゲームエンジン、RPGツクールMVのランタイムコードを読んでみた - Qiita

    一昔前にCanvasが実用段階になった頃、JSのゲームエンジンが大量に出てきたことがありました。それらは大抵DOM/CanvasのFallbackを持っていたのですが、今現在の状況は、実際には非効率なメモリ消費やモバイルのブラウザのフラグメント化で実用に足るものがなかった、という辛い現状があります。 そんな中pixi.jsという描画ライブラリが台頭してきました。このエンジンは webglとcanvasの fallbackを持ち、(いくらかのバグはありつつも)DOMを切ったことで現実的なパフォーマンスの課題をクリアできるのでは?という期待感が高まっています。 Pixi.js - 2D webGL renderer with canvas fallback http://www.pixijs.com/ そして 2015年、RPGツクールMVが発表され、ブラウザ吐き出し対応がアナウンスされました

    今一番JSで熱いゲームエンジン、RPGツクールMVのランタイムコードを読んでみた - Qiita
  • フロントエンド開発における革命とビルドプロセスについて - Qiita

    こんにちは、freeeフロントエンドエンジニアをしている @joe_re です。 freee Engineers Advent Calendar 2015の4日目を書きます。 僕からはfreeeで現在進行中の革命について、フロントエンドのビルドプロセスを中心に書こうと思います。 革命 ってなんのこと? というのはフロントエンドヤンキーこと @ymrl が 2日目で書いたので詳しくはそちらをご参照頂ければ幸いです。 背景 弊社ではRuby on Railsを主軸にしてWebサービスを作っています。 Railsは素晴らしいフレームワークですが、めまぐるしく変化する昨今のフロントエンドについては、このままRailsの用意しているRailに乗ったままでは時代に取り残されてしまう危機感があります。 僕たちは時代に取り残されている場合じゃない。 最先端でかつ適切な技術を用いて未来を切り開いていかなく

    フロントエンド開発における革命とビルドプロセスについて - Qiita
  • [mruby] RedmineのユーザでBasic認証 - Qiita

    必要なmrbgem ngx_mrubybuild_config.rbに以下を追加してビルドします。 mysql-develやらmariadb-develやらが必要です。 conf.gem :github => 'mattn/mruby-mysql' # コメントアウトを外す conf.gem :github => 'mattn/mruby-base64' # WWW-Authenticateヘッダのデコード用 conf.gem :github => 'pbosetti/mruby-merb' # database.ymlのテンプレート解釈用 conf.gem :github => 'AndrewBelt/mruby-yaml' # database.ymlのパース用 REDMINE_HOME = ENV['REDMINE_HOME'] || '/var/lib/redmine' RAIL

    [mruby] RedmineのユーザでBasic認証 - Qiita
  • PSPでmrubyを動かしてみた話 - Qiita

    どうも、昔PSPを触ってた人です。 サークルでmrubyを触る機会があって、PSPでも動くかなーと思って試したら普通に動いたので、やり方のメモと言う形で書きたいと思います。 PSPの環境構築の話はここではしないので、各自ググるなりしてください。 mrubyの準備 まずはGithubからmrubyを落としてきます。 落としてきたら、build_config.rbにPSP用のmrubyライブラリを作るための設定を書いてあげます。 下のコードをbuild_config.rbに追記してください。 MRuby::Build.new("psp") do |conf| # load specific toolchain settings # Gets set by the VS command prompts. toolchain :gcc enable_debug # Use mrbgems # co

    PSPでmrubyを動かしてみた話 - Qiita
  • mrubyのカレンダー | Advent Calendar 2015 - Qiita

    URLYou can post either your article on Qiita or your blog post. About reserved postingIf you register a secret article by the day before the same day, it will be automatically published around 7:00 on the same day. About posting periodOnly articles submitted after November 1 of the year can be registered. (Secret articles can be registered anytime articles are posted.)

    mrubyのカレンダー | Advent Calendar 2015 - Qiita
  • mruby の Fiber の backtrace にFiber.resume の呼び出し元のバックトレースが含まれるようにする mrbgems - Qiita

    mruby の例外の backtrace は Fiber.resume より呼び出し元に近い関数は含まれない。 この動作は CRuby も同じではあるが 時々不便に感じていたので Fiber.resume の呼び出し元のバックトレースが含まれるようにする mrbgems を作ってみた。 sample.rb begin fb = Fiber.new do Fiber.yield raise "ttt" end fb.resume fb.resume rescue => e puts "e.backtrace" puts "#{e.backtrace.map{|v| " " + v}.join("\n")}" end

    mruby の Fiber の backtrace にFiber.resume の呼び出し元のバックトレースが含まれるようにする mrbgems - Qiita
  • mruby の String から C 言語の文字列を取り出す正しい方法 - Qiita

    Register as a new user and use Qiita more conveniently You get articles that match your needsYou can efficiently read back useful informationYou can use dark themeWhat you can do with signing up

    mruby の String から C 言語の文字列を取り出す正しい方法 - Qiita
  • ISUCON5本戦にてスコアトップの18万点でfailしました - Qiita

    チーム.datとして、インフラ担当の@kannyと実装およびファシリテーション担当の@TakatoshiMaedaの若手連合で参加しました。 負けた内容が内容なので悔しくて悔しくて悔しいです。優勝スコアが15万だったので当に悔しいです。 スコアはダントツ一位やったんや…スコアは… #isucon pic.twitter.com/3dKxOYA7vq — 松 勇気 (@y_matsuwitter) October 31, 2015 当日やったことを淡々と書いてみます。 今回の戦については特段変わったことをしていないつもりですし、各チームがやっていて.datがやっていない施策も結構あった気がしています。 ISUCON5戦課題について 時代はMicroserviceということで、雑に作られた複数のMicroserviceと連携するダッシュボードを最適化するという課題でした。 およそ下記の

    ISUCON5本戦にてスコアトップの18万点でfailしました - Qiita
    YaSuYuKi
    YaSuYuKi 2015/11/02
  • mruby on EV3RT + tecsでEV3wayを動かすまでの記録 - Qiita

    西脇.rb & 神戸.rbのRubyプログラミングキャンプ2015でmruby on EV3RT + tecsを使ってEV3を動かしてみたので、やったことや詰まったことを記録しておきます。 はじめに (mruby on EV3RT + tecs とは?) レゴ®マインドストーム EV3をmrubyのコードで動作させるためのプラットフォームです。 2015年10月10日現在、1.0.2がリリースされています。 今回は、ETロボコンでも使うEV3wayを動作させてみました。 ダウンロードとインストール ダウンロードからインストールまでです。 今回は最新の mruby-on-ev3rt+tecs_package-alpha1.0.2.tar.gz を使います。 なお、公式のドキュメントがWindows(Cygwin)向けのため、それに沿って行います。Linux版は後述します。 mruby on

    mruby on EV3RT + tecsでEV3wayを動かすまでの記録 - Qiita