タグ

ブックマーク / gihyo.jp (32)

  • Lrama LRパーサジェネレータが切り開く、Rubyの構文解析の未来 | gihyo.jp

    Ruby 3.3リリース! 新機能解説 Lrama LRパーサジェネレータが切り開く⁠⁠、Rubyの構文解析の未来 シンプルで強力な文法はRubyの特徴のひとつだと言われています。その文法を技術的に支えているのがパーサです。Ruby 3系のひとつの目標として、LSPやRBS、TypeProfをはじめとした各種ツールの拡充があります。それらのツールは多くの場合AST(抽象構文木)というプログラムをパースした結果を対象に解析を行います。そこでこれらのツールに対してより良いAPIを提供するべく、Rubyのパーサを刷新する動きが活発になっています。 最新のRuby 3.3ではパーサの内部に大規模な改善が入っています。この記事ではRuby 3.3で導入されたLrama LALR (1) パーサジェネレータについて紹介します。 パーサジェネレータ —⁠—パーサをどのようにして実装するか パーサを実装す

    Lrama LRパーサジェネレータが切り開く、Rubyの構文解析の未来 | gihyo.jp
  • Prism:エラートレラントな、まったく新しいRubyパーサ | gihyo.jp

    Ruby 3.3リリース! 新機能解説 Prism⁠⁠:エラートレラントな⁠⁠、まったく新しいRubyパーサ Prismは、Ruby 3.3.0にバンドルされた新しいライブラリで、プログラミング言語Rubyの新しいパーサであるPrismパーサのバインディングです。Prismはエラートレラント、移植性、メンテナンス性、高速性、効率性を考慮して設計されています。この記事では、Prismの歴史、設計、API、そして今後の課題について取り上げます。 使用方法 Rubyバインディングを通してPrismパーサを使うにはrequire "prism"をして、Prismモジュールのparseメソッド、または他のparse_*系のメソッドを呼んでください。次に例を示します。 require "prism" Prism.parse("1 + 2") parseメソッドは、パース結果のオブジェクトを返します。こ

    Prism:エラートレラントな、まったく新しいRubyパーサ | gihyo.jp
  • Ruby 3.3 YJITのメモリ管理とRJIT 〜すべてが新しくなった2つのJITを使いこなす | gihyo.jp

    Ruby 3.3リリース! 新機能解説 Ruby 3.3 YJITのメモリ管理とRJIT 〜すべてが新しくなった2つのJITを使いこなす 2023年12月25日、Ruby 3.3.0がリリースされ、様々な新機能が加えられました。連載では実際に携わった皆さんにその新しいRubyをご紹介いただきます。 RubyJust-In-Time(JIT)コンパイラという機能を備えており、これを有効化すると実行時に機械語を生成して様々な最適化が行なわれ、実行が高速になります。Ruby 3.3にはYJITとRJITという2つのJITコンパイラがあり、デフォルトでは無効になっていますが、それぞれ--yjitと--rjitで有効化できます。 この回では、Ruby 3.3でYJITの性能特性が変化した点や、YJITに新たに追加された便利な機能、またRJITはどのように使うものであるかについて解説します。 YJ

    Ruby 3.3 YJITのメモリ管理とRJIT 〜すべてが新しくなった2つのJITを使いこなす | gihyo.jp
    xef
    xef 2024/01/22
  • 第793回 自作のカーネルモジュールをRustで作る | gihyo.jp

    第791回では基的なカーネルモジュールの作り方とそれをDKMSに対応させる方法を紹介しました。今回はカーネルの新しい機能のひとつである「Rustでカーネルモジュールを作る方法」を紹介しましょう。 UbuntuカーネルにおけるRustの対応 Linuxカーネルでは、Kernel 6.1からプログラミング言語である「Rust」の機能が取り込まれました。これは「Rust for Linux」の成果で、カーネルの機能をC言語やアセンブラだけでなく、Rustでも書けるようにするというものです。メモリー安全性や強い静的型付けなどの特徴を取り込むことで、カーネルのセキュリティ問題の原因の多くを占めるメモリー関連の不具合に対して、一種の対策になることが期待されます。 あらゆるケースにおいてRustに置き換えられるというわけではありませんが、今後カーネルのコードを読み書きする上でC言語やアセンブラだけでな

    第793回 自作のカーネルモジュールをRustで作る | gihyo.jp
    xef
    xef 2023/12/20
  • すべてのフェーズでミスが重なった ―全銀ネットとNTTデータ、全銀システム通信障害の詳細を説明 | gihyo.jp

    すべてのフェーズでミスが重なった ―全銀ネットとNTTデータ⁠⁠、全銀システム通信障害の詳細を説明 全国銀行資金決済ネットワーク(以下、全銀ネット)とNTTデータは12月1日、2023年10月10日~11日にかけて全国銀行データ通信システム(以下、全銀システム)で発生した通信障害に関する報道関係者向けの説明会を開催しました。件についてはNTTデータが11月6日に行った途中経過報告の内容をもとにレポートしましたが、今回、全銀ネットとNTTデータが揃って会見を行ったことで、より詳細な障害の原因が判明したので、あらためてその内容を検証してみたいと思います。 説明会の登壇者。左から、全銀ネット 企画部長 千葉雄一氏、事務局長兼業務部長 小林健一氏、理事長 辻松雄氏、NTTデータ 代表取締役社長佐々木 裕氏、取締役副社長執行役員 鈴木正範氏 なお、全銀ネットとNTTデータは、今回の障害に関して金融

    すべてのフェーズでミスが重なった ―全銀ネットとNTTデータ、全銀システム通信障害の詳細を説明 | gihyo.jp
    xef
    xef 2023/12/06
  • 追悼 Bram Moolenaar ~Vimへの情熱と貢献を振り返る | gihyo.jp

    Bram Moolenaar the Creator of Vim 2023年8月5日、悲しい知らせが入ってきました。長年、多くのエンジニアに愛され今もなお使われ続けているテキストエディタVimの作者Bram Moolenaar氏が同月3日に亡くなったという知らせです。ショックでしばらく信じることができませんでした。 筆者は長年Vimを使い、Vimに多くのコントリビュートを行ったり、その都度Bram氏と対話したり議論したりしてきました。そのBram氏が突然、この世界からいなくなってしまったことをしばらく受け入れられなかったからです。 記事では追悼の意味を込め、Bram氏がどのようにVimの開発を始め、Vimがどのように広まっていったのか、また長年Vimを追い続けてきた筆者から見たBram氏の人物像を筆者の思いを交えて解説していきます。 Vim歴史 Bram氏についてお話しする前に、まず

    追悼 Bram Moolenaar ~Vimへの情熱と貢献を振り返る | gihyo.jp
    xef
    xef 2023/11/20
  • 第2章 詳解QUIC ~ TCPに代わり下位層で使用する新しいトランスポートプロトコル | gihyo.jp

    章では、HTTP/3がTCPに代わって下位層で用いるQUICについて解説します。 QUICはトランスポートプロトコル QUICはトランスポートプロトコルです。QUICの説明に入る前に、トランスポートプロトコルついておさらいします。 TCP/IPの4階層モデル プロトコルは階層で役割を分担しています。TCP/IPの4階層モデルでは、アプリケーション層、トランスポート層、インターネット層、ネットワークインタフェース層に分かれます(図1⁠)⁠。 図1 TCP/IPの4階層モデル アプリケーション層に分類されるアプリケーションプロトコルは、クライアントやサーバで動作するアプリケーションの動作に関するデータやメッセージの通信ルールを規定します。たとえばSMTP(Simple Mail Transfer Protocol)は、メールを送信する通信ルールを規定しています。HTTPはこの層に属します。

    第2章 詳解QUIC ~ TCPに代わり下位層で使用する新しいトランスポートプロトコル | gihyo.jp
    xef
    xef 2023/08/19
  • PythonとRustの融合:PyO3/maturinを使ったPythonバインディングの作成入門 | gihyo.jp

    Cargo.tomlにはデフォルトのメタデータとPyO3の依存関係(バージョン)などが記載されています。また、pyproject.tomlにはビルドツールとしてmaturinが使用されることなどがあらかじめ定義されています。 注目すべきはRustスクリプトを記述するsrc/lib.rsファイルです。以下のようなscaffold(足場)が最初から記載されています。 src/lib.rsにデフォルトで記載されているscaffold 1 use pyo3::prelude::*; 2 3 /// Formats the sum of two numbers as string. 4 #[pyfunction] 5 fn sum_as_string(a: usize, b: usize) -> PyResult<String> { 6 Ok((a + b).to_string()) 7 } 8 9

    PythonとRustの融合:PyO3/maturinを使ったPythonバインディングの作成入門 | gihyo.jp
  • メモリプロファイラ「Memray」の解説 | gihyo.jp

    Memray公式サイトのキャプチャ インストール方法は以下のとおりです。 $ pip install memray Memrayの基的な使い方 Memrayがインストールされていると、memrayコマンドが使えるようになります。 プロファイリング対象のスクリプトをmemrayから実行すると、スクリプトを実行した同じフォルダに実行時のプロファイリング結果がバイナリ形式でファイルに保存されます。 プロファイルの実行 サンプルのPythonスクリプトとしてsample.pyを準備します。以下のコードでは、状態表示をわかりやすくするために1秒間の待ちを入れています。実行内容は、リスト内包表記で要素数が約1億個のリストを生成しています。 sample.py - リスト内包表記でリストを作る import time time.sleep(1) # 状態表示をわかりやすくするために1秒待つ resul

    メモリプロファイラ「Memray」の解説 | gihyo.jp
  • 入門 継続的プロファイリング 〜Kubernetesにおけるオブザーバビリティの最前線〜 | gihyo.jp

    こんにちは。サイバーエージェントの杉浦です。 連載「5分でわかる!Kubernetes/CloudNative Topics」の第6回は、オブザーバビリティに注目して、Kubernetesにおける継続的プロファイリングについて取り上げます。 オブザーバビリティとプロファイル 安定してサービスを提供するためには、デプロイしたアプリケーションの状態を継続的に観測し、不具合やその予兆を察知・対処していく必要があります。 アプリケーションの状態を観測する能力をオブザーバビリティ(Observability[1])といいます。このオブザーバビリティを確保するにあたってどのようなデータを用意すべきか、従来ではメトリクス・トレース・ログの3つを柱とすべきだとされていました。 それぞれメトリクスはCPU使用率やメモリ使用量といった時系列の数値データ、トレースは個々のアプリケーションを伝播する特定のリクエス

    入門 継続的プロファイリング 〜Kubernetesにおけるオブザーバビリティの最前線〜 | gihyo.jp
  • 新しい静的コード解析ツール「Ruff」をご紹介 | gihyo.jp

    福田(@JunyaFff)です。今月の「Python Monthly Topics」は、最近私が個人的に気になっている静的コード解析ツールRuffについて紹介します。 どんなプログラミング言語でも、静的コード解析ツール(リンター)やフォーマッターは非常に便利です。Pythonでコードを書く場合、皆さんはどんなツールを使っているでしょうか?Flake8やBlack、isortなどが人気で、世界中で多くのPythonエンジニアに利用されています。 Ruffは2022年8月にリリースされた比較的新しい、Pythonのリンター兼フォーマッターです。Ruffはリリースからまだ半年足らずしか経っておりませんが、多くの著名なライブラリで採用[1]され、毎日のようにアップデートされています。2023年3月時点でのRuffの使い方、そしてこれからの発展について、記事で紹介します。 Ruffとは? ここでは

    新しい静的コード解析ツール「Ruff」をご紹介 | gihyo.jp
    xef
    xef 2023/03/09
  • 2022年のRustの進捗の話をしましょう ~TechFeed Experts Night#9講演より | gihyo.jp

    記事は、2022年11月に開催された「TechFeed Experts Night#9 〜 Rust/WebAssemblyの「いま」を探る」のセッション書き起こし記事「年末ですし、2022年のRustの進捗の話をしましょう」を転載したものです。オリジナルはTechFeedをご覧ください。 私はマップボックスジャパン合同会社という会社でソフトウェアエンジニアをしているyukiです。Twitterでは@helloyuki_で、TechFeedではRustの公認エキスパートとして活動しています。最近はや連載記事を書くことも多かったのですが、そのほかにはRust Tokyoの運営をしたり、「⁠This Week in Rust」というRustの注目記事をピックアップしたWebマガジンの日語記事レビュアーをしたり、TwitterRustのお役立ち情報を発信したりしています。 Mapboxで

    2022年のRustの進捗の話をしましょう ~TechFeed Experts Night#9講演より | gihyo.jp
    xef
    xef 2023/03/04
  • 第4回 テストダブル ~忠実性と決定性のトレードオフを理解する~ | gihyo.jp

    自動テストを書く際に使いどころをマスターしたいテクニックがテストダブル(Test Double)です。テストダブルを効果的に使えばテストの網羅性、速度、再現性を向上させますが、使いどころを誤れば変更や改善の妨げになりかねません。今回は、テストダブルの利点と注意点をまとめます。 テストダブルとは何か テストダブルとは、自動テストに使用する偽物、代用品のことです。たとえば、データベースや外部サービスの動作を模倣した偽物(テストダブル)を作り、自動テストから使います。 自動テストで偽物を活用するテクニックを「モック」(⁠Mock)と呼ぶ方も多いですが、より正確には、テストに偽物を使う技術を総称してテストダブルと呼びます。この場合の「ダブル」は身代わりや影武者のようなイメージでとらえてください。テストに使う身代わりなのでテストダブルです。テストダブルの種類として詳しくはスタブ(Stub⁠)⁠、スパ

    第4回 テストダブル ~忠実性と決定性のトレードオフを理解する~ | gihyo.jp
    xef
    xef 2023/02/22
  • Rustの非同期デバッグツールを使いこなせ! ~TechFeed Experts Night#9講演より | gihyo.jp

    TechFeed Experts Night Pick up Rustの非同期デバッグツールを使いこなせ! ~TechFeed Experts Night#9講演より 記事は、2022年11月に開催された「TechFeed Experts Night#9 〜 Rust/WebAssemblyの「いま」を探る」のセッション書き起こし記事「Rustの非同期デバッグツールを使いこなせ! by κeen」を転載したものです。オリジナルはTechFeedをご覧ください。 「Rustの非同期デバッグツールを使いこなせ!」というタイトルで発表していきたいと思います。 κeenと申します。Twitterなどで騒がしくしている人なので、見たことある人も多いのではないかなと思います。仕事は、Idein Incという会社にいて、しばらくRustを書いている期間がありました。 今日は非同期の話をしていきますが、

    Rustの非同期デバッグツールを使いこなせ! ~TechFeed Experts Night#9講演より | gihyo.jp
    xef
    xef 2023/02/17
  • Rust製高速データフレームライブラリ、Polarsを試す | gihyo.jp

    門脇@satoru_kadowakiです。今月のPython Monthly Topicsでは、Rust製の高速データフレームライブラリ Polars について紹介します。 Polarsとは Pythonデータ分析に使用される主なライブラリに pandas があります。Polarsはpandasと同様にデータフレームというデータ構造オブジェクトを提供するサードパーティライブラリです。特にpandasを意識して作られており、メインページに「Lightning-fast DataFrame library for Rust and Python」とあるように、Rustによる高速処理を謳っています。 Polarsのリポジトリや関連ドキュメントは以下を参照してください。 Github: https://github.com/pola-rs/polars ユーザーガイド: https://pola

    Rust製高速データフレームライブラリ、Polarsを試す | gihyo.jp
  • 2021年のウェブ標準とブラウザ | gihyo.jp

    2021年になりましたね。 矢倉眞隆(myakura)です。ウェブ標準やブラウザに興味のあるウェブ開発者です。gihyo.jpでは2009年に「Web標準とその周辺技術の学び方」という連載をしていました。 今回は昨年の泉水さんに代わり、2021年のウェブ標準やブラウザの動向を占おうと思います。2020年は世界もブラウザもそれなりに大きな出来事がありましたので、2020年の動きをまずおさえ、そのうえで2021年はどうなるのかを考えてみました。 W3Cのプロセス改訂でLiving Standardライクな仕様の改訂が増えていく W3Cは2020年9月に、新しいプロセス文書と特許ポリシーを公開しました。 新しい文書プロセスはW3Cの組織の定義や標準化の流れ、意思決定などについて定めた文書です。ここ数年は毎年更新されていますが、2020年はこれまでと比べて最大級とプレスリリースでもうたわれています

    2021年のウェブ標準とブラウザ | gihyo.jp
  • 富岳のディープラーニング処理を支えるJITコンパイラ「Xbyak_aarch64」誕生秘話 | gihyo.jp

    TOP500、HPCG、HPL-AI、Graph500での世界1位獲得、新型コロナウイルス対策を目的とした試行利用など、話題に事欠かないスーパーコンピュータ「富岳⁠」⁠。そのディープラーニング処理を高速化するには、あるOSSの存在が必要不可欠でした。それが、サイボウズ・ラボ(⁠株⁠)の光成滋生氏が開発したx86/x64向けC++ JITアセンブラ「Xbyak」の設計思想をベースに、光成氏の助言のもと(⁠株⁠)富士通研究所が開発したArm向けのC++ JITアセンブラ「Xbyak_aarch64」です。Xbyak_aarch64は、富岳上でのディープラーニング処理を実現するキー技術のひとつです。 記事では、Xbyakの開発者である光成氏を中心に、(⁠株)富士通研究所の上席研究員であり、Linuxカーネルへのコアコミッターでもある小崎資広氏を聞き手役として、同研究所シニアリサーチャーの川上健

    富岳のディープラーニング処理を支えるJITコンパイラ「Xbyak_aarch64」誕生秘話 | gihyo.jp
    xef
    xef 2020/11/19
  • Javaでなぜ問題が起きるのか 〜システムをきちんと運用するための基礎知識 記事一覧 | gihyo.jp

    運営元のロゴ Copyright © 2007-2024 All Rights Reserved by Gijutsu-Hyoron Co., Ltd. ページ内容の全部あるいは一部を無断で利用することを禁止します⁠。個別にライセンスが設定されている記事等はそのライセンスに従います。

    Javaでなぜ問題が起きるのか 〜システムをきちんと運用するための基礎知識 記事一覧 | gihyo.jp
    xef
    xef 2020/09/25
  • 第602回 2020年になったのでテキストに半角スペースで暗号文を埋め込もう | gihyo.jp

    2020年が始まりました。「⁠2020」という数字列を見ると何か見えてきませんか。そう、半角スペースですね。そこで今回は2020年にちなんで、テキストファイルに半角スペースを用いて暗号文を埋め込む方法を紹介しましょう。 テキストファイルにメッセージを埋め込める「stegsnow」 半角スペースはASCIIコードで「0x20」となります[1]⁠。UTF-8文化圏で生活している一般的なユーザーであれば、適当なファイルやストレージをバイナリダンプした際に、適度な間隔で「0x20」が登場するデータを見ることで「ここはなんか英文っぽいな」と判断することがよくあるでしょう[2]⁠。hdコマンドやhexdumpコマンドを使う場合はASCIIの印字可能な文字もセットでダンプするので、英文ぐらいなら一発でわかるのですが、そういうことができないケースもあるのです。 結果として「0x20」もしくはプレフィック

    第602回 2020年になったのでテキストに半角スペースで暗号文を埋め込もう | gihyo.jp
  • Perl Hackers Hub:連載|gihyo.jp … 技術評論社

    最終回 Carmelによる依存モジュール管理 CPANモジュールの更新を高速⁠⁠、安全に(2) 宮川達彦[著],牧大輔,福貴之,松木雅幸,大沢和宏[監修] 2023-10-17 最終回 Carmelによる依存モジュール管理 CPANモジュールの更新を高速⁠⁠、安全に(1) 宮川達彦[著],牧大輔,福貴之,松木雅幸,大沢和宏[監修] 2023-10-16 第79回最近Perlに追加された実験的機能 try文⁠⁠、defer文⁠⁠、class文(2) 石垣憲一[著],牧大輔,福貴之,松木雅幸,大沢和宏[監修] 2023-08-18

    Perl Hackers Hub:連載|gihyo.jp … 技術評論社
    xef
    xef 2019/10/22