ゆるふわキャンパー

ゆるふわキャンパー

このブログは読むと思わずキャンプに行ってみたくなってしまう楽しいキャンプノウハウをわかりやすく紹介するわけではなく、技術ネタ中心でたまに酒と釣りの話をします。

Change Ghost blog Font
ghost

Change Ghost blog Font

このブログはGhostというブログエンジンで動いていて、テーマはCasperを使っています。 このCasperのdefaultのフォントだと日本語の文字がちょっと細すぎて見辛いと感じることがあるので、別のフォントにしてみました。 Ghostには管理画面から任意のhtmlをヘッダ、フッタに挿入することができます。この機能を利用してフォントを変更してみます。 * Code Injection 以下のコードを挿入しました。google fontのLatoフォントを使ってみました。 * Google Fonts * Google Fonts - Lato
2 min read
Intentional kernel panic
linux

Intentional kernel panic

意図的にカーネルパニックを起こす秘術を習得したのでφ(..)メモメモ。 これでカーネルパニックを起こせる。 sudo sh -c 'echo 1 > /proc/sys/kernel/sysrq' sudo sh -c 'echo c > /proc/sysrq-trigger' 実際VM上でやったらVMが死んだ。 SysRqとは SysRq(System Request)とはLinux(Unix?)用のキーボードのキーの1つとして存在していたらしい。用途としては、メインフレームに要求を投げたりする際に使われるキーだったらしい。 システムを再起動させたり、プロセスを強制的に終了させるなど、何らかのトラブルに対する対処用という側面を持つのものらしい。 SysRqを有効にするために/proc/sys/kernel/sysrqへ値を入れている。 sysrq-triggerとは sysrq-triggerとはSysRqキーからのコマンドキーを受け取るためのファイルで/proc/sysrq-triggerにある。 echo c > /proc/sys
1 min read
Bdash
bi

Bdash

BIツールにre:dashを使っています。 * redash - ゆるふわキャンパー 今朝Twitterを見ていたら、新しいBIツールのBdashが発表されていたのでどんなものか使ってみました。 * BdashというBIツールをリリースしました - hokaccha hamalog v3 * GitHub - bdash-app/bdash: A simple business intelligence application. 特徴 BIツールはre:dashしか使ったことがないのですが、re:dashと比べると以下のような特徴があります。 * Electronで作成されたデスクトップアプリケーション * gistで共有できる 使ってみる データソースとしてGoogle BigQueryをつなぎたいのでまずGCPの管理画面から新しくBdash用の認証アカウントを作成します。 * 認証情報(とサービスアカウント)の作成参照 鍵ファイルを取得したらBdashに設定して完了。 こんな感じで直感的に使えます。 gistへの
1 min read
Search Algolia index data with Golang client
golang

Search Algolia index data with Golang client

このブログの記事検索にAlgoliaを使っています。 * algolia - ゆるふわキャンパー Algoliaはjsonでデータをクラウドにアップロードし、APIで検索したいキーワードを投げて結果を得ることの出来るサービスです。 AlgoliaはREST API以外にも一通り有名どころの言語のライブラリを提供しています。今回はGolangのライブラリを使用して、私のブログの記事を検索してjsonで結果を得るところまでやってみます。 準備としてとりあえずalgoliasearchをインストールしておきます。 go get github.com/algolia/algoliasearch-client-go/algoliasearch 簡単なことからやってみる まずはQuick Startに従ってサンプルデータの検索をやってみます。 Quick Startではデータを登録する例から始まっていますが、今回はサンプルデータを手で直接Algoliaに登録しちゃいます。 contactsという名前でIndexを作成します。 早速登録したデータに
4 min read
Trying out CSP(Content Security Policy)
security

Trying out CSP(Content Security Policy)

最近以下のスライドを見てCSPの存在を知り、なんだか良さそうだったので自サイトを実験台に触ってみました。 CSP(Content Security Policy)とは CSPとは、「主にクロスサイトスクリプティング攻撃やデータインジェクション攻撃などを対象とした防御・レポートツール」のようです。 * Content Security Policy の紹介 - Web セキュリティ | MDN CSPの仕組み まずサーバ側でcontent-security-policyヘッダを返すように設定します。特別なミドルウェアやツールは要りません。 ヘッダの内容は、ブラウザに対し「サイト内のコンテンツに対するアクセスポリシー」をホワイトリスト形式で羅列したものです。また、使用できるプロトコルもサーバ側から指定することが出来ます。 * 例えば「全てのコンテンツがhttpsで読み込まれること」といったポリシーが設定できます(このポリシーでmixed contentが検出できそう!)。 するとブラウザがそれらのポリシーを受け取り、従います。 よって、CSPに
2 min read
Send GCP Billing metrics to Mackerel
gcp

Send GCP Billing metrics to Mackerel

Google BigQueryへエクスポートしたGCP Billingデータを使ってmackerelにGCP Billingのメトリクスを送ってみます。 メトリクスを送るためのプラグインは夜な夜な作りました。オプションにプロジェクトIDとデータセット名とテーブル名を指定すると現日付けの月の合計のBillingデータを取得することが出来るプラグインです。早く使ってみたい! * GitHub - Lorentzca/mackerel-plugin-gcp-billing: GCP billing costom metrics plugin for mackerel 準備 このプラグインは実行するための条件がいくつかあります。 テーブルに以下のスキーマが必要 * cost(FLOAT型) * start_time(TIMESTAMP型) 課金データのエクスポート機能でGoogle BigQueryにデータを送っていれば特に考えることはないはず。 サーバ上で実行するにはGoogle BigQueryに対する権限を持っている認証アカウントのjsonキーが必
2 min read
Details element with HTML5
html

Details element with HTML5

GitHubに何かの実行結果を貼ることはよくあるのですが、その中でも縦にながーい行数のテキストを貼る際はよくdetailsタグを使って折りたたんでいます(なるべくそういったものは貼りたくないですが...)。 このタグは使いたいと思った時なかなかワードが出てこないのでメモる(検索してもhtml5以前のjsとかcssでなんとかする記事ばかりヒットする)。 detailsタグはhtml5から導入されたタグで、開閉する要素を簡単に作れるものです。長いログも折りたたんで貼ることが出来るのでコメント欄がスッキリします。 * details 要素 | HTML5 タグリファレンス | W3 Watch Reference こんな感じで書くと...。
hogeコマンド実行結果 hoge hoge hoge hoge ... hoge
こうなる。 hogeコマンド実行結果 hoge hoge hoge hoge ... hoge 便利。
1 min read
Trying out golang BigQuery client library
bigquery

Trying out golang BigQuery client library

GCPのbillingをbigqueryにエクスポートしてre:dashで可視化してみました。 * Export GCP Billing data to Google BigQuery * Visualize GCP Billing Data 次はmackerelにbillingの情報を送ってメトリクスとして記録してみたいので、まずはgolangからbigqueryに対し何かしらのクエリを叩くところまでやってみます。 以下のドキュメントを見ながら試してみます。 * BigQuery クライアント ライブラリ 準備 ライブラリのインストール。 go get cloud.google.com/go/bigquery go get google.golang.org/api/iterator * cloud.google.com/go/bigqueryはbigqueryのapiを叩くライブラリ * ちなみにこのライブラリはまだβ版なので注意 * google.golang.org/api/iteratorはgoogle ap
2 min read
Rename heroku app name
heroku

Rename heroku app name

サイトのドメインを変えたのでheroku appの名前も変更してみる。 apps:renameで変更できるらしい。 * Renaming Apps from the CLI | Heroku Dev Center * ドキュメント見るより--help見たほうが早いかも $ heroku apps:rename --app redash-ponpokopon-me redash-lorentzca-me Renaming redash-ponpokopon-me to redash-lorentzca-me... done https://redash-lorentzca-me.herokuapp.com/ | https://git.heroku.com/redash-lorentzca-me.git ▸ Don't forget to update git remotes for all other local checkouts of the app. 変わった!
1 min read
Add annotation to Mackerel when changed infrastructure with Terraform
terraform

Add annotation to Mackerel when changed infrastructure with Terraform

mackerelにグラフアノテーション機能が追加されました。 * グラフアノテーションをリリースしました! ほか - Mackerel ブログ #mackerelio * Mackerel API ドキュメント(v0) - Mackerel API ドキュメント (v0) グラフアノテーション機能とは先日のmackerelミートアップでも紹介があった通り、デプロイや何かしらの事象をmackerelのグラフ上で注釈することができる機能です。 * Mackerel Meetup #9 Tokyo #mackerelio 今回はterraformで特定のリソースに変更があった場合、それをグラフ上に表示させてみます。 まずは普通にAPIを叩いてみる 鬼のようなcurlを実行します。 できた。 Terraformと連携させる方法を考える 今回は例として、DigitalOceanのtagリソースに変更が加えられた場合、グラフに注釈を入れるようにしてみます。 「tagリソースに変更が加えられた場合何かを実行する」方法として、null_reso
4 min read
DigitalOcean Roadmap 2017
digitalocean

DigitalOcean Roadmap 2017

2017年のDigitalOceanのロードマップ的な記事を読みました。 * 2017: What's Shipping Next on DigitalOcean 大きめのマイルストーンとしては、 * do-agentによる監視、モニタリングの提供 * ロードバランサの提供 があるようです。 do-agentについてはもう動き出していますね。私も先日少し触ってみました。 * DigitalOceanがリリースしたdo-agentとはどういうものなのか ロードバランサは今まで無かったのでFloating IP(EIPみたいなやつ)と自分で(もしくはセットアップ済みのイメージを使って)立てたロードバランサを使った冗長化の仕組みが、コミュニティのチュートリアルで解説されたりしていました。 * What is High Availability? | DigitalOcean ほかにはDigitalOceanのミッションが語られていました。曰く、「インフラを簡素化し、開発者が夢中になるような体験の創造」。...多分そんな感じ。 simpl
1 min read
Arukas provider was added in terraform v0.8.3, but removed in v0.8.4
terraform

Arukas provider was added in terraform v0.8.3, but removed in v0.8.4

terraformのアップデートが来ていたのでv0.8.5にアップデートがてらChangeLogを流し読み。 ん!?v0.8.3でArukasがサポートされてるやんけ!!Arukasユーザとして嬉しい。 ん?でもv0.8.4はずいぶん差分が少ないな...。 アッ We have removed the Arukas provider that was added in v0.8.3 for this release. Unfortunately we found the new provider included a dependency that would not compile and run on Windows operating systems. For now
1 min read
Slack × Re:dash
redash

Slack × Re:dash

slackとre:dashを連携させてみました。GCPの料金とか、勝手にレポートしてくれたら嬉しいな〜と思いやってみました。 連携方法 下記ページにアクセスし、Add to Slackする。 * Make Your Company Data Driven | Redash slackのログイン画面に遷移するので認証する。 slackにredashユーザが追加され、DMでre:dashのurlやapikeyの設定が対話形式で始まる。 apikeyはre:dashの管理ページから見れる。 こんな感じでbotと設定を行う。 /redash クエリ名と打ってクエリを実行することができるようになる!クエリ名の大文字、小文字は区別されないっぽい。 こりゃ便利ですね...! クエリのリンクを張っても反応する。 slackのremindコマンドから呼び出す remindコマンドを使えばslackで定期的にグラフを取得することが出来る。 例として1分後にグラフを取得してみる。 * /remind @here t
2 min read
Mackerel Meetup #9 Tokyo #mackerelio
mackerel

Mackerel Meetup #9 Tokyo #mackerelio

今年最初のmackerelミートアップに参加してきました! * Mackerel Meetup #9 Tokyo #mackerelio - connpass 会場はレコチョクさんのオフィスでした。なんてスタイリッシュなんだ。 内容は以下。 * The 2017 Mackerel Product Roadmap. * Mackerel x KDDIで実現するキャリアクオリティ監視サービス * Mackerel x Twilio ~レコチョクの場合~ * LT・懇親会 資料は公開され次第追記していきます。(`・ω・´)ゞ The 2017 Mackerel Product Roadmap mackerelの紹介と今週末告知される新機能、2017年のロードマップ。 新機能の紹介ではグラフアノテーションが気になりました。 グラフアノテーションとは、デプロイやキャンペーンなど、何かしらの事象をグラフ上にマークできる機能。今週金曜日に改めて発表されますが、既に使えるみたいです。 気になる2017年ロードマップのメモ。 先進的アーキテクチャ
3 min read
Migrating UTF8 to UTF8-MB4 on MariaDB
mariadb

Migrating UTF8 to UTF8-MB4 on MariaDB

ブログ記事に絵文字を使いたいので変更してみた。 設定方法 現状の確認。 > show variables like "chara%"; +--------------------------+----------------------------+ | Variable_name | Value | +--------------------------+----------------------------+ | character_set_client | utf8 | | character_set_connection | utf8 | | character_set_database | utf8 | | character_set_filesystem | binary | | character_set_res
1 min read
Visualize GCP Billing Data
redash

Visualize GCP Billing Data

GCPのBillingデータをGoogle BigQueryに送り始めました。 * Export GCP Billing data to Google BigQuery 早速re:dashで可視化してみます。 可視化する内容 Google BigQueryへ送られるデータの詳細は以下です。この中からてきとうに使えそうなものを拾っていきます。 * Billing data in BigQuery - Cloud Platform Console Help 今回は、 * X軸は月 * Y軸はコストの合計 * また、Y軸にプロダクトの種類(BigQuery, Computing Engineなど)も含める みたいな感じで集計してみます。 クエリ こんなクエリでやってみる。 SELECT SUM(cost) AS sum_cost, product, LEFT (FORMAT_UTC_USEC( UTC_USEC_TO_
2 min read
always_run is deprecated
ansible

always_run is deprecated

先日ansible-playbookを実行したら以下のようなWARNINGが出ました。 [DEPRECATION WARNING]: always_run is deprecated. Use check_mode = no instead.. This feature will be removed in version 2.4. Deprecation warnings can be disabled by setting deprecation_warnings=False in ansible.cfg. どうやらalways_runは非推奨になり、ansibleバージョン2.4で廃止されるようです。 代わりにcheck_modeを使えば良いみたいです。 * Check Mode (“Dry Run”) — Ansible Documentation always_run: yesとcheck_mode:
1 min read
Export GCP Billing data to Google BigQuery
bigquery

Export GCP Billing data to Google BigQuery

Google BigQueryを使うようになって暫く経ちました。 * bigquery - Page 1 - ゆるふわキャンパー そこで気になるのはGCPの使用料金です。Billingアラートを5ドルに設定したり、使いすぎないように気を使ってはいますが、どうせならちゃんとトラッキングしたいものです。 というわけでBillingの情報をGoogle BigQueryに記録する設定を有効にしてみました。 * Export billing data to BigQuery - Cloud Platform Console Help この機能、割と最近のもの?らしいですね。BillingデータをGoogle BigQueryに送る方法で調べると、いったんバケットにファイルとしてエクスポートしてそれをごにょごにょしてGoogle BigQueryに保存している記事が散見されました。 やりかた 「お支払い」メニューからエクスポート先にGoogle BigQueryを選んで、プロジェクト名とデータセットを選択するだけ。なんて簡単なんだ。 Billingデー
1 min read
Read access key from Vault with Terraform
terraform

Read access key from Vault with Terraform

ここ最近terraformのvaultプロバイダについて試していました。 * terraformのvaultプロバイダを試す * terraformでvaultから値を取得する方法 * Solved Vault data source error その成果として、terraformで管理している個人サーバのアクセスキーをvaultで管理し、terraformで利用してみます。 これまで main.tfのあるディレクトリでdirenvを使い、アクセスキーを環境変数で設定していました。 export DIGITALOCEAN_TOKEN="XXXXXXXX" これから vaultにアクセスキーを格納し、terraformから呼び出すようにしました。 data "vault_generic_secret" "digitalocean" { path = "secret/digitalocean" } provider "digitalocean" { token = "${data.vault_generic_secret.digital
1 min read
Solved Vault data source error
terraform

Solved Vault data source error

terraformからvaultを使う際にうまくいかなかった問題が解決できたっぽいのでメモ。 * terraformのvaultプロバイダを試す これ。* Resource 'data.vault_generic_secret.test' does not have attribute 'data' for variable 'data.vault_generic_secret.test.data' vaultのバージョンを0.6.0から0.6.4に上げたら解消した! terraformのvaultプロバイダのコードを見るとvaultのapiライブラリをインポートして使っている。 * terraform/data_source_generic_secret.go at master · hashicorp/terraform · GitHub vault側のチェンジログを見ると、0.6.0から0.6.4の差分はだいぶ大きい。例えば0.6.1ではGo APIのための修正が入っていたりする(この修正はCLIとGo
1 min read
What is do-agent by DigitalOcean
digitalocean

What is do-agent by DigitalOcean

1月4日にDigitalOcean公式ブログでdo-agentなるものの発表がされました。 * Improved Graphs: Powered by the Open Source DO Agent これが一体どういったものなのか、記事を読んで使ってみたのでメモしておきます。 do-agentとは 以降の引用部分は、記事から引っ張ってきたものです。 DigitalOceanはこんな感じで、立ち上げたサーバに対し申し訳程度のグラフダッシュボードを管理画面にて提供しています。 do-agnetは、このグラフをもっと有用なものにするためのツールで、サーバにインストールして使うものです。 開発はオープンソースで行われています。 * GitHub - digitalocean/do-agent: Collects system metrics from DigitalOcean Droplets より簡単に、より正確に、より詳細なメトリクスをモニタリング出来るようにすることで利用者のトラブルシューティングのスピードを向上させたい、という意図がある
4 min read
Visualization referral domains using google BigQuery
redash

Visualization referral domains using google BigQuery

re:dashとGoogle BigQueryでアクセスログを可視化して遊んでいます。 * bigquery - ゆるふわキャンパー * redash - ゆるふわキャンパー 最近Google BigQueryのドキュメントを眺めていてDOMAIN関数の存在を知ったので、これを使ってリファラのドメインを集計してre:dashで可視化してみます。 h2oでリファラをログに出力する方法 ログフォーマットでリクエストヘッダを指定(%{Referer}i)することでリファラをアクセスログに出力することができます。 * Access Log Directives - Configure - H2O - the optimized HTTP/2 server こんな感じでGoogle BigQueryに送られていっています。 $ bq query "SELECT referer FROM prod.h2o_access_log_20170118 where referer != \"-\" group by referer LIMIT
2 min read
Reopen a file using different encording with Vim
vim

Reopen a file using different encording with Vim

vimで開いているファイルのエンコードをその場で変更する方法をいつも忘れるのでメモ。 vimの設定で指定されている文字コードを確認。 * setはvimのオプションを切り替えるためのコマンド * オプション名?でそのオプションの値を表示する :set enc? 開いているファイルがどの文字コードで開かれているか確認。 :set fenc? 文字コードを指定してファイルを開き直す。 * editはカレントファイルを開くコマンド * ++シリーズは不正な文字への対応のためのものらしい :edit ++enc=shift_jis 参考 * edit-a-file - Vim日本語ドキュメント * ++opt - Vim日本語ドキュメント
Get value from Vault with Terraform
vault

Get value from Vault with Terraform

この前terraformのvaultプロバイダを使おうとした所うまくいきませんでした。 * terraformのvaultプロバイダを試す そこで、もう少し単純なコードで書き直して検証してみたところ、うまくvaultから値を取ってこれたのでその方法をメモしておきます。 準備 MacでVaultを起動しておきます。検証なのでdevモードで起動します。起動したら、出力に出るRoot Tokenの値をメモしておきます。 brew install vault vault server -dev 環境変数に必要な値をセットしておきます。 export VAULT_ADDR="http://127.0.0.1:8200" export VAULT_TOKEN="Root Tokenの値" main.tfを書く こんなmain.tfを書きました。 * vaultにsecret/doというpathを作成し、token=XXXXXXXXというkey/valueをセットする * データソースにvaultを指定し、作成したpathからfetchできるよ
1 min read