サクサク読めて、アプリ限定の機能も多数!
トップへ戻る
アメリカ大統領選
blog.yuyat.jp
AirPods Pro を使って英会話の訓練をしながら Kubernetes をはじめとするあらゆるテクノロジーについて学べるすごい学習法 Dec 2, 2019 約 1 年ぶりにブログを書くにあたって、めちゃくちゃ釣りっぽいタイトルにしてみました。 (昨日すでに別の記事が出ていますが、書き始めたのはこちらが先でした) この記事は AirPods Pro のアフィリエイトによる小銭稼ぎ (まぁ今現在 Amazon では売り切れてるけど) と、僕のあらゆる物事に対する学習・訓練に対する考え方をまとめて、識者からフィードバックを得ることを目的にしています。 で、その両方を達成する上で都合がいいので、AirPods Pro を使ったシャドーイングを題材に書いてみようと思います。学習に関する考え方についてはいかにもわかってる風に書きますが、素人が適当なことを言っているだけなので、暇つぶし程度にご笑
SRE チームで Engineering Manager になって二ヶ月経っての心境など Dec 1, 2019 この記事は Engineering Manager vol.2 Advent Calendar 2019 の 1 日目の記事です。 2 日目は taminif さんのマネージャーになったら身に付けたいファシリテーションスキルです。 ふわっとしたタイトルのゆる目の記事ですが、Engineering Manager としては新米ですし、Advent Calendar 的にもまだ初日なのでこれぐらいで許してください。 まぁ一言でいうと「Engineering Manager は決して楽ではないけど楽しいぞ!」という感じです。 Engineering Manager として置かれている状況 前提としてこんな感じですよ、というのを軽く書いておきますがここは読み飛ばしてもらっても大丈夫です
CircleCI 上でのコマンドの実行時間を Datadog に残す circle-dd-bench 作った Dec 25, 2018 この記事は CircleCI Advent Calendar 2018 7 日目の記事です。今日は 12 月 25 日ですが、自分の担当分をサボっていたわけではなく、週末作ったツールについて今朝方ツイートしたところ、CircleCI Japan の中の方に「アドベントカレンダーの7日目が空いてしまったのてすがもしよければ」と誘われて書いている次第です。 というわけで早速この circle-dd-bench というツールについて紹介します。 これは何? これは CircleCI 内でコマンドを実行する際、ラッパーとして使用することで、実行時間を Datadog にメトリックとして記録するというものです。 例えばこのようなコマンドを実行していた場合 docke
最近ようやく開発ツールとして Docker が手に馴染んできたので、タイトルの件も含めていくつか雑多に書きます。 CLI ツールを Go で書いて Docker イメージとしてリリースする コマンドラインツールを Go で書く、というのは以前からやっていて、主な理由としては「クロスコンパイルができるのでバイナリリリースが簡単」というのがありました。便利なので、クロスコンパイルから GitHub へのリリースを一発でやってくれるラッパーツールを書いたこともありました (一応動くものの、開発は非常に中途半端なところで止まってますが) gox して ghr するツール ggallin 作った その後、2017 年に入って Docker で Multi-Stage Builds という機能が実装されてからは、Dockerfile 内の build ステージで go build したバイナリを最終的
Kubernetes の ConfigMap を Immutable に管理する Jul 1, 2018 Quipper では Microservices 基盤として Kubernetes によるクラスタを構築し、もうすぐ本番環境にリリースしようとしています。本当は Deis Workflow で使う Kubernetes クラスタを既に本番で運用していますが、Deis なしでの運用に変えようとしているのが最近の状況です。 そこら辺の背景は 2018/07/19 に行われる Quipper Product Meetup でお話しするとして、今は YAML の管理どうするかみたいなところから試行錯誤している状態で、基本的には Pull Request ベースでレビューしてマージされたらデプロイ、みたいなことをアプリでもクラスタでもやる感じになっています。 今日は、その中でも ConfigMa
Oculus Go を買いました。64GB のものが 29,800 円税込送料なしという圧倒的格安なので、VR に興味のある方は是非買いましょう。Amazon で売られている転売品はくれぐれも買わないように。 寝転んでNetflixを大画面で観る方法(Oculus Goユーザー必見)という記事を読んで、寝ながらの Netflix の体験がとにかく良かったので、Kindle の書籍も同じように読めないかやってみました。 TL;DR Oculus Go 標準のブラウザで Kindle Cloud Reader を Request desktop mode で開く 日本語の書籍は基本的に Kindle Cloud Reader 自体の制約で開けない 漫画は開けるが、読み込みが遅かったり、画面サイズの都合で見開き表示ができなかったりと体験が良くない 洋書であれば割と普通に読める 寝ながら本が読みた
bundle install には --clean を指定する (特に Circle CI では) Apr 16, 2018 TL;DR bundle install を --clean オプション付きで実行することで、もう使っていない gem や古いバージョンの gem が削除されます。 さもないと、Circle CI 上における Bundler のキャッシュの restore はどんどん遅くなります。 前提 この記事では Circle CI 2.0 において、store_cache と restore_cache を使って、Bundler の gem をキャッシュしているプロジェクトを対象としています。 キャッシュの restore が遅い!! ある日ふと、Circle CI におけるキャッシュの restore にすごく時間がかかっていることに気づきました。 その時のプロジェクトにお
Hugo で作ったサイトを CircleCI で GitHub Pages に自動デプロイ Sep 19, 2016 Hugo は Jekyll と違って、GitHub Pages に push しても勝手にページ生成はされません。 どうにかして自分で Hugo を実行し、それで生成されたファイルを push する必要があります。 このブログを構築するにあたって、CircleCI でビルドして自動デプロイする手順がまとまったので公開します。 なお、このブログはカスタムドメインを使用していますが、それについての説明はこの記事ではしません。 前提とする環境 Hugo Ver. 0.16 概要 以下のような環境・手順で自動デプロイが行われるようにします。 記事のソースは master ブランチに push する GitHub Pages 用のブランチには gh-pages を使う master
peco で S3 のバケット・ファイル一覧を見るやつを作ったらめちゃくちゃ便利なのができた May 12, 2017 釣りっぽいタイトルにしてしまったけどまぁ主観なので… yuya-takeyama/peco-s3.zsh これがどんなものなのかはこのスクリーンキャストを見てもらうのが一番良いでしょう。 機能 バケットの一覧化 このスクリーンキャストではバケット名を指定してその中身を一覧化していますが、引数を省略した場合はバケットの一覧が表示され、選択することでさらにその中のファイルを一覧化することができます。 元の一覧に戻る バケット・ディレクトリの中に移動したあとで Esc を押すと元のディレクトリに戻ることができます。 peco によるフィルタ peco をベースとしているので、文字列で対象をフィルタしながらファイル・ディレクトリを選択することができます。 s3cat コマンドの生
去年 1 番のイベントは転職でしたが、今年は引越・同棲というのが一大イベントでした。 丸 7 年住んだ埼玉から浅草に引越したことで京橋の職場への出勤時間が半分の 30 分に縮まったのも良かったですが、生活環境が変わったのを機に家具も色々と買い、QoL も大幅に向上したので、それを振り返ってみるという体でアフィブログを書きます。 生活編 東芝ドラム式洗濯機 TW-117X3L(WW) MVP は明らかにこれです。 埼玉に住んでいた 7 年間は洗濯機外置きという洗濯機もあってドラム式の大きいのは無理だったんですが、ようやく室内に置ける部屋に引っ越せたので奮発して買いました。 乾燥機付きでもドラム式とタテ型で迷いました。ドラム式について事前に調べた中で特に気になったのが臭いの問題でしたが、以下に気をつけたところ、購入から 7 ヶ月経つ今の所臭い問題は起きていません。 ドラム式へに対応した抗菌洗剤
BigQuery の標準 SQL モードで日付テーブルのフィルタリング、または Re:dash の Query Snippets を活用する話 Dec 4, 2016 要は Legacy SQL モード で FROM (TABLE_DATE_RANGE(dataset.table_, TIMESTAMP('2016-01-01'), TIMESTAMP('2016-01-14'))) とか書いていたのを標準 SQL でどう書くか、という話です。 すぐ忘れるのでメモ。 テーブルは以下のような名前になっている前提です。 table_20160101 table_20160102 table_20160103 … これで例えば直近 14 日分のテーブルを対象にしたい場合はこんな感じ。 SELECT time FROM `dataset.table_*` WHERE _TABLE_SUFFIX >
しばらく前から Dokku という Docker ベースの Heroku ライクな PaaS 基盤を趣味で運用していて、その中で旧ブログの WordPress や 自分用のツールなんかを動かしたりしている。 サーバのメトリクス収集には Mackerel を利用しているが、Docker コンテナ単位での計測は行っていなかった。 Mackerel はホスト数に応じた課金を行っていて、5 ホストまでは無料だが、コンテナまで追加してしまうとすぐにその枠を溢れてしまう。 というわけで簡単な仕組みを自分で用意いてみた。 できたもの どちらもメモリ使用量 (MB) をコンテナ名ごとにグラフ化したもので、どちらもデータは同じものを使っている。 後者はグラフを積み上げることでコンテナ全体で使用しているメモリの使用量もわかるようになっている。 今のところ Docker のリソースに関して困っているのはメモリだ
Let's Encrypt の証明書を Ansible と certbot で Nginx にインストール & 自動更新 Sep 19, 2016 これもリニューアルネタです。 やりたいこと Let’s Encrypt の証明書を Ansible でインストールする その後の証明書の更新も自動で行うようにする その設定もやはり Ansible で行う 前提とする環境 Ubuntu 16.04 だと certbot が apt-get でインストールできますが、それ未満だと certbot-auto というコマンドを手動でインストールする必要があります。 中身はほぼ同じだと思いますが、そちらについての説明はしません。 Ubuntu 16.04 Ansible 2.1.1.0 nginx 1.10.1 手順 certbot のインストール certbot とは Let’s Encrypt の証
Doom or Be Doomed! その昔、就職活動中に Leaf Hound Records の小林トレノさんに「社員にしてください」とお願いして断られたことのある @yuya_takeyama です。 この記事は METALバンド Advent Calendar 2015 の 12 日目の記事です。 昨日は Natsumi Akai さんの「we have a tank」ウォー・メタル、Sabaton!! でした。 さて、今日の記事ですが、今日は土曜日・安息日ですね。 そして安息日といえば黒い安息日・Black Sabbath ですね。 というわけで Black Sabbath を始めとするドゥームやその周辺ジャンルのバンドを、特に脈絡なく紹介していきます。 ドゥームメタルというジャンルは聴いたことある・興味あるけどどれから聴いていいかわからない方はどうぞご覧ください。 元祖 Doo
2018/06/09 追記: 現在Quipper は積極採用中です。詳しくはコーポレートサイトかキャリアトレックをご覧ください。 ちょうど 2 ヶ月前に退職についてについて書いていたけど、その翌週の 9 月 7 日から Quipper で働いていた。 初出社 & 初プルリ済みです pic.twitter.com/PvmeYlgKpb — Yuya Takeyama (@yuya_takeyama) 2015, 9月 7 入社当日に Twitter に書いたりしていて、全然隠していたわけではないのだけど、さすがに入って直後だと「転職したぜイエーイ!」で終わる個人の日記レベルのことしか書けないだろう、ということでしばらく放置していた。 いまは入社から 2 ヶ月ほど経ち、日々の仕事や社内の雰囲気にも慣れてきたので、そういうところも紹介も添えて「転職してたぜイエーイ!」的な個人の日記を書いておこう
Web エンジニアとして経験を積むことでいくつかのプログラミング言語やツール・ミドルウェアの使い方を覚えたりもしたけど、それらのうちいくつかは 10 年後ぐらいには陳腐化してしまっているかもしれない。 だけどそれらを通じて身につけた価値観や哲学はもっと普遍性を持っているような気がする。 大学を卒業し、Web エンジニアとしての職を得て 6 年 5 ヶ月、日数にして 2344 日経ったので、現時点での頭の中にあるもののダンプを残しておく。 どこかで聞いたようなことばかりで新鮮味はないと思うけど、自分で実感を持ってたどり着けたことには意味があるはず。 プログラミングについて 言語はいろいろなものを試してみる 毎年新しい言語に挑戦せよ、というのは確か dankogai さんの講演をまとめた記事で読んだはずなんだけど、記事が見つからない。 キーワードをもとに検索してみたら達人プログラマーにもそうい
最近はログを行指向の JSON として保存するケースが増えていると思います。 今どきは大体どの言語にも標準で JSON のライブラリが入っており、構造化データをログに残す手段として非常に手軽です。 Fluentd の in_tail で吸い上げるために JSON で残しているケースもあるでしょう。 そういった JSON ログをフィルタするツールとしては jq が有名だと思います。 私も日々使っています。 jq は非常に便利なのですが、複雑なフィルタをやろうと思うと、JavaScript 風の jq 独自のシンタックスでいろいろと書く必要があり面倒です。 特に、集計に reduce を使おうとした場合、どうやって書けばいいのかを思い出すのに時間がかかるので、ほとんど使いません。 これが Ruby で書ければ楽なのに... ということで作りました。 jr: command-line JSON
TL;DR User Agent 判定器 Woothee の PHP 実装を作った Packagist には登録できてなかったりするので少々お待ちください (2014-12-18 追記 Packagist に woothee/woothee として登録しました) Woothee は便利プロジェクトなので盛り上がってほしい Woothee とは Woothee というのは @tagomoris さんが作った User Agent 判定器プロジェクトです。 Perl, Java, JavaScript, Python と、複数の言語に実装が用意されていて、元になるデータセットや、テスト用のデータセットは YAML 形式で公開されています。 詳しくは以下のブログ記事を読むのが良いでしょう。 UserAgent判定器 Project Woothee はじめました 最近の多言語対応User-Agen
はじめに この記事は試験前日に部屋の模様替えをやりきったときみたいな気持ちで書かれています。 TL; DR 買った音声教材のトラック分けが気に入らないので独自に切り分けたいが、量が多いと大変なので、インターネットのみんなと共同作業したい 切り分けた音声ファイルをそのままアップロードすると著作権法上問題になってしまう 「切り分け方」をコード化して GitHub で共有できるようにすればいいじゃない それを実現するツール AudioHacker を Ruby で作った サンプルとして DUO 3.0 / CD 基礎用を英文だけに切り取るための定義ファイルも作った 英語教材をハックしたい。 — Yuya Takeyama (@yuya_takeyama) 2014, 2月 2 例えば英語教材の CD のトラックの切り分けが気に入らなくて、何人かで協力して切り分ける作業をしたいとき、音源自体を W
[caption id="attachment_2368" align="alignnone" width="300" caption="Torusume で赤入れっぽいことしてる様子"][/caption] いわゆるウェブ系で働いていると、外向きに、それなりにしっかりした文書を書くことが日々あると思います。 メルマガだったり、プレスリリースだったり。 そういうのを社内で周囲の人間がレビューしてなおしたりとかあると思うんですが、あるときはメールやチャットでここはこうした方がよくない? とか言ったり、またあるときは紙に印刷して赤入れしたり。 まぁそういうのダルいと思う訳です。 そこであるとき、こういうの GitHub の Pull Request を使ったコードレビューみたいな感じにできると楽しいんじゃないか、って思ったのを、この正月休みを利用して作ってみました。 Torutsume: Gi
あけましておめでとうございます。 大晦日は実家でプログレ聞きながらコード書いてました。 今さらながら Heldon の Stand by とか聞いてたんですが、Tangerine Dream を思わせるミニマルなシンセサイザーの反復と、リシャール・ピナスによるロバート・フリップばりの暴力的なギターソロが絡みあっており、大変良いですね。 作ったもの また説明長くなりそうなので、はじめに作ったものの紹介です。 dee dee-rails この Dee というのが DI コンテナの本体です。 名前は Ozzy Osbourne ソロ 1st Blizzard of Ozz におけるランディ・ローズのギター曲からです。 50 秒と短く、メタルアルバムの中にあってクラシック風の静かなギター曲ですが、同時にアルバムから欠かせない存在感を放つ名曲です。 何が言いたいかというと、Dee はコンパクトな実装
この記事は MySQL Casual Advent Calendar 2013 の 17 日目です。 前日は @Yuryu さんの MySQLにMHA を導入してハマったところでした。 今日は、私が CIEN Pattern (シャンパターン) と名付けた SQL のイディオムをご紹介します。 これは複雑な集計をカジュアルに行うためのもので、私は日常的に使っています。 イディオムの紹介とか言いつつ、大半は前に社内で書いた便利ツール (オープンソースでない) の紹介だったりします。 本日ご紹介するイディオム ここでいう「複雑な」というのは、例えば「掲示板に書き込んでいるユーザのうち 20 台男性のユニークユーザ数・30 台女性のユニークユーザ数・全体のユニークユーザ数・全体の投稿数を SQL 一発で全部集計したい」みたいなヤツです。 「サブクエリ 7 重にもネストしている上相関サブクエリだ」
久々のブログです。 夕方に3DS LL とポケモンのセットが届いたのですが、電源がついてなくてあんまり遊べてません。 今週末は @kuzuha さん主催での Spika Hackathon というイベントに参加してきました。 Spika がどういうものなのかはこの辺の記事を見ればいいと思います。 Spika - world first opensource messenger for ios/android 世界初 メッセンジャーアプリ「Spika」を完全オープンソースで公開、フロントからバックエンドまで提供 TechWave に記事が紹介されて直後から、コードの品質がヤバいと話題になっていました。 masuidrive さんの Facebook の投稿 レガシーズ 公式ブログ — PHPerはSpikaのどこを見たのか? 僕自身も以下のような印象を持ちました。 (アッ、メッセンジャーの綴
500 円玉貯金が N 万円貯まったので Thunderbolt Display を購入しました。 現在の開発環境の様子です。 画面が広いと Vim で複数ファイル広げたり、ファイル更新時にはその横でユニットテストが自動実行されたり、別のペインで tig や htop を実行しておくこともできるので便利ですね。 あとは最近少女革命ウテナ DVD-BOX を買ったんですが、これも大画面で観られるようになりました。 そんな大画面でつくった gem を紹介します。 Mr. Mongo とは yuya-takeyama/mr_mongo MongoDB の MapReduce の定義を Ruby の内部 DSL で記述し、実行するためのフレームワークです。 Ruby で、といっても map/reduce の関数は JavaScript です。 例えばワードカウントであれば、以下のような記述になりま
あけましておめでとうございます。 年末年始は実家にも帰らず、Kindle Paperwhite で本を読みあさったり、Hulu でプリティーリズムオーロラドリームを視て泣いたり、小林賢太郎の公演を DVD で視て笑ったり、あとは近所の土手を走ったりしてきました。 1km あたり 4 分をなかなか切れずにいます。 そんな感じでインプット中心に年末年始を過ごしてしまったわけですが、そろそろアウトプット期に転換していこうということで、みんな大好き fluentd に以下のような Pull Request を送ってみました。 Config DSL by yuya-takeyama · Pull Request #97 · fluent/fluentd 今のところ Proof of Concept レベルで、マージをお願いできるようなレベルにはなってないと思います。 こういうのどうっすかね、という感
レガシーコードと戦っていると、「このコードのどこをどう通ってこういう結果になってしまっているのか」がわからなくなることがあります。 初見でコードを理解する能力は、コードを読んできた経験が多ければ多いほど、向上するものだと思います。 とは言っても、構造化やモジュール化が適切でなく、スコープの長大なコードなどは、人間の限界を超えているものもあるでしょう。 ステップ実行のできる IDE などを使う、という選択もあると思いますが、僕は重厚な IDE を好みません。 もっと楽にできる方法で、コードパスを解析する方法があれば、ということで作ってみました。 yuya-takeyama/code_path_analyzer 元になっているのは、仕事の時にコード中にベタ書きした関数です。 Gist に公開したところはてブが 10 ぐらい付いたのと、次必要になったときにすぐ使えるようにしておきたかったので、ラ
最近は Admiral Sir Cloudesley Shovell というバンドの 1st フルアルバム Don't Hear It... Feat It をよく聴いています。 Sir Lord Baltimore のような、骨太なリフと、ブルージーでドラマ性もある楽曲が魅力のバンドですが、現在進行形で活動中のバンドです。 ストーナーロックとか好きな人は是非。 ここから本題です。 あるところに、Web API を数十万回単位で叩きまくる、PHP で書かれたバッチプログラムがあったとしましょう。 処理件数が増えるごとに処理時間が増大するので、いつしか 1 日経っても終わらないようになってしまいました。 そのプログラムは HTTP リクエストを直列に行っていたので、それを並列化させれば何とかなるのではないか、と考えて作ったのが以下のライブラリ。 yuya-takeyama/parallel_
昨日の ParallelHttp の話に引き続き、PHP でのバッチ処理のパフォーマンス改善の話です。 あと、昨日と同じく PHP 5.2 で使えるライブラリを開発した話でもあります。 バルクインサートとは ひとことで言えば「複数のレコードをまとめてインサートすること」です。 例えば MySQL で言えば、 INSERT INTO `users` (`name`) VALUES ('foo'); INSERT INTO `users` (`name`) VALUES ('bar'); INSERT INTO `users` (`name`) VALUES ('baz'); ではなく INSERT INTO `users` (`name`) VALUES ('foo'), ('bar'), ('baz'); というようにやることです。 これで何が嬉しいかというと、サーバにクエリを投げてその結
特別何かする必要があるわけではないんですが、最新の php-build の master ブランチに 5.5snapshot の定義ファイルが入りました。 これで Generator や finally が使えます。 しかしながら World domination は含まれないことになりました。 残念でしたね。 GitHub 上の php/php-src の HEAD を .tar.gz で落としてきてるだけなので、運悪くビルドが壊れていれば入らないこともあると思います。 個人的には前にも紹介した方法で phpenv と連携させて phpenv install 5.5snapshot などとしてインストールしています。 なお、最新の php-build は GitHub 上の好きなリポジトリやブランチを選んでビルドできるようになっています。 例えば以下のような定義ファイルを /usr/lo
次のページ
このページを最初にブックマークしてみませんか?
『Born Too Late』の新着エントリーを見る
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く