タグ

programmingとRubyに関するN_Tのブックマーク (51)

  • RubyとRailsの学習ガイド2019年版

    この記事は RubyそしてRailsをこれから勉強したい方に、どんな技術を勉強すればいいかと、それらの技術全体のガイドマップを図示します。そしてそれを学ぶための資料(書籍、Web記事ほか)を紹介していきます。この記事は、頭の中に技術全体の地図を描き、イメージしてもらうのが狙いです。 Railsアプリを作るときに必要になたくさんの技術について説明していきますが、当にたくさんの技術が出てきます。まだ学んでいない、分からない言葉が出てくると思いますが、全体を把握するために、ひとまずは「そういう技術があるのだな」くらいで捉えてもらえればと思います。将来、その言葉が出てきたときに「どこかで聞いたような?」と思えたら儲けものです。 勉強方法のお勧めは、1つの知識を徹底的にやるよりも、まずは全体を通して勉強し、そのあとで勉強したいところに戻って積み重ねて学んでいく方が、挫折しづらいのでお勧めです。 追

  • Ruby 2.6.0とより高速なcsv - 2018-12-25 - ククログ

    Rubyの標準添付ライブラリーのcsvをメンテナンスしている須藤です。 歴史 csvは名前の通りCSVを読み書きするための便利ライブラリーです。 もともとRuby体とは別に開発されていたのですが、Ruby 1.8.0のときにRuby体にバンドルするようになりました。dRubyやREXMLがRuby体にバンドルされたのも同じタイミングです。Ruby 1.8.0のときにバンドルするライブラリーをすごく増やしたのです。(その頃の様子がわかるURLをここに置いておきたかったけど見つけられなかった。。。) Rubyではcsvのようにrequireするだけで使えるライブラリーを「標準添付ライブラリー」と呼んでいます。Stringのようにrequireしなくても使えるライブラリーは。。。なんだろう。組み込みクラスかしら。 その後、Ruby 1.9.0のタイミングで実装をFasterCSVに置き換え

    Ruby 2.6.0とより高速なcsv - 2018-12-25 - ククログ
  • Rubyist Magazine - スはスペックのス 【第 1 回】 RSpec の概要と、RSpec on Rails (モデル編)

    『るびま』は、Ruby に関する技術記事はもちろんのこと、Rubyist へのインタビューやエッセイ、その他をお届けするウェブ雑誌です。 Rubyist Magazine について 『Rubyist Magazine』、略して『るびま』は、Rubyist の Rubyist による、Rubyist とそうでない人のためのウェブ雑誌です。 最新号 Rubyist Magazine 0062 号 バックナンバー Rubyist Magazine 0062 号 Kaigi on Rails 特集号 RubyKaigi Takeout 2020 特集号 Rubyist Magazine 0061 号 Rubyist Magazine 0060 号 RubyKaigi 2019 直前特集号 Rubyist Magazine 0059 号 Rubyist Magazine 0058 号 RubyKai

  • HashDoS脆弱性との戦い! Rubyコミッター・卜部昌平が明かすプログラム堅牢化のノウハウ - エンジニアHub|若手Webエンジニアのキャリアを考える!

    HashDoS脆弱性との戦い! Rubyコミッター・卜部昌平が明かすプログラム堅牢化のノウハウ 過去、HashDosの影響を受けたRuby。言語開発者はいかにしてこうした問題に対応してきたのでしょうか。コミッターである卜部氏の貴重な記録を公開します。 2011年の末頃、HashDoSという脆弱性が公表され、Rubyもこの影響を受けた。稿の筆者である卜部昌平(うらべ・しょうへい/@shyouhei/以下、卜部)は、報告当初からRuby側のチームメンバーとしてプログラム体の修正を担当した。以下はその記録である。言語開発者たちが普段どのようなことを考え、どういった技術を用いて開発やバグフィックスを行っているのか。その概要を知ってもらえれば幸いだ。 オブジェクト指向スクリプト言語 Ruby HashDoSの概要 なぜ約6年後の今、修正内容を公開するに至ったか? 前史:すでに内包されていたリスク

    HashDoS脆弱性との戦い! Rubyコミッター・卜部昌平が明かすプログラム堅牢化のノウハウ - エンジニアHub|若手Webエンジニアのキャリアを考える!
  • Rubyで学ぶRuby

    Rubyで始める、すこし気のプログラミング入門。「プログラミングってそもそもどういうこと?」からスタートして、最後には自分だけのRubyインタプリタをRubyで作ってみよう。Rubyを使ってゼロからプログラミングを学びながら、プログラムとは何か、プログラミング言語とは何かを味わうRuby入門の連載企画。 2017年01月18日 09時00分 プログラミング+ 第9回 インタプリタの完成、そしてブートストラップへ はじめてのプログラミングでRubyを学びながらRubyインタプリタを作っていく連載の最終回。 自分だけのRubyインタプリタを完成させていきましょう! 2016年12月21日 18時00分 プログラミング+ 第8回 関数を実装する(後編) 機能限定版のRubyインタプリタ(MinRubyインタプリタ)を作りながらRubyとプログラミングを学ぶ連載、今回は前回に引き続き「関数」の実

    Rubyで学ぶRuby
  • 書き捨てのRubyスクリプトをgemにするときの育て方の一例 - 2016-09-08 - ククログ

    Rubyでちょっとしたこと、例えばテキスト処理などをしたくてスクリプトを書くことはよくあります。そんなスクリプトは意外と再利用したくなるものです。しかし、作業用ディレクトリに適当なファイル名で保存していたりすると探し出すのは困難ですし、コマンドラインにワンライナーで書いたものだとそもそも残っていないこともあります1。別のPCでの再利用も、それらの保存方法では当然ながら不可能でしょう。 そこで、どこか整理された場所に保存しておいて再利用に備えたいのですが、保存先が問題になります2。そんなとき、私は次のような理由からgemRubyGems)にしてしまうことにしています。手元ですぐに実行できますし、別の環境へのインストールも簡単です。また、他のRubyプログラムへの組み込みもコピペせずに実現できます。もちろん他の人が使えるようになるというメリットもあるのですが、自分の用途に限っても長い目で見れ

    書き捨てのRubyスクリプトをgemにするときの育て方の一例 - 2016-09-08 - ククログ
  • 『Rubyで学ぶRuby』連載開始 - まめめも

    RubyRuby を作りながら Ruby を学ぼう!」というトンデモ連載企画、『Ruby で学ぶ Ruby』を ascii.jp で始めました。 ref: http://ascii.jp/elem/000/001/228/1228239/ 何を言ってるかわからないかもしれないので補足すると、「Ruby(言語)で Ruby(のインタプリタ)を作りながら Ruby(でのプログラミング)を学ぼう!」ということです。Ruby でのプログラミングを学ぶなら、Ruby インタプリタ以上の題材はありません(断言)。Ruby というプログラミング言語の質を、外側(ユーザ視点)と内側(処理系実装者視点)の両面で見ていきます。 対象読者は「Rubyを学びたいプログラミング初心者」です。Ruby 言語について最低限のことを伝えるところから始めるので、すでに Ruby を知っている人はダルく感じるかもし

    『Rubyで学ぶRuby』連載開始 - まめめも
  • Optcarrot: Ruby で書かれたファミコンエミュレータ - まめめも

    ウソみたいな当の話。Ruby でファミコンエミュレータを書いてみました。 気になる速度ですが、自分の環境では 20 fps ちょっと出ます。ファミコンは 60 fps なので、実速の 1/3 です。Ruby3x3 (Ruby 3 は Ruby 2 の 3 倍速い)という matz の宣言が実現すれば、実速が達成されることになりますね! 試してみたい人はこんなふうに実行してください。 $ gem install ffi $ git clone http://github.com/mame/optcarrot.git $ cd optcarrot $ bin/optcarrot examples/Lan_Master.nesSDL2 か SFML が適切にインストールされている必要があります。Debian/Ubuntu なら apt-get install libsdl2-dev で。 Ru

    Optcarrot: Ruby で書かれたファミコンエミュレータ - まめめも
  • L'eclat des jours(2015-12-21)

    _ APIデザインケーススタディ読了 RubyKaigiの前日に技評の方からダウンロード版のダウンロード権をいただいたので(ありがとうございます)、最初半分ほど一気読みした後しばらく寝かせて今読了した。 書はRubyが持つAPIについて(田中さんが修正したり追加したりしたものを中心に、というか全部なのかな?)なぜそうしたのか、そのためにはどういう制約なり考慮があったのか、その結果どうだったのか、といった事例集だ。パターン集のようには抽象化されていなくて、題名通りケーススタディなので具体的だ。 おもしろかったし、教訓にあふれている。 以下の人は読む価値がとてもある。 ・Rubyプログラマ (ここで紹介されているAPIのうち、おそらく半分は使わないかも知れない。しかし田中さんのAPIデザインに対する影響力を考えれば、コアAPIや添付ライブラリのAPIを使う場合に、持っていると便利なお約束とい

    N_T
    N_T 2016/01/06
    APIデザインケーススタディ
  • L'eclat des jours(2015-10-07)

    _ メタプログラミングRuby 第2版 オライリーからメタプログラミングRuby 第2版をいただいた。どうもありがとうございます。 書の初版はアスキーから出ていたが、ドワンゴへの移動やらなにやらの前の微妙な時期に第2版が出たのでオライリーに翻訳権が移動したらしい。出版社は変わったが、訳者は同じく角さん(というかkdmsnr)。 ざっと見たが、初版とえらく雰囲気が異なる。 章立てはほぼ同じなのだが、初版の特徴だった、「あなた」とビル(先輩というかメンターというか)が、課題に出会い、メタプログラミングでうまく処理するというユースケースドリブンな筋立てというか、仕事ハッキングライフスケッチみたいな雰囲気は薄まっているように思う。どうも物理的に行間が詰まっているせいで、読み物っぽさが薄まったように感じるみたいだ。 その分、よりプログラミングのらしくなっている(行間が詰まった分だけの厚みも減っ

    N_T
    N_T 2015/10/15
    メタプログラミングRuby 第2版
  • 「若手エンジニア/初心者のためのRuby 2.1入門」関連の最新 ニュース・レビュー・解説 記事 まとめ - ITmedia Keywords

    オープンソースのオブジェクト指向プログラミング言語「Ruby」の文法を一から学ぶための入門連載。最新版の2.1に対応しています。 若手エンジニア/初心者のためのRuby 2.1入門(13): Rubyで逆ポーランド変換機を作りgem作成&コマンドの使い方 オープンソースのオブジェクト指向プログラミング言語「Ruby」の文法を一から学ぶための入門連載。最新版の2.1に対応しています。連載最終回の今回は、小規模なgemの作成にチャレンジしてみましょう。gem作成の一連の流れを体験するために、逆ポーランド記法による計算機アプリケーションを作ってみましょう。(2015/2/6) 若手エンジニア/初心者のためのRuby 2.1入門(12): 難しいが強力! Rubyのメタプログラミング、self、特異クラス/メソッド、オープンクラスとモンキーパッチ オープンソースのオブジェクト指向プログラミング言語

  • 正規表現によるバリデーションでは ^ と $ ではなく \A と \z を使おう

    正規表現によるバリデーション等で、完全一致を示す目的で ^ と $ を用いる方法が一般的ですが、正しくは \A と \z を用いる必要があります。Rubyの場合 ^ と $ を使って完全一致のバリデーションを行うと脆弱性が入りやすいワナとなります。PerlPHPの場合は、Ruby程ではありませんが不具合が生じるので \A と \z を使うようにしましょう。 はじめに 大垣さんのブログエントリ「PHPer向け、Ruby/Railsの落とし穴」には、Rubyの落とし穴として、完全一致検索の指定として、正規表現の ^ と $ を指定する例が、Ruby on Rails Security Guideからの引用として紹介されています。以下の正規表現は、XSS対策として、httpスキームあるいはhttpsスキームのURLのみを許可する正規表現のつもりです。 /^https?:\/\/[^\n]+$/

  • 対話型のコンソールアプリをpryの上に構築したらだいぶ楽できた - ただのにっき(2013-11-28)

    ■ 対話型のコンソールアプリをpryの上に構築したらだいぶ楽できた ゆえあってちょっとした対話型のアプリ、それもWebじゃなくてLinuxコンソールで動くものを作る必要が出てきた。入力をパースしたりするのも面倒だしなーと思い、ためしにpry上のDSLみたいな感じで作ってみたらなかなかいいものが簡単にできた。うん、これは楽でいいなぁ。今後も使おう。 こんな感じのsample.rbを書いて(2013-12-03追記: pryの仕様に合わせて一部リライト): require 'pry' # business logic module Sample def self.hello(name) "Hello #{name}!" end end # helloというコマンドを定義する Pry.commands.block_command 'hello' do |*args| args.map{|name

  • Rubyで変数宣言っぽいものをした方が読みやすくなるとき - 2013-11-21 - ククログ

    RubyはCのように変数宣言のための特別な構文はなく、変数に代入する式を書くとそれ以降その変数を使えるようになります。 1 + 1 # <- ここでは「message」変数を使えない message = "Hello" # <- ここから「message」変数を使える puts(message) # <- ここでは「message」変数を使える

    Rubyで変数宣言っぽいものをした方が読みやすくなるとき - 2013-11-21 - ククログ
  • パーフェクトRuby - 2013-08-19 - ククログ

    2013年8月にRuby 2.0.0に対応したRubyの解説書が技術評論社から出版されました。 https://amazon.co.jp/dp/9784774158792 このの特徴はなんといっても網羅性でしょう。600ページを超える紙面でRubyの基的な機能から、2.0.0で新しく導入された機能、さらによく使われる標準添付のライプラリーとgemの解説をしています。長いことRubyを使っていますが、以下の機能はこのを読むまで知りませんでした1。 #keep_if Enumerator#feed Tread#fork MethodTransplaning Method#parameters Module#method_undefind 機能の説明にはサンプルコードと実行結果がついています2。文章だけの説明でピンとこない場合でも、コードで理解できます。このの一番優れているところはここで

    パーフェクトRuby - 2013-08-19 - ククログ
  • Quine リレー - まめめも

    ref: https://github.com/mame/quine-relay/ 以下は、自分自身を出力する REXX プログラムを出力する Python プログラムを出力する R プログラムを出力する (...略...) を出力する Scala プログラムを出力する Ruby プログラムです。合計 50 言語を使います。 eval$s=%q(eval(%w(B=92.chr;N=10.chr;n=0;e=->(s){s.gsub(/[#{B+B+N}"]/){B+(N==$&??n:$&)}};E=->(s){'("'+e[s]+'")'} ;d=->(s,t=?"){s.gsub(t){t+t}};D=->(s,t=?@){s.gsub(B){t}};Q=->(s,t=?$){s.gsub(t){B+$&}};puts(eval(%q("objectXQRX extendsXApp{

    Quine リレー - まめめも
  • TRICK2013 Results

    The winning entry titled "Most competitive" leverages complex Ruby tricks to obfuscate a program that evaluates itself. It uses techniques like dynamically generating code strings, manipulating character encodings, and exploiting edge cases in Ruby's parsing and evaluation rules. The goal is to demonstrate both the robustness of Ruby interpreters in running such esoteric code, as well as uncover s

    TRICK2013 Results
  • Route 477(2013-06-01)

    ■ [ruby][event] TRICK2013 結果発表、最もクレイジーで美しいRubyプログラムはこれだ! というわけでTRICK2013の結果発表が、昨日のRubyKaigi 2013最終日にて行われました。いいコンテストでしたね。 ustream録画:http://www.ustream.tv/recorded/33618033 結果発表スライド:http://www.slideshare.net/mametter/trick2013-results 入賞作品(github):https://github.com/tric/trick2013 優勝はkinabaさんの「すべての文字を1回ずつ使って、すべての文字を1回ずつ表示するプログラム」でした。おめでとうございます。 !@THEqQUICKbBROWNfFXjJMPSvVLAZYDGgkyz&amp;[%r{\"}mosx,4

    Route 477(2013-06-01)
  • layer8.sh

    This domain may be for sale!

    N_T
    N_T 2013/06/03
    「るりまってかわいいですよね」
  • なるほどUnixプロセス ― Rubyで学ぶUnixの基礎

    なるほどUnixプロセス ― Rubyで学ぶUnixの基礎 Jesse Storimer, 島田浩二(翻訳), 角谷信太郎(翻訳) 達人出版会 3,520円 (3,200円+税) 『Working with Unix Processes』待望の完訳。並列処理やデーモン、プロセス生成、そしてシグナルといったUnixの基礎であるプロセスについてRubyで解説する、「今どきの」開発者に向けた新しいUnixプログラミングの手引きです。 ※書の公式ハッシュタグは#naruhounix になります。 関連サイト原著者による公式ページと訳者らによるサポートページがあります。 Working With Unix Processes - Learn the Fundamentals of Unix Programming in RubyなるほどUnixプロセスサポートページ 日語版刊行によせてRuby

    なるほどUnixプロセス ― Rubyで学ぶUnixの基礎