Skip to content

Instantly share code, notes, and snippets.

@uguisu-an
uguisu-an / yup-lazy-example.test.ts
Created May 10, 2022 23:52
yupで複数の型を扱う例
import * as Yup from "yup";
test("複数のタイプに対応する", () => {
const schema = Yup.object({
content: Yup.lazy((content) =>
Yup.object({
type: Yup.string().oneOf(["text", "textarea", "file"]).required(),
value:
content.type === "file"
? Yup.object({
@uguisu-an
uguisu-an / searchParamsExtension.ts
Last active March 30, 2022 18:26
React-Router: useSearchParamsの更新を助けるカスタムフック
import { useSearchParams } from "react-router-dom";
export const useSetSearchParam =
(...[searchParams, setSearchParams]: ReturnType<typeof useSearchParams>) =>
(key: string) =>
(value: string) => {
const newSearchParams = new URLSearchParams(searchParams);
newSearchParams.set(key, value);
setSearchParams(newSearchParams);
};
@uguisu-an
uguisu-an / aws-session.sh
Created September 8, 2021 06:15
MFAのセッションを取り込むスクリプト
if [ $# -ne 3 ]; then
echo "usage: aws-session {profile} {serial-number} {token-code}"
exit 1
fi
unset AWS_ACCESS_KEY_ID
unset AWS_SECRET_ACCESS_KEY
unset AWS_SESSION_TOKEN
export $(aws sts get-session-token --profile $1 --serial-number $2 --token-code $3 | jq -r '.Credentials | "AWS_ACCESS_KEY_ID=\(.AccessKeyId)", "AWS_SECRET_ACCESS_KEY=\(.SecretAccessKey)", "AWS_SESSION_TOKEN=\(.SessionToken)"')
@uguisu-an
uguisu-an / App.vue
Last active September 4, 2021 00:52
example: オブジェクトを編集するコンポーネント
<template>
<div>
<Example :user.sync="user"></Example>
<button @click.prevent="updateUser()">Save</button>
<button @click.prevent="revertUser()">Cancel</button>
{{ user }}
{{ userBackup }}
</div>
</template>
@uguisu-an
uguisu-an / .prettierignore
Last active September 3, 2021 10:37
よく使うLaravelの初期化手順
/bootstrap/
/node_modules/
/public/
/vendor/
composer.lock
package-lock.json
@uguisu-an
uguisu-an / bookmarklet
Last active August 23, 2021 19:31
開いているなろう小説のページをランダムで一話開く。
javascript:var%20ncode%20=%20/https:\/\/ncode.syosetu.com\/([^\/]+)/.exec(location.href)[1];%20var%20callback%20=%20(data)%20=>%20{%20%20%20if%20(data[0].allcount%20<%201)%20throw%20"no%20data";%20%20%20var%20page%20=%20Math.floor(Math.random()%20*%20data[1].general_all_no)%20+%201;%20%20%20location.href%20=%20`https://ncode.syosetu.com/${ncode}/${page}`;%20};%20%20var%20st%20=%20document.createElement("script");%20st.src%20=%20`https://api.syosetu.com/novelapi/api/?out=jsonp&callback=callback&ncode=${ncode}&of=t-n-w-s-gl-ga`;%20document.head.appendChild(st);
@uguisu-an
uguisu-an / calendar.php
Last active September 23, 2019 22:14
PHP Calendar Component
<?php
namespace components\calendar;
function render(array $weeks): void
{ ?>
<table class="table">
<thead>
<tr>
<th>日</th>
@uguisu-an
uguisu-an / settings.json
Created September 7, 2019 22:00
vocode settings for eslint
{
"eslint.autoFixOnSave": true,
"eslint.validate": [
"javascript",
"javascriptreact",
{"language": "typescript", "autoFix": true },
{"language": "typescriptreact", "autoFix": true },
{"language": "vue", "autoFix": true }
]
}
@uguisu-an
uguisu-an / fontSize.html
Created August 25, 2019 05:03
フォントサイズの自動計算
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<meta http-equiv="X-UA-Compatible" content="ie=edge" />
<title>Document</title>
<link
href="https://fonts.googleapis.com/css?family=Anton|Lobster|M+PLUS+1p|Noto+Sans+JP|Noto+Serif+JP&display=swap"
rel="stylesheet"
@uguisu-an
uguisu-an / eachMonth.js
Last active August 9, 2019 23:14
整列した日付の配列を月ごとに分ける
const { isLastDayOfMonth } = require("date-fns");
const eachMonth = (ds, ms = []) => {
if (ds.length === 0) return ms;
const i = ds.findIndex(isLastDayOfMonth);
if (i < 0) {
return eachMonth([], [...ms, ds]);
} else {
return eachMonth(ds.slice(i + 1), [...ms, ds.slice(0, i + 1)]);
}