Skip to content

Instantly share code, notes, and snippets.

View piroor's full-sized avatar

YUKI "Piro" Hiroshi piroor

View GitHub Profile
@piroor
piroor / peco-commands.sh
Last active November 8, 2018 01:02
Predefined commands based on peco (on Bash)
# Usage:
# 1. Download latest binary of peco from: https://github.com/peco/peco/releases
# 2. Extract "peco" from the downloaded archive and put it to somewhere listed in $PATH.
# 3. Put this file as "~/peco-commands.sh".
# 4. Add a line "source ~/peco-commands.sh".
# 5. Exit and login again.
# from http://bio-eco-evo.hatenablog.com/entry/2017/04/30/044703
peco-cd() {
local sw="1"
@piroor
piroor / enctyptor.js
Last active February 8, 2019 09:34
Simple String Encryptor (example)
/*
Simple String Encryptor with common key cryptosystem (example)
Usage:
// The first argument of the constructor is the algorithm.
// If you don't specify any algorithm, AES-CTR 256bit is used.
const encryptor = new Encryptor({ name: 'AES-CTR', length: 256 });
const counter = crypto.getRandomValues(new Uint8Array(16));
const encrypted = await encryptor.encryptString('Hello world!', { counter });
@piroor
piroor / prepare.js
Last active December 1, 2018 05:21
Preparation script for running of tests at https://hg.mozilla.org/mozilla-central/rev/cd420001c8ea#l5.145
/*
Usage:
1. Install something addon with "tabs" permission.
2. Go to "about:debugging" and open a debugger for the addon.
3. Go to the console.
4. Run.
*/
(async (global) => {
const windowId = (await browser.windows.create({})).id;
@piroor
piroor / array-uniq-benchmark.js
Last active November 7, 2024 23:06
Benchmark of "uniq" for Array in JavaScript
// License: MIT
// Original Author: YUKI "Piro" Hiroshi <[email protected]>
// confirmed at Firefox 64
async function test(times, length) {
function uniqByIndexOf(array) {
const uniquedArray = [];
for (const elem of array) {
if (uniquedArray.indexOf(elem) < 0)
@piroor
piroor / aes-gcm-encryption.js
Last active August 16, 2022 08:02
Example of AES-GCM encryptor with passphrase, based on Web Crypto API
async function getKey(passphrase, salt = null) {
passphrase = (new TextEncoder()).encode(passphrase);
let digest = await crypto.subtle.digest({ name: 'SHA-256' }, passphrase);
let keyMaterial = await crypto.subtle.importKey(
'raw',
digest,
{ name: 'PBKDF2' },
false,
['deriveKey']
);
@piroor
piroor / SelectionClipboard.ahk
Last active April 11, 2019 01:10
AutoHotKey https://www.autohotkey.com/ script to simuate "selection clipboard" behavior of Linux desktop environments
; Simulate "Selection Cipboard" of Linux desktop environments
; Based on:
; https://softwarerecs.stackexchange.com/questions/9791/copy-selection-to-clipboard-automatically
; Usage:
; 1. Install AutoHotKey: https://www.autohotkey.com/
; 2. Save this file as "SelectionClipboard.ahk".
; 3. Put it into the startup folder.
; Note:
; * Ctrl-C will be sent when you do drag and drop with the left button always, including
; window moving and resizing. This means that SIGINT is sent to appls when you try to
@piroor
piroor / find-and-open.js
Created February 6, 2020 01:54
Find AWS/Amazon developers from contributors
// Run this script with the web console for contributors list pages on your Web browser, for example:
// https://github.com/antirez/redis/graphs/contributors
// https://github.com/mongodb/mongo/graphs/contributors
// https://github.com/apache/kafka/graphs/contributors
(async () => {
let promises = [];
for (const url of Array.from(new Set(Array.from(document.querySelectorAll('a[href][data-hovercard-type="user"]'), link => link.href)))) {
const win = window.open(url);
promises.push(new Promise(resolve => {
win.addEventListener('DOMContentLoaded', () => {
@piroor
piroor / profiles.json
Created April 9, 2020 07:31
profiles.json for Windows Terminal
// To view the default settings, hold "alt" while clicking on the "Settings" button.
// For documentation on these settings, see: https://aka.ms/terminal-documentation
{
"$schema": "https://aka.ms/terminal-profiles-schema",
"defaultProfile": "{2c4de342-38b7-51cf-b940-2309a097f518}",
//"defaultProfile": "{61c54bbd-c2c6-5271-96e7-009a87ff44bf}",
@piroor
piroor / gentoc.js
Last active September 22, 2021 07:46
Generate Table of Contents Markdown code from HTML page
// Run this in the console of the web browser
(function generateToC() {
const headings = document.querySelectorAll('h1, h2, h3, h4, h5, h6');
if (headings.length == 0)
return;
let minLevel = 6;
for (let heading of headings) {
let headingLevel = parseInt(heading.localName.charAt(1));
if (headingLevel < minLevel)
minLevel = headingLevel;
@piroor
piroor / demo.html
Last active January 17, 2022 02:55
CSS Sytem Color Demo
<html>
<head>
<title></title>
<style type="text/css">
:root, body {
color-scheme: light dark;
font: message-box; /* this is same to Firefox's UI. */
line-height: 1;
}
ul, li {