タグ

rubyに関するrryuのブックマーク (82)

  • ファイルオープンの罠 - Journal InTime(2017-12-15)

    _ ファイルオープンの罠 僕が書いたNet::FTPのコードに脆弱性報告があり、修正版がリリースされた。関係者のみなさん、ありがとうございました。 CVE-2017-17405: Net::FTP におけるコマンドインジェクションの脆弱性について 問題があったのは以下のようなコードだった。 def getbinaryfile(remotefile, localfile = File.basename(remotefile), blocksize = DEFAULT_BLOCKSIZE, &block) # :yield: data f = nil result = nil if localfile if @resume rest_offset = File.size?(localfile) f = open(localfile, "a") else rest_offset = nil f

    rryu
    rryu 2017/12/18
    Kernel#openはあるあるネタだけど、File.readもなのか…
  • Rubyのtrueとfalseの話 - Qiita

    この記事は、技術同人誌としてまとめるはずだった原稿をほぼそのまま転載しています。諸事情により向こうかなり長い間同人誌即売会に売り手として参加することが難しくなったためです。 長いですが、お楽しみいただければ幸いです。 まえがき このは、Rubyコミッタである卜部昌平に、そのである私、卜部一恵がRubyのtrueとfalseについて突っ込んで聞いてみた話です。文は両者の対話形式で進んでいきます。 私は昌平と同じ大学同じ研究室に所属していたのでプログラミングについての基礎は一応ありますが、エンジニアとして職を得たことはありません。つまり、プログラミング初級者です。このはそのくらいのレベル感のだと思います。 私自身が初級者なりにRubyを使っていて、if文が思った通りに動かない、そんなときに抱いた疑問からこのが生まれました。 同じような疑問を抱いている方の一助になれば幸いです。 は

    Rubyのtrueとfalseの話 - Qiita
    rryu
    rryu 2017/09/27
    Rubyは暗黙の型変換をしない言語だけど、ifだけは色々忖度してくれるのでややこしくなる。
  • Rubyの型定義ファイルを中央repoにしないほうがいい理由 - Islands in the byte stream

    あるいは私がDefinitelyTyped (DT) が失敗だと思っている理由、です。 DefinitelyTypedは明確に失敗だと思っているので、あれを避けるのはそんなに難しくないかなと。まず (1) anyを認めて「型がなくてもいいや」という気持ちでいく (2) 中央repoは作らずそれぞれのgemに対して型定義パッチをおくりつける でなんとかなるっしょ。— FUJI Goro (@__gfx__) September 19, 2017 あたりが話の発端です。 DTについては以前いまいちイケてない理由を書いたことがあります。 TypeScriptのDefinitelyTypedは「ダメでもともと、うまく使えればラッキー」くらいの距離感がよい - Islands in the byte stream この時の話を一言でまとめると「ライブラリの作者ではない第三者がメンテしていることが多く

    Rubyの型定義ファイルを中央repoにしないほうがいい理由 - Islands in the byte stream
    rryu
    rryu 2017/09/20
    DefinitelyTypedがダメなのは@typesが出てきたので分かるが、@typesはあまり話題にならないのが気になるところ。
  • RubyGems の複数の脆弱性について

    Posted by usa on 29 Aug 2017 Ruby の標準添付ライブラリである RubyGems に、複数の脆弱性が発見されました。 RubyGems の公式ブログにて報告されています。 詳細 以下の脆弱性が報告されています。 a DNS request hijacking vulnerability. (CVE-2017-0902) an ANSI escape sequence vulnerability. (CVE-2017-0899) a DoS vulnerability in the query command. (CVE-2017-0900) a vulnerability in the gem installer that allowed a malicious gem to overwrite arbitrary files. (CVE-2017-0901

    rryu
    rryu 2017/08/31
    DNSのMITM以外は悪意あるgemパッケージに対するものなんだな……
  • ブロック付きメソッドによる安全なリソース管理を破壊する - Qiita

    Deleted articles cannot be recovered. Draft of this article would be also deleted. Are you sure you want to delete this article?

    ブロック付きメソッドによる安全なリソース管理を破壊する - Qiita
    rryu
    rryu 2017/06/02
    enum_forで外部イテレータ化すればブロックの引数が外に出てくるのでリークできるのか。
  • 最近のruby-core (2017年1月) - Money Forward Developers Blog

    こんにちは。卜部です。最近のPython-devが始まりましたね。すごい。 こちらの連載は先月はお休みしてしまったのですが、引き続き頑張ります。 ruby-coreというRuby体の開発の議論がされているメーリングリストで、最近興味深かったトピックを紹介していきます。 最近のruby-core (2016年11月) 最近のruby-core (2016年10月) 最近のruby-core (2016年9月) 最近のruby-core (2016年7月) 最近のruby-core (2016年6月) 最近のruby-core (2016年4月) 最近のruby-core (2016年3月) 最近のruby-core (2016年2月) [#12852] URI.parse can't handle non-ascii URIs Railsがよく ?utf8=✓ とかいうクエリをつけてきます

    最近のruby-core (2017年1月) - Money Forward Developers Blog
    rryu
    rryu 2017/02/01
    19年物のバグもすごいが、19年間のコミットログというのもすごいものがある。
  • mruby + ngx_mrubyでアプリケーションを実装するという選択肢 - LIFULL Creators Blog

    はじめまして、技術基盤部の相原(kaihar4)です! 今回は、アプリケーションのクラウドサービスへの移行の一環で、 Amazon S3から取得した画像URLを含むファイルを元に、そのURLの外部画像を取得して返す機能 をmrubyで書き直してAWSに移行した話をしていきたいと思います。 この機能は元々モノリシックなアプリケーションの一機能として動いていたもので、これを切り出してAWSに移行するというのが今回私に与えられたミッションでした。 このアプリケーションは歴史が長く、その間ほとんどメンテナンスされていませんでした。 ディストリビューションは古くPHPのバージョンも4系、したがってそのまま持っていくという選択肢はなく、AWS上に新規にインスタンスを構築することになります。 弊社にはAPI部分をPHPからRubyに移行する方針があるということもあり、Amazon Linux上にRuby

    mruby + ngx_mrubyでアプリケーションを実装するという選択肢 - LIFULL Creators Blog
    rryu
    rryu 2016/08/12
    おもしろいけど複雑なものになるとmrbgemsとの戦いになりそうでちょっとこわい。
  • Rails5 の落とし穴

    Rails 5 がリリースされましたね。いつものことですが、Rails のリリースノートは『新機能最高!!!』って見せながらサラッと落とし穴を用意してくるあたり、実に渋いなと思います。当にやめて欲しい。 大体 Upgrading from Rails 4.2 to Rails 5.0 な内容ではあるので、不正確な情報を頼りにするよりはできれば家の Rails Guide を当たるほうがオススメです。 ということで、発見した落とし穴を随時更新していこうかと思います。なお、移行元は Rails 4 を想定していますので、 Rails (バージョンを問わない)特有の落とし穴については各自やっていく気持ちで対処して下さい。 belongs_to に optional オプションが追加されました (ついでに required オプションが非推奨になりました) 一発目から戦争勃発という感じですが、

    rryu
    rryu 2016/07/04
    デフォルトの挙動を正反対にする勇気……
  • Rubyが今のPythonの地位にいない理由

    _ Rubyが今のPythonの地位にいない理由 歴史のことなんぞなんも知らんけど、「技術的には今のPythonの地位はRubyでもよかったのに、そうならなかった」のが何故か、その理由を書いてみよう。僕はRuby歴史なんて知らないし、以下の文章は全部、まるで見てきたかのように書いてますが、適当に書いたくせに何故か断言口調になっている怪文書の類いです。 https://twitter.com/mametter/status/741950239662170112 まめさんの書いた理由リストはどれも関係ない。いやカスってるけど。難しいというのも関係ない。 僕がRubyを知ったころ…最初に書いた通りRuby歴史なんて知らないので、別に早くもないわけだけど…Rubyというのは全く使われていない言語だった。どっかの好き者がPerlの替わりに単純な処理に使って、「ウフ、美しくかけた、グフッ」とかつぶ

    rryu
    rryu 2016/06/17
    Rails以前のRubyは言語を作る方の強い人ばかりで使う方の強い人がいなくて何をやるにも中途半端な状態だったイメージがある。
  • ビジュアルプログラミング環境スモウルビーの紹介 - NaCl Blog

    最近、プログラミング教育が大きな注目を集めています。 日でも小学校でのプログラミング教育必修化が検討されており、Ruby界隈でも『Hello Ruby』の翻訳である『ルビィのぼうけん』が今年5月に出版されるといった話題もありますね。 プログラミング教育の盛り上がりは、松江でも例外ではありません。 筆者は、NPO法人Rubyプログラミング少年団の活動を通じて、小中学生にプログラミングを教えています。 そこでは、スモウルビー(Smalruby)というソフトウェアを使っています。 この記事では、いちユーザの立場からスモウルビーを紹介します。 想定読者は、ある程度プログラミングの経験があって、小中学生にプログラミングを教えたいと思っている方々です。 また、スモウルビーでゲームを作る際のノウハウはあまりウェブ上に無いため、それらについてもいくつか紹介したいと思います。 記事では、それぞれ下記の

    rryu
    rryu 2016/05/19
    なんで相撲? と思ったらsmallの方っぽい。
  • Rubyで2項演算子が単項演算子に化けて悪さする話 - モンモンブログ

    DateTime.now + 1.hour と DateTime.now +1.hour は異なる値を返します。 何を言ってるのかわからねーと思うがこの実行結果を見てくれ。こいつをどう思う? [10] pry(main)> DateTime.now + 1.hour Fri, 29 Jan 2016 11:38:52 +0900 # こっちだと 11:38 [11] pry(main)> DateTime.now +1.hour Fri, 29 Jan 2016 10:38:52 +0900 # こうすると 10:38。あれれ? すごく・・・バグりそうです・・・/// なんでか DateTime.now + 1.hour が DateTime.now() + 1.hour と解釈されるのに対し、 DateTime.now +1.hour は DateTime.now(+1.hour) と解

    Rubyで2項演算子が単項演算子に化けて悪さする話 - モンモンブログ
    rryu
    rryu 2016/03/01
    単項+-の解釈ルールとデフォルト引数のコンビネーション技とは。
  • Ruby 2.0.0 および Ruby 2.1 の今後について

    Posted by usa on 24 Feb 2016 Ruby 2.0.0 および Ruby 2.1 の今後の公式サポートについてお知らせします。 Ruby 2.0.0 について かねてからの予告通り、日(2016年2月24日)をもって、Ruby 2.0.0 の公式サポートは終了となります。 今後、より新しいバージョンの Ruby で行われたバグ修正やセキュリティ修正は、2.0.0 にはバックポートされず、また、2.0.0 の新しいパッチリリースも行われません。 現在まだ Ruby 2.0.0 を使用しているユーザーは、速やかにより新しいバージョン(2.3 等)に移行するよう強く推奨します。 Ruby インタプリタ開発者、あるいは企業内で Ruby インタプリタの保守を担当されている方で、今後も Ruby 2.0.0 の公式リリースが継続されないと困る、という適切な理由がある方は、r

    rryu
    rryu 2016/02/24
    Ubuntuの公式リポジトリには2.0までしかないのに終わってしまうのか……
  • RubyでBoolClassではなくTrueClass/FalseClassな理由を理解する - Qiita

    @mattn_jp BoolClassを入れるとkind_of?でチェックしたくなってduck typingを阻害するから。 — Yukihiro Matsumoto (@yukihiro_matz) 2015, 12月 4 30回くらい読みなおしたけど何のことを言っているのか分からなかったので、周りのRubyistに質問して理解を深めたメモ。 まずDuck Typingというのは、Wikipediaによると ダック・タイピング(duck typing)とは、Smalltalk、PythonRubyなどのいくつかの動的型付けオブジェクト指向プログラミング言語に特徴的な型付けの作法のことである。それらの言語ではオブジェクト(変数の値)に何ができるかはオブジェクトそのものが決定する。つまり、オブジェクトがあるインタフェースのすべてのメソッドを持っているならば、たとえそのクラスがそのインタフェ

    RubyでBoolClassではなくTrueClass/FalseClassな理由を理解する - Qiita
    rryu
    rryu 2015/12/07
    まあ、真と偽とで共通な処理なんてないし、true/false以外に真偽値として扱えるものがあるから、あっても邪魔なだけなのか。
  • 新型Ruby開発へ 設計者表明、IT高度化・複雑化に対応 - 日本経済新聞

    松江発のプログラミング言語「Ruby(ルビー)」を開発した、まつもとゆきひろ氏が新しいバージョンとなる「ルビー3.0」の開発に着手した。12日に松江市で開幕した「Rubyワールドカンファレンス」の基調講演で、IT(情報技術)環境の高度化・複雑化にルビーを対応させる実験を進めていると述べた。1993年に開発を始めたルビーは、設計仕様を公開する「オープンソース」として多数の技術者が改良に参加してい

    新型Ruby開発へ 設計者表明、IT高度化・複雑化に対応 - 日本経済新聞
    rryu
    rryu 2015/11/13
    次バージョンを「新型」というとすごいもの作ってる感が出るので積極的に使っていきたい。
  • (翻訳) Ruby 2.2 のシンボル GC - FIVETEESIXONE

    Ruby 2.2 の新機能にシンボル GC というものがあります。 正直、「え、シンボルって GC されないから速いんじゃないの?なのにシンボル GC で Rails が速くなるとか話聞くけど、いったいどういうことなの?」という感じでサッパリ理解できてなかったのですが、その辺りの疑問に対してまとめられている記事がありました。 Symbol GC in Ruby 2.2 とても分かりやすく素晴らしい記事だと感じたので、許可をもらって以下に日語訳を公開します。 Symbol GC in Ruby 2.2 シンボル GC ってなに?それって気にしなくちゃいけないことなの? リリースされたばかりの Ruby 2.2 の大きな新機能として「インクリメンタル GC」が挙げられますが、もう1つの注目すべき新機能が、この「シンボル GC」 です。 もしあなたがこれまで Ruby の世界で過ごしてきたのな

    (翻訳) Ruby 2.2 のシンボル GC - FIVETEESIXONE
    rryu
    rryu 2015/01/21
    死なないシンボルと死するシンボル。
  • あの娘(萩本欽一さん(73))ぼくがTDDでオールグリーン決めたらどんな顔するだろう - Qiita

    まずは↓の動画をご覧いただこう。 この記事を読み終える頃、諸君の開発環境はこうなる。 全日仮装大賞/ピンポン(YouTube) では、ドンといってみよう! すみません、何をおっしゃっているのやらサッパリです ええっ! ウソだろ! 普通、わかるよね。 わかってくれよ! (壁ドン!) チッ、壁、殴っちまった...。 仕方ないなぁ。じゃあ、ちょっとさ。テスト実行してみてよ。そうそう、そのRubyMineで。 そう。これこれ! わかったよね。 では、ドンといってみよう! ごめんなさい、当に、一体何のことやら... えっ! マジで! なんでだよ! わかってくれよ! 俺の気持ち! (壁ドンッ!) しょうがないなぁ。 じゃ、今度はならべて見てみようか。そうそう、こんな風にね。 そうそう! そういうこと。 なるほど 大将、ようやくわかりました! そうか、ようやく気づいてくれたんだね、僕の気持ちに。嬉し

    あの娘(萩本欽一さん(73))ぼくがTDDでオールグリーン決めたらどんな顔するだろう - Qiita
    rryu
    rryu 2014/12/23
    欽ちゃん駆動開発手法(KDD)w
  • 「文字列」について - 2014-11-07 - はてなるせだいあり

    序 「文字列を文字の列とみなす単純化」について議論がありますが、前提が抜け落ちてるように思うので書くことにします。 そもそもこの話はどのような文脈の上にあるかというと、テキスト処理 (wikipedia:en:Text_processing) の文脈になります。ここでいう「テキスト処理」とは plain text (wikipedia:プレーンテキスト) の検索・加工のことで、ここでは特に UNIX Text Processing の系譜が念頭に置かれています。つまり、複雑な装飾を含むリッチテキストではなく、処理の対象を ASCII 文字列といくつかの制御文字へと抽象化することで、正規表現のような強力な道具を用いた処理を可能とした世界です。UNIX でのお話ですから、ここでの具体的な処理の単位は char であり、全体としては char[] になります。この char の中身は上で述べたと

    「文字列」について - 2014-11-07 - はてなるせだいあり
    rryu
    rryu 2014/11/10
    Rubyはワイド文字をやめたというよりは内部エンコーディング方式を避けた感じだと思う。引き換えにバイト列が扱いづらくなった気が。
  • Opal: Ruby to Javascript Compiler

    Opal Ruby to Javascript Compiler It is source-to-source, making it fast as a runtime. Opal includes a compiler (which can be run in any browser), a corelib and runtime implementation. The corelib/runtime is also very small. Opal Documentation opal.min.js opal-parser.min.js Use the CDN Opal is hosted on GitHub . You can join the community by chatting on Gitter at opal/opal or on Freenode IRC (chann

    Opal: Ruby to Javascript Compiler
    rryu
    rryu 2014/06/27
    RubyからJSへのコンパイラは既にあったとは…
  • パーフェクトなCRubyを目指して - 1行のバグ修正に潜む苦労 - - I am Cruby!

    この記事はパーフェクトRuby Advent Calendar 2013 - Adventar の9日目です。 前の日のエントリーはパーフェクトRuby Advent Calendar 2013(8日目) Let's Sinatra Life - たちブログです。 まだ参加できますので、みなさまもぜひ。 パーフェクトRuby Advent Calendar 2013 - Adventar パーフェクトRubyRubyの仕様に大変詳しい同僚への献をインターセプトして読ませていただきました。 さまざまな機能をまとめたとてもよいだと思います。 著者のみなさまの苦労が偲ばれました。パーフェクトRuby (PERFECT SERIES 6)作者: Rubyサポーターズ,すがわらまさのり,寺田玄太郎,三村益隆,近藤宇智朗,橋立友宏,関口亮一出版社/メーカー: 技術評論社発売日: 2013/08/1

    パーフェクトなCRubyを目指して - 1行のバグ修正に潜む苦労 - - I am Cruby!
    rryu
    rryu 2013/12/10
    マークビットを消す怪異とは。それの存在の可能性にどの時点で観念したんだろう。
  • へろくしーの挫折

    The document discusses the evolution of web development technologies over time. It describes how early meetups in 2006 focused on Ruby on Rails. It then covers new technologies like CoffeeScript, Sass, and asset pipelines that emerged in Rails 3.0 and 3.1 to improve JavaScript, CSS, and asset compilation. Key benefits of these new tools include improved developer productivity and better applicatio

    へろくしーの挫折
    rryu
    rryu 2013/11/29
    まさかのオチw