Skip to content

Instantly share code, notes, and snippets.

@IlyaSkriblovsky
IlyaSkriblovsky / asyncioreactor_timer_bugs.py
Last active March 19, 2020 19:53
Runnable demo of timer bugs in Twisted's asyncioreactor
import gc
import time
from twisted.internet import asyncioreactor
asyncioreactor.install()
from twisted.internet import reactor
def bug_reset_later():
@IlyaSkriblovsky
IlyaSkriblovsky / deferredcache.py
Created September 27, 2019 05:49
Async in-memory cache using twisted
from typing import TypeVar, Generic, Callable
import attr
from twisted.internet import defer
@attr.s(slots=True)
class _Result:
pending = attr.ib()
result = attr.ib()
@IlyaSkriblovsky
IlyaSkriblovsky / Variant.h
Last active January 5, 2022 04:57
Typing to implement dynamic Variant type in C++
#ifndef __VARIANT_H
#define __VARIANT_H
#include <cstdio>
#include <typeinfo>
#include <map>
typedef void (*deleter)(void*);
typedef void* (*copier)(const void*);
@IlyaSkriblovsky
IlyaSkriblovsky / common.js
Created April 17, 2019 06:02
Visual downsampling of graph data
export const binarySearchByField = function (data, field, value) {
var r = data.length, l = -1, m;
while (r - l > 1)
if (data[m = r + l >> 1][field] < value) l = m
else r = m
return {l, r}
}
export const binarySearchByIndex0 = function (data, value) {
from attr import dataclass
from rx import AnonymousObservable, Observable
from rx.core import ObservableBase
from rx.subjects import Subject
from twisted.internet import reactor, defer
from twisted.internet.defer import Deferred
from twisted.internet.protocol import Protocol, connectionDone, Factory
from twisted.python.failure import Failure
@IlyaSkriblovsky
IlyaSkriblovsky / docker-compose.yml
Last active January 24, 2019 09:40
Minimal dockerized OpenVPN
version: '2'
## INITIAL SETUP
# docker-compose run --rm ovpn ovpn_genconfig -u udp://<IP>
# docker-compose run --rm ovpn ovpn_initpki
# docker-compose up -d
# docker-compose run --rm ovpn easyrsa build-client-full myvpn nopass
# docker-compose run --rm ovpn ovpn_getclient myvpn > myvpn.ovpn
services:
#include <cstdio>
class A {
public:
int x;
A(int x): x(x) {}
};
class B: public A {
@IlyaSkriblovsky
IlyaSkriblovsky / mongodatabasequeue.py
Created December 4, 2018 08:41
Batching txmongo requests
WriteOp = Union[
InsertOne,
UpdateOne, UpdateMany,
DeleteOne, DeleteMany,
ReplaceOne
]
class MongoCollectionQueue:
# FIXME:
@IlyaSkriblovsky
IlyaSkriblovsky / twisted_refcycle_test.py
Last active January 28, 2018 16:45
Demo of circular dependencies created while using TLSMemoryBIOProtocol
import sys
import os
import gc
from twisted.protocols.tls import TLSMemoryBIOFactory, TLSMemoryBIOProtocol
from twisted.internet.protocol import Protocol, Factory
from twisted.internet import ssl, defer, error
from twisted.internet.task import react
from twisted.protocols.loopback import loopbackAsync
import psutil
@IlyaSkriblovsky
IlyaSkriblovsky / klein_composition_example.py
Created August 3, 2017 06:31
yet another approach to composable Klein apps
from twisted.internet import defer
from klein import Klein
from mocked_db import Database
def users_aspect(app: Klein, db: Database):
@app.route('/')
@defer.inlineCallbacks