Skip to content

Instantly share code, notes, and snippets.

View nico's full-sized avatar

Nico Weber nico

  • 21:41 (UTC -04:00)
View GitHub Profile
import Adafruit_SSD1306
import struct
import sys
import termios
from PIL import Image
from PIL import ImageFont
from PIL import ImageDraw
# 128x64 display with hardware I2C:
disp = Adafruit_SSD1306.SSD1306_128_64(rst=24)
C:\src\hack>type xmltest_in.xml
<?xml version="1.0" encoding="utf-8"?>
<?xml-stylesheet href="common.css"?>
<hi>
<hi xmlns="http://example.com/foo-ns" xmlns:x="urn:example-com:bar-ns">
<?foobar version="1.0"?>
<ho
/>text&amp;more@<x:ho x:attr="adsf"/>
<!-- adsf -->
</hi>
Nicos-MacBook-Pro:hack thakis$ clang -o xmltest xmltest_libxml.cc -I$(xcrun -show-sdk-path)/usr/include/libxml2 -lxml2 && ./xmltest xmltest_in.xml
xmltest_in.xml:3: namespace warning : xmlns: URI foo is not absolute
<hi xmlns="foo" xmlns:x="bar">
^
1/XML_ELEMENT_NODE hi (null)
3/XML_TEXT_NODE text
1/XML_ELEMENT_NODE hi (null) ((null):foo XML_NAMESPACE_DECL) (x:bar XML_NAMESPACE_DECL)
def ns: ((null):foo XML_NAMESPACE_DECL) (x:bar XML_NAMESPACE_DECL) 3/XML_TEXT_NODE text
@nico
nico / foo.diff
Created April 17, 2017 15:42
tim.exe memory tracking
diff --git a/tim.cc b/tim.cc
index 4d8200e..f6cfc19 100644
--- a/tim.cc
+++ b/tim.cc
@@ -16,7 +16,11 @@
#include <stdlib.h>
#include <windows.h>
+#include <psapi.h> // Must be after windows.h
+

Keybase proof

I hereby claim:

  • I am nico on github.
  • I am thakis (https://keybase.io/thakis) on keybase.
  • I have a public key whose fingerprint is 6CB0 90B6 D027 3BCF FD99 475D E98E DBFB D44D EE5C

To claim this, I am signing this object:

@nico
nico / gist:b0cca071e5b1fd71f929
Last active June 3, 2019 13:14
benchmarking different file stat()ing techniques on windows (parts based on https://github.com/cpizano/Kodefind/blob/master/src/engine_v1_win.cc)
// cl stattest.cc /Ox /GL /GR-
#include <algorithm>
#include <iostream>
#include <map>
#include <set>
#include <string>
#include <vector>
using namespace std;
#include <direct.h>
#include <algorithm>
#include <iostream>
#include <map>
#include <set>
#include <string>
#include <vector>
using namespace std;
#include <direct.h>
#include <stdint.h>
@nico
nico / gist:5779489
Created June 14, 2013 04:37
repro for ninja issue #595
Nicos-MacBook-Pro:repro thakis$ cat repro.py
#!/usr/bin/env python
import ninja_syntax
n = ninja_syntax.Writer(open('build.ninja', 'w'))
n.rule(name='cxx',
command='clang++ -c $in -o $out -MF $out.d -MMD',
depfile='$out.d',
@nico
nico / gist:5398098
Created April 16, 2013 18:02
ninja perf data for empty chromium builds over time.
Data was collected with:
time caffeinate ./runall.sh 4d9bf949e0fd6976725dea12bcc254fd39da6490 master ./gettime.sh | tee time.csv
$ cat runall.sh
#!/bin/bash
#
# This script runs a given command over a range of Git revisions. Note that it
# will check past revisions out! Exercise caution if there are important
@nico
nico / gist:3890115
Created October 14, 2012 23:10
saving images
// uncompressed png, no dependencies
// from https://github.com/nico/hack/blob/master/wpng/wpng.c
void wpng(int w, int h, const uint8_t* pix, FILE* f) { // pix: rgba in memory
uint32_t crc_table[256];
for (uint32_t n = 0, c = 0; n < 256; n++, c = n) {
for (int k = 0; k < 8; k++) c = (c & 1) ? 0xedb88320L ^ (c >> 1) : c >> 1;
crc_table[n] = c;
}
#define CRCWRITE(d, len) fwrite(d, 1, len, f); for (int n = 0; n < len; n++) \
crc = crc_table[(crc ^ (d)[n]) & 0xff] ^ (crc >> 8)