Skip to content

Instantly share code, notes, and snippets.

View dotcypress's full-sized avatar

Vitaly Domnikov dotcypress

View GitHub Profile
@dotcypress
dotcypress / telegram-login.js
Created February 24, 2018 08:34
Telegram authorization data checker
const { createHash, createHmac } = require('crypto')
function checkSignature (token, { hash, ...data }) {
const secret = createHash('sha256')
.update(token)
.digest()
const checkString = Object.keys(data)
.sort()
.map(k => `${k}=${data[k]}`)
.join('\n')
@dotcypress
dotcypress / SVGPath.swift
Last active June 27, 2023 14:05
SVG path to CGPath converter
//
// SVGPath.swift
// SVGPath
//
// Created by Tim Wood on 1/21/15.
// Updated by Vitaly Domnikov 10/6/2015
// Copyright (c) 2015 Tim Wood, Vitaly Domnikov. All rights reserved.
import Foundation
import CoreGraphics
GPIO0: GPIO Pin features
GPIO0 PB11/DMIC-DATA0/PWM2/TWI0-SDA/SPI1-CLK/DBI-SCLK/CLK-FANOUT1/UART1-CTS/PB-EINT11
GPIO1 PB10/DMIC-DATA1/PWM7/TWI0-SCK/SPI1-MOSI/DBI-SDO/CLK-FANOUT0/UART1-RTS/PB-EINT10
GPIO2 PE9/NCSI0-D5/UART1-CTS/PWM3/UART3-RX/JTAG-DI/MDIO/PE-EINT9
GPIO3 X
GPIO4 X
GPIO5 X
GPIO6 X
GPIO7 X
@dotcypress
dotcypress / now.plugin.zsh
Last active November 26, 2022 19:12
zsh autocomplete plugin for △ now
_now_commands ()
{
local curcontext="$curcontext" state line
typeset -A opt_args
_arguments -C \
":command:->command"\
"*::options:->options"
case $state in
@dotcypress
dotcypress / wit-telegram-bot.js
Last active February 2, 2022 07:14
How to build Telegram bot with Wit.ai Bot Engine
// npm install telegraf telegraf-wit
var Telegraf = require('telegraf')
var TelegrafWit = require('telegraf-wit')
var app = new Telegraf(process.env.BOT_TOKEN)
var wit = new TelegrafWit(process.env.WIT_TOKEN)
app.use(Telegraf.memorySession())
@dotcypress
dotcypress / ◢◤.zsh-theme
Last active January 16, 2022 23:31
◢◤
GREEN="%{$fg_bold[green]%}"
YELLOW="%{$fg_bold[yellow]%}"
CYAN="%{$fg_bold[cyan]%}"
RED="%{$fg_bold[red]%}"
MAGENTA="%{$fg[magenta]%}"
RESET="%{$reset_color%}"
PROMPT='$RED◢◤ $CYAN%c $YELLOW$(git_prompt_info)$(git_prompt_status)$RESET'
RPROMPT='$MAGENTA%~ $RESET'
@dotcypress
dotcypress / pid.rs
Created November 17, 2021 01:49
Rusty PID
use core::ops::*;
pub struct Regulator<F>
where
F: Default + Add<Output = F> + Sub<Output = F> + Mul<Output = F> + PartialOrd + Copy,
{
kp: F,
ki: F,
kd: F,
last_error: F,
use byteorder::{BigEndian, ByteOrder};
use eeprom24x::{ic, Eeprom24x, SlaveAddr};
use hal::hal::blocking::delay::DelayMs;
use hal::hal::blocking::i2c::{Write, WriteRead};
use hash32::{Hasher, Murmur3Hasher};
// EEPROM: 512 pages * 32 bytes = 16,384 bytes
// Index size: 32 pages * 8 refs = 256 slots
// Max key size: 12 bytes
// Max record size: 4095 bytes
@dotcypress
dotcypress / flutures-micro.js
Last active February 2, 2018 20:08
ZEIT's Micro meets Futures
const { readFile } = require('fs')
const { isFuture, node, encase, after } = require('fluture')
const futurize = (handler) => async (req, res) => {
const result = await handler(req, res)
return isFuture(result) ? result.promise() : result
}
module.exports = futurize(
async (req, res) => {
@dotcypress
dotcypress / gist:5145593
Created March 12, 2013 18:33
Pretty git log alias
[alias]
hist = log --pretty=format:\"\t%C(red)%h%C(reset)%C(blue)%d%C(reset) : %C(yellow)%ad%C(reset) | %s [%C(green)%an<%ae>%C(reset)]\" --graph --date=short