Skip to content

Instantly share code, notes, and snippets.

View hrdtbs's full-sized avatar
🎯
I may be slow to respond.

hrdtbs hrdtbs

🎯
I may be slow to respond.
View GitHub Profile
type UnionToIntersection<U> = (U extends any ? (k: U) => void : never) extends (k: infer I) => void ? I : never
type LastOf<T> = UnionToIntersection<T extends any ? () => T : never> extends () => infer R ? R : never
type Tuplify<Union, Flag = [Union] extends [never] ? true : false, Last = LastOf<Union>> = true extends Flag
? []
: [...Tuplify<Exclude<Union, Last>>, Last]
@hrdtbs
hrdtbs / 生年月日のInputについて-202009.md
Last active September 26, 2020 09:44
生年月日のInputの実装パターンについて(2020/09時点)

実装パターンとして3つ候補がある

  1. type=dateを用いる
  2. 入力毎に値を決まった形式にfixしていく
  3. 年・月・日でInputを区切る

他にもあれば追記


拝啓
ユーザーの皆様にはいつもお力添えをしていただき、誠にありがとうございます。
最新のiOS 14及びiPadOSにつきましては、動作の保証をいたしかねる状況です。
OSのアップデートを行われた場合、起動できない、正常に動作しないなどの問題が発生する可能性がございます。
また、OSのアップデートを行われますと、お問い合わせいただきましてもサポートいたしかねる場合がございます。
iOS 14及びiPadOSへの正式な対応につきましては、今後のアプリアップデートでの実施を予定しております。
ユーザーの皆様にはご不便をおかけし、大変申し訳ございませんが、
@hrdtbs
hrdtbs / after-vercel.yml
Last active September 16, 2020 22:43
GithubActions run after Deploying on Vercel
name: after vercel
on: deployment_status
jobs:
build:
if: github.event.deployment_status.state == 'success'
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- name: hoge
uses: hoge-action
interface ChooseFileSystemEntriesOptionsAccepts {
description?: string;
mimeTypes?: string[];
extensions?: string[];
}
interface ChooseFileSystemEntriesOptions {
type?: 'openFile' | 'saveFile' | 'openDirectory';
multiple?: boolean;
accepts?: ChooseFileSystemEntriesOptionsAccepts[];
/** @jsx jsx */
import { css, jsx, keyframes } from "@emotion/core"
import React, { useCallback, useEffect, useRef, useState } from "react"
export const skeletonKeyframes = keyframes`
0% {
background-position: -200px 0;
}
100% {
background-position: calc(200px + 100%) 0;
@hrdtbs
hrdtbs / lib.dom.d.ts
Last active June 21, 2020 22:57
SpeechRecognition.d.ts
interface SpeechRecognitionErrorEvent {
readonly message: string
readonly error:
| "no-speech"
| "aborted"
| "audio-capture"
| "network"
| "not-allowed"
| "service-not-allowed"
| "bad-grammar"
@hrdtbs
hrdtbs / hoge.tsx
Last active September 7, 2020 07:30
Redirect to external page on Next.js
import { DocumentContext } from "next/document"
import React from "react"
const Page = () => {
return null
}
const Location = "hoge"
export const getServerSideProps = async (ctx: DocumentContext) => {
@hrdtbs
hrdtbs / DOM操作はブラウザの負担になる説.md
Created May 12, 2020 14:11
DOM操作はブラウザの負担になる説

DOM操作はブラウザの負担になる?

  • DOM操作後に行われるレイアウト処理が重く時間がかかる場合がある
    • DOM操作自体は大して重くない
  • レイアウトの強制同期により著しくパフォーマンスが低下する場合がある
    • DOM操作などの実行中にレイアウト処理が何度も走りパフォーマンスが低下する
    • DOM操作後にレイアウト情報を参照するようなコードを書いていると,最新のレイアウト情報を参照しようとして起きる
      • 再レンダリング後に呼び出されるrequestAnimationFrameを使ったり、DOM操作前にレイアウト情報を参照するようなコードを書く
  • offsetLeft, getBoundingClientRect(), scrollTo(), scrollTop, focus(), select(), window.getComputedStyle()辺り