タグ

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

  • xzパッケージに仕込まれた3年がかりのバックドア、スケール直前に見つけたのはMicrosoftの開発者 | gihyo.jp

    Linux Daily Topics xzパッケージに仕込まれた3年がかりのバックドア⁠⁠、スケール直前に見つけたのはMicrosoftの開発者 “アップストリームのxzリポジトリとxz tarballsはバックドア化されている(The upstream xz repository and the xz tarballs have been backdoored)⁠”―2024年3月29日、Microsoftに所属する開発者 Andres Freundが「Openwall.com」メーリングリストに投稿したポストは世界中のオープンソース関係者に衝撃を与えた。 backdoor in upstream xz/liblzma leading to ssh server compromise -oss-security 主要なLinuxディストリビューションにはほぼ含まれているデータ圧縮プログラ

    xzパッケージに仕込まれた3年がかりのバックドア、スケール直前に見つけたのはMicrosoftの開発者 | gihyo.jp
  • 第804回 mininetでお手軽ネットワークテスト環境を構築する | gihyo.jp

    3月も半ばになり、暖かい日も増えてきました。これだけ暖かくなってくると、ちょっとしたアプリで少し特殊なネットワークフレームを流したり、普段使わないネットワークプロトコルを試したくなりますよね。でも番環境でそれをやってしまうと、変質者としてしかるべき場所に通報されてしまいます。そこで今回は他人に迷惑をかけずに隔離されたネットワークテスト環境を構築できる「mininet」を使って、お縄にかからないようにしてみましょう。 Open vSwitchとネットワーク名前空間で気軽にテスト環境を構築する Linuxカーネルには「ネットワーク名前空間(netns)」という機能があります。これはホストや他のコンテナから隔離された環境でネットワークインターフェースを作成し、操作できるようになる仕組みで、特にLinuxのコンテナ系ツールで使っている基礎技術のひとつです。 Ubuntuだと「ip netns」コ

    第804回 mininetでお手軽ネットワークテスト環境を構築する | gihyo.jp
  • 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
  • Pythonの構造的パターンマッチングのさらに便利なパターン紹介 | gihyo.jp

    鈴木たかのり(@takanory)です。今月の「Python Monthly Topics」では、第1回で紹介したPython 3.10の新機能「構造的パターンマッチング(Structural Pattern Matching⁠)⁠」の続きをお届けします。 前回は構造的パターンマッチング全体の説明、いくつかのパターンをコード例を交えて紹介しました。今回はその続きとして、前回紹介できなかった他のパターンについても紹介します。 Python 3.10の新機能:構造化パターンマッチング | gihyo.jp 構造的パターンマッチングとは 前回の繰り返しになりますが、この記事で初めて構造的パターンマッチングを知った人に向けて、簡単に紹介します。詳細は上記の記事を参照してください。 構造的パターンマッチングはPython 3.10で新しく導入された文法です。Python 3.10は2021年10月に

    Pythonの構造的パターンマッチングのさらに便利なパターン紹介 | gihyo.jp
  • 第55回 コンテナと仮想マシンのマネージャ"Incus" | gihyo.jp

    この連載は、「⁠LXCで学ぶコンテナ入門」というタイトルです。序盤を除くと、LXC自身を紹介するというよりは、Linuxカーネルに実装されているコンテナ関連の機能を紹介をすることが多く、カーネルの機能を紹介する際に、実行例でLXCを使ってきました。その後、LXCを開発しているLinuxContainersプロジェクトからは、コンテナマネージャとしてLXDの開発がスタートし、この連載でもLXDを使ってカーネルの機能を説明することがありました。 LXDは、コンテナと仮想マシンの両方を管理できるマネージャソフトウェアです。LXCもLXDも、OS環境を起動させるシステムコンテナを扱うことを主眼に開発されています。 gihyo.jpでは、LXDについては連載ではなく、Ubuntu Weekly Recipeで柴田充也さんが頻繁に取り上げており、基的な操作から応用まで幅広い話題が紹介されています。

    第55回 コンテナと仮想マシンのマネージャ"Incus" | gihyo.jp
  • 追悼 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
  • 第54回 Linuxカーネルのコンテナ機能 ―cgroup v2から使うCPUの帯域幅制限(2) | gihyo.jp

    前回は、CPUコントローラでの帯域幅制限がどのように行われるのかについて簡単に説明しました。 前回の最後に、説明のために挙げた例がかなり理想的な状況であると書きました。今回は、帯域幅制限の機能を詳しく見ていくために、前回よりはもう少し複雑な状況について説明していきましょう。 未使用クォータの返却 前回説明で示した例では、CPUは割り当てられたスライスをすべて使いきっていました。しかし、複数のCPUがある環境で、タスクが終了したり、I/O待ちなどにより、クォータが割り当たったCPUで実行可能なタスクがなくなった場合はどうなるでしょう? 図1 割り当てられたスライスが使われない場合 図1のように、クォータプールに10msクォータが残っているとします。 ①でCPU1でCPUを使用するタスクから要求がありスライスが転送され、クォータの残りが5msとなりました ②で再度CPU1でCPUを使用するタス

    第54回 Linuxカーネルのコンテナ機能 ―cgroup v2から使うCPUの帯域幅制限(2) | gihyo.jp
  • 第784回 Sniffnetやbandwhichでネットワークの流量と宛先を簡単に確認する | gihyo.jp

    連載を読むような人なら、インターネットはある種の生命線になっていることでしょう。普段から様々なネットワーク通信ソフトウェアにお世話になっているはずです。ある日突然、通信が遅くなった、何かが負荷をかけているかもしれない、今回はそんな状況を気軽に調べられるRust製のGUIアプリケーション「Sniffnet」とCLIツール「bandwhich」について紹介します。 Rust製の高速なネットワークモニタリングツールであるSniffnet ネットワークに接続されたコンピューター上のソフトウェアは、日々何らかのマシンと通信を行っていることが一般的です。特にデスクトップマシンなら、ソフトウェアのアップデートDHCPによるアドレスの確保、arp/neighに対する応答などなど、ユーザーが「何もしていなくても⁠」⁠、なにがしかの通信は行われています。 これはコンピューターでの作業中も同じで、何気なくブ

    第784回 Sniffnetやbandwhichでネットワークの流量と宛先を簡単に確認する | gihyo.jp
  • 第769回 Canonicalが開発するLXDの公式Web UIであるLXD-UIを試してみる | gihyo.jp

    コンテナ・仮想マシンの管理システムである「LXD」は、lxcコマンドを駆使してCLIで管理します。長らくLXD向けのGUIが求められていましたが、先日ようやくWeb UIが実験的に投入されました。今回はこの「LXD-UI」を実際に試してみましょう。 図1 LXD-UIを使えばウェブブラウザーからもLXDインスタンスのデスクトップ画面を操作できる LXDのUI事情 最初にも説明したように、LXDとはUbuntuに搭載されているコンテナ・仮想マシンの管理システムです。このうち「コンテナ」は、いわゆる「システムコンテナ」を扱います。Dockerのようなプロセスコンテナ、Flatpak/snapのようなアプリコンテナとは異なり、仮想マシンのようにsystemdがinit(PID=1)として立ち上がり、カーネルを除けば普通のUbuntuの複数のプロセスが同じコンテナの中で動くシステムです。また、シス

    第769回 Canonicalが開発するLXDの公式Web UIであるLXD-UIを試してみる | gihyo.jp
  • iOS/iPadOS 16.4リリース 〜ホーム画面に追加したWebアプリ(PWA)からの通知が可能に。またUnicode 15.0の絵文字も追加される | gihyo.jp

    iOS/iPadOS 16.4リリース 〜ホーム画面に追加したWebアプリ(PWA)からの通知が可能に。またUnicode 15.0の絵文字も追加される 3月27日、iOS/iPadOS 16.4がリリースされた。様々な点が改善されたが、この記事では多くのユーザーにとって身近な話題となる、Webアプリからの通知と、最新の絵文字の追加について紹介する。 ホーム画面に追加したPWAアプリからの通知が可能に Safariのバージョンは16.4に上がっている。 WebKit Features in Safari 16.4 特に興味深い点としては、ホーム画面に追加したWebアプリの(PWA)からの通知(Web Push)が利用可能になったことが挙げられる。これにより一般層へのPWAの普及の目途がたったといえるだろう。実際に普及するかは不明なところがあるが、すでにTwitterMastodon、Mi

    iOS/iPadOS 16.4リリース 〜ホーム画面に追加したWebアプリ(PWA)からの通知が可能に。またUnicode 15.0の絵文字も追加される | gihyo.jp
  • 分散型SNS「Misskey」、それを支える技術スタック | gihyo.jp

    連載は分散型マイクロブログ用ソフトウェアMisskeyの開発に関する紹介と、関連するWeb技術について解説を行っていきます。第1回はMisskey、ひいては分散型SNSの簡単な紹介とその内部実装の概略を説明します。 はじめまして! はじめまして、Misskey(みすきー)のプロジェクトリーダーをしている、しゅいろ(@syuilo)です! この度連載の機会をいただきましたので、ちょっと仰々しい気もしますが「Misskey & Webテクノロジー最前線」と題して、今後Misskeyやそれに関わる最新のWeb技術について解説をしていく予定です。 今回はMisskey、ひいては分散型SNSの簡単な紹介とその内部実装の概略を説明します。 対象読者は、後半の実装解説の部分においてはある程度のWeb開発の知識がある人を想定しています。 Misskeyとは⁠、そして分散型とは Misskeyは、オープン

    分散型SNS「Misskey」、それを支える技術スタック | gihyo.jp
  • 第748回 LXDとUbuntuサーバーでRAIDとmdadmのテスト環境を構築する | gihyo.jp

    ストレージの信頼性・可用性を維持する措置として、サーバーではRAIDがよく使われています。もちろんUbuntuもRAID構成を組んだ構築が可能です。しかしながら実際にRAID環境を動作確認しようとすると、構成によってストレージの数がそれなりに必要になりますし、ハードウェアRAIDをやるなら専用のデバイスも必要です。 そこで今回はLXDを用いて、任意の数のストレージが繋がれたインスタンスを作成し、RAIDの構築方法や動作確認手順を気軽に試せるようにしてみましょう。 図1 RAIDを試すには複数のストレージが必要になる RAIDはバックアップではない Ubuntuかどうかに関係なく、この世にあるものはだいたい壊れます。壊れてほしくないときに限って壊れます。それはストレージであっても例外ではありません。たとえ名前に金とか鉄とか星とかついていても、壊れる時は壊れます。だからこそバックアップが重要な

    第748回 LXDとUbuntuサーバーでRAIDとmdadmのテスト環境を構築する | gihyo.jp
  • 「Obsidian」でノートを作るときの考え方とは? ~デイリーノートの活用と、PKMとしてのノート術 | gihyo.jp

    ノートアプリ「Obsidian」を使いこなす 「Obsidian」でノートを作るときの考え方とは? ~デイリーノートの活用と、PKMとしてのノート術 前回までの記事で、Obsidianの基的な設定は完了しています。あとは、ノートを自分の好きなようにMarkdownで書いていけばよいのです。 しかし、ノートを書くといっても、何から手をつければよいのかわからない人が多いでしょう。 ノートの書き方は人によって違ってよいのですが、先人が残してくれた知恵がいくつか公開されています。その方法と合わせて、私がノートを作るときの考え方を紹介します。 デイリーノートを使う Obsidianではじめてノートを作成する人に対して、私がおすすめしているのは前回の記事で紹介したコアプラグインの「デイリーノート」を使う方法です。 デイリーノートとは、名前の通り毎日のノートのことです。初期設定のままで設定を変更してい

    「Obsidian」でノートを作るときの考え方とは? ~デイリーノートの活用と、PKMとしてのノート術 | gihyo.jp
  • 算数で読み解く コンピュータのしくみ

    このの概要 コンピュータは多くの先人たちの知識や技術の結晶といえますが,その基的なしくみは小学校で習った算数や理科の知識で十分に理解できます。書は,この道ひとすじのコンピュータ科学者が「コンタ」という簡単なコンピュータをモデルにして,徹底的に原理を解説。イラストや図も工夫してわかりやすくしていますが,ごまかしはありません。じっくり読み進めれば,やがてコンピュータの驚異的なしくみが鮮明に見えてくることでしょう。 こんな方におすすめ コンピュータのしくみを知りたいかた この書籍に関連する記事があります! 算数の知識で学ぶ コンピュータのしくみ 書は、この道ひとすじのコンピュータ科学者が「コンタ」という簡単なコンピュータをモデルにして、徹底的に原理を解説。イラストや図も工夫してわかりやすくしていますが、ごまかしはありません。 [第1部]コンピュータができるまで 第1章 コンピュータの世界

    算数で読み解く コンピュータのしくみ
    korin
    korin 2022/11/27
    今日、偶然図書館で目にして借りた。スイッチとプロセッサに焦点をあて、1+1レベルから組み合わせ回路、順序回路、CPUの論理的な実装、アセンブラや命令のエンコード、デコードまで
  • 軽量RustフレームワークTauriでデスクトップアプリ開発をはじめよう | gihyo.jp

    TauriはRustで書かれた軽量なGUIフレームワークで、WindowsmacOSLinux向けのデスクトップアプリを開発できます。2022年6月に最初の安定版であるバージョン1.0がリリースされました。 Tauriでは、メインプロセスはRustで記述しますが、UI(User Interface)にはWeb技術を利用します。ReactVue.jsのようなJavaScriptフレームワークがそのまま使えるので、インタラクティブで見栄えの良いUIを簡単に構築できます。同種のフレームワークにElectronがありますが、後発であるTauriにはインストーラのサイズを小さくできるなどの強みがあります。 Tauriのロゴは、おうし座の二重星であるシータタウリ(θ Tauri)をモチーフ[1]にしており、Webとネイティブアプリの相互作用を意味しています。 図1 Tauriロゴ 稿では、Ta

    軽量RustフレームワークTauriでデスクトップアプリ開発をはじめよう | gihyo.jp
  • 読みやすいコードのガイドライン ―持続可能なソフトウェア開発のために

    このの概要 開発が大規模化・長期化するほど,コードを「読む」コストは増大していきます。そのため「読みやすさ」の向上は,生産性を改善し,プロダクトの成長限界を引き上げる重要な手段と言えるでしょう。 書は,読みやすさの質を学び,実践するための考え方をマスターできる一冊です。体系的な理解を実現するため,あらゆる角度から,豊富な例を交えて解説しています。表面的なテクニックではなく,いま目の前にあるコードに最適な改良方法を選び取る力が身に付きます。 こんな方におすすめ プログラミングの基を学び終え,さらにステップアップしたい方 1か月以上かかる長期の開発に携わる方 コーディングのルールをどう適用するか知りたい方 はじめに 第1章 可読性の高いコードを書くために 1-1 生産性への恩恵 1-1-1 開発の規模と生産性の関係 1-1-2 可読性を高めるための環境と評価体制 1-2 可読性の高いコ

    読みやすいコードのガイドライン ―持続可能なソフトウェア開発のために
  • 第723回 複雑なコマンドパイプラインを簡単に組み立てる方法 | gihyo.jp

    パイプライン処理とは GUIは非常に直感的です。はじめて使うアプリであっても、なんとなくそれなりに動かせてしまうという点で、優れたインターフェイスと言えます。しかし効率を突き詰めると、軍配が上がるのはGUIよりもCLIでしょう。連載の読者であれば、UnixライクなOSのCLIが持つパワーについては当然ご存知かと思います。 とはいえ、古典的なUnixコマンドの多くは、単体ではそれほど強力なものではありません。というのも、ひとつひとつのコマンドはシンプルに、特定の用途においてのみ上手く動作するよう設計されていることがほとんどだからです。こうしたコマンド群に無限のシナジーを与えるのが「パイプライン処理」です。標準入出力を通じて複数のコマンドを直列に繋げることで、複雑な処理をインスタントに組み立てることができるパイプラインは、まさにUnix哲学の体現であり、CLIの真髄はここにあると言ってもよい

    第723回 複雑なコマンドパイプラインを簡単に組み立てる方法 | gihyo.jp
  • コンセプトから理解するRust

    2022年2月12日紙版発売 2022年2月7日電子版発売 原旅人 著 B5変形判/360ページ 定価3,520円(体3,200円+税10%) ISBN 978-4-297-12562-2 Gihyo Direct Amazon 楽天ブックス 丸善ジュンク堂書店 ヨドバシ.com 電子版 Gihyo Digital Publishing Amazon Kindle ブックライブ 楽天kobo honto 書のサポートページサンプルファイルのダウンロードや正誤表など このの概要 Rustはメモリ安全,スレッド安全を保ちつつ,高パフォーマンスなプログラムを開発できるプログラミング言語です。また,手続き型,オブジェクト指向型,関数型でのプログラミングに対応できるマルチパラダイムの言語でもあります。ただ,そういったRustのポテンシャルを引き出すには,所有権やライフタイム,ジェネリクスやトレ

    コンセプトから理解するRust
  • 第1回 中国が注目する「儲かるオープンソース」 | gihyo.jp

    世界的なムーブメントに多くの中国企業が参加 多くのスマートフォンやネットワーク機器を開発している中国からのOSSへの貢献が、ここ数年、大きく目立つようになってきました。LinuxカーネルV5.10のコミットは13.4%が中国からで、最も貢献の多い国の1つです。コミットしたエンジニアの総数でも448名と最多で、彼らの多くがファーウェイ、シャオミなど中国のスマートフォン、ネットワーク機器の関連企業です。 近年は、Linux Foundation、OpenStackなどのファウンデーションやコンソーシアムのスポンサーに中国企業が目立つようになり、ボードメンバーにもアリババやファーウェイなどからの参加が見られるようになりました。ハードウェア企業は製品を、プラットフォーム企業はサービスを販売する。その品質を効率的に高めるために、オープンソースは有力な手法です。GoogleMicrosoftがビジネ

    第1回 中国が注目する「儲かるオープンソース」 | gihyo.jp
  • 第678回 distrobuilderでLXD/LXC用のカスタムイメージを作成する | gihyo.jp

    distrobuilderは、Linux Containersプロジェクトで開発されている「LXD/LXC用イメージを構築するツール」です。特にLXD用のイメージサーバーで公開している各種イメージを日々ビルドするのに使われています。今回はこのツールを使って、独自のイメージをビルドする方法を紹介しましょう。 distrobuilderのインストール distrobuilder自体は単なるGo言語製のプログラムです。Ubuntuだけでなく、Fedora/CentOS/Springdale/Alma/Rocky、Gentoo/Arch/openSUSE/Plamoといった有名どころのイメージはもちろん、Apertis/openWRT/Alpineといった特別な用途のイメージやDocker Hubで公開されているイメージをカスタマイズできます。手順はシンプルで、カスタマイズ内容を記述したYAML

    第678回 distrobuilderでLXD/LXC用のカスタムイメージを作成する | gihyo.jp