Skip to content

Instantly share code, notes, and snippets.

@devdave
devdave / Concepts.md
Created May 29, 2022 19:30 — forked from DarinM223/Concepts.md
Rust concept explanations

My explanation of the main concepts in Rust

There are three main concepts with Rust:

  1. Ownership (only one variable "owns" the data at one time, and the owner is in charge of deallocating)
  2. Borrowing (you can borrow a reference to an owned variable)
  3. Lifetimes (all data keeps track of when it will be destroyed)

These are fairly simple concepts, but they are often counter-intuitive to concepts in other languages, so I wanted to give a shot at

@devdave
devdave / nde_winamp_format.txt
Created April 22, 2022 19:07
Winamp media library NDE (Nullsoft Database Engine) format
Nullsoft Database Engine Format Specifications v1.0
---------------------------------------------------
1. Tables
@devdave
devdave / gist:86caf21b18e2a9c35ad451bf4e3ff762
Created September 4, 2021 03:44 — forked from hest/gist:8798884
Fast SQLAlchemy counting (avoid query.count() subquery)
def get_count(q):
count_q = q.statement.with_only_columns([func.count()]).order_by(None)
count = q.session.execute(count_q).scalar()
return count
q = session.query(TestModel).filter(...).order_by(...)
# Slow: SELECT COUNT(*) FROM (SELECT ... FROM TestModel WHERE ...) ...
print q.count()
@devdave
devdave / rust-python-cffi.md
Created August 16, 2021 23:53 — forked from seanjensengrey/rust-python-cffi.md
Calling Rust from Python/PyPy using CFFI (C Foreign Function Interface)

This is a small demo of how to create a library in Rust and call it from Python (both CPython and PyPy) using the CFFI instead of ctypes.

Based on http://harkablog.com/calling-rust-from-c-and-python.html (dead) which used ctypes

CFFI is nice because:

  • Reads C declarations (parses headers)
  • Works in both CPython and PyPy (included with PyPy)
  • Lower call overhead than ctypes
@devdave
devdave / book.py
Last active February 1, 2020 07:09
Example code for having routed classes in Flask. These are different than View Classes or Blueprints as it allows exposing individual methods to the routing system
"""
Example code
============
"""
import typing as T
from flask import request, redirect
if T.TYPE_CHECKING:
from ..lib.cls_endpoint import CLSEndpointFlask
@devdave
devdave / data_migration.py
Last active April 8, 2020 02:25
sqlalchemy alembic data migration example
"""Convert lat/long from float to int
Revision ID: b020841d98e4
Revises: 6e741a21efc8
Create Date: 2019-07-10 20:03:38.282042
Given a source table like
class GPS(Base):
# $--RMC, hhmmss.sss, x, llll.lll, a, yyyyy.yyy, a, x.x, u.u, xxxxxx,, , v * hh < CR > < LF >
@devdave
devdave / runner.py
Last active July 6, 2019 22:20
non-blocking python subprocess
import subprocess
import threading
import queue
import os
import time
class Runner(object):
def __init__(self, cmd: []):
self.cmd = cmd
@devdave
devdave / reloader.py
Created June 4, 2019 15:21
Slimmed down twisted compatible reloader
"""
A flask like reloader function for use with txweb
In user script it must follow the pattern
def main():
my main func that starts twisted
if __name__ == "__main__":
@devdave
devdave / background.js
Created October 16, 2018 20:34 — forked from akirattii/background.js
Message passing of Chrome Extension example
/*****************************************************************
* onMessage from the extension or tab (a content script)
*****************************************************************/
chrome.runtime.onMessage.addListener(
function(request, sender, sendResponse) {
if (request.cmd == "any command") {
sendResponse({ result: "any response from background" });
} else {
sendResponse({ result: "error", message: `Invalid 'cmd'` });
}
@devdave
devdave / notes.txt
Created September 18, 2018 19:01
Virtualenvwrapper-win post project hook to make a komodo project file.
Dislaimer
#########
I've been using Komodo IDE since the mid-90's but I AM NOT AN ACTIVE STATE EMPLOYEE. This is on your ownware with a I don't care license.
No warranty of the code is offered, read the code, and only install it if you understand what it does.
Semi-rant
#########
Pre-retirement, it was my in-house rule that all projects used virtualenv. It made it easier to `pip freeze > requirements.txt`
dependancies. Last thing I ever wanted to experience was having a "Oh my god everything is broken" call and spend an hour reverse