Skip to content

Instantly share code, notes, and snippets.

View tabjy's full-sized avatar

Kangcheng Xu tabjy

  • Red Hat
  • Toronto, ON
  • 14:33 (UTC -05:00)
View GitHub Profile
const PRE_SCRIPT = `
G91;
`
const POST_SCRIPT = `
M107;
G90;
`
const WIDTH = 35 // mm
@tabjy
tabjy / ir_explainer.js
Created September 20, 2024 20:37
For Hotspot C2 Idea Graph IR
const rlp = require('node:readline/promises');
const input = `
5 3 Start === 3 0 [[ 3 5 6 7 8 9 10 ]] #{0:control, 1:abIO, 2:memory, 3:rawptr:BotPTR, 4:return_address, 5:int}
4 22 ConI === 0 [[ 23 ]] #int:7
4 10 Parm === 3 [[ 4 18 21 23 ]] Parm0: int !jvms: TestImageReader::test @ bci:-1 (line 39)
3 23 AndI === _ 10 22 [[ 25 ]] !jvms: TestImageReader::test @ bci:3 (line 39)
3 0 Root === 0 [[ 0 1 3 22 24 26 29 ]]
2 25 AddI === _ 23 24 [[ 21 21 27 ]] !jvms: TestImageReader::test @ bci:5 (line 39)
2 24 ConI === 0 [[ 25 27 31 ]] #int:1
$if2($if2(%albumartist%,%artist%),Various Artists)/
$if($year(%date%),$year(%date%) - ,)$if(%albumartist%,%album%/,)
$if($gt(%totaldiscs%,1),$if($gt(%totaldiscs%,9),$num(%discnumber%,2),%discnumber%)-,)$if($and(%albumartist%,%tracknumber%),$num(%tracknumber%,2) - ,)%title%
@tabjy
tabjy / ws.js
Created March 11, 2021 00:31
WebSocket from scratch. In Node.js
const http = require('http')
const crypto = require('crypto')
const server = http.createServer((req, res) => {
console.log('got request', req.url)
res.writeHead(200, { 'Content-Type': 'text/plain' })
res.end('okay')
})
server.on('upgrade', function (req, socket) {
@tabjy
tabjy / in-browser-console-es5.js
Last active February 20, 2020 15:23
A basic REPL
"use strict";
function _instanceof(left, right) { if (right != null && typeof Symbol !== "undefined" && right[Symbol.hasInstance]) { return !!right[Symbol.hasInstance](left); } else { return left instanceof right; } }
(function () {
var write = function write(content) {
output.value += content;
output.scrollTop = output.scrollHeight;
};
const svg = document.querySelectorAll('#chart svg')[0]
const width = svg.getAttribute("width")
const height = svg.getAttribute("height")
const image = new Image()
image.setAttribute("width", width)
image.setAttribute("height", height)
const clone = svg.cloneNode(true)
const svg = document.querySelectorAll('#chart svg')[0]
const width = svg.getAttribute("width")
const height = svg.getAttribute("height")
const image = new Image()
image.setAttribute("width", width)
image.setAttribute("height", height)
const clone = svg.cloneNode(true)
package org.openjdk.jmc.agent.util;
import java.lang.reflect.Field;
import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;
import java.lang.reflect.Modifier;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.LinkedList;
import java.util.List;
package org.openjdk.jmc.agent.util;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
// polyfill for pre-11 nest-based access control
public class NestBasedAccess {
private static int bar = 42;
@tabjy
tabjy / java_11.txt
Last active November 20, 2019 15:33
pre java 11 bridge method for nested access
Classfile /home/kxu/Documents/github.com/tabjy/java-snippets/target/classes/com/tabjy/snippets/asm/path_syntax_evaluation/Pojo.class
Last modified Nov 20, 2019; size 800 bytes
MD5 checksum ce2027f5c28d4f1634e8c67ef84efd97
Compiled from "Pojo.java"
public class com.tabjy.snippets.asm.path_syntax_evaluation.Pojo
minor version: 0
major version: 55
flags: (0x0021) ACC_PUBLIC, ACC_SUPER
this_class: #9 // com/tabjy/snippets/asm/path_syntax_evaluation/Pojo
super_class: #10 // java/lang/Object