タグ

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

  • 第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
  • 保守しやすく変化に強いソフトウェアを支える柱 自動テストとテスト駆動開発、その全体像 ~Software Design 2022年3月号「そろそろはじめるテスト駆動開発」より | gihyo.jp

    保守しやすく変化に強いソフトウェアを支える柱 自動テストとテスト駆動開発⁠⁠、その全体像 ~Software Design 2022年3月号「そろそろはじめるテスト駆動開発」より 今回、Software Design 2022年3月号 第2特集「そろそろはじめるテスト駆動開発 JavaScriptでテストファーストに挑戦」の第1章「保守しやすく変化に強いソフトウェアを支える柱 自動テストとテスト駆動開発、その全体像」をサイトに掲載します。第2章以降については、誌『Software Design 2022年3月号』電子版(Gihyo Digital Publishing、Amazon Kindle)をご購読いただければ幸いです。 第1章では、混同されることの多い自動テスト関係の概念を、自動テスト、テストファースト、テスト駆動開発の3つの段階に分け、それぞれの効果や注意点を説明します。ソフ

    保守しやすく変化に強いソフトウェアを支える柱 自動テストとテスト駆動開発、その全体像 ~Software Design 2022年3月号「そろそろはじめるテスト駆動開発」より | gihyo.jp
  • 第796回 LXDとIncus、今後どちらをUbuntuユーザーは使うべきか? | gihyo.jp

    Ubuntu Weekly Recipe 第796回LXDとIncus⁠⁠、今後どちらをUbuntuユーザーは使うべきか? 連載でも何度か紹介しているコンテナ・仮想マシンの管理システムである「LXD」がCanonicalの管理になった結果、コミュニティ版の「Incus」が登場しました。詳しい経緯は「LXCで学ぶコンテナ入門」の第55回「コンテナと仮想マシンのマネージャ"Incus"」に記述されています。今回は少し趣向を変えて、「⁠UbuntuユーザーはLXDとIncusのどちらを使うべきか」という観点から、Incusを紹介します。 UbuntuとLXDとIncus 冒頭でも説明したように、LXDのコミュニティ版フォークとしてIncusが登場しました[1]。 フォークに至った詳細な流れは「LXCで学ぶコンテナ入門」が参考になりますが、かんたんに説明すると次のような時系列になります。 Lin

    第796回 LXDとIncus、今後どちらをUbuntuユーザーは使うべきか? | 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
  • 第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
  • サーバーレス開発の基本と簡単に使い始められるCloud Runの特徴 | gihyo.jp

    連載は、Google Cloudのアプリ開発とDBプロダクトにおけるスペシャリスト達が、Google Cloudプロダクトを利用した、クラウドネイティブな開発を実践する方法を解説しています。 第3回では、サーバーレス開発とGoogle Cloudのサーバーレス製品であるCloud Runに焦点を当てます。 まず、サーバーレス開発の基概念と利点について説明し、従来のサーバーに依存しないアプリケーション開発手法の重要性を探ります。次に、Cloud Runの概要を紹介し、コンテナイメージの実行をサポートするサーバーレスプラットフォームとしての役割を説明します。この回を通じて、サーバーレス開発の基礎を学び、Cloud Runを利用して効率的なアプリケーション開発を実現する方法を理解できます。 主に対象となる読者は、クラウドを利用してアプリケーションを開発するエンジニア、またはその基盤を構築する

    サーバーレス開発の基本と簡単に使い始められるCloud Runの特徴 | gihyo.jp
  • Python3.12で新たにサポートされたsub-interpretersの紹介 | gihyo.jp

    門脇(@satoru_kadowaki)です。11月の「Python Monthly Topics」は、Python 3.12の新機能であるsub-interpretersについて紹介します。 2023年10月2日に「 Python 3.12.0 」がリリースされました。今回も気になる新機能が多く、記事で紹介するsub-interpretersもPythonで並列処理を行うための新機能です。 Python 3.12の新機能については以下のリンクを参照してください。 What’s New In Python 3.12 -Python 3.12.0 Documentation 記事ではPythonにおける並列実行のこれまでと、sub-interpretersが現状どのように使用できるかについて説明します。 なお、執筆にあたり先日開催されたPyCon APAC 2023において、sub-in

    Python3.12で新たにサポートされたsub-interpretersの紹介 | gihyo.jp
  • Python最新バージョン対応!より良い型ヒントの書き方 | gihyo.jp

    寺田 学です。9月の「Python Monthly Topics」は、Python 3.5で導入され、多くの場面で活用されている型ヒント(Type Hints)について、より良い型ヒントの書き方を紹介します。 Pythonの型ヒントとは Pythonは動的型付け言語です。型を指定せずに変数宣言できますし、関数の引数や戻り値に型を宣言する必要はありません。 Python 3.5(2015年9月リリース)で型ヒントの仕組みが入りました。型の指定が不要なPythonですが、型ヒントを付けることで、「⁠コードの可読性向上⁠」⁠、「⁠IDEコード補完の充実⁠」⁠、「⁠静的型チェックの実行」といった静的型付け言語のようなメリットを得ることができます。 Pythonの型ヒントは以下のように記述します。 name: str = "氏名" # 変数nameをstr型と宣言 def f(arg: int) -

    Python最新バージョン対応!より良い型ヒントの書き方 | gihyo.jp
    clavier
    clavier 2022/09/09
  • 2022年のプライバシー標準 | gihyo.jp

    あけましておめでとうございます。@_natこと崎村夏彦です。2022年の年頭にあたり、2021年のプライバシー関連の動きを振り返り、その上で2022年を展望してみたいと思います。 データ倫理が意識された年 2021年は、社会の様々なセクターを横断してAIやIoTを駆使する昨今のデータ駆動型イノベーション関連の進展が、データの共有と再利用の重要性をかつてないほど高めてきた年でした。新型コロナ禍は、公共のためのデータ収集と利用の有用性をわたしたちに意識させることになりましたし、一方では、大量の個人関連情報の蓄積・処理が持ちうる、「⁠プライバシー」と「人々の自由・価値観」と「民主主義に対する脅威などに関する懸念」もクローズアップすることになりました。これらの中には、消費者保護、公正な競争、責任の負担、データ収集・処理の能力に起因する新たなデジタル・デバイドも含まれます。 こうしたことは欧米ではす

    2022年のプライバシー標準 | gihyo.jp
  • 第692回 sysfsやbpftoolを用いたeBPFの活用 | gihyo.jp

    第688回と第690回では、カーネルのトレーシングツールとして注目されているeBPFを活用するためのツールとしてBCCを紹介しました。しかしながら、BCCだけがeBPFを扱えるツールというわけではありません。今回はツールなしに利用できるsysfsや、よりユーザーフレンドリーなトレーシングツールであるbpftoolを紹介します。 Python版BCCの問題点 これまで紹介していたBPF Compiler Collection(BCC)のツールはいずれもフロントエンドとしてPythonを使っていました。つまり利用者はまずPythonスクリプトを起動し、その中でeBPFのオブジェクトをコンパイルし、ロードすることでようやくトレースが始まっていたのです。 実行環境でBPFオブジェクトをビルドする必要があるこの方法にはいくつかの問題点が存在します。 実行環境にコンパイラをインストールする必要がある

    第692回 sysfsやbpftoolを用いたeBPFの活用 | gihyo.jp
  • ISUCON11優勝チームfujiwara組の3人 fujiwara acidlemon macopy の技術力に迫る | gihyo.jp

    ISUCON11優勝チームfujiwara組の3人 fujiwara acidlemon macopy の技術力に迫る 今年も開催された、エンジニアのチューニングスキルを競うコンテンストISUCON11。今回優勝したチームはfujiwara組です。リーダーの藤原氏(fujiwara)は今回で4回目の優勝。そして、このチームとしては初優勝を飾りました。 今回、藤原氏、メンバーの川添氏(acidlemon⁠)⁠、谷脇氏(macopy)に、ISUCON11優勝の振り返り、そして、これまでの三者三様のISUCON、そして、技術への取り組みについて伺いました。fujiwara組がISUCON11を勝ち取った技術力すべてに迫ります。 ISUCON11、予選~選の心持ち Q:予選終了後の順位、また、他チームの結果を見て感じたこと、選に向けてチームとして意思確認したことがあれば教えてください。 藤原氏

    ISUCON11優勝チームfujiwara組の3人 fujiwara acidlemon macopy の技術力に迫る | 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
  • 第3回 研究を実務に活かすには ―執筆陣がお勧めする書籍の「使いどころ」 | gihyo.jp

    2021年8月に発売された『機械学習を解釈する技術』の著者である森下光之助氏と『施策デザインのための機械学習入門』を共著した齋藤優太氏と安井翔太氏の3人が集まり、執筆の経緯や書籍への想いについて、これまで2回にわたってお届けしてきました。今回はその最終回です。 論文との向き合い方 安井:今回お2人が書籍で執筆した内容は、ここ数年の最新と言っても良いレベルの研究成果を実際のデータサイエンティストが使えるようにするものだと思っています。なので、お2人の論文や研究者との関わり方とかを聞くとおもしろいんじゃないかなと思います。 齋藤:たぶん、論文を書いてる研究者と、実践者として論文を読む人たちの間で、論文の役割に対する認識のギャップがある気がするんです。もちろん論文を書いてる研究者たちは(研究者ではない)読者が働く会社が抱えている個別の課題や問題設定は知らないので。あくまで個々の研究分野の中の価値

    第3回 研究を実務に活かすには ―執筆陣がお勧めする書籍の「使いどころ」 | gihyo.jp
  • 第676回 aptコマンドの最新機能あれこれ | gihyo.jp

    第675回ではapt-keyコマンドが廃止される理由を説明しました。それ以外にもaptコマンドには常に様々な変更が加えられています。今回はそれらをいくつかピックアップして紹介しましょう。 Apt 1.0.xから2.3.xまでの流れ 連載でaptコマンドそのものを紹介したのは、7年以上前の第327回「aptコマンドを使ってみよう」まで遡ります。当時はApt 1.0がリリースされて間もないころで、数週間後に登場したUbuntu 14.04 LTSにもApt 1.0が取り込まれています。Apt 1.0ではこれまで別々のコマンドだった各種ツールがサブコマンドとして一元化して使えるaptコマンドが実装された記念すべきリリースでもありました。 その後7年を経て、2021年7月時点でのバージョンは2.3.6にまで到達しています。まもなくリリースされる予定のDebian 11ではApt 2.2.xが採用

    第676回 aptコマンドの最新機能あれこれ | gihyo.jp
    clavier
    clavier 2021/07/29
  • 2021年3月18日 Rustを学ぶためのプロジェクト―Debian開発者、coreutilsパッケージをRustで実装中 | gihyo.jp

    Linux Daily Topics 2021年3月18日Rustを学ぶためのプロジェクト―Debian開発者、coreutilsパッケージをRustで実装中 「開発者にもっとも人気がある言語」としてここ1、2年、さまざまな調査でランクインすることの多いRustだが、オープンソースプロジェクトの現場でもRustの人気は高く、Cで書かれたコンポーネントやプロダクトをRustで書き換えるプロジェクトも増えている。そうしたプロジェクトのひとつとして、Linux/UNIX系のオペレーティングシステムに必須のコマンドラインツールを集めた「coreutils(GNU Core Utilities⁠)⁠」をRustで書き換える「uutils/coreutils」がGitHub上で活動中だ。 GitHub - uutils/coreutils : Cross-platform Rust rewrite o

    2021年3月18日 Rustを学ぶためのプロジェクト―Debian開発者、coreutilsパッケージをRustで実装中 | gihyo.jp
    clavier
    clavier 2021/03/19
  • 2021年1月15日号 ホームディレクトリのパーミッション変更の実施、Ubuntu Metrics project | gihyo.jp

    Ubuntu Weekly Topics 2021年1月15日号ホームディレクトリのパーミッション変更の実施、Ubuntu Metrics project ホームディレクトリのパーミッション変更の実施 hirsute(21.04)で昨年12月に企画されていたホームディレクトリのパーミッション変更が、明確な反対がなかったため、テスト的に投入されました。あくまでhirsuteを新規インストールしたときに限って、という形ではありますが、これにより「ホームディレクトリのパーミッションはデフォルトでは0750」となります。 Ubuntu Metrics project 主に開発者やコミュニティ向けに、Ubuntu Metrics projectと呼ばれる新しい取り組みが開始されました。これはUbuntuに関連するいろいろなメトリクス、たとえばバグの解決状態や登録数、ただちにアクションが必要なタスクの

    2021年1月15日号 ホームディレクトリのパーミッション変更の実施、Ubuntu Metrics project | gihyo.jp
    clavier
    clavier 2021/01/16
  • 第47回 非特権コンテナの可能性を広げるseccomp notify機能 | gihyo.jp

    前回の連載が掲載されたあと、久々にコンテナの勉強会をオンラインで開催しました。2回に渡って、cgroupをテーマにカーネルの実装に踏み込んだ内容のお話が聞けました。私もcgroup v1の内部構造についてお話しました。動画は公開されていますのでぜひご覧ください。 さて、今年も気がつけばもう12月で、Advent Calendarの季節になりました。今年はいろいろなことがありましたが、今振り返るとあっという間だった気がします。今年もこの連載で毎年参加しているLinux Advent Calendarに参加します。この記事はLinux Advent Calendar 2020の15日目の記事となります。 この連載は、名前に「LXCで学ぶ」と付いているわりには、最近まったくLXCが出てきませんでしたが(^_^;)、今回は久々にLXCコンテナを使って機能の説明をしたいと思います。とは言ってもLXC

    第47回 非特権コンテナの可能性を広げるseccomp notify機能 | gihyo.jp
    clavier
    clavier 2020/12/15
  • 第45回 Linuxカーネルのコンテナ機能 ― cgroupの改良版cgroup v2[6] | gihyo.jp

    昨年12月に前回の記事を書いて以来、世の中の状況がすっかり変わってしまいました。 筆者も4月以降はほとんど会社に出勤することなく、自宅で仕事をしています。自宅の物置のように使っていたスペースを片付け、少しずついろいろなものを買い揃え、自宅でもまずまず快適な環境で仕事ができるようになりました。同様に、これを機に自宅でも快適に仕事ができるようにいろいろと買い揃えた方も多いのではないでしょうか。残念ながら、自宅の環境が快適になったからと言ってこの記事の公開ペースが速くなるということはありませんが。:-p さて、年末に書いた記事ではケーパビリティの話を3回に渡って説明しました。今回はそのケーパビリティシリーズの前に紹介していたcgroup v2の話題に戻って、その機能を紹介していきたいと思います。 cgroup v2とCPUコントローラ この連載の第37回で書いたように、cgroup v1は自由度

    第45回 Linuxカーネルのコンテナ機能 ― cgroupの改良版cgroup v2[6] | gihyo.jp
    clavier
    clavier 2020/07/28
  • 第61回 GitHub ActionsとAmazon ECSを使ったDockerアプリケーションの自動デプロイ(3) | gihyo.jp

    Perl Hackers Hub 第61回GitHub ActionsとAmazon ECSを使ったDockerアプリケーションの自動デプロイ(3) (1)はこちら、(⁠2)はこちらから。 GitHub Actions─⁠─ ビルドとデプロイプロセスの自動化 (3)では、先ほど作成したECS環境に、GitHub Actionsを用いて自動的にアプリケーションをビルドしてデプロイするしくみを構築します。 GitHub Actionsとは、GitHubgithub.comに統合した形で提供するCI(Continuous Integration、継続的インテグレーション)/CD(Continuous Delivery、継続的デリバリ)環境です。GitHub Actionsには、ソースコードのpullやPull Requestのアサインといった豊富な機能(アクション)が用意されています。ユーザー

    第61回 GitHub ActionsとAmazon ECSを使ったDockerアプリケーションの自動デプロイ(3) | gihyo.jp
    clavier
    clavier 2020/06/22
  • 第617回 SOCKSを利用してSSHのみで簡易VPNを構築する | gihyo.jp

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

    第617回 SOCKSを利用してSSHのみで簡易VPNを構築する | gihyo.jp
    clavier
    clavier 2020/04/30