タグ

RubyとProgrammingに関するosada5963のブックマーク (42)

  • 引数の参照渡し(変数渡し)なのか単なるオブジェクトへの参照なのか、それが問題 - 新・日々録 by TRASH BOX@Eel

    プログラミングの勉強をしていると、異なる話題なのに似たような名前が付けられていて混乱することがある。 例えば変数における「参照型」と関数/プロシージャ/サブルーチン/メソッド等々の引数における「参照渡し」は異なる概念なのだが、どちらも「参照」という名前が付いている為にこれのように混乱してしまうことがある。 まあこの辺りは知らないと色々と混乱させられる話ではある。 分からない人はVBScriptやC#の言語体の部分を勉強すると理解できるかもしれない。どちらも、 変数(というかデータ型?)に値型と参照型がある。 メソッドの引数に値渡しと参照渡し(変数渡し)がある。 といった言語仕様だ。 ちなみに私は基的にCプログラマなスタンスの人なのだが、C言語の仕様としては、 変数に値型(普通の変数)と参照型(の原始的な実装――ポインタ)がある。 関数の引数は値渡しのみ。 といった特徴があるので、実はR

    引数の参照渡し(変数渡し)なのか単なるオブジェクトへの参照なのか、それが問題 - 新・日々録 by TRASH BOX@Eel
  • RubyでHashのsortの返り値をHashにする - simanのブログ

    RubyのHashのsortは返り値がArrayになっています。 hash = { a: 30, b: 66, c: 45, d: 100, e: 80 } p hash.sort_by{|k,v| v } [[:a, 30], [:c, 45], [:b, 66], [:e, 80], [:d, 100]]ArrayではなくHashで受け取りたい場合は、この値をそのままHashに入れてあげれば大丈夫です。 hash = { a: 30, b: 66, c: 45, d: 100, e: 80 } result = hash.sort_by{|k,v| v } p result sorted_hash = Hash[result] p sorted_hash [[:a, 30], [:c, 45], [:b, 66], [:e, 80], [:d, 100]] {:a=>30, :c=>4

    RubyでHashのsortの返り値をHashにする - simanのブログ
  • Ruby標準添付ライブラリcsvのCSV.tableメソッドが最強な件について

    ─ 問題1 ─ data.csvファイルには、5人のプレイヤー(Alice, Bob, Jimmy, Kent, Ross)が二種類のゲーム(gameA, gameB)をプレイした結果が次のような形で格納されている。各ゲームの平均点を求めよ。 data.csv player,gameA,gameB Alice,84.0,79.5 Bob,20.0,56.5 Jimmy,80.0,31.0 Kent,90.5,15.5 Ross,68.0,33.0 data = File.read('data.csv') headers, *scores = data.lines.map { |line| line.chomp.split(',') } scores # => [["Alice", "84.0", "79.5"], ["Bob", "20.0", "56.5"], ["Jimmy", "80

  • Ruby概論のスライドがすばらしかったのでまとめてみた(第一部)

    Spice Lifeの五十嵐邦明さんの一橋大学のRuby概論スライドがかなりすばらしかったのでまとめてみました。こんなキャッチーな資料がネットで手に入るというのは当にありがたい限りです! (05-02 07:45) MATSUOKA Koheiさんの2014年度の講義資料を追加 ちなみに、スライドがたくさんあるので3部作ですw (1)『Ruby概論のスライドがすばらしかったのでまとめてみた(第一部)』<= 今ここ< strong> (2)『Ruby 概論のスライドが素晴らしかったのでまとめてみた(第2部)』 (3)『Ruby 概論のスライドが素晴らしかったのでまとめてみた(第3部)』 🗻 2014年ブログ一橋大学でRubyの非常勤講師をはじめました MATSUOKA Koheiさんが講師をされている2014年に現在開催中のRuby講義の資料です。勉強になります! Ruby講義第1回:

    Ruby概論のスライドがすばらしかったのでまとめてみた(第一部)
  • Rubyとか使ってクローリングやスクレイピングするノウハウを公開してみる! - 病みつきエンジニアブログ

    今まで何度もスクレイピングとかクローリングをしてきたので、マエショリストの端くれとしてコツを公開すべきかなあ、と思い、公開します。 今日の題材は、CNET Newsです。私はウェブ文書にタグ付けをするという研究をしているのですが、そのための教師データとしてクローリングをします。 photo by Sean MacEntee 要件定義 CNET Newsから全ニュースを保存し、その文をデータベースに保存します。これは、次のようなフローに書き下すことができます。 全URLを取得し、データベースに保存 データベースにある全URLをダウンロードする 保存した全ページを解析して、文をデータベースに保存する という流れです。これらは独立していますから、それぞれどの言語で解析しても構いません。しかし後述しますが、「あとから追いやすくする」「適材適所」といったあたりを気をつけて、言語選択をするべきだと

    Rubyとか使ってクローリングやスクレイピングするノウハウを公開してみる! - 病みつきエンジニアブログ
  • 教えながら学ぶRuby:イテレータに片思い

    ということでやっとRubyの勉強を始めた私だが、「何かを学ぶには人に教えるのが一番」というポリシーの私としては、早速Rubyに関するエントリーを書かずにはいられない。 Rubyという言語に関しては色々な意見があるとは思うが、私が(いまのところ)一番気に入っているのはイテレータという考え方。これは美しい。できることならば、forとかwhileのない言語にしてくれればもっと美しかったのにと思うぐらいだ。ここからしばらくは、forとwhileを一切使わずにどこまで出来るかを試してみようと思う。 そう思いながら読み始めた「オブジェクト指向スクリプト言語Ruby(以下「Ruby」)」。Rubyの生みの親であるまつもとゆきひろ氏自身の手になるものだ。彼なりのイテレータへの思い入れが伝わってくるに違いない... ところが、である。 このの最初の方に出てくるサンプルがなぜかイテレータを使わずにwhil

  • Ruby 1.9 で ISO-2022-JP メールを送る方法 | Carpe Diem

    とあるプログラムが、UTF-8 の文字コードで、大人の事情で添付ファイルがあり、その添付ファイルが ShiftJIS なメールを送信プログラムがありました。 このとき、次のような警告が表示されてしまいます。 Non US-ASCII detected and no charset defined. Defaulting to UTF-8, set your own if this is incorrect. しかも、このとき文にプログラム上で文を追加しているのですが、その文が追加されなかったりと、いろいろと都合が増えてきたので、思い切って ISO-2022-JP に変更してみました。 ISO-2022-JP メールを送信するには、mail-iso-20220-jp gem を使うと、便利です。 上のような場合、次のようなコードにすると、文字化けや警告が表示されなくなり、幸せになれます

  • まつもと直伝 プログラミングのオキテ 第20回 MVCとRuby on Rails:ITpro

    Ruby on Railsをはじめとする最近のWebアプリケーション・フレームワークの多くは,MVCと呼ばれるデザイン・パターンを採用しています。今回は,このMVCパターンの「正体」について考えます。 MVCはGUIを備えたプログラムを設計する際の指針となるデザイン・パターン*1の一つです。「モデル」(Model),「ビュー」(View),「コントローラ」(Controller)という3つの構成要素の頭文字から命名されました。多くのデザイン・パターンはプログラムの一部のみの構成を決めています。しかし,MVCはアプリケーション全体の構成を決めることが多いため,「アーキテクチャ・パターン」と呼ばれることもあります。 MVCは,元々プログラミング言語Smalltalkにおいて,ウインドウ(GUI)を持つアプリケーションを構築する際の指針として誕生しました。 MVCを発明したのは,当時,米Xero

    まつもと直伝 プログラミングのオキテ 第20回 MVCとRuby on Rails:ITpro
  • まつもと直伝 プログラミングのオキテ 第1回(3):IT Pro

    ポリモーフィズム ポリモーフィズム(Polymorphism)とは,複数を意味する接頭語「poly-」と形態を意味する「morph」との合成に,接尾語「-ism」が付いたものです。つまり「複数の形態であること」という意味です。和訳して「多態」と呼ばれることもあります。 別の言い方をすれば,多態とは複数の種類のものをあたかも同じものであるかのように扱うことができることを言います。 これだけだと,なんのことだか分からないかもしれないので,一つのたとえを使いましょう。 ここに3つの箱があります。箱にはそれぞれふたがあり,ふたが乗せてあるだけのもの,鍵が付いたもの,リボンで結んであるものに分かれます。箱自体が非常に高価なので,それぞれの箱には専任のオペレータが付いていて,箱に対してなにかしたいときには,オペレータに命令します(図1[拡大表示])。 3種類の箱はそれぞれ開け方が違っています。しかし「

    まつもと直伝 プログラミングのオキテ 第1回(3):IT Pro
  • Rubyソースコード完全解説 / 青木峰郎

    $Id: index.html,v 1.6 2004/07/20 23:08:12 aamine Exp $ この文書は書籍『Rubyソースコード完全解説』のHTML版です。 ただし初校段階の原稿をベースにしているため、 書籍では修正されている間違いが残っている場合があります。 予め御了承ください。 2004-02-16 に全章を公開しました。 目次 まえがき 序章 第 1 部「オブジェクト」 第 1 章「Ruby言語ミニマム」 第 2 章「オブジェクト」 第 3 章「名前と名前表」 第 4 章「クラス」 第 5 章「ガーベージコレクション」 第 6 章「変数と定数」 第 7 章「セキュリティ」 第 2 部「構文解析」 第 8 章「Ruby言語の詳細」 第 9 章「速習yacc」 第 10 章「パーサ」 第 11 章「状態付きスキャナ」 第 12 章「構文木の構築」 第 3 部「評価」 第

  • Rhodes[1]Rubyでネイティブモバイルアプリを作成

    新しいスマートフォンアプリの開発方法として「マルチプラットフォーム対応フレームワーク」という選択が可能になってきた。 3Dゲーム用エンジンで有名な「Unity3」や、Lua言語を採用した同じくゲーム向けである「Corona」、JavaScriptをネイティブコードに変換する「Titanium Mobile」、そしてまるでWebアプリケーションを作成しているかのように開発ができる「Rhodes」などがある。 Unity3はiOS/Android用ライブラリはアドオンとして有料で販売されている。Coronaは商用利用の場合はライセンス料がかかる。Titanium MobilとRhodesはどちらともオープンソースソフトウエアとして公開されており、ライセンス形態は違うが商用利用の場合でもロイヤリティフリーで利用することができる。 また、Androidなどではあまり関係ないが、iOSではApple

    Rhodes[1]Rubyでネイティブモバイルアプリを作成
  • decode the answer | Code Puzzle

    このサイトについて このサイトと“Code Puzzle”は、任天堂株式会社が採用広報活動のために運営しているものであり、商品・サービスの宣伝や新作ゲーム情報の提供を目的としたものではありません。 掲載内容に関するすべての著作権は任天堂株式会社に帰属します。法律により認められた範囲を除き、コピー等の利用は固くお断りします。 このサイトで掲載している“Code Puzzle”は、興味を持っていただいた技術者の方々に楽しんでいただくために公開しているものですが、“Code Puzzle”を解かれた方々に対して、景品をお渡ししたり採用におけるメリットを提供することはありません。 また、“Code Puzzle”の解法や内容に関するお問合せには回答いたしませんので、あらかじめご了承ください。

  • Ruby 1.9 以降で JSON を扱う - 見上げれば、空

    Ruby で JSON を扱いたいと思って調べてみると、 Ruby 1.9 で標準添付ライブラリに加わったということを知ったのですが、いまいち情報がみつからなかったのでまとめてみました。 (追記) 1.9 の json ライブラリは gem の json パッケージのものと同じものみたいです(バージョンの差はあるかもしれませんが)。ちゃんと調べてませんが 1.9 の段階で既存のパッケージが取り込まれたかたちなのだと思います。ですので、以下は Ruby 1.8 系統に rubygems で json をいれたときでも同様の操作で JSON を扱えるはずです。 json | RubyGems.org | your community gem host JSON implementation for Ruby JSON からオブジェクトに JSON 形式の文字列から配列/ハッシュへ JSON か

    Ruby 1.9 以降で JSON を扱う - 見上げれば、空
  • RとRubyによるデータ解析入門

    人気の高いオープンソースのツール、RとRubyを使い、生データを処理し、シミュレーションし、仮説を立て、統計的手法を用いて検証する、というデータ解析の基の理解を促します。基が学べるだけでなく、自分のメールボックスや自分の心臓の鼓動など身近な題材を対象としており、データサイエンスの醍醐味を味わうことができる一冊です。日語版ではさまざまな統計分析手法についての入門となる章を追加。こので使っている統計の基礎も学べる構成になっています。プログラマ視点で書かれた書は、ビッグデータを活用するためのスキルを身に付ける必要に迫られた多くの開発者にとっても貴重な情報源となるでしょう。 関連ファイル サンプルコード 正誤表 ここで紹介する正誤表には、書籍発行後に気づいた誤植や更新された情報を掲載しています。以下のリストに記載の年月は、正誤表を作成し、増刷書籍を印刷した月です。お手持ちの書籍では、すで

    RとRubyによるデータ解析入門
  • Ruby で FFT (高速フーリエ変換) を書いてみた - まめめも

    ref: 【ニコニコ動画】ミクをPCの再生音に合わせて自動で踊らせてみた ↑に触発されて波の処理をしたくなったので、Ruby で FFT (高速フーリエ変換) を書いてみました。 FFT とは、波の形を見て周波数とかを見抜く魔法のことです。数式とか考えたくないので、とにかく Ruby で書いてみました *1 。 def fft(a) n = a.size return a if n == 1 w = Complex.polar(1, -2 * Math::PI / n) a1 = fft((0 .. n / 2 - 1).map {|i| a[i] + a[i + n / 2] }) a2 = fft((0 .. n / 2 - 1).map {|i| (a[i] - a[i + n / 2]) * (w ** i) }) a1.zip(a2).flatten end これだけです。短いで

    Ruby で FFT (高速フーリエ変換) を書いてみた - まめめも
  • 知って得する!55のRubyのトリビアな記法

    Rubyはたのしい言語です。Rubyを触っているとマニュアルにも書いていない「小さな発見」に遭遇することがよくあります。このような「発見」は、プログラムの質や効率の改善には直結しないかもしれません。いや、むしろチームプログラミングでは妨げになる可能性すらあります。しかしその一方で、言語自体が自分の知らない領域を持ち続けていることが、その対象に対する興味を失わせないための大きな要因である、というのもまた疑いのない事実なのです。つまり「発見」はたのしさに直結しているのです。 このブログにおいて「知って得するRubyのトリビアな記法」というタイトルで、今まで3回記事を書きました。 “知って得する21のRubyのトリビアな記法” “第2弾!知って得する12のRubyのトリビアな記法” “第3弾!知って得する12のRubyのトリビアな記法” これらのトリビアには、ネット検索で見つけたもの、Twitt

  • Twitter Streaming APIをRubyで試してみる - しばそんノート

    Streaming APIとは TwitterのStreaming APIをご存知でしょうか。 Twitter API Wiki / Streaming API Documentation 2009年4月頃から試験的に公開されているAPIなので、ご存知な方も多いと思います。2009年8月現在でまだαテスト中ですが、これを利用すると、push型でリアルタイムに情報を受け取ることができます。 TwitterAPIは基的にpull型なので、クライアントが能動的にリクエストを発行しなければ情報を受け取ることができません。しかし、1時間あたりのリクエスト回数、1リクエストあたりの最大データ数など、APIには様々な制限がかけられていますので、例えばリアルタイム性の必要なプログラムや、大量のtweetsが必要な統計プログラムなどの用途で通常のAPIを利用するのは厳しいものがあります。 そのような時は

    Twitter Streaming APIをRubyで試してみる - しばそんノート
  • 浮動小数の誤差 - 中継地点

    2進計算による浮動小数の誤差について意識なく平気で演算したり比較するケースをよく見かけます。 大抵はあまり問題は発生しないのですが、特殊なケースで予想と反する結果となります。 色々と試してみました。 Ruby(irb)の場合 irb(main):001:0> 1-0.9 == 1/10 => false RubyでFixnum型での浮動小数は2進数計算となるようです。 小数表現が内部的に2^nであらわされているために発生する問題です。 10進で値を保持するbigdecimalを使用するのが妥当な解決策と思われます。 irb(main):001:0> require 'bigdecimal' irb(main):002:0> n1 = BigDecimal("1") irb(main):003:0> n09 = BigDecimal("0.9") irb(main):004:0> n10 =

    浮動小数の誤差 - 中継地点
  • まつもと直伝 プログラミングのオキテ 第15回 浮動小数点数の謎に満ちた世界

    前回はコンピュータにおける整数の扱いについて学びました。今回はさらに奥に入り,小数について調べてみましょう。コンピュータ上の小数は整数以上に複雑な謎に満ちているのです。 小学校に入学したばかりのころ,算数の時間に学んだ「数」は整数,それも正の数だけでした。しかし,学年が進むと1よりも小さい数を取り扱う小数が登場します。0.2や1.5ですね。高等学校では数の範囲が広がり,小数を実数の一種として考えます。 コンピュータにおける小数の扱い コンピュータでも小数を取り扱います。プログラムで小数点を含む数を書くと小数を表します。 このRubyのプログラムは0.2という数を1つ用意し,出力します。Rubyの場合,すべてのデータはオブジェクトですから小数もオブジェクトです。小数を表現するオブジェクトのクラスをFloatと呼びます。数なのにfloat(浮く,浮かぶ)とはおかしな名前ですが,これはコンピュー

    まつもと直伝 プログラミングのオキテ 第15回 浮動小数点数の謎に満ちた世界
  • "Collective Intelligence"のサンプルをrubyに移植してみた - ma2の日記

    Programming Collective Intelligence: Building Smart Web 2.0 Applications 作者: Toby Segaran出版社/メーカー: O'Reilly Media発売日: 2007/08/26メディア: ペーパーバック購入: 3人 クリック: 117回この商品を含むブログ (31件) を見る「集合知」を解説するこのにはいろんな実例とサンプルが出てくる。サンプルは python なので ruby に書き換えてみた。書き換えたのは第二章の "Making Recommendations" の一部です。なんらかのアイテム(とか映画とか)とその評価(Amazonレビューの★とか)を複数の人間が行った場合に,その情報を元に「似た傾向の評価者」を探し,似た傾向の評価者のリストから自分が未評価のアイテム(つまり未読のとか未見の映画とか

    "Collective Intelligence"のサンプルをrubyに移植してみた - ma2の日記