Skip to content

Instantly share code, notes, and snippets.

View cemeyer's full-sized avatar

Conrad Meyer cemeyer

  • Seattle, Washington
View GitHub Profile
@cemeyer
cemeyer / Migrate VMware workstation to qemu+kvm
Last active June 27, 2019 23:18
Steps to migrate a VMware VM to KVM
1) Deleted all vmware snapshots for the VM. sync. sync.
2) Followed rwmj's guide to setting up a br0 device for libvirt in Fedora.[0]
3) Grabbed vmware2libvirt[1] from Ubuntu (it's just a standalone python script) and
used it with --bridge br0 -f foo.vmx > foo.xml.
4) Converted my vmdk to raw with qemu-img[2], moved it to /var/lib/libvirtd per
instructions[3]
5) Edited my xml to point to the right disk, use the qemu/raw driver, use the right
path for kvm (/usr/bin/qemu-kvm on Fedora).
5.a) Configure a unix socket serial device (like VMware's "pipe" mode):
@cemeyer
cemeyer / fbrightcol.user.js
Created April 15, 2014 15:51
Facebook: nuke right column (crap and ads)
// ==UserScript==
// @name Facebook: Kill rightcol
// @namespace facebook.com
// @include https://www.facebook.com/*
// @include http://www.facebook.com/*
// @include https://facebook.com/*
// @include http://facebook.com/*
// @version 1
// @grant none
// ==/UserScript==
@cemeyer
cemeyer / 2013-09-15.md
Created September 15, 2013 16:02
Hack: Improving XML bad-character filtering performance by 10x (Qt4)

Backstory: Some [Unicode code points are invalid in XML][invalid]; specifically, we want to filter the code points (hex) 0-8, b-c, and e-1f. Qt4's QXmlStreamWriter() makes no attempt to filter these codepoints in the documents it writes.

So, here's our baseline, with the same benchmark we'll use later (big.gpx is a giant 142 MB file, and GPX is an XML-based format):

./gpsbabel -i gpx -f big.gpx [-o gpx -F /dev/null] (x5)

17.2 user, 4.8 system, 22.1 total

In [GPSBabel][], we already subclass QXmlStreamWriter to add other convenience methods. So our initial attempt to filter bad characters was simply to interpose on all methods that take potentially unfiltered inputs (writeAttribute(), writeTextElement(), ...) and apply a QString::replace() substitution with a QRegExp.

#!/usr/bin/python3
import base64
import binascii
import curses
import random
import queue
import struct
import sys
import time
# The libraries and binaries produced by this compiler are not compatible
# with coreutils strip (yet).
%global debug_package %{nil}
%global __spec_install_post /usr/lib/rpm/check-rpaths /usr/lib/rpm/check-buildroot \
/usr/lib/rpm/redhat/brp-compress
Name: go
Version: 0
Release: 0.__RELEASE__%{?dist}
iterable $ make install
/home/konrad/rpmbuild/BUILD/go-src/bin/6g -o _go_.6 array.go iterable.go
iterable.go:12: can't find import: container/list
make: *** [_go_.6] Error 1
iterable $ ls $GOROOT/pkg/${GOOS}_${GOARCH}/container/list.a -lh
-rw-r--r-- 1 konrad konrad 51K 2010-05-14 19:08 /home/konrad/rpmbuild/BUILD/go-src/pkg/linux_amd64/container/list.a