Skip to content

Instantly share code, notes, and snippets.

@agektmr
agektmr / WebAuthn_JSON_serialization_polyfill.js
Last active September 3, 2024 08:39
WebAuthn JSON serialization polyfill
class base64url {
static encode(buffer) {
const base64 = window.btoa(String.fromCharCode(...new Uint8Array(buffer)));
return base64.replace(/=/g, '').replace(/\+/g, '-').replace(/\//g, '_');
}
static decode(base64url) {
const base64 = base64url.replace(/-/g, '+').replace(/_/g, '/');
const binStr = window.atob(base64);
const bin = new Uint8Array(binStr.length);
@agektmr
agektmr / gif animation using html5
Last active September 16, 2022 08:13
How to create gif animation
<html>
<head>
<style>
figure {
width: 200px;
height: 150px;
text-align: center;
float: left;
}
img {
@agektmr
agektmr / Apps Script to insert Atom Feed into Google Spreadsheet
Last active September 16, 2021 21:41
This script will fetch an Atom feed and insert rows on top in descending order. Make sure to replace with arbitrary URLs on 2 placeholders.
function main() {
var ss = SpreadsheetApp.openByUrl('YOUR SPREADSHEET URL COMES HERE');
var sheet = ss.getSheets()[0];
var property = PropertiesService.getDocumentProperties();
var last_update = property.getProperty('last_update');
last_update = last_update === null ? 0 : parseFloat(last_update);
var feed = fetch('ATOM FEED URL COMES HERE');
var items = getItems(feed);
@agektmr
agektmr / one-time-code.md
Last active September 11, 2020 09:58
`input[autocomplete="one-time-code"]` polyfill using Web OTP API
if ('customElements' in window && 'OTPCredential' in window) {
  customElements.define("web-otp",
    class extends HTMLInputElement {
      connectedCallback() {
        this.abortController = new AbortController();
        this.receive(); 
      }
      disconnectedCallback() {
 this.abort();
API/payment method Chrome Edge Safari Samsung Internet Firefox
@agektmr
agektmr / karabinar_JIS_ASCII.json
Created August 19, 2017 14:09
Converts JIS keyboard layout to ASCII keyboard layout in Karabinar Elements
{
"title": "For Japanese (JIS配列をASCII配列風にする設定)",
"rules": [
{
"description": "英数・かなキーを他のキーと組み合わせて押したときに、コマンドキーを送信する。",
"manipulators": [
{
"type": "basic",
"from": {
"key_code": "japanese_eisuu",

Keybase proof

I hereby claim:

  • I am agektmr on github.
  • I am agektmr (https://keybase.io/agektmr) on keybase.
  • I have a public key ASA18VYrnHxJ0JjmiW3VhGzGrQPzg7V1DnYvG07Mwk4xHwo

To claim this, I am signing this object:

@agektmr
agektmr / Installing Project Tab Manager beta.md
Last active February 3, 2016 01:40
How to install Project Tab Manager beta
  1. Download a zip file from here
  2. Open chrome://extensions on Chrome
  3. Check "Developer Mode"
  4. Click "Load unpacked extension..." and select the unzipped folder

Questions are welcome at https://twitter.com/agektmr

if (DEBUG === undefined) DEBUG = true;
DEBUG && console.log('test');