Spring BootによるAPIバックエンド構築実践ガイド 第2版 何千人もの開発者が、InfoQのミニブック「Practical Guide to Building an API Back End with Spring Boot」から、Spring Bootを使ったREST API構築の基礎を学んだ。この本では、出版時に新しくリリースされたバージョンである Spring Boot 2 を使用している。しかし、Spring Boot3が最近リリースされ、重要な変...
In 2013, I had an idea: "what if I were to build my programming language?". Back then my idea came down to "an interpreted language that mixes elements from Ruby and Smalltalk", and not much more. Between 2013 and 2015 I spent time on and off trying different languages (C, C++, D and various others I can't remember) to see which one I would use to build my language in. While this didn't help me fi
2022-09-09改訂: gcc バージョンが古すぎたのと、C が内部計測でなかった点を改め計測しなおしました。結果、Rust は C より速くはなくなりました。紛らわしいことで、ごめんなさい。また、gcc のバージョンアップに伴い、Python および Ruby についてはビルドと計測をしなおしたので、これらも少し速い値に変わっています。この点もどうぞあしからず。 2022-09-10追記:ご要望のあった Python numba.njit 使用時と Go の結果を追加しました。PHP は JIT 有効化が面倒だったので断念しました^^; 2022-09-10追記2:C の計測で clock() を使うのはフェアではないという指摘がありましたので、念のため clock_gettime() を使用したコードに差し替えました。結果に大きな差はありません。 2022-09-10追記3:PHP
会社で議論になり、未だに私の中で決着がついていない問題を取り上げてみます。 Rubyのインスタンス変数を直接参照することについてです。 例えば、コンストラクタでインスタンス変数を設定します。 そして、インスタンスメソッドでそのインスタンス変数を直接参照して処理をして値を返却するということをします。 良い例ではないかもしれませんが、こんな感じのイメージです。 class PriceCalculation def initialize(price, tax) @price = price @tax = tax end def tax_included_price @price * (1 + @tax) end end 前提として、@priceや@taxはこのクラス内のみで使用され、外部からは参照されないものとします。 これに対し、同僚のドイツ人がインスタンス変数を直接参照するのは良くないから、
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言語の連想配列の従来実
Ruby 3.0が先日のクリスマス(というか昨日)にリリースされたと言うことで、型をやっていきたいと思います。 当方TypeScript大好きっ子なのでRuby 3.0で取り込まれた最も注目すべき機能は静的型チェック関係なのですが、どうもその辺についていまいちまとまって書いてある物がなかった気がするので調べたことをメモします。 Rubyの静的解析 型宣言 rbsファイルを作る方法 実際に型宣言を書く(基本) 検査時の型アノテーションが貧弱でつらいぞ…… 所感 gemに型を含める Steepの作者さんからフィードバックをいただきました。(※追記) 実際に型宣言を書く(Rails関連) DefinitelyTyped相当?「gem_rbs」と「rbs_rails」 実際に型宣言を書く(頑張っていい感じにする)(※追記) VSCode拡張機能で充実する 所感 untypedでやっていき Defi
毎年12月25日のクリスマスにアップデートされるオブジェクト指向スクリプト言語の「Ruby」。今回も新バージョンとなるRuby 2.7正式版が予定通り、2019年12月25日にリリースされました。 Ruby 2.7の主な新機能は、case文でのオブジェクトのパターンマッチ、コマンドラインからRubyが利用できるirbにおける複数行編集の対応、コンパクションガベージコレクタ、JITコンパイラ性能の改善などです。 Ruby 2.7の主な新機能 実験的実装による新機能として追加されたオブジェクトのパターンマッチ機能は、case文で使うことができます。 一般にパターンマッチとは文字列などの値に関するパターンの一致や不一致を思い浮かべますが、Ruby 2.7で追加されたのオブジェクトの構造がパターンと一致するかどうかが調べられ、一致した場合に処理が実行される、というものです。 これまでif分などを組
おそらく先がない5つのプログラミング言語、といういろいろと怒りをかいそうな記事だが、どうせワタシが愛する C 言語なんかがまたやり玉に挙がってるんだろうと見たら、一番最初に Ruby が挙がっている…… この記事は TIOBE や RedMonk のプログラミング言語ランキングに Dice 独自の求人票情報を加味してるようだが、Ruby は落ち目という認識らしい。うーむ。 それ以外には Haskell、Objective-C、R、そして Perl が挙げられていて、この手の記事の定番といえる Perl、Swift 誕生後やはり定番である Objective-C はそうですかという感じだが、ビッグデータの時代に人気を高めた R 言語ですら、Python に追いやられつつあるというのはそうなんでしょうね。 それにしても Ruby が先がないという意見には異論が出るだろう。ネタ元は Slashd
(You can read this article in English.) Ruby の開発版にパイプライン演算子(pipeline operator)が試験的に導入されましたが、いろいろあってプチ炎上になっています(チケット)。 せっかくの機会なので、パイプライン演算子の歴史を調べてみました。付け焼き刃の調査なので、間違ってたら教えてください。 パイプライン演算子とは こんな感じのものです。 x |> f |> g |> h # h(g(f(x))) と同じ意味 h(g(f(x))) という関数適用の式は、関数が呼ばれる順序(f→g→h)と、プログラムの字面上の順序(h→g→f)が逆でわかりにくいとされます。この問題は、特に、関数が大きくなったときに顕著になります。 wonderful_process_h( marvelous_process_g( fantastic_process
日本のソフトウェア技術者、まつもとゆきひろ氏によって作られたプログラミング言語「Ruby」。その出自から日本で人気が高いのはもちろん、「Ruby on Rails」というキラーフレームワークが爆発的に広まったことで、全世界的な知名度をも獲得しました。 ところがここ数年Rubyの人気は低下傾向にあり、以前とは状況が少し変わってきているようです。 テックメディアTechRepublicのライターAlison DeNisco氏は8月7日、「The death of Ruby? Developers should learn these languages instead」という記事を公開。Rubyの人気が低下している現在、開発者は別のプログラミング言語を習得したほうが良いという趣旨の考察を展開しています。 Rubyの人気の低下の証拠とは 同記事はRubyの人気低下の証拠として、Indeedによる
specinfraは汎用コマンド実行フレームワーク。RubyGemsとしてで配布されています。 追記:これは1の頃の話なので全体的に古いです。 この書籍が一番詳しい。 => O'Reilly Japan - Serverspec ソースはこちら https://github.com/serverspec/specinfra specinfraが目指す所は、情報処理学会研究報告の serverspec: 宣言的記述でサーバの状態をテスト可能な 汎用性の高いテストフレームワーク という論文を見ると良いでしょう。 論文もソースコードと同様にGithubに公開されています。 https://github.com/mizzy/serverspec-thesis 概要 同じメソッドで任意のOS用のコマンド実行文字列を取得したり実行して結果をとったりします。 さわった感じこんな挙動 バックエンドの形式を
プログラム初心者な方向けに始めたRailsチュートリアルシリーズです。今回はRubyでスクレイピングをしたいという人向けに『Nokogiri』というライブラリを使ったスクレイピングのチュートリアルを作ってみました! (05-02 08:10) 補足: Windowsではじめての人向けの記事を追加 🏈 目次(1) Webスクレイピングとは? (2) Nokogiriとは? (3) 最初に読んでおくと捗りそうな記事 (4) Gem Nokogiriのインストール (5) Yahoo!Japanのトップページからtitleを取得 (6) NaverまとめTechページの注目一覧のタイトル・画像を取得 (7) 実際にコードを書くときに参考になるサイト (8) Railsへの組み込み 🐝 (1) Webスクレイピングとは?WebスクレイピングとはWebサイトのHTMLデータを収集して、特定のデー
毎日他の人のコミットをながめる文化で生活していると、理由は浮かばないけど「ん?このコミットはなんか気になる」と感じるようになります。それは、新しいことを知ることができたコミットだったり、真似したくなるようなコードが入っているコミットだったり、なんかまずそうな気がするコミットだったり、様々です。 「ん?」と感じてコミットを見直してみても、何が気になったか自分でもすぐにわからない場合があります。そんなとき、気になったことをコミットした人に伝えるために、コミットへのコメントをまとめ始めます。「コミットした人に伝えるため」というように、他の人に伝えようとすることがポイントです。他の人に伝えるためにまとめようとすると、思いの外なにが気になったかまとまるものです。 今回は、メタプログラミングを使ってコードを整理したコミットで「ん?」と感じたときのことについて紹介します。このおかげで「メタプログラミング
RubyMotion Advent Calendar 2013 に何か書こう、ということでエントリ。 ご存知のように iPhone アプリの HBFav は RubyMotion で作っています。Objective-C ではなく。以前は Titanium Mobile で作っていましたが、去年にバージョン2として作り直すにあたって RubyMotion に移行しました。 RubyMotion に関しては以前、以下のエントリで概要を説明しています。 RubyMotion - naoyaのはてなダイアリー それから、今年 5月に開催した RubyMotion カンファレンスのスライドなどもあります。 実践RubyMotion - Speaker Deck RubyMotion が発表されたのは 2012 年の5月 とかで、それからずっと使い続けているので1年半近くが経ったことになります。App
Rest.li is an open source REST framework that uses asynchronous and non-blocking I/O to build scalable REST architectures. It achieves asynchronous behavior through its components R2 (network communication), D2 (dynamic discovery and load balancing), and by not blocking on I/O. Rest.li provides both callback-based and ParSeq-based approaches for building asynchronous Rest.li servers and clients to
<< 2013/07/ 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 1. mrubyのmrb_gc_arena_save()/mrb_gc_arena_restore()の使い方 >> _ mrubyのmrb_gc_arena_save()/mrb_gc_arena_restore()の使い方 Twitterで質問を受けたので、 mrubyのmrb_gc_arena_save()/mrb_gc_arena_restore()の使い方 という解説を行った。が、1つ140文字のTwitterでの解説にはどうしても無理があるので、 こっちでまとめることにする。 まずは、Twitterの発言*1はこんな感じ。 arenaの目的。利用中のオブジェクトはGCに回収されないよう保護
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く