タグ

ブックマーク / eagletmt.hateblo.jp (35)

  • 2023年の思い出 - eagletmt's blog

    しゃかいじんじゅうねんめ 去年は https://eagletmt.hateblo.jp/entry/2022/12/31/165730 仕事 今年は会社の状況が大きく変わった年だった。退職勧奨やレイオフ、その変化による自主的な退職でとにかく人が減った。それによって自分の仕事にも当然変化があり、今年の後半はイギリスにいるメンバーとコミュニケーションをとる機会が増えた。その関係で一週間ほどイギリスに滞在する機会もあった。海外に行くのは2019年のシアトル以来で、シアトルもなかなか遠かったがイギリスは更に遠い。イギリスは楽しめたが14時間のフライトは拷問以外の何物でもない。 イギリスにいるメンバーとコミュニケーションをとる機会が増えたということは英語でコミュニケーションをとる機会が増えたということで、これが自分にとっては大変だった。SlackGitHub英語話者とコミュニケーションを

    2023年の思い出 - eagletmt's blog
    sora_h
    sora_h 2023/12/31
  • 2022年の思い出 - eagletmt's blog

    しゃかいじんきゅうねんめ 去年は https://eagletmt.hateblo.jp/entry/2021/12/30/164456 仕事 2022年が始まったときは自分で手を動かして新しいことに取り組みたいなと意気込んでいたが、2月にデータ基盤チームが解散となり、DWH をはじめとするデータ基盤まわりの仕事を引き継ぐことになり一年を通してこれが自分の仕事の中心となった。解散前にちゃんと引き継ぎのフェーズがあった*1し、DWH 自体は元々興味のある領域だったので DWH の仕事は嫌では全くなかったが、とはいえコードの多くが初見であり社内の標準的な技術スタックから外れたシステムが多かったので、問い合わせ対応やトラブル対応に時間がかかる日々がしばらく続いた。主な仕事としてはログデータに紛れ込んでしまった個人情報をマスキングするしくみを作ったり、Prism が利用している PostgreSQ

    2022年の思い出 - eagletmt's blog
    sora_h
    sora_h 2022/12/31
  • MySQL でも楽に bulk insert したい - eagletmt's blog

    以前 PostgreSQL で unnest を使って楽に bulk insert する方法を紹介した https://eagletmt.hateblo.jp/entry/2021/09/01/030453 。 これの MySQL 版が欲しかったものの array 型が存在しない MySQL では無理かなと思っていたんだけど、MySQL 8.0 からサポートされた JSON 型なら array を表現できて json_table() という関数を使うと達成できそうなことにふと気付いた。 json_table() を使うと JSON の値からテーブル (行) に変換することができる。つまりこれを使えば unnest に近いことが可能になる。 https://dev.mysql.com/doc/refman/8.0/en/json-table-functions.html MySQL [(no

    MySQL でも楽に bulk insert したい - eagletmt's blog
    sora_h
    sora_h 2022/08/18
  • ISUCON での言語移植 (Rust) - eagletmt's blog

    ISUCON10 に続き今回の ISUCON11 でも初期実装の Rust 移植を担当したのでそのへんの話を書いてみます。 ISUCON とのかかわり ISUCON4 から ISUCON7 までは選手として参加していて、何度か選にも出場しました。ISUCON8 以降に参加しなくなった理由はいくつかあるんですが、Web のインフラやバックエンド界隈を盛り上げて学生の興味を惹く素晴らしいイベントだと思っています。そんなわけで ISUCON からはしばらく離れていたんですが、ISUCON10 では同僚が作問するということと新たな試みとして初期実装に Rust を加えると聞いて、Rust 移植担当に応募して採用されました。そして今回の ISUCON11 でも RustRuby の移植に応募し Rust の移植を担当しました。 言語移植を担当するモチベーション 自分の場合は ISUCON が

    ISUCON での言語移植 (Rust) - eagletmt's blog
    sora_h
    sora_h 2021/09/19
  • unnest を使って楽に bulk insert する - eagletmt's blog

    プライベートでよく PostgreSQL を使っている人の MySQL 不便シリーズ。 ActiveRecord のような高機能な ORM あるいはクエリビルダを使っていると bulk insert するクエリをライブラリがいいかんじに組み立ててくれるが、そんな高級なライブラリを使わずにもっとシンプルなもので済ませたいことがある。 そんなときに bulk insert をしたくなった場合、クエリを組み立てて変数を bind して…… というのを自分でやるのは結構面倒である。 PostgreSQL だと配列型があり unnest() で配列を行に変換できるので、これと insert into select を組み合わせると bulk insert するクエリを簡単に組み立てられる。 eagletmt=> select unnest(array[1,2,3]) as x, unnest(arr

    unnest を使って楽に bulk insert する - eagletmt's blog
    sora_h
    sora_h 2021/09/01
  • パスワードマネージャーをストレージとした envchain みたいなやつ - eagletmt's blog

    envchain とは macOS の keychain または Linux の D-Bus secret service に API キーのような秘密の情報を安全に保存し、環境変数として取り出せる CLI ツールである。 https://github.com/sorah/envchain 僕は envchain の大ファンで、当初 macOS 向けに書かれていた envchain に Linux サポートを加えたりしていた。 そんな envchain をずっと愛用していたのだけど、Windows を使うようになってから WSL2 内で使いにくいことが気になっていた。 Linux 向けには D-Bus secret service (ほぼ実質 gnome-keyring) を使っているため、WSL2 内で D-Bus を起動したり X サーバを起動したりする必要がある。 無理ではないんだけ

    パスワードマネージャーをストレージとした envchain みたいなやつ - eagletmt's blog
    sora_h
    sora_h 2021/04/23
    大ファンがいたの今知った。
  • API Gateway + Lambda + Rust で開発する (2021-01) - eagletmt's blog

    まとめ netlify_lambda を使う LambdaDocker イメージサポートを利用する aws-lambda-rie-gateway を使う この構成で Slack の interactive message や block kit で遊んだサンプルがこれ https://github.com/eagletmt/misc/tree/master/rust/slack-slash-command-sample Rust 向けの Lambda Runtime lambda-runtime という準(?)公式の crate がある https://github.com/awslabs/aws-lambda-rust-runtime が、リリースが滞っている。 現在リリースされている中での最新版では async/await の対応すら入っておらず、現在の Rust では正直使い物

    API Gateway + Lambda + Rust で開発する (2021-01) - eagletmt's blog
    sora_h
    sora_h 2021/01/15
  • 音楽サービス2020 - eagletmt's blog

    自分は音楽の購入・管理サービスとして Google Play Music を使っていた。楽曲だけでなく、ドラマ CD だったり音声作品だったりにも Google Play Music を使っていた。しかし Google Play Music がサービスクローズになり、YouTube Music へと移行せざるをえなくなった。ストア機能が失われることに不満を感じつつも他に選択肢も無いので YouTube Music に移行したところ、音楽の再生に関する機能も若干使いづらい上に (Google ではなく) YouTube のアカウントと紐付いてしまって破滅したりアップロード機能が致命的に機能不足だったりと最悪の体験だった。あまりに最悪すぎて Apple Music へと徐々に移行していっているところなんだけど、そのへんの話を書いてみる。 音楽の購入・管理サービスの種別 自分にとって大きく分けて

    音楽サービス2020 - eagletmt's blog
    sora_h
    sora_h 2020/11/21
  • ある式がある trait を実装しているかチェックするやつ - eagletmt's blog

    Rust は zero-cost abstractions を掲げているからか、map() や filter() のような色々な言語でよくある関数が元のコレクションの型ではなく Map や Filter のようにそれぞれ専用の型を持っているパターンがよくある。 それぞれの型が Iterator を実装しているので実装を書くときはコレクションの型のように扱えるけど、その値の具体的な型は複雑なことも多い。 async/await を使っていると Future や Stream でよくそういう状況になる。 正しく実装できていれば各 (部分) 式がどんな複雑な型を持っていても問題無いわけだけど、コンパイルエラーになってしまったときに悩むことになる。 コンパイラが「この部分式の型はこうなっていて、この trait を実装するよう要求されているけど満たしてないよ」と教えてくれるものの、その部分式がその

    ある式がある trait を実装しているかチェックするやつ - eagletmt's blog
    sora_h
    sora_h 2020/11/08
    便利…
  • できるけどやらない - eagletmt's blog

    大学院を卒業して就職したときは与えられた仕事をこなすのに必死だった。 自分の能力なんて全然分からず、できるか分からないけれどもとにかく与えられた仕事をやりきろうとした。 しばらく経つと自分のポジションで必要とされる技術が身についてきた。Ruby はまぁ学生の頃から書いてたけど、Rails の知識だったり Web の知識だったり AWS の知識だったり。 そうすると自分が何をできるのか徐々に分かってきて、社内で改善したいことが色々見つかり、自分にできることを色々やるようになった。 この頃は多少の優先順位は考えつつもやりたいことを色々やらせてもらった。 その過程で自分にできることが更に少しずつ広がっていった。 またしばらく時間が経って、チームが変わって目標が変わり、自分のポジションも変わった。 技術面でもそれ以外でもできることは更に広がっていた一方で、自分がやらなければならない仕事も増えたし、

    できるけどやらない - eagletmt's blog
    sora_h
    sora_h 2020/06/17
  • 2019年の思い出 - eagletmt's blog

    しゃかいじんろくねんめ 去年は https://eagletmt.hateblo.jp/entry/2018/12/31/204204 仕事 内定者アルバイト期間も含めると5年と数ヶ月くらい所属していた技術部開発基盤グループが今年の1月で消滅し、インフラ部 SRE グループと統合され技術部 SRE グループになり、僕はそのグループのグループ長兼テックリードという立場になった。いわゆるマネージャーではないものの、チームの目標を決定したりチームメンバーと定期的な 1on1 を実施したり部長を補助する形で評価やフィードバックを行ったりといった役割が増えた。 その後チームの分割や退職があって、最終的には元インフラ部 SRE グループのメンバーに僕一人がグループ長として加わった形になっていた。僕が開発基盤グループ時代の最後にやってた仕事は SRE グループに近かったとはいえ、部のレベルで分かれていた

    2019年の思い出 - eagletmt's blog
    sora_h
    sora_h 2019/12/31
  • 2018年の思い出 - eagletmt's blog

    しゃかいじんごねんめ 去年は https://eagletmt.hateblo.jp/entry/2017/12/29/001156 仕事 引き続き ECS を中心とした運用関連のことをやっていた。ECS 自体というよりはその周辺がメインで、たとえば docker logs の保存先を S3 にしてみたり、コンテナインスタンスをスポットインスタンスにしてみたり。このへんの話は https://speakerdeck.com/eagletmt/building-a-steady-ecs-infrastructure で話した。 あとはインターンやアルバイト時代からずっと所属していた開発基盤チームが内部的に2つに分かれて お台場プロジェクト を進めるチームとマイクロサービス的な基盤 (ECS とかサービスメッシュとか gRPC とか) をやる2つのチームになり、後者のほうのリード的な役割になっ

    2018年の思い出 - eagletmt's blog
    sora_h
    sora_h 2019/01/01
    eagletmt のブログが固定横幅になっている。
  • 送り手のコストと受け手のコスト - eagletmt's blog

    自分の中でなんとなく納得がいっただけでとくに結論は無い。 そして今年ここに全くエントリを書いてなかったことにいま気付いた。 ふとしたきっかけで発表するのを好む人の気持ちが気になった。その人は発表スライドだけ見ても話の内容が十分に伝わらず、その場のトークと資料が合わさって初めて成り立つような発表をするタイプのように僕には見えた。その人に限らず、こういうタイプの人はまぁ普通によくいると思う。 一方僕は真逆のタイプで、スライドだけを見てもそれなりに伝わるものを作りがちだ。スライドを読み上げてるだけじゃんという意見も目にしたことがあるけど、実際その通りで口頭で発表するよりドキュメントやブログ記事を書いて公開したほうが良いと思っていて、発表というのはまぁ宣伝効果があるとかそれくらいにしか思っていないところはある。 で、なんで自分はそう思ってるんだろうと考えてみると、受け手側が参照するコストをできるだ

    送り手のコストと受け手のコスト - eagletmt's blog
    sora_h
    sora_h 2018/12/13
  • ISUCON7 予選を通過した - eagletmt's blog

    ISUCON7 予選に†空中庭園†《ガーデンプレイス》として @ryot_a_rai、@mozamimy と参加して2日目1位で通過することができた http://isucon.net/archives/50956331.html 。 リポジトリは https://github.com/ryotarai/isucon7q 当日まで 例年 Ruby で参加していたけど、今年は発表された初期実装に Ruby が含まれていなかったこと (※後から追加された) もあり、@ryot_a_rai から Go で参加したいという話が出て Go を選択した。 僕と @mozamimy は Go はまぁまぁ書いたことはあるくらいの状態だったので、事前に一度 Go で練習したり pprof の使い方を教えてもらったりしていた。 Go は個人的にはあんまり好きになれなかった言語ではあるんだけど、ISUCON で

    ISUCON7 予選を通過した - eagletmt's blog
    sora_h
    sora_h 2017/10/24
  • Rails アプリでオンラインでカラムの削除やリネームを行うには - eagletmt's blog

    前提知識 Rails アプリにおいて、テーブルの追加やカラムの追加は簡単なものの、カラムの削除やリネームは慎重に行う必要がある。たとえアプリからそのカラムを参照してないとしても、いきなりカラムを削除するとエラーになる可能性が大いにある。 というのも Rails にはスキーマキャッシュというものがあり、テーブルのカラム情報をモデルがキャッシュしているからだ。このキャッシュはたとえばいわゆる N+1 クエリ問題を避けるために includes (eager_load) するときに参照される。 SELECT 句で t0_r0 のような機械的に別名が振られるようなクエリを見たことがある Rails エンジニアは多いと思う。 機械的に全カラムを取得するためにスキーマキャッシュを利用しているため、このようなクエリが実行されてる中でカラムを削除したりリネームしたりすると、スキーマキャッシュをもとに並べら

    Rails アプリでオンラインでカラムの削除やリネームを行うには - eagletmt's blog
    sora_h
    sora_h 2017/09/24
    いつもの
  • (ネタバレあり) 魔法少女リリカルなのは Reflection 初日感想 - eagletmt's blog

    文章にまとめられなかったので箇条書きで。 まず劇場に入る直前に Detonation が 2018 年公開という掲示を見て戸惑う。そこに映ってるなのはの姿は Reflection と一緒だし、キャスト一覧を見ても変わってないし、つまり……? という気持ちで入場した はやてが自分の足で走ってる姿にまず感動。立って歩いてる姿は 2nd A’s にもあったけど、こう普通に生活できてるんだな感が 今までは海鳴市という架空の場所だったのに、急に東京とか新宿とかが出てきて驚いた。これ今までのなのはシリーズの中で結構大きな変化な気がするけど……? 咄嗟にワイヤーで反撃するのがとてもなのはらしくてよかった。強い キリエがなのはやフェイトの顔面を全力で殴ってて笑った。実質 Vivid Strike! リインがキリエに抵抗しているのがかわいかったし、キリエもちゃんと手加減していて傷付けることが目的ではないこと

    (ネタバレあり) 魔法少女リリカルなのは Reflection 初日感想 - eagletmt's blog
    sora_h
    sora_h 2017/07/23
    4〜5行目
  • (ネタバレあり) アイカツスターズ! イリュージョン Show Time 感想 - eagletmt's blog

    アイカツスターズ! の VR ステージ「アイカツスターズ! イリュージョン Show Time」を何度か見てきた。 http://www.aikatsu.com/stars/event/aikatsustars_illusionshowtime/ A パターンと B パターンの2つがあって、両方とも見た。実際のところ A と B の差分はそこまで大きくはなくて、曲目と順序や MC パートは共通で一部の曲で歌うユニットやコーデが違うという程度。 VR ステージ VR ステージというのを見るのは初めてで、少し前にプリキュアでもやってるのを知ってたけど、実際に見たのは今回が初めて。 メガネをつけずに楽しめる VR ステージがどんなものか期待と不安があったが、実際に見てみるとすごくよく出来ていて感動した。 フル CG によるライブはテレビアニメとかアーケードとかで見慣れているわけだけど、VR ステ

    (ネタバレあり) アイカツスターズ! イリュージョン Show Time 感想 - eagletmt's blog
    sora_h
    sora_h 2017/05/22
    episodeSolo は今日時点でもざわっとする程度にはざわっとする。振り付けは Bon Bon Voyage のほうがかわいくて個人的に好みだけど。最後の挨拶に感謝しかないのはほんとそう
  • ArchLinux のリポジトリを akabei で楽に管理する - eagletmt's blog

    Arch のパッケージのリポジトリを作る 発展編 - eagletmt's blog で書いた内容を自動化するために akabei を作った。 さらに S3 の Static Website Hosting を利用する機能も実装して、実際に http://arch.wanko.cc/ を運用してみている。 基機能 build サブコマンド akabei build foo --repo-dir repo/x86_64 --repo-name bar --arch x86_64 で、foo/PKGBUILD をもとに repo/x86_64 以下に x86_64 向けのパッケージと、bar リポジトリの ABS tarball とデータベースとファイルリストが生成される。 % akabei build foo --repo-dir repo/x86_64 --repo-name bar -

    ArchLinux のリポジトリを akabei で楽に管理する - eagletmt's blog
    sora_h
    sora_h 2016/11/30
  • Docker コンテナ内の net.core.somaxconn を変える - eagletmt's blog

    --net=host でコンテナを起動すれば、network namespace が分離されないので net.core.somaxconn の値はホスト側と一致する。 % cat /proc/sys/net/core/somaxconn 1024 % docker run --net=host ubuntu:16.04 cat /proc/sys/net/core/somaxconn 1024 けど普通に docker run すると、ホスト側の値にかかわらず、コンテナ内ではデフォルトの128になる。 % cat /proc/sys/net/core/somaxconn 1024 % docker run ubuntu:16.04 cat /proc/sys/net/core/somaxconn 128 で、コンテナ内でこの値を変えようとしても、デフォルトでは許可されていない。 % doc

    Docker コンテナ内の net.core.somaxconn を変える - eagletmt's blog
    sora_h
    sora_h 2016/07/15
    難易度高い。
  • Linux デスクトップ環境 2016 - eagletmt's blog

    5年半くらい前に http://d.hatena.ne.jp/eagletmt/20100905/1283686004 というのを書いたけど、そこから今どう変わっているのか。 こう列挙してみると2016年になっても Linux デスクトップは… みたいな気持ちも無いわけじゃないけど、色んなコンポーネントを好きなように設定できたり入れ替えることができたり、場合によってはパッチをあてることもできて、そのへんが好きで使っている。 もちろん、仕事では Linux で動作するようなコードばかり書いたり読んだりしているので、そのへんの知識を手元でも使えたり手元とサーバの違いではまったりしにくいから、というのもあるけど。 ディストリビューション 相変わらずずっと Arch Linux を使っている。 パッケージの更新が早かったり、最小限のデフォルトしか設定されていないのでディストリビューションが勝手に設

    Linux デスクトップ環境 2016 - eagletmt's blog
    sora_h
    sora_h 2016/03/23