Skip to content

Instantly share code, notes, and snippets.

const { ESLint, Linter } = require('eslint');
const path = require('path');
const eslint = new ESLint();
const fixable = new Map();
new Linter().getRules().forEach((val, key) => {
if (val.meta.fixable) {
fixable.set(key, true);
}
});
<html
xmlns="http://www.w3.org/1999/xhtml"
xml:lang="ja"
>
<body>
<div style="height: 100%;-epub-writing-mode: vertical-rl;">
<p>いろはにほへとちりぬるをわかよたれそつねならむ</p>
<p style="text-align: right;">うゐのおくやまけふこえてあさきゆめみしゑひもせすん</p>
</div>
</body>
@pastak
pastak / dazn-watch-party-fullwindow.user.css
Last active July 31, 2022 12:32
dazn-watch-party-fullwindow.user.css
div[data-test-id="WATCHPARTY_MOUNT_NODE"] .__room-participants {
display: none !important;
}
div[data-test-id="WATCHPARTY_MOUNT_NODE"] .content-player {
height: 100% !important;
max-height: 100% !important;
}
div[data-test-id="WATCHPARTY_MOUNT_NODE"] .__stream-container {
height: 100vh !important;
私は、京都で会社員としてウェブアプリケーションの開発者をしています。主にウェブブラウザ上で動作するJavaScriptを用いたフロントエンドと呼ばれる領域を扱っていて、ウェブブラウザの動向などには関心があるという立場です。また、PWAとSafariや各ブラウザについてのオンライン勉強会での講演なども行ったことがあります。
https://scrapbox.io/pastak-pub/面白Web_API_100連発#5f3cf9af8ee91d0000d983f8
https://scrapbox.io/pastak-pub/GyazoでのPWA%2FWebAPIとの向き合い方#6008049b8ee91d000059cc3a
報告書内には言及がなかったかと思いますが、AppleのWebKitとChrome(Blink)のバグ修正の取り組み方のオープン性の違いという観点ついて意見を書かせていただきます。
Chromeのバグ報告トラッカー https://bugs.chromium.org/p/chromium/issues/list ではセキュリティなどに関わるもので無い限りはほぼ全てが公開されており、議論に参加したり、修正の進捗を常に確認することが出来ます。これはMoziilaが提供しているFirefoxのバグ報告トラッカー https://bugzilla.mozilla.org でも同様です。しかし、Webkitが提供しているバグ報告トラッカー https://bugs.webkit.org/ ではバグ報告を提出しても、なかなかハンドリングされなかったり、ハンドリングされても様子はrdarから始まる恐らくAppleの社内システムと思われるものへのリンクとなり議論や修正の様子を確認することが出来ない。その結果、長らく放置されてそのまま対応されないままになることが多々ある。PWAなどについての対応に企業としての思惑があることはある程度許容することは仕方ないと私は考えますが、一方でWebkitはそれらに関する意見や議論をオープンに他のブラウザ同様にバグ報告トラッカーを利用して行うべきであると考えます。この点についてもなんらかの言及をすることについてご検討いただければと思います。
第1-4. 【有力ウェブ・サービス等を梃子とした他のレイヤー等における競争優位性獲得】 15. 有力ウェブ・サービスにおける仕様変更等
import { promises as fs } from 'fs';
const targets = [
'/path/to/anything.scss',
];
const noticeComment = '// Generated CSS variables from Scss Variables';
await Promise.all(
targets.map(async (target) => {
const scss = await fs.readFile(target, 'utf-8');
const indexOfNoticeComment = scss.indexOf(noticeComment);
@pastak
pastak / Nota社員おすすめ リモートワークグッズ詰め合わせ.txt
Last active March 23, 2022 02:08
YAPC::Japan::Online 2022 ベストトーク賞 賞品一覧です
Shokz OpenRun Pro https://www.amazon.co.jp/dp/B09LQVQJF1
日本けん玉協会認定競技用けん玉 大空 黒 https://www.amazon.co.jp/dp/B00CTCXFRM
Elgato Stream Deck MK.2 https://www.amazon.co.jp/dp/B09738CV2G
シロカ 温度調節電気ケトル SK-D17 https://www.yodobashi.com/product/100000001005653717/
FILCO Genuine ウッドリストレスト Mサイズ https://www.amazon.co.jp/dp/B07ZJQG39S
ThinkPad トラックポイント キーボード II https://www.amazon.co.jp/dp/B08BWQXZYL
めぐりズム蒸気でホットアイマスク 森林浴の香り 12枚入×2 https://www.amazon.co.jp/dp/B08DRWLCG3
めぐりズム蒸気でホットアイマスク 森林浴の香り 12枚入×2 https://www.amazon.co.jp/dp/B08DRWLCG3
【まとめ買い】めぐりズム蒸気でホットアイマスク カモミール 12枚入×2 https://www.amazon.co.jp/dp/B07FY1WTFV
【まとめ買い】めぐりズム蒸気でホットアイマスク カモミール 12枚入×2 https://www.amazon.co.jp/dp/B07FY1WTFV

Web予約できる

/**
* https://www.amazon.co.jp/gp/css/order-history で実行
* TSVの中身は順に
* 注文ID, 購入日, タイトル, URL, ASIN, (空白), 価格
*/
// https://stackoverflow.com/questions/25735677/remove-duplicates-values-in-array-google-apps-script/25740182#25740182
function removeDups(array) {
const outArray = [];
array.sort(lowerCase);
// ==UserScript==
// @name コミックDAYSのイラストを実寸表示できるようにする
// @namespace pastak.net.comic-days.illustration.zooming
// @description
// @match https://comic-days.com/illustration/*
// @includes https://comic-days.com/illustration/*
// ==/UserScript==
'use strict';
function waitForSelector (selectors) {
@pastak
pastak / lodash-replacer.js
Last active November 26, 2020 04:01
Change import style `import foo from 'lodash/foo'` from `import _ from 'lodash'` or `import {add} from 'lodash'` for Tree shaking
const MUST_ADD_PREFIX = false;
const PREFIX = "_";
const sameProperties = (props, a, b) => {
return props.every((p) => a[p] === b[p]);
};
const sameLocation = (loc1, loc2) => sameProperties(["line", "column", "token"], loc1.start, loc2.start) && sameProperties(["line", "column", "token"], loc1.end, loc2.end);
const findBinding = (path, name) => {