You signed in with another tab or window. Reload to refresh your session. You signed out in another tab or window. Reload to refresh your session. You switched accounts on another tab or window. Reload to refresh your session. Dismiss alert
PHPとPythonとRubyの連想配列のデータ構造がそれぞれ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言語の連想配列の従来実
いつかその日が来るだろうなとは思っていたけど... RubyMineを2017.2.4にアップグレードした後、いつものようにGobyを開いてみると、Go言語のシンタックスハイライトが全部消えてまっちろになっている。 再インデックスに時間かかっているのかなと思ったけど、プログレスバー表示されてないし。 もしやと思ってRubyMineの設定を開いてみるとこんなメッセージが。 RubyMine+Goプラグイン、Gobyメンテ環境として最強だったのにぃ... とりあえずGoLandをダウンロードしてトライアルモードで確認することに。まずはVimプラグインをインストール。 続いてRubyMineからFile > Export Settingsで設定をエクスポートし、GoLandでFile > Import Settingsしたところ、シンタックスハイライト周りやVimキーバインドカスタマイズも含めて
世の中には、数多くのプログラミング言語が存在する。Wikipediaの「プログラミング言語一覧」というページには300以上の言語が列挙されている。現在よく使われている言語に絞っても10や20はあるだろう。 C言語やJavaといった言語の名前を知っている人は多いかもしれない。少し詳しい人なら、JavaとJavaScriptは名前こそ似ているものの全く異なる言語だということも知っているはずだ。 そうした中で、とかく「死んだ」とか「オワコン(終わったコンテンツという意味)」と言われがちな言語がある。オブジェクト指向言語の一種である「Ruby」だ。 2017年には「The death of Ruby?」という海外の記事が話題になった。Rubyの人気が以前よりも落ちているのではないかという記事だ。根拠にしていたのは、プログラミング言語別の求人数のランキングや米国電気電子技術者協会(IEEE)が公表し
Photo by Ray Bouknight こんにちは、谷口です。 「Python最高!」 「Pythonってほかの言語と比べて何がいいの?」 「ほかの言語は知らんけどPython最高!」 「……」 みたいな若いエンジニア(もしくはエンジニア志望者)、皆さんの周りにもいませんか? エンジニアとして「好きな技術がある」のはもちろんとてもよいことですが、 実務経験もないのに「Pythonの求人にしか応募したくない」 「ほかの言語は使ったことがない」と言って好きな言語しかやりたがらない みたいな感じで、経験が浅いにもかかわらずこだわりが強すぎる人は、転職活動ではマイナスになってしまうケースがよくあります。(別にこれはPythonに限った話ではないのですが、特にPythonにこだわりたがる人があまりにも多いので例にしました…) 今回は、「この言語しかやりたくない!」と言う人が勘違いしていることと
日本のソフトウェア技術者、まつもとゆきひろ氏によって作られたプログラミング言語「Ruby」。その出自から日本で人気が高いのはもちろん、「Ruby on Rails」というキラーフレームワークが爆発的に広まったことで、全世界的な知名度をも獲得しました。 ところがここ数年Rubyの人気は低下傾向にあり、以前とは状況が少し変わってきているようです。 テックメディアTechRepublicのライターAlison DeNisco氏は8月7日、「The death of Ruby? Developers should learn these languages instead」という記事を公開。Rubyの人気が低下している現在、開発者は別のプログラミング言語を習得したほうが良いという趣旨の考察を展開しています。 Rubyの人気の低下の証拠とは 同記事はRubyの人気低下の証拠として、Indeedによる
Deleted articles cannot be recovered. Draft of this article would be also deleted. Are you sure you want to delete this article? 今日は言葉狩りを行いたいと思います。 Rubyではifもwhileも式である 生粋のRubyistである皆さんにとっては当たり前のことではありますが、Rubyではifもwhileも**式(expression)です。決して文(statement)**ではありません。これはCなど他のプログラミング言語にはないRubyの特徴の一つであり1、この違いは小さいようで大きいです。初心者のうちから、この違いを意識しておく必要があります。 プログラミング初心者にとって式と文の違いなんてどうでもいいのではという暴論もあるかも知れませんが、初心者だからこ
こんにちは、hachi8833です。 少し前に、babaさんから「Rubyの内部文字コードはUTF-8じゃないよ」とツッコミがありました。 (追記: 上は会話の途中から切り取りましたのでご了承ください) いきなりの展開にくらくらきましたが、babaさんはさらにたたみかけます。 こうしたことはとっくにご存じの方も多いと思いますが、「Rubyといえば2.0以来UTF-8完全対応なんじゃないの」と勝手に思い込んでた私は脳に掌底を食らったような思いです。ああ、でもこういうことがあるから面白い。 ⚓ プログラミング言語と内部文字コードの関係 まず最初に押さえておきたい点です。プログラミング言語で文字コードに関連する部分は、「文字列」「正規表現」「入出力」「コード中の文字リテラル(""の中など)」「コード中の文字リテラル以外の要素(変数名など)」「ファイル名」などが中心になります。そして文字列に関連し
はじめに MeCab の標準の Ruby 用バインディングを利用してテキスト解析を行っていたら、 hoge.rb:XX: [BUG] Segmentation fault at 0x00123456789abc のようなエラーが発生した。 発生したタイミングは次の通り。 ・処理が一定の負荷を超えた場合、毎回そこで落ちる。 ・軽い処理の場合は落ちない。 落ちてた部分は下記の行。 node = MeCab::Tagger.new.parseToNode(string) Python で同様の事例 以前 Python で意図しないガベージコレクションが実行されることにより、 似たような事例が発生した事があった。 (この件は次のサイトが詳しくまとめてくれている Shogo's Blog: MeCabをPythonから使う注意点とか) 対処 Ruby でも同じことが起きてるんじゃないかと思ったので、
記事タイトルがヘタなので、何言ってるのか伝わらなさそうだけど…。最近、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ではロードパスにカレントディレクトリが含
・Ubuntu 14.04 LTS(64bit) ・PaSoRi(RC-S320) ・ruby 2.1.2p95 ちなみに2014年7月19日です。 libpafe→libpafe-rubyの順番でコンパイルしていきます。 libpafe $ sudo apt-get install libusb-dev $ mkdir ~/tmp # 適当なディレクトリで $ cd ~/tmp $ wget http://homepage3.nifty.com/slokar/pasori/libpafe-0.0.8.tar.gz $ tar zxvf libpafe-0.0.8.tar.gz $ cd libpafe-0.0.8 $ ./configure $ make $ sudo make install 次にudevの設定をします。 $ cd /lib/udev/rules.dと移動し、以下の内容
(7/3 14:05追記)Javaに関する記述について誤認があったので盛大に書き換えました。Java 6、Java 7、Java 8それぞれで実装が変わっていたようです。 (7/13 23:55追記)本記事中ではroundを四捨五入と言い切ってしまっています。これは筆者がC99のroundを基準に考えているためですが、言語によっては偶数丸めになっているround関数も珍しくありません。ご注意ください。 PHPのround関数について、ネット上で次のような記述を見つけました。 PHP 四捨五入の計算を間違える唯一の言語として畏れられていましたが、そのバグは治っているかもしれません(治ってないかもしれません) 主要なプログラミング言語8種をぐったり解説 - 鍋あり谷あり 各言語を面白おかしく紹介する内容とはいえ、ずいぶん雑な理解だなーという印象です。ゆるふわな話だけでPHPがdisられ続けるの
require 'resolv' require 'rubydns' Interfaces = [ [:udp, "0.0.0.0", 5300], [:tcp, "0.0.0.0", 5300] ] zun_counter = 0 RubyDNS::run_server(:listen =>Interfaces) do match(/\.zun$/, Resolv::DNS::Resource::IN::A) do |transaction| zun_counter += 1 transaction.respond!("127.0.0.1", resource_class: Resolv::DNS::Resource::IN::A) end match(/.doko$/, Resolv::DNS::Resource::IN::A) do |transaction| cname= tran
はじめに Google Summer of Code 2014にSciRubyの学生として参加していました。 3か月の期間が無事終了し、ちゃんとした成果物ができたので記事にします。 Nyaplotについて、コードや詳しい使い方はこちらをご覧ください: domitry/nyaplot · GitHub domitry/Nyaplotjs · GitHub あーなんか余裕なかったなあとかGSoCの感想みたいなのはまた落ち着いてから書こうかと思います。 概要 IRuby notebook上で動作する、plotのためのgem。 すごいところ インタラクティブな/インタラクティブにplotができる。 IRuby notebook上で対話的にプロットを作ることができます。また標準で用意される様々なモジュールがユーザーの対話的な操作を支援します。 作ったプロットはSVGやWebGLを使いブラウザ上に表示
巨大なテキストファイル(例えば500M、すみません、それほど巨大ではありません。)をランダムソート(例えばsort -R)しようとするとソートのアルゴリズムが走るためか、非常に時間がかかる。ところがランダムソートは厳密にはソートする必要がないはずである。そこでバケットソートのバケツをランダムに行うことを提案する。その方法は、複数の一時ファイルを作成し、それらのファイルにランダムに格納し、それを結合することで、トランプのような「シャッフル」を行うことにする。それが下記のrubyワンライナ。 ruby -r tempfile -ne 'BEGIN{R=1000;$ta=Array.new(R){|i|Tempfile.open(i)}}; $ta[rand(R)].print $_; END{$ta.each{|t|t.close;print open(t.path).read}}' R=10
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く