Kotlin Fest 2024 の「例外設計について考えて Kotlin(Spring Boot&Arrow)で実践する」の発表資料です。 https://fortee.jp/kotlin-fest-2024/proposal/c7b68f48-1209-4f63-a111-18d1b185e109
![例外設計について考えて Kotlin(Spring Boot&Arrow)で実践する/thinking exception design and implementation by kotlin](https://cdn-ak-scissors.b.st-hatena.com/image/square/585cdd0b7bd3af959ff58bdb971a3630fa162a73/height=288;version=1;width=512/https%3A%2F%2Ffiles.speakerdeck.com%2Fpresentations%2F67b47e23f9f44cee81b1fb97e66ebccc%2Fslide_0.jpg%3F30719652)
TypeScript は本質的に自分に型が付与されていると思っているだけの JavaScript です。 いくら型を付与しようが、それが実行時に影響を与えることはありません。 コードレビューをしているとここを誤解している人が本当に多いです。何度も解説しているのですが、なかなか浸透しないので、TypeScript におけるバリデーションという視点で記事を書くことにしました。 あと TS でバリデータ使って色々作ろうとしている友人と、プログラミング始めたてで zod と openapi を使っいる友人がいたので、彼らが想定読者です。 型と値の名前空間 TypeScript 上での名前空間(スコープ)は2つに分類できます。 値: 実行時にランタイム上のメモリに存在するもの 型: 静的解析時にのみ参照可能なもの。コンパイル時に完全に消滅する。 TypeScript は基本的に JavaScript
先日、Next.jsの新たなレンダリングモデルであるPartial Pre-Rendering(以降PPR)について記事を投稿しました。 この記事を書いてる時は意識してなかったのですが、感想でアイランドアーキテクチャに言及されるケースが散見されました。社内で上記記事の話題になった時も同様に、アイランドアーキテクチャとの違いについて問われました。 結論から言うと、PPRとアイランドアーキテクチャは全く異なるものです。本稿ではPPRとアイランドアーキテクチャの違いについて解説します。 PPR まずはPPRとアイランドアーキテクチャの概要を改めて整理しましょう。 PPRはページをstatic renderingとしつつ、部分的にdynamic renderingにすることが可能なレンダリングモデルです。具体的には、画面をbuild時(もしくはrevalidate後)に静的生成しつつ、リクエスト毎
転職のお知らせ、あるいは個人の日記です。 6月から以下のように所属変更となっています。 From 株式会社はてな To 株式会社一休 マネージャではなく、とくに役職のないソフトウェアエンジニアとして働きます。いわゆるIC (individual contributor)というやつです。 きっかけ はてなには新卒として入社して以来11年も勤めて、インターンやアルバイトとして関わった時期から数えると16年になります。出入りの激しいこの業界でずっと1社しか知らずに過ごすのは負い目に感じていました。また、年齢的にも今年で40歳になることもあって、そろそろ転職を経験しておかないとまずいという焦りもありました。 そんなときに、大学の同期でプライベートでも仲良くさせてもらっているid:suzakから声をかけてもらい、ちょっと真剣に転職を考えたのがきっかけでした。 できることではなくやりたいこと はてなで
開成東大卒の「天才AIエンジニア」が都知事選出馬…オードリー・タンに背中を押されて決めた「圧倒的危機感」と、ヤバすぎるリアル 東大卒AIエンジニア・起業家・SF作家。 そんな異色の経歴を持つ東京都知事選候補が、出馬の表明と同時に知識人からの注目を集めている。 安野貴博氏、33歳。 「テクノロジーで誰も取り残さない東京へのアップデート」などユニークな政策を掲げる彼は、一体どんな人物なのだろうか。 取材を通じて、驚くべき経歴と出馬にかける思いが明らかになってきた。 9歳の頃、独学でプログラミングを学ぶ まずは「天才AIエンジニア」と呼ばれるに至る経歴から見てみよう。 安野氏は9歳の頃、独学でプログラミングを始め、17歳にして初めてのWebサービスをリリース。未来予測の確率論「マルコフ連鎖」をベースに開発されたもので、すでに“超高校級”のエンジニアだったことがうかがい知れる。 開成高校を卒業後は
概要 MySQLでIN句を使用する時はIN句に渡す要素数に注意する必要があるとよく先輩エンジニアの方から聞いていたのですが、実際に大量の要素を渡すと何がまずいのかはっきり分かっていなかったので調べてみました。 この記事で伝えたいこと MySQLでIn句に大量の要素を渡すとまずい理由 まずい状況を回避するために気をつけるべきポイント 先に結論 MySQLでIN句に大量の要素を渡すとインデックスを貼っていたカラムだとしてもフルスキャンが発生しスロークエリになる可能性があります。 フルスキャンが発生してしまう条件はテーブルに設定してあるインデックスの内容とrange_optimizer_max_mem_size の設定値に依存しており、MySQL8でデフォルトの設定値 & シンプルなテーブルであってもおおよそ数万件の要素数をIN句に渡すとフルスキャンが発生する可能性があると考えられます。 検証環
OpenAIからChatGPT-4oが発表されましたが、皆さんガンガンつかっていますでしょうか? さて、このChatGPT-4oですが、テキスト以外のデータも使用できるようになっているという特徴があります。 普通にテキストでのやり取りをしつつも画像データを扱えるということで、「実はこれいい感じのOCRとして使えるんじゃね?」って思っちゃったわけです。 ということで、今回はChatGPT-4oを使ってOCRを使うとどんなもんなのかやってみたいと思います。 やりたいこと やってみる とりあえずやってみる 請求書 名刺 参考文献 感想 やりたいこと 今回やりたいことはOCRです。早い話が画像ファイルを突っ込んでテキストを読み取りたいって感じです。 ただ、当たり前のようにOCRって言葉を使用していますがOCRって結構奥が深いです。 mediadrive.jp 単純に画像から文字を見つけて対応するテ
この記事は Vim 駅伝 の 06/05 の記事です。 前回の記事は thinca さんによる、 06/03 の「Meguro.vim #23 を開催しました」という記事でした。 次回は 06/07 に投稿される予定です。 はじめに 本記事は以下の記事のオマージュです。 Vim の基本操作のうち、比較的マイナーながら汎用的に使える機能や小技を集めました。プラグインや複雑な設定が必要なものは含まれておらず、いずれも Vim と Neovim の両方で使うことができます。気になったものがあれば使ってみてください。 ノーマルモード編 検索結果を次々と置き換える Vim で文字列置換を行う最も有名な方法は :substitute コマンド (短縮形: :s) ですが、ノーマルモードの cgn というイディオムも便利です。これは c オペレータと gn テキストオブジェクト (:h gn) を組み合
本稿はNext.js v15.0.0-rc.0時点の情報を元に執筆しており、PPRはさらにexperimentalな機能です。v15.0.0のリリース時や、PPRがstableな機能として提供される際には機能の一部が変更されてる可能性がありますので、ご注意下さい。 Partial Pre-Rendering(以降PPR)はNext.js v14.0で発表された、SSRやSSGにならぶ新たなレンダリングモデルです。 PPRは前述の通り開発中の機能で、v15のRC版にてexperimentalフラグを有効にすることで利用することができます。ppr: trueとすれば全部のページが対象となり、ppr: "incremental"とすればexport const experimental_ppr = trueを設定したRouteのみがPPRの対象となります。 // next.config.mjs
Chrome の JavaScript はとても高速なことでも有名ですが、その実行エンジンは V8 と呼ばれます。V8 自体は独立したモジュールであり、Node.js 等にも使われております。 V8 が JavaScript を高速に実行する技術の一つが JIT (Just In Time) コンパイルです(一般的に JIT と呼ばれます)。これは、そのまま実行すると遅い JavaScript を実行中にリアルタイムに直接マシンコードに変換し(これが Just In Time と呼ばれる所以です)、途中からそのコードに入れ替えて実行することで高速化を達成しています。特に何度も実行される関数で効力を発揮します。 JIT という名前は聞いたことがあろうとも、実際に JIT がどのようなコードを実行しているのかを確認する機会は滅多にないでしょう。この記事では、実際に V8 の JIT の出力を確
2024年4月にリリースされたReact 19 Betaの新機能について、細かい点やポイントを解説します。
Ryan Dahl は Node.js の original author ですが、彼の作ったプロダクト deno に関するトークが jsconf.eu 2018 でありました。 Node.js にずっと関わってきた僕が見て非常に興奮するような話だったので、しばらくぶりにブログに書き起こすことにしました。 背景 Ryan Dahl は2009年に Node.js の話を初めて公の場に公開しました。その時の「公の場」というのが「jsconf.eu 2009」です。 www.youtube.com Video: Node.js by Ryan Dahl - JSConf.eu - 2009 この発表から Node.js が広まり、今やサーバのみならず、IoTデバイス、デスクトップアプリなど、様々なところで動作しています。 で、今回はその発表から9年の歳月が経過し、Node.jsに対しての設計不
イントロ さあ、やって参りました。 第1回Zig探訪のお時間です。 今回担当するのは、Zigを使い始めて早くも半年・永遠のニートことsmallkirbyです。 Zig探訪では、Zigの機能や特徴の中で面白いんじゃないかと思うものをピックアップして紹介していきます。 紹介しないこともあります。 第1回のテーマは、Zigの中でも特に重要なコンセプトであるcomptimeについてです。 Zigとは - Everything is Explicit Zigについておさらい 第1回ということで、最初に軽くZigについておさらいしておきましょう。 Zigは、2016年に開発が始まったコンパイル型汎用プログラミング言語です。 Rustが2015年に1.0リリースされた翌年に開発がスタートしたんですね。 最新のリリースはv0.12.0であり、大体1年くらいでマイナーアップデートされるようです。 まだ1.0
はじめに 半月ほど前に、ようやく自分の VPS 環境で動いているものすべてを kubernetes クラスタに移行しました。とても満足感が高くやって良かったと思っています。 ウェブサーバ、メールサーバ、Nostr のリレーサーバや Nostr/Bluesky/Twitter で動かしている各種 bot もすべて kubernetes です。 昨日は knative を導入したので、Go や Rust や Ruby や Python や、いろんな言語のクラウドネイティブアプリを簡単に実行できる様にしました。 knative 便利 残念ながら knative は helm パッケージとして提供されていません。ArtifactHub でそれっぽい物が公開されていますが、ほぼ手作業と変わりません。 おおよそ以下の手順でインストールできます。knative ではネットワークレイヤとして以下の3つが用
非同期処理1: ----->完了 非同期処理2: ----------->完了★全ての処理が終わったココで何かしたい! 非同期処理3: -->完了 利用例 ある画面で複数のAPIの非同期通信処理が必要で、全てのAPIレスポンスを取得した後に画面を更新したい (複数種類のAPIのレスポンスデータを取得後、UITableViewをreloadData()を1回だけ呼ぶ等) SDKでデータの取得処理が非同期になっており、for文で全ての複数データを取得してからデータ整形したい (Photos frameworkのrequestImageメソッド等) 実装例(並列①) 各非同期処理の開始時にstart、完了時にendを出力するプログラムです。 GCD(Grand Central Dispatch)のDispatchGroupを作成し、async(group:qos:flags:execute:)メ
いきなりまとめ 関数 用途 require 関数の引数のチェックに使う。 check 関数の引数以外のチェックに使う。 assert どこに使ってもよい。 実行時の VM 引数として -ea (-enableassertions) が必要。 背景 Kotlin には、引数として Boolean 型を取って、その引数が false であるときプログラムの実行を中止するような関数として require, check, assert の3つが存在する。本記事ではこれらの違いを述べる。 ついでにこれらの関数が何のために存在するのかも述べる。 "表明" という概念 プログラミングの重要な概念として「表明 (assertion)」という考え方がある。 ざっくり言うと、表明とは、プログラムの実行時に変数が満たすべき条件をコードとして表現することである。 たとえば「変数 i は負でない」とか「配列 a と
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く