タグ

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

  • 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
    emonkak
    emonkak 2024/02/03
  • 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
    emonkak
    emonkak 2024/01/22
  • 第3回 APCAを活用して文字の視認性を確保したデザインを実践する | gihyo.jp

    しかし、実際のデザインではこの表にないフォントサイズやウェイトを使いたい場合もあるでしょう。その場合には、シミュレータやルックアップテーブルを参照することで、より精度の高い確認が可能になります。 ルックアップテーブルでフォントサイズとウェイトから必要なコントラストを確認する シミュレーションの説明の前に、より細かい基準がどのように定められているか見るために、APCAのルックアップテーブルを見てみましょう。 このルックアップテーブルは、WCAG3のシルバーレベルを満たすための基準を示しています。ブロンズレベルに追加して、この基準に準拠することでより精度の高いコントラストの確保が可能になります。 以下は、公式のシミュレーションサイトAPCA Contrast Calculatorにあるルックアップテーブルのスナップショットです。ページの下部、APCA Font Table: Silver Le

    第3回 APCAを活用して文字の視認性を確保したデザインを実践する | gihyo.jp
  • 第2回 WCAG3のコントラスト基準APCAの考え方と実例 | gihyo.jp

    デジタルコンテンツにおけるアクセシビリティ、特にコントラストの基準について解説する連載の第2回目です。前回の記事では、現在のWCAG2のコントラスト基準と課題について解説しました。今回はWCAG3で採用が検討されている新しいコントラスト基準、APCAについて解説します。 APCAとは WCAG 2.0でコントラストの基準が策定されて以降、ディスプレイやWebコンテンツ、CSSの機能、および視覚科学の進歩など様々な状況が変化しました。WCAGの基準についても、コントラストや視認性についてより知覚を正しくモデル化するガイドラインが求められるようになりました。 APCA(Advanced Perceptual Contrast Algorithm)はWCAG3にて現行のコントラストに代わる基準として開発・検討されている、新しいコントラスト基準です。前回紹介したようなWCAG2の基準の課題に応える

    第2回 WCAG3のコントラスト基準APCAの考え方と実例 | gihyo.jp
  • 第42回 Linuxカーネルのケーパビリティ[1] | gihyo.jp

    前回からだいぶ間隔が空いてしまいました。前回の最後に案内したudzuraさんのCRIUに関する記事はもう少し時間がかかるようですので、もうしばらく私が担当したいと思います。 今回から数回は、Linuxカーネルに実装されているケーパビリティについて説明します。ケーパビリティは2.2カーネルのころから実装されてきているかなり古くからある機能で、コンテナ向けの機能ではなく一般的に使われている機能です。もちろん、コンテナの安全性を高めるための重要な機能でもあります。 setuid 一般的にはUNIX系のOSでは、プロセスはroot権限(実効ユーザIDが0)で実行される特権プロセスと、一般ユーザ権限で実行される(実効ユーザIDが0以外の)非特権プロセスに分けられます。 一般ユーザは、通常はそのユーザの権限でプログラムを実行すれば良いのですが、一般ユーザが実行するプログラムであっても処理の内容によって

    第42回 Linuxカーネルのケーパビリティ[1] | gihyo.jp
  • gihyo.jp編集部におけるMarkdown記法 | gihyo.jp

    稿では、gihyo.jp編集部で利用しているMarkdownファイルの記述方法を主に解説します。 注意:gihyo.jp編集部内でのみ採用しているMarkdownの書き方をまとめた文書を、記事の体裁を取って公開したものです。なお、記事公開後に記述方法を追加・変更する可能性もあります。 Markdownとは? はじめに、筆者の把握している範囲でMarkdownについて概説しておきます。 近年は一般向けのウェブサービスやテキストエディタでも利用されてきているMarkdown。端的に言えば、テキストファイル上で文書を書くための構文です。文書の読みやすさに焦点を当てており、Markdown形式のテキストファイル(=Markdownファイル)をそのまま見れば文書とその構造が理解できるように、Markdown特有の編集記号や字下げを用いて表現します。また、MarkdownファイルをHTMLファイルに

    gihyo.jp編集部におけるMarkdown記法 | gihyo.jp
  • 第690回 BCCでeBPFのコードを書いてみる | gihyo.jp

    第688回の「eBPFのコンパイラーに対応したツールでさまざまな挙動を可視化する」ではBPF Compiler Collectionに付属の各種サンプルツールの使い方を紹介しました。今回はコンパイラーを活用して、自分でeBPF用コードを書くための基礎を学んでみましょう。 BCCのインストールとドキュメント 第688回も紹介したように、カーネル3.15で追加されその後拡充を続けている「eBPF」は任意の外部プログラムをカーネルの中で、より安全に実行できる仕組みです。カーネルモジュールを作る代わりに、独自のバイトコードをコンパイラーで生成し、それをカーネル内部にロード・実行することになります。これを使えばシステムコールの先のカーネルの状態を、プログラマブルに解析可能になります。 eBPF自体はカーネルの仕組みであり、ユーザーランドから使うためには、eBPF用のバイトコードにコンパイルする必要が

    第690回 BCCでeBPFのコードを書いてみる | gihyo.jp
  • 第688回 eBPFのコンパイラーに対応したツールでさまざまな挙動を可視化する | gihyo.jp

    実行中のシステムの挙動を詳細にトレースする仕組みは、特に「よくわからない問題」に遭遇している時に重要です。今回はLinux向けのトレーシングツールの命とも言えるeBPFを利用した各種ツールを紹介します。 eBPFに関する記事が今回以降、数回にわたって解説されています。あわせてご覧ください。 第688回 eBPFのコンパイラーに対応したツールでさまざまな挙動を可視化する(今回の記事) 第690回 BCCでeBPFのコードを書いてみる 第692回 sysfsやbpftoolを用いたeBPFの活用 第694回 libbpfとclangでポータブルなBPF CO-REバイナリ作成 第695回 入門BPF CO-RE eBPFとBPF Compiler Collection 改めて言うまでもなく、Linuxカーネルもしくはカーネル上で動いている各種タスクのパフォーマンスや挙動を調べなくてはならない

    第688回 eBPFのコンパイラーに対応したツールでさまざまな挙動を可視化する | gihyo.jp
  • 第686回 Bubblewrap/bwrapを使って管理者権限なしで非特権コンテナーを作る | gihyo.jp

    LXDにしろDockerにしろsystemd-nspawnにしろ、コンテナーを作るには直接的であれ間接的であれ管理者権限が必要です。しかしながら、これらのコンテナー技術の基になっているLinuxカーネルの名前空間は、必ずしも管理者権限で作らなければいけないわけではありません。今回は、ユーザー権限で非特権コンテナーを構築できるBubblewrap(bwrapコマンド)を紹介します。 Bubblewrapとunshare LXDやDockerといったコンテナー管理ツールは、管理者権限でデーモンを立ち上げ、クライアントがそのデーモンと通信することでコンテナーインスタンスを構築しています。また第491回の「いまから『あえて』systemdのコンテナ機能を使ってみる」で紹介されているsystemd-nspawnもコンテナーインスタンス作成時にsudoコマンドを使っています。 しかしながらRed Ha

    第686回 Bubblewrap/bwrapを使って管理者権限なしで非特権コンテナーを作る | gihyo.jp
  • 第674回 カーネルのクラッシュ情報を解析する | gihyo.jp

    第673回の「カーネルのクラッシュ情報を取得する」では、カーネルクラッシュ時に情報を収集する仕組みを有効化しました。得られた情報は活用しないと意味がありません。今回はその中身を解析する方法を紹介します。 デバッグパッケージのインストール 第673回では、意図的にシステムをクラッシュさせることで、dmesgとvmcoreを取得しました。カーネルが今際の際に次につながる情報を残してくれたのです。「⁠しかしながらあのクラッシュが最後のpanicだとは思えない。もし、同じカーネルが続けて使われるとしたら、あのpanicの同類が、また世界のどこかへ現れてくるかもしれない……」 最初に行うべきなのは、前回紹介したように問題発生時のdmesgを読むことです。これである程度、状況の絞り込みは行えますし、運が良ければ原因がわかることもあります。しかしながら、dmesgだけだと「問題が起きた場所」はわかっても

    第674回 カーネルのクラッシュ情報を解析する | gihyo.jp
  • 2021年6月15日 Get Vaccinated! ―Linus、反ワクチン主義者に"ややおこ"でmRNAワクチン接種を説く | gihyo.jp

    Linux Daily Topics 2021年6月15日Get Vaccinated! ―Linus反ワクチン主義者に"ややおこ"でmRNAワクチン接種を説く カーネル開発のルールに従わない開発者に対し、ときには四文字言葉をまじえた容赦ない攻撃(口撃)で罵倒していたかつてのLinus Torvalds。2018年9月の謝罪と休養、そしてLinuxコミュニティ内でのCoC(Code of Conduct: 行動規範)の制定により、Linusが開発者メーリングリスト「LKML」を含む公の場で特定の人物や企業を罵倒するシーンはほぼ見かけなくなってきた。だが、3年近くに渡って発言の節度を保ってきたLinusでも、反ワクチン派とみられる開発メンバーの投稿にはどうにも我慢がならなかったようだ。 Re: Maintainers / Kernel Summit 2021 planning kick-o

    2021年6月15日 Get Vaccinated! ―Linus、反ワクチン主義者に"ややおこ"でmRNAワクチン接種を説く | gihyo.jp
  • 第666回 Waypipeを用いてWayland環境で「X転送 over SSH」っぽいことをしてみる | gihyo.jp

    先日リリースされたUbuntu 21.04では、長年の懸案だった「Waylandセッションのデフォルト化」が再度実施されました。今後2022年4月にリリースされる予定のUbuntu 22.04 LTSに向けて、さまざまな問題を洗い出し、対応を行っていくことになります。今回はそんなWayland環境で「X転送 over SSH」っぽいことを実現してみましょう。 Waylandセッションになったということ Waylandとは2008年に登場したの次世代ディスプレイサーバーです。もともとは、X.Orgの開発者でもあったKristian Høgsbergが最小のディスプレイサーバーとウィンドウコンポジッターを組み合わせたものとして個人的に作成していたソフトウェアでした。その後、X.Orgの開発者たちがX Window System/X.Orgを置き換える次世代のディスプレイサーバーとして開発に参加

    第666回 Waypipeを用いてWayland環境で「X転送 over SSH」っぽいことをしてみる | gihyo.jp
  • 2021年4月15日 パニックお断り―Linus、"Rust for Linux"の盛り上がりに釘を刺す | gihyo.jp

    Linux Daily Topics 2021年4月15日パニックお断り―Linus、"Rust for Linux"の盛り上がりに釘を刺す 開発者の間で人気上昇中のRustだが、Linuxカーネル開発においても1年ほど前からメインラインでのRustサポート―新たにデバイスドライバを記述する言語としてRustを認めるよう求める声が強くなりつつある。3月にはカーネル開発者のMiguel Ojedaが最初の"Rust for Linux"となるパッチをlinux-next(次期カーネルへのマージを希望するパッチが集められたGitリポジトリ)にポストし、Stephen Rothwellによってマージされた。 kernel/git/next/linux-next.git - The linux-next integration testing tree Ojedaはさらに一歩踏み込んだステップとし

    2021年4月15日 パニックお断り―Linus、"Rust for Linux"の盛り上がりに釘を刺す | gihyo.jp
  • 第110回 Invisible Indexesを使って気軽にチューニングを始めてみる | gihyo.jp

    使用されず役に立たないインデックスを定義するのは、SQLアンチパターンの1つ「インデックスショットガン」として知られています。使用されていないインデックスを定義するのは、ディスク容量を圧迫して、さらに更新コストも掛かるという良いこと無しな状態です。 ただ実際には、あなたが使用されていないインデックスを見つけたとしても、安易にドロップするのは非常に危険です。ドロップするのは時間がかかりませんが、インデックスを再構築するまでには時間がかかります。 もしも万が一そのインデックスが使用されているクエリが存在するとしたら、その時点から障害につながってしまう可能性があります。ドロップはしたくないけど、使わないようにして影響を確認したい……、今回はそんな時に便利なMySQL 8.0の新機能「Invisible Indexes」を使ってインデックスを外した時の影響を調べてみましょう。 検証環境 今回はDo

    第110回 Invisible Indexesを使って気軽にチューニングを始めてみる | gihyo.jp
  • 2020年8月26日 Linuxカーネル、約2500の"フォールスルー"をリプレース | gihyo.jp

    Linus Torvaldsは8月24日(米国時間⁠)⁠、2020年10月のリリースに向けて開発中の「Linux 5.9」において、カーネルエンジニアGustavo Silvaの修正パッチをマージした。このパッチではカーネル全体で使われていた2484もの「/* fall through */」および類似のコメント部分をすべて「fallthrough;」にリプレースしているほか、不要なfall-throughの削除も行われている。 Merge tag 'fallthrough-pseudo-keyword-5.9-rc3' of git://git.kernel.org/pub/scm/linux/kernel/git/gustavoars/linux -Linux kernel source tree Linuxカーネルのメインライン開発では、今回のパッチを提供したSilvaを中心に、s

    2020年8月26日 Linuxカーネル、約2500の"フォールスルー"をリプレース | gihyo.jp
  • 第617回 SOCKSを利用してSSHのみで簡易VPNを構築する | gihyo.jp

    リモートワークを行う際に俎上に載る問題のひとつが「プライベートネットワークにある組織内リソースにどのようにアクセスするか」です。今回はそんな問題の解決策のひとつとなりうる、SSH経由でSOCKSプロキシを構築する方法を紹介しましょう。 HTTP/HTTPSが使えるVPN(のようなもの)がほしい ここからいろいろ述べますが、簡単に言うと「SSHのDynamic Port ForwardingをSOCKSプロキシとして利用する」というだけの話です。 さて、リモートワークによる働き方は、会社の文化セキュリティ要件によって多種多様に分かれます。その中でも最も「ゆるい」のが、「⁠個人の端末・インターネット回線を用いてあとは良しなにやってくれ」というものでしょう。作業がインターネット上で完結する、つまりパブリックなクラウドサービスを積極的に活用している業務であれば、それでもおおよそなんとかなります。

    第617回 SOCKSを利用してSSHのみで簡易VPNを構築する | gihyo.jp
    emonkak
    emonkak 2020/05/05
  • 2020年1月10日 Don't use ZFS ―Linus、ZFSをマージしない姿勢をあらためて強調 | gihyo.jp

    Linux Daily Topics 2020年1月10日Don't use ZFS ―Linus、ZFSをマージしない姿勢をあらためて強調 「Don't use ZFS. ―ZFSは使わない。その理由はシンプルだ。ZFSはこれまでずっと、バズワード以上の何物でもなく、そして実感するのだけど、例のライセンシング問題は僕にとってZFSを価値のない存在と思わせるだけだ」 1月6日、IT業界に特化したオンラインメディア「Real World Tech」のフォーラムで繰り広げられたあるスレッドにて、Linus TorvaldsはZFSをメインラインにマージする予定がないことをあらためて明確に主張している。 Do not blame anyone. Please give polite, constructive criticism By: Linus Torvalds -Real World Te

    2020年1月10日 Don't use ZFS ―Linus、ZFSをマージしない姿勢をあらためて強調 | gihyo.jp
  • 第112回 知っておくと便利になるかもしれない小技 | gihyo.jp

    今回はMySQLを利用するうえで、知っていると便利になるかもしれないちょっとした小技をいくつか紹介しようと思います。なお、利用するMySQLのバージョンは8.0.18、OSはCentOS 7を利用しています。 STRAIGHT_JOINの位置 第97回 JOIN_ORDERを使ってJOINの順番を決めるにて、バージョン8.0以降ではJOIN_ORDERヒント句を用いてJOINの順番を決めるやり方と、バージョン5.7とそれ以前ではINNER JOINに限り、STRAIGHT_JOINを用いて駆動表を選択することができることを紹介しました。 みなさんはこのSTRAIGHT_JOINを記述するやり方が複数あるのはご存知でしょうか? 1つ目の記述は、INNER JOINの記述をSTRAIGHT_JOINに書き直すやり方です。たとえば、第97回で利用した下記クエリを参考にしてみましょう。 mysql

    第112回 知っておくと便利になるかもしれない小技 | gihyo.jp
  • 世界最大のeコマース事業者の精度とノウハウをお手軽に ―AWSのAIサービス「Amazon Personalize」「Amazon Forecast」 | gihyo.jp

    世界最大のeコマース事業者の精度とノウハウをお手軽に ―AWSAIサービス「Amazon Personalize」「Amazon Forecast」 アマゾンウェブサービスジャパン(以下、AWSジャパン)は10月29日、同社が提供するマネージドな機械学習サービス「Amazon Personalize」と「Amazon Forecast」に関する報道陣向けの説明会を行いました。いずれのサービスともに、昨年11月の「AWS re:Invent 2018」で発表されたもので、すでに東京リージョンでも一般提供が開始されています。 この2つのマネージドサービスは、AWSの親会社であるAmazon.comが20年間に渡って小売事業者として培ってきたテクノロジやノウハウが投入されており、マシンラーニングの知識や経験をもたない一般的なビジネスユーザでも簡単に利用できることから、企業規模を問わずに急速に国

    世界最大のeコマース事業者の精度とノウハウをお手軽に ―AWSのAIサービス「Amazon Personalize」「Amazon Forecast」 | gihyo.jp
  • 次世代Webの最前線を知る ―「IPFS Workshop Tokyo」レポート | gihyo.jp

    10月14日、東京・渋谷のNeutrinoで「IPFS Workshop Tokyo」が開催されました。IPFS(InterPlanetary File System)は、ハッシュ化とP2Pネットワークを組み合わせて動作するハイパーメディアプロトコルのシステムです。現在のインターネットで主要なプロトコルであるHTTP(Hyper Text Transfer Protocol)を補完または置換するプロトコルとして位置付けられています。 今回はIPFS開発陣がNeutrinoに集結して、IPFSの仕組みやエコシステム、使い方などを紹介するハンズオンセミナーを日で初めて開催しました。台風の影響で当初の日程から延期されたにもかかわらず、50名から60名ほどが参加する盛況ぶりでした。初心者であってもIPFSとは何か、またその具体的な使い方を理解できる内容になっており、このレポートでは、ワークショッ

    次世代Webの最前線を知る ―「IPFS Workshop Tokyo」レポート | gihyo.jp