読者です 読者をやめる 読者になる 読者になる

そんな今日この頃の技術ネタ

本家側に書くほどでもない小ネタ用

kubernetes学習その1 minikubeを導入して学習環境を整える

kubernetes Docker

どうも世のPaaSの趨勢はkubernetesを使う方向で決してる感じがあるわけで、そろそろ押さえておかねばなるまいと勉強しはじめた今日この頃。

一年前に前職でDockerのオーケストレーションツールを検討していた頃はまだどれが有力とも言いづらい状況だったし、導入も運用もなかなか大変そうな雰囲気だったのでスルーしていたのだけど、今では色々なPaaSがマネージドな環境を提供し始めたし、公式でminikubeというローカル環境が用意されたということで学ぶには丁度よいタイイングになったといえると思う。


「いうてもdocker-composeみたいなもんでしょう」とタカをくくって始めてみたのだけど・・・いやはや独特の概念・用語が沢山あるやら、移行しようにも必ずしも一対一で機能が対応しているわけではなくて頭を捻らねばならないやら。

学習コストは低くないというか、なまじdocker-compose慣れしてしまうと戸惑う部分もある。

ただ、実際に手を動かしてみると例えば起動・終了をトリガーとしたコマンドの実行やcron的な定期実行を定義できたり、何よりオートスケールを考慮した作りになっていたりと、なるほど実運用を見越した合理的な機能構成になっていると感じられる。

そんなわけで、学習環境としてminikubeをセットアップするところまで今回は紹介しようと思う。

続きを読む

Docker for Macが重くてしんどくなってきたのでdocker-syncについて調べてみた

Docker

OSXでWebアプリケーションを開発する上でDocker on Macは非常に便利ではあるのだが、ファイルシステムの関係上、 多数のファイルをマウントし書き換えが高頻度で発生するような用途では動作が非常に重くなってしまう。

(僕の場合だと最近はWebpackのdev-serverによるライブロードを使ったフロントエンド開発をやってるんだけど、これがファイル数が増えるにしたがって激烈に重くなってきたのだ・・・)

そこでファイル転送によって擬似的にマウントしているかのような動作を実現し、 動作速度の低下を回避するツールがdocker-syncである。

docker-sync by EugenMayer

github.com

続きを読む

突然Dockerコンテナ内からネットワークに繋がらなくなったらiptablesを疑ってみよう

Docker Vagrant

ちょっと前まで問題なく使えていたはずのイメージが、 ある日起動してみたらどうもネットワークに接続できない。

イメージは当然作成時と同じものだし、Dockerまわりの設定は変えてない、 ネットワークも別に阻害するような設定はしてないはずなのに・・・

結論からいえば、 ホスト側のiptablesを別件でも再起動するとDockerのデーモン起動時に設定した項目がリセットされてしまうことが原因だった。

僕は前職でこの件でかなりの時間を無駄にした経験があったのですぐに気づけたけど、 案外こういう話って記事で見かけなくて「これからDockerはじめてみよう」勢に把握されてなさそうなのでメモ的に書いてみた。

続きを読む

Ubuntuで/boot以下がいっぱいでapt-get upgradeできない時の対処メモ

Ubuntu

ひとまずapt-get autoremoveする。

$ sudo apt-get autoremove


導入済みのlinux-imageの一覧を参照。

$ sudo dpkg --get-selections | grep linux-image

一般には新しい方から2~3バージョンあれば良いので、古い方からapt-get removeしていく。

$ sudo apt-get remove linux-image-4.2.0-16-generic  linux-image-4.4.0-38-generic

Chrome拡張機能を作ってみる その2. UIを作成する、設定を保存する

Chrome拡張機能 Javascript

前回に引き続きChrome拡張機能を作ってみる話。

blue1st-tech.hateblo.jp

今回はHTMLでUIを構成したり、設定を保存したりしてみる。

「ページのタイトルとURLを事前に指定したフォーマットでクリップボードに保存する」というお題で作ってみた。

github.com


今回は以下のファイルで構成している。

  • 定義ファイルmanifest.json
  • 設定画面options.htmlとそこから呼ぶoptions.js
  • ポップアップ画面popup.htmlとそこから呼ぶpopup.js
  • 共通で使用するsetting.js
  • icon.png
続きを読む

Chrome拡張機能を作ってみる その1. HTMLを改変する

Chrome拡張機能 Javascript

ざっくりChrome拡張機能(Chrome Extension)の作り方を学んでみた。

学ぶにも相応にモチベーションは必要ということで、 ある程度実用的かつ拡張機能らしさがある例題として「ログインページのパスワードフォームの文字列を平文で表示する」機能を作成してみることにした。

具体的には閲覧しているページのHTMLの<input type="password">要素を<input type="text">に置換すれば良い。

この動作を拡張機能で実装してみる。



拡張機能の作成の概要

拡張機能は大雑把には、以下の要素により作成できる。

  • 名称やアイコン、後述する実態ファイルの構成なんかを定義するmanifest.json
  • 機能の実体となるJavascript
  • UIを構成するHTMLとそれに付随するCSS、Javascript

今回の機能では以下のファイルを作成した。

  • manifest.json
  • constantscript.js
  • background.js
  • icon.png

github.com

続きを読む

Google Compute Engineを使ってみる

GoogleCloudPlatform

職場が変わると色々見えてくるものが変わるもんで、 2016年も末となって今更ながらにクラウドのサービスの凄み有り難みを体感している今日この頃。

そろそろサーバサイドエンジニアの職能として、 インフラエンジニアが用意してくれる箱をいじるだけでなく、 自身でもどういうものなのかある程度は把握する必要があるなと思うところ。

そんなサービスの一つが、Googleのインフラ上で仮想マシンを立てるIaaSであるところのGoogle Compute Engine。

幸いにして$300分のクレジットで2ヶ月間体験できるとのことなので、試しに使い始めてみるところまでやってみた。

続きを読む