タグ

関連タグで絞り込む (0)

  • 関連タグはありません

タグの絞り込みを解除

Programmingとprogrammingとrubyに関するWatsonのブックマーク (37)

  • なぜJavaScriptで「76287755398823936」が正しく表示できないか、あるいはなぜRubyでも表せないか。 - ψ(プサイ)の興味関心空間

    Twitter住所特定実験」を開発中に気づいた事です。取得したツイートをサーバからJSONでクライアント側のJSに送る処理があって、当初この時にTwitterのツイートのIDをJSONに数値として含めて送っていました。 が、JavaScriptではこの値を受信してeval()した†1際、うまく変換することができず、たとえばChrome/Firefoxでは「76287755398823940」となり、微妙に異なった数値になってしまいました。 以下をクリックすることで、実際に実行できます。 javascript:alert(76287755398823936) IE8/9だと「76287755398823930」となり、まだ微妙に違った値になります。 ■doubleの精度の問題?? まず疑われたのはdoubleの精度の問題。一部では有名な話で、JavaScriptでは数値はすべてdouble

  • GitHub、プログラミング言語識別ライブラリ「Linguist」をオープンソースで公開 | OSDN Magazine

    GitHubは6月27日、ファイル内に記述されているプログラム言語を識別するライブラリ「Linguist 1.0」を公開した。ライセンスはMIT License。 Linguistは、ファイルで使われているプログラム言語を識別する目的でGitHubが開発したライブラリ。ファイルの拡張子で言語を判別するだけでなく、拡張子のないスクリプトファイルや、C/C++/Objective-Cのような互換性を持つ言語については中身を調べる「ディープコンテンツインスペクション」により言語を検出する。これによって言語を検出し、Pythonシンタックスハイライター「Pygments」向けのRubyラッパー技術「Albino」によりシンタックスハイライト処理を行わせる、といった処理が可能。 このほか、MIMEタイプ検出、バイナリファイルのチェック、使われている言語のグラフ生成などの機能もある。ライセンスはMIT

    GitHub、プログラミング言語識別ライブラリ「Linguist」をオープンソースで公開 | OSDN Magazine
  • 「末尾最適化」を正しく理解する - ブートストラッピングでコンパイラを作る日記

    以下の記事でPythonRubyの末尾再帰関数をループに変換する手法が「末尾再帰最適化」や「末尾呼び出し最適化」として紹介されているのですが、これらの用語を使うのは間違いです。 紹介されている手法(動的束縛を利用して制御フローを変形する手法)自体は大変面白いですね。 Pythonで末尾再帰最適化をする。 Rubyで末尾再帰最適化をする。 参考文献として以下を挙げておきます。 William D. Clinger "Proper Tail Recursion and Space Efficiency" ちゃんと読み直していないので、以下の説明に間違いがあるかも知れません。その場合はご指摘お願いします。 まず「末尾呼び出し(Tail Call)」は関数の一番最後の式(末尾式)であって、関数呼び出しであるものを指します。 void foo() { bar(); baz(); /* 末尾呼び出し

    「末尾最適化」を正しく理解する - ブートストラッピングでコンパイラを作る日記
  • 【翻訳】EventMachine入門

    dan sinclairさんのEventMachineの入門記事(PDF)を翻訳しました。 原文はここからダウンロード可能です: http://everburning.com/news/eventmachine-introductions/ (翻訳の公開と画像の利用は人より許諾済みです) 翻訳・内容の間違い等があればブログコメントやTwitterなどで遠慮無くご指摘ください。 EventMachine入門 Introduction うん、これから何を学ぶことになるのか、この導入のくだりがスタート地点として役に立つと思う。EventMachine とは何だろう。そしてそれは私たちのために何をしてくれるのだろう。さて、最初の部分は簡単だね。EventMachine は Reactor パターン(*1)の高性能な実装さ。 すげえ、いや、ちょっと待て、Reactor パターンって何だ? Wiki

    【翻訳】EventMachine入門
  • ruby-profとKCacheGrindでプロファイル野郎になる - 昼メシ物語

    速さが足りない!!!!! そんな時はプロファイリングの時間ですね。 Rubyには標準添付ライブラリとして profile というプロファイラがついてくる。でもこのライブラリはあまりに遅すぎて実用に耐えないから、多分誰も使っていない。ほとんどのRubyistは ruby-prof を使っていることだろう。 今回はこの ruby-prof を使って Ruby プログラムのプロファイリングする方法を紹介する。 計測する(ruby-prof) ruby-profはrubygemsで簡単に入る。 $ gem install ruby-profruby-profというコマンドラインツールがインストールされる。これを使うと、プログラムを変更することなく手軽にプロファイリングを行うことができる。ruby-profコマンドのusageは以下のとおり。 ruby_prof 0.9.2 Usage: ruby_

    ruby-profとKCacheGrindでプロファイル野郎になる - 昼メシ物語
  • データ型モデルと CRuby の型 - ドレッシングのような

    (改訂 2010.08.20) 参考文献を追加し、その内容に合わせて修正。 僕は、様々なアーキテクチャで動かせるコードを書こうとしているとき、long と void* のサイズの関係などが分からなくなって手を止める事が結構あります。後学のために一度整理しておこうと思い、表にまとめてみました。 モデル名 sizeof(int) sizeof(long) sizeof(long long) sizeof(void*) 主なアーキテクチャ LP32 2 4 - 4 ほぼ皆無 Win3.1など (16ビット環境) ILP32 4 4 8 4 ほとんどの32ビット環境 LLP64 4 4 8 8 Win64 LP64 4 8 8 8 64ビットのLinux ILP64 8 8 8 8 ほぼ皆無 SGI NOTE: sizeof(char) == 1 と sizeof(short) == 2 はすべて

    データ型モデルと CRuby の型 - ドレッシングのような
  • 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・Python・JavaScript・PHPについてどう思いますか?:Tim Brayに聞いてみた - builder by ZDNet Japan

    サステナビリティの今と未来 企業戦略としてのサスティナビリティ推進 世界の通信インフラを支えるコルトの取組み 膨大なアクセスを支える屋台骨 高い安定性とパフォーマンスを両立 ZOZOTOWNが選んだストレージ基盤を解説 MSセキュリティ担当者が紹介 マルチクラウド環境の保護を追求する Microsoft Defender for Cloud 勝つためのクラウド活用術 New Value on Azure ビジネスを次のステージへ! ID管理の基礎知識 新しい働き方におけるITガバナンスの 向上にむけて 高い従業員満足度と安心・安全 新時代にむけた理想の業務環境こそ Anywhere Workspaceが目指す未来 新OSのWin11はどう進化したか ビジネス上の役割、開発の要因と Win11が目指した5つのポイントを紹介 現場主導のデジタル変革 ビジネス変革のための“ITの民主化” そして

    Ruby・Python・JavaScript・PHPについてどう思いますか?:Tim Brayに聞いてみた - builder by ZDNet Japan
  • まつもと直伝 プログラミングのオキテ 第18回 プログラムを高速化する(その2):ITpro

    プログラムの高速化については連載の第13回で紹介しています。プログラム中のどの部分を高速化すべきなのか,どのように効果を測定するのか,そもそも高速化が必要なのかを考察しました。今回は実際に高速化を試みます。 今回はプログラム高速化の実践編として,ある程度の大きさの具体的なプログラムを段階的に高速化しながら,実践的なテクニックを学ぶことにしましょう。 例題はマンデルブロ集合*1の計算プログラムです(図1)。マンデルブロ集合は非常に美しい集合ですから,当はグラフィックス表示が好ましいでしょう*2。しかし,GUIを使うと,特定のGUIライブラリ(グラフィックス・ルーチン)に依存したコードが大量に必要です。今回のテーマは「高速化」ですから,直接関係のないGUIコードはできるだけ省くため,キャラクタ(英文字)で図形を表現することにしました。 1 require 'complex' 2 3 def

    まつもと直伝 プログラミングのオキテ 第18回 プログラムを高速化する(その2):ITpro
  • PHPとRubyの文法面での比較

    PHPRubyの文法面および主要な機能にのみ注目して(ラフな)比較を行った。そのため、各種関数などにはほとんど触れていない。 式と文 やや便宜的な説明になるがPHPの式および文の特徴を以下に示す。 なんらかの記述を式と呼ぶ 式は値を持つことも持たないこともある 関数は必ず返り値を持つが、echoなど一見関数に見えるものの中には値を返さないものもある 文は式を;で終えたもの Rubyの式および文の特徴を以下に示す。 なんらかの記述を式と呼ぶ 厳密にいうと式は値を持つことも持たないこともあるが、Rubyではほとんどすべての記述が値を持つと考えてよい ifやfor、メソッド定義も値を返す 文は式からなり終端を明示するために;を付けてもよい 通常はつけない 複数の文字を一行に書くときには必要 ブロック 「ブロック」といったときPHPRubyで意味するところはかなり違う。 まずPHPでいうブロッ

  • Railsで日本語を使う時に必須のパッケージ Ruby-GetText

    Posted by masuidrive Sun, 02 Jul 2006 18:22:00 GMT Railsで日語アプリを使う時のサポートパッケージとしては、ActiveHeart が有名です。私もずっとActiveHeartを使ってましたが、RJS+Safariの文字化け問題解消のため、Ruby-GetText に移行することにしました。それぐらい自分で書いても良かったんですが、せっかくあるので使わないとw Railsの日語化ユーティリティとしては、今のところ最強な気がする>Ruby-GetText Ruby-GetTextはgemsで配布されているので、インストールしてみます。 Ruby-GetTextとActiveHeartを簡単に比較してみました。 Ruby-GetTextが有利な点 Safariで文字化けする問題も解消されます。RJS利用時も問題ありません メッセージをプ

  • まつもと直伝 プログラミングのオキテ第2回 (2)

    複雑さという敵 実際にオブジェクト指向プログラミングを進めるために重要な原則に戻りましょう。 ソフトウエア開発の最大の敵は複雑さです。人間の脳はあまり複雑なものを扱うことができないのです。記憶力と理解力に限界があるためです。人間は一度に把握できる概念の数に限界がありますし,複数のことを記憶しようとするとたいていいくつかは忘れてしまいます。 ソフトウエアを実行するコンピュータにはこのような制約はなく,コンピュータはどんなに複雑なソフトウエアだろうとも,どんなに処理するデータが増えようとも処理時間が長くなるだけで処理できなくなることはありません。世の中のデータ処理がどんどんコンピュータ化されるにつれ,ソフトウエアへの要求は増し,開発されるソフトウエアはどんどん複雑になってきています。 年々性能が向上するコンピュータの処理能力の限界よりも,人間の理解力の限界によるソフトウエア生産性の限界の方が,

    まつもと直伝 プログラミングのオキテ第2回 (2)
  • まつもと直伝 プログラミングのオキテ 第2回(1):IT Pro

    オブジェクト指向プログラミングを構成する3原則のうち,前回は「ポリモーフィズム」を学びました。今回はオブジェクト指向の歴史を復習した後,残りの「データ抽象」と「継承」について解説します。 オブジェクト指向プログラミングを構成する3原則は「ポリモーフィズム」,「データ抽象」,「継承」であると言われます。3原則を別の名前で呼ぶこともあります。例えば,「ポリモーフィズム」を「動的結合」と呼んだり,「データ抽象」を「情報隠ぺい」,「カプセル化」と呼んだりします。しかし,名前が違っても指し示すものは同じです。多くの人はオブジェクト指向プログラミングにこれらの原則が重要であると考えているようです*1。 オブジェクト指向の歴史 最近になってオブジェクト指向という単語を耳にした人にとっては,オブジェクト指向というのは新しい単語が山のように出てくる難しい概念だ,という印象を持たれることが多いようです。実際,

    まつもと直伝 プログラミングのオキテ 第2回(1):IT Pro
  • Rubyist Magazine - Rubyist のための他言語探訪 【第 2 回】 CLU

    『るびま』は、Ruby に関する技術記事はもちろんのこと、Rubyist へのインタビューやエッセイ、その他をお届けするウェブ雑誌です。 Rubyist Magazine について 『Rubyist Magazine』、略して『るびま』は、日 Ruby の会の有志による Rubyist の Rubyist による、Rubyist とそうでない人のためのウェブ雑誌です。 最新号 Rubyist Magazine 0058 号 バックナンバー Rubyist Magazine 0058 号 RubyKaigi 2018 直前特集号 Rubyist Magazine 0057 号 RubyKaigi 2017 直前特集号 Rubyist Magazine 0056 号 Rubyist Magazine 0055 号 Rubyist Magazine 0054 号 東京 Ruby 会議 11 直

  • まつもと直伝 プログラミングのオキテ 第1回(2):IT Pro

    いかに書くか プログラムの記述方法であるプログラミング言語に対して,「いかに書くか」というのがプログラミング・テクニックです。連載では,表1に示すさまざまな領域のプログラミング・テクニックに踏み込みます。 表1にあるコーディング・スタイルは,プログラムの書き方の細かい部分,例えば変数名の選び方や,関数の書き方などを含みます。 アルゴリズムは問題を解決する手順のことです。世の中にはさまざまなアルゴリズムが知られています。プログラムはアルゴリズムの具体化と言っても過言ではありません。 いくつかのアルゴリズムは,自分の力だけで考え出すのは 困難です。例えば,配列要素を大きさの順に並べ替えるソートのアルゴリズムは数多く知られていますが,既存のアルゴリズムを全く知らなければ高速なソートは実現できないでしょう。アルゴリズムはしばしば特定のデータ構造を伴います。かつて「プログラミングとはアルゴリズム+

    まつもと直伝 プログラミングのオキテ 第1回(2):IT Pro
  • まつもと直伝プログラミングの掟1(1) プログラミングとオブジェクト指向の関係(上):IT Pro

    プログラマを目指す人々の中にも,「オブジェクト指向は難しい」とか,「なかなか分からない」という印象を持つ方が多いようです。そこで,Rubyを題材にオブジェクト指向という考え方について説明していきます。(ネットワーク応用通信研究所 まつもと ゆきひろ) プログラミングとは,コンピュータに作業手順を教え込むことです。ただ,コンピュータは決して賢くないので,言われた通りの作業をこなすことしかしません。コンピュータが優れているように見えるのは,単に超高速で計算する能力があるからです。効率の悪い作業を命じられても,プログラムによって指定された通り,文句の一つも言わずに黙々と処理します。コンピュータの能力を生かすも殺すもプログラムの書き方ひとつなのです。 ですから,プログラムを書く人(プログラマ)はコンピュータを自分の意のままに扱う人であり,コンピュータの「ご主人様」であると言ってもよいでしょう。にも

    まつもと直伝プログラミングの掟1(1) プログラミングとオブジェクト指向の関係(上):IT Pro
  • まつもと直伝 プログラミングのオキテ 第1回(3):IT Pro

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

    まつもと直伝 プログラミングのオキテ 第1回(3):IT Pro