Skip to content

Instantly share code, notes, and snippets.

View moriyoshi's full-sized avatar
😎
I do what to do.

Moriyoshi Koizumi moriyoshi

😎
I do what to do.
View GitHub Profile
{
"argv": [
"spark-launch-ipykernel",
"-f",
"{connection_file}"
],
"display_name": "Python 3 (ipykernel)",
"language": "python",
"metadata": {
"debugger": true
console.log('%c ', unescape(escape('👤👩👳👰👬👡👹😺👩👮👬👩👮👥😭👢👬👯👣👫😻👢👡👣👫👧👲👯👵👮👤😺😣👦👦👦😠👵👲👬😨👤👡👴👡😺👩👭👡👧👥😯👳👶👧😫👸👭👬😻👢👡👳👥😶😴😬👐🙈🙎😲👚👹🙂😲👚👘🙊👺👡👗😹👵👐👓🙉👸🙌👪🙅👩🙉🙈👚👰👚👘👤🙃👢😳👧😹🙉👪👕👵🙎🙃🙁😱🙌👪👑👧🙍👔🙉😰🙉🙄🙍👷🙉👩🙂😴👢👗👸👵👣👺😰👩👡🙈👒😰👣🙄👯👶🙌😳👤😳👤👹😵😳🙍👹😵👶👣👭👣👶🙍👪🙁👷🙍🙃😹👺👤👭👣👩👐👪👸👷👙👘👒👯🙉🙇👑😹🙉👫😰👸🙎👹🙁😱🙌👪👒👪🙌👓😴👸🙎👩🙁👸🙌👓😴👺🙎👩🙁👹🙌👓😴😱🙏👓🙁👺👣👹😰👵🙎👓🙁👸🙌👪👧👴🙌👪👣😴🙉🙄🙉👵🙎👭👧👸🙎👘👙😱🙌👪👚👯🙌👔👕👵🙎👗🙅👹🙍👩🙁👹🙍👩🙁👷🙉🙄🙁👸🙌👔🙉👵🙎👓🙁😴🙌👪👕👧🙍👔👫👧🙍👔👫👧🙍🙃🙁👷🙍👓😰😰🙌👪🙍👧🙎👓😴😰🙉🙄🙉😲🙉🙄🙉😲🙉🙄🙁👧🙍🙄🙅👴🙎🙃😴😱🙉🙄🙍👧🙍👪🙅👧🙍👪🙅👧🙍🙃🙁👷🙍👓😰👺🙌👪👕👧🙍👓😴😱🙉🙄👫👵🙏🙃🙁😵🙌👪👧👧🙍🙃🙁👷🙍👓😰👸🙌👪👑👵🙍👺👤😲🙌👔👕👵🙎😲🙅😳🙌👪👙👧🙎👹😴😲🙉🙄🙁👧🙍🙄🙁👸🙌👪👑👴🙌👪👑😱🙉🙄🙅😱🙉🙄🙅😱🙉🙄🙁👧🙍🙄🙁😲🙌👪👫👴🙎👓😴😴🙉🙄🙅😳🙉🙄🙅😳🙉🙄🙁👧🙍🙄🙁👹🙌👪🙍👴🙎👩😴😵👡🙃😰😱🙌👪👬👨🙍👪🙅👧🙍👪🙅👧🙍🙃🙁👷🙍👓😰👺🙌👪👕👧🙎🙃😴😳🙉🙄🙉👷🙉🙄🙉👷🙉🙄🙁👧🙍🙄🙅👴🙍👹🙁👹🙌👪👕👧🙍👔🙅👧🙍👔🙅👧🙍🙃🙁👷🙍👓😰👸🙌👪🙉👵🙎👺👚😲🙌👔👙👵🙎🙇🙅😰🙉🙄👑👧🙍🙃🙁👷🙍🙃😴😳🙏🙃😰👵🙎👪👑👧🙏👓😴😵🙉🙄👫👵🙏👓🙁👷🙉🙄🙁👷🙍👓😴😲🙌👔🙉👵🙍👩🙁👺🙍🙃🙁👺🙍🙃🙁👷🙉🙄🙁👷🙍👓😴😵🙌👔🙍👵🙏👓🙁👹🙎👓🙁👹🙎👓🙁👷🙉🙄🙁👷🙍👓😴😲🙌👔👕👵🙏👘👯👧👔👔🙍😵🙉🙄👣👵🙎🙇🙅😱🙌👪👫👧🙎👓😴😵🙉🙄🙁👧🙍🙄🙁👴🙎👩🙁😱🙌👪👨👪🙍🙃🙁😰🙌👪🙍👧🙎👓😴😱🙉🙄👫👵🙎🙃🙁😱🙌👪👧👧🙏👓😴😲👙👓😴👺🙍👓😴👺🙍👓🙁👷🙉🙄🙁👷🙌👪🙉😱🙌👪🙁😴🙌👪🙍👺🙌👪🙍👺🙉🙄🙁👧🙍🙄🙁👵🙍👪🙍👴🙌👪🙁😵👙👹😴👹🙎🙃😰👵🙍👪🙅👧🙎👓😴😴🙌👔👕👵🙍👹🙁😱🙌👪👧👴🙏👓😴😲👙👔👕👵🙏👓🙁😱🙌👪👫👧🙍🙃🙁👷🙍🙃😰😲🙌👔👕👵🙏🙇😰👷🙉🙄👫👵🙍👗🙅👺🙌👪🙉👧🙍👹😴👹🙉🙄🙁👧🙍👔🙅👺🙌👪🙍👴🙍👹😴👹🙉🙄🙍👵🙍👹🙁👺🙌👪🙍👧🙍🙃🙁👷🙍👓😰👺🙌👪🙍👧🙍👹😴👺🙉🙅😰😱🙏🙃🙁👸🙍😲🙍👴🙍👓😴👹🙉🙄👕👵🙎👹😰👹🙌👪🙍👧🙏🙃😴😱🙌👔👑👵🙎👩🙁👸🙍👭🙅👹🙎👹🙁👹🙎👹🙁👷🙉🙄🙁👸🙌👔👙👵🙍👓🙁😲🙌👪🙉👧🙍👪🙍👧🙍👪🙍👧🙍🙃🙁👷🙍👓😰😲🙉🙄🙍👵🙍👓🙁👹🙍👩🙁👹🙍👩🙁👷🙉🙄🙁👸🙌👔👑👵🙎

この記事は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 16:50
CPython bytecode instrumentation (convert ordinary methods to async methods)
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 16:49
CPython bytecode instrumentation (convert ordinary methods to async methods)
import bisect
import opcode
import dis
import inspect
import sys
import types
from collections import defaultdict
import httpx
#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;
@moriyoshi
moriyoshi / gist:bc20d99289b05c3dd7c5c7b7857330a2
Created November 16, 2019 17:52
WG1800HP2 boot sequence
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
@moriyoshi
moriyoshi / gist:ddc1d7b9c2d3f4f192c39678c1d8d789
Created November 16, 2019 17:52
WG1800HP2 boot sequence
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
FROM docker:dind
RUN apk add dumb-init
COPY start.sh /
ENTRYPOINT ["/usr/bin/dumb-init", "--"]
CMD ["/start.sh"]
@moriyoshi
moriyoshi / xpproductkey.py
Created September 8, 2019 22:04
Recover a XP product key from the registry
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))