タグ

ブックマーク / knowledge.sakura.ad.jp (22)

  • 開発ツール(QEMU)への貢献(後半) 〜自作OSのいまと昔 [第4回] | さくらのナレッジ

    これまでのおさらい 前回の記事では、QEMUのVFAT機能にバグがあり、そしてその原因がメモリ破壊である、というところまでを突き止めました。 しかし、バグを発生させる直接の要因がわかっただけでは、そのバグを修正することはできません。今回はさらにもう一歩踏み込んで、どのような仕組みでメモリ破壊が発生したのかを突き止めると共に、それに基づいて修正パッチを投稿するところまでの道のりを紹介します。 lldbのwatchpoint機能 メモリ破壊系のバグらしき挙動を発見した際には、どのプログラムがそのアドレスのデータを書き換えたのか特定できれば、多くの場合原因が判明します。これを特定するために使える機能として、デバッガのwatchpointという機能があります。これは、特定のアドレスに対しての読み書きアクセスが発生した場合に、プログラムの動作を止めてデバッガで調査できる機能です。 この機能は通常、ハ

    開発ツール(QEMU)への貢献(後半) 〜自作OSのいまと昔 [第4回] | さくらのナレッジ
  • GitHubの新機能「GitHub Actions」で試すCI/CD | さくらのナレッジ

    GitHubが2019年11月、新機能「GitHub Actions」を正式に公開した。GitHub上のリポジトリやイシューに対するさまざまな操作をトリガーとしてあらかじめ定義しておいた処理を実行できる機能で、今まで外部サービスとの連携が必要だった自動テストや自動ビルドなどがGitHubだけで実現できるようになる。今回はこのGitHub Actionsについて、機能の概要や基的な使い方などを紹介する。 GitHubだけでCI/CD的な機能を実現できる「GitHub Actions」 昨今では、ソフトウェア開発におけるさまざまな工程を自動化するような技術の開発や普及が進んでいる。その1つに、CI(Continuous Integration、継続的インテグレーション)やCD(Continuous Delivery、継続的デリバリー)と呼ばれるものがある。CIはソフトウェアのビルドやテストを

    GitHubの新機能「GitHub Actions」で試すCI/CD | さくらのナレッジ
  • 現代における自作OSの難しさ 〜自作OSのいまと昔 [第2回] | さくらのナレッジ

    前回の記事では、自作OSとは何か、そしてこれまでの自作OSの歴史を紹介しました。しかし、近年になって自作OSを取り巻く状況は大きく変化してきています。そこで今回は、現代における自作OSでは、これまでと比べてどのような点が変化してきたのか、どのような難しい点があるのかについて紹介し、さらにそれらに対する解決策を、筆者の経験をもとに提案してゆきます。 自作OSをとりまく環境の変化 川合秀実氏著「30日でできる!OS自作入門」が出版された2006年頃と比べて、コンピュータをとりまく環境は大きく変化してきました。その変化には、CPUのコア数やビット幅からファームウェアの変遷、そしてデバイスの進化も含まれています。まず最初に、CPUのコア数について着目してみましょう。 CPUコア数の増加 上記の図は、1999年から2019年までにIntelから発売されたCPUのコア数の変化を示したグラフです。ご覧の

    現代における自作OSの難しさ 〜自作OSのいまと昔 [第2回] | さくらのナレッジ
  • Linuxにおける新たなパケットフィルタリングツール「nftables」入門 | さくらのナレッジ

    たとえば、かつてiptablesで設定していたIPv4に関連するパケットフィルタリング設定は、nftablesにおいては「ip」というアドレスファミリに紐付けたテーブルを作成することで設定できる。同様に、ip6tablesやarptables、ebtablesで設定していたものはそれぞれ「ip6」や「arp」、「bridge」というアドレスファミリに紐付けたテーブルで設定する。 「inet」「および「netdev」アドレスファミリはnftablesで新たに導入されたもので、まず「inet」はIPv4およびIPv6の両方を対象にした設定を行えるアドレスファミリだ。従来IPv4とIPv6の両方にまたがったフィルタリングルールを設定したい場合はiptablesとip6tablesの両方で同じようなルールを追加する必要があったが、nftablesではinetアドレスファミリで指定することで単一の設

    Linuxにおける新たなパケットフィルタリングツール「nftables」入門 | さくらのナレッジ
  • なぜ人は自作OSをするのか?自作OSとは何か? 〜自作OSのいまと昔 [第1回] | さくらのナレッジ

    みなさん、自作OSという言葉をご存知でしょうか? 自作PCという言葉には馴染みがあっても、自作OSという言葉は初めて聞いたという方も多くいらっしゃると思います。連載では、そもそも自作OSとは何か、という基的なところから、自作OSのこれまでの歴史、現代のコンピューターにおける自作OSの難しさ、そして自作OSの将来的な可能性について、筆者の実体験を踏まえながらご紹介したいと思います。 身近にあるOSの例 自作OSというのは、OS, つまりオペレーティングシステムを自分の手でつくりあげることを指します。といっても、そもそもOSとは何か知らない方も多くいらっしゃると思いますので、最初はそもそもOSとは一体何なのか見ていきましょう。 さて、みなさんの知っているOSにはどんなものがあるでしょうか?下記の図は、2019年5月の、日国内におけるOSのシェアを示したグラフです。 最も多く使われているO

    なぜ人は自作OSをするのか?自作OSとは何か? 〜自作OSのいまと昔 [第1回] | さくらのナレッジ
  • systemd編~サーバーで不要なものは動かさない~ – Linuxセキュリティ入門(1) | さくらのナレッジ

    今回から5回に渡り、Linuxサーバーのセキュリティ設定を皆さんと一緒に確認しつつ、セキュリティに関連するコマンドの説明を書かせてもらう川井です。皆さんと同じく、さくらインターネットの一ユーザーでもありますので、以後、よろしくお願いいたします。 これから説明するセキュリティを確認する環境は、さくらインターネットが提供しているサービスの『さくらのVPS』や『さくらのクラウド』でCentOS 7以降の利用が対象です。さくらインターネットさんはセキュリティにとても留意しているため、初期状態でも危機はかなり低いとはいえ、利用している皆さんがよりセキュリティに関心を寄せることで、更なる安全を手に入れられるでしょう(この連載では以降、さくらのVPSとさくらのクラウドをさくらのサービスとまとめて記述します)。 対象サービス これから触れるセキュリティの元ネタは個人的にも利用しているさくらのVPSと、お仕

    systemd編~サーバーで不要なものは動かさない~ – Linuxセキュリティ入門(1) | さくらのナレッジ
  • 面倒なJavaScriptコードのとりまとめがこれ1つで可能に、「webpack」入門 | さくらのナレッジ

    最近JavaScript関連の開発で採用が進んでいる「webpack」は、JavaScriptファイルの変換や結合といった操作をコマンド1つで実行できるツールだ。記事では、webpackとは何かという基的な概念から導入方法、実際の利用例などを紹介する。 モジュール管理機構の不足や未サポート機能の問題をツールで解決する「webpack」 今日のWeb開発においてJavaScriptの利用は避けることができないが、JavaScriptのソースコードをどのように管理・デプロイすべきかという問題に対しては、まだ決定的な解決策が生まれていない状況が続いている。その根的な原因の1つには、最近までJavaScriptにおいて普遍的に利用できるモジュール管理システムが存在しなかったことがある。 一般的なプログラミング言語では、大規模なプログラムを実装する際に作業性やメンテナンス性を高めるためプログラ

    面倒なJavaScriptコードのとりまとめがこれ1つで可能に、「webpack」入門 | さくらのナレッジ
  • Dockerのマルチホストネットワークで複数ホスト間を繋ぐ仮想ネットワークを作る(Dockerの最新機能を使ってみよう:第1回) | さくらのナレッジ

    Dockerのマルチホストネットワークで複数ホスト間を繋ぐ仮想ネットワークを作る(Dockerの最新機能を使ってみよう:第1回) | さくらのナレッジ
  • SNIで1台のサーバ上に複数のSSLサイトを運用 – 前編 | さくらのナレッジ

    ご無沙汰しております。細羽です。 昨年、AndroidにおけるSNI対応状況という記事で、SSL/TLSの拡張仕様であるSNI(Server Name Indication)について触れました。 少しニッチなテーマだと思っていましたが、つい先日、さくらのレンタルサーバでSNI SSLを提供開始というプレスリリースが発表されました。広いサービスでSSL/TLS導入への需要が高まっている今、このような事例は今後増えていくものと考えられます。 そこで記事では、重要度が高まっているSNIについて、その技術の概要を改めて理解し、実際の運用に役立てられるように整理をしたいと思います。 知識の整理を目的にした前編と、実践を目的にした後編の2部構成でお届けします。 以下が前編の内容です。 SNIで何が出来るようになるのか SNIで複数ドメインが運用可能になるまで SNIが重要になりつつある背景 SSL運

    SNIで1台のサーバ上に複数のSSLサイトを運用 – 前編 | さくらのナレッジ
  • 15分で分かるLXC(Linux Containers)の仕組みと基本的な使い方 | さくらのナレッジ

    最近注目されている仮想化技術の1つにLXCLinux Containers)がある。LXCはコンテナ型仮想化技術と呼ばれるものの1つで、OS上に別の隔離された環境を構築するものだ。今回はLXCの仕組みと、基的なインストールについて紹介する。 さまざまな仮想化技術LXC 仮想化技術を使って一台のマシン上に複数の隔離された環境を構築する、というのはメインフレームの世界では古くから行われていたが、近年ではマシンの性能向上により、エントリレベルのサーバーでもこのような使われ方が実用的になっている。そういった背景の下注目されているのがLXCLinux Container)と呼ばれる仮想化技術だ。 広く使われている仮想化技術としてはXenやKVMがあるが、これらはホストOS(もしくはハイパーバイザ)上で演算によって仮想的なマシン環境を作り出し、その上でOSを実行させることで複数のOS環境の構築

    15分で分かるLXC(Linux Containers)の仕組みと基本的な使い方 | さくらのナレッジ
  • kubernetesによるDockerコンテナ管理入門 | さくらのナレッジ

    また、これらに加えてコンテナの実行やイメージの管理を行うためのDockerや、分散型設定共有サービス「etcd」も必要となる。そのほか、異なるマシン上で稼動しているコンテナ間で通信を行うためにLinuxのブリッジ接続機能や「Flannel」、「OpenVSwitch」といった仮想ネットワーク機構なども利用される。 これらのうち、apiserverやcontroller-manager、scheduler、etcdについてはクラスタの管理を行うマスターサーバーで実行されるコンポーネントとなる。また、proxyやkubelet、dockerはコンテナを稼動させる各ノード(minionとも呼ばれる)上で実行されている必要がある。 マスターサーバーとノードを分けた一般的な構成は、次の図2のようになる。なお、kubectlについてはマスターサーバー上でも、別のクライアント上でも実行が可能だ。 図2

    kubernetesによるDockerコンテナ管理入門 | さくらのナレッジ
  • 「ブロックチェーンはデータベースではない」件について | さくらのナレッジ

    ブロックチェーン技術について説明する記事を書いていると、次のような意見を耳にすることがあります。「ブロックチェーン技術を使わずにデータベース管理システムを使えばいいのでは?」──主にITに詳しい人からこの意見が出る場合が多いようです。 筆者の個人的な意見としては、ブロックチェーン技術とデータベース管理システム(DBMS)やKVS(Key-Value Store)は目的も特性も異なる技術なので「別のもの」と考えた方が理解が早いと思います。それ以前に「そもそも、ブロックチェーンとデータベースを比べること自体が間違っている」とのご指摘もあろうかと思います。 現実に、ブロックチェーンの説明で「データベース」という用語を使う事例はいくつかあります。「ダボス会議」で知られている世界経済フォーラムによる解説動画では、パブリックブロックチェーンについて「オープンで脱・中央集権的なデータベース」と説明してい

    「ブロックチェーンはデータベースではない」件について | さくらのナレッジ
  • Jenkinsを使った自動テスト環境を作る(前編) | さくらのナレッジ

    継続的インテグレーション(CI)ツールとして有名なJenkinsは、ソフトウェア開発におけるテストやビルドと言った作業を自動化するツールだ。記事ではJenkinsの最新版となるバージョン2系で正式に導入された、パイプライン機能を使ったビルド/テスト環境の構築を紹介する。 CIツールと「Jenkins」 ソフトウェア開発の現場において、そのテストはソフトウェアの設計やコーディングと同じくらい重要な過程である。近年のWebアプリケーションやスマートデバイス向けアプリケーション開発ではアプリケーションのリリース間隔が短くなっている傾向があり、そのためテストもより迅速かつ頻繁に行わなければならくなっている。そういった環境で有用なのが、継続的インテグレーション(CI)ツールだ。 CIは、元々は「ソフトウェアの開発コストを下げるためには開発の初期から頻繁にテストを行ってフィードバックを行うべき」とい

    Jenkinsを使った自動テスト環境を作る(前編) | さくらのナレッジ
  • 柔軟なログ収集を可能にする「fluentd」入門 | さくらのナレッジ

    複数台のサーバーやクラウド環境を組み合わせてのサービス運用においては、ログの収集方法に工夫が必要となる。こういった場合に有用なのが、さまざまなログの収集手段を提供するfluentdだ。今回はfluentdのアーキテクチャやそのインストール/設定方法、基礎的な設定例などを紹介する。 さまざまな方法でログを収集できるfluentd 今回紹介するfluentdは、Treasure Dataが開発するログ収集管理ツールだ(図1)。オープンソースで公開されており、Linuxや各種UNIXで動作する。 図1 fluentdのWebサイト ログ収集のためのソフトウェアとしてはsyslogdやsyslog-ngなどが有名だが、fluentdがこれらと異なる点としては、以下が挙げられる。 さまざまなソースからのイベントをさまざまな媒体に出力できる fluentdの大きな特徴としては、ログの収集方法やログの記

    柔軟なログ収集を可能にする「fluentd」入門 | さくらのナレッジ
  • クックパッド開発者が明かしたマイクロサービス“切り出し”の実際とは? | さくらのナレッジ

    2015年9月26日に開催された「Seasar Conference 2015」のセッション「【世界最大級】クックパッドの Microservices 化【WIP】」を聴講しました。マイクロサービスに関するコラム記事を書いた後でしたので、この話題が気になっていたのです。結果として、現場の開発者による生々しい話を聞くことができました。「等身大のマイクロサービス切り出しの現場」と言えばいいでしょうか。 【世界最大級】クックパッドの Microservices 化【WIP】 講演者はショウジヨシオリさん。現在、クックパッドで開発者として働いています。 クックパッドのシステムは、「世界最大級のモノリシックRailsサービス」として知られています。今回は、その一部をマイクロサービスに切り分ける経験を語りました。講演資料が次のリンクから見られます。 https://speakerdeck.com/yo

    クックパッド開発者が明かしたマイクロサービス“切り出し”の実際とは? | さくらのナレッジ
  • SSL/TLSの最新動向を知ろう! Internet Week 2015レポート (その1) | さくらのナレッジ

    11月17日(火)-20日(金)の4日間、日ネットワークインフォメーションセンター(JPNIC)が主催する「Internet Week」(IW)が富士ソフトアキバプラザにて行われました。筆者(法林)はこのイベントの実行委員を務めていますが、さくナレ読者の皆さんにもこのイベントを知ってもらいたいのと、当社社員も数名が登壇しましたので、その奮闘ぶりもお伝えすべくレポートします。いくつかのプログラムを取材しましたので、レポートも何回かに分けてお送りする予定です。 Internet Weekについて さくナレでIWのレポートをお届けするのは初めてだと思いますので、IWをご存じない方のために、このイベントを簡単に紹介します。 IWは、インターネットに関わるすべての方と最新の情報を共有することでより良いインターネット環境を構築することを目指し、1997年から毎年開催されています。Weekという名前の

    SSL/TLSの最新動向を知ろう! Internet Week 2015レポート (その1) | さくらのナレッジ
  • 改めて知ろう、SSLサーバー証明書とは?(第三回) | さくらのナレッジ

    こんにちは、サイバートラストの坂です。今年もよろしくお願いします。 第一回と第二回では、SSL サーバー証明書の役割である通信の暗号化や Web サイトの認証について説明しました。 今回は、SSL サーバー証明書の役割ではなく、SSL サーバー証明書が関係する動向を紹介します。動向といっても、ビジネス、技術、規制など多種多様ありますが、記事では、SSL の通信で使われている「SHA-1 の規制」と「SHA-1 に関する主要ブラウザの仕様」についてになります。 SHA? Secure Hash Algorithm (セキュア・ハッシュ・アルゴリズム)の略称です。一般に「シャー」と呼ばれますが、「エス・エイチ・エー」と呼ばれることもあります。例えば SHA-1 は「シャーワン」です。 SHA は「ハッシュ」と呼ばれる関数の代表例でして、SSL サーバー証明書に使われています。 何のために?

    改めて知ろう、SSLサーバー証明書とは?(第三回) | さくらのナレッジ
  • CoreOSを使ってDockerコンテナを動かす——15分でできるCoreOSクラスタの作り方 | さくらのナレッジ

    Dockerを利用する際に、コンテナを動かすための環境の1つとしておすすめしたいのがCoreOSだ。CoreOSでは簡単にコンテナの実行環境を構築でき、さらに複数台のCoreOSマシンを組み合わせて連携させる機能も用意されている。今回はCoreOSを使ってサービスを構築するための基礎知識と、実際の作業の流れを紹介する。 Dockerなどを使ったコンテナの利用に特化したCoreOS 近年注目されている「コンテナ」技術は、VMwareやXen、KVMといった仮想化技術と同様にハードウェアやOSとは独立した環境を構築でき、また仮想化を利用するよりも低コストで利用できることで注目を集めている。しかし、Dockerを使ってサービスを実際に運用する場合、どういった環境を用意すれば良いか迷うケースもあるだろう。その解答の1つに、コンテナを稼動させることに特化したLinuxディストリビューションであるCo

    CoreOSを使ってDockerコンテナを動かす——15分でできるCoreOSクラスタの作り方 | さくらのナレッジ
  • Docker向けのコンテナをゼロから作ってみよう | さくらのナレッジ

    Docker向けのコンテナを公開するDocker Hubでは多数のコンテナが公開されており、これらをベースにして独自のコンテナを作成できる。しかし、新規に独自のコンテナを作成したい場合もあるだろう。今回は、新規にコンテナを作成するのに必要な作業手順を紹介する。 Dockerにおける一般的なコンテナ作成手順 Dockerではよく使われるOS環境を含むコンテナがあらかじめ用意されており、それをベースに独自のコンテナを作成できる。たとえば、『これから始める「DockerでかんたんLAMP環境 for CentOS」』記事では、既存のCentOSコンテナをベースに、独自の環境を構築する手順を紹介している。 しかし、公開されているコンテナではなく、ゼロからコンテナを構築したいという場合もある。たとえばDocker Hubで提供されている公式のCent OSのコンテナでは、ファイル容量削減のためか一部

    Docker向けのコンテナをゼロから作ってみよう | さくらのナレッジ
  • CoreOS + etcd + fleetによるクラスタリング事始め | さくらのナレッジ

    CoreOSはDocker用に作られたとても小さなLinuxディストリビューションです。その中で提供されている大きな3つの機能として、Docker/etcd/fleetが知られています。この3つを組み合わせるとクラスタリング構成がとても簡単に実現できるようになります。 ということでさくらのクラウドを使ってフェイルオーバーする所までをトライしてみます。 サーバを立てる 今回は3台のサーバを立てます。OSは全てCoreOSになります。サーバの追加を行う際にアーカイブ選択で CoreOS 367.1.0 (stable) #112600559854 を選択します。後、今回は管理ユーザのパスワードを入力しています(理由は後述)。複数台のサーバを使いますのでホスト名を忘れずに設定しておきます。 サーバ追加画面。アーカイブからCoreOSを選びます。 CoreOSの設定 CoreOSはとてもシンプルな

    CoreOS + etcd + fleetによるクラスタリング事始め | さくらのナレッジ