Skip to content

Instantly share code, notes, and snippets.

Avatar

Anton Kaliaev melekes

View GitHub Profile
@melekes
melekes / bst.rs
Created Dec 27, 2021
BST || k_largest element
View bst.rs
use anyhow::anyhow;
use anyhow::Result;
use std::mem::swap;
type Child = Option<Box<Node>>;
#[derive(Debug, Eq, PartialOrd, PartialEq, Clone)]
pub struct Node {
pub value: i32,
View stdlib_logger.go
package log
import (
"fmt"
"io"
stdlog "log"
"strings"
)
type stdlibLogger struct {
@melekes
melekes / notes.md
Created Feb 15, 2020 — forked from calebamiles/notes.md
Notes on Open Source Governance Models
View notes.md

Node.js Foundation

  • Healthy Open Source
    • explicit goal to be a lightweight process
    • concrete ability to scale to hundreds of contributors
    • good fundamental goals
      • transparency
      • participation
      • efficacy
    • ecosystem projects encouraged but not required to adopt foundation governance templates
  • creation of projects under TSC explicity delegates authority from TSC to project TC
@melekes
melekes / README.md
Last active Jun 1, 2019
Requirements for a Tendermint client
View README.md

Requirements for a Tendermint client

Broadcasting transactions

  1. An evil proposer can drop valid transactions (tendermint/tendermint#3322). To ensure tx A will be committed, the client needs to a) send it to multiple nodes b) subscribe for its result https://tendermint.com/docs/app-dev/subscribing-to-events-via-websocket.html or query the result later using /tx API endpoint (requires the tx indexer enabled) https://tendermint.com/rpc/#tx.

  2. Multiple nodes above requirement comes from a simple fact that an evil node can drop your tx.

Quering

@melekes
melekes / client.go
Created Mar 5, 2019
Example of using Tendermint HTTP client to subscribe for new block headers
View client.go
package main
import (
"context"
"os"
"os/signal"
"syscall"
"github.com/tendermint/tendermint/libs/log"
@melekes
melekes / badger_db.go
Last active Jan 30, 2019
Alternative databases, which were used to benchmark Tendermint indexing
View badger_db.go
package db
import (
"bufio"
"io"
"os"
"sync"
"github.com/dgraph-io/badger"
)
@melekes
melekes / twopy.py
Last active Jul 21, 2017 — forked from amarksteadman/twopy.py
Add your Twitter friends' RSS feeds to a single OPML file
View twopy.py
# -*- coding: utf-8 -*-
"""
This script requires the following Packages
1: Twitter: https://pypi.python.org/pypi/twitter
2: PyQuery: https://pypi.python.org/pypi/pyquery
3: Jinja2: https://pypi.python.org/pypi/Jinja2
It's fairly primitive but works. It uses a Jinja2 template to create an OPML
file from the RSS feeds of the websites run by the people you follow on
@melekes
melekes / upgrade_tendermint.yml
Last active Apr 24, 2017
Ansible playbook for upgrading Tendermint
View upgrade_tendermint.yml
---
- hosts: all
tasks:
- name: get version
shell: tendermint version
register: version
- name: copy and unpack binary if newer version is being installed
View counter.systemd.j2
[Unit]
Description=Counter
Requires=network-online.target
After=network-online.target
[Service]
Environment=""
Restart=on-failure
User={{ user }}
Group={{ group }}
View overflow_uint64.go
// addOrMax performs safe addition: if result overflows, it returns MaxUint64
func addOrMax(accum, value uint64) uint64 {
if (accum + value) < accum {
return math.MaxUint64
} else {
return accum + value
}
}
// subOrZero performs safe subtraction: if result underflows, it returns 0