Folioscope

Simplicity is the keynote of all true elegance.

2018-06-25

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

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

IPアドレスと数値の変換

IPアドレスを計算する上で欠かせない操作が、IPアドレスと数値の相互変換です。 IPv4アドレスは長さ4のバイト列に過ぎませんが、通常...

もっと読む…

2018-06-20

オープンソース活動はドキュメントの修正から始められる

Readme Patch

先日、Vim VixenでREADME修正のPull Req.をいただきました。

あまりにも嬉しくて勢いで記事を書きました。

ドキュメントのメンテナンスは面倒くさい、なのでドキュメントの修正は嬉しい

ドキュメントのメンテナンスはソースコード以上に面倒です。 個人プロジェクトなんかは、作ってる本人は仕様が頭に入ってるので、文章が無くなったら引き継ぎができないなんてことはありません。 READMEが無くとも自分は全く困ってなかったので...

もっと読む…

2018-06-03

Linuxのユーザー管理をetcd上でする

週末の自由研究で、Linuxのユーザー管理をetcd上でするサービスを書いてみました。

複数のマシン間でユーザー情報を管理するサービスといえば、LDAPが有名所です。 しかしLDAPは重装備すぎるので、もっとlightweightなサービスができないかと考えてみました。 そこでPoCですが、etcdをバックエンドにユーザー管理をしてみました。

ueokande/etcd-passwd Linux user managerment...

もっと読む…

2018-05-21

Vim Vixen 0.13をリリースしました

お待たせしました。先日Vim Vixen0.13をリリースしました。

このバージョンでは多くの機能が追加されました。 主な機能を簡単に紹介したいと思います。

ページソースの表示

現在のタブの、ページソースを表示できるようになりました。 デフォルトはgfに設定されます。 古いバージョンから更新したユーザーは、以下の設定を設定画面の"keymaps"以下に追加してください。

{
  "keymaps": {
    "gf...
もっと読む…

2018-02-25

WebExtensionsでE2Eテストを自動化した

Running Screenshot

Vim Vixenの開発では、開発スピードではなく品質を重視しており、毎リリース直前にフルリグレッションテストを行ってます。 それらの試験を手動で行っており、各リリース前にQA Pull Req.に試験結果を記録してます。

現在の試験項目は100を超えてます。 品質は大事にするとはいえ、各リリース毎に手動で試験を行うのは、地道で退屈な作業です。 今後機能追加などで更に試験項目数や複雑な試験が増えることは予想されます。 このままでは将来、同様の品質を保つのは難しいと思い、Vim Vixen...

もっと読む…

2018-01-26

etcdでleader electionしようと思ったら難しかった話

あるクラスタ内に複数ノードがあり、そのうち高々1ノードのみがサービスを提供する仕組みを作りたいと思いました。 これはetcdを使うとかんたんに実装できるんじゃないかとおもい試してみました。

etcdにはcompare and swapのAPIがあり、キーの前の値や無い時のみにキーを更新できます。 それを使ってノード間でleader electionして、leaderになった後にサービスを起動する仕組みを考えました。 他の場所でもよくみる方法だったので、これを使えば実現できるんじゃないかと...

もっと読む…

2018-01-21

Vim Vixenの開発について

昨日Vim Vixen 0.10をリリースしました。 おかげさまでVim Vixenのユーザ数も8,000人に届こうとしてます。

このVim Vixen 0.10では、クリップボードからURLを開く、Inputにフォーカスするなど、新たに4つのキーマップが新たに加わりました。 またプロパティという仕組みを追加し、スムーズスクロールと、ヒントのカスタムキーマップを設定できるようになりました。 詳しくはリリースノートをご覧ください。
Vim Vixen – Add-ons for Firefox

もっと読む…

2017-12-20

Kafka Replication Deep Dive

この記事は Distributed computing Advent Calendar 2017 20日目の記事です。

Apache Kafka Logo

Kafkaのレプリケーションは、高可用性と高信頼性を実現するための、重要な機能の1つです。 この記事では、Kafkaのレプリケーションの仕組みについて紹介します。

レプリケーションの基礎

Kafkaのデータストリームの最小単位はパーティションです。またレプリケーションもパーティション単位で行われます。 Kafkaのレプリケーションの情報は、ZooKeeper上に...

もっと読む…

2017-12-13

Kafkaの管理ツールを読む - kafka-broker-api-versions.sh編

この記事は Distributed computing Advent Calendar 2017 の13日目の記事です。

Apache Kafka Logo

Kafkaのブローカー間、あるいはブローカーとクライアント間の通信は、TCP経由のバイナリプロトコルです。 それぞれの通信はAPIとして定義されており、どういうフォーマットのリクエスト・レスポンスなのかが定められています。

APIにはバージョンがあります。 ブローカーがサポートするAPIのバージョンを取得するには、Kafkaに標準に同梱されている kafka-broker...

もっと読む…

2017-12-06

Kafkaの管理ツールを読む - kafka-topics.sh編

この記事は Distributed computing Advent Calendar 2017 の6日目の記事です。

Apache Kafka Logo

Apache Kafkaにはクラスタの管理ツールが含まれており、ユーザはこれらのツールを使ってトピックやオフセットを管理できます。 コードは規模的にもあまり大きくないので、Kafkaの勉強にはちょうどいい教材です。 Kafkaの内部構造を知ることで、障害発生時に原因を特定しやすくなります。

この記事では、トピック管理用の kafka-topics.sh の、よく使...

もっと読む…
Page 1 of 23 >