Ruby学習者に送る10冊の本 +αです。この半年間、はじめて書くところからRubyを学習してきた私が、実際に読み通して、よかった、勉強になったと感じた本を厳選してまとめました。 Ruby入門 まずはRubyそのものについて学習しましょう。基礎から、応用まで。 参考: - http://booklog.jp/q/3494 - http://blog.kentarok.org/entry/2012/05/29/230254
プログラムの実行はどのようにして行われるのか、Linuxカーネルのコードから探る (2017/7/20) C言語の「Hello World!」プログラムで使われる、「printf()」「main()」関数の中身を、デバッガによる解析と逆アセンブル、ソースコード読解などのさまざまな側面から探る連載。最終回は、Linuxカーネルの中では、プログラムの起動時にはどのような処理が行われているのかを探る エンジニアならC言語プログラムの終わりに呼び出されるexit()の中身分かってますよね? (2017/7/13) C言語の「Hello World!」プログラムで使われる、「printf()」「main()」関数の中身を、デバッガによる解析と逆アセンブル、ソースコード読解などのさまざまな側面から探る連載。今回は、プログラムの終わりに呼び出されるexit()の中身を探る VBAにおけるFileDial
IPA(独立行政法人情報処理推進機構、理事長:藤江 一正)に設置したRuby標準化検討ワーキンググループ(委員長:中田 育男 筑波大学名誉教授)にて原案作成を進めてきたプログラム言語Rubyの技術規格書が、JIS規格、JIS X 3017として、2011年3月22日に制定されました。 JIS規格化されたことにより、Rubyの相互運用性(*1)が向上し、Rubyを用いてより生産性の高いプログラム開発・システム開発が可能になります。 概要 Rubyは1993年に日本で発案され、開発が開始された、日本発のプログラム言語です。豊富な機能と簡便さとを併せ持ち、高機能なアプリケーションを簡潔に記述できる等の特長から、セールスフォース・ドットコムや楽天など、国内外に有名な数多くの会社のアプリケーション開発やシステムの開発に用いられています。また、島根県や福岡県などは、Rubyを核とした地域ソフトウェア産
理想をいえば全ての可能性を網羅することが最適ですが、事実上不可能です。 大事なのは重要もしくはミスが起こりやすいところが網羅されているかです。 少なくとも以下のポイントに当てはまるところは重点的にテストコードを書くべきです。 メソッド内にコメントを書かなければ理解できないようなメソッド ロジックが複雑なためにどうしてもコメントで補記しないとわからないメソッドはどうしても存在してしまいます。 こういったメソッドはテストを書くことでさらに仕様を明確にできます。 2回以上修正したメソッド なんのミスもなく、書いた後に1度も修正しないようなメソッドよりも、書いた後に拡張した、なんらかのミスで修正したメソッド に重点的にテストは書くべきです。 外部アプリケーションと連携する部分 こちらが何を想定して何が想定外なのが明確になります。 外部アプリケーションの仕様が先方都合や提供もとの都合で変更される可能
grenはgrepの置き換えを目指して作ったコマンドラインツールです。 以下のような特徴を持っています。 特徴 基本はfind+grep 指定ディレクトリ以下にある全てのファイルの中身を調べます。 gren 検索文字列 [検索するディレクトリ] でOKです。 ユーザーが指定する項目を最小限に バイナリかテキストかをツールが自動で判断します *.rbや*/*.cppのような指定は必要ありません README,README.jaのような特殊な拡張子でも検索対象に含めます .pngや.exeの中身は調べません。 デフォルトで除外ディレクトリが設定されています * *~, .svn, .git, CVS等は探索対象から除外します 便利な検索結果 検索を開始したディレクトリ(Path)、かかった時間(Time)、ファイル数(Files)、ファイルサイズ(Size)、マッチしたファイル数とヒット数(M
『るびま』は、Ruby に関する技術記事はもちろんのこと、Rubyist へのインタビューやエッセイ、その他をお届けするウェブ雑誌です。 Rubyist Magazine について 『Rubyist Magazine』、略して『るびま』は、日本 Ruby の会の有志による Rubyist の Rubyist による、Rubyist とそうでない人のためのウェブ雑誌です。 最新号 Rubyist Magazine 0058 号 バックナンバー Rubyist Magazine 0058 号 RubyKaigi 2018 直前特集号 Rubyist Magazine 0057 号 RubyKaigi 2017 直前特集号 Rubyist Magazine 0056 号 Rubyist Magazine 0055 号 Rubyist Magazine 0054 号 東京 Ruby 会議 11 直
少し触っただけだけども、HTA + ActiveScriptRubyにぐっときた。 VisualuRubyよりも、もっともっとサクサク簡単なGUIを作りたいときに便利っぽい。 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="jp" lang="ja-JP"> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> <title>サンプル</title> <script for="window" e
WebOS Goodies へようこそ! WebOS はインターネットの未来形。あらゆる Web サイトが繋がり、共有し、協力して創り上げる、ひとつの巨大な情報システムです。そこでは、あらゆる情報がネットワーク上に蓄積され、我々はいつでも、どこからでも、多彩なデバイスを使ってそれらにアクセスできます。 WebOS Goodies は、さまざまな情報提供やツール開発を通して、そんな世界の実現に少しでも貢献するべく活動していきます。 少し前に公開した Ruby 用 JSON クラスに数多くのバグを仕込んでしまい(たいへんご迷惑をおかけしました m(_ _)m)、テストの重要性を改めて痛感している今日この頃です。今後も開発を続けるにあたって、現在の行き当たりばったりなテスト方法ではとてもやっていけないと危機感を持ちまして、きちんとしたユニットテストの方法を調べてみました。 で、実際に試してみたと
ruby でメッセージキューを扱いたく、stomp クライアントライブラリを試してみました。 って、奥さんのエントリとシンクロしているようですが、気のせいではありません(笑)。 1. メッセージキューを起動 ruby の stomp はクライアントだけなので、キュー(サーバ側) は ActiveMQ を使うか、Perl の POE::Component::MessageQueue で立てる必要があります。 今回は奥さんとのメッセージのやりとりが目標なので、奥さんのプログラム( POE::Component::MessageQueue 使用)をそのまま使わせてもらいました。 /usr/bin/mq.pl --data-dir /tmp/mq プチTIPS: POE::Component::MessageQueue でキューを立てて、subscribe したり、subscribe されていない
■ Perl基礎文法最速マスターをだいたいそのまま、Rubyに置き換えてみました。 他の言語をある程度知っている人はこれを読めばRubyの基礎をマスターしてRubyを書くことができるようになる…かも知れません。無保証です。 参考: オブジェクト指向スクリプト言語 Ruby リファレンスマニュアル (1.9.2) オブジェクト指向スクリプト言語 Ruby リファレンスマニュアル (1.8.7) ■ 1. 基礎 インタラクティブRuby (irb) irbを使うと、Rubyのプログラムを簡単に練習することができます。 /Users/yhara $ irb irb(main):001:0> puts "hello" hello => nil irb(main):002:0> 1 + 1 => 2 以下の説明は、irbを起動して、自分で試しながら読むと習得が早いと思います。 表示 (print,
WWW::mechanizeが面白そうだったので作ってみました。 参考サイトはhttp://mono.kmc.gr.jp/~yhara/d/?date=20070205#p01です。というかサンプルコードほとんどそのまんまです。 手元にあるテキストファイルを自分のダイアリーに投稿できます。お気に入りのエディタで書いてスクリプトで投稿みたいなことが簡単にできるわけです。 インストール方法 WWW::mechanizeがひつようです。gemでインストールしましょう。 gem install mechanize 僕もはまったのですがmechanize内部でnet/httpsを使ってるらしくlibopenssl-rubyをインストールする必要があります。 ubuntuなら sudo apt-get install libopenssl-ruby もちろん以下のスクリプトもダウンロード:-) 使いか
MySQLの文字化けを直したい! 発端はSequelを使ってMySQLのデータを操作するRubyスクリプトを書いていたときでした。 UTF-8で保存したはずの文字列が、妙に文字化けしています。 mysqlコマンドでエンコーディングの確認をしてみると、 $ mysql -h host -u user -p database ...(略)... Type 'help;' or '\h' for help. Type '\c' to clear the buffer. mysql> \s -------------- mysql Ver 14.14 Distrib 5.1.30, for portbld-freebsd7.1 (i386) using 5.2 ...(略)... Server characterset: ujis Db characterset: utf8 Client char
TweetStreamはRuby製のオープンソース・ソフトウェア。Twitterと連携したサービスを作る際、つぶやかれたメッセージの内容を判別して処理を行うと言ったサービスは多々存在する。その際には検索をしたり、RSSフィードを読み込んで処理を行うと言った方法が一般的だ。 データがどんどん流れてくる だがそうしたプル型の手法ではない方法がある。それがTwitter Streaming APIと呼ばれるプッシュ型のWeb APIを使った方式だ。TweetStreamはそのTwitter Streaming APIに対応したソフトウェアで、エラーが発生するまで持続的にTwitterに接続し、更新されるたびにメッセージが送られるようになる。 TweetStreamを実行すると接続が持続的に行われ、新しいつぶやきを受け取るごとにブロックが処理される。特定のユーザの発言だけをピックアップしたり、全て
Ruby で、変数に入力された文字列を、新しい変数名として利用するにはどうしたらよいのでしょうか? 例となるコードが PHP となってしまい申し訳ありませんが、やりたいのは下記の通りです。 また、ローカル変数だけではなく、インスタンス変数でも実現可能なのでしょうか? <?php $variable = 'say'; $${variable} = 'Hello, world!'; echo $say; // Hello, world! ?> Ruby で実行すると、下記のエラーが発生します。 say.rb #!/usr/bin/ruby variable = 'say' #{variable} = 'Hello, world' puts say % ruby say.rb say.rb:3: undefined local variable or method `say' for main:
関数型言語にとって、関数がファーストクラスの身分を持つというのは必須の要件だと言えるでしょう。 関数がファーストクラスであるというのはどういうことかということに関しては、基礎概念の所(first-class objectの項目)にもあるので見てもらえればいいと思いますが、ここでも簡単に言っておくと、データと同じように関数を取り扱うことができるということです。つまり、名前をつけられる(定義/宣言できる)ということだけではなく、関数の引数・結果値になることもでき、しかも、データ構造の中にオブジェクトとして組み込むこともできるということです。 関数型以外の言語はこれができるわけではありません。つまり、データと同じように、定義できたり、引数・結果値になったり、データ構造に組み込むことができるわけではありません。例えば、Rubyでは、メソッド定義はdefを使用する一方で、変数定義は代入演算子に拠
0.9.0 から nokogiri に変わってたらしく、以前書いていたものが動かなくなってた。 書き直してみたんだけどリファレンス引くのが大変・・・。メソッド呼び出しした結果でどのクラスのインスタンスが返ってくるかとか、それはどのメソッドがあるのかとか。Ruby が大クラス主義である一因かもなぁと思ったり。これが Java みたいにうじゃうじゃクラスがあったら大変だ。 リファレンスを引くのは当たり前としても、もうちょっと便利にならないかなぁと。eclipse 中毒乙か。 require 'rubygems' require 'mechanize' require 'json/lexer' class TwitterJSON # error class LoginError < StandardError ; end class OverLimitError < StandardError
Cheat Sheet Open a database require 'rubygems' require 'sequel' DB = Sequel.sqlite('my_blog.db') DB = Sequel.connect('postgres://user:password@localhost/my_db') DB = Sequel.postgres('my_db', :user => 'user', :password => 'password', :host => 'localhost') DB = Sequel.ado('mydb') Open an SQLite memory database Without a filename argument, the sqlite adapter will setup a new sqlite database in memory
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く