http://www.gamesjobsjapan.com/
- Grasshopper
const { app, net, session, BrowserWindow } = require("electron"); | |
const { patchSessionFetch, patchSessionProtocol } = require("./patch"); | |
app.whenReady().then(async () => { | |
patchSessionFetch(session.defaultSession); | |
patchSessionProtocol(session.defaultSession); | |
session.defaultSession.protocol.handle("https", async (req) => { | |
req.headers.set("referer", "https://docs.qq.com"); |
http://www.gamesjobsjapan.com/
/** | |
* @typedef {{ | |
* value: number | |
* left: BSTreeNode | |
* right: BSTreeNode | |
* }} BSTreeNode | |
*/ | |
class BSTree { | |
/** |
/** | |
* @typedef {{ | |
* level: number | |
* data: number | |
* left: TreeNode | |
* right: TreeNode | |
* }} TreeNode | |
*/ | |
/** |
type Callback = (err?: Error) => void | |
type Task = (callback: Callback) => void | |
interface ITaskProcessorOptions { | |
maxConcurrency: number | |
} | |
export default class TaskProcessor { | |
private pendingTaskCount = 0 |
const net = require('net') | |
const server = net.createServer() | |
server.on('connection', (clientToProxy) => { | |
console.log("CLIENT CONNECTED") | |
clientToProxy.once('data', (data) => { | |
const header = data.toString().split(/\r?\n/) | |
if (header.length === 0 || !header[0].startsWith('CONNECT')) { | |
clientToProxy.end() |
interface SemphoreWaitingContext { | |
done(): void; | |
} | |
export default class Semphore { | |
private queue: Array<SemphoreWaitingContext> = []; | |
constructor(private value: number) { | |
} |
function calcBezier(t: number, p1: number, p2: number): number { | |
return (((1 + 3 * p1 - 3 * p2) * t + (-6 * p1 + 3 * p2)) * t + 3 * p1) * t; | |
} | |
const PRECISION = 0.0000001; | |
const MAX_ITERATIONS = 12; | |
function binarySubdivide( | |
x: number, | |
a: number, |