about <<

blog icon

blog

ソフトウェア関連の実験や読んだ本・資料に関する記録

>> scrap

2023/12/25

honoのテストケースで環境変数を利用する

honoでCloudFlare Workers上で動作する認証機構を書き始めた。 honoのセットアップは非常に簡単でものの数分でwranglerの開発環境が手に入った。 一方でE2Eのテストケースを書こうとした際にテスト用の環境変数を渡す方法がわからず戸惑ったのでメモ。 結論 app.fetch(

javascript

2023/11/30

terraform moduleを勉強してスケジュールされたECSタスクを簡単に作れるようにする

株の自動取引関連の話。 各種取引のバッチ処理のためによくECS + Event Schedulerの構成を利用している。 Fargateの上でECSを動かすと高くなるイメージだが、短時間の処理+低スペックのインスタンスを使えば殆ど気にならない。 短時間のバッチであればlambdaのほうが良いという意

terraform

2023/11/29

PythonからGoogle Sheetsを操作する

株の評価額を自動で管理したかったのでpythonからGoogle Sheetsを操作する方法を調べた。 調べてみると実はあまり事例がなかったのと、Pythonでのチュートリアル以上の良いドキュメントが見当たらなかった。 そのため施行錯誤しつつ以下の一次資料を参考に実装した。 pythonのクイック

python

2023/11/12

クロス取引を防止するための入札前処理

先日構築した自動取引プログラムを動かしていたら、少量だが意図せずクロス取引が発生して証券会社から注意を受けた。 そもそもクロス取引というものを正しく理解できていなかったので調査した。 https://www.jpx.co.jp/regulation/preventing/manipulation/i

python

自動取引

2023/10/21

Ryeを試してみた

株の取引システムのバグを修正したら、依存関係が壊れてより一層壊れた。 以前poetryとpytorchの噛み合わせが悪く導入を断念して以降、requirements.txtを使っていたが改善しないと辛さがありそうだ。 ということで職場で噂になっていたryeをインストールして使ってみることにした。 h

python

2023/10/12

書評「オンスクリーン タイポグラフィ 事例と論説から考えるウェブの文字表現」

フロントエンド開発者にとってテキストのスタイリングは日常茶飯事である一方で、「良いテキストのデザインとは何か」について教えてくれる教材は多くない。 自分も正直どのようなCSSを書くのがデザイン的に見栄えがするのか、複数のデバイス間で一貫性のある見た目になるのか、 という点についてのベストプラクティス

書評

フロントエンド

2023/10/10

AWS Solution Architect Professionalに合格した

以前AWS Developer Associateに合格した際、特典として次回の受験料半額チケットがついてきた。 まんまとAWSの策略に嵌っている気もするが、せっかくなのでSolution Architect Professional (SOP) を受けてきた。 大体2週間ほど勉強しての受験とギリギ

AWS

資格

2023/10/1

最近見て良かったUI(baigieのランディングページのナビゲーション)

最近流れ着いたbaigieのランディングページのスマホ用ハンバーガーメニューがいい感じだった。 スクショは勝手に貼っているので怒られたら消す。 ハンバーガーメニューのUI自体は比較的よくあるものだが、結構独特な場所に配置されている。 位置が右下にあるので右手で持ったときに親指で押しやすい。 アニメ

自作ブログ

フロントエンド

React

Typescript

2023/9/19

HTTP/1.1のHeaderの仕様とNginxにおけるパーサーの実装

前回に引き続きHTTP/1.1の仕様とNginxの実装を読んでいく。 今回はHeaderのパース周りについて。RFC9110と9112に関連する記載がある。 https://datatracker.ietf.org/doc/html/rfc9110 https://datatracker.ietf

HTTP

Nginx

自作サーバー

2023/9/10

HTTP/1.1のRequestLineの仕様とNginxにおけるパーサーの実装

サーバーを自作するためにHTTPの仕様書とNginxの実装を確認した。 まずはhttp仕様を確認する。 https://datatracker.ietf.org/doc/html/rfc9110 https://datatracker.ietf.org/doc/html/rfc9112 HTTP

HTTP

Nginx

自作サーバー

2023/9/6

ブログのコードブロックをいい感じにする(後編)

前編の続き。 自作rehypeプラグインを作成して、ハイライトされたコードブロックを好きなタグで覆うことができるようになった。 あとはこのコードブロックに動きを付けていく。 可能であればマークダウンを直接Reactに変換して動きをつける、みたいなことが出来れば楽だったが挫折した。 そこで今回は生成し

自作ブログ

フロントエンド

React

Typescript

2023/9/3

ブログのコードブロックをいい感じにする(前編)

今使っているコードブロックが色々と見にくい。 コントラストが低くテキストを読みにくいし、よくあるコピー機能が無くてコピーしにくい。 色々とライブラリを漁ってみたがしっくりくるものが無かったので自作することにした。 Before After 実装方針 自分が考えるいい感じのコードブロックとは以下の

自作ブログ

フロントエンド

React

Typescript

2023/8/27

ブログにtextlintを導入した

記事を書く際に細かい誤字脱字や表記のチェックなどに時間を取られて、文章を書くための心理的なハードルが高まっている。 もっと気楽に文章を書けるようにするためtextlintを使って、細かい確認作業を自動化することにした。 https://textlint.github.io/ 必要なモジュールの追加

自作ブログ

2023/8/27

自作HTTPサーバーの動作モードをEdgeTriggerにした

自作サーバーにここで調査した内容を組み込もうと一週間作業していたが、 諸々の罠に嵌ってやっと動くようになった。 以下嵌ったポイントに関するメモ。 https://tori29.jp/blog/20230816_edge_trigger AcceptはEAGAINを返すまで繰り返す必要がある list

Nginx

自作サーバー

Rust

2023/8/15

なぜEdgeTriggerモードのときはNonBlockingIOを使うべきか

自作サーバーでIOをEPOLLで多重化しようとしていて、 LevelTriggerとEdgeTriggerどちらを使うべきか悩んでいる。 そもそもそれぞれのメリット、デメリットもよく理解できていない状態だが、 それ以上にepoll(7)に記載されている。 「EdgeTriggerを使うならNonBl

Nginx

自作サーバー

2023/8/15

RustでEvent駆動型のサーバーを作っている

Nginxを業務で少し触れたところ微塵も理解できなかったので、自分で作ってみようと思い立った。 socketをbindしてacceptしてread-writeみたいな初歩の初歩は理解しているものの、 イベント駆動型って何?、ノンブロッキングってどこをどうノンブロッキングにしているの?、みたいな踏み込

Rust

Nginx

自作サーバー

2023/8/6

AWS Developer Associateに合格した

仕事でAWSに触る機会が増えていてしキャッチアップする必要性を感じたため、AWS Certified Developer - Associateを受けてきた。 諸事上で最後の最後までやる気がでなくて、結局最後3日で知識を詰め込んだが結果は849/1000と比較的いい感じの結果を取ることができた。 勉

AWS

資格

2023/7/24

python-json-loggerを導入した

作っている株の自動取引基盤でログを分析するにあたって、json形式のログを扱えるようにしたくなった。 特にCloudWatchInsightでログを漁るときに、ログにタグのようなものを付けられると使い勝手が良さそうだということで環境を整備した。 1からloggingライブラリのFormatterを自

機械学習

python

自動取引

2023/7/19

ボンフェローニ補正付きコルモゴロフ・スミルノフ検定

予測で使っているデータに問題が無いことを確認するためにボンフェローニ補正したコルモゴロフ・スミルノフ(KS)検定で特徴量の異常を検知する。 ボンフェローニ補正についてはwikipediaが詳しかったので、これを参考に実装した。 KS検定はscipyに実装があるので楽に実装できた。 ボンフェローニ補正

機械学習

python

自動取引

2023/7/15

Concept Driftに関するサーベイ

株を自動取引するにあたって、予測に使っているデータに問題が無いかどうかを監視したい。 市況の変化に伴って一時データに変化が生じる可能性もあるし、前処理の何らかのバグによって生成された特徴量がおかしくなる可能性も考えられる。 Concept Driftの定義と分類 この論文に基づいてざっくりと定義を確

機械学習

2023/7/15

上にスクロールしたときにだけ表示されるちょっといい感じのボタンを作る

ブログの見た目をリッチにしようと思い立って、上スクロールしたときにだけ表示されるボタンを作った。 ざっくりとした要件はこんな感じ。 下にスクロールしたときには表示されない 上にスクロールしたときにだけ表示される On, Off時にはいい感じにアニメーションする 負荷やちらつきは最小限に 環境と

React

フロントエンド

2023/7/6

自動取引システムをどうやってテストすればいいか

自動取引システムをどうやってテストしけばいいかの個人的整理メモ。 基本的に日時での取引戦略を前提にしているの+あくまで実装前の妄想なのでご注意ください。 なぜテストしたいか 自動取引システムが止まることで機械損が発生してしまう ロジックが間違っているまま放置していると誤った発注を出して実損を出して

自動取引

2023/7/2

NextJS App RouterでSitemap, Robot.txt, RSSを配置する

このブログにsitemap, robots.txt, RSSなどを配置したいが、旧来のPagesRouterとAppRouterのドキュメントやブログが混ざっていてなかなかまとまった情報が無い。 もろもろ調べたところ以下の通りに対応するのが一番簡単そうだった。 sitemap: NextJS組み込

フロントエンド

2023/7/1

立花証券のAPIを触ってみた雑感

株の取引を自動化するためにAPI経由で取引できる証券会社を探したところ、立花証券という会社がAPIを提供していることを知ったので試してみた。 TL; DR; (おそらく唯一の)簡便に使える取引API ドキュメント+サンプルコードがあるので開発に困ることは無さそう セキュリティ的に不安が残る仕様が多

自動取引

2023/6/30

はてなブログから自作ブログシステムに移行した

仕事でフロントエンド周りに関わるようになったので、気軽にフロントエンド周りの開発を試せる環境が欲しくなった。 はてなブログのWeb上で文章書くのもしんどかったので、ブログ+その他実験上としてWebサイトを立ち上げた。 あとはいざというときにポートフォリと的なものが嬉しいという気持ちもあった。 使った

フロントエンド

React

2021/12/18

Truffleを使ったSolidity開発環境の構築 + FaucetのExampleの作成

前回マスタリングイーサリアムを読んでイーサリアム周辺の話をざっくり勉強したので今度は実践。 truffleとganacheを導入してローカルでsolidityをコンパイル+実行できる環境を整える。 全体の流れとしては、シンプルなFaucetコントラクトを作成→ローカルのシミュレーターにデプロイ→ja

2021/4/30

numpyのchoice関数を読む

javascriptは標準で重み付きのchoice関数が無いのでライブラリを探すか自分で作る必要がある。折角なのでpythonの勉強がてらnumpyのchoice関数を読んだ。 該当箇所のソースコードを引用しつつ説明を加えていく。 概観 ざっくり2つの引数(replace, p)によって挙動が変わっ

2021/4/29

GAEのフレキシブル環境でpuppeteerを使う

prill のプリント作成機能のコア部分にはpuppeteerを使っている。GAEでpuppeteerを動かしたくて試行錯誤した結果、フレキシブル環境でカスタムコンテナを使うことで動作に成功したのでそのときのメモ。後から調べたところによると適切に設定すればスタンダード環境でもpuppeteer動かせ

2021/1/2

Javascriptでキーボードショートカットを実装する

anntにキーボードショートカットを実装したいと思って調べてみても、検索に引っかかるのはライブラリの使い方ばっかりであまり具体的な仕組みが見つからない。 あまりブラックボックスなライブラリを使いたくないという気持ちと、この程度簡単に実装できるだろというイキリで更に調査を進めるとshortcut.js

2020/12/9

個人開発サービスの記事周りをWordpressに切り出した。

タイトルの日本語が怪しい気がします。コツコツ開発しているanntの話です。 anntはFirebaseで動いていて基本的には静的なページで動いていたので、チュートリアルなどの記事を書くときも直接htmlタグ付けしていくという苦行をしていました。 最近さすがに当時の自分は何を考えてこんなの作ったんだ?

2020/9/23

多角形の内外判定(javascriptでの実装を添えて)

アノテーションツールでセグメンテーション用に多角形での範囲選択を実装しようとしている。 四角形の場合には簡単に内外判定ができるが、多角形だとそう簡単にはいかない。 今回実装にあたって多角形の内外判定を勉強した。 TL;DR Winding Number Algorithmは割と楽に実装できる 実

2020/9/6

anntを大きくリファクタした

前公開したanntをちまちま改修してたのでリリース 改修前 改修後 主な改修内容は Google Drive対応 内部のリファクタリング デザインの変更 の3点 Google Drive対応 Google DriveはDropboxと違って、階層構造のファイルシステムじゃないので実装が手探り

2020/8/3

Google Drive APIでファイルをアップロード - Multipart/Related

前回に引き続きGoogleDriveAPIのお話です。 今回はファイルの新規アップロードについてです。 createエンドポイント ファイルを新規にアップロードするにはcreateエンドポイントを使用します。 このエンドポイントが曲者で、アップロード時に3つのアップロードタイプから一つを選んで明示的

2020/7/24

Google Drive APIでパスを指定してファイル一覧を取得する

Google DriveAPIで心が折れた 指定したパスのファイルが存在するか知りたいだけだったが、Google Drive Api V3のリファレンスを読んでもあまりファイルパスに関する記述が殆ど見当たらない。 クラウドストレージサービスのリファレンスでそんなことあるかと思って調べた。 stac

2020/7/10

vue.js+vue-routerで自作サービスの多言語対応

以前作ったWebサービスの多言語対応を行った。 anntはvue-routerで動くSPAだったが、URLに応じて適切な言語で表示するように改修した。 日本語:https://annt.ai/ja 英語:https://annt.ai/en 多言語対応の方法 初期段階で多言語対応ってそもそもどう

2020/7/7

pythonで色を連続的に変化させる方法

色をシームレスに変化させたい。虹色みたいに。ただそれだけ。 と思っても、実は色についてほとんど知識が無いことに気がつく。RGBは分かるが、それを使ってどう変化させればいいかわからない。RGBのRの値だけを変えても色の赤みが薄くなるか濃くなるかだけで、虹色みたいに変化させるのは難しいのではと思った。

2020/6/26

BoundingBoxごと画像を回転・反転・リサイズ

物体検出の前処理だったりデータ水増しを使用とすると、どうしても回転、反転、リサイズなどの処理を行う必要が出てくる。 画像だけであればOpenCV使ったりNumpy使えば、サクっとできるがバウンディングボックスだと若干めんどくさい。(特に回転) ライブラリを作る中で実装したので、それぞれの簡単な実装を

2020/6/21

Dropbox上の画像を直接アノテーションできるサービスを作った。Part 2

前回に引き続きanntというサービスを作った話です。 part.2 では主に技術面の話について書いていきます。 フロントエンドの話 今回始めてvue.jsを使ったのですが本当に便利です。何が便利かってサイトを構成するパーツを分けて実装できるのが本当に楽でした。 anntはvue-routerを使って

2020/6/20

Dropbox上の画像を直接アノテーションできるサービスを作った。Part 1

個人開発でサービス作りました。宣伝かねて苦労話・モチベーションとか個人開発に興味がある方に向けて公開します。 まずはPart 1ということで、コンセプトだったり動機だったりとメンタル面の話です。(技術の話も少し触れます) 何を作ったの anntというブラウザ上で動作するアノテーションツールです。

2020/3/29

過去に計算したDataFrameと内容が同じか高速に判定したい

機械学習の文脈で同じ前処理を実行するたびに数十分取られるのが非常に辛く感じる。 特に同じ入力を入れているのに実行するたびに計算をしなおすのが馬鹿らしく感じる。 かといってDataFrameを丸々キャッシュして、関数呼び出すたびに前回のDataFrameと同じか検証するものアホらしい。 もやもやしつつ

2019/11/9

深層学習+Hough変換で紙の領域検出

kaggleやるよ何て名前をつけておいて1年半くらいkaggleやってませんでした。 その間何やってたかって言うとAI使ったWebサービスを作ろうとして挫折してを繰り返してました。 今のところ何の生産物も無いっていう悲惨な状況なんですけど、しょうもないノウハウ達は手に入れたのでせめてもの手向けとして

2018/11/5

Docker使って手軽にGCEで機械学習できる環境を整えた

最近、強化学習的なとこに手を出してみたけど手元のMacbook AirじゃメモリやCPU的に厳しいのでクラウドで実行することを検討した。 最初はAmazon EC2借りようかなーと考えていたけれど、Google Compute Engine(GCE) だとプリエンプティブという格安実行モードがあるこ

2018/9/2

機械学習の前処理を効率的にするPreprepっていうライブラリを作った

最近kaggleは放置して機械学習を使った競馬の予想をやってるんですけど、少しパラメータを変えただけのコードを実行するだけなのに、毎回一から前処理をしていると時間がかかりすぎて死ぬという問題が発生していました。 そんな悩みを解決するために、実行するときに前処理をキャッシュしておいて、次に実行するとき

2018/6/14

TargetEncodingのスムーシング

はじめてのFeature Engineeringで紹介したTargetEncoding, LikelihoodEncodingはカテゴリ変数の前処理としては非常に強力な手法だが、あるカテゴリに所属するデータの数が少ないと過学習の原因になってしまう可能性がある。 データ数が少ないカテゴリを持つデー[タ

2018/5/19

はじめてのFeature Engineering

先日KaggleのAdTracking Competition に参加したが惨敗したため、特訓することにした。 Ad Tracking Competition で4位の人がFeature Engineeringについて非常にまとまった資料を公開していたので、その要約をまとめた。 勉強がてらPytho

2018/5/12

feather - pandasの読み書きを高速化

kaggleに参加して巨大なCSVファイルを読み書きしていると、それだけで数分近くかかってしまうことがある。 そこで紹介されていたfeatherというDataFrame保存用ライブラリを使ってみた。 featherはpandasのDataFrameを高速に保存、ロードするために開発されたApache

2018/5/9

Talking Data AdTracking Fraud Detection Challenge

先日開催されたTalking Data AdTracking Fraud Detection Challengeに参加した。 Talking Data AdTracking Fraud Detection Challengeは中国の広告企業TalkingData主催のコンペで、広告クリックのログから