タグ

ブックマーク / efcl.info (49)

  • Twitter/Blueskyの自己ポストの全文検索サービスをNext.js App Router(RSC)で書きなおした方法/設計/感想

    mytweetsという自分の Twitter/Bluesky の自己ポストの全部検索サービスをNext.js App Router(RSC)で書きなおしました。 mytweets は TwitterアーカイブBluesky の API を使って自分のポストを S3 に保存しておき、 S3 Selectを使って全文検索ができる自分専用の Twilog のようなサービスです。 自分の Tweets をインクリメンタル検索できるサービス作成キット と Tweets をまとめて削除するツールを書いた | Web Scratch 過去の Tweets を全文検索できる mytweets を Bluesky に対応した。自分用 Twilog みたいなもの | Web Scratch 最初は CloudFront + Lambda@Edge + Next.js Pages Router で動かし

    Twitter/Blueskyの自己ポストの全文検索サービスをNext.js App Router(RSC)で書きなおした方法/設計/感想
    t-wada
    t-wada 2024/02/27
    "Next.js App Routerをちゃんと使うとパフォーマンスが落ちにくいサイトを作れるフレームワークになっている" "一方で、ただ乗れば作れるという感じではなく、ちゃんと設計する必要はある" ものすごい情報量のエントリだ
  • CommonJSからES Modulesへの移行する方法。トップダウンかボトムアップか

    Secretlint v7でCommonJS からES Modulesへの移行を行いました。 Secretlint v7.0.0をリリースしました。Pure ESMへの書き直し この記事では、CommonJS(CJS)からES Modules(ESM)への移行を行った経緯と、移行する方法について紹介します。 CJSからESMへの移行は、率直に言えば単調な作業で、メリットが見えにくい作業です。 しかし、将来的にCJSよりもESMが主流になることは間違いないので、移行することは必要です。 移行の作業は、移行方法が決まれば大部分は機械的な書き換えが可能です。 では、実際にどうやって移行したのかを紹介します。 ESMへの移行の影響は依存元へと連鎖する Secretlintのリポジトリはmonorepoになっていて、だいたい40コぐらいのパッケージが含まれています。 そしてパッケージ間で依存関係があ

    CommonJSからES Modulesへの移行する方法。トップダウンかボトムアップか
    t-wada
    t-wada 2023/07/06
    CJSからESMに段階的に移行していく手法が丁寧に説明されていて素晴らしい。ESMの性質を考えると依存ツリーの葉側ではなく根側から移行するのが良い
  • 体の動きや音声入力でアプリケーションをハンズフリー操作したりプログラミングしたり文章を書いたりしてみる

    この記事は、体の動きとか音声入力でアプリケーションを操作したり、プログラミングをするにはどうすればいいかということをいろいろ実験してみた記事です。 この記事には、実用性があるものと現実的に使うにはトレーニングが必要なものが混在しています。そのため、そこまで期待してはいけません。 この記事は、TalonとmacOSの音声入力で書いたものを手作業で修正しています。 マイクはBlue Microphones Yeticasterを使いました。 きっかけ t_wadaさんが老眼について書いていたのが、この記事を書いたきっかけの一つです。 プログラマ35歳定年説はとっくに過去のもので、35歳を過ぎても能力も報酬も伸び続けるし、生涯現役プログラマのロールモデルとなる方も増えてきた。ただ諸先輩方から聞いた話をまとめると、ベテランプログラマの前に立ち塞がるのは「老眼」で、こればかりは当に恐ろしい。何か対

    体の動きや音声入力でアプリケーションをハンズフリー操作したりプログラミングしたり文章を書いたりしてみる
    t-wada
    t-wada 2021/08/13
    "人間が長時間プログラミングしたりPCを触ったりするには単一障害点となる体の部位(頭、目、指、手首、肩、腰など)が結構多くて その単一障害点をどうやって乗り越えるかっていうのに昔から興味がありました" すごい
  • #teppeis_sushi でクライアントサイドDDDについて発表した

    #teppeis_sushiというイベントで、Faao - ドメイン駆動設計で作るGitHub Issue Client -という話をしました。 Electronやブラウザなどで動くfaaoというGitHubクライアントを書いていてそれの技術的な話です。 クライアントサイドでDDDを取り入れた設計になっていて、その設計や規約の作り方やそれを守る方法についての話をしました。 azu/faao: Faao is a GitHub issue/pull-request client on Electron. Living Documentation by design, with Domain-Driven Design by Cyrille Martraire [PDF/iPad/Kindle]という無料から買える書籍では、ドキュメントとコードを同じ速度で成長させていくためにはドキュメントに対

    #teppeis_sushi でクライアントサイドDDDについて発表した
    t-wada
    t-wada 2017/07/05
    良い sushi でした。私は翻訳された技術書を読む際の注意点を LT しました。
  • 東京Node学園祭2016 アウトラインメモ

    東京Node学園祭2016に参加してきたのでメモ Demystifying JavaScript Engines - Alejandro Oviedo a0viedo/demystifying-js-engines: A list of resources about JavaScript engines 2006年のJavaScriptエンジン インタプリタ 遅い 最適化しても遅い Fortran、Self、Smalltalkの人がより良い方法を考えた (Source) -> Parse -> (bytecode) -> executionPhase <-> JIT Compiler 何度も実行するコードはJITコンパイラを通すようにした プロパティのアクセスの最適化、Hidden Classなど色々な最適化 Design Elements · v8/v8 Wiki evalとtry-c

    東京Node学園祭2016 アウトラインメモ
    t-wada
    t-wada 2016/11/15
    azu さんの充実のまとめ。講演準備等で参加できなかったセッションが多いのでありがたい。
  • アーキテクチャをめぐるたび

    タイトルに特に意味はありませんが、Alminを作る参考にしたものをまとめた感じの記事です。 スライド: 複雑なJavaScriptアプリケーションを考えながら作る話 リポジトリ: azu/large-scale-javascript: 複雑なJavaScriptアプリケーションを作るために考えること 主に書籍を並べていますがその他のスライドなどの参考資料は以下にまとめてあります。 large-scale-javascript/refs.md at master · azu/large-scale-javascript 自分用のメモなので、読んだ順で並べておきます。 右側の年は書籍の出た年です。 実践ドメイン駆動設計 @ 2013 一番最初に読んだDDD系の。 この辺ででてくるレイヤーとか用語を把握した感じ。 けど、そこまでよく分かってない感じはする。 カウボーイが出てくるの読みにくい。

    アーキテクチャをめぐるたび
    t-wada
    t-wada 2016/10/03
    ES6 spec editor の Allen Wirfs-Brock って『Object Design』の Rebecca の旦那さんだったのか!! (本筋とちょっと違うところに反応してしまった)
  • power-assert + babel as a development tool

    3行まとめ espower-babelは役目を終えたので、Deprecated Babel + power-assertはbabel-preset-power-assertを使う コード上はrequire("power-assert")とrequire("assert") どちらでもpower-assert化できるようになった espower-babelは非推奨へ Babel + Mocha + power-assertの組み合わせを出来るだけ設定ファイルなどを作らずに使えるespower-babelというモジュールを書いていましたが、役目を終えたので非推奨(deprecated)にしました。 テストコードをES6+power-assertで書けるespower-babel 3.0.0リリース | Web Scratch 理由としては、Babel@6からは設定(ファイル)を必ず必要とするの

    power-assert + babel as a development tool
    t-wada
    t-wada 2016/04/18
    最近のJS版power-assertについて。標準のassertのpower-assert化が可能になり、ライブラリから汎用の表明強化ツールへと進化しました
  • JSDocをランタイムassertに変換するBabelプラグインを書いた

    JSDocをassertに変換するライブラリとそれを使ったBabelプラグインを書きました。 azu/babel-plugin-jsdoc-to-assert: Babel plugin for jsdoc-to-assert. azu/jsdoc-to-assert: JSDoc to assert ライブラリのjsdoc-to-assertの方は、JavaScript ASTのコメントからassertの文字列を作り出すだけのシンプルなものです。 実際に使う場合は、Babelのプラグインとしてbabel-plugin-jsdoc-to-assertを使い、コードを変換してランタイムassertを追加させます。 やっていることとしては、FlowTypeをランタイムチェックするbabel-plugin-typecheckのJSDoc版とも言えます。 babel-plugin-typechec

    JSDocをランタイムassertに変換するBabelプラグインを書いた
    t-wada
    t-wada 2016/03/25
    これはすばらしいな
  • はてなブックマーク検索を作りながらFlux Utilsについて学ぶ

    facebook/flux 2.1.0からFlux UtilsというStoreなどの実装が含まれるようになりました。 今回Flux Utilsを使って、指定したアカウントのはてなブックマークを検索するウェブアプリを書いてみました。 azu/hatebu-mydata-search azu.github.io/hatebu-mydata-search/ mydataのAPIがCORS対応してないのでJSONProxyを挟んでます。(なのでブックマークデータが多いアカウント名は避けたほうが…) これを作ってみてFlux Utilsについて思ったことを書いていきます。 Flux Utilsの紹介ページに、Flux Utilsの解説が書かれています。 簡単にまとめると以下の4つのクラスがFlux Utilsとして提供されています。 Store ベースとなるクラス ReduceStore Store

    はてなブックマーク検索を作りながらFlux Utilsについて学ぶ
    t-wada
    t-wada 2015/08/25
    Flux Utils の記事ありがたやありがたや
  • power-assertを使ったDoctestツール power-doctestを書き直した

    今回power-doctestをシンプルなものへと作りなおしました。 rewrite simply by azu · Pull Request #11 · azu/power-doctest 1.0未満のバージョンはツール自体に変換したコードの実行=>レポート表示の機能があったのですが、そこを削除して変換のみを行うように書き換えました。 実行機能はやっぱりとても複雑で、Nodeだけでも結構制御が大変なので、単純にassertに変換して後は他のツールと組み合わせて実行できるような形がいいかなと思いました。 使い方 azu/power-doctest さきほども書いたように変換機能しかないのでライブラリとして使うのがいい気がしますが、単純なファイルを指定して変換するCLIの機能だけは入っています。

    power-assertを使ったDoctestツール power-doctestを書き直した
    t-wada
    t-wada 2015/08/13
    単機能の小さなモジュールに分けて綺麗な設計にするリファクタリング事例として読める。あと tagged-template-to-ast が超クールだ。
  • npmパッケージをExampleテストしよう

    自分がそう呼んでいるだけなので、正式名称があるのかよくわかりませんが、 あるライブラリを公開する際に、exampleディレクトリにそのライブラリを使って実際に動くサンプルコードを作って、それを実行するテスト というのを示しています。 Go言語のExampleと近いような気がします。 testing - The Go Programming Language 以下のスライドでも簡単に解説してますが、この記事はExampleテストのメリットやNodeモジュールでのやり方について書いていきます。 ロジック、E2E、描画、音、動画、Example、文章 - 色々なJSテスト Exampleテストの利点 以下は思いついたExampleテストの良いところですが、これについて簡単に解説します。 始めるのが簡単 実際に動くサンプルコードが作成できる ドキュメントの一部になる package.jsonの設定

    npmパッケージをExampleテストしよう
    t-wada
    t-wada 2015/07/29
    "ローカルモジュールを使うことで、サンプルコードからrequire("../lib/some")のような相対パスが不要になり (略) ユーザーがライブラリを使うのと同じようにrequire("some")と書くことができます" おーなるほど!
  • ブラウザ毎のリリースノートや実装状況はどこを見ればいいかをまとめました

    最近、Microsoft、Mozilla、GoogleAppleといったブラウザベンダーが積極的に情報を発信するようになったのもあって、公式の情報でもどこを見ればいいのかがわからないという状況が起きてる気がします。 (主にSNSで流れてくるものを見るのがメインストリームになってるので、そういうことを気にしなくなったというのもあると思いますが) なので、ブラウザ毎にリリースノート(Changelog)、実装状況、公式のブログ、バグ報告の場所などをまとめました。 azu/browser-javascript-resource 更新がしやすようにGitHubのREADMEとして置いてるので、継続して見たい人はWatchをするなり、付け足したい情報や訂正したほうがいいものはPull RequestやIssueを送ってくださるといいと思います。 まとめてみると、Microsoft Edgeは一

    ブラウザ毎のリリースノートや実装状況はどこを見ればいいかをまとめました
    t-wada
    t-wada 2015/07/21
    "ブラウザ毎にリリースノート(Changelog)、実装状況、公式のブログ、バグ報告の場所などをまとめました" すばらしすぎる仕事
  • #cto_sushi でChangeLogを追う技術、Sitespeed.io、DDDなどの話をした

    #cto_sushiでChangeLogやIssueを追う技術、reftest、GitHubスパムなどについて話してきた。(この中に現在CTOはいなかった気がします) ログ: #cto_sushi - Togetterまとめ 久々に をべるSushiイベントだった気がします。 これからの Web について真剣に議論している。 #cto_sushi pic.twitter.com/c3xXrkasVi — Jxck (@Jxck_) May 26, 2015 #cto_sushi pic.twitter.com/oAts18i7O3 — Yosuke FURUKAWA (@yosuke_furukawa) May 26, 2015 クリップボード API - kyo_ago 机が埋まる前にLTスタート。 クリップボードについて kyo_ago #cto_sushi — azu (@azu_

    #cto_sushi でChangeLogを追う技術、Sitespeed.io、DDDなどの話をした
    t-wada
    t-wada 2015/05/27
    #cto_sushi のまとめ "追いやすいChangeLogがわかると、読みやすいChangeLogを書くことができるのではないか" なるほどと思う
  • テストコードをES6+power-assertで書けるespower-babel 3.0.0リリース

    ライブラリをES6で書いて公開する所から始めよう | Web Scratchで紹介してたazu/espower-babelをアップデートして3.0.0をリリースしました。 espower-babelはBabelの変換 + power-assertの変換を一緒にやってくれるライブラリです。 簡単に言うとES6でテストコードを書いてMochaで動かすのを設定ファイル等を作らないで出来るようにするためのライブラリです。 詳しくは以下の記事を見て下さい ライブラリをES6で書いて公開する所から始めよう | Web Scratch 追記(2016-04-15): espower-babelは非推奨で、.babelrcで直接power-assertを利用するのを推奨しています。 詳しくは次の記事を見てください・ power-assert + babel as a development tool |

    テストコードをES6+power-assertで書けるespower-babel 3.0.0リリース
    t-wada
    t-wada 2015/05/11
    最高のソリューションだ
  • npmで名前空間を持ったモジュールを公開する方法(scoped modules)

    npmにモジュールを公開することは多くなってると思いますが、今までのnpmだと名前は早い者勝ちでした。 最近npm Private Modulesというprivateで扱えるモジュールを有料でサポートしましたが、これはscoped modulesをprivateで扱う時だけ有料でpublicで公開する時は無料で行えます。 scoped modulesというのは、@username/project-name という感じで、@ユーザー名がパッケージ名に入るので異なるユーザー間では重複しません。 The npm Blog — solving npm’s hard problem: naming packages 公開手順 実際にscoped modulesをpublicに公開する手順としては、 npm init --scope=<npmユーザ名> パッケージの名前が@<npmユーザ名>/パッケー

    npmで名前空間を持ったモジュールを公開する方法(scoped modules)
    t-wada
    t-wada 2015/05/07
    npm 名前空間問題に対する一つの解だな
  • ECMAScript 6ドラフトのDiff検索用リポジトリを作った

    タイトルから何を言ってるのか意味わからない気がするので順を追って解説。 スライド版: ECMAScript 6 Draft Hisotry Repo 2015-05-07現在、ES6の仕様はApril 14, 2015 Rev 38 Final Draftが公開されています。 Rev38とわかるようにドラフトは38回ぐらい更新されていて、ちょっとづつ追記されたり変更されたりして結構な変更履歴があります。 Growing #ECMAScript 2015(ES6) Drafts :) pic.twitter.com/tV60cjdmM8 — azu (@azu_re) May 3, 2015 これだけ長い間(4年ぐらい?)やってるとある時点では正しかったかもしれないけど、最終版では違うものになってるという挙動があったりします。 例えば、class構文で以下のようにして定義したmethod()

    ECMAScript 6ドラフトのDiff検索用リポジトリを作った
    t-wada
    t-wada 2015/05/07
    うおおすごい
  • ある要素が表示されるまで待つJSライブラリを書いた(MutationObserver)

    使い方 waitForElement(selector, [timeout]) という感じで使います。 waitForElement()はPromiseを返すので、見つかったthenで登録したコールバックが呼ばれて、見つからなかったらcatchが呼ばれるという感じです。 Promiseについて詳しくはJavaScript Promiseのを見てください /** * Wait until an element that is matched the selector is visible. * @param {string} selector the css selector * @param {number} timeout the timeout is millisecond. default:2000ms * @returns {Promise} */ var waitForElem

    ある要素が表示されるまで待つJSライブラリを書いた(MutationObserver)
    t-wada
    t-wada 2015/04/06
    このライブラリ便利そう。そしてブラウザ側テストで power-assert を使う際に bower でも npm でも使えるようにした効果が出てきた
  • #error_handling_sushi でPromiseのエラーハンドリングについて発表した

    #error_handling_sushiJavaScriptのエラーハンドリングについて議論した。 自分はPromiseのエラーハンドリングの握りつぶしの問題を見つけやすくするイベントの実装について、Promise Error Handlingという話をした。 ログ: #error_handling_sushi - Togetterまとめ #error_handling_sushi 始まった #寿司とは pic.twitter.com/XZe21QTsDO — Takuto Wada (@t_wada) March 6, 2015 – 基調講演 - teppeis これが #error_handling_sushi pic.twitter.com/vSLDpthYi4 — azu (@azu_re) March 6, 2015 #error_handling_sushi 基調講演 一

    #error_handling_sushi でPromiseのエラーハンドリングについて発表した
    t-wada
    t-wada 2015/03/09
    現時点の JavaScript (クライアント/サーバ両方含む) におけるエラーハンドリング設計について議論できる濃いイベントでした
  • [2015-02] 最近のJavaScript AST標準化の動き

    以前書いた記事からのどんな感じの動きがあったのかまとめたものです。 最近気になったJavaScript AST周りの動き | Web Scratch 前回の記事 2015年の1月前後の内容が中心です。 前回のに比べ、JavaScriptのエコシステムの根幹でもあるパーサやASTの仕様まわりについての動きが最近活発なので、その辺を中心にまとめています。 RReverser RReverserさんはここ最近のJavaScript ASTに関係するところならどこでもみかけると思うので紹介。 主にacornのコミッターでもありますが、後ほど出てくるESTreeやBabelなど色々なところで活動しています。 またasterというASTの効率的に処理できるツールチェインを出したりしています。 AST周りでよく見る人やパーサをいかにまとめてあります。 JavaScript AST Links. esto

    [2015-02] 最近のJavaScript AST標準化の動き
    t-wada
    t-wada 2015/02/26
    とても充実したエントリ。 Esprima が jQuery Foundation に移管されたこと、そして SpiderMonkey API が ESTree プロジェクトとしてコミュニティ主導で整理されることの意義はとても大きいな。
  • Promise本が中国語と韓国語に翻訳されました

    タイトル通りJavaScript Promiseの中国語と韓国語の翻訳がそれぞれリリースされました。 中国語版 中国語の翻訳は以下から見ることが出来ます。 JavaScript Promise迷你书(中文版) liubin/promises-book オリジナルと同じAsciidoctorを使ってGitHubにて公開しています。 @liubinさんが中心となって翻訳されました。 韓国語版 韓国語の翻訳は以下から見ることが出来ます。 [한빛미디어 eBook] JavaScript Promise - eBook & DRM-free hanbit.co.krという韓国電子書籍のプラットフォームにて無料で公開されています。 JSer.infoの韓国語訳もやってくれているU-Yeongさんが翻訳されました。 中国語、韓国語の翻訳が殆ど同時にリリースされたのは驚きと共にとても嬉しいです。

    Promise本が中国語と韓国語に翻訳されました
    t-wada
    t-wada 2015/02/06
    おおおお凄い!