[go: up one dir, main page]
More Web Proxy on the site http://driver.im/

タグ

ブックマーク / songmu.jp (16)

  • R2を同期するr2syncというツールをRustで書いてcrate公開した | おそらくはそれさえも平凡な日々

    https://crates.io/crates/r2sync コマンドラインツールであり以下でインストールできる。 $ brew install Songmu/tap/r2sync # or $ cargo install r2sync これはローカルディレクトリの中身をCloudflare R2に簡易的に同期するごく単純なツールで以下のように使う。 $ r2sync ./dir r2://your-bucket/path リモートに同一ファイルが存在する場合にputをスキップするようになっていて、それが欲しくて作った。ちなみに、--public-domain というオプションを付けると、同一ファイルチェックを公開URL経由で行うようになってAPIアクセスを減らせる。 $ r2sync --public-domain files.example.com ./dir r2://your-b

    R2を同期するr2syncというツールをRustで書いてcrate公開した | おそらくはそれさえも平凡な日々
    YAA
    YAA 2024/10/21
  • Cloudflare PagesにそれなりにちゃんとBasic認証をかける | おそらくはそれさえも平凡な日々

    前回の、社内プライベートポッドキャスト実現方法で、ポッドキャストサイトを静的配信しつつBasic認証をかけるというアイデアを書いた。しかし、Basic認証などなかなか使わなくなり、ネイティブでサポートしている静的ホスティングサービスも少ない。今回はCloudflare PagesのFunctions機能でリクエストをラップするミドルウェアを書けば実現できることが分かり、その方式を採用することにした。多少実装必要になるのと、認証周りを自前で書くのはあまりやりたくはないが、廉価に比較的省力で実現できるので受け入れる。 ネット上にいくつかサンプルは見つかるが、今回実装するにあたっては以下の点を留意した。 コード内に認証情報を載せない 複数ユーザーのIDとパスワードを管理できるようにする パスワードは定数時間比較してタイミング攻撃を防ぐ これらを以下のように解決することとした。 認証情報は環境変数

    Cloudflare PagesにそれなりにちゃんとBasic認証をかける | おそらくはそれさえも平凡な日々
    YAA
    YAA 2024/09/17
  • HonoとCloudflare Pagesでプロフィールサイト兼短縮URLサービスを構築した | おそらくはそれさえも平凡な日々

    関連: NFCタグ入りの自己紹介アイコンバッジを自作する song.mu という結構良い短いドメインを確保しているので、これをプロフィールサイト兼、個人用短縮URLサービスにしたいと長らく思っていたので重い腰を上げて作った。 最近オフラインイベントが増えている中で、こういうプロフィールサイトを活用しているケースを見るようになったのがきっかけ。Webエンジニアとしてはこういうの自作したいし、自分のドメインでホストしたいと思っていたのだ。 song.mu がリンクが並んだプロフィールページで、 song.mu/blog でブログに飛び、 song.mu/x でTwitterに飛ぶ、みたいな具合。 技術スタック こういうの作る時は興味がある技術の砂場にしたいので、HonoでSSGしてCloudflare Pagesでホストしている。ローカル開発でのTypeScript実行環境も mise で管理

    HonoとCloudflare Pagesでプロフィールサイト兼短縮URLサービスを構築した | おそらくはそれさえも平凡な日々
    YAA
    YAA 2024/08/10
  • 体重体組成計を買い替えてSlack投稿を自動化した | おそらくはそれさえも平凡な日々

    だいたい以下の様な話です。 TANITAの体重体組成計を買った 100g単位で計測ができる ヘルスプラネットサービスでAPIから値の取得ができる https://www.healthplanet.jp APIクライアントを作った https://github.com/Songmu/healthplanet これは結局自動化のためには使わなかった 体重体組成計を買い替えた。元々TANITAのやつを10年以上使っていたが、最近脚が一つだめになってガタつくようになったので買い換えた。 減量のモチベーション維持のためもある。最近は計測値をiPhoneのヘルスケアに手動でちまちま入力していたが、その辺りを自動できて、APIで値が取れたりして、グラフ等で見やすくしたいとは常々思っていた。そして、最近社内に体重をシェアするSlackチャンネルが作られたのもあって、自動化モチベーションが更に高まっていたの

    体重体組成計を買い替えてSlack投稿を自動化した | おそらくはそれさえも平凡な日々
    YAA
    YAA 2022/01/17
  • VPSを解約してFirebase Hostingにブログを移した | おそらくはそれさえも平凡な日々

    タイトルの通り。なんとなく自分のサイトを自分で運用したいと思っている。それはWebエンジニアとしてのポートフォリオ的な側面もあるし、それに加えて、自分の書いた文章を自分の管理下におきたい欲求があるのだと思う。 サブブログを、はてなブログに持っていますが(https://blog.song.mu)、これもまた、コンテンツはblogsync を使って管理しています。 このサイトはもともとVPS上のNginxから静的配信されており、 VPS上のgit bareリポジトリに直接push post-receive Hook で riji を呼び出してサイト再構築 という結構カッコいいフローを組んでいて 、これがなかなか気に入っていた。以下のような点が良かった。 国内のVPSへのgitリポジトリへのpushはかなり早い GitHubへのpushに少し引っかかりを感じるレベル とはいえコンマ数秒程度の違

    VPSを解約してFirebase Hostingにブログを移した | おそらくはそれさえも平凡な日々
    YAA
    YAA 2022/01/12
  • Gitのワークフローについての私のスタンス | おそらくはそれさえも平凡な日々

    Gitのワークフロー、好みが分かれる分野で自転車置き場の議論にもなりがちだと感じている。基的にはプロジェクトの流儀に素直に従い、余計なストレスを抱えないのが良いと考えている。例えば、私はマージコミットを作るのが好みだが、OSS活動等では「squash & mergeして」って言われることもあり、そういうときは当然素直に従うようにしている。 ということで、私のGitのワークフローについてのスタンスについて書いておこうと思う。私と一緒に働く人や、働くことを検討している人の参考になればと思います。もちろん、この辺りは、良い方向に変化もさせていきたい。例えばエントリー内でも触れていますが、私は昔はforce pushを禁止したいくらいでしたが、今は使っても良い、と思うようになりました。 Natureの特にGoでのバックエンド開発はこれに近い感じだとイメージしてもらえればと思います。ただ、できてな

    Gitのワークフローについての私のスタンス | おそらくはそれさえも平凡な日々
    YAA
    YAA 2021/05/19
  • 続・マンション購入記(売買契約から内覧まで) | おそらくはそれさえも平凡な日々

    前回、購入を決めたところまで書いたが、今回は家ができて内覧するところまで。 ローン審査と団信 前回通ったのは仮審査なので、次は売買契約と住宅ローン審査となる。 住宅ローンには団信(団体信用生命保険)というやつが含まれている。これは、人が死んだり、障害を抱えるなどして返済能力が無くなったときにローンの残債がチャラになるという強力な保険だ。それだけの優遇があるので、その分、ある程度健康であることが求められる。審査申込時に健康状態の記入項目がある。 それまでは比較的健康には自信があり、実際その前年までは健康診断で引っかかったことはなかった。しかし、前年から外的要因の変化が色々あり、体重増加等が気になってはいたのだ。 果たして、その年の健康診断は初めての再検査となった。LDLコレステロール値が正常値範囲外になっていたのだ。焦ってすぐに再検査を申し込み、再検査までの1ヶ月の間、酒を断ちジム通

    続・マンション購入記(売買契約から内覧まで) | おそらくはそれさえも平凡な日々
    YAA
    YAA 2021/05/17
  • Let's Encryptのルート証明書切替周り(完結編) | おそらくはそれさえも平凡な日々

    tl;dr 驚くべきハックにより旧Androidも引き続き証明書エラーなくサイトを閲覧できそうです いよいよ5/4に標準の証明書チェーンが切り替わります 前回までのおさらい Android7.1以前でLet's Encrypt証明書のサイトが見られなくなる Let's Encryptの証明書切替周りその後 Let's Encryptはルート証明書を自身(ISRG)の認証局のルート証明書(ISRG Root X1)に切り替えようとしています。現在は、IdenTrustのルート証明書(DST Root CA X3)が使われています。 正確に言うと、ISRGは新しい認証局なのでそのルート証明書の普及率も当然低く、中間証明書はIdenTrustのルート証明書でクロスサインされており、それが標準で使われています。標準がDSTになっているだけで、ISRGのルート証明書のチェーンの証明書も指定すれば今で

    Let's Encryptのルート証明書切替周り(完結編) | おそらくはそれさえも平凡な日々
    YAA
    YAA 2021/04/30
  • 実行中のプロセスの終了を検知して通知をするpeepというのを作った | おそらくはそれさえも平凡な日々

    https://github.com/Songmu/peep なにかコマンドを実行して、思ったより時間がかかりそうな場合、終了を通知して欲しくなること、あると思います。それをしてくれるのが peep です。言うなれば、 horenso の後付版です。 使い方はめちゃくちゃ簡単で、以下のようにpidと、その後に任意のコマンドを指定します。 % peep $pid -- /peth/to/notification-script 当該 $pid のプロセスが終了したら、指定したコマンドが動くという仕組みです。なんと、リモートプロセスの終了も検知できます。 インストール go get % go get github.com/Songmu/peep/cmd/peep % go get github.com/Songmu/peep/cmd/peep-notify Homebrew % brew ins

    実行中のプロセスの終了を検知して通知をするpeepというのを作った | おそらくはそれさえも平凡な日々
    YAA
    YAA 2019/01/02
  • sh -cで呼び出したコマンドがbashだと孫プロセスにならないことがある | おそらくはそれさえも平凡な日々

    前提として、/bin/sh は、デフォルトでは、RHEL系の場合bashシェル、Debian系の場合dashシェルへのsymlinkになっています。この2つのシェルの挙動は細かいところで結構異なります。そもそもの思想として、dashシェルはPOSIX互換を目指す軽量なシェルであり、bashは拡張された高機能なシェル。なのでbash前提で書かれたシェルスクリプトがdashでは動かない、みたいなことはよくあります。そういう感じで困ることがままありますが今回もそういう話。 例えば % sh -c "sleep 100" のようなコマンドを実行した場合、呼び出し元の子プロセスが sh になり、その更に子プロセスが sleep になると直感的には思うでしょう。つまり以下のような具合。 . \_ sh -c sleep 100 \_ sleep 100 しかし、 sh の実体が bash である場合な

    sh -cで呼び出したコマンドがbashだと孫プロセスにならないことがある | おそらくはそれさえも平凡な日々
    YAA
    YAA 2018/12/19
  • #ISUCON 5の予選をトップ通過してきました | おそらくはそれさえも平凡な日々

    雑に稼ぐにはPerlはサイコーだぜ tokuhirom 主催のLINE様、毎年ありがとうございます。GCP使いやすかったです、Google様もありがとうございました。 さて、いつもながらfujiwaraさんと組んで1位を取ると、つい自分がすごいと錯覚してしまいそうになるのですが、すごいのはfujiwawaさんであって「僕ではない」ということを強く意識しないといけない。 とはいえ、久しぶりにfujiwaraさんと組んで、自分がどれくらい戦えるのか楽しみだったのですが、以前優勝させてもらった時よりも自分としては大きな手応えがあり、僕もfujiwaraさんと組ませてもらって恥ずかしくないくらいの実力はあるなと思いました。 今年のISUCON予選は、とにかくやることが尽きず、ずっと手を動かしながら改善を続けられる楽しさがあって、疲れましたが充実した時間を過ごすことができました。最近仕事でコード書く

    #ISUCON 5の予選をトップ通過してきました | おそらくはそれさえも平凡な日々
    YAA
    YAA 2015/10/04
  • 退職とFA宣言のお知らせ | おそらくはそれさえも平凡な日々

    所属的には5月いっぱいですが、5月12日(月)が最終出社で有給消化中です。理由はいろいろありますが、結婚離婚がそうであるように、結局のところはタイミングの問題です。 一番大きな理由は家庭の都合です。家庭の都合というとネガティブに聞こえてしまうかも知れませんが、実際にはポジティブな挑戦です。 ただ、そのために会社を辞める必要は必ずしもなく、会社も引き止めの時にその事情を鑑みてバックアップしてくれる事は伝えてくれました。CTOに 「会社は社員の夢を実現する場所だと思っていて、だからといって全員が別の方向を向いているわけにもいかないので、誰かの夢に乗っかる形で事業を作っている。なので『こいつの夢に乗っかりたい』とか思わせたり、逆にそう思えるようなイイヤツを採用している。ただ、松木くんくらい会社に貢献してくれた人間だったら、自分の個人的な夢や目的のために会社を利用してくれて構わないし、むしろそう

    退職とFA宣言のお知らせ | おそらくはそれさえも平凡な日々
    YAA
    YAA 2014/05/13
  • おそらくはそれさえも平凡な日々: Plack::App::Directory::Markdownが便利な件

    https://metacpan.org/release/Plack-App-Directory-Markdown 自作自演乙。 意識の高いエンジニアの皆さんなら、markdown形式でメモを残しているんじゃないでしょうか。 plackup -MPlack::App::Directory::Markdown -e 'Plack::App::Directory::Markdown->new->to_app' のような感じで、ディレクトリ内のmarkdownファイルの一覧を出してくれるとともに、markdownファイルはhtmlに変換して出力してくれます。皆さんが見飽きたBootstrapデザインになっております。 padm とかでalias作るときっと楽ですね。 alias padm="plackup -MPlack::App::Directory::Markdown \ -e 'Plack

  • PSGIアプリケーションの静的配信とApp::Wallflower | おそらくはそれさえも平凡な日々

    CMSとかBlogツールなんかで、動的生成してるけど、実際は静的配信で問題ないって場合はままあると思っていて、実際Rijiがそうなわけです。 Rijiにも静的配信機能をつけていたのですが、やっていたことは、forkして裏側でplackupして、それをwget -rでぶっこ抜くっていうだいぶピタゴラ装置っぽいことをしていたわけです。 PSGIアプリは$env渡せば適正にレスポンスが返ってくるわけで、わざわざplackupしなくてもPSGIアプリに対してwget -r的なことはできるからそういうの作るかなーみたいな話をだいぶ前に#perl_jpでしていたら、数日前にtokuhiromがApp::Wallflowerってのを見つけてきてくれて、それがまさしく求めていたものだった。 危うく車輪の再発明するところだった。#perl_jpとかでぼやいておくのも有用ですね。 てことで、Riji 0.0.

    PSGIアプリケーションの静的配信とApp::Wallflower | おそらくはそれさえも平凡な日々
    YAA
    YAA 2013/12/17
  • Perlでマルチバイト文字の文字幅をAmbiguousWidthも考慮して取りたいときのTips | おそらくはそれさえも平凡な日々

    08/06 17:45 追記 tokuhiromがText::VisualWidth::PP 0.02を出してくれました。 これには、$Text::VisualWidth::PP::EastAsianというフラグ変数が加わっていて、これにtrue valueをセットすることでAmbiguousWidthの扱いを変更できます。つまりこれでいける。 use Text::VisualWidth::PP; $Text::VisualWidth::PP::EastAsian = 1; my $chr = '…'; print Text::VisualWidth::PP::width($chr); # 2 これで変なバッドノウハウを避けられて万事解決な感じです。tokuhirom++ tl;dr 曖昧幅も全角幅とみなして幅を取りたい場合は以下のようにすれば良い。tokuhiromに指摘を受けて修正しま

    Perlでマルチバイト文字の文字幅をAmbiguousWidthも考慮して取りたいときのTips | おそらくはそれさえも平凡な日々
    YAA
    YAA 2013/08/07
  • おそらくはそれさえも平凡な日々: Teng::Plugin::SearchJoinedとSQL::Maker::JoinSelectとKyoto.pmの話

    https://metacpan.org/module/Teng::Plugin::SearchJoined https://metacpan.org/module/SQL::Maker::Plugin::JoinSelect N+1問題という近年まことしやかに語られるようになった言葉があります。当たり前の事象に大げさに名前をつけるのどうなのかと思ったりもするわけですが、名前が付いていると案外説明に便利だったりして「名前重要」だなーとか思ったり思わなかったりするわけです。 最近はTengを便利に使わせてもらっているわけですが、Tengはシンプルな分、何も考えないで使うとN+1問題が多発してしまいます。そう言う思想なわけです。 クエリ数を抑えるためにJOINしたクエリを投げたくなるわけですが、そうなると自分で投げるしか無くて、それはまだいいとしても、普段Rowオブジェクトを使い慣れているゆる

    YAA
    YAA 2013/07/09
  • 1