タグ

ブックマーク / blog.3qe.us (15)

  • JSONの差分を取ってJSON Patchを得るにはdiffsonがおすすめ - Lambdaカクテル

    こういうツイートを見た。 Scala (or Java) で、jsonのdiffをpatchファイルみたいな感じでわかりやすいテキストで出力してくれるライブラリないかなあ。そしてjacksonに依存してないといいな— Arthur (@Arthur1__) 2024年1月13日 現代のプログラミングではJSONの差分を取ったり、逆にパッチを当てるということがよくある。可能ならそれがPretty Printできると良い。 JSONの差分をScalaで取る方法についていくつか調べてみたのでメモ。 JSONの差分をどう表現する? JSON Patch diffson diffsonでJSON Patchを生成する diffsonでJSON Patchを適用する diffsonでJSON Merge Patchを生成する diffsonでJSON Merge Patchを適用する JSON Pat

    JSONの差分を取ってJSON Patchを得るにはdiffsonがおすすめ - Lambdaカクテル
  • エンジニアの生産性を支える楽観主義 - Lambdaカクテル

    あなたはポジティブっつー言葉は好きですか。自分はそんなに好きじゃない。好きじゃない人に読んでほしい気がする記事。 自分はひねくれているのでポジティブという言葉があまり好みではない。精神論っぽいし、どうしたってポジティブにならない物事もあるからだ。たとえば人が死んで落ち込んでいるときにポジティブになれというのはもはや無謀だ。ポジティブという言葉には価値判断が練り込まれている。だから無闇矢鱈にこの言葉を使っても現状を歪めるだけになる。現状を歪めるとおかしなことが起こる。だから好きではない。 とはいっても、ポジティブであったほうがよいのは確かだ。 そんな中、楽観的(optimistic)、だったらすごく便利そうだなと思った。これは現状に対する価値判断を含んでいない。現状を肯定した上で、じゃあどういう態度を取りますか?という言葉だ。 そもそも楽観的とはなんなのか。自分だったらこう考える。暮らしのレ

    エンジニアの生産性を支える楽観主義 - Lambdaカクテル
  • 自前でOG:Image生成メカニズムを構成する方法 - Lambdaカクテル

    こういう画像を作る仕組みを作った。 画像を生成したい人は世間にそこそこいるかもしれないし、自分は比較的?簡単な方法でそれを達成した。せっかくなのでやり方をみんなに教えようと思ってこの記事を書いている。 全てのソースコードは以下にOGImagekunという名前で公開している。 github.com OG:Image OG:Imageについて軽く説明しておく。知っている人は読み飛ばしていい。 Twitterやブログの埋め込み記事などで、このようなちょっと豪華な画像を見たことがあると思う。 最近のサイトでは、ユーザがより自分のコンテンツを見てくれるために、こういったサムネイルを表示するのが当たり前となっている。 これは、ウェブサイトや動画、記事などへのリンクをSNSなどに書き込むと、自動的にそのサムネイル的な画像を表示してくれる、という仕組みがそうしている。これはTwitterではTwitter

    自前でOG:Image生成メカニズムを構成する方法 - Lambdaカクテル
  • マネーフォワードのCSVをParquetに変換する - Lambdaカクテル

    いろいろと分析したいので、マネーフォワードでエクスポートできるCSVファイルをSparkを使ってParquetに変換したメモ。 マネーフォワード 特に今更説明する必要もないが、マネーフォワードはオンラインで動作する家計簿サービス。カードと連携したり、勝手に科目を付けてくれたりするのでとても便利だ。自分はプレミアム会員でエンジョイしている。 自分はSBIネット銀行なので、それ専用のマネーフォワードを使っている。 ssnb.x.moneyforward.com プレミアム会員になると、マネーフォワードは特定の月の家計簿をCSV/Excel形式でエクスポートできる。これを使って、あとでGrafanaとかKibanaで眺めてみようというのが最終的な目標。今回はParquetに変換するだけ。 CSVは以下のようなフォーマットになっている: "計算対象","日付","内容","金額(円)","保有金融

    マネーフォワードのCSVをParquetに変換する - Lambdaカクテル
    yuiseki
    yuiseki 2023/06/18
  • 他人のコードを読むときは頭の中で補助線を引いてから読むと良い(かも) - Lambdaカクテル

    コードレビューなどで他人のコードを読むときに気付きがあったのでメモしておく。 自分は従来コードレビューなどで他人のコードを読むときは、ざっとdescriptionを読んでからコードをじっと追いかけるという読み方をしていたけど、これには限界があった。結局このコードが何をしたいのかという手掛かりがないので、差分が大きい場合はよくわからなくなってしまうのだ。ぜんぜん分からない数学のテストを受けているみたいになってしまう。 そこで、ふと考えの転換があって、いったんdescriptionを読んでから、どういうことを実装者はしたいのかな〜ということを想像して、こうするだろうなという補助線をあらかじめ頭の中で引いてからコードを読むようにしたところ、かなりコードが読めるようになってきた。 これは自分にとって結構大きな発見だった。 自分は高校時代数学が非常に苦手で、よくわかっていない一方でどんどん授業は進ん

    他人のコードを読むときは頭の中で補助線を引いてから読むと良い(かも) - Lambdaカクテル
  • CloudFront+S3構成だった自分のサイトをCloudflare+R2に移行した - Lambdaカクテル

    自分のウェブサイト( http://www.3qe.us/ )をCloudFront+S3構成からCloudflareを使った構成に乗り換えたので、ひっかかった点やつまづいた点などをメモしておく。 結論としては普通に移行できたが、メールとの兼ね合いでDNSまわりでちょっと配慮が必要な部分があるかも、といった具合。試したいときは全部読んでからチャレンジしよう。 ウェブサイトの静的配信にCloudFrontとS3を使っていた モチベーション: ALBのコストが高い Cloudflare 構成 Cloudflare Pages Cloudflare+ Denoflare + R2 修正 R2のstatic hosting機能を直接使う 手順 Webサイト追加 R2バケット作成 APIトークン作成 Denoflareでworkerをデプロイする 完了 まとめ オチ 参考文献 ウェブサイトの静的配信

    CloudFront+S3構成だった自分のサイトをCloudflare+R2に移行した - Lambdaカクテル
  • Facebookが開発した圧縮アルゴリズムZstandardについて調べた(非常に高速)(今日から使えます) - Lambdaカクテル

    Common Lispの処理系であるSBCLをインストールしようとしたら、追加でlibzstd-develというのを新たに要求されるようになっていた。見るからに圧縮系のライブラリだけれど聞き慣れないのでちょっと調べてみた。 ちょろっと調べたところ、以下のことが分かった: Zstandard(ゼットスタンダード?)というのが正式な名前。 Facebookが開発した。 Deflateよりも速いことを主眼においている。 BSDライセンス。 Linuxカーネルまわりで使えるようになっているほか、一部のディストロではパッケージの圧縮フォーマットとして使われているようだ。 Webというよりはどちらかといえばバックエンド的な箇所で使われている印象がある。 facebook.github.io zstd コマンド使ってみた 他の名だたる圧縮アルゴリズム同様、Linuxで直接ファイルに対してこれを実行して圧

    Facebookが開発した圧縮アルゴリズムZstandardについて調べた(非常に高速)(今日から使えます) - Lambdaカクテル
  • ちょっとしたデータファイルのフォーマットにJSON Linesを使うと便利 - Lambdaカクテル

    データ構造が決まるとアルゴリズムも自ずから定まる、みたいな話もあるように、ソフトウェアエンジニアリングの文脈では「どうデータを持つか」が重要だ。これはちょっとしたシェルスクリプトでも同様。 自分はUNIX哲学が好きで、なんかちょっとしたツールを作るときは基的に1行1データのテキスト形式を喋るように作成する。そのほうが適用できるツールが多くなるからだ。shellscriptを使うときはwhile read文を使えば1行1コマンドを実行する処理をすぐ書けるし、sedを使えば基的な加工ができる(互換性の問題があるから基的にgsedを使うけど)。開発や運用にLinuxを使っている以上、こういう形式を採用しておくと取り回しやすくなる。 その一方、1行1データのテキスト形式はそれ自体では構造化されていないという問題がある。ちょっとでも複雑な形式で書こうとすると、CSVやTSVにしようとか、:でセ

    ちょっとしたデータファイルのフォーマットにJSON Linesを使うと便利 - Lambdaカクテル
  • GitHub Actionのジョブ実行画面からPull Requestを辿れるようにした - Lambdaカクテル

    こういうのを作りました。 ジョブに紐付いたPull Requestへのリンクが表示される 行ったこと: リンクを生成するジョブを1つ生やした 綺麗な表示はStep Summary機能 (後述) の力を借りている ジョブ実行画面からPull-Reqに戻りたい GitHub Actionsのジョブ実行画面には、その実行元となったPull Requestへのリンクが存在しないため、困っていた。 よくあるシチュエーション: Pull Requestを見るとジョブがコケていた 様子を見に行くうちに履歴がどんどん深くなる -- ジョブ画面内での遷移はどんどんヒストリが積まれる Pull Requestに戻れなくなってしまう この話を同僚にしたところ共感の嵐だった。したがって隠れた需要がありそうだということが判明し、うまくやる方法を考えることにした。 結果、GitHub Action上でPull-Req

    GitHub Actionのジョブ実行画面からPull Requestを辿れるようにした - Lambdaカクテル
  • ドミノピザのハッピーレンジとは何なのか - Lambdaカクテル

    ハッピーレンジとはピザの価格帯であり、高級度である。無印が最もリーズナブルで、数字が増えるにしたがって高級とされている。ゲームにおけるランクやTierに近い概念である。サイズや生地の種類とは独立した概念。 サイズについて M / R / Lの3種類あり、前者から後者にかけて大きくなる。 M 直径23cm R 直径28cm L 直径33cm なぜこんな記事を書いているか なんでこんなアフィブログみたいな事を言い出したかというと、ドミノピザ ハッピーレンジ 意味でググってまともなページがぜんぜん出てこなくて悲惨な目にあったから。人類は悲劇を繰り返すべきではない。1行で終わることを1000字で書いてはいけない。 理科系の作文技術 (中公新書 624) 作者:木下 是雄中央公論新社Amazon

    ドミノピザのハッピーレンジとは何なのか - Lambdaカクテル
    yuiseki
    yuiseki 2022/03/08
    良記事
  • 洗い物のインターフェイスを統一して全部食洗機に投入できるようにするといい - Lambdaカクテル

    先日食洗機を買ったけれど、フライパンだけは取っ手が食洗機に収まりきらずに洗えないという問題があった。仕方がないのでフライパンだけ手で洗っていたけれど、手で洗うためにはスポンジや通常洗剤を常時シンクに露出させておく必要があるがために、プログラミングで言うとフライパンのためだけに各種実装が行われているという不健全な状態になっていた。統一的に洗い物ができないのであれば、食洗機を導入したメリットが半減してしまう。 この問題を解消するためには、フライパンの大きさを小さくするか、取っ手が外せるフライパンを導入するしかない。今回は後者のアプローチをとることにした。 取っ手が取れるフライパン 最強 取っ手が取れるフライパンといってもいろいろなメーカーがある。例えばアイリスオーヤマも出している。一般に知名度でいえばティファールのフライパンが有名。 どう選ぶか。とりあえず一番知名度が高いということは、ユーザの

    洗い物のインターフェイスを統一して全部食洗機に投入できるようにするといい - Lambdaカクテル
  • 朝日新聞社の長文要約生成APIを使ってブログの要約を自動生成する仕組みを構築した - Lambdaカクテル

    先日朝日新聞社によって長文要約APIがリリースされました。要約をAPIで取得できるという点が面白いと感じたので、このブログ(blog.3qe.us)の記事を閲覧したときに自動的に要約を見られるような仕組みを作ってみようと思い、1週間ちょっとかかってしまいましたが動くものができたので紹介します。 www.itmedia.co.jp 記事冒頭に要約コーナーを出現させる この仕組みによって、記事の冒頭に要約コーナーが勝手に出現して要約を表示します。 こんな感じで要約が表示されます いくつかの記事では既に生成ができていますが、API自体は1日に20回までの制限があるので、全ての記事にはまだ行き渡っていません。 まだ要約が生成されていない記事にはpreparing abstractという文言が表示されます。 キューに入った状態 句読点の問題かちょっと要約が怪しいところもありますが、おおむね正しい要約

    朝日新聞社の長文要約生成APIを使ってブログの要約を自動生成する仕組みを構築した - Lambdaカクテル
  • チルダ(~)はどうしてホームディレクトリになるのか - Lambdaカクテル

    たまに忘れてコケたり,周りでも困っている人がいるようだったのでメモ. 追記(2020-09-06T11:25+09:00) この記事では仕組みのほうについて記述しており,由来については書いてなかったのですが,ブコメでホームディレクトリがチルダで表記されるようになった由来について幾人かの識者にご指摘いただきました. unix.stackexchange.com ちょうどHOMEキーと同じ場所にチルダキーがあったんですね.ありがとうございました. tl;dr ~/は$HOME/と同義である ~/が$HOME/に,ひいては実際の$HOME/の中身に展開されるのはシェル(e.g. bash, zsh, etc...)の拡張機能 シェルを使わなければその機能は使えないので,手で展開する必要がある シェルを使わない状況: プログラム中からパスをいじるような場合,DockerfileのCMDなど ~--

    チルダ(~)はどうしてホームディレクトリになるのか - Lambdaカクテル
  • 標準出力をフィルタ・変形する強力なパイプ: teip使ってみた - Lambdaカクテル

    最近teipというツールをはてブで知った。説明を読んでいるとなかなか面白いしなんかに使えそうだなという印象を受けたので使ってみた。 speakerdeck.com github.com teipとは ひとことでは正確な表現をしにくいが,「フィールドやバイトオフセット,正規表現で変形できるパイプ」である。 通常のUNIXのパイプは「他のコマンドのstdoutを受け取り,別のコマンドを起動してそのstdioにぜんぶ流し込む」機能だ。だがその「ぜんぶ流し込む」箇所を「特定の箇所だけ流し込む」にできたら?というのをこのツールがやってしまった。 いやいや「特定の箇所だけ流し込む」だけならgrepやsedでもできる。このコマンドがすごいのは,「特定の箇所だけ流し込む」だけではなく,「流し込んで得られたstdoutを元のstdioに合成して」返してくれるからだ。 例えば以下のような入力を与える。-f 3

    標準出力をフィルタ・変形する強力なパイプ: teip使ってみた - Lambdaカクテル
  • Common LispのWebフレームワーク「Caveman2」のリクエスト処理を眺める - Lambdaカクテル

    Common LispのWebフレームワークであるCaveman 2で遊んでいる. 今日は,リクエストの前後に処理を挿入し,レスポンスヘッダをいじったりしてみるお話. ある程度Common Lispが分かりますよ,というくらいのレベル感です.僕のレベルは,マクロが書けてうれしいね,とかいうレベルです. 全てのエンドポイントで,リクエストハンドラを処理する前・後ろに一定の共通処理を行いたい,というのは実によくある話だ.例えば認証処理を行いたければリクエストハンドラに到達する前に処理を行う必要があるし,ベンチマークのための特別なヘッダを付与するためにリクエストハンドラを通った後で処理を行いたいこともある.こういった処理は頻繁に使われるが,それらがいかに実現されているかについて運用開始後に知る機会はあまりないのが現状だ. 最近Caveman 2で自分用のアプリケーションを開発していて,そこで1か

    Common LispのWebフレームワーク「Caveman2」のリクエスト処理を眺める - Lambdaカクテル
    yuiseki
    yuiseki 2018/04/16
  • 1