Deleted articles cannot be recovered. Draft of this article would be also deleted. Are you sure you want to delete this article?
2015.06.03 スキル 社会人になったばかりの若いエンジニアの中には、一度この道に足を踏み入れたからには、自らの技術一本で身を立てていけたらという、強い思いを胸に秘めている人も少なくないのではないか。 そう考えて今回、Rubyの父として知られるまつもとゆきひろ氏に、あえて「これからの時代に技術だけで生き残るには?」という偏ったテーマで取材を依頼した。返ってきたメールの冒頭にあったのが、次の一文である。 「技術だけで生きるというのは幻想である」 まずはその真意を聞くところから、取材は始まった。 まつもとゆきひろさん(@yukihiro_matz) 1965年生まれ。筑波大学第三学群情報学類卒業。プログラミング言語Rubyの生みの親。株式会社ネットワーク応用通信研究所フェロー、一般財団法人Rubyアソシエーション理事長、Speeeをはじめとした複数社の技術顧問、Herokuチーフアーキテ
最近「Mixin は避けられれば避けたほうがよいのではないか」と思い始めている。扱いに困るダメ実装の Mixin を簡単に作れすぎてしまうからだ。 Wikipedia の定義によると、 mixin とはオブジェクト指向プログラミング言語において、サブクラスによって継承されることにより機能を提供し、単体で動作することを意図しないクラスである。 とのことなので、そもそも Mixin される側の実装と結びつきが強くなるのは仕方ないのだろう。しかし、まれにだが破れ紙の片割れのような実装を持つ Mixin ができてしまうことがある。 一枚の紙を適当に手で破って二枚にする。断面はギザギザだが、破った二枚の紙の断面はぴったり一致する。もともと繋がっていたものを切り離したのだから当然だ。だが破れ紙の断面にぴったり合うような別の紙を用意するのは簡単ではない。別の紙を合わせる必要があるのならば、紙を破るときに
0x1234567890abcdef とてな感じのバイナリデータがあったとします。*1 これを適正に振り分ける場合、どうしてますか? これまでの私だと、文字列のまんま val_a = "1234567890abcdef"[10].chr とやるなり、unpackで配列化して val_a = "ab".unpack("CC")[0].chr とやるなりしてました。 ただ、これだと32bitの時の扱いが面倒ですよね。 その上、可変長の場合は専用のロジックを組む必要がある。 しかも途中でセンサの仕様が変わって入り組んだメソッドチェインを解す過程で発狂しそうになったりした事も……。 そんな貴方や私の悩みを解決してくれるのが、今回紹介するGem「BinData」です。 導入 $ gem install bindata 使い方 require 'bindata' class Sample < BinD
Posted by usa on 27 Oct 2014 We changed the default setting of ext/openssl in Ruby 2.1.4, Ruby 2.0.0-p594 and Ruby 1.9.3-p550. With this change, insecure SSL/TLS options are now disabled by default. However, by this change, there is a possibility of some problems in the SSL connection. Details OpenSSL still implements protocols and ciphers that are considered insecure today by historical circumsta
最近の RSpec は、それまで obj.stub(hoge: value) と書けたものが、 allow(obj).to receive(:hoge).and_return value と書かないといけなくなったりとか、正気の沙汰とは思えないような変更をしたりするので、何年かぶりに Test::Unit を使ってみようとリハビリ中です。 RSpec は、テストケースを入れ子にできたり、テストケースや example がクラスやメソッドではなく、文字列で自由に書くことができたりしたのが良かったのですが、最近の Test::Unit ではそれもできるようになっています。 [ruby-list:48926] [ANN] test-unit 2.5.2 このリリースはとみたさんに使ってもらえるように改良したリリー スです。新しく追加した--locationはRSpecの--line_number
はじめての参加だったのですがとても楽しかったです。 いいたいことを全部書くと長くなるので思いついたことから書いていこうと思います。 多分抜けがいっぱいあります。 すたーと1日目 ささださんの話でRubyの現状と次の課題がすごくよく分かった シンボルはGC対象にならないの知らなかった(そして2.2からGC対象になる) なぜGVL(Giant VM Lock)があると並列処理が遅くなるのかがなんとなく分かった 専用ハードウェアやGoによるRubyVMの実装などでチャレンジしている人がいる Rubyにパターンマッチングが欲しい という人が結構いた 動いているrubyプログラムのどの行がいちばんメモリを消費しているのか知りたい ko1/allocation_tracer が便利 コミットログを書くときに重視していることは? なんで直したかは書いて欲しい コンパイラ分からなくてもコントリビュート出来
JITコンパイルの生成元を、ASTからYARVインストラクションへ変更した話です。 JITコンパイルを行う元となる情報として、プログラムをパースした結果の構文木(AST)と、それをさらにコード化したYARVインストラクションがあります。今まではASTに基づいてCFGを生成していました。 ASTを使うことには、以下の利点があります。 安定している。文法が変わらない限り、ASTが変わることはあまりありません。YARVインストラクションは最適化の対象なので、いつ変更されるかわかりません。 生成されるCFGを最適化しやすい。YARVインストラクションはMRIの実行エンジンで効率的に実行できるように設計されており、JITコンパイラにとって最適とは限りません。ASTを直接変換した方が効率的なCFGを生成しやすいといえます。 疎結合。ASTは文法の表現であるという意味でYARVインストラクションより抽象
このブログは、RubyにJITコンパイラを実装する個人的なプロジェクトの情報を発信するブログです。ちなみにまだコードは1行も書いていません。 プロジェクトの目標は次の通りです。 本家より高速に動作するRubyエンジンを実装する。 本家との100%互換性を維持する。 具体的には、MRIにJITコンパイラを追加します。現在のMRIで使われているいわゆるyarv実行エンジンと共存し、アプリケーションのホットスポットだけJITコンパイルするイメージです。JITコンパイラ以外の部分はMRIにそのまま乗っかることで、外部ライブラリを含めた互換性を維持します。本家と互換性がないと、いくら速くても限定的な用途にしか使われないのはpypyをみれば明らかで、互換性維持は至上命題です。 以前、個人的にスクラッチからRuby実装を書いたことがあり、JITコンパイラも実装していましたが、MRIよりも遅い性能しか出ま
Concurrency and parallelism are hard. With the traditional threading model, a developer has to constantly ensure threads are not in conflict, which is a very difficult task. The team behind Go implemented fantastic concurrency primitives within the language that make reasoning about concurrent code far easier. Fortunately, all that goodness is no longer locked up inside Go; there’s now a library f
『るびま』は、Ruby に関する技術記事はもちろんのこと、Rubyist へのインタビューやエッセイ、その他をお届けするウェブ雑誌です。 Rubyist Magazine について 『Rubyist Magazine』、略して『るびま』は、Rubyist の Rubyist による、Rubyist とそうでない人のためのウェブ雑誌です。 最新号 Rubyist Magazine 0064 号 バックナンバー Rubyist Magazine 0064 号 Rubyist Magazine 0063 号 Rubyist Magazine 0062 号 Kaigi on Rails 特集号 RubyKaigi Takeout 2020 特集号 Rubyist Magazine 0061 号 Rubyist Magazine 0060 号 RubyKaigi 2019 直前特集号 Rubyist
photo credit: Kmark via photopin cc Ruby を初めて 2日目。 Railsチュートリアル第4章で Ruby の基本的な使い方を学んだ。 Ruby を使って驚いたことがいくつかあったのでまとめておく。 (プログラミング経験はそれなりにある。C# や JavaScript, PHP など) Rubyist の方は、初めて Ruby に触れたときのことを思い出すきっかけに。 非Rubyist の方は、Ruby に興味を持ってもらえるきっかけになれば。 なお、いくつかのコードは Railsチュートリアルから抜粋している。 end はあるけど begin しない 多くの言語では関数やブロックを中括弧で括る。 Pascal 系言語では begin 〜 end で括る。 Ruby では begin なしで急に end が出てくる。 if string.empty?
2008/01/10 サン・マイクロシステムズは1月10日、東京大学と産学連携モデルの確立を目指した共同研究に着手したと発表した。両者間の共同研究に関する協定書は2005年6月に東京大学と米サン・マイクロシステムズの間で取り交わされていたもので、今回初めて2つの研究テーマを決定した形だ。 テーマは「RubyとJRubyでのマルチVirtual Machine(MVM)環境の実現」と「Fortress上でのスケルトン並列プログラミング手法に基づいたライブラリ開発」の2つ。 Ruby/JRubyのMVM研究は、東京大学 大学院情報理工学系研究科 竹内郁雄教授のグループと、米サンのティム・ブレイ氏(Director of Web Technologies)、およびJRubyのメンバーとの間で進める。MVM環境の実現によりRubyプログラムがさらに効率的に実行できることが期待できるという。この成果
##リアルタイムweb? リアルタイムにwebの情報をサーバからのpush通知で更新する。 有名どころでいうとFB、Chatwork、Twitterとか。 技術的には方法が大きく3つある。 ####・ポーリング(Polling) 一定の時間に一度、Ajaxでサーバに接続させ 新しい情報がないかどうか調べる。擬似的なプッシュ型。 ####・コメット(Comet) クライアントから送られてきたレスポンスをすぐに返さずに処理中の形を取ってコネクションを張ったままにする。 新着の情報があったタイミングでレスポンスを返す。 ####・Websocket HTML5より作られた新しい通信規格。独自のプロトコルを持つ。 先程の2通りのデメリットを補いより効率よく双方向通信が可能。 今回は技術的な流れも含め、Websocketを用いる。 ##railsでどうやって構築する? railsを用いる事をmust
Updated with Jörg's Sept 2011 comment You seem to be confusing two very different things here: the Ruby Programming Language and the specific threading model of one specific implementation of the Ruby Programming Language. There are currently around 11 different implementations of the Ruby Programming Language, with very different and unique threading models. (Unfortunately, only two of those 11 i
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く