並び順

ブックマーク数

期間指定

  • から
  • まで

81 - 120 件 / 427件

新着順 人気順

localStorageの検索結果81 - 120 件 / 427件

  • ブラウザとNode.jsで動く1kBのキーバリューストレージライブラリを書いた

    azu/kvsというブラウザとNode.jsで動くファイルサイズが小さいキーバリューストレージを作りました。 モチベーション ファイルサイズが小さくIndexedDBを使っていて、Node.jsでも透過的に同じAPIで利用できるライブラリが必要となったため作りました。 textlint-editorというアプリを書いていて、キャッシュストレージとしてlocalstorage-ponyfillを使っていました。 しかし、localstorage-ponyfillはブラウザとNode.jsで透過的に動くストレージライブラリですが、LocalStorageベースとなっています。 textlint-editorでは、スクリプトをWeb Workerで動かすため同期的なAPIであるLocalStorageは利用できません。 そのため、IndexedDBベースでシンプルなキーバリューストレージを扱える

      ブラウザとNode.jsで動く1kBのキーバリューストレージライブラリを書いた
    • 多言語化対応における TypeScript の型定義を通して開発のしやすさについて考えた - SmartHR Tech Blog

      こんにちは、SmartHR でプロダクトエンジニアをしている @nabeliwo です。 今年の9月に SmartHR のログイン後のホーム画面がリニューアルされました。 【9/21更新】新しいホーム画面を公開しました | SmartHR|シェアNo.1のクラウド人事労務ソフト この記事では、新しいホーム画面の実装の中で、開発者体験を損なうことなく多言語化対応を進められるよう、TypeScript の型定義を工夫した話をします。 まだまだ改善の余地がある状態ではあるのですが、私達のチームでの試行錯誤が読んでくれた方の参考になれば幸いです。 SmartHR の多言語化対応 SmartHR の既存のページではすでに WOVN.io というツールを使った多言語化対応が行われていました。 ただ諸々の理由があり1、新しいプロダクトでは自前で翻訳の仕組みを用意していこうとしています。 実際に、Smar

        多言語化対応における TypeScript の型定義を通して開発のしやすさについて考えた - SmartHR Tech Blog
      • モーダルの開閉状態を URL で管理する

        よくあるモーダルの実装について考えてみましょう。モーダルは名前のとおり、現在開いているか閉じているかの状態(モード)があります。状態を管理するときには、React の useState フックを利用する方法がまっさきに思い浮かぶのではないでしょうか? import { useState } from "react"; import Dialog from '@ui/components/Dialog'; import Button from '@ui/components/Button'; const App = () => { const [isOpen, setIsOpen] = useState(false); return ( <> <Button variant="outlined" onClick={() => setIsOpen(true)}> Open dialog </B

          モーダルの開閉状態を URL で管理する
        • Auth TokenをlocalStorageに入れようが、cookieに入れようがどっちもXSS危険性には無防備(同ドメイン内なら ...) - Qiita

          Auth TokenをlocalStorageに入れようが、cookieに入れようがどっちもXSS危険性には無防備(同ドメイン内なら ...)JavaScriptcookieJWTxsstoken tokenを保存する場所 localStorage cookie cookie (http only) メモリ内 (変数) よく言われるのが JWT tokenをlocalStorageに入れるべきではない ということ。 理由としてはJavascriptで簡単に読めてしまうので、XSSがあった場合意図しないスクリプトを動かされてしまい、結果としてtokenが盗まれるというもの。 対応策として cookie (http only) を色んな所で推奨してる。 https://techracho.bpsinc.jp/hachi8833/2019_10_09/80851 http://cryto.net

            Auth TokenをlocalStorageに入れようが、cookieに入れようがどっちもXSS危険性には無防備(同ドメイン内なら ...) - Qiita
          • Sentry で IP アドレスの収集をやめる - mizdra's blog

            @sentry/browser を使うと、ブラウザでエラーが発生した時にそのエラーを Sentry の集計サーバに送信して記録してくれます。送信されたエラーはエラーの種類ごとに Issue という単位にグルーピングされ、Issue ごとに何件発生しているのか、何人のユーザで発生しているのか、過去2週間にどれぐらいのエラー数の増減があったのか、などと簡潔に表示してくれます。便利ですね。セットアップも非常に簡単で、十数行程度のセットアップコードを書くだけで使い始めることができます。 エラーが Issue ごとにグルーピングされている様子。画像は https://docs.sentry.io/product/issues/ から引用。 IP アドレス の収集をやめる ところでこのエラーが発生したユーザ数 (画像の USERS のカラムの部分) なのですが、デフォルトではエラーの送信元の IP ア

              Sentry で IP アドレスの収集をやめる - mizdra's blog
            • 「Chrome 79」に不具合、他アプリのデータに影響--配布を一時停止

              Googleのブラウザ「Chrome」のAndroid版を最新のバージョン79にアップデートすると、他のアプリのデータが表示されなくなったという報告があがっている。この問題は、「WebView」技術を利用する一部のAndroidアプリに影響する。同社はこれを受けてAndroid向けのChrome 79の配布を停止し、修正版のテストを先週末に開始した。 しかし、修正そのものは完璧ではない。Googleは、古いデータへのアクセスを復旧するか、ユーザーが作成したかもしれない新しいデータを維持するかの選択に迫られた。パッチは、古いデータへのアクセスを復旧するもので、一部のユーザーは再度データを失う可能性があることを意味する。 Googleは、この最新版Chromeを50%のユーザーに配布済みだと、開発者らはバグレポートに関するディスカッションで述べたが、そのインターフェースがどれだけ広範囲で使用さ

                「Chrome 79」に不具合、他アプリのデータに影響--配布を一時停止
              • React Architecture: How to Structure and Organize a React Application

                There is no consensus on the right way to organize a React application. React gives you a lot of freedom, but with that freedom comes the responsibility of deciding on your own architecture. Often the case is that whoever sets up the application in the beginning throws almost everything in a components folder, or maybe components and containers if they used Redux, but I propose there's a better wa

                  React Architecture: How to Structure and Organize a React Application
                • Building secure web apps using Web Workers | Mercari Engineering

                  Security is paramount for our users, and we at mercari strive to provide a snappy and safe platform. We recently introduced an additional layer of defence by adding Web Workers to secure the access token. It now protects the users from various kinds of attacks, including token theft from Cross Site Scripting (XSS), Cross Site Request Forgery (CSRF), prototype pollution, zero-day npm package vulner

                    Building secure web apps using Web Workers | Mercari Engineering
                  • Rust/ActixWeb + React/Next.js で GraphQL を使ってビデオチャットアプリを構築してみた

                    今回、GraphQLバックエンドの構築にはAsync-graphqlを使用しています。 RustのGraphQLライブラリとして、もうひとつ有名なJuniperも存在しますが、 Async-graphqlの方が機能が豊富で、実現できる仕様の幅が広いです。 また、不具合が非常に少なく、この手のライブラリを使用する際に稀に発生する、 「ライブラリの不具合を回避するためのハック的な実装」みたいなものは今回一切必要ありませんでした。 このライブラリの使い勝手がよかったがために、 ミニマムに抑えようとしていたアプリ機能が少し大きくなった気がします。 ■ セッション管理について 本アプリにおいてセッションの管理は、一般的なWebアプリに用いられるものと同じ、 サーバーでセッションデータを保持し、紐づくセッションIDをクライアントのCookieに保存する方式をとっています。 この手のアプリ構成において、

                      Rust/ActixWeb + React/Next.js で GraphQL を使ってビデオチャットアプリを構築してみた
                    • 各種WebAPIの簡単な使い方と、組み合わせで実現する新たな体験・可能性を考える

                      2020年2月1日、「PWA Night CONFERENCE 2020」が開催されました。Web体験を進化させる、新しいWeb開発コンセプト「PWA」をテーマに、Web開発に携わるエンジニアたちが集まった本イベント。プレゼンテーション「Webでできる体験を考える会」に登壇したLINE株式会社の折原レオナルド賢氏は、既存のWebAPIを用いてできることや実現できるユーザー体験について、自身の経験や今回の発表に際して行った検証結果を用いて紹介しました。講演資料はこちら Webでできる体験を考える 折原レオナルド賢氏:それでは「Webでできる体験を考える会」ということで始めたいと思います。去年の今頃、こんな記事を書かせていただきました。 もしかしたらこれによって今回呼んでもらったのかなと思いますので、この話の内容も含めていろいろ「Web APIってどういうもの?」という発表をしていきたいと

                        各種WebAPIの簡単な使い方と、組み合わせで実現する新たな体験・可能性を考える
                      • Apollo Server と Apollo Client を写経しながら GraphQL を学べる「初めての GraphQL」を読んだ - kakakakakku blog

                        2019年11月に発売された「初めての GraphQL」を読んだ.1度ザッと読んだ後に,気になっていた Apollo Server と Apollo Client の実装を写経しながら理解を深めていたため,書評をまとめるのに少し遅れてしまった. タイトルに「初めての」とある通り,GraphQL 初学者をターゲットに網羅的に学ぶことができる1冊だった.特に「背景 → クエリ → スキーマ → リゾルバ → クライアント → 実戦投入」という流れは素晴らしく,一言で表現すると「知りたい!を知れる本」かなと!5章と6章は時間を取って写経するのが良いと思う. 初めてのGraphQL ―Webサービスを作って学ぶ新世代API 作者:Eve Porcello,Alex BanksオライリージャパンAmazon 目次 1章 : GraphQLへようこそ 2章 : グラフ理論 3章 : GraphQLの問

                          Apollo Server と Apollo Client を写経しながら GraphQL を学べる「初めての GraphQL」を読んだ - kakakakakku blog
                        • WYSIWYGエディターの状態抽象化とReactとのつなぎ込み - 良いクロスブラウザエディターを目指して | Wantedly Engineer Blog

                          まえがきブログや記事を投稿するWebサービスには、殆どの場合、リッチなエディター機能が備わっています。特に、記事を見た目通りに書けるエディターは、WYSIWYGエディターと呼ばれ、記事を書く際には欠かせない機能の一つです。 Wantedly にもストーリーと呼ぶ記事を投稿する機能があり、その記事投稿部分では、WYSIWYGエディターを実装しています。 では、どのようにWYSISYGエディターを開発していくのでしょうか。この記事では、エディターの機能を実際に開発するための基礎知識と実装について書いていきます。 今回話すエディターについて今回記事で指すエディターとは、 WYSIWYGエディターを想定しています。例えば、Dropbox Paper や google docs、Medium、Note などのエディターがそれに該当します。Qiita や Zenn のような 2カラムの Markdow

                            WYSIWYGエディターの状態抽象化とReactとのつなぎ込み - 良いクロスブラウザエディターを目指して | Wantedly Engineer Blog
                          • モダンなJavaScript/TypeScript実行環境「Deno」

                            class: middle, center <img src="./assets/logo.svg" align="center" width="200" /> モダンな JavaScript/TypeScript 実行環境 Deno --- class: middle, center 「Deno」 聞いたことありますか? 🙋‍♀️ 🙋‍♂️ --- class: middle, center 「Deno」 使ったことありますか? 🙋‍♀️ 🙋‍♂️ --- class: middle, center 今日は Deno を 「聞いた事ない」 ~ 「触った事はある」 ぐらいの人向けの話をします --- # 話す人 <img src="./assets/hinosawa.jpg" align="right" width="300" /> 日野澤歓也 twitter @kt3k Web

                              モダンなJavaScript/TypeScript実行環境「Deno」
                            • PHPカンファレンス2022にてSPAセキュリティ超入門の話をします

                              今年もPHPカンファレンスにてトークさせていただくことになりまして、以下のようなお話をいたします。 日時:9月25日(日) 14:40〜15:40 場所:大田区産業プラザPiO  および YouTube 費用:無料 講演タイトル:SPAセキュリティ超入門 申し込み: connpass アジェンダ: SPA(Single Page Application)の普及が一層進んでおり、従来型のMPAを知らないウェブ開発者も生まれつつあるようです。SPA対応のフレームワークでは基本的な脆弱性については対策機能が用意されていますが、それにも関わらず、脆弱性診断等で基本的な脆弱性が指摘されるケースはむしろ増えつつあります。 本セッションでは、LaravelとReactで開発したアプリケーションをモデルとして、SQLインジェクション、クロスサイトスクリプティング、認可制御不備等の脆弱性の実例を紹介しながら

                                PHPカンファレンス2022にてSPAセキュリティ超入門の話をします
                              • SWR v2 をリリースしました

                                メンテナとして関わっていた SWR v2 がリリースされましたので紹介したいと思います。 各機能の細かい紹介については、リリースブログを確認してください。日本語翻訳も行ったので日本語で読むこともできます。 https://swr.vercel.app/ja/blog/swr-v2 ここでは、ざっくりと補足を書きたいと思います。 Mutation 周り useSWRMutation 一番わかりやすいのは、新しい useSWRMutation という Hook が追加されたことです。swr/mutation から import できます。 import useSWRMutation from 'swr/mutation' async function sendRequest(url, { arg }) { return fetch(url, { method: 'POST', body: JS

                                • ブラウザ内でバイナリを圧縮してコードやlocalStorageに埋め込む

                                  JS で wasm のダウンロードや TypedArry を通じた操作をやってると、コード内や localStorage にバイナリを埋め込みたいときがあります。 考え方 JS の内部エンコーディングは UTF16 と決められているので、UTF16で表現可能な範囲を1文字として、バイナリをインライン化すればサイズが小さくて済むはず Chrome は CompressionStearm でブラウザ内で deflate できるので、あれば圧縮する https://chromestatus.com/feature/5855937971617792 Chrome ではない場合、deflate 処理は飛ばしてそのまま。localStorage の読み書きなら途中でブラウザ自体のサポート増える/消えるなどしない限り一貫性は取れる 今回はやってないが、インラインJSに埋め込む場合、50kb を超えたあた

                                    ブラウザ内でバイナリを圧縮してコードやlocalStorageに埋め込む
                                  • Reactのフォームをコントロールしたときのデメリットを考える

                                    公式では制御されたコンポーネントを推奨し、<input type="text" value={this.state.value} onChange={this.handleChange} /> のように onChange を使って更新、value に state を入れて制御するようにしているのですが、推奨は言いすぎではと思っていることについて書きます。 「公式のここがおかしいのではないか」という問いかけはだいたい自分が間違っているだけという場合がほとんであることは自覚していますので、もし間違っていたら """優しく""" 指摘してくれると嬉しいです。 React は制御されたコンポーネントを推奨している まず制御されたコンポーネントについて、公式の定義をみましょう。 HTML では <input>、<textarea>、そして <select> のようなフォーム要素は通常、自身で状態を保

                                      Reactのフォームをコントロールしたときのデメリットを考える
                                    • 真にチラつかないダークモードをついに実現したぞ。実現方法と気付きを書く | stin's Blog

                                      真にチラつかないダークモードをついに実現したぞ。実現方法と気付きを書く2024/07/14 14:36 nextjsreact このサイトはダークモードに対応しています。なぜならダークモードは基本的人権だからです(要出典)。 しばらく、サイトに訪問した直後ライトモードとダークモードが切り替わってチラつく現象が発生していました。これを改善したので、実装方法と気付いたことを残しておきます。 ダークモードの実装方法一般に、ダークモードの実装方法は3タイプあります。 OSによるモード設定を反映する メディアクエリー@media (prefers-color-scheme: dark)を使うと、OS側でダークモードを指定している時だけ有効になるスタイルを書くことが出来ます。 JavaScriptでも判定が必要な場合はmatchMedia("(prefers-color-scheme: dark)")

                                        真にチラつかないダークモードをついに実現したぞ。実現方法と気付きを書く | stin's Blog
                                      • UI = f(statesⁿ)

                                        “UI is a function of state” is a pretty popular saying in the front-end world. In context (pun intended), that’s typically referring to application or component state. I thought I’d pull that thread a little further and explore all the states that can effect the UI layer… First-party application states Every application whether it’s a to-do list or a shopping cart or some radically complex app wil

                                        • About the sqlite3 WASM/JS Subproject

                                          WebAssembly, a.k.a. WASM, is a standard defining a low-level programming language suitable (A) as a target for cross-compilation from many other languages and (B) for running via a virtual machine in a browser. Designed with scriptability via JavaScript in mind, it provides a way to compile C code (among others) to WASM and script it via JavaScript with relatively little friction despite the vast

                                          • Reactのコードを打ち込むタイピングゲームを作った話&個人開発の流れ

                                            はじめに 自己紹介 こんにちは、株式会社ソーシャルPLUSのフロントエンドエンジニア @zomysan です。 ソフトウェアエンジニアとしての経験は10年と少しで、趣味は個人開発と食べることです。直近では Discord の読み上げ Bot「shovel」のWebインターフェイス(マイページ)機能・有償プランなどを作りました。 この記事について 個人開発でタイピングゲームを作ったので、それについて前半・後半に分けて話します。 前半では作ったタイピングゲームの技術選定の理由や 何を大事にして作ったのか? ということを紹介します。 後半は今回の開発を実例として、私が開発をするときの進め方について紹介します。誰にでも合うものではないかもしれませんが、少しでも参考になれば嬉しいです。 ゲームの紹介 tstt で遊びながら学ぼう! TypeScript Touch Typing 略して tstt と

                                              Reactのコードを打ち込むタイピングゲームを作った話&個人開発の流れ
                                            • microCMSのWebフロントエンドにクリーンアーキテクチャを採用した話【後編】

                                              はじめに こんにちは、森茂です。 先日公開したmicroCMSのWebフロントエンドにクリーンアーキテクチャを採用した話【前編】に引き続き、今回は後編として前編で紹介させていただいた構成にあわせて、実際にどのような実装とチームへの浸透を行っていったかについて紹介いたします。 なお、記事内に記載している仕様、ソースコードは説明用として省略や変更、部分的な引用を行っています、実際のサービスとは異なる箇所もある点をあらかじめご了承ください。 前編より 前編ではmicroCMSのフロントエンドアーキテクチャをどういった背景、構成で採用したかを紹介しました。実装の段階に進むにあたっては、その中でもとくに責務(関心)の分離と負担なく開発を進めことができるかを意識することにしました。 また、前編でも紹介の通り、クリーンアーキテクチャという概念に振り回されないことも重要と考えています。完璧な設計を求めるこ

                                                microCMSのWebフロントエンドにクリーンアーキテクチャを採用した話【後編】
                                              • 2023年のプロダクトセキュリティを振り返る【各業界の開発・セキュリティエンジニア13人に聞く(前編)】 - #FlattSecurityMagazine

                                                プロダクト開発・運用の現場では2023年のセキュリティ関連のトピックをどう受け止めているのか、また、今後のセキュア開発に関する潮流をどう予測しているのか。様々な業界で活躍する開発エンジニア・セキュリティエンジニアの方々13人に見解を伺いました。 今回は、「2023年のプロダクトセキュリティを振り返る」というテーマでお届けします! <13人の方々による「2024年セキュリティトレンド予想」> flatt.tech 今回コメントをいただいた方々 CADDi CTO 小橋昭文さん サイボウズ Cy-PSIRT Finatextホールディングス 取締役CTO/CISO 田島悟史さん Google 小勝純さん グラファー 森田浩平さん IssueHunt 取締役 CTO Junyoung Choiさん カンム 金澤康道さん メルカリ IDP team kokukumaさん メルカリ Product

                                                  2023年のプロダクトセキュリティを振り返る【各業界の開発・セキュリティエンジニア13人に聞く(前編)】 - #FlattSecurityMagazine
                                                • JavaScript performance beyond bundle size

                                                  23 Feb JavaScript performance beyond bundle size Posted February 23, 2021 by Nolan Lawson in performance, Web. 8 Comments There’s an old story about a drunk trying to find his keys in the streetlight. Why? Well, because that’s where it’s the brightest. It’s a funny story, but also relatable, because as humans we all tend to take the path of least resistance. I think we have the same problem in the

                                                    JavaScript performance beyond bundle size
                                                  • RubyKaigi 2024 のサイネージについて

                                                    今月中旬に沖縄県那覇市で RubyKaigi 2024 を開催した。COVID-19 対応をしていた RubyKaigi Takeout 2020, RubyKaigi Takeout 2021, RubyKaigi 2022, RubyKaigi 2023 とは異なり、今回は配信を伴わないオフラインのみの開催だった。 わたしは Organizer の一人として Sponsor Relations 業などをしつつ、Wi-Fi の支度をしたり、サイネージの支度をしたりしていた。Wi-Fi の話はこれまでもいくつか書いている のでまた今度として、今回はサイネージの話をかきます。 RubyKaigi ではいくつかのサイネージの映像を用意して会場のあちこちに表示している。各セッション会場の横に添えて字幕やチャット, LT タイマーを流すサブスクリーン、お知らせやセッション案内を廊下に設置したモニタ

                                                    • Astro でクライアント側の処理を書いたら辛かった

                                                      画像は明日トロに見せかけた昨日トロだ。iPhone の謎のカメラ設定使ってみた。この OGP を作るために昨日大急ぎで閉店前にくら寿司に駆け込んだ。びっくらポンは全部外れた。 古来よりゲームの攻略ツールを作ることでプログラミングができるようになるとある。そのような期待を持ち、paimon.moeで満足できなくなった私は原神の TODO リストを最近作り始めた。原神はリポップの時間がイベントやアイテムでバラバラなのでそれを管理するためのツールだ。iOS 向けの Push 通知のサンドボックスだったり、OSS として公開して yaml で入稿する口を用意することで自分でセルフホストして自分に都合の良い TODO リストを作れるようにもしようとしていた。が、技術選定を間違えたなと思っていま作り直している。その間違いについて書く。 原神は去年の11月くらいからすっかりハマっている。 FYI: ht

                                                        Astro でクライアント側の処理を書いたら辛かった
                                                      • typeorm + absurd-sql on Browser のロマン構成

                                                        ロマン構成が動いたので紹介します。 コード: https://github.com/mizchi/absurd-sql-example-with-typeorm デモ: https://heuristic-perlman-94f8f4.netlify.app tldr Steam の某クリッカーゲームをやってたら放置ゲーでも作りたい気分になってきた。 複雑なデータを管理するならブラウザ内に本物の sqlite を持ってきたい sqlite は持ってこれたけど TS の中で 生 SQL 書くのがだるかった(補完支援がない)ので ORM でラップしたい Typeorm + absurd-sql の構成を試したら色々大変だったけど動いた つまりブラウザでこのコードが動く。 // ... @Entity() class User { @PrimaryGeneratedColumn() id: nu

                                                          typeorm + absurd-sql on Browser のロマン構成
                                                        • 写真選択アプリをリリースしました!【個人開発】 - Qiita

                                                          写真選択アプリをリリースしました! https://奇跡の一枚.app いい写真を選んでもらうサービスです。写真を選んでもらうとメールにいい写真が届きます。 課金をすることで特定のユーザに選択してもらうことができます(予定) ソースコードです <template> <v-row> <v-col class="text-center"> <h1><img src="favicon.ico">奇跡の一枚<img src="favicon.ico"></h1> <p>マッチングアプリに<br>最高の一枚をアップしよう!</p> <img src="https://i.imgur.com/20HA0mE.png" class="w-80"> <div class="buttons my-2"> <v-btn :href="select_href" size="x-large" color="blu

                                                            写真選択アプリをリリースしました!【個人開発】 - Qiita
                                                          • Apollo platformのチュートリアルをやった - $shibayu36->blog;

                                                            Hatena-Textbook 2018学習日記(5) - GraphQL編 - $shibayu36->blog;のようにHatena-Textbookを用いて最近のモダンなWebアプリケーション開発の学習をしているのだけど、TypeScript + GraphQL + Apollo Client + Reactの部分でそれぞれの技術の基本知識を理解できていなかったので、エラーが起きたときに何から直したらよいかわからない状態になってしまっていた。 前回はGraphQLのクエリについて学んだ - $shibayu36->blog;でGraphQLを少し掘り下げたので、今回はApollo platformについてチュートリアル( https://www.apollographql.com/docs/tutorial/introduction/ )を行いながら学習を進めていった。 Apollo

                                                              Apollo platformのチュートリアルをやった - $shibayu36->blog;
                                                            • 悪名高きスクロール妨害広告を解析する - Qiita

                                                              いくら下にスクロールしても強制的に巻き戻されてしまいます。 こちらが実際に採取したコードです。長いので折りたたみに入れていますが、別に全部読む必要はないです。 採取した HTML <!-- Generated by まとめくす (https://2mtmex.com/) --> <div class="article_mid_v2"> <div id="article_mid_v2"> <script type="text/javascript"> (function(){ var ua = window.navigator.userAgent; var android_reg = /android/i; var android_rand = Math.floor(Math.random() * (100)) + 1; var ios_rand = Math.floor(Math.rand

                                                                悪名高きスクロール妨害広告を解析する - Qiita
                                                              • 半年前からITP2.3対応を進めていた件といまだに理解されていない仕様の話|AD EBiS マーテック研究会

                                                                先月ITP2.3が発表されましたね。 ITPの短い歴史では初めての事後発表になってしまい、リリースまでに対応できないサービスが多かったと思いますが、アドエビスは3月末から準備を進めていました。 3月20日に届いた、Slackに仕込んだ自動ITP仕様変更検知から始まりました。 7月に、他のブログ記事でも紹介されたように、 ITPの仕様変更はwebkitのコミット履歴やbugzillaを調査すればわかるのですが、いち早く変更を検知するために、ITP実装の心臓部であるResourceLoadStatisticsMemoryStore.cppというファイルのコミット履歴RSSをSlackに登録しています。なお、ITP2.1のdocument.cookieの制限ように、トラッカー(prevalent resource)判定に関係ない機能は別ファイルに実装されていてこの仕組みでは検知できないので注意が

                                                                  半年前からITP2.3対応を進めていた件といまだに理解されていない仕様の話|AD EBiS マーテック研究会
                                                                • Googleが「プライバシー第一」とする新技術「FLoC」の本質はプライバシーを侵害する追跡技術だという主張

                                                                  by ranveer cool GoogleはサードパーティーCookieなしの新しい広告の仕組み「FLoC」を開発していますが、FLoCは「最悪なものだ」と電子フロンティア財団から指摘されているほか、独占禁止法違反の疑いが持たれています。プライバシー重視のブラウザを開発するVivaldiのCEOであるJon von Tetzchner氏も「FLoCはプライバシーを侵害する追跡技術」であるとして、その理由やFLoCについての考えをつづっています。 No, Google! Vivaldi users will not get FloC’ed. | Vivaldi Browser https://vivaldi.com/blog/no-google-vivaldi-users-will-not-get-floced/ ◆FLoCはプライバシーを侵害する追跡技術 FLoCを使ったシステムはサード

                                                                    Googleが「プライバシー第一」とする新技術「FLoC」の本質はプライバシーを侵害する追跡技術だという主張
                                                                  • Chrome拡張機能Manifest V3対応の勘どころ(?) - 風柳メモ

                                                                    Chrome ウェブストアに登録している4つの拙作Chrome拡張機能のManifest V3への対応が先日ようやく完了しました。 Manifest V3対応のために当方が実際に行った作業の概要やハマった点などを備忘として残しておきます。 詳細でなかったり整理できていない点に関してはご容赦ください 何はともあれ、公式ページを見ておくべし Firefoxとコードを共通化したいんだけど? backgroundはService Workerに変更 Manifest V3では削除されてしまったAPIに注意 manifest.json上"permissions"の指定方法変更(ホスト指定の分離) Action APIについての変更(browser_actionとpage_actionの統合) content_scripts等から拡張機能内のファイルにアクセスしたい場合は?(Web-accessibl

                                                                      Chrome拡張機能Manifest V3対応の勘どころ(?) - 風柳メモ
                                                                    • BFCacheを利用してNext.jsで実装した無限スクロールのUX改善をした話 | PR TIMES 開発者ブログ

                                                                      Next.jsに移行した初期の実装 Next.jsに移行した初期の実装ではgetServerSidePropsで検索結果の1ページ目を取得し、そのデータをTanstack Queryにhydrateするといった形で実装しました(この実装方法自体はUX改善後も変わりません)。 import { dehydrate, type DehydratedState, QueryClient, Hydrate } from '@tanstack/react-query'; export const getServerSideProps = async ({req, res, query}) => { const {search_word: searchWord} = query; const queryClient = new QueryClient(); const searchResultResp

                                                                      • A list of every web API in Deno

                                                                        Have you ever wondered how web compatible Deno is? Probably not, but I did today. To answer that question, I am writing this blog post: I’ll list and explain every single web API implemented in Deno. Get yourself something to drink, because this is going to take a while to go through. Before we get into it though, I just want to set some ground rules: I am not including any JS language features. O

                                                                          A list of every web API in Deno
                                                                        • GitHub Actions を回してピザを頼みたい - いなにわうどん

                                                                          年の瀬ですね。クリスマスの足音も近く、ピザなんかを頼んだら景気が良いかなと思ったので、GitHub 上で Issues を生やすとピザが頼める仕組み(workflows)を構築してみました。 本記事は mast Advent Calendar 2023 の 7 日目の記事です。6 日目は Hitoko T. 先生の記事「我が家に猫3匹がやって来た話|Hiroko T.」でした。猫、癒やしですよね 折角のアドカレの機会ですから、GitHub 上でピザを頼むまでの過程を、GitHub や Web 技術、ピザ等に明るい方にも、そうでない方にもお楽しみいただけるように説明*1*2を進めていきます*3。少し長くなりますが、どうぞお付き合いください。 ピザ 突然ですが、みなさまはピザと呼ばれる食べ物をご存知でしょうか? 初めてピザをご覧になられた方に向けて説明しておくと、小麦粉等を練って構成した生地を

                                                                            GitHub Actions を回してピザを頼みたい - いなにわうどん
                                                                          • The origin private file system  |  Articles  |  web.dev

                                                                            The origin private file system Stay organized with collections Save and categorize content based on your preferences. The File System Standard introduces an origin private file system (OPFS) as a storage endpoint private to the origin of the page and not visible to the user that provides optional access to a special kind of file that is highly optimized for performance. Browser support The origin

                                                                              The origin private file system  |  Articles  |  web.dev
                                                                            • Service WorkerとCache APIによるWebサーバーの負荷軽減とテスト実装について-前編 - dwango on GitHub

                                                                              2023-02-27 Mon Service WorkerとCache APIによるWebサーバーの負荷軽減とテスト実装について-前編 こんにちは。ニコニコQセクションのHajime-san(GitHub)です。 当記事では所属部署で開発に携わっている「ニコニコオーディション」の既存システムにService WorkerとCache APIを用いて、 Webサーバーからのレスポンスを一定期間保存し、キャッシュ(CacheStorage)からレスポンスを返すことによってWebサーバーへの負荷軽減を実現するまでの経緯や実装などを紹介します。 オーディションシステムの紹介 システムの概要 まず初めに本稿の主題となるシステムが抱える課題について、先ほどサラッと単語が登場した「ニコニコオーディション」というシステムの前提があるとより理解が明瞭になるのでこちらを紹介します。 ニコニコオーディションとは

                                                                                Service WorkerとCache APIによるWebサーバーの負荷軽減とテスト実装について-前編 - dwango on GitHub
                                                                              • タグを入れるだけで Web サイトを高速化する Repro Booster について思うこと - Qiita

                                                                                こんにちは。ぬこすけです。 最近(2022/10/26)に、マーケティングツールを開発する Repro が、タグを入れるだけでウェブサイトの表示速度を高速化させるツール「 Repro Booster 」をリリースしました。 ニュース Repro 公式サイト PRTIMESより引用 表示速度アップの仕組みは簡単にいうと、ユーザーのクリックを予測して次のページのデータを先読み & 端末にキャッシュして次のページの読み込み速度を上げるようです。 たまたま SNS でこのニュースを見かけた時、「 ほげえええ 」と衝撃が走りました。 表示速度アップの仕組み自体はエンジニアだったらあまりびっくりはしないかもしれません。 例えば、 Next.js には next/link でリンクを元にデータの先読み機能があったり、 gueess という機械学習を用いてユーザーが次にアクセスする可能性が高いページを予測

                                                                                  タグを入れるだけで Web サイトを高速化する Repro Booster について思うこと - Qiita
                                                                                • 型安全Storageの実装を通して学ぶ! TypeScriptの型

                                                                                  まえがき TypeScriptの型システムは、他のプログラミング言語にはないユニークな機能を多く備えています。これは、動的型付け言語であるJavaScriptで書かれたコードの振る舞いを(静的)型によってモデル化するという難題に対する答えであり、結果としてTypeScriptの型は比肩するものがないほど強力な表現力を持つことになりました。 TypeScriptの型システムが持つ機能の詳細な解説に関しては、既に素晴らしい記事が星の数ほどあります。しかし、それらの機能をどう応用すれば作りたいものを作れるのか?という知識は、実際にものを実装してみるという活動を通してしか得られないものだと感じます。 そこで、この記事では型安全なStorageラッパーの実装を題材とし、その過程を共有していきます。 想定読者 TypeScriptの型システムの機能に関する知識はあるが、応用方法がいまいちピンとこない方

                                                                                    型安全Storageの実装を通して学ぶ! TypeScriptの型