tslintで有効になっているruleをpreset由来も含めて一覧する

const { resolve } = require('path'); const { Linter, Configuration: { findConfiguration } } = require('tslint'); const tslintJsonPath = resolve(__dirname, '../tslint.json'); const { results: config } = findConfiguration(tslintJsonPath); co…

Macでプレゼンする前に見直したいたった1つの設定

System Preferences → Notifications → “When mirroring to TVs and projectors”にチェックを入れてプレゼン中に通知が出ないようにしましょう。(僕は念の為、通知センターからもチェックしています)ありがとうスティーブ。

BPMと音価を入れるとディレイタイムを計算してくれるやつをReactで作った

Reactでちょっとした計算機を作ろうと思い、せっかくなのでStorybookを試してみることにした。 できたもの GitHub - aereal/delay-time-calcBPMとフィードバックさせたい音の音価を入れるとディレイタイムがミリ秒で出力される。BPM 120で8分ディレイをかけ…

HTTP::Message#content($bytes)を呼んでもcontent-lengthは計算されない

HTTP::Request#content($bytes) もしくは HTTP::Request#add_content($bytes) を呼んでもcontent-lengthは自動で計算されず、0になる。 なのでそのままリクエストを送ると、ちゃんとcontent-lengthだけbodyを読む実装はボディが空だとみなすのでちゃんとcont…

AWS CloudFormationメモ

aws cloudformation package はS3にfunctionとかいいかんじにアップロードして、そのARNが埋められてそのまま aws cloudformation deploy 実行可能なテンプレートを出力してくれる そのパスを指定する引数が --output-template-path cloudformation自体はS3…

Go: 外部ライブラリを使ったコードをいいかんじにDIしてテストする話

結論 実装ではなくインターフェースに依存させる Goのinterfaceは実装の明示が必要ないので便利 aws-sdk-goのスタブ 外部ライブラリの例としてaws-sdk-goを使ったこういったコード例を考える: type CertificateFetcher struct { client *dynamodb.Client } f…

吉祥寺.pm mini #012 に参加した

kichijojipm.connpass.com 参加した。酔った勢いで参加登録し、新幹線と宿を予約をし、東京は吉祥寺に舞い降りました。 ライブと仕事でしか東京に行かないので西のほうに行くのは新鮮。 設計というテーマもさることながらしんぺいさん (id:nkgt_chkonk) を見…

GoのデバッグはdelveとVisual Studio Codeが便利

Go

delveとは Go向けのデバッガで、ステップ実行とかブレイクした行のレキシカル変数が見えたりといった基本的な機能を提供しつつ、dlv debug でコンパイルしつつ実行 (go run) したりgo(1)とほどよく統合されている。後述するheadlessモードがあっていわゆるリ…

Dockerのコンテナ内でapt-cache searchしてパッケージが見つからないとき

rm -rf /var/cache/apt/archives/* /var/lib/apt/lists/* してないか確認する。コンテナのプロビジョニングを試行錯誤しているときに docker-compose run --rm app bash とかやりがちだけど、最初の方に apt-get update && apt-get install && rm -rf /var/c…

unzipは展開先のディレクトリ・ファイルが存在したら上書きしていいか聞いてくる

スクリプトで自動化したいときは困る。そういうときは unzip -o /path/to/kure.zip のように -o オプションを使うとよい。 -o overwrite existing files without prompting. This is a dangerous option, so use it with care. (It is often used with -f, h…

Google Calendarについてあなたが知るべきたった1つのこと

「予定あり」「予定なし」という概念があり、これが「予定あり」の予定が入っているときのみ「時間を探す」などでブロックされる。 言い換えると予定が「予定なし」だと他の人からは空いているように見える。 ちなみに「終日」にするとデフォルトが「予定な…

LWP::Protocol::PSGI 0.10以降でLWP::UserAgentの:content_file引数が使えるようになっている

- Fix mirror() (haarg) #9 https://metacpan.org/changes/release/MIYAGAWA/LWP-Protocol-PSGI-0.10#L4 changesには `LWP::UserAgent#mirror` についてのみ言及があるけど、`get()` メソッドの `:content_file` 引数にも影響がある。`mirror` メソッドも `:…

日記を書くWebアプリケーションを書いている

GitHub - aereal/nikki昨年末からぼちぼち書いている。 モチベーション いわゆるページを動的に生成するWebアプリケーションのパフォーマンスチューニングの練習台 サーバサイド、クライアントサイド双方に渡る改善を試みる余地がある 諸々のWeb技術の遊び場…

MacBookのバッテリ残量をMackerelに投稿するプラグインをmkr plugin install対応した

github.com sudo mkdir -p /opt/mackerel-agent/plugins sudo chown -R $(id -un):$(id -gn) /opt/mackerel-agent/plugins mkr plugin install aereal/mackerel-plugin-macbook-battery-health@v0.0.2 cat <<EOS >> /usr/local/etc/mackerel-agent.conf [plugin.me</eos>…

2017年に利用した継続課金サービス

r7さんらの振り返りがおもしろかったので自分も書き出した。 medium.com medium.com 継続しているサービス dアニメストア 5,184 JPY/year 過去作から最新作までたくさん配信されているのでなにか見たいな〜という時に便利。 最近はテレビ放映とタイミングを…

数字で振り返る2017年

Amazon で購入した金額 年 金額 前年比 2017 483,040円 124.09% 2016 389,277円 124.54% 2015 312,547円 136.27% 2014 229,352円 - カメラやレンズなどは含んでいない。主に Kindle 本や生活用品など。 この調子でいくと来年は45万くらい年間で使う目測だけ…

.devなどのTLDはChrome 63からHTTPSを強要される

その昔Powを使っていた名残で、開発時のループバックドメインに `.dev` をよく使っていたのだけれど、最近うまく動かなくて調べたところ、HTTPSで通信しようとして失敗していた。アプリケーションでそんな設定した覚えないんだけどな……と訝しんでいたら、ど…

同じ名前のHTTPヘッダを複数回出力してもよいのか

結論: 値がcomma-separated listと定められているヘッダはOK 同じ名前のHTTPヘッダを複数回出力する、とは こういう出力: ... Vary: Accept-Encoding Vary: User-Agent ... 同じ名前のHTTPヘッダを複数回出力すると、受信者はどう振る舞うのか RFCより引用: …

mackerel-aws-s3-stats: S3のオブジェクト数とサイズをMackerelに投稿するいいやつ

github.comいいやつを作った。AWS SDK for Goを使っているのでIAM roleが適切に設定されたEC2のインスタンス上ならAWSの認証情報は特別渡さなくてよい (もちろん環境変数で渡してもよい) ので、MackerelのAPI keyとサービス名さえ渡せばすぐに使えます。さら…

GAE/GoでNetatmoのAPIから取得した温湿度をMackerelに送るアプリケーションを動かす

GitHub - aereal/gae-go-netatmo-ws-mackerel冬なのでNetatmo Weather Stationを購入して自宅で動かしはじめました。エアコンをつけるといきなり室温が上がってエアコンはすごいなーということがよくわかって便利。ウェザーステーション Netatmo Weather Sta…

大コンテナ時代を生きのこるためのJSON Schema

実行環境をコンテナ化するDockerが普及して久しく、CIやローカルの開発環境などどこかでコンテナ技術に触れているのではないでしょうか。コンテナはその性質上、設定のプロビジョニングに古典的な設定ファイル (のパス) 受け渡しが難しいです。etcdやconsul…

寝て起きる

昨日書いてたコード、テストが落ちるけどわけがわからないので途方に暮れたけど、一晩寝て起きたらもしかしてこうでは? という気付きが得られて、出社して試したらうまくいった。集中力は単に集中力と言われるのであらゆる対象に対して1つの共有のプールがあ…

インストールがとても高速化されたcapistrano-strategy-jenkins_artifact 0.4.0をリリースした

GitHub - aereal/capistrano-strategy-jenkins_artifact: Capistrano 2 strategy that uses Jenkins' artifact as a distribution provider.Release v0.4.0 · aereal/capistrano-strategy-jenkins_artifact · GitHubcapistrano-strategy-jenkins_artifactと…

ISUCON7予選に秒速5000兆クエリというチームで参加した

ISUCON7 開催&日程決定! #isucon : ISUCON公式BlogISUCON7のオンライン予選にid:astjとid:tanishiking24の3人で秒速5000兆クエリというチームで出場した。最終スコアは9万ちょっとで、ベストスコアとほぼ同値だったので実力を出し切ったと思う。ISUCONに競…

週5日8時間労働は厳しい

しばらく体調が悪く、週末になるとへとへとになる状態が続いている。土日に休むとリフレッシュできて月曜日には元気一杯になるので、老衰による疲れやすさがあるにせよ、体力の最大値がそんなに大きく目減りしていることでもなさそうなので、今週は午後から…

スマートフォンからSlackを消した

休んでいる時にたまに見たりしてしまい無闇に疲れていたので消してしばらく経つ。緊急の連絡はDMでやりましょうって合意できているし、DMはメールでも通知が来るようにしているので、ひとまず困らないだろうと思っているけど、実際どうかはわからない。あと…

『Scalaで自動作曲の練習』を社内勉強会で話した

speakerdeck.comだいぶ大仰なタイトルでありますが掲題の内容を社内勉強会で話しました。音楽を作る古典的な方法論 (機能和声) を取り上げ、その中でも和声 (harmony) をコアドメインと見据え、実際に和音進行の規則などを実装したという内容です。和声と周…

リモート勤務メモ

社内グループに書いていたメモをせっかくなので放流します。 前提 昼食はオフィスで食べられる 基本はオフィス勤務だが、相談の上リモート勤務も可能 自宅からオフィスには徒歩で20分、自転車で10分 京都在住 北海道の実家で2週間程度のリモート勤務を2回経…

#builderscon tokyo 2017で『Goで実装する軽量マークアップ言語パーサー』というトークをしてきた

Goで実装する軽量マークアップ言語パーサー - builderscon tokyo 2017buildersconは初参加。ぼちぼちパーサーを書いていたのでいい機会だと思って応募し採択されてこの度初ビルコンで話してきた。 トークについて 60分枠でひとりで話すのは初めてで時間配分…

Content-Security-Policyやらsubresource integrityなどに関するメモ

最近、セキュリティに特に気をかけなければいけないサービスの開発をしていて調べた知見のメモ。 subresource integrity Subresource Integrity - Web security | MDNいわゆるチェックサムの仕組み。 integrity 属性に ${hashalgorithm}-${hashdigest} 形式…