Skip to content

Instantly share code, notes, and snippets.

View nitely's full-sized avatar
🟢
online

Esteban C Borsani nitely

🟢
online
View GitHub Profile
@nitely
nitely / substates.txt
Created August 4, 2018 08:56
systemd substates list
# from https://github.com/systemd/systemd/blob/b0450864f1723ad12176d7956377d89ff4a84d8c/src/basic/unit-def.c
"stub",
"loaded",
"not-found",
"bad-setting",
"error",
"merged",
"masked"
@nitely
nitely / strqueue_bench.nim
Last active May 18, 2018 03:51
strqueue_bench
import nimbench
type
StrQueue = object
s: string
pos: int
filled: int
b: seq[Slice[int]]
head: int
tail: int
@nitely
nitely / strqueue.nim
Last active May 16, 2018 21:03
efficient string queue
type
StrQueue = object
s: string
pos: int # todo: use b[head].b
filled: int
b: seq[Slice[int]]
head: int
tail: int
i: int # todo: remove
@nitely
nitely / font_width.py
Last active December 10, 2023 20:13
get glyph width from ttf font (python 3)
# -*- coding: utf-8 -*-
from fontTools.ttLib import TTFont
font = TTFont('/home/esteban/Downloads/unifont-10.0.07.ttf')
cmap = font['cmap']
t = cmap.getBestCmap()
s = font.getGlyphSet()
def width(c):
@nitely
nitely / unicode.md
Last active April 26, 2018 03:40
unicode stuff

Combining marks are insufficient to break a string into graphemes

Q: So is a combining character sequence the same as a “character”?
A: That depends. For a programmer, a Unicode code point represents a single character (for exceptions, see below). For an end user, it may not. The better word for what end-users think of as characters is grapheme: a minimally distinctive unit of writing in the context of a particular writing system.
For example, å (A + COMBINING RING or A-RING) is a grapheme in the Danish writing system, while KA + VIRAMA + TA + VOWEL SIGN U is one in the Devanagari writing system. Graphemes are not necessarily combining character sequences, and combining character sequences are not necessarily graphemes. Moreover, there are a number of other cases where a user would not count “characters” the same way as a programmer would: where there are invisible characters such as the RIGHT-TO-LEFT MARK (RLM) used in BIDI, compatibility composites such as “Dz”, “ij”, or Roman numerals, and so on.

@nitely
nitely / async_fifo.py
Last active February 11, 2018 06:41
asyncio FIFO
import asyncio
async def testProc():
for i in range(10):
await asyncio.sleep(1)
print("sleep")
def callbackProc():
#print("Callback event")
loop = asyncio.get_event_loop()
@nitely
nitely / customers.py
Last active July 10, 2018 23:09
Intercom challenge in Python 3.6
# -*- coding: utf-8 -*-
"""
(venv35) bash-4.4$ python customers.py
4 Ian Kehoe
5 Nora Dempsey
6 Theresa Enright
8 Eoin Ahearn
11 Richard Finnegan
12 Christina McArdle
@nitely
nitely / crash2.nim
Created January 10, 2018 20:42
Nim crash
const myarr = [0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,213,214,215,216,217,218,219,220,221,222,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,240,241,242,243,244,245,246,247,248,249,250,251,252,253,254,255,256,257,258,259,260,261,262,263,264,265,266,267,268,269,270,271,272,273,274,275,276,277,278,279
@nitely
nitely / crash.nim
Created January 10, 2018 19:21
Nim crash
const myarr = [0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,213,214,215,216,217,218,219,220,221,222,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,240,241,242,243,244,245,246,247,248,249,250,251,252,253,254,255,256,257,258,259,260,261,262,263,264,265,266,267,268,269,270,271,272,273,274,275,276,277,278,279
@nitely
nitely / expand.nim
Created December 22, 2017 16:38
Nim expand template/macros
import macros
template someTemplate(...) = ...
macro debugme(x: untyped) =
let t = getAst(someTemplate(x))
echo t.toStrLit
# there is macros.expandMacro which may as well work on templates