Folioscope

ブログエンジンをMiddlemanからHUGOに移行した

HUGOのロゴ

このブログ、以前はMiddlemanでビルドしてたんですが、この度HUGOに移行しました。 結論から言えば、機能的にはほぼ同じで移行も簡単でした(すでにこのブログも移行済みです)。 いくつか工夫する部分があったのでそれを記事にまとめました。

テンプレートエンジンの移行

HUGOはテンプレートエンジンにGoのhtml/templateを使ってます。 HUGOではMiddlemanと同様 partial を使ってHTMLを外部ファイルとして記述できるので、パーツの共通化ができます。 MiddlemanからHUGOへの移行も、.erbファイルをGoのテンプレートに変換するだけで移行できました。 HUGOではMiddlemanと同じよう、テンプレート内から現在の記事のタイトルや全ての記事を取得できます。

MiddlemanではRubyで書いたヘルパメソッドをテンプレート …

もっと読む…

Envoy Proxyに入門した

Envoy Proxy

Envoy Proxy

最近Kubernetes周りの技術をよく触るのですが、Envoy Proxy (Envoy)もよく耳にするので勉強しました。

Envoyとは?

EnvoyはクラウドネイティブなWebサービスのために設計されたロードバランサーです。 元はLyftが開発しており、現在はCNCF (Cloud Network Computing Foundation) によって管理されています。 Envoyには大きく2つの用途があります。

  • サービスメッシュの通信バス: サービスメッシュ内の各サービス間の通信を制御するプロキシ。サービスディスカバリーや流量の制御をする。
  • エッジプロキシ: サービス内のプライベートネットワークとサービス外をつなぐプロキシ。データセンターやKubernetesクラスタの外からのアクセスを受け付ける。

背景

モノリスで …

もっと読む…

Arch Linux上でSteamのゲームで遊ぶ

Linux

Portal Bundle

PortalとPortal 2がセットで180円という電波を受信したので早速買いました。 自分のマシンはArch Linuxということで、Linux環境でSteamをインストールしてゲームの起動までチャレンジしました。 結果を先に言うと、普通にプレイできました。 大きな障害もなくて驚きです。

SteamのLinuxサポートはかなり前からニュースになってました。 正式にサポートしてるOSはUbuntuまたはSteamOS(Debianベース)のみですが、Arch Linuxでも動かしてみました。 自分の環境は以下のとおりです。

  • Arch Linux
  • nVIDIA GeForce GT 1030

依存パッケージのインストール

まずはゲームを起動するための依存パッケージをインストールします。 Steamのゲームは32ビットバイナリでビルドされて …

もっと読む…

初めてのアメリカでKubeCon + CloudNativeConに参加した

12月10日から13日の4日間、北アメリカのシアトルでKubeCon + CloudNativeCon North Americaが開催されました。 自分も今のチームメンバーと一緒に参加しました。

KubeConキーノート会場の様子

イベント自体の報告は会社のブログで公開してるので、そちらを参考にしてください。

自分はこれまで、シンガ …

もっと読む…

「WebExtensionsとテスト」というお話をしてきました

WebExtensions

先日、WebExtensions Meetup #3 が開催され、そこで「WebExtensionsとテスト」というお話をしてきました。 この発表では、 WebExtensionsのテストの方法と、Vim Vixenが取り組んでいることについてお話しました。

この記事では発表資料をかいつまんで、より詳しく説明してゆきたいとおもいます。 それでははじまりはじまり〜。

はじめに

タイトルスライド 自己紹介スライド

まずは自己紹介。 WebExtensions歴は1年ちょいです。 メインで開発してるWebExtensionsは「Vim Vixen」です。

Vim Vixen Vim Vixenの開発環境

Vim Vixenの開発をスタートしたきっかけは、XUL製だったVimperatorが使えなくなったからです。 開発を始めて1年が経ち、現在はユーザー数も10,000を超えるほどになりました。

開発的な視点で見てみると、本体コードが5,000行程度、テストコードは3,000行程度の規模感です。 ビルドはBabelを使ってES7をトランスパイルし、webpackでシングルJS化して …

もっと読む…

ソースコード検索ツール「Livegrep」を構築する

DigitalOcean TIDE NYC 2018のセッションをなんとなく眺めていたら、「Livegrep」というソースコード検索ツールが紹介されました。 面白そうだったので、手元にも構築してみました。

Livegrepのスクリーンショット

Livegrepとは

Livegrepとはソースコード検索ツールです。 Livegrepの使用感は公式ページにアクセスすればわかります。 以下のリンクから、Linuxのカーネルを対象に検索できます。

Livegrepはリアルタイムのソースコード検索ツールです。 GitHub上でも全文検索できますが、Livegrepはファイルシステムに対して検索します。 そのためGitHub以外のソースコードや、バージョン管理されてないコードも検索の対象にできます。 またGitHubの全文検索と違 …

もっと読む…

Builderscon Tokyo 2018 に行ってきた (2/2)

builderscon2日目レポートです。 今日も豪華なスピーカーが勢揃いで、最高の1日でした。

builderscon tokyo 2018 end day

※ 画像はaphyrさんのスライドからです

Security, privacy, performance of the upcoming transport protocols

1本目は、kazuho氏による次世代のインターネットプロトコルのお話でした。

インターネット・プロトコルは変革期で、次々と新しいプロトコルが生まれています。 セキュリティという観点では、パブリックWi-Fiの普及やスノーデンの話をきっかけに、完全なネットワークで暗号化が必要となっています。 現在、あるいは近い将来にDNS over HTTPSやQUICなどの次世代のプロトコルが必要になっています。

この発 …

もっと読む…

Builderscon Tokyo 2018 に行ってきた (1/2)

Builderscon Tokyo 2018 1st Day

builderscon1日目に行ってきたので、忘れる前に参加レポートです。 buildersconは弊社からもスポンサーをしており、その招待チケットを頂いたのでbuildersconに行くことにしました。

buildersconは「知らなかった、を聞く」をテーマとした技術を愛する全てのギーク達のお祭りです。

buildersconの発表は最大5並列で行われ、ジャンルは組み込み系からWebフロントエンドまで様々です。 今年は(今年も?)ゲストスピーカーが豪華でNetflixやLyftのエンジニアなども招待されてました。 1日目の全体的な所感として、Kubernetesやマイクロサービスなどのモダンなインフラの話が熱い印象で、人が入り切らず途中で締 …

もっと読む…

オライリー・ジャパンから「Kafka」が発売されます

2018年8月3日に、オライリー・ジャパンから「Kafka: The Definitive Guide」の日本語訳が発売されます。 自分はこの本で、監訳という形で出版に携わらせてもらいました。

Kafak books

この本について

原書「Kafka: The Definitive Guide」は、Apache Kafkaの開発者たちによって執筆されてます。 本書はその和訳版です。

本書は、リアルタイムのストリーム処理基盤であるKafkaを使ったシステムの構築方法や、本番環境で運用するための手続きについて紹介しています。 本書ではKafkaのインストールから、Kafka APIを使ったアプリケーション、データパイプラインの構築方法、そしてKafka運用に必要なモニタリングやオペレーションをカバーしています。 またKafkaを使ったサービスのデザインパターンや、Kafkaの内部構造について …

もっと読む…

シェルスクリプトでIPアドレスの計算

sh

IPAMやDHCPサーバーを実装するとき、IPアドレスを機械的に生成するために、IPアドレスの計算をする事があります。 例えばIPAMがラックやデータセンターから機械的にIPアドレスを割り当てたり、DHCPサーバーが連番のIPアドレスを割り当てたりします。 この記事ではシェルスクリプトでIPアドレスを計算する方法を紹介します。

IPアドレスと数値の変換

IPアドレスを計算する上で欠かせない操作が、IPアドレスと数値の相互変換です。 IPv4アドレスは長さ4のバイト列に過ぎませんが、通常は192.168.0.1 のように人間の扱いやすい文字列で表現します。 一方IPアドレスを計算するには、IPアドレスをバイト列や32ビット数値などの、計算機で扱いやすい形に変換します。 IPアドレスを数値として扱えると、数値演算でIPアドレスを計算したりネットワークアドレスを求めやすくなります。

実はPythonは標準で、IPアドレスと数値の相互変換を簡単にできます。

import ipaddress
ipaddress.ip_address('192.168.1.200') + …
もっと読む…
< Page 2 of 25 >