Skip to content

Instantly share code, notes, and snippets.


Oleh Prypin oprypin

View GitHub Profile
oprypin /
Created Sep 2, 2022
Disallow unexpected logging messages in Python unittest
import logging
class DisallowLogsHandler(logging.Handler):
def emit(self, record):
raise AssertionError(f'Unexpected log: "{self.format(record)}"')
logging.lastResort = DisallowLogsHandler(level=logging.WARNING)
View S3 config api.json
"IndexDocument": {
"Suffix": "index.html"
"ErrorDocument": {
"Key": "api/1.2.2/404.html"
"RoutingRules": [
"Condition": {
oprypin /
Last active Apr 19, 2020
Unused code deletion based on the output not being affected
set -x -e
check() {
mkdir -p /tmp/a /tmp/b
cp /tmp/a/
sed -i -e "${1}d"
cp /tmp/b/
(cd /tmp/b && crystal build --warnings=none || return 4
(cd /tmp/a && crystal build --warnings=none || return 5
oprypin / konversation.patch
Created Nov 10, 2018
Patches to integrate bridge bot messages (FromGitter)
View konversation.patch
diff --unified --recursive konversation-1.7.2/src/viewer/chatwindow.cpp
--- konversation-1.7.2/src/viewer/chatwindow.cpp 2017-05-09 17:29:00.000000000 +0200
+++ 2017-11-07 00:13:25.359449297 +0100
@@ -278,7 +278,15 @@
void ChatWindow::append(const QString& nickname, const QString& message, const QHash<QString, QString> &messageTags, const QString& label)
if(!textView) return;
- textView->append(nickname, message, messageTags, label);
+ QString nickname_ = nickname;
+ QString message_ = message;
#!/usr/bin/env python3
"""Create a file tree with all chat logs from Quassel.
./ /var/lib/quassel/quassel-storage.sqlite
The file names will have this format:
The lines in each file will have this format:
[HH:MM:SS] <nick> message
oprypin / THE 99 HOLE.lua
Created Aug 5, 2018
My SHENZHEN I/O puzzles
View THE 99 HOLE.lua
function get_name()
return "THE 99-HOLE"
function get_description()
return {
"*alice* is an XBus input connected to an electronic transmitter.",
"*bob* is an XBus output connected to an electronic receiver.",
"Receive packets of data from *alice* and send them to *bob*.",
"Numbers are between 1 and 26.",
View ~∕.local∕share∕kservices5∕open-shell-here.desktop
[Desktop Entry]
[Desktop Action openShellHere]
Name=Open Shell Here
Exec=/usr/bin/env fbf=%f /usr/bin/konsole
oprypin /
Last active Mar 5, 2021
Crystal parallel jobs from an array
def paralleln(items : Indexable(T), &block : T -> R) forall T, R
results = Array(R).new(items.size) { r = uninitialized R }
done = Channel(Exception?).new
items.each_with_index do |item, i|
spawn do
results[i] =
rescue e
done.send e
#!/usr/bin/env python
import re
last_lines = lines = None
with open('/var/log/pacman.log') as log_file:
for line in log_file:
if'\btransaction started\b', line):
lines = []