ブックマーク / motemen.hatenablog.com (37)

  • 固有名詞をつけるとき - 詩と創作・思索のひろば

    ソフトウェアエンジニアリングにおいて大切なのは、人間のことをのぞけば名付けだと思っている。言葉がなければ世界は混沌としたままだけど、そこに名前をもたらすことがものごとを切り分け、ひとつの秩序をもった視点をつくる。この秩序は唯一絶対のものではなくて、なんらかの意志によって導かれたものである。ソフトウェアはあくまでも現実の抽象だから、問題をどういう視点で見るか、という軸があるわけだ。そういう意味では人間のことではある。 適切につけられた名前は、そのことによって他のものとの自然な境界を与えられていて、その他の名付けと一貫性を持っている。そういう名前は既存の名付けの体系になじむので、同じ言葉を使う人々のあいだに受けいられれて、共通のコンテキストに追加される。そして次第に暗黙のものになっていく。 たとえばユーザのフォローがあるSNSのようなウェブサービスをつくるときに、QueueとかBrokerみた

    固有名詞をつけるとき - 詩と創作・思索のひろば
    Songmu
    Songmu 2024/04/26
    ghq後悔してないの良かった
  • スーパーハッカーの夢を諦め、普通自動車免許を取得しました - 詩と創作・思索のひろば

    photo by Thomas Hawk 表題の通りです。実のところ、もう一年も前のことになります。 優秀なエンジニアの多くが自動車免許を所持していないことは有名な事実です[要出典]。私も彼らに憧れ、免許を持たずに生活していましたが、歳を取るにつれ「自分はスーパーハッカーにはなれない」と次第に実感してきたこと、新たな自分に変身したい、という思いと、あまりに暇でヤケになった気持ちから思い立って自動車学校に入学したのが一昨年の年末です。会社に通いながらの教習でしたが、週末と早退・遅刻を活用することで、半年かけて免許を獲得しました。当時のチームメイトに感謝。 すべてを終え、保有者サイドに堕ちてしまった私からそうでないあなた方に伝えられることは……「初心者マークの車に近づくな」。いち歩行者しかなかった頃は車であればどれも同じやろと考えていましたが、運転する側になると全然違う。初心者マークの車は生ま

    スーパーハッカーの夢を諦め、普通自動車免許を取得しました - 詩と創作・思索のひろば
    Songmu
    Songmu 2022/07/08
  • 2022年、タスク管理をTickTickで行う - 詩と創作・思索のひろば

    TikTok じゃないよ。 TickTick: Todo list, checklist and task manager app for Android, iPhone and Web チームのタスクマネジメントに Asana を使っていたのでそれに合わせて個人タスクもそこに積んでいたのだけど、Asana も積極的に使いたいわけではなかったし、年末から別のものを探していた。新しく選ぶなら一番重視したいのはやはり、カレンダーの予定の隙間にタスクを挿入できること。前にも自前で実装したことがある(カレンダーでタスクを管理することとその実装 - 詩と創作・思索のひろば)けど、こういうのはちゃんとビジネスとしてやってる人びとに任せたほうが改善もメンテもされるしいいのは当然。 いくつか見てみたところ、TickTick というのがよかったのでこれを使ってみている。いわゆる普通のタスク管理ツールという感

    2022年、タスク管理をTickTickで行う - 詩と創作・思索のひろば
    Songmu
    Songmu 2022/01/17
    TickTick、2年前くらいに @typester さんにおすすめされたことがあって、少し気になっていた。
  • ISUCON11予選敗退(92604点、30位) #isucon - 詩と創作・思索のひろば

    ISUCON11 オンライン予選 全てのチームのスコア(参考値) : ISUCON公式Blog チームは カラアゲネイティブ-ng。92604点、30位だった。通過ラインが 106094 点だったのでもうひと伸びあれば、というところで悔しい。 メンバーは去年と同じく songmu & toricls。予選の問題を見たときは AWS、IoT、時系列データベース、おれらの得意分野じゃんとか言って笑ってた。 「クラウドネイティブだから再起動とか言われてもわかんない」とか言って笑ってたあの頃に戻りたい— 美顔器 (@motemen) 2021年8月23日 やったこととおぼえていること: 実装は Go。 今回は去年の個人的な反省を活かして自分が構築、songmu & tori でアプリケーションを見る、という感じで進めていった。といっても songmu さんの秘伝の Makefile を頼りに見様見

    ISUCON11予選敗退(92604点、30位) #isucon - 詩と創作・思索のひろば
    Songmu
    Songmu 2021/09/17
    お疲れさまでした。悔しい。来年も出ましょう。
  • 中間証明書のないサーバにアクセスする - 詩と創作・思索のひろば

    不特定多数のウェブサイトにアクセスするアプリケーションを書いていると、ときおり SSL 証明書の検証エラーとなる URL に行き当たることがある。が、確認のためブラウザでアクセスしてみると、普通に見れてしまったりもする。そんな事例のひとつ、タイトルの通り中間CA証明書のないサーバについて。 https://incomplete-chain.badssl.com/ というわかりやすい例がある。これを curl してみると: % docker run -it --rm buildpack-deps:buster bash root@22f1788d53c7:/# curl --version curl 7.64.0 (x86_64-pc-linux-gnu) libcurl/7.64.0 OpenSSL/1.1.1d zlib/1.2.11 libidn2/2.0.5 libpsl/0.20.

    中間証明書のないサーバにアクセスする - 詩と創作・思索のひろば
    Songmu
    Songmu 2020/04/23
    中間証明書のインストール何気にミスってるサイト多めだよね。Mackerelってサービス便利
  • ghq など、github.com/motemen 下のリポジトリを x-motemen Org に移しています - 詩と創作・思索のひろば

    もうけっこう前のことになりますが、github.com/motemen 下にあったリポジトリの一部を github.com/x-motemen organization に移管しました。コードやバイナリの配布形式によって、ユーザ側で対処する必要があったりなかったりしますが、それぞれのリポジトリにおける指示(あれば)に従ってもらえればと思います。 https://github.com/x-motemen/ghq https://github.com/x-motemen/blogsync https://github.com/x-motemen/gobump https://github.com/x-motemen/git-pr-release もともとこれらは id:Songmu、id:itchyny、id:onk らにアクティブにメンテされているもので、motemen 個人はほぼ完全にノー

    ghq など、github.com/motemen 下のリポジトリを x-motemen Org に移しています - 詩と創作・思索のひろば
    Songmu
    Songmu 2020/03/03
    お知らせです。
  • ISUCON9予選敗退(H::W::A::Abyss::Abyss::Abyss) #isucon - 詩と創作・思索のひろば

    ISUCON9 2日目結果と選出場者決定のお知らせ : ISUCON公式Blog 日曜日に行われたISUCON9予選に参加し、敗退してきました。前掲の記事の「失格となったチーム」がわたしたちです。チームメンバーは id:t_kyt と id:mechairoi。 去年も予選敗退していて、最近LINE社に行ってないな~と思っていたので今年は勝ちたかった。今年もはてな京都オフィスで予選に参加。 事前の作戦が大事なので、「コミュニケーションが大切」「マニュアルを読む」を確認した。 だいたいハマり出すとコミュニケーションが減ったり同じことをやりだしたりしてチームとしての効率が下がってしまうので、一時間ごとにタイマーを鳴らしてそこで話そう、という作戦を立てていた。あとは alp と pprof と pt-query-digest でボトルネックを見ていくというシンプルな戦略。 あと、1日目の結果

    ISUCON9予選敗退(H::W::A::Abyss::Abyss::Abyss) #isucon - 詩と創作・思索のひろば
    Songmu
    Songmu 2019/09/09
    いい話。予選突破ライン達していたのは流石。
  • Go 1.10 Release Party in Tokyo で go test, go vet に入った変更の話をしました - 詩と創作・思索のひろば

    Go 1.10 Release Party in Tokyo - connpass 「Go 1.10 ツール周辺の CL を読む」という話をしました。 Go 1.10 ツール周辺の CL を読む - Google スライド Songmu さんに「モテメン、Goリリースパーティー出ない?」と言われて安請け合いしたはいいものの、とくに話すネタがないのでどうしようかなー、と src/go 以下の変更を読んでいたら普通に面白かったので、そのへんの話をまとめてみました。最初は go test -json の話をしようと考えていたんだけど、go vet 周辺の変更がよかったですね。 最後の方の 1 CL 1 枚のスライドは時間が余ったときのパディングで、発表のときはほぼスキップしました。以下、メインの go vet の話をざっくりまとめておきます。 CL 74356 に至る道 今回の主眼は go te

    Go 1.10 Release Party in Tokyo で go test, go vet に入った変更の話をしました - 詩と創作・思索のひろば
    Songmu
    Songmu 2019/06/25
  • めかぬか - 詩と創作・思索のひろば

    ピタゴラスイッチの人気コーナー「めかぬか」をHTMLで作ってみた。 mekanuka 書き順つき SVG として KanjiVG というプロジェクトがあった。これのおかげで実現できてる。 SVGのパスをアニメーションで描く方法はなんか有名なのがあるらしい: How SVG Line Animation Works | CSS-Tricks。 CSSJavaScript で生成するのは JSS でやった。@keyframe も動的に生成できて便利。

    めかぬか - 詩と創作・思索のひろば
    Songmu
    Songmu 2019/02/28
    ウケる。
  • git submodule をキャッシュで高速化する - 詩と創作・思索のひろば

    目下新マシンの開発環境をセットアップ中なんだけど、clone しないといけないリポジトリがけっこうたくさんある。このリポジトリ群っていうのが git submodule によってモジュールを共有していて、つまり同じリポジトリを何度も fetch してくることになる。これって無駄じゃないですか? というわけで submodule update 時にキャッシュを生成し、それを利用して以降の同コマンドを高速化するコマンドを書きました。 https://github.com/motemen/git-shared-submodule-update git submodule update の代わりに使います。 # git submodule update --init の代わりに… git shared-submodule-update --init 簡単ですね。 git submodule upd

    git submodule をキャッシュで高速化する - 詩と創作・思索のひろば
    Songmu
    Songmu 2019/02/24
    なんかCTOの新作を見つけた。そこで参照されている過去作の git unify も知らなかったけど名前がかっこいい…!
  • Tensorflow.js で notMNIST 学習済みモデルの文字認識 - 詩と創作・思索のひろば

    Udacity の Deep Learning 講義 を途中までやって、ははーんこれが CNN ね〜、という気持ちになった。 課題 4 では Tensorflow で CNN に notMNIST を学習させるのだけど、なかなか思ったとおりに精度が上がらない一方、層を増やすたびに重みやバイアスの変数を定義する必要があって試行錯誤するのが面倒だったので、Keras を使ってみたところ、コードを書くのはかなり楽になった。 ごちゃごちゃやっていると正答率 97.6% という数字が出たものの、当にこれがあってるのかどうか自信がない……というか、数字ばかり見ていて、自分が何やってるのかわからなくなってきたので、インタラクティブに判定を試せる装置を作って遊んでみた。推定のところは、Tensorflow.js を使うと簡単にできる(この記事も参考にした)。ソースは GitHub にある。今見たら Ch

    Tensorflow.js で notMNIST 学習済みモデルの文字認識 - 詩と創作・思索のひろば
    Songmu
    Songmu 2018/09/13
    確率の変動が可視化されてるのが面白い
  • 記録をスプレッドシートに保存できるスピードキューブ用タイマーアプリを作った

    これです。 https://motemen.github.io/futimer/ そしてリポジトリはこちら。 GitHub - motemen/futimer: Web-based speedcubing timer 数ヶ月前からスピードキューブをはじめている。バラバラの状態に(スクランブル)されたルービックキューブをいかに早く揃えられるか、という競技で、自分はようやく40秒切れるようになったくらい。はじめた頃の自分から見ると驚異的な数字だけど、いま自己評価すると、脱初心者できたかな〜っという段階。 社内でもやや流行っている。スピードキューブの何が面白いのかというと、少なくとも自分がやり続けているのは、「圧倒的成長を感じられること」。やってみる前はルービックキューブを揃えることなんて想像もつかなかったし、習得するだけでも相当な苦労なのだろうと思っていたけれど、実は広く使われる手順というもの

    記録をスプレッドシートに保存できるスピードキューブ用タイマーアプリを作った
    Songmu
    Songmu 2018/08/31
    こういうのババっと作るところがカッコいいよなー
  • Ether を送金した人だけコンテンツを閲覧できる Ðapp を書いた - 詩と創作・思索のひろば

    Ethereum はブロックチェーン上でアプリケーションを動かせる(スマートコントラクト)ってので興味を惹かれて、どんなことができるのか調べてたんだけど、感じを掴むために一つ書いてみた。 やりたいことは、ウェブページに送金ボタンがあって、そこから特定のアドレスに Ether を送金し、送金が確認されたら秘密のコンテンツをページ上に表示する、てなもの。送金の確認はスマートコントラクトで行えるが、秘密の情報をブロックチェーン上に記録するわけにはいかないのでこれはウェブサーバに秘匿することになる。とすると、ウェブサーバに私はこの Ethereum アドレスです、とセキュアに伝えてやる必要がある。後で書くけど、あまりいい解法ではない。 知識ゼロの状態から分からないことを潰しつつなんとか動くところまでこれたので、ウェブアプリケーション開発者がつまづいたところをメモっとく。 デモ MetaMask W

    Ether を送金した人だけコンテンツを閲覧できる Ðapp を書いた - 詩と創作・思索のひろば
    Songmu
    Songmu 2018/03/08
  • 最近のGoプロジェクトのMakefile - 詩と創作・思索のひろば

    最近は仕事でも新しくGoプロジェクトをイチからはじめることが増えてきて、コピペ元が欲しくなるので、スナップショットとして残しておきます。とくに Go でウェブアプリケーションを書くような場合を想定していて、npm エコシステムにも乗っていきます。 大まかな方針としては、 self-contained である グローバルな環境を汚染しない コマンド一発で開発環境が再現できる ……というところを目指します。 motemen/prchecklist がこれを達成しているつもりなので、以下、これを例に見ていきます。 依存ライブラリは dep なり何かしらのツールと Go 標準の vendoring で管理すればよい一方、そのツール自体であったり、他の開発中に必要なツール(golint とか gobump とか)であったりのインストールをどうするかという話。 npm であれば devDepende

    最近のGoプロジェクトのMakefile - 詩と創作・思索のひろば
    Songmu
    Songmu 2018/01/04
    reflex便利そう
  • ISUCON7本戦で3位でした(ソン・モテメン・マサヨシ) - 詩と創作・思索のひろば

    いろいろあって、戦からだいぶ時間が経ってしまいました。チーム全体としての流れはSongmuさんが書いてくれているので、自分の視点でどうだったかな〜というのを時系列を無視して思い出しつつ書きます。 チームは、会社(はてな)の同僚で組んだ Songmu, masayoshi, motemen の3人。全員の名前からとって「ソン(ムー)・モテメン・マサヨシ」です。おしゃれ。リポジトリはここ。 戦の問題は Cookie Clicker をモデルにしたもの。競技の開始まですこし時間の余裕があったので、その間にオリジナルをプレイして、アプリケーションの仕様を学習した。話題になったときに遊んでなかったので、このとき初めてやったんだけど、たしかに中毒性がありそう……。 Cookie Clicker のほうは放置しつつ方針の相談。まあルームごとにサーバを割り当てて、オンメモリでやってく感じだよね、という

    ISUCON7本戦で3位でした(ソン・モテメン・マサヨシ) - 詩と創作・思索のひろば
    Songmu
    Songmu 2017/12/22
    お疲れ様でした。「サーバをアレにする」「アレですよね」たしかにそう言う語彙のない会話をしていた。そういうコンテキストが大事なんやで
  • go get gobin.cc/PROGNAME でプログラムをゲットできる URL shortener っぽいサイトを作った - 詩と創作・思索のひろば

    夏休みの自由研究です。 ghr を go get したいんだけど作者の e の数って何個だったっけ……と悩んでいたらそもそも違う ID でした、けどそれも思い出せない! って経験ありませんか? たいていの場合、プログラム名だけは覚えていて、その正確なパスまでは覚えていないものです。 そこでその名前だけから欲しいプログラムを go get できる gobin.cc というサイトを作りました。一種の URL shortener サービスだと思ってもらえればよさそうです。 go get gobin.cc/gore などとすると、github.com/motemen/gore と同じものが go get されます。おー、便利! 実装 プログラム名からその完全なパッケージパスを自動的に再現するのは難しいのもあり、対応しているプログラムは手動管理のファイルである SOURCES に記載されています。そ

    go get gobin.cc/PROGNAME でプログラムをゲットできる URL shortener っぽいサイトを作った - 詩と創作・思索のひろば
    Songmu
    Songmu 2017/08/21
    ghrの作者のeの数は「0個」だという高度なひっかけ問題
  • YAPC::Kansai 2017 OSAKAで『はてなシステムの考古学』というトークをおこないました #yapcjapan - 詩と創作・思索のひろば

    先日開催された YAPC::Kansai 2017 OSAKAで、『はてなシステムの考古学』というタイトルで発表しました。 スライド中のリンクが効かないのであまり意味がないのですが、一応 Speakerdeck にも上げてあります: はてなシステムの考古学 / History of development at Hatena // Speaker Deck はてなの開発の歴史Perl エンジニア視点からふり返るというもので、どちらかというと『はてなの開発の歴史学』とでも読んだほうがしっくりくる内容になりました。 具体的な成果物を伴わない話をするのは苦手なほうだと思っていましたが、今回はあえてこんな内容でトークすることになりました。その背景には、いつの間にか自分が社内でも古参のエンジニアになっていたこと、また、事業や組織の拡大とともに開発のあり方が多様化してきて、それまで暗黙的に共有され

    Songmu
    Songmu 2017/03/09
    テーマの「温故知新」にふさわしい素晴らしいトークだった
  • なぜプレゼンで失敗するのか - 詩と創作・思索のひろば

    自分も大方の人間と同じように人前で喋るのは苦手で、可能であれば避けたいと思っているけれど、一方でこの業界で生きのこる方法のひとつとして避けられないものでもあると思っている(ので苦しい)。若かりしころ手痛い失敗をしたこともあって、かなり苦手意識を持ちつづけていたが、最近はわりかし上手く付き合えるようになってきたかなとふり返って思う。 今もうまいプレゼンテーションをする方法は知らないし、それを僕から知りたいという人はいないとおもうが、プレゼンでしくじる方法なら経験から知っている。準備をしないこと。自分の経験からはそうだし、まずいプレゼンを見ていてもそうなんだろうな、と思うことはやっぱり多い。 このエントリはプレゼンがいやでいやで仕方がなかった自分のための分析であり、プレゼンのマイナスレベルをゼロまで引き上げようとする努力です。ソフトウェアエンジニア技術者間交流のためのプレゼンというのが前提。

    なぜプレゼンで失敗するのか - 詩と創作・思索のひろば
    Songmu
    Songmu 2016/12/06
    はてなエンジニアセミナーの朝にこのエントリ公開するの、参加できないCTOからの叱咤激励事案だった
  • 型と名前によるGoのコード探索 ― gofind - 詩と創作・思索のひろば

    思いつきでツールを作ってはリスのように忘れ、再発見しては新鮮な気持ちで便利に使う日々です。 一般にプログラミングにおいては、ソースコードを読むことに意外とばかにならない時間を使うもの。特に Go ではデフォルトで標準ライブラリのソースコードが手元にあり、コードを書く際よい教科書になるので、これを読むことも多いはず。 Go は静的に型付けされる言語なのでその点コードは読みやすいけれど、データ構造が不変ではないので、ある構造体のフィールドがどこで書き換わるのかを知るには、処理を追っていくしかない。名前で grep するのもひとつの手ではあるけど、精度はあまり期待できない。 そこで gofind。簡単に言うと、型やパッケージを含めた名前でもって Go のソースコードを検索するツールです。 go get github.com/motemen/gofind/cmd/gofind 使い方は以下の通り。

    型と名前によるGoのコード探索 ― gofind - 詩と創作・思索のひろば
    Songmu
    Songmu 2016/10/28
    新作じゃん
  • A Tour of Go のその先: 『みんなのGo言語【現場で使える実践テクニック】』 - 詩と創作・思索のひろば

    著者の一人であり、同僚でもある songmu さんに『みんなのGo言語』をいただきました。Go言語界隈の有名人がずらりと顔を並べていて豪華。拙作のツールも大きく取りあげていただいて、ありがたいです。 自分もGoという言語が好きで、趣味ではよく書いている(最近はおろそかだけど)んだけど、執筆陣はリアルワールドでGoを使いこなしている歴歴。オムニバス形式の各章がそれぞれの著者の背景を反映してバラエティに富んでおり、A Tour of Go、Effective Goを終えた人が、入門一歩先のGoをつまみいするのにとても良いだと思った。 思ってみれば、Goは簡素な文法をもつようデザインされていて、要所を押さえた標準のツーリング等々を見ても、その使用者に与えられている道具というのが意図的に限られている言語だった。そしてそのことが、コードだとかプロジェクトの構成だとかの、書かれたものとしてのGo

    A Tour of Go のその先: 『みんなのGo言語【現場で使える実践テクニック】』 - 詩と創作・思索のひろば
    Songmu
    Songmu 2016/09/09