Skip to content

Instantly share code, notes, and snippets.

View ygkn's full-sized avatar
A believing heart is your magic.

YAGITA Yugo ygkn

A believing heart is your magic.
View GitHub Profile
@zr-tex8r
zr-tex8r / nyc2022.tex
Created January 1, 2022 11:50
LaTeX: New year post card of the year 2022
%#!lualatex
\documentclass{article}
\usepackage[papersize={100mm,148mm},margin=0cm,
noheadfoot]{geometry}
\usepackage{luatexja-fontspec}
\usepackage{amsmath,tikz,graphicx,xcolor,xparse,pgfmath}
\usetikzlibrary{calc,positioning}
\newcommand{\cLet}{\pgfmathsetmacro}
\newfontface{\fEthi}{NotoSerifEthiopic-Black.ttf}[FakeSlant=0.1]
\newfontface{\fAleg}{Alegreya-ExtraBoldItalic.otf}
@greymd
greymd / sudo新一.md
Last active August 7, 2025 15:06
sudo新一

 オレは高校生シェル芸人 sudo 新一。幼馴染で同級生の more 利蘭と遊園地に遊びに行って、黒ずくめの男の怪しげな rm -rf / 現場を目撃した。端末をみるのに夢中になっていた俺は、背後から近づいてきたもう1人の --no-preserve-root オプションに気づかなかった。 俺はその男に毒薬を飲まされ、目が覚めたら・・・ OS のプリインストールから除かれてしまっていた!

sudo がまだ $PATH に残っていると奴らにバレたら、また命を狙われ、他のコマンドにも危害が及ぶ』

 上田博士の助言で正体を隠すことにした俺は、 which に名前を聞かれて、とっさに『gnuplot』と名乗り、奴らの情報をつかむために、父親がシェル芸人をやっている蘭の $HOME に転がり込んだ。ところが、このおっちゃん・・・とんだヘボシェル芸人で、見かねた俺はおっちゃんになりかわり、持ち前の権限昇格能力で、次々と難タスクを解決してきた。おかげで、おっちゃんは今や世間に名を知られた名エンジニア、俺はといえばシェル芸 bot のおもちゃに逆戻り。クラスメートの convertojichattextimg にお絵かきコマンドと誤解され少年ワンライナーお絵かき団を結成させられる始末。

 ではここで、博士が作ってくれたメカを紹介しよう。最初は時計型麻酔 kill 。ふたについた照準器にあわせてエンターを押せば、麻酔シグナルが飛び出し、プロセスを瞬時に sleep させることができる。 次に、蝶ネクタイ型 banner 。裏についているダイヤルを調整すれば、ありとあらゆる大きさのメッセージを標準出力できる。必殺のアイテムなら fork 力増強シューズ。電気と磁力で足を刺激し、 :(){ :|:& };: でプロセステーブ

@Ran350
Ran350 / GPAcount.js
Last active October 24, 2023 07:59
"履修状況確認(受講登録内容・成績一覧)ページ"での実行で各成績の個数を表示するブックマークレット(※P/F評価の場合はPをカウントしません)
// ブックマークレット
// ↓の一行をブックマークのURLにコピペしてね
javascript:(function(){const grades=[{name:"A+",credit1:0,credit2:0},{name:"A",credit1:0,credit2:0},{name:"B",credit1:0,credit2:0},{name:"C",credit1:0,credit2:0},{name:"F",credit1:0,credit2:0},];const creditsElms=[...document.querySelectorAll("#content>div.result_list>div.result_list>table>tbody>tr>td:nth-child(5)"),];const gradesElms=[...document.querySelectorAll("#content>div.result_list>div.result_list>table>tbody>tr>td:nth-child(6)"),];for(let i=0;i<gradesElms.length;i++){if(creditsElms[i].textContent==="1"){grades.map((grade)=>{if(gradesElms[i].textContent===grade.name)grade.credit1++;});}if(creditsElms[i].textContent==="2"){grades.map((grade)=>{if(gradesElms[i].textContent===grade.name)grade.credit2++;});}}const outs=grades.map((grade)=>{return`${grade.name} 1単位: ${grade.credit1} 2単位: ${grade.credit2}`;});alert(outs.join("\n"));})();
// 原文
(function () {
const grades = [
{ name: "A+", credit1: 0, credit2: 0 },
{ name: "A", credit1: 0, credit2: 0 },
@Ran350
Ran350 / change_speed_bookmark.js
Last active April 6, 2022 04:54
Bookmarklet for double speed playback
// ↓をURLにコピペする
javascript:{document.querySelector("video").playbackRate = parseFloat(prompt("倍速(小数)").replace(/[0-9.]/g,(s)=>{return String.fromCharCode(s.charCodeAt(0) - 65248)}));}
// 見やすくするとこんな感じ
// 全角で「1.7」と入力しても大丈夫
document.querySelector("video").playbackRate = parseFloat(
prompt("倍速(小数)").replace(/[0-9.]/g, (s) => {
return String.fromCharCode(s.charCodeAt(0) - 65248)
}));

フロントエンドの技術選定で考えること

Frontend Study 用

前提: フロントエンドは式年遷宮が有効である

  • DB を持たないため、表層の技術を交換するだけで済む
    • JSON API が実質的な分解点になっている
    • 近年ではモバイルアプリのために JSON API が切り離されていることが多く、ここの利用者になるだけでよい
  • Rails や PHP で ORM ヘルパーにべったりな場合に困難になる(クライアントで同等のバリデーションを再現する必要)
@dannyso16
dannyso16 / fizzbuzz.py
Last active October 6, 2020 03:30
100万行のFizzBuzzコードをつくります。(f文字列があるのでPython 3.6以上を想定)
N = 1_000_000
s = f"N = {N}\nfor i in range(N):\n"
with open("FizzBuzz.py", mode='w') as f:
f.write(s)
for i in range(1, N):
if i == 1:
s = f"\tif i == {i}:\n\t\tprint({i})\n"
elif i % 15 == 0:
s = f"\telif i == {i}:\n\t\tprint(\"FizzBuzz\")\n"
/**
* {@link https://music.youtube.com/library/uploaded_albums}を開いてブラウザのコンソールログで実行すると
* アルバムをどんどん削除していくスクリプトです。
*
* なんだかときどき「クリックしてもアルバムの削除が実行されない」自体に陥ってしまうので、
* そういうときは手動で「Youtube Music/アップロード」のドロップダウンを開いて、再選択する必要があります。
* (頑張ればここもケアできるけどめんどくさくてやめた)
*
* - ※ 本スクリプトを実行した際の損失などについて、製作者は一切責任を負いません。
*/

タイトル

react-hook-formとyupを使った重複チェックバリデーション

初めに

最近yupに値の重複チェックするためのいい感じの機能が入ったので、react-hook-formと組み合わせて重複チェックをする方法を備忘のため書き綴っていきます。 今まではデータのネストが深い場合、ネストを遡って他のデータにアクセスしデータのバリデーションが難しかったのですが、yupのv0.29.1から追加されたtest関数のコンテキストのfromプロパティを使用することによってネストを遡ることが容易になりました。
jquense/yup#556

今回はそのfromを使用し、フォームの重複チェックバリデーションを作ってみます。

const testFns: Array<{ name: string; fn: Function }> = [];
const beforeEachs: Function[] = [];
const afterEachs: Function[] = [];
export function clear() {
testFns.length = 0;
beforeEachs.length = 0;
afterEachs.length = 0;
}
@mattn
mattn / README.md
Last active February 25, 2025 15:03
blacklist/whitelist master/slave に関する情報集め

blacklist/whitelist master/slave に関する情報集め

blacklist/whitelist、master/slave という単語は相応しくないという意見に OSS がどの様に対応すべきかを自身で考える為の情報集めです。見つけ次第、逐次更新していきます。

僕(mattn) 自身は black lives matter に同意をしています。blacklist/whitelist、master/slave という単語を廃止する事が、歴史的背景を持たない文化圏では特定の意味を持たなかった為、個人的には若干思う所はありますが、廃止自身に反対するつもりはありません。

昔から、主副を表す物には master/slave という単語が使われてきました。ハードディスクの IDE、仮想端末(pty)、色々あります。またネットワークの IP フィルタリングに関しては blacklist/whitelist と表記した物が今でも沢山あります。

我々日本人が意識せずに使っていた blacklist/whitelist、master/slave という単語が、人々にどの様に影響しうるのか、今後 OSS としてどの様に関わっていけば良いかを理解する上で、自分なりの情報集めをしたいと思っています。