タグ

rubyとプログラミングに関するiwwのブックマーク (16)

  • PHPとPythonとRubyの連想配列のデータ構造が同時期に同じ方針で性能改善されてた話 - hnwの日記

    PHPPythonRubyの連想配列のデータ構造がそれぞれ4〜5年ほど前に見直され、ベンチマークテストによっては倍以上速くなったということがありました。具体的には以下のバージョンで実装の大変更がありました。 PHP 7.0.0 HashTable高速化 (2015/11) Python 3.6.0 dictobject高速化 (2016/12) Ruby 2.4.0 st_table高速化 (2016/12) これらのデータ構造はユーザーの利用する連想配列だけでなく言語のコアでも利用されているので、言語全体の性能改善に貢献しています1。 スクリプト言語3つが同時期に同じデータ構造の改善に取り組んだだけでも面白い現象ですが、さらに面白いことに各実装の方針は非常に似ています。独立に改善に取り組んだのに同じ結論に至ったとすれば興味深い偶然と言えるでしょう2。 稿では3言語の連想配列の従来実

    PHPとPythonとRubyの連想配列のデータ構造が同時期に同じ方針で性能改善されてた話 - hnwの日記
  • Rubyでif文やwhile文とか言っている入門は非推奨 - Qiita

    今日は言葉狩りを行いたいと思います。 Rubyではifもwhileも式である 生粋のRubyistである皆さんにとっては当たり前のことではありますが、Rubyではifもwhileも式(expression)です。決して文(statement)ではありません。これはCなど他のプログラミング言語にはないRubyの特徴の一つであり1、この違いは小さいようで大きいです。初心者のうちから、この違いを意識しておく必要があります。 プログラミング初心者にとって式と文の違いなんてどうでもいいのではという暴論もあるかも知れませんが、初心者だからこそ、式と文を意識させるべきです。式と文の違いがわからなければ、プログラミングの構造を理解することは永遠に来ないと思われるからです。 if文、while文という表現はおかしい ifもwhileも式ですから、if式、while式という表現はあっても、if文、while文

    Rubyでif文やwhile文とか言っている入門は非推奨 - Qiita
    iww
    iww 2017/07/03
    逆に言えば if文は無いってことか。 文も式も選べる言語と、式しか選べない言語。
  • Rubyの内部文字コードはUTF-8ではない...だと...?!|TechRacho by BPS株式会社

    こんにちは、hachi8833です。 少し前に、babaさんから「Rubyの内部文字コードはUTF-8じゃないよ」とツッコミがありました。 (追記: 上は会話の途中から切り取りましたのでご了承ください) いきなりの展開にくらくらきましたが、babaさんはさらにたたみかけます。 こうしたことはとっくにご存じの方も多いと思いますが、「Rubyといえば2.0以来UTF-8完全対応なんじゃないの」と勝手に思い込んでた私は脳に掌底をらったような思いです。ああ、でもこういうことがあるから面白い。 ⚓ プログラミング言語と内部文字コードの関係 まず最初に押さえておきたい点です。プログラミング言語で文字コードに関連する部分は、「文字列」「正規表現」「入出力」「コード中の文字リテラル(""の中など)」「コード中の文字リテラル以外の要素(変数名など)」「ファイル名」などが中心になります。そして文字列に関連し

    Rubyの内部文字コードはUTF-8ではない...だと...?!|TechRacho by BPS株式会社
    iww
    iww 2016/10/14
    脳に掌底くらうとこんなんなるのか・・・
  • Rubyでrbファイルをrequireするときはドットを打つと良さそう - アインシュタインの電話番号

    記事タイトルがヘタなので、何言ってるのか伝わらなさそうだけど…。最近、Ruby 1.8.7で作ったWebアプリをRuby 1.9.2に移行させていて、その過程でつまずいて知ったことについて。Ruby 1.9.2からは、ロードパスにカレントディレクトリが含まれなくなったので、それによって起こるエラーを回避するための方法として、requireするパスにカレントディレクトリを示すドットを打つと良さそうという話。 実例 以下は説明用に簡略化した実例。まず、hoge.rbがあるとする。中身はこんな感じ。 puts 'hoge!' 同じディレクトリにapp.rbがあるとする。中身はこんな感じ。 require 'hoge.rb' app.rbを実行すると、Ruby 1.8.7ではこう。期待通り。 $ ruby app.rb hoge! けど、Ruby 1.9.2ではロードパスにカレントディレクトリが含

    Rubyでrbファイルをrequireするときはドットを打つと良さそう - アインシュタインの電話番号
  • 新しいRuby向けプロットライブラリNyaplot - ほげほげにゃ

    はじめに Google Summer of Code 2014にSciRubyの学生として参加していました。 3か月の期間が無事終了し、ちゃんとした成果物ができたので記事にします。 Nyaplotについて、コードや詳しい使い方はこちらをご覧ください: domitry/nyaplot · GitHub domitry/Nyaplotjs · GitHub あーなんか余裕なかったなあとかGSoCの感想みたいなのはまた落ち着いてから書こうかと思います。 概要 IRuby notebook上で動作する、plotのためのgem。 すごいところ インタラクティブな/インタラクティブにplotができる。 IRuby notebook上で対話的にプロットを作ることができます。また標準で用意される様々なモジュールがユーザーの対話的な操作を支援します。 作ったプロットはSVGやWebGLを使いブラウザ上に表示

  • Rubyにはウンザリ!動的型付け、副作用、およびオブジェクト指向プログラミング全般からの考察 | POSTD

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

    Rubyにはウンザリ!動的型付け、副作用、およびオブジェクト指向プログラミング全般からの考察 | POSTD
  • Rubyで知らなかったメソッドとかちょっとだけ - 惰眠と論理と指揮棒と

    2014-08-13 Rubyで知らなかったメソッドとかちょっとだけ 配列 今までこう書いてた (1..20).to_a こう書ける事を知った [*1..20] 添字 今までこうしてた 10.times do |idx| p "#{idx+1} ループ目" end こう書いたら素敵だった 10.times.with_index(1) do |idx| p "#{idx} ループ目" end if 数字 ずっともっといい書き方があると思ってたけどこう書いてた i = 10 p "hoge" if i >= 5 && i <= 15 やっぱりあった i = 10 p "hoge" if i.between?(5, 15) first, last めんどくさいなぁと思って書いてた arr = [*1..50] 5.times.map{ |idx| arr[idx] } 衝撃が走った arr =

    iww
    iww 2014/08/18
    Rubyってperl並みかそれ以上にキモイ
  • 2. Exploring MRuby

    2. MRuby 探索 2012-05-18 (鈴) 1. はじめに 2. 構築 3. 構築過程再訪 4. 中間言語コード 5. おわりに 1 はじめに 章では組込み用 Ruby 処理系 mruby の作りと使い方を探索する。 執筆時現在,mruby はまだ正式にリリースされておらず, https://github.com/mruby/mruby から $ git clone https://github.com/mruby/mruby.git として最新の開発版を入手できる。 git [git-scm.com] をインストールしていない, あるいは通信経路・プロトコルの制限等により git が使えない環境でも同ページの Downloads リンクから HTTPS 経由で tar.gz ファイルをダウンロードできる。 現在,最新版の tar.gz ファイルの URL はリビジョンにかかわ

  • 軽量Ruby – mrubyとRubyの違い

    MobiRubyで書いた”さめがめ” 去年の春からずっとコツコツと作っているmrubyでiOSアプリが書けるMobiRubyが久々に動く様になったので、1年近くmrubyを触ってきて気になった所を少し書いてみます。 以下、mrubyと区別しやすくするために、普段みなさんがお使いのRubyをCRubyと書いています。 mrubyって? mrubyはMatzが去年発表した省メモリ版のRuby実装です。CRubyの機能を全て実装している訳ではなく、JIS/ISOの規格をベースに設計・実装されたものです。JIS/ISOの規格書は有料なのですが、最終ドラフトがIPAのサイトから確認できます。 mrubyの経緯や概要は、日経ITProによるMatzへのインタビューが分かりやすく、内部などについては、IIJさんや東芝情報システムさんがまとめている記事が参考になります。 現在の所リリース版はなく、GitH

  • 組み込みC言語プログラマのためのmruby入門(前編) ―― Rubyとmruby,何が違う? どう違う?

    組み込みC言語プログラマのためのmruby入門(前編) ―― Rubyとmruby,何が違う? どう違う? 邑中 雅樹 Rubyは,まつもと ゆきひろ氏(通称Matz)が開発したプログラミング言語です.Rubyは2004年に発表されたWebアプリケーションのためのフレームワーク「Ruby On Rails」の爆発的ヒットによって,広く知られるようになりました.Rubyは,日で開発された言語としては初めてISO規格となり,最近では経済紙でもRubyへの言及を見かけるようになりました. Rubyは,「純粋オブジェクト指向」注1というパラダイムを取りつつも,プログラマのストレスを軽減することを第一として設計されています.そのため,ワン・ライナ(コマンド・ライン1行で済ませる作業)から,twitter.comのような大規模なWebアプリケーションまで,幅広い分野で活用されています. 注1:純粋オ

  • AdLint

    AdLint is a source code static analyzer. It can point out insecure or nonportable code fragments, and can measure various quality metrics of the source code. It (currently) can analyze source code compliant with ANSI C89 / ISO C90 and partly ISO C99. AdLint is written in Ruby. So, it is available for Windows, Mac OS X, GNU/Linux, FreeBSD and any other platforms supported by Ruby. Features Can poin

  • オープンソースの静的解析ツール AdLint(アドリント) | 株式会社オージス総研

    オープンソースで無償のソースコード静的解析ツール AdLint - Advanced Lint - は、オープンソースで無償のソースコード静的解析ツールです。コンパイラ等では検出できないソースコード内の潜在的な不具合の可能性を指摘し、定量的な品質メトリクスを出力します。 AdLint の活用は、ソフトウェア製品をより安全で品質の高い状態へ改良することを支援します。 ソースコードに潜在する問題を検出し、警告として出力 AdLint はソースコードを解析し、潜在的に不具合となり得る箇所について多くの警告メッセージを出力します。 開発者は AdLint が出力した警告メッセージをもとに問題を分析し、ソースコードをより安全で品質の高い状態へ改良することができます。 来、ソフトウェア製品に潜在する問題を発見するためには、開発者によるコードレビューなど属人的な活動が必要とされます。AdLint

  • Rubyコーディング規約

    はじめに 文書は、Rubyによりコーディングを行う際の規約について述べる。 実際のプロジェクトに適用する際には、このコーディング規約をカスタ マイズして用いることを推奨する。 ソースコードの整形 インデント プログラムを読みやすくするため、インデントを適宜行う。インデント 幅は2とする。また、インデントにはスペースのみを使用し、タブは使用 しない。(環境によりタブ幅が異なるため。) 例: if x > 0 if y > 0 puts "x > 0 && y > 0" end end 一行の桁数 一行の桁数は最大80桁までとする。 空行 複数のクラスの区切には空行を挿入する。 例: class Foo ... end class Bar ... end 誤った例: class Foo ... end class Bar ... end また、クラス内の各構成要素の区切にも空行を挿入する。

  • Rubyの生産性の高さはどこまで本当か? - 分裂勘違い君劇場 by ふろむだ

    もの人がブックマークしているこの「Ruby仕事に使うべし!」という記事で書かれているRubyの優れた特徴は、実際のところ、どの部分が、どこまで当なのでしょうか? 少し検証してみたいと思います。 「Rubyがスゴイ」とされる点のどれがホントでどれがウソ? 「Ruby仕事に使うべし」では、まず、Rubyの特徴として、 (1)いろんな言語のいいとこ取り (2)構文が強力 (3)楽しくプログラミング (4)問題が起こりにくいように設計されている という点を冒頭で掲げています。 まず、これらをどのように検証すればよいか、考えてみます。 まず、(1)のいいとこ取りについては、いいとこ取りをし続けながらいつも進化しているのは、最近の言語はみんなそうで、それはRuby独自の特徴でもなんでもありません。 たとえば、C#は、その典型で、VM、自動メモリ管理、パッケージによる名前空間管理、マルチスレッド、

    Rubyの生産性の高さはどこまで本当か? - 分裂勘違い君劇場 by ふろむだ
  • Pathname - ファイル名のグッドラッパー - 2nd life (移転しました)

    http://www.ruby-lang.org/ja/man/?cmd=view;name=pathname 先日のRails勉強会でetoさんにPathnameというパスやファイル名のすごい便利なライブラリを教えて貰った。で、早速使ってみたところめっちゃ便利でいま書いてるアプリケーションじゃほとんどのファイル名の操作に使ってるという。 使い方はめっちゃ簡単でパスやファイル名を引数としてオブジェクトを作るだけ。 require 'pathname' file = '/tmp/foo' path = Pathname.new file で、これの何が便利っていうとリファレンスマニュアルのメソッドを眺めて貰うと解るんだけど、ファイル関係の操作が何でもできてしまう。通常だとFileオブジェクトを作るには実体が無いとダメなんだけど無くてももちろん作れるため str = IO.read(file)

    Pathname - ファイル名のグッドラッパー - 2nd life (移転しました)
  • 1