実際、社内の別のサービスでもFluxというよりはEventEmitter+Data Cacheみたいな構成になっている
近年、世間ではリモートでスピーチをする機会が増加している。人前で喋ったことがあると経験があるのではないかと思うけど、テレビ会議ごしに話をすると目線が合わない、そもそも顔が見えないなどで反応がものすごく薄い。だんだんと慣れてきた感もあるけどやっぱり喋りづらい。技術による人間の疎外、これは仕方がないことですよ。 そうであれば解決するのも技術だ、というわけで作ってみたのがこちら(マイクの権限が必要です)。ブラウザの中から誰かがこちらを見てくれていて、話にうなずいてくれる。ただそれだけ。だけど、多数に向けたスピーチの際にうなずいてくれる人間の貴重さを知っている人には、このありがたさに共感してくれるのではないだろうか。 Vnodroid pixiv/three-vrm を使って3Dアバターヒューマノイドをブラウザ上に表示し、あたかもそこで自分の話を聞いているかのように存在させている。呼吸とまばたきを
昨年のはてなリモートインターン2021で講義を担当したフロントエンドブートキャンプ の資料をご覧頂いたことをキッカケに連絡を頂いて、マネーフォワードさんの社内勉強会でフロントエンドワークショップの講師を担当しました。 その際に使用したワークショップ資料について、マネーフォワードさんにも確認して、Scrapboxの以下のページに公開しました。 構成としては DOMとレンダリングパフォーマンス React入門ハンズオン フロントエンドツールチェインについて という3本立てになっています。 フロントエンドのモダン化を進める中で、普段の業務とは別にまとまった時間でチームメンバーにReactやフロントエンドに関するインプットをしたり手を動かしたりしたいというお話だったので、ハンズオン形式でReactで簡単なアプリケーションを作るハンズオンを中心としたワークショップ形式にまとめました。 はてなインター
Value Objectとは何であるか? マーチン・ファウラーのPatterns of Enterprise Application Architecture(PofEAA)やエヴァンス・エリックのDomain Driven Design: Tackling Complexity in the Heart of Software(DDD)が原典であるが、PofEAAではこう切り出している。 When programming, I often find it's useful to represent things as a compound. プログラミング時は物をcompound(合成物)として表現すると便利なことがしばしばある。 例えば2次元空間上での座標のように複数のメンバ(属性)を持つ物は便利である、と。しかしそれらを比較する方法は一意ではない、そこで Objects that a
CyberZのiOSチームでエンジニアをしている縣です。 OPENREC.tvの開発チームでは、DevOps及びSREの実践による生産性の向上を推進しています。 今回は、開発スピード改善の一環として導入したトランクベース開発について、実際にiOSチームで導入するにあたって行なった環境整備についてご紹介いたします。 トランクベース開発とはトランクベース開発とは、開発チームがバージョニングを使用して共同作業を行う際の開発手法の1つです。それぞれの開発者は作業を小さなバッチに分割し、その作業を1日に少なくとも1回(場合によっては数回)トランクにマージしていきます。従来のGitFlowやGitHubFlowにおける機能ブランチを用いた開発では、機能の開発完了までブランチでの作業が継続しますが、トランクベース開発ではそれとは対照的に、ブランチでの作業が数時間以内で完了するという特徴があります。
@1000ch です、今回は新しいメルカリ Web について書きます。この大きなプロジェクトのリリースは、多くの人の多大なる貢献によって成されたものです。そのプロジェクトの立ち上がりから今日まで、リードする役割でプロジェクトを見てきた一部始終を記録するべく書きます。 メルカリにおけるレガシーなソフトウェア ソフトウェアは生モノとよく言われますが、古くなったソフトウェアとどう付き合っていくかは、どの開発組織も抱えている、あるいはいつかはぶつかる課題なのではないかと思います。多くの方々に利用して頂くためには大規模なソフトウェア群を開発し運用する必要があります。しかし、はじめから全てを見越して完璧なアーキテクチャを構築するのは不可能であり、それをビジネスの成長に耐えうるものにソフトウェアを成長させていくのがエンジニアリングの責務です。 2013 年にスタートしたメルカリに於いても例外はなく、急速
Temporal Dead Zone とは ECMAScript 2015で採用された let/const のスコーピングの仕様をTemporal Dead Zoneと呼びます。 const x = "outer"; { const f = () => x; // console.log(f()); // => Error const x = "inner"; console.log(f()); // => "inner" } 4つの方式 Temporal Dead Zone という名前は、ブロックスコープ変数の挙動を決める際の4つの候補の名前に由来しているようです。 これはECMAScript 4が放棄されて間もない2008年10月のes-discussのログ[1]に言及があります。 A1. Lexical dead zone. References textually prior to
本記事は、TechFeed Conference 2022のセッション書き起こし記事になります。 イベントページのタイムテーブルから、その他のセッションに関する記事もお読み頂けますので、一度アクセスしてみてください。 本セッションの登壇者 セッション動画(YouTubeチャンネル登録もお願いします。) スライド資料へのリンク それでは「How useEvent would change our applications」というタイトルでReactのLTをさせていただきます。よろしくお願いします。 当初は「Is Suspense for Data Fetching Ready yet?」というタイトルのスライドにしていたんですけど、急遽「useEvent」というテーマが出てきて、こちらのほうがおもしろかったので差し替えました。こちらについても、本編のスライドの後にそのまま残してあるので、興味
はてなでは現在オウンドメディアのコンテンツ制作を行う編集者を募集中。具体的には何をしているの? 入社3年目の本多が紹介します。 オウンドメディアの編集支援を行っています こんにちは、はてな編集部の本多と申します。はてなで主に企業向けコンテンツマーケティング事業におけるコンテンツ制作を担当しています。普段は企業が運営するオウンドメディアの記事制作をしているはてな編集部ですが、週刊はてなブログの連載企画「編集部が気になるブログ」にも参加しています。 突然ですが、はてな編集部では現在、オウンドメディアのコンテンツ制作を行う編集者を積極募集中です! \積極募集中です/ 株式会社はてな|編集者 募集要項 ▶ 「まずは話を聞いてみたい」という方はこちらから そこで今回は、はてな編集部が具体的にどんなことをしているのか? また私が感じている、はてな編集部の魅力について、これまで私が担当してきたオウンドメ
Builtin Node.js Testing As of Node.js 18, which became stable in April 2022, you can test your backend code without installing any dependencies. This works because of the new node:test package, along with the existing node:assert package—which is from the very first releases of Node. Here's the tl;dr. First, write a script like this, naming it e.g., "test.js": import test from 'node:test'; import
bookmarkletをnpm scriptで簡単に作成できないか検討してみました。 前提 即時関数化 メインの話とはずれますが、 bookmarkletはglobal汚染してしまうので、即時関数化が必要です。 これはJS側に書いておくことにします。 (※即時関数もbookmarklet生成時に追加することは可能ですが、今回やってませんよという話。) ご参考) IIFE (即時実行関数式) - MDN Web Docs 用語集: ウェブ関連用語の定義 | MDN minify esbuildはtsでの利用も可能で軽量なのと、minifyオプションが付いていて簡単に1liner化できます。 今回は、これを利用することにしました。 npm script shellを書いてもよかったのですが、JSで完結したく、npm scriptでできないか検討しました。 当初 echo -n javascri
概要 この記事を書いている(2019/12/07)時点では、SQLBoilerに、Bulk Insert は実装されていません。 issueやPull Requestはいくつか上がっているようですが、内部に取り込まれる様子がありません。 おそらくその理由は、MySQL、Postgresなどの各種DBにうまく対応しつつ、Insertした複数のstructにIDを埋める、という用件を満たせないからだと推測されます。 (SQLBoilerでは、通常のInsertではInsert後にlast_insert_id を用いて、structのIDにマッピングするように実装されています) Bulk Insert が実装されていないORMは他にもあり、それらもほぼ同様の理由で導入が見送られていそうな気がします。 しかし、実務では、Bulk Insert を使いたい場面は多々発生します。 どうにかうまく、実現
よくKindleでセールやってる! 50%オフ! 50%ポイント還元! ということがあるけれど、全部無視して出版社のサイトでPDFを購入している。 DRMがかかっていない メールアドレスがPDFのページに刻印されたりはある 好きなリーダーで読める 自分の管理方法は後述 出版社に一番還元できる と勝手に思っている あたりが理由。 購入できるサイト O'Reilly Japan Ebook Store 一部EPUBやmobiもある Gihyo Digital Publishing … 技術評論社の電子書籍 EPUBもある 紙の書籍のおまけをここでダウンロードできたりもして便利 SEshop.com | 翔泳社の通販 定期的にセールをやっていて、最大で50%ポイント還元がある 紙の書籍も50%還元になることがあってびっくりする… 本文とは関係ないけど ILLUSTRATION 2022 のシリー
自己紹介 澤田 2018年新卒入社。新卒研修を経てAmeba事業本部に配属され、Amebaブログのバックエンド開発に従事。好きな言語はGoで、最近は静的解析に興味を持っています。 小野 2021新卒入社のバックエンドエンジニアです。現在はAmeba事業本部にてブログ刷新プロジェクトの開発に携わっています。 この記事について この記事は、先日行われたgolang.tokyo #32で発表した wrapmsg というlinterの話をもうちょっと深掘りする記事になります。 当日の資料はこちらです。wrapmsg — fmt.Errorf のメッセージに制約を — golang.tokyo #32は「自作ライブラリ、ソフトウェアGo自慢大会」というテーマで開催されました。作った物を発表する場があんまりないよね、ということで開催されています。 TL; DR wrapmsg は fmt.Errorf
// CommonJS Modules の場合 const fs = require("fs"); const fs = require("node:fs"); // ES Modules の場合 import fs from "fs"; import fs from "node:fs"; process のように、グローバル変数としても組み込みモジュールとしても提供されているAPIもあります。 global globalThisの別名です。Webブラウザでは window と self がglobalThisの別名として定義されていますが、Node.jsには window や self はなく、かわりに global が定義されています。 Buffer ArrayBuffer, TypedArray (Uint8Arrayなど), DataView はJavaScriptの標準機能です。
Node.jsのNative ESM対応は夢の機能ですが、夢を詰め込みすぎたせいかCJSからの移行を難しくしているポイントが依然として存在します。そのひとつが拡張子問題で、Node.jsのNative ESMではモジュールの拡張子を明示しなければいけなくなりました。 (これはWebブラウザの挙動に近づけるための判断だと考えられます。) 特にTypeScriptと他のツール (JestやWebpack) と組み合わせて利用している状態でのNative ESM化は実質的に未解決の状態だと言えます。本稿ではこの現状についてできる範囲で状況説明を試みます。 Node.jsの拡張子の扱い Node.jsはCJSとESMの2つのモジュールフォーマットをサポートしていますが、これらは単にパーサーが異なるだけではなく、実質的には「2種類の異なるモジュールシステムがFFIで繋がっている」程度には隔たりがあり
はじめに この記事には、Googleのオンサイト面接に向けて勉強した内容が記載されていますが、それらはすべて面接を受ける直前に書いておいたものです。このエントリを読むことで面接で聞かれた内容が予測されてしまわないようにそのようにさせていただきました。ご了承お願いします。 この記事について 令和元年に医師を退職し、ソフトウェアエンジニアに転職します。 自分にとって大きな転機であったのと、とても大変な道のりであったので、私という人間が辿った道筋を最初から最後までちゃんとまとめておきたいと思いこの記事を書くことにしました。 私のような他業種から未経験での転職を目指されている方にとっても、何らかの参考になる内容であれば幸いです。 私の生い立ち 私は小さい頃からテレビゲームが大好きで、学校から帰るとずっと家でゲームをしている子でした。あまりにもゲームが好きだったので、遊ぶだけではなく自分で作ってみた
プログラマーにとっては当たり前のが多いかも。みなさんのおすすめも教えてください。 マウスポインタを最大に どうせ死ぬまでパソコンで仕事するのだから、マウスポインタが見つからない時間とストレスは早めに潰した方がいいと思う。 キーリピートを最速に デフォルトのキーリピートはかなりのんびりしてて、人間が機械を待つことになって非効率。そうではなく、人間が最速にした機械についていくようにする。 ググればシステム環境設定の限界よりさらに速くする方法も見つかる。自己責任。 Dockを右に インストールしてるアプリがズラッと並んでるあれ。文字を入力する仕事をしているのだから画面の縦領域はできるだけ確保したいのに下に固定されるのがデフォルトなの信じられない感じがする。ついでに↑のように「Dockを自動的に表示/非表示」にチェックを入れるとマウスホバーの時以外は隠しておける。 SandS Space and
この記事では2022年03月28日~31日に開催された TC39 meeting 89th で議題に上がったプロポーザルを紹介します。 For Stage 4 For Stage 4 の提案はありませんでした。 For Stage 3 RegExp set notation + Unicode properties of strings Stage 3 に到達しました このプロポーザルは正規表現に新しくvフラグを導入し、その中で set notation と Unicode properties of strings を使えるようにします。 (翻訳するとしたら set notation は「集合の表記」、properties of strings は「文字列プロパティ」でしょうか。定訳がわからないのでこの記事ではこれらの用語を英語のまま表記します。) まず、set notation とは次
Looking for the (unrelated) GPU.zip side channel? Check it out here! 📣 Update: Our follow-up paper expanding the scope of Hertzbleed has appeared in the IEEE Symposium on Security and Privacy 2023. See details below. Hertzbleed is a new family of side-channel attacks: frequency side channels. In the worst case, these attacks can allow an attacker to extract cryptographic keys from remote servers
Bibiを単独のアプリとして使えるbi-epub-readerを作りました。 azu/bi-epub-reader: Standalone Epub reader using Bibi. Bibiはepub形式の電子書籍に対応したepubリーダで、bi-epub-readerはElectronでBibiをラップしたスタンドアローンなアプリケーションです。 mu-epub-readerなども作っていましたが、縦書きのepubファイルは対応していませんでした。 縦書きの表示を色々調べてみるとBibiが綺麗な表示だったので、単独で動くアプリケーションが欲しくなってbi-epub-readerを作成しました。 インストール The latest binaryをダウンロード アプリを開く ⚠️ このアプリは署名してないので、開くときに警告が出ると思います。 たとえば、macOSの場合は、次のような手
2022/06/15 Frontend LT回#7
Intro 2022/06/06 ~ 9 あたりに、長きに渡って策定作業が行われていた HTTP 関連の RFC が大量に公開された。 RFC 9110: HTTP Semantics RFC 9111: HTTP Caching RFC 9112: HTTP/1.1 RFC 9113: HTTP/2 RFC 9114: HTTP/3 RFC 9163: Expect-CT Extension for HTTP RFC 9204: QPACK: Field Compression for HTTP/3 RFC 9205: Building Protocols with HTTP RFC 9209: The Proxy-Status HTTP Response Header Field RFC 9211: The Cache-Status HTTP Response Header Field
CloudflareとAppleなどが協力して新しいDNSプロトコル「Oblivious DNS over HTTPS(ODoH)」を発表しました。ODoHを利用することで、これまでDNSリゾルバから確認できたクライアントの送信元IPアドレスを秘匿し、プライバシーを向上させることができます。 Improving DNS Privacy with Oblivious DoH in 1.1.1.1 https://blog.cloudflare.com/oblivious-dns/ Cloudflare, Apple and Fastly Create Improved, Private DNS https://www.webpronews.com/cloudflare-apple-and-fastly-create-improved-private-dns/ Oblivious DNS-ov
Everything Is Broken: Shipping rust-minidump at Mozilla – Part 1 For the last year I’ve been leading the development of rust-minidump, a pure-Rust replacement for the minidump-processing half of google-breakpad. Well actually in some sense I finished that work, because Mozilla already deployed it as the crash processing backend for Firefox 6 months ago, it runs in half the time, and seems to be mo
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く