タグ

rubyに関するjoan9のブックマーク (301)

  • Big Sky :: Re: Ruby 製バッチ処理を省メモリ化した

    Ruby 製バッチ処理を省メモリ化した - 彼女からは、おいちゃんと呼ばれています 少し前に Ruby 製の バッチ処理 を省メモリ化したときの話をメモしておきます。 どのような バッチ処理 だったか 動画共有サイト にアップされた動画がオトナの事情によって削除されることがしばしばあ... http://blog.inouetakuya.info/entry/2015/07/26/204320 ActiveRecord の each は全件、find_each はデフォルトで1000件をインスタンス化するので、HTML をパースしたDOMツリーが1000件もメモリに乗ったらそりゃ OOM Killer で殺されても文句は言えないかもしれない。 ActiveRecord::Batches The find_each method uses find_in_batches with a bat

    Big Sky :: Re: Ruby 製バッチ処理を省メモリ化した
  • http://blog.inouetakuya.info/entry/2015/07/26/204320

    http://blog.inouetakuya.info/entry/2015/07/26/204320
  • RubyのDateTimeとTimeはどちらを使うべきか - yarbの日記

    TimeはもともとPOSIXのtime_t型のラッパーで、内部的には1970年1月1日を起点とする秒数を保持している。 WikipediaによるUnix timeの記述を見ると、time_tは、なんと初期のUnixでは32ビット整数であったものの、60Hzのクロックに同期してカウントアップしていたそうだ。1秒間に60カウント進む。これでは2年半しか表現できない。のちに1Hz、つまり1秒1カウントで進むように変更され、これで前後130年の時刻を表現できるようになったそうな。 よく知られる2038年問題は32ビットの符号付き整数で表現できる1970年1月1日を起点とした場合の上限が2038年1月19日の午前3時14分7秒であるという話。 RubyのTimeクラスも、この制限を受けていた。 「受けていた」というのは、Ruby 1.9.2や、1.9系の新機能を1.8系へバックポートした1.8.7以

    RubyのDateTimeとTimeはどちらを使うべきか - yarbの日記
  • [Ruby] Ruby 3.0 の特大の非互換について - まめめも

    タイトルは釣りです。すみません。Ruby 3.0 はかなり先の将来の話なので、最終的にどうなるかはわかりません。でも Ruby 3.0 に重大な変更が予定されているのは事実なので、一緒に考えて欲しいと思います。 immutable string literal Ruby 3.0 では文字列リテラルをデフォルトで immutable (破壊的変更不可) にする、という方針が『決定』しました。(Feature #11473: Immutable String literal in Ruby 3) つまり、次のようなプログラムが動かなくなります。(当チケットから少し改変して引用) sql = "SELECT #{sec_id}, pt.path, st.doc_count " sql << "FROM #{stats_tablename} AS st " #### ←ここで例外: can't m

    [Ruby] Ruby 3.0 の特大の非互換について - まめめも
    joan9
    joan9 2015/10/05
  • Rubyにはウンザリ!動的型付け、副作用、およびオブジェクト指向プログラミング全般からの考察 | POSTD

    この記事を書き上げるには、相当長い時間がかかりました。来は今年の年明け、 Rubyの死 やデイヴィッド・ハイネマイヤー・ハンソンの TDDは死んだ がアップされて騒ぎになる前に投稿するつもりだったのです。昨年末に書いたツイートを見てください。 > Rubyにはもう飽き飽きした。理由はいろいろあるが、特にその副作用と、ステータスが可変なせいで大量のユニットテストを書かされるのにはウンザリだ。 @abevoelker Rubyの開発に関しては、大勢の人が心のどこかで何かおかしい、何かが欠けていると思っているようですが、たいていの人は責める対象を間違っています。Rubyで書いたアプリがとんでもない代物になったって? それはあなたがきちんとテストコードを書かなかったか、テスト駆動開発(TDD)の指針に則って開発しなかったからです。もしくは、正しいデザインパターンに切り分けるための知識が不足してい

    Rubyにはウンザリ!動的型付け、副作用、およびオブジェクト指向プログラミング全般からの考察 | POSTD
  • On Lispとか読んでRubyとLispの違いをちょっと考えた - yarbの日記

    全400ページのうち3/4がマクロの説明に当てられている、Paul Grahamの「On Lisp」を8割ほど読んだ。冒頭のCommon Lisp入門で紹介されている標準関数やユーティリティ関数のネーミングのひどさ(やたらと数字でサフィックス付けるとか、rplacaとかってどうよ?)や、破壊的操作をする関数の挙動の不統一感に、「これならRubyのほうがいいんじゃね?」とか思ったし、with系マクロも、「なんだRubyのブロックでいいじゃん」とか思ったりもしたけど、確かに読み進めると全然違う世界が垣間見えてきた気がする。 CLOSの説明の導入編に当たるところで、Paul Grahamは素のLispの上にオブジェクトシステムを作ってみせる。これが想像以上に簡単な話で、そうか、なるほど、ハッシュテーブルとクロージャがあれば、大抵のことはできるのだと、ちょっと驚いた。継承のモデルにしたって、メソッ

    On Lispとか読んでRubyとLispの違いをちょっと考えた - yarbの日記
  • 千里の道も1パッチから――コミッタライフ入門 - @IT自分戦略研究所

    今回は「コミッタに興味がある」という人のために、筆者のRubyコミッタとしての経験について紹介します。筆者はRubyプロジェクトを立ち上げたわけではないので、前者の「ほかのコミッタから認められ、推薦される」の方の紹介となります。 ■Ruby 1.9.0リリース時に「面白そう」と思ってコミット権をもらう 大学生だった2003年ごろ、わたしはCGIやテキスト処理など日々の雑務をこなすためのスクリプト言語としてRubyを覚えました。Perlと違って相性が良く、自然と身に付きました。 最初にパッチを送ったのは2005年。大学のSolarisでRubyが動かなかったときです。次は2007年。デバッグ出力用関数pを便利にする提案を行い、(Rubyプロジェクトのリーダーであるmatzさんの説得に半年かかりましたが)採用され、Rubyに思い入れがわくようになりました。 当時、Rubyは笹田耕一さんのYAR

    joan9
    joan9 2014/07/03
  • OCamlとRubyで同じプログラムを書いてみた

    以前書いたとおり、OCamlとRubyで簡単な家計簿プログラムmohを作った。全く同じというわけではなく、後に作ったRuby版のほうが機能を追加したりしているけど、面白い経験だったので感想を書いてみる。 客観的な比較 サイズを行数で比較すると、OCaml版は279、Ruby版は360で、Ruby版の方が機能が増えていることを考えるとほぼ同じくらいといえると思う。ただし、Rubyはユニットテストが作成に不可欠だったので、それを加えると499行とOCaml版に比べて倍くらいになる。まあユニットテストはOCamlでもした方がいいのだろうが、あとで述べる通り、しなくても動いてしまったのでユニットテストはしていない。いずれにしても、どちらも同じくらいコンパクトな言語だといえると思う。 OCamlのいいところ これからは主観の入った比較となる。 よくOCamlは「コンパイルが通ればバグはないと言わしめ

  • SAT ソルバで数独を解く方法 - まめめも

    数独は非常に SAT に変換しやすい問題です。全部参考文献 *1 に載っている内容ですが、なるべくわかりやすく説明してみます。ちょっと長いです。 SAT とは まず SAT をごく簡単に説明します。すでに SAT を知っている人はここは読み飛ばしてください。 命題論理式の形の一つに乗法標準形のというのがあります。変数か変数の否定 (リテラルと言います) を or だけでつないだ式 (節と言います) を and だけでつないだ論理式のことを言います。つまり以下みたいな形です。 ( a1 or !a2 or ... or an) and ( b1 or !b2 or ... or !bn) and ... and (!z1 or z2 or ... or !zn)SAT は「a1 や zn などの変数にうまく true か false を代入して、上の式全体を true にできるか」という問題

    SAT ソルバで数独を解く方法 - まめめも
  • 綺麗な設計を身に付けるためのSandi Metzルール

    Webアプリやモバイルアプリの受託開発やコンサルティングを行うthoughtbot社のブログにて、Sandi MetzルールというRubyプログラマ向けのルールが紹介されていました。 Sandi Metz’ rules for developers このルールは、プログラマーでありPractical Object-Oriented Design in Rubyという書籍も執筆しているSandi MetzさんがRuby Roguesポッドキャストに出演した際に紹介していたものです。 そのルールは以下の通りです。 クラス内のコードが100行を超えてはならない メソッド内のコードが5行を超えてはならない 4つより多い引数をメソッドに渡すようにしてはならない(ハッシュによるオプションもパラメーターとみなす) コントローラーではただ1つのオブジェクトだけをインスタンス変数化できる ビューは1つのイン

    綺麗な設計を身に付けるためのSandi Metzルール
  • Scalaのtraitはmixinか? - 西尾泰和のはてなダイアリー

    Rubyのmixin(モジュール)、Squeakのtrait、Scalaのtraitそれぞれについて: Q1: メソッドの実装を持てる? はい、はい、はい Javaのクラスは「はい」、インターフェイスは「いいえ」、C++Pythonのクラスは「はい」 Q2: クラスがそれを複数個継承できる? はい、はい、はい Javaのクラスは「いいえ」、インターフェイスは「はい」、C++Pythonのクラスは「はい」 Q3: インスタンスを作れる? いいえ、はい、いいえ C++Pythonのクラスは「はい」 Q4: 複数個継承した際に名前が衝突しました、どうなる? しれっと上書き、エラー(*)、エラー (*) Squeakはクラス定義時には例外を投げず、衝突したメソッドを「衝突した旨の例外を投げるメソッド」に置き換える。ユーザが衝突に気づくのは、クラスブラウザでメソッドを確認した時か、そのメソッド

    Scalaのtraitはmixinか? - 西尾泰和のはてなダイアリー
  • 「なんでRubyなんか作った!? 迷惑だ!」に対するMatzの答え:Rails Hub情報局:エンジニアライフ

    2012年9月に行われた札幌Ruby会議2012の基調講演の1つで、Rubyの生みの親のまつもとゆきひろさんが、最近あった面白いエピソードを混じえて“イノベーション”の質について語っていました(44分の動画)。ポイントとなる部分をまとめてみました。まつもとさんの話はもちろん、統計的裏付けだとか学問的裏付けがある議論というものではありませんし、ご人も楽しそうに話し、聴衆も楽しんでトークを聞くというゆるい感じのものでした。ただ、「イノベーションの質は捉えがたい」というメッセージや、「だからあれこれ考えずにコードを書こう、われわれはコードを書くことにアイデンティティを感じているのだから、それこそがハッピーになる道だ」というメッセージは、参加していたRubyistたちの胸に響くものがあったのではないかと思います。 以下、口語文体のまま、ポイントとなる前半のトークをまとめてみました。トーク後半

    「なんでRubyなんか作った!? 迷惑だ!」に対するMatzの答え:Rails Hub情報局:エンジニアライフ
  • 橋本商会 » ターミナルで使うtwitterクライアント作った

    1年以上前に作ってずっと使ってた奴を、少し直してrubygemにした。 くわしい使い方はhttp://shokai.github.com/twに書いた。 何か要望あればtwittergithubのissueかblogのコメントでください。 ※活用方法をTwのレシピに書きました インストール 特別なライブラリは使っていないのでMacならすぐインストールできるはず gem install tw tw --help 機能 すぐ使えるように名前が短い、インストール・セットアップが楽 表示がカラフル 複数のユーザやリストをマージして表示できる DM読み書き public timelineの検索 user stream、filter stream読める。なんかよく切断されるので自動再接続するようにしといた 複数アカウント使える UNIX pipeからもtweetできる 作った経緯 フルスクリーンのタ

    橋本商会 » ターミナルで使うtwitterクライアント作った
  • Ruby2.0はChromeブラウザでネイティブに動くようになりそう - ITジャーナリスト星暁雄の"情報論"ノート

    情報と技術は未来をどう変えるのか──IT、スマートデバイス、ロボット、電子工作、メディアのアーキテクチャ プログラミング言語Rubyの新バージョンであるRuby2.0は、Ruby誕生から20周年にあたる2013年2月24日リリースへ向けて開発が進められています(関連記事「ニコニコ超会議の「超エンジニアミーティング」 を全部取材してみた」)。 Ruby2.0のリリースマネージャ遠藤侑介さん(るびま0038号掲載のインタビュー)のBlog「まめめも」に、その最新の進捗を記録する「Ruby 2.0 リリース週記 (2012/05/14 - 20)」が掲載されました。 ここで大事なのは、8月に主要機能のフリーズが予定されていることです。遠藤さんのBlogでは「機能提案締め切りまであと約 3 ヶ月です」と記されています。 そして、目を引くのは、「今週のニュース」として紹介されている「Native C

    Ruby2.0はChromeブラウザでネイティブに動くようになりそう - ITジャーナリスト星暁雄の"情報論"ノート
  • Ruby2.0の新機能(かもしれないもの)(2) nested def as local function - Matzにっき(2010-06-16)

    << 2010/06/ 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 1. [Ruby] Ruby2.0の新機能(かもしれないもの)(1) argument delegation 16 1. [Ruby] Ruby2.0の新機能(かもしれないもの)(2) nested def as local function 17 1. [Ruby] Ruby2.0の新機能(かもしれないもの)(3) module operations 18 1. [Ruby] Ruby2.0の新機能(かもしれないもの)(4) keyword arguments 19 20 21 22 23 24 1. 上海 2. 買い物 3. 大容量USBメモリ 25 26 27 28 29 30 >> _ [Ruby] Ruby2.0の新機能(かもしれないもの)(2) nested def as local

    joan9
    joan9 2012/03/11
  • \PythonとRubyのdefって何が違ふんです?/ - None is None is None

    Pythonのdefは関数、Rubyのdefはメソッドを定義します。両者の違いはdefがネストすると現れます。 Pythonでは、ネストしたdefではローカル関数が定義されます。ローカル関数はその場で使われるだけで、外部には影響は及ぼしません(グローバル変数に代入したり、returnで返したりしなければ)。 $ python >>> class Spam: ... def ham(self): ... def egg(): ... print('egg', end='') ... print('egg', end='') ... egg() ... >>> s = Spam() >>> s.egg() AttributeError: 'Spam' object has no attribute 'egg' >>> s.ham() ham egg >>> s.egg() AttributeE

    \PythonとRubyのdefって何が違ふんです?/ - None is None is None
    joan9
    joan9 2012/03/11
    この仕様はpythonのほうが好きだな
  • 他の言語に慣れた人がRubyを使ったときにつまずきがちな9つのポイント - 西尾泰和のはてなダイアリー

    他の言語に慣れた人がPythonを使ったときにつまずきがちな9つのポイントの続編。ささださんも書いています see: だいありー 0は真, 空文字列も真 C言語などと違って、0は偽ではない。PythonJavaScript, PHPと違って空文字列も偽ではない。 >if 0 then print "true!\n" end true! > if "" then print "true!\n" end (irb):1: warning: string literal in condition true! 括弧がなくても0引数での関数呼び出しが起きる PythonJavaScriptでは式中に現れた関数名は関数を指す。しかしRubyでは0引数での呼び出しが行われる。 # Python >>> def foo(): print "foo!" ... >>> foo <function foo

    他の言語に慣れた人がRubyを使ったときにつまずきがちな9つのポイント - 西尾泰和のはてなダイアリー
    joan9
    joan9 2012/01/27
  • なぜRubyは許容可能なLISPなのか - masatoi’s blog

    LISPの真実を読んでたら最後に出てきたので、かなり古い記事だけれども、Eric Kidd氏のWhy Ruby is an acceptable LISPを訳してみました。まつもとさんによる反応もあり、そのエントリの中で原文はほぼ要約されています。 一年前、私はRubyに注目してはいたものの、それを無視することにした。RubyPythonほどポピュラーではないし、LISPほど強力というわけでもない。なのに何故気にかけなければならないというのか。 もちろん、これらの評価基準は考えなおすこともできる。もしRubyがLISPよりもポピュラーで、Pythonよりも強力だったらどうなるだろうか?*1 それはRubyを興味深いものにするに足るのではないか? この疑問に答える前に、LISPを強力たらしめているものは何なのかを定義しておくべきだろう。Paul GrahamはLISPの美徳について雄弁に語

    なぜRubyは許容可能なLISPなのか - masatoi’s blog
  • モナドという言葉を使うことなく、純粋関数型言語の入出力を解説する。Rubyで。 - &lt;s&gt;gnarl,&lt;/s&gt;技術メモ”’&lt;marquee&gt;&lt;textarea&gt;¥

    これはRuby Advent Calendarの21日目の記事です*1。20日目は@sasata299さんのHerokuって便利だし利用までたった3ステップですお!!でした。 はじめに 当は「Pure Rubyで動くかっこいい形態素解析エンジンができた!!!」みたいな記事を書く予定でしたが、目標のクオリティに達しなかったのでリリースは延期されました。 クリスマスごろにリリースされるといいですね。 さて、この記事では、Haskellのような純粋関数型言語がどのように副作用を伴う処理を実現しているかについて、Rubyによる実装を使って解説します。モナドという言葉が全く出てこないのでアレルギーのかたも安心ですね。 純粋関数とは 同じ引数を渡す限り、どのような順番で何度呼んでも同じ結果が返るような関数のことです。 何が問題なのか puts 'hello!' res1=gets puts 'hel

    モナドという言葉を使うことなく、純粋関数型言語の入出力を解説する。Rubyで。 - &lt;s&gt;gnarl,&lt;/s&gt;技術メモ”’&lt;marquee&gt;&lt;textarea&gt;¥
  • RubyKaigi2011「Rubyマスターへの道」 - BiwaSlide

    joan9
    joan9 2011/09/25