タグ

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

タグの絞り込みを解除

rubyに関するNyohoのブックマーク (894)

  • Ruby 3.2.0 Preview 2 Released

    Posted by naruse on 9 Sep 2022 We are pleased to announce the release of Ruby 3.2.0-preview2. Ruby 3.2 adds many features and performance improvements. WASI based WebAssembly support This is an initial port of WASI based WebAssembly support. This enables a CRuby binary to be available on Web browser, Serverless Edge environment, and other WebAssembly/WASI embedders. Currently this port passes basi

    Nyoho
    Nyoho 2022/09/09
  • Pythonが速度改善に本気出すと聞いたので恒例のたらい回しベンチをとってみたら、RubyがYJITですごく速くなっていて驚いた話 - Smalltalkのtは小文字です

    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

    Pythonが速度改善に本気出すと聞いたので恒例のたらい回しベンチをとってみたら、RubyがYJITですごく速くなっていて驚いた話 - Smalltalkのtは小文字です
    Nyoho
    Nyoho 2022/09/09
  • Ruby meets WebAssembly

    RubyKaigi 2022 Keynote https://rubykaigi.org/2022/presentations/kateinoigakukun.html#day1

    Ruby meets WebAssembly
  • 【RubyKaigi発表予告】超絶技巧コードコンテストTRICK 2022結果発表 - クックパッド開発者ブログ

    技術部の遠藤です。CookpadのフルタイムRubyコミッタの1人です。RubyKaigiまであと1週間ですね! 今年のRubyKaigiでは、"TRICK"の発表をします。TRICKとは何か。まずはこのRubyコードを見てください。 ->\ &\ w{ a= ?a b= ?b c= ?, d= ?. e= ?e g= ?g h= ?/ i= ?{ l= ?l m= ?_ n= ?$ o= ?1 q= ?' r= ?< s= ?s t= ?> u= ?u v= ?v x= ?( y= ?) z= ?- _= "" f= w[ w, z+ t+ i+ m+ r+ r+ m+ o+ d+ g+ s+ u+ b+ x+ n+ h+ c+ q+ q+ y+ ?} ]; f[ 'p ut s" He ll o, '] _\ << 32 f[ 'w or ld !" '] w[ w, e+ v+ a+

    【RubyKaigi発表予告】超絶技巧コードコンテストTRICK 2022結果発表 - クックパッド開発者ブログ
    Nyoho
    Nyoho 2022/09/02
    変態的プログラミングとかなんとかとa_matsudaさんが紹介されていた。
  • 失敗したテストのログだけを出力するぞ - おもしろwebサービス開発日記

    表題の通りのことができるgem、CiLoggerが便利ですよという話です。 私達は大量のテストをCI上で実行しています。テスト結果を見れば失敗理由が自明なものもありますが、E2Eテストなどでよく起きる「たまに失敗するテスト」の調査はログやスクリーンショットなど、可能な限りの情報を集めないと根原因がつかめないことが多いです。 そんなときに、特に考えずRailsデフォルトの設定(config.log_level #=> :debug)のままにしておくと、膨大なログの中から該当するテストに関連する行を探し当てる作業が必要になります。これは事前の準備なしではほぼ不可能です。 事前の準備として簡単に思いつく方法は、テスト前後で「どのテストが開始/終了したか」をログに出力することです。 config.around do |example| Rails.logger.debug("start exam

    失敗したテストのログだけを出力するぞ - おもしろwebサービス開発日記
    Nyoho
    Nyoho 2022/08/25
  • Ruby が YJIT でなんで速くなるのか? Lazy Basic Block Versioning をサクッと理解してみた - estie inside blog

    estie でソフトウェアエンジニアをしている徳永(@yTo_9)です。 estie では Ruby を書いたりTypeScriptを書いたりしています! estie 夏のブログ祭りにかこつけて、せっかくなら普段は追わない部分だけど、気になっていたYJITなるものを深掘りしてみようと思い、「YJITがなぜRailsアプリケーションの高速化を実現できたのか」を調べてみたので紹介したいと思います。 「どうせ難しいんでしょ?」と思いながら調べてみたのですが、講演や論文の説明がわかりやすく、意外に概要を把握することは難しくありませんでした。 YJIT の核となっているのは Lazy Basic Block Versioning (LBBV) という手法で、これはRubyだけに限らず動的言語全般に適用可能な強力なアプローチであることがわかりました。 「あるタイプの条件分岐は、ほとんどの場合で片側しか

    Ruby が YJIT でなんで速くなるのか? Lazy Basic Block Versioning をサクッと理解してみた - estie inside blog
    Nyoho
    Nyoho 2022/08/15
    「型検査の分岐は90%以上で片方の分岐しかたどらず、ブロックのコンパイルをその分岐に入るまで遅延した場合に2つ以上のバージョンのコードがコンパイルされたのは 6%に過ぎなかった」おもしろい
  • Ruby gem で Rust をつかって爆速にしたい!!!!!!11

    Ruby Gems で Rust が Native として利用可能になった のでとりあえず UUIDv4 を生成してみた。 リポジトリ 準備 Ruby 側の gemRust を利用する準備として rb_sys と rake-compiler を利用します。この二つの gem は native compile するためにインストールしておきます。 Rust 側から Ruby へ関数を公開するために rb-sys と magnus を利用します。 gem install とりあえず cargoRust のパッケージを作って Rust を書いてみます。 > bundle gem rust_uuid --mit --ext rust_uuid # --ext を指定してnative build する gem を作成 > cd rust_uuid # 作成した gem のディレクトリへ移

  • Automate RuboCop ToDo fix

    Let me introduce rubocop-todo-corrector in this article. ToDo list based linting These days, many projects are using Lint tools to self-diagnose their code. e.g. ESLint for JavaScript rustfmt for Rust RuboCop for Ruby etc. RuboCop has the ability to detect existing offenses and automatically generate a file named .rubocop_todo.yml. This file acts as a to-do list, so we can gradually fix the offens

    Automate RuboCop ToDo fix
    Nyoho
    Nyoho 2022/07/30
    rubocop-todo-corrector、入れてみた。これは便利。使っていこう。labelを作っておかないといけないのでハマった。
  • ISUCON12予選にRubyで出場して8位で予選通過した(ソレイユ) - Write and Run

    霧矢あおい(KOBA789)です。 タイトルのとおり、ISUCON12予選に Ruby で出場して8位で予選通過しました。最終スコアは34635(ベストと等しい)です。 戦出場は ISUCON9 ぶり2回目です。 チーム「ソレイユ」 今年は私の多忙もあってチーム解散の危機だったんですが(チームメイトにはご迷惑をおかけしました)、無事いつものチームで出場することができました。 ひとりチームからソレイユへの移籍に際して運営さんにお手伝いいただき、無事移籍を成功させたときの様子。 というわけでメンバーは以下: 星宮いちご(osyoyu id:tomo_ari) 霧矢あおい(KOBA789 id:koba789) 紫吹蘭(s4ichi id:everysick) アイカツ劇場版公開おめでとうございます。忙しくてまだ観られていません。 たたかいのきろく うちのチームは例によって Git をほぼ使っ

    ISUCON12予選にRubyで出場して8位で予選通過した(ソレイユ) - Write and Run
    Nyoho
    Nyoho 2022/07/27
  • Ruby を Julia に変換して実行すると速くなる (場合がある) - Speee DEVELOPER BLOG

    開発部 R&D ユニットの村田です。OSSの開発をしております。記事では、Ruby で書かれたマンデルブロ集合を計算するメソッドを実行時に Julia に変換して実行するとめっちゃ速くなる (場合がある)、という話をします。 はじめに Ruby 3.1 では YJIT がマージされ、Rails アプリケーションが速くなりました。今後のバージョンアップがとても楽しみですね。ただし、Ruby のデータ処理対応を進めている身としては、データ処理や数値計算がより高速になって欲しいと思っています。 データ処理や数値計算を高速化する試みとして、Python では NUMBA というライブラリが開発されています。NUMBA は、メソッド単位でバイトコードを LLVM を用いてネイティブコードにコンパイルすることでメソッド実行を高速化します。ただメソッドをネイティブコードに変換するのではなく、実行時にメ

    Ruby を Julia に変換して実行すると速くなる (場合がある) - Speee DEVELOPER BLOG
  • .rubocop_todo.ymlを解消するPull RequestをGitHub Actionsで自動生成する (前編)

    .rubocop_todo.ymlを解消するPull RequestをGitHub Actionsで自動生成する (前編) 前編ではr7kamura/rubocop-challengeというCustom Actionの話をし、後編では再実装したr7kamura/rubocop-todo-correctorというCustom Actionの話をする。 ただ開発しているだけで、.rubocop_todo.ymlはそこ此処に積もる。たまに慈善活動的に解消してPull Requestを出したりもする。しかし人力でやっているとキリがない。この作業を自動化したい。こういうときに便利な、rubocop_challengerというGemがある。 便利なGemだが、設定しようとすると幾つかハマりどころがあり、導入が大変。そこで、簡単に導入できるようにr7kamura/rubocop-challengeという

    Nyoho
    Nyoho 2022/05/14
    「rubocop-challengerというGem」
  • Ruby 3.2.0dev にマージされた Rust YJIT をビルドする - koicの日記

    YJITRust 実装がマージされました。いまのところ今年の Shopify からの代表作ではと見ています (YJIT 自体は Ruby 3.1 で C 実装導入されている機能です) 。 github.com そういうわけで、現在の Ruby 3.2.0dev で YJIT を有効にする場合は、Rust の処理系 (1.60.0 1.58.1 以上) が必要になります。Rust のインストールに使う rustup については以下の公式ページなどを参照してください。 www.rust-lang.org YJIT はデフォルトではビルドされません (なので YJIT を使わないビルドであれば Rust 処理系は不要です) 。 デフォルトの YJIT なしの Ruby をビルドしている場合は --yjit オプションを渡しても、ruby: warning: Ruby was built w

    Ruby 3.2.0dev にマージされた Rust YJIT をビルドする - koicの日記
    Nyoho
    Nyoho 2022/04/29
  • Procを制する者がRubyを制す(嘘)

    RubyのProcの説明は巷に溢れているから今更感があるけどここ数回Procを使ったネタを書いていたらProcがかわいくなっちゃってもっとみんなにもProcのこと知ってもらいたいという欲求が生まれてきたからProcについての基的なことを僕なりのやり方でここに書くよ。長いよ。 Rubyの関数(メソッド) Rubyにおいて関数(メソッド)はファーストクラス(オブジェクト)ではありません。つまり文字列や数字や配列などの他のオブジェクトとは異なって、Rubyではそれを直接変数に代入したり、他の関数に渡したりすることはできません。 def square(n) n * n end sq = square # squareメソッドを変数sqに代入してみる # ~> -:1:in `square': wrong number of arguments (0 for 1) (ArgumentError)

    Procを制する者がRubyを制す(嘘)
    Nyoho
    Nyoho 2022/04/24
  • Ruby on Browser 1.0 リリース - おんがえしの blog

    窓の杜で取り上げていただいた後も実装は少しずつ続けていて、ひとまずブラウザ上で最新のRubyを試すのに必要な機能は一通り実装できたんじゃないかと思う。リファレンスマニュアルへのリンクを貼ってシンタックスハイライトを入れたりCtrl+Enterで実行できるようにした。(自分が書いたサンプルコードはScrapboxにあるのでコピペして試せます) https://rubyonbrowser.ongaeshi.me/ モバイルでも簡単なコードだったら書けるように色々工夫したのでちょっとしたコードを書きたいときにぜひ試してみてほしい。(Select Allボタンは結構こだわった) 他のブラウザ言語処理系と大きく違うこととして「ファイルを読み書きするAPIも使える」ということがある。元々WASIがWASMにファイルIOや通信を持せたることを目的にしたものなのでRuby WASM/WASI自体がファイル

    Ruby on Browser 1.0 リリース - おんがえしの blog
    Nyoho
    Nyoho 2022/04/18
  • Rubyコミュニティ「Fukuoka.rb」のロゴデザイン|🌲sugiwe/すぎえ

    こんにちは、プログラミングを勉強中のデザイナー、sugiweと申します。 福岡周辺の地域RubyコミュニティであるFukuoka.rbのロゴデザインコンペが開催され、ありがたいことに自分の提案を採択していただきました! Rubyというのは、まつもとゆきひろ氏により開発された日産のプログラミング言語で、Rubyで書かれたRuby on Railsというフレームワークは国内外問わず非常にたくさんのサービスで活用されています。 今回ロゴをデザインさせていただいたFukuoka.rbをはじめ、RubyRuby on Railsに関することを自主的に学ぶ勉強会や団体が数多くあり、それらは地域Rubyコミュニティ(あるいはRubyコミュニティ)と呼ばれています。 今回の記事では決定したロゴのご紹介とともに、最終的なデザインに至るまでの過程などについて書いていきます。 背景note記事で触れるのは初

    Rubyコミュニティ「Fukuoka.rb」のロゴデザイン|🌲sugiwe/すぎえ
  • Rails + RBS & Steepを試してみて困ったところとか感想とか - Qiita

    まえがき Railsアプリに型チェックを導入しようとして試しているのですが、なかなか一筋縄ではいかないようで、試行錯誤しています。 おそらく他にも似たようなことでハマったりしている人もいるかと思うので、これまで困ったこと、そして(回避できた場合は)回避策を書いてみます。 なお、RBSやSteepとはなんぞやといった辺りは特に説明せずにいきなり題に入るため、詳しくない方はmameさんの記事「Ruby 3の静的解析機能のRBS、TypeProf、Steep、Sorbetの関係についてのノート」などを参考にしてください。 Steep & RBSで困ったところ BigDecimalを導入してもto_dが使えない (追記: ksssさんにrbsのstdlibのテストの書き方を教えてもらったので書けるようになりました! 結果はpull requestしてみたので、最終的に取り込まれれば使えるようにな

    Rails + RBS & Steepを試してみて困ったところとか感想とか - Qiita
    Nyoho
    Nyoho 2022/03/23
    “その時間を圧縮するにはより多くの人の参加と協力が必要になりそうです”
  • TwitterにOAuth 2.0でログインできるomniauth-twitter2 gemを作りました | うなすけとあれこれ

    tl;dr unasuke/omniauth-twitter2: omniauth strategy for authenticating with twitter oauth2 ↑ これをつくりました Twitter認証、要求される権限がデカい問題 Twitter認証でログインできるWebアプリというものは色々あり、便利なので日々使っているという方は多いことでしょう。 しかしTwitter loginで要求される権限の粒度はこれまで以下の3つしかありませんでした。 Read Read and Write Read and write and Direct message これはあまりにも大雑把で、「要求される権限が広すぎる!」「いやいやこういう事情で……」というやりとりを見掛けたことは何度もあります。 「Twitterのアプリ連携で余計な権限まで求められる!」その理由がよくわかるまとめ【

    TwitterにOAuth 2.0でログインできるomniauth-twitter2 gemを作りました | うなすけとあれこれ
  • Ruby 3.1.0 リリース

    Posted by naruse on 25 Dec 2021 Ruby 3.1系初のリリースである、Ruby 3.1.0 が公開されました。Ruby 3.1は3.0と高い互換性を保ちながら、多くの機能を追加しています。 YJIT: New experimental in-process JIT compiler Ruby 3.1では、Shopifyが開発した新しいプロセス内JITコンパイラであるYJITをマージしました。 2018年のRuby 2.6でMJITをマージして以来、そのパフォーマンスは年々改善され、去年にはRuby3x3を無事達成しました。比較的大規模なOptcarrotベンチマークでは輝かしい高速化を達成したMJITですが、一方で現実の業務アプリケーションの性能はこれまで改善出来ていませんでした。 近年Shopifyは彼らのRailsアプリケーションを高速化するため、Rub

    Nyoho
    Nyoho 2021/12/26
    debug.gemの統合使ってみたい(Emacsでという意味で)
  • プロと読み解く Ruby 3.1 NEWS - クックパッド開発者ブログ

    技術部の笹田(ko1)と遠藤(mame)です。クックパッドRuby (MRI: Matz Ruby Implementation、いわゆる ruby コマンド) の開発をしています。お金をもらって Ruby を開発しているのでプロの Ruby コミッタです。 日 12/25 に、ついに Ruby 3.1.0 がリリースされました(Ruby 3.1.0 リリース )。今年も Ruby 3.1 の NEWS.md ファイルの解説をします。NEWS ファイルとは何か、は以前の記事を見てください。 プロと読み解く Ruby 2.6 NEWS ファイル - クックパッド開発者ブログ プロと読み解くRuby 2.7 NEWS - クックパッド開発者ブログ プロと読み解くRuby 3.0 NEWS - クックパッド開発者ブログ 記事は新機能を解説することもさることながら、変更が入った背景や苦労な

    プロと読み解く Ruby 3.1 NEWS - クックパッド開発者ブログ
    Nyoho
    Nyoho 2021/12/25
  • Mastodonをruby-3.1.0-preview1で走らせてみる

    今日はハワイ時間(UTC-10)で2021年12月19日です。Rubyist近況[1] Advent Calendar 2021に憧れてあわててこの記事をまとめてみました。このところ毎年Rubyのリリース前に楽しませてもらっている作業についてまとめて、12月4日の隙間にもぐりこませてもらいます。 Mastodon MastodonRails 6で書かれたマイクロブログサービスで、他のMastodonサーバやActivityPubに準拠したサービスと連合してやりとりをすることができます。僕にとってうれしいのは、ぼっちで運用しているサーバでも連合先から常に自然な負荷を送ってもらえることです。ありがたい。今回はこの性質を活用して、自分の運用しているサーバ https://mastodon.zunda.ninja のRubyを3.0.3から3.1.0-preview1にしてみました。現状のコード

    Mastodonをruby-3.1.0-preview1で走らせてみる