Skip to content

Instantly share code, notes, and snippets.

View marihachi's full-sized avatar
🕹️
I'm interested in stack machine based VMs!

marihachi marihachi

🕹️
I'm interested in stack machine based VMs!
View GitHub Profile
@marihachi
marihachi / RedisEventEmitter.js
Created October 17, 2018 14:06
RedisのEventEmitterが書けそうだと思って書いた MIT License: (c) 2018 Marihachi.
const redis = require('redis');
const { EventEmitter } = require('events');
const { promisify } = require('util');
class RedisEventEmitter extends EventEmitter {
/**
* @param {string} namespace
* @param {boolean} isReceveMode
* @param {{host: string, port: number}} redisOptions
*/
@marihachi
marihachi / XevPubSub.js
Last active October 13, 2018 18:27
xevを使ったpubsub(observerパターン?)実装 [MIT License: (c) 2018 Marihachi]
const Xev = require('xev').default;
const { EventEmitter } = require('events');
class XevPubSub extends EventEmitter {
constructor(namespace) {
super();
this.parentEmitter = new Xev(namespace);
this.list = {};
this.handler = (channel) => (message) => this.emit('message', channel, message);
}
@marihachi
marihachi / mrhc theme - balloon1 v1.3.misskeytheme
Last active October 5, 2018 14:51
MisskeyTheme balloon1
{
name: 'mrhc theme - balloon1 v1.3',
author: 'mrhc',
desc: '落ち着いた緑色ベースのテーマです。',
base: 'dark',
vars: {
primary: 'rgb(140, 178, 62)',
secondary: 'rgb(84, 110, 110)',
text: 'rgba(255, 255, 255, 0.8)',
},
2in-multiplexer
export
9984A178CD0150A179CD01E0A17200A46E6F646588A474797065AC5061636B616765496E707574A2696400A46E616D65C0A76F7574707574739283A36E696401A466726F6DA178A2746FA17883A36E696402A466726F6DA178A2746FA178A7696E7075744964A3697330A9696E7075744E616D65A3697330A9696E70757444657363A3697330AA696E707574496E6465780484A178CD01F0A179CD01D0A17200A46E6F646584A474797065A34E6F74A2696401A46E616D65C0A76F7574707574739183A36E696404A466726F6DA178A2746FA16284A178CD01F0A179CD0190A17200A46E6F646584A474797065A34E6F70A2696402A46E616D65C0A76F7574707574739183A36E696405A466726F6DA178A2746FA16284A178CD02E0A179CD0100A17200A46E6F646584A474797065A24F72A2696403A46E616D65C0A76F7574707574739183A36E696408A466726F6DA6615F6F725F62A2746FA17884A178CD0270A179CCE0A17200A46E6F646584A474797065A3416E64A2696404A46E616D65C0A76F7574707574739183A36E696403A466726F6DA7615F616E645F62A2746FA16184A178CD0270A179CD0120A17200A46E6F646584A474797065A3416E64A2696405A46E616D65C0A76F7574707574739183A36E696403A466726F6DA7615F616E645F62A2746FA16284A178CD0150A179CC
d-ff
export
9884A178CD0240A179CCD0A17200A46E6F646588A474797065A75061636B616765A2696400A46E616D65C0A76F7574707574739183A36E696401A466726F6DA26F71A2746FA26964AB7061636B6167654E616D65A7642D6C61746368AB7061636B61676544657363A7642D6C61746368AD7061636B616765417574686F72A96D6172696861636869A56E6F6465739A88A474797065AC5061636B616765496E707574A2696400A46E616D65C0A76F7574707574739183A36E696407A466726F6DA178A2746FA161A7696E7075744964A26964A9696E7075744E616D65A26964A9696E70757444657363A26964AA696E707574496E6465780088A474797065AC5061636B616765496E707574A2696401A46E616D65C0A76F7574707574739283A36E696407A466726F6DA178A2746FA16283A36E696406A466726F6DA178A2746FA162A7696E7075744964A26974A9696E7075744E616D65A26974A9696E70757444657363A26974AA696E707574496E6465780188A474797065AD5061636B6167654F7574707574A2696402A46E616D65C0A76F75747075747390A86F75747075744964A26F71AA6F75747075744E616D65A26F71AA6F757470757444657363A26F71AB6F7574707574496E6465780088A474797065AD5061636B6167654F7574707574A2696403A46E616D65C0A76F75747075747390A86F757
4in-multiplexer
export
DC001284A178CCC0A17920A17200A46E6F646588A474797065AC5061636B616765496E707574A2696400A46E616D65C0A76F7574707574739183A36E69640DA466726F6DA178A2746FA161A7696E7075744964A26961A9696E7075744E616D65A26961A9696E70757444657363A26961AA696E707574496E6465780084A178CCC0A17970A17200A46E6F646588A474797065AC5061636B616765496E707574A2696401A46E616D65C0A76F7574707574739183A36E69640EA466726F6DA178A2746FA161A7696E7075744964A26962A9696E7075744E616D65A26962A9696E70757444657363A26962AA696E707574496E6465780184A178CCC0A179CCC0A17200A46E6F646588A474797065AC5061636B616765496E707574A2696402A46E616D65C0A76F7574707574739183A36E69640FA466726F6DA178A2746FA161A7696E7075744964A26963A9696E7075744E616D65A26963A9696E70757444657363A26963AA696E707574496E6465780284A178CCC0A179CD0110A17200A46E6F646588A474797065AC5061636B616765496E707574A2696403A46E616D65C0A76F7574707574739183A36E696410A466726F6DA178A2746FA161A7696E7075744964A26964A9696E7075744E616D65A26964A9696E70757444657363A26964AA696E707574496E6465780384A178CCC0A179CD01E0
d-latch
export
9A84A17860A17960A17200A46E6F646588A474797065AC5061636B616765496E707574A2696400A46E616D65C0A76F7574707574739183A36E696407A466726F6DA178A2746FA161A7696E7075744964A26964A9696E7075744E616D65A26964A9696E70757444657363A26964AA696E707574496E6465780084A17860A179CCB0A17200A46E6F646588A474797065AC5061636B616765496E707574A2696401A46E616D65C0A76F7574707574739283A36E696407A466726F6DA178A2746FA16283A36E696406A466726F6DA178A2746FA162A7696E7075744964A26974A9696E7075744E616D65A26974A9696E70757444657363A26974AA696E707574496E6465780184A178CD0210A17960A17200A46E6F646588A474797065AD5061636B6167654F7574707574A2696402A46E616D65C0A76F75747075747390A86F75747075744964A26F71AA6F75747075744E616D65A26F71AA6F757470757444657363A26F71AB6F7574707574496E6465780084A178CD0210A179CCB0A17200A46E6F646588A474797065AD5061636B6167654F7574707574A2696403A46E616D65C0A76F75747075747390A86F75747075744964A36F6E71AA6F75747075744E616D65A36F6E71AA6F757470757444657363A36F6E71AB6F7574707574496E6465780184A178CD0150A179CCB0A17200A46E6F646584A47479
full-adder
export
9A84A17860A17960A17200A46E6F646588A474797065AC5061636B616765496E707574A2696400A46E616D65C0A76F7574707574739283A36E696407A466726F6DA178A2746FA16183A36E696405A466726F6DA178A2746FA161A7696E7075744964A26961A9696E7075744E616D65A26961A9696E70757444657363A26961AA696E707574496E6465780084A17860A179CCB0A17200A46E6F646588A474797065AC5061636B616765496E707574A2696401A46E616D65C0A76F7574707574739283A36E696407A466726F6DA178A2746FA16283A36E696405A466726F6DA178A2746FA162A7696E7075744964A26962A9696E7075744E616D65A26962A9696E70757444657363A26962AA696E707574496E6465780184A17860A179CD0100A17200A46E6F646588A474797065AC5061636B616765496E707574A2696402A46E616D65C0A76F7574707574739283A36E696408A466726F6DA178A2746FA16283A36E696406A466726F6DA178A2746FA162A7696E7075744964A26963A9696E7075744E616D65A26963A9696E70757444657363A26963AA696E707574496E6465780284A178CD02C0A17960A17200A46E6F646588A474797065AD5061636B6167654F7574707574A2696403A46E616D65C0A76F75747075747390A86F75747075744964A26F73AA6F75747075744E616D65A26F73AA6F7
@marihachi
marihachi / pubsub.js
Last active August 14, 2017 10:03
試しに書いたRedis風のPub/Subシステム。parentEmitterを共有しそれをPubSubコンストラクタに渡して利用する。Node.js(v7)で動作。MITライセンス。
const { EventEmitter } = require('events');
class PubSub extends EventEmitter {
constructor(parentEmitter) {
super();
if (!(parentEmitter instanceof EventEmitter)) {
throw new TypeError('The first argument "parentEmitter" is not EventEmitter.');
}
this.parentEmitter = parentEmitter;
this.list = {};
@marihachi
marihachi / get-session-test.js
Last active May 4, 2017 07:47
socket.io(サーバ側)からexpressのセッションを取得
const io = require('socket.io')(http);
const session = require('express-session');
const RedisStore = require('connect-redis')(session);
const cookie = require('cookie');
const cookieParser = require('cookie-parser');
const inspect = require('util').inspect;
const store = new RedisStore();
const sessionCookieName = 'sid';
const sessionSecret = 'hoge';