サクサク読めて、アプリ限定の機能も多数!
トップへ戻る
Pixel 9
keyamb.hatenablog.com
Go製の静的サイトジェネレータHugo向けに、Bootstrapを使った簡素なドキュメンテーション用のテーマBootie Docsなる物を以前に作って、折りに触れてメンテナンスしています。 今回は特に大きな変更や機能追加はないのですが、互換性のない変更もありますので、本記事にまとめておきます。 2016年5月に書いた前回記事の時点で、v1.1.1だったので、それ以降のv1.3.1までのCHANGELOGのまとめです。 サイト独自のカスタムCSSを設置可能にしました Enhance / Add site.css to customize UI for one's own site by key-amb · Pull Request #27 · progrhyme/hugo-theme-bootie-docs · GitHub v1.3.1の機能追加です。 初心者だけど、CSSのカスタマイズど
一昨日ふと思ってSNSに何件か短文を投稿したのですが、今後この件について再考したり、何か作ったりすることもあるかもしれないなと思ったので、記録がてらにこちらにも投稿しておきます。 タイトルについて ケース・バイ・ケースで、それで十分ということも、もちろんあると思います。 …と、一応補足しておきます。 思ったこと 分類作業は木構造になりがち。そもそもシステム的に木構造しかサポートされてないこともよくあるけど、それってデータの分類が完全にMECEでないといけなくて、人間に完全にMECEな分類を作ることを要求するので破綻する。理想は、例えば循環構造や重複を許した緩い木構造的なものだと思ってる。— きいあむ / IKEDA K. (@key_amb) 2017年3月1日 階層的な分類が発生するのは、群を全体として把握したい時だろう、たぶん。人のチャンクは7か8程度だから、要素が多いときパッと把握で
peco などを快適に使うために ~/.bashrc 内で bind コマンド*1を使って、キーバインドをカスタマイズしています。 このとき ssh $host "コマンド" のようにリモートからコマンドを実行すると、 ~/.bashrc から bind を実行する行で、下のような警告が出ます: /home/key-amb/.bashrc: line 30: bind: warning: line editing not enabled 解決策 この警告は TTY が有効でないことに由来するようです。 例えば、下のスレッドに回答があります: http://superuser.com/questions/892658/remote-ssh-commands-bash-bind-warning-line-editing-not-enabled?answertab=votes#tab-top 自
Ruby なら特に。 Ruby 以外でも、使えるケースはありそう。 Rake には次のような機能が有る。 タスクの依存関係定義 並列実行 別のタスクの呼び出し また、タスクを記述する Rakefile 内では Ruby の文法が使えるので、特に外部の gem を使わなくても、任意のタスクにアドオンで次のような機能を付加できる。 リトライ 終了処理 繰り返し 複数のタスクを並列実行 以下にサンプルの Rakefile を示す。 ※ここでは parallel を使っているが、同じことを parallel を使わずに記述することもできる。 require 'parallel' def invoke(task) Rake::Task[task].invoke end def execute(task) Rake::Task[task].execute end def parallel(*tasks
はじめに〜fireap to grifork Tree Deploy とは grifork: standalone モード grifork: grifork モード 使い方 動作例と実行ログ 今後の展望 余談〜デプロイの未来について おまけ〜grifork の語源 はじめに〜fireap to grifork 約半年前に fireap というデプロイツール(タスクランナー)を作りました。 オンプレミスでも使えて、ノード数 N に対して O(log N) で動作する、というものです。 が、前提条件として、システム内の全ホストに fireap をデプロイし、また、全ホストで Consul の agent を動かす必要があります。 その辺りが導入障壁になる環境もあるかもしれないな、と思いました。 …で、少し工夫すれば、「デプロイサーバにだけプログラムがあればツリー状にデプロイできる」ものも作れる
keyamb.hatenablog.com 上の記事を書いたのが3ヶ月前ですね。 趣味で作っているのでだいぶ波があるのですが、初コミットからは5ヶ月ほど経ちました。 "clenv" って何? "clam" モジュール NEW - "cload" コマンドと "cllib" 関数 NEW - shims/ に shim を置くことにした Travis CI で継続的にテストできるようにした clenv 環境で使える Bash 用の Logger モジュールを書いてみた 今後 脚注 "clenv" って何? https://github.com/key-amb/clenv です。 説明は上の記事に書きましたが、一応こちらでもかんたんに。 私が趣味で作っているツールで、シェルスクリプトの実行ファイルやライブラリをモジュール化して管理できるようにしてくれるものです。 名前はお察しの通り、rbenv
※9/3 @jnchito さんのコメントを受けて追記しました。 RSpec で example の外で定義したローカル変数を使う テストコードの例 特徴・用途 「アリ」なのか、「ナシ」なのか? 2016/9/2 現時点の結論 9/3 追記:ローカル変数が使えそうな例 (1) 長いメソッド等のリファクタ系 (2) セットアップに時間のかかるオブジェクトを1回だけ生成し、結果を利用したい (3) 時間がかかるわけでもないが、1回だけセットアップして結果を利用したい 参考 RSpec で example の外で定義したローカル変数を使う テストコードの例 こういうの: outside_var = :outside_var # (1) describe :top_scope do top_scope_var = :top_scope_var # (2) it :example_in_top_sc
Bash で enhancd を導入することにした cd の履歴を peco で移動したい。 シェル環境で peco を使いだした人なら、きっとそう思うことがあるでしょう。 zsh だと、cdr と組み合わせることで実現できます*1。 下の記事あたりを参考に設定するといいでしょう。 [zsh]cdr: 開いたディレクトリの履歴からディレクトリを開く | DevAchieve 最近ナウイpecoを試してみたメモ | Futurismo さて、bash の場合、最近は b4b4r07/enhancd を使う人が多いのではないかなと思います。 いくつか作者の @b4b4r07 さんが記事を書いてます。 http://blog.b4b4r07.com/entry/2014/11/20/134901 ターミナルのディレクトリ移動を高速化する この enhancd は Bash の小枝集 で紹介されて
備忘録を兼ねて、ブログを書いておきます。 きっかけは、昨日のはてブでホットエントリに上がっていた下の記事です。 元記事から、GitHub のソースコードにたどりついて、少しだけ内部のコードを読みました。 https://github.com/niieani/bash-oo-framework どうも、Pure Bash で書かれているようですね。 OO という名前が現すように、オブジェクト指向で書けるように型システムをも実装しているようです。と、これは記事でも紹介されていましたが。 さて、この記事を読む数カ月前に、私は Bash on Rails なるものを作っていた人を知ったので、それを想起しました。 Bash on Rails は @emasaka さんが作った Rails モドキで、「Bash の機能だけでいかに Ruby on Rails っぽいことができるか」を実践したパロディ企
気づけば1ヶ月以上ブログの更新が滞っていたようです(汗) いくつか小ネタが溜まっているので、隙を見て消化していきたいと思っています。 さて、半年ほど前に、日々の個人的な雑メモは こちらの Google サイト に書くことにしました。 その経緯については、下の記事でかんたんに紹介しています。 Google サイトは手軽にページ階層が編集できるなど、個人 Wiki として便利である一方で、 Markdown に対応していないというのが、そこそこ大きなペインポイントでした。 が、1ヶ月ほど前に何か手段はないかともう一度探してみたところ、 Markdown Here を見つけることができました。 2010年のStackExchangeで。GoogleSiteでMarkdownで書くのに、MarkdownHereがオススメされてる。https://t.co/6ZqMWgo2ab— きいあむ → @p
発表資料 @wyukawa Hadoop, Fluentd cluster monitoring with Prometheus and Grafana @mtanda Prometheus on AWS @tokuhirom promgen - prometheus management tool kawamuray HBase, Kafka cluster monitoring with Prometheus and Grafana @moznion 5分で作るprometheus exporter Togetter まとめ メモ 所感 発表資料 @wyukawa Hadoop, Fluentd cluster monitoring with Prometheus and Grafana Prometheus casual talk1 from wyukawa @mtanda Prom
主に先月、開発していました。 いまバージョンは 0.1.12 です。 最近、久しぶりにやりかけだった機能拡張を進めようかと思ったのですが、拡張した機能を今後、自分自身でもあまり使うイメージが持てなくて、現状をひとまずこの記事にまとめておくことにしました。 目次: clenv とは clam モジュール clam を使う前に 〜 clenv セットアップ その他便利かもしれない使い方 Clamfile 任意の実行ファイルを勝手に clam 化してインストール clenv を作ってよかったこと あれ、シェルスクリプトあんまり関係ない…? 他に似たようなものないの? 余談 〜 shove との関係 おわりに clenv とは シェルスクリプトのパッケージ管理システムがあったら、流行るんじゃないかという妄想があって、試しにちょっと作ってみた、という感じです。 WindowsでBashが動くようにな
前回の記事で紹介した poloxy をその後リリースして、本稿の執筆時点で v0.2.1 までバージョンが進みました。 ※5/8 v0.3.1 になったので追記しました。 目次: "poloxy" とは Motivation Current Status (※5/8 追記アリ) Milestone (余談) Another Approach 〜 Fluentd との相似について 5/8 追記: AdminLTE という UI テンプレートについて "poloxy" とは 繰り返しになるので詳しい説明は割愛しますが、スライドや README に載せている図を再掲しておきます。 こんな感じで、アラートをまとめて通知してくれるものです。 まとめられたアラートの内容は Web Dashboard で確認できます。 Motivation サーバサイドアプリケーションの開発・運用従事者の方は何かやらか
Bootie Docs はちょうど一年前ぐらいにドキュメンテーション用の静的サイトジェネレータがほしくて作った Hugo*1 の Theme (テンプレート)です。 当時の記事はこちら: Hugo で "bootie-docs" というドキュメンテーション用のテーマを作った #Hugo - weblog of key_amb 色々イケてないところがあったので、GW 連休中にがっつり手を入れて、機能追加もしましたので、お知らせします。 ほとんど CHANGELOG に書いた内容に相当します。 ※5/7 更に変更点有り、追記しました。 デフォルトアイコンがかっこ悪い 依存コンポーネントを最新版にアップデートし、シンタックスハイライトのスタイルを選択可能に サイトマップ的なページを作った サイドバーをスクロールに追従するようにした Google のサイト検索機能を使った検索フォームを付けられるよ
昨夜、GW 突入前に下の勉強会に参加してきました。 西日暮里.rb ゴールデンだよLT大会 @ 秋葉原UDX!! - 西日暮里.rb | Doorkeeper poloxy は未完成なのですが、"pool" + "proxy" の造語で、通知の送信者と受信者の間で動いて、流量をコントロールしたりしてくれるものです。 「アラートまとめる君」と言うとわかりやすいでしょうか。 まだリリースバージョンは作っていませんが、リポジトリは GitHub で公開しています。 GitHub - progrhyme/poloxy: Buffering Proxy System for Alerting 発表後にちょっとだけ README.md を作っておきました。 といっても、まだスライド以上の情報は(ソースコードを除いて)無いので、「どんなものか」というのはそちらを見てもらった方がよさそうです。 というわけ
CONTENTS: "shove" とは Motivation こんなツールにしたい 使い方について 中で何をやっているのか おわりに "shove" とは こちらです。 github.com 動作イメージとしては README.md にも貼っているスクリーンショットがわかりやすいと思うので、こちらにも貼ります。 成功時: 失敗時: 上のようにテストスクリプトを引数に与えて shove コマンドを実行すると、テストを実行して結果を出力してくれます。 Perl Monger のみなさんは「proveっぽい」と思っていただけたでしょうか。 そうです。名前の "shove" は "shell" + "prove" を縮めたものです。 bash だけでなく、ksh, dash, zsh など POSIX を満たしているシェルに対応できるように作りました。 $SHELL 変数の値と異なるシェルでテス
拙作の fireap について、最初のお披露目記事(↓)を書いてから1ヶ月と少しが経ちました。 それから Ruby 系の勉強会に参加する機会を伺っていたのですが、ようやく昨日 4/20 に 渋谷.rb[:20160420] で少し話すことができました。 下がその発表スライドになります。 "fireap" - fast task runner on consul from IKEDA Kiyoshi 概要の紹介 + 直近(といっても1ヶ月前)の更新内容をざっくり話した感じです。 以下、前回記事からの差分という形でまとめます。 v0.1 〜 v0.4 の更新内容 Consul の "service" や "tag", ノード名でタスクの対象を選べるようにしました。 config ファイルを毎コマンド実行前にバリデーションするようにしました。おかしな動作をしないように。 fireap task
小さな Bash のスクリプトを2つ書いたという小ネタです。 使い方 1. pathctl 環境変数に対する push, pop, shift, unshift 操作を提供します。 #!bash source pathctl.shrc pathctl_push /path/to/your-bin # 末尾に追加 pathctl_unshift /path/to/your-bin # 先頭に追加 pathctl_pop # 末尾から除く pathctl_shift # 先頭から除く 2. bb 簡易ベンチマーク。 time コマンドを付けて引数で与えられたコマンドを一定回数実行して結果を出力するだけ。 ## 例 $ bb.bash true "test -f bb.bash && echo true" "cat README.md" Exec 'true' 1000 times ... re
※4/6 その後調べた情報などを記事末尾に追記 前提となるニーズ サーバの負荷情報とか、アクセス状況のような KPI を取得・保存し、可視化(参照してグラフ化)したい。 リアルタイム性が要求される。5分以上前のデータしか見れませんみたいなのはお呼びでない。 古いデータはそんなに精度は気にしないけど、ロングスパンで俯瞰して見れたら便利。 最近はビッグデータ環境の時系列データ解析もビジネスではけっこうニーズがありそうだけど、そっちはもう少し要求が多そう。 ここでは考えないことにする。 選択肢になりそうなもの 古きよき RRDtool Elasticsearch + Kibana Graphite + Grafana InfluxDB + Grafana 等 Zabbix 他に、現実的には SaaS に任せるという手段もあるだろうけど、そう言うと話が終わってしまいそうなので、ここでは考えないこと
CPAN モジュールの DateTime::Format::Strptime は DateTime と同じ Dave Rolsky さんが開発しているもので、日付時刻を含む文字列のパースによく使われているのではないかと思います。 このモジュールの挙動が v1.58 から変わっていました。 #!perl use feature qw(say); use DateTime::Format::Strptime; my $strp = DateTime::Format::Strptime->new( pattern => '%Y%m%d', ); for my $str (qw/20160330 access_log.20160330/) { my $dt = $strp->parse_datetime($str); say "$str => undef " and next unless $dt
既に2回このブログで紹介している memcached-cli について、昨日開催された第8回 Gotanda.pm で LT してきました。 資料はこちらです。今回は Speaker Deck に上げてみました。 Speaker Deck だとスライド中のリンクが無効になる(?)ようなので、いくつか貼っておきます: https://github.com/key-amb/perl5-App-Memcached-CLI https://github.com/memcached/memcached scripts/memcached-tool doc/protocol.txt https://metacpan.org/pod/Term::ReadLine 残念ながら時間が足りず、デモが幻に終わってしまいました。 デモでは、Memcached の slab reassign, lru_crawle
3/24 の記事で、最近作った memcached-cli というツールの紹介をしました。 keyamb.hatenablog.com 別に困ってはいないのですが、もっと便利にしたので、Changes から抜粋して追加機能を紹介しておきます。 昨日か一昨日に手元に入れて試してみた、という方はぜひアップデートしてみてください。 gets, add, replace, append, prepend, cas, touch, incr, decr の実装 v0.6.0 以前は get/set/delete しかできませんでしたが、これで memcached/doc/protocol.txt に書かれている Retrieval, Storage コマンド + α のデータ操作が全てできるようになりました。 なんとなくコマンドの解説: add は該当キーのデータが無いときのみ成功します。 repl
Redis*1 には redis-cli というツールがあって、Redis サーバに接続して対話的にコマンドを発行して、結果を得ることができます。 Memcached*2 の場合、いい感じに使えるツールがなくて*3、必要なときはいつも TELNET でつないでコマンドを実行していました。 それもたまにしかやらないので、 set コマンドの打ち方とか、よく忘れて調べていました。(難易度高い) …というわけで、そういう操作を簡単に対話的に実行できるものを作りました。 github.com CPAN にも公開していますので、 cpanm App::Memcached::CLI でインストールできます。 これに script/memcached-cli というスクリプトを同梱しています。 まだすべてのコマンドを網羅できたわけではないですが((執筆時点の App-Memcached-CLI のバージ
github.com fireap = fire + reap です。 Consul Event を発火(fire)して、受信側でそれを収穫(reap)する、という意で。 読み方は「ファイリープ」で良いかと思ってます。 どんなツール? GitHub に上げた README.md より、かいつまんで日本語に変換しつつ説明します。 ノード数 N に対して O(log N) で動作するデプロイツールです。 が、実際にはデプロイに限らず任意のコマンドを実行できるので、README の中ではデプロイツールとは書いておらず、「高速タスクランナー」としています。 fujiwara/stretcher や sorah/mamiya は O(1) なので、それらが使える環境(S3 的な I/O やトラフィックの上限が非常に高いストレージがある)でデプロイを速くしたいという場合は、それらを使えばよろしいかと。
Consul の Kv は気軽に使えるデータストレージという印象だけど、ロック機構もあるようだ。 何度かドキュメントに目を通したけど、イマイチ使い所がわからなくて素通りしていた。 が、意を決して読み込んで手元で試したりして、だいたい理解できたと思うのでメモしておく。 仕様メモ まず Session について理解していないといけない Session の REST API については https://www.consul.io/docs/agent/http/session.html Endpoints: /v1/session/<operation> create, destroy/<session>, info/<session>, list, renew => あなたが期待する挙動をするでしょう。 node/<node> ... node に紐付いた session をリストする Ses
サーバインフラ運用の観点から。 メリット 起動が高速なので急な負荷上昇時に迅速にスケールアウトでき、機動的なキャパシティ制御(リソース管理)が可能。ピーク負荷に備えておくために、余分に起動しておくということが不要になり得る。 ただし、コンテナを載せるホストには常に余剰リソースが必要。 ローリングリスタートの仕組みが整えばデプロイがより安全になり、楽になり得る。再起動に伴う性能劣化やサービス停止の考慮が不要になるため。 アプリケーションに応じて graceful restart の仕組みを整えるという手間がなくなり得る。 OS やパッケージの更新がより簡単に実施できるようになる可能性がある。 コンテナ側の更新の容易さについては、上記で説明がついていると思う。 ホスト側の更新もより楽になりそう。 理由1) コンテナを別ホストに引っ越すことが簡単にできるシステム構成になるはず。 理由2) ホスト
Zsh編の方と同じことができるようになりました。 ただし、Bash の version 4 以上が必要で、Mac の場合バージョンアップが必要でした。 そのため、Qiitaに書いたやり方で、Homebrew で入れた Bash をログインシェルにしました。 以下、Mac の .bashrc の内容です。 history 検索 Ctrl-r のヒストリ検索を peco に置き換えてしまう。 # search history peco-select-history() { local tac if which tac > /dev/null; then tac="tac" else tac="tail -r" fi local l=$(\history | awk '{$1="";print}' | eval $tac | peco | cut -d' ' -f4-) READLINE_LIN
こんにちは、@key_amb です。ご無沙汰しています。 最近ブログの更新が遅れてまして、なんとなく申し訳ない気持ちになっている今日このごろです。 なんと、2ヶ月も更新してなかったんですね。*1 さて、前回の Gotanda.pm #5 では、テーマ(「高速化」でした)ガン無視の LT をしましたが、今回はちゃんと「障害」というテーマに沿って発表をしました。 障害を防ぎ、サービスを守るために #gotandapm from IKEDA Kiyoshi 時間がかなり余ったようで、もう少しネタを用意しておけばよかったなと思いました。 今回はこれまで仕事上、いろいろと障害やアラートの対応をやってきた中で、自分なりに大事だと思っている考え方をまとめてみました。 で、その中でどういうツールを使っているかなどの紹介をしました。 どちらかといえば概論的な話で、各論にはあまり踏み込んでいないのですが、何か
7/10(金) 吉祥寺.pm #4 で発表をしてきました。 お題が「PerlとPerl以外」ということだったので、PerlとPerl以外のWebアプリケーションのサーバサイド運用について話そうかなーと思い、発表枠で申し込みました。 …で、下のスライドで話をしました。 PerlとPerl以外の運用 #kichijojipm from IKEDA Kiyoshi 職場では、数年前まではサーバサイドの Web アプリケーションといえば Perl が主だったのですが、最近は Ruby を採用する案件も増えてきました。 本発表では Perl, Ruby の運用まわりでいくつかトピックを挙げ、それぞれどんなツール/ライブラリを使っているかなど紹介しました。 共通するものも、異なるものもありますが、紹介した切り口ではほぼ同等の要件を達成しています。 ツールは内製したものもあれば、OSS を利用したもの、
次のページ
このページを最初にブックマークしてみませんか?
『weblog of key_amb』の新着エントリーを見る
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く