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

WANDRD Prvke Pack を買った - カメラバッグ考2017

PRVKE Pack というバックパックを買ったのでそれの紹介と、バックパックを選ぶにあたっていろいろ比較検討したメモについて書いておく。 新たなバッグに求めること 他に検討したバックパック WANDRD PRVKE Pack 気に入っているところ いまいちなところ 新た…

セットアップスクリプトでは必ず rbenv exec/rbenv which したほうがいい理由

簡単に言うと、rbenv の shims はシェルの `PATH` 探索とは独立して実行ファイルを探索しているため。以下、単に rbenv としているけれどクローンである plenv なども同様と考えてよい。 shims とは rbenv の README が詳しい。 Shims are lightweight execu…

Perl で memcached を使うときは Cache::Memcached::Fast::Safe がよさそう

memcached はコマンドインジェクションの機会が主に2つあって、1つはプロトコルで定められたキー長250文字を越えた場合と、キーに改行文字を含む場合。詳しくは: 第2回 memcachedのセキュリティと脆弱性:memcachedの活用と運用 実践編|gihyo.jp … 技術評論…

markdown-toc: Go で Markdown の見出しをパースして目次を作る

Go

github.com Go でテキスト処理をする練習のために書いてみた。 mdtoc - The markdown ToC generator - ウェブログ - Hail2u.net が元ネタで再実装というかんじ。 小難しいことをやるとどうしても泥臭くなるけど、普段書いている高水準なコードはこれくらい泥…

数字で振り返った2016年

社内 LT 大会で「数字で振り返る2016年」と題していろいろ個人にまつわる数字を集めたので整えたものを遅ればせながら旧年の振り返りとします。 Amazon で購入した金額 年 金額 前年比 2016 389,277 円 (124.54%) 2015 312,547 円 (136.27%) 2014 229,352 円…

はてなブログのデプロイを約6倍高速化したはなし

今年、稼働中のサービスであるはてなブログのデプロイ方法を新しい方式へ無事故で移行し、従来と比べて約6倍速くデプロイできるようになりました。 この記事では、安全にデプロイ方式を変えたプロセスを順を追って紹介します。 はてなブログと継続的デリバリ…

レビュー依頼はすばやく見る

お題「エンジニア立ち居振舞い」 ということでエンジニアの立ち居振舞いについて書きます。今いるチームでは毎日午後からレビュータイムということでレビュー依頼された Pull Request を見ています。最近、他のチームからレビュー依頼が消化されなくて頑張っ…

indirect object notationでハマらないためのno indirectプラグマ

普段、Perlを書くときは require_ok などでモジュールがコンパイル可能か・構文エラーがないかをテストするようにしているけれど、 require_ok では発見できない構文エラーを発見したのでそれの詳細と対策について。 実行時エラーになる構文エラー (?) とind…

PENTAXで残した記憶たち

小学生のころにレンズ付きフィルムを少し使ったくらいで、カメラといえばデジタルの自分にとって長らく写真は、親に言われるまま渋々と学校行事のスナップ写真を注文して買うだけのものだった。高校生のころ、京都や東京で淡々と、あるいは鬱屈と撮った写真…

Scala めく春

春なので4年前くらいにコップ本の初版を読んで以来の Scala を書きます。 Scalaスケーラブルプログラミング第2版作者: Martin Odersky,Lex Spoon,Bill Venners,羽生田栄一,水島宏太,長尾高弘出版社/メーカー: インプレスジャパン発売日: 2011/09/27メディア:…

便利 zsh 設定 N 連発

zsh

シェルなどの設定の知見が意外と広まってないよね、ということで話題になったので書きました。 :q で exit https://github.com/aereal/dotfiles/blob/1be211fcda027f75b0624eab2c44a288f8e0691e/.zshrc#L174Vim 使っていると :q したくなるので alias をつく…

日本の伝統色を使ったカラースキーム: Japanesque

Vim

GitHub - aereal/vim-colors-japanesque: The colorscheme featuring Japanese traditional colors. 日本の伝統色を使ったカラースキーム: Japanesque GUI 版の Vim 向けカラースキーム・Japanesque を作った。iTerm 2 で使えるカラースキーム、Japanesque …

PageSpeed Insights のスコアを Mackerel に投稿するアプリケーションをボタン1つで Heroku にデプロイできる状態にした

GitHub - aereal/psi-metrics: Post PageSpeed Insights score to Mackerel PageSpeed Insights とは PageSpeed Insightsユーザが体感するページの読み込み速度を100点満点で評価するサービス。画像を圧縮せよとか HTTP キャッシュを使えとか、とにかく Web …

Capistrano 2で複数のログを tail するときに見やすくする

cap log するとデプロイ時に観察したいログがとにかく tail できるということになっている。しかしまとめて流れてくるので、どのホストからなのかなどわからなくて少し困る。ので、出力にホスト名とファイル名を含めるようにした。出力の例: [xxx.xxx.xxx.xx…

近況

フォローしている人がスターをつけたリポジトリを詳細に見たい https://github.com/ や https://github.com/USER.private.atom?token=XXX で見れるタイムラインを見て他の人が star をつけたリポジトリをチェックするといったことをしているとき、どういうリ…

Ruby でメソッド内で定数を定義する方法

Ruby ではメソッド内で定数を定義することは通常できない。 例: def k K = 1 end # /Users/aereal/Dropbox/sketches/const.rb:2: dynamic constant assignment # K = 1 # ^ ちなみに dynamic constant assignment は「メソッドの定義内で定数を定義できない…

2015 → 2016

2015 2015-01-01から1年間の記事一覧 - Sexually Knowing 「安全にソフトウェアをつくる」ことが大きな関心であり、そのために CI (Jenkins) をよりディープに使おうとしたり、Ansible や Homebrew を活用していわゆる Configuration Management を進めた。 …

CI で実行するスクリプトをリポジトリに含めるときに古いブランチでも実行できるようにする

Git

CI で実行すべき処理をシェルスクリプトなどにしてリポジトリに含めておく、というのはまっとうな管理というかんじで望ましい。とはいえ、新しく CI のジョブを追加するなどして新しいスクリプトをリポジトリに追加した場合、追加するコミットが含まれていな…

iTerm を全画面で表示するのをやめて画面の左半分に表示するようにした

Cmd-Return で全画面にできるのでそのようにしていたけれども、実際のところターミナルが全画面で表示できていて嬉しいことってあまりなかったので左半分に出すようにした。 上半分ではなく左半分にしているのは、ターミナルで見たい情報は幅よりも高さがあ…

連打を支える技術

この記事は、はてなデベロッパーアドベントカレンダーの19日目の記事です。 昨日は、id:t_kyt による あれから一年、あの TypeScript プロジェクトは今 - 多幸感 でした。 すばやく、かつ堅牢にアプリケーションをつくる ボタンを連打したくなる性と向き合う…

JSON::TypeInference 1.0 と JSON::Schema::Generator (trial) をリリースした

JSON::TypeInference 1.0 metacpan.orgだいたい欲しいものは実装したので覚悟を決めるという意味での 1.0 リリース。 これはなにか? Perl の値 (スカラ値、ハッシュリファレンス、配列リファレンスなど) が JSON のどの型であるかを推論するモジュール。 Per…

JSON::TypeInference 0.04 で null かもしれない値を Maybe 型として推論するようにした

metacpan.orggithub.comNull と値型のただ2つからなる Union 型を Maybe という特別な型として推論するようにした。ちょっと便利。Maybe だったら {"type" : ["null", "string"]} のように出力するようにすると、より厳密な JSON スキーマを生成することがで…

最近の CPAN モジュールを作るときの構成

github.comMinilla を使っている。minil new してからちょっと手を入れる。 .mailmap <aereal@aereal.org> <aereal@users.noreply.github.com>GitHub の Web インターフェースで Merge Pull Request ボタンを押すとコミットの AUTHOR_EMAIL がこれになる。たぶんメールアドレスを非公開にしているとこれになるよう</aereal@users.noreply.github.com></aereal@aereal.org>…

Perl の値から JSON の型を推論するモジュールを書いた

github.com metacpan.org これは何か Perl の値 (スカラ値、ハッシュリファレンス、配列リファレンスなど) が JSON のどの型であるかを推論するモジュール。Perl の 1 という値は JSON の number である、Perl の "a" は JSON の string である、という風な…

Config::ENV で各環境で必ず定義すべきキーを定めておく

metacpan.orgちょうどいいデフォルト値が見当たらないので、このキーは各環境で適宜、定義せよ、という風にしたい。interface みたいなかんじ。 use strict; use warnings; use Test::More tests => 2; use Test::Fatal qw(exception); { package My::Config…

#yapcasia に参加した

トークしつつ、トークを聞いたりなどした。 1日目 いろいろ聞いたけど印象的だったトークについて。HTTP/2時代のウェブサイト設計 - YAPC::Asia Tokyo 2015yapcasia.orgkazuho さんの発表を初めて見た。声が高い。僕は大学を中退していてアカデミアどころか…

#yapcasia で『世界展開する大規模ウェブサービスのデプロイを支える技術』という発表をした

世界展開する大規模ウェブサービスのデプロイを支える技術 - YAPC::Asia Tokyo 2015世界展開する大規模ウェブサービスのデプロイを支える技術 - YAPC::Asia Tokyo 20152年ぶり2度目の YAPC::Asia Tokyo でタイトルにある通り発表をしてきました。資料は近日…

YAPC::Asia Tokyo 2015 のトークスケジュールを集めたカレンダーを作った

https://www.google.com/calendar/ical/037qm3orvt1bkf5g2lsi1br0bg%40group.calendar.google.com/public/basic.icsYAPC::Asia Tokyo 2015 も来週に控えて、どういうトークを見にいくか悩むこの頃なのでカレンダーをつくりました。Talks - YAPC::Asia Tokyo …

npm install -g gulp とかしない流儀

gulp とかを使っているプロジェクトの場合、ビルドツール類も devDependencies に含めてバージョンを固定したいという要求があると思う。ところが実行ファイルにパスを手軽に通したいという理由のみで npm install -g gulp などしてしまうとバージョンが固定…

#小学生のときにやってた悪夢っぽいこと選手権

スコアメーカーという楽譜入力ソフトがあってこれを買ってもらって遊びはじめたところ、MIDI というもので勝手にコンピュータに演奏させることができるとわかって大喜びしはじめた。ひたすら入力して演奏させる。アーティキュレーションが思ったかんじではな…

electron で起動したアプリケーションがキーボードの入力を受け付けない問題

Atom Shell applications not detaching from shell when started via symlink on OS X 10.10 · Issue #1151 · atom/electron · GitHubこれに似た問題。tmux のセッション内だったので試しに reattach-to-user-namespace electron ... としたらうまくいった。

近況

YAPC::Asia Tokyo 2015 世界展開する大規模ウェブサービスのデプロイを支える技術 - YAPC::Asia Tokyo 2015yapcasia.org採択された。 App-xslatert と Text-Xslate-AST-Walker aereal/App-xslatertgithub.comApp-xslatert というツールを作り始めた。App-PRT…

mackerel-agent で便利に使える OS X 向けプラグインを Homebrew でインストール

aereal/mackerel-agent-plugins-osxgithub.commackerel-agent-plugins-osx というリポジトリを非公式に作って置いておくという活動を前からしている。今のところをバッテリ残量をホストのメトリクスとして投稿できるのみ。これを新しい MacBook にインストー…

OS X のセットアップを Ansible にだいたい任せる

新しい MacBook Pro がやってきたのでセットアップの記録を書いておく。 「だいたい」とあるように、実際のところ自分の手を動かさざるを得ない手順はまだまだあるし、むしろ増えたりもしている。 手順 App Store.app で Xcode をダウンロード System Prefer…

Path::Tiny を継承する

Path::Tiny - search.cpan.org Path::Tiny には new という、いかにもオブジェクト指向的なコンストラクタのような名前のメソッドが定義されているのでいかにもオブジェクト指向的に継承できるように見えるが結論から言うと できない 。 sub new { shift; pa…

Git でローカルの変更を捨てて upstream に reset したいとき

Git

git reset --hard [HEAD]@{u} tracking branch が設定されている場合に使える。1.7.0 から使える。

Git で特定のリビジョンから tarball やディレクトリを作る

Git

git-archive を使うと worktree に変更があるかどうか (dirty かどうか) を気にしなくてよくて便利。git で管理しているリポジトリの各ブランチの中身をそれぞれ個別のディレクトリにエクスポートする - その手の平は尻もつかめるさmoznion.hatenadiary.com…

Jenkins の REST API

http://JENKINS_HOST/job/JOB_ID/api/json 設定されているパラメータとか見える 最近のビルドとか見える http://JENKINS_HOST/overallLoad/api/json 負荷統計が見える http://JENKINS_HOST/load-statistics で見えるのと同じ?

GitHub の Deployments API を使ったデプロイのワークフローのイメージ

GitHub の Deployments API を使うと Web アプリケーションのリリース (デプロイ) に関わるワークフローをより便利にできそうだったので、試したことを記録する。 Deployments API でできること Deployments | GitHub API すべてドキュメントに書いてあるが…

Handlebars テンプレートをコンパイルした結果をファイルに出力する gulp タスク

aereal/gulp-handlebars-playground · GitHubHTML を出力するためのタスクを用意してみた。 gulp gulp-data gulp-compile-handlebars gulp-rename ……を使った。 gulp-data stream に data を追加できる。gulp-compile-handlebars などのようにパラメータを受…

Ansible の Variables の名前付けとデフォルト値の上書き

role で使う変数の名前が衝突しないよう配慮すると、素朴に辞書を定義して名前空間を導入したいと考えると思う: --- # roles/mackerel-agent/defaults/main.yml mackerel_agent: pid_file: '...' id: '...' ところが Ansible の Variables は辞書の deep mer…

テストの妥当性

ソフトウェア開発におけるテストは仕様の表現のひとつという風にも扱われるなど、重要な役割を担う一方で、テスト自体の妥当性の検証や保証は少なくて、こういう不安定な土台の上でいろいろやっていいのか、という気がする。レビューする時には、まずテスト…

Module が要求する実装を宣言して、実際に要求を満たしているか検証する

タイトルにあることを Ruby でやる実装を書いた:aereal/module-requirement aereal/module-requirement · GitHubSwift / Objective-C の protocol は具象クラスがメソッドを実装していることを要求できるので、Ruby でも似たようなことをやってみる、という…

Pow で静的にファイルのみをホストしてほしい

public/ ディレクトリがある場合 cd my_repo ln -sfv $PWD/public ~/.pow/my_repo public/ ディレクトリが無い場合 (ディレクトリ直下を ServerRoot にしたい) mkdir -p ~/.pow/my_repo ln -sfv $PWD ~/.pow/my_repo/public 結論 ServerRoot が ~/.pow/$vhos…

AquaSKK 4.2.1 をインストールする Homebrew Cask を書いた

以前に書いた AquaSKK をインストールする Cask を書いた - Sexual Knowing の続き。 Homebrew Cask で AquaSKK をインストールするには brew tap aereal/homebrew-aereal_casks brew install aquaskk Cask DSL 1.0 をサポート homebrew-cask/cask_language_…

テンプレートエンジン Night (#tenight) で「テンプレートの静的解析とリファクタリング」について発表した

テンプレートエンジンNight というイベントで Text::Xslate を使ってテンプレートの静的解析とリファクタリングを行った知見について発表した。 テンプレートエンジンを使ってこういうことができる、というような内容から、テンプレートエンジン作った・作っ…

Mackerel で QNAP も監視したいのでする

Go

最近、MacBook の SSD の空き容量がいつの間にか無くなっていて、スワップを作れなくなった結果、フリーズするということがあって反省したのでちゃんと管理しようという気持ちになった。 ひとまず家にある中で壊れたりトラブルが起きると一番困るのは QNAP …

Shipped Text-Xslate-AST-Walker @ 0.01

Text::Xslate::AST::Walker - Filter Nodes in the AST made by Text::Xslate - metacpan.org ae real / Text-Xslate-AST-Walker-0.01 - search.cpan.org これはなに? Text::Xslate::Parser が返す AST を文字通り「歩きまわる」ためのモジュールです。0.01…

HTML::Selector::XPath @ 0.17 で normalize-space() するようになった

HTML::Selector::XPath@0.16 は CSS における class セレクタと等価な XPath を出力しない - Sexual Knowing HTML::Selector::XPath@0.16 は CSS における class セレクタと等価な XPath を出力しない - Sexual KnowingNormalize space characters of the cl…

HTML::Selector::XPath@0.16 は CSS における class セレクタと等価な XPath を出力しない

再現コード class_with_lf.t class 属性の値における「空白文字」 class 属性の値は: The attribute, if specified, must have a value that is a set of space-separated tokens representing the various classes that the element belongs to. HTML Stand…