Mit Press, A great option for a Book Lover Condition : Good Comes with Proper Binding
Rubyの、 Time.now は最終的には clock_gettime(3) を呼び出しているそうな。 masterの当該箇所 Time.now は Time.new を無引数で呼び出しているに過ぎない ここで、 Time#initialize の実態は time_init time_init は引数がない場合 time_init_0 を呼ぶ time_init_0 は timespec 構造体のポインタを引数に rb_timespec_now を呼ぶ rb_timespec_now で clock_gettime(3) が使えるシステムであればそれを呼ぶ。そうでない場合 gettimeofday(2) らしい… ここで、以下のような小さなCのコードを書く。 /* man になかったけどこの宣言がないと RTLD_NEXT が定義されなかった */ #define _GNU_SOURCE
はじめに この記事はByebug(バイバグ)というgemを使ったデバッグ方法を説明するチュートリアル記事です。 JavaやC#のようなコンパイル型の言語ではEclipseやVisual StudioのようなIDEを使って開発することが主流です。 なので、自然とIDEに標準装備されているデバッガを使ってステップ実行したりすることが多いと思います。 一方、RubyではRubyMineのような有料IDEもあるものの、IDEではなくテキストエディタを使って開発している人の方がまだまだ多いと思います。 そうすると、初心者の方はなんとなく「Rubyでデバッガを使ってデバッグするのは無理なのでは?」と考えてしまう人も多いかもしれません。(僕は初心者の頃そう思ってました・・・。) ですが、そんなことはありません! RubyでもIDEを使わずにターミナル上でデバッガを使ってデバッグすることは可能です。 とい
class Lifegame attr_accessor :cells def initialize(y = 0,x = 0) @cells = Array.new(y) { Array.new(x,0) } end
PythonからRubyのメソッドを呼べるようにするライブラリを作った。メソッドチェーンやイテレータなどもある程度自然に使えるので紹介する。 作った経緯 科学技術計算のジョブ管理をするRailsアプリを開発しており、RubyのAPIで挙動を制御できる様になっている。しかし、科学技術計算の分野の人はPythonユーザーが多いのでRubyではなくPythonのAPIがほしいというリクエストが多かった。 何ができるか? 例えば、以下のようなRubyのコードがあるとする。 class MyClass def m1 "m1" end def m2(a,b) "m2 #{a} #{b}" end def m3(a, b:) "m3 #{a} #{b}" end def m4(a) Proc.new { "m4 #{a}" } end def m5 enum = Enumerator.new{|y| (
Rubyで書かれたビルドツール「Rake」のソースの読み方について書かれています。各クラスの主要メソッドについてかなり詳細に説明しており、とてもわかりやすいです。Rakeを取り上げた理由について以下を挙げています。 規模が小さい 歴史が浅く下位互換のためなどの醜いコードが少ない 依存関係が少ない ライブラリではなくツール トリッキーな機能を使っていない 他の言語では、JavaではJUnitやJakarta Commons、JavaScriptであればprototype.jsがコードリーディングに適しているようです。PHPやPerlなど、他の言語でこのソースを読むのがオススメというものがあれば 教えてほしいです(編注1)。 URL:http://dodgson.org/omo/t/?date=20060901#p02 編注1)本誌Vol.35特別企画「[速習]コードリーディング」(
そういや一年前、「ウェブサーバーのこと知りたい -> Rack読もう。」となって挫折した。少しずつ暖かくなって意識が高まってきたし、今やっている仕事がずいぶんと(すくなくともRailsアプリ書くのと比較すると)低レイヤーなところなので、良い感じの相乗効果を狙って今のうちにサーバーについて理解を深めておきたい。そういうわけで、今春はWebrick読もう。 https://github.com/ruby/ruby/tree/trunk/lib/webrick 読みかた 今度は挫折したくない。以下の手法に従って読む。 ソースコードを読むための技術 また、Cのソースにも触れることになると思うので以下も参考にする。 Rubyソースコード完全解説 使うもの bash vim ctags 動的解析 基本的に解析は動的解析から始めるのがよい。 静的解析とは、多かれ少なかれ、プログラムの動作を予想することで
「プログラムを書けるようになるためにはプログラムを読まなければならない」とどこかで聞いたので、Rubyのコードを何か読んでみることにした。 とりあえず初めてのコードリーディングということで、 Ruby/勉強用のお手本になるソースコード - TOBY SOFT wiki で初心者向けとされている mailread.rb を読むことに。 自分のRubyディレクトリからソースコードを探してみた、が見つからない。調べてみると1.9からなくなったらしい。仕方なくググって見つけたところからコピペ。 コードリーディングと言ったものの、どういうやり方が一番いいのかよくわかってない。コードリーディングのやり方として ひらメソッド というものもあるらしいが、たかが数十行のソースコードにやる意味はなさそうなので、とりあえず読みながらコード中にコメントを挿入していくという方法をとった。 どうせコメントをつけるなら
第4章 ニューラルネット 4.1 ニューラルネットワークの基礎 上記のnn.cをRubyで書き換えてみました。 なお、完全に同一ではありませんので悪しからず。 # ライブラリの読込 include Math # 定数の定義 $inputno = 3 $hiddenno = 2 $maxinputno = 100 # 学習データの読み込み def getdata() e = [ [0.0,0.0], [0.0,1.0], [1.0,0.0], [1.0,1.0] ] return e end # 順方向の計算 def forward(wh, wo, hi, e) u = 0.0 o = 0.0 (0..$hiddenno-1).each do |i| u = 0.0 j = 0 e.each do |e_val| u += e_val * wh[i][j] j += 1 end u -= w
この記事は Aizu Advent Calendar 2016 4日目の記事です。 前の人は、@hnjkさん、次の人は @misoton665 さんです。 はじめに この記事では汎用的な音楽ファイル形式であるWAVファイルについて、BPM解析を行うプログラムを作成します。 今回は手軽に書けるのと、最近あまり注力してRubyを書いてないので、リハビリという名目でRubyを使って書きました。特に技術的な理由はありません。 作成したプログラムへの指摘は大歓迎です。 WAVファイル形式について BPMを解析するプログラムだとかアルゴリズムを調べる前に、まず今回解析の対象とするWAVファイルの形式について、基礎知識から調べてみました。 WAVまたはWAVE(ウェーブ、ウェブ) (RIFF waveform Audio Format) は、マイクロソフトとIBMにより開発された音声データ記述のためのフ
はじめに この記事は「ほんのちょっとだけRubyが動くVMをRubyで実装してみて、Rubyが実行される仕組みを理解しよう」という趣旨のゆるふわな記事です。 こんなコードを実行できるVMを実装します。 この記事ではRuby 2.3.3を使います。 注意点 本記事にでてくる用語は厳密な定義とかは気にせずゆるくふんわりと使ってます VMの実装はRubyを使うので結構ずるい感じです 構文解析、コンパイルはしません クラス定義、メソッド探索、コントロールフレームなどの概念はでてきません なのでRubyを題材にしてますが、Rubyの特徴的な機能にはあまり触れていません 対象読者 Rubyが好き 普段Webプログラミングとかしてる プログラミング言語の処理系としてのVMが気になる まえおき VMとは RubyはJavaやErlangなどと同じようにRuby用のVM(仮想マシン)上で実行されます。 C言
はじめに 数年にわたり、PadrinoやGrapeといったWebアプリケーションフレームワークのルーティングを改善してきた自分が、今年の11月頃から、従来とは異なるアプローチでHTTPルーティングの高速化について検証したので、その結果について解説する。 なおこの記事では、その過程でC++で基数木を実装し、それを用いることにより、Rubyで高速なHTTPルーティングを実現した事例について、順を追って解説する。 tl;dr C++で基数木(Radix Tree)を表現するr2reeというライブラリを書いた。 r2reeのRuby向けバインディングであるr2ree-rubyを書いた。 r2ree-rubyを用いてRuby上でHTTPルーティングを行う pendragon-radixを書いた。 多分、Rack準拠のルーティングライブラリでは最速。 結果、Sinatraなどで用いられる正規表現+線形
多くの言語に「クラスメソッド」がありますが、Rubyで実装する場合はいろいろ考えることが出てきます。 「クラスメソッド的なメソッド」とは ここでは、「SomeConst.some_method」のような形式で呼び出すものを総称して「クラスメソッド的なメソッド」と呼ぶことにします。実際には、多様なものが含まれます。 クラスインスタンスの特異メソッド(クラスメソッド) モジュールインスタンスの特異メソッド モジュール関数(厳密には1つの種類ではありませんが、便宜上入れておきます) クラスやモジュールのインスタンスにextendされたモジュールのメソッド 今回の論題 今回は、「特定のクラスと紐付ける必要のない(or紐付けられない)」クラスメソッド的なメソッドについて考えます。例えば、ファクトリーメソッドやActiveRecordの探索系メソッドは、同じクラスのインスタンスやコレクションを生成する
Pmilterというサーバソフトウェアを作りました。 github.com PmilterはProgrammable Mail Filterの略で、SMTPサーバ(送信や受信)とmilterプロトコルで通信し、SMTPサーバの送受信の振る舞いをRubyでコントロールできるサーバソフトウェアです。 これまでにも、milter managerやRubyのgemを使ってmilterサーバを作るといった素晴らしいソフトウェアがありました。ですが、今回僕がフルスクラッチで作りたかった理由としては、 とにかくインストールや設定がシンプルで運用しやすいサーバソフトウェアにしたい ミドルウェアとして振る舞いを設定する感覚でRubyで制御する事に専念したい 依存ライブラリを減らしワンバイナリでサーバに配置できるようにしたい 設定変更に再起動することなくRubyを変更するだけで振る舞いを変えられるようにしたい
東京Ruby会議 11(2016年5月28日収録)
概要 Rubyistでも機械学習がしたい! ということで、タイトルの通りRubyで機械学習のためのgemをつくってみました。機械学習のための、と書きましたが、試作品ということもあり2016年4月現在実装されているのは多層パーセプトロンと自己符号化器のみです。今後、時間が空いたときに少しずつ更新して、中身を増やせていければよいなと思っています。 Rubyにも機械学習のためのライブラリがいくつかあるのは知っていますが、選択肢を増やすためにも稚拙ながら実装してみました。 インストール ソースコード https://github.com/seinosuke/sabina デモ examples/ 以下にあるサンプルの実行結果をデモとして示します。これらのデモの実行には本gemに加えてv5.0以上のgnuplotが必要です。 多層パーセプトロン その1 以下の図はタグ付けされた訓練データの画像と、学
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く