Skip to content

Instantly share code, notes, and snippets.

Avatar
😎
I do what to do.

Moriyoshi Koizumi moriyoshi

😎
I do what to do.
View GitHub Profile
View 1ヶ月で10,000行くらいのコードを書いた話など.md

この記事はpyspa advent calendar 2020の18日目の記事です。前日は、flagboyの配られたカードで勝負するでした。主旨は異なりますが、徒然草百十段の「双六の名人」が思い出されました。明日はYutaka Matsubara a.k.a. mopemopeさんの記事となります。お楽しみに。

1ヶ月で10,000行くらいのコードを書いた話

行数を書くと「いやいや、私はもっと高い生産性を持っている」、という方は少なくないだろう。登大遊氏に至っては、ネットワークプログラミングという複雑な領域での実装でありながら「1日に少なくとも3,000行程度、多く書くときで10,000行」と述べており、凡才さを思い知らされる。

さて、この記事は、私のような動物でも高効率にコードを書くために何をしたのかを備忘として残しておく主旨である。

開発環境編

@moriyoshi
moriyoshi / magic.py
Created May 6, 2020
CPython bytecode instrumentation (convert ordinary methods to async methods)
View magic.py
import bisect
import opcode
import dis
import inspect
import sys
import types
from collections import defaultdict
import httpx
@moriyoshi
moriyoshi / magic.py
Created May 6, 2020
CPython bytecode instrumentation (convert ordinary methods to async methods)
View magic.py
import bisect
import opcode
import dis
import inspect
import sys
import types
from collections import defaultdict
import httpx
View test1.c
#include <errno.h>
#include <unistd.h>
#include <pthread.h>
#include <signal.h>
static pthread_t thr;
static pthread_mutex_t mtx1 = PTHREAD_MUTEX_INITIALIZER;
static pthread_cond_t cond1 = PTHREAD_COND_INITIALIZER;
static pthread_mutex_t mtx2 = PTHREAD_MUTEX_INITIALIZER;
View gist:bc20d99289b05c3dd7c5c7b7857330a2
IPL:HARD-RESET
memory test ... ok
flinstall OK
boot version: 1.0.0
PKG "3x3LIGHTNING"
CPU "Atheros/QCA9558"
Revision 113.0 CLOCK 720.0 MHz
HEAP MEMORY 262144 bytes
View gist:ddc1d7b9c2d3f4f192c39678c1d8d789
IPL:HARD-RESET
memory test ... ok
flinstall OK
boot version: 1.0.0
PKG "3x3LIGHTNING"
CPU "Atheros/QCA9558"
Revision 113.0 CLOCK 720.0 MHz
HEAP MEMORY 262144 bytes
View Dockerfile
FROM docker:dind
RUN apk add dumb-init
COPY start.sh /
ENTRYPOINT ["/usr/bin/dumb-init", "--"]
CMD ["/start.sh"]
@moriyoshi
moriyoshi / xpproductkey.py
Created Sep 8, 2019
Recover a XP product key from the registry
View xpproductkey.py
import math
# HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\DigitalProductId
# offset from 28 (0x1c) to 43 (0x2b)
b = [0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00]
digits = "BCDFGHJKMPQRTVWXY2346789"
def base24(b):
v = sum((256 ** i) * c for i, c in enumerate(b))
View lz4decodeframes.php
<?php
function lz4decodeframes($in) {
if (substr($in, 0, 4) !== "\x04\x22\x4d\x18") {
throw new Exception();
}
$o = 6;
$f = ord($in[4]);
if ($f & 8) {
$o += 8;
}
View LICENSE
Copyright (c) 2014 The Go Authors. All rights reserved.
Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions are
met:
* Redistributions of source code must retain the above copyright
notice, this list of conditions and the following disclaimer.
* Redistributions in binary form must reproduce the above
copyright notice, this list of conditions and the following disclaimer