Skip to content

Instantly share code, notes, and snippets.

Avatar
💭
Not liking the clutterful GitHub

Olivier Mehani shtrom

💭
Not liking the clutterful GitHub
View GitHub Profile
@shtrom
shtrom / echo.php
Created Feb 15, 2021
A simple echo page in PHP
View echo.php
<?php
/** A simple echo page in PHP
*
* It just outputs the request it received back, including HTTP headers.
*/
if (!function_exists('getallheaders')) {
// Polyfill for PHP<7.3
function getallheaders()
{
@shtrom
shtrom / wallabag_merge_tags.py
Last active Jan 21, 2021
Semi-automated tag deduplicator for Wallabag
View wallabag_merge_tags.py
#!/usr/bin/env python3
import csv
import logging
import sys
from fuzzywuzzy import process
from spellchecker import SpellChecker
def main(infilename: str):
@shtrom
shtrom / dial.php
Created Nov 3, 2020
dial.php - A simplistic one-page protocol handler for tel: schemes, for FRITZ!Box and Mitel phones
View dial.php
<?php
/**
* dial.php - A simplistic one-page protocol handler for tel: schemes.
*
* Copyright (C) 2020 Olivier Mehani <shtrom@ssji.net>
*
* This renders a simple HTML form allowing to call a number,
* and to register itself as a protocol handler.
*
* Multiple devices are supported (see the `$devices` array),
@shtrom
shtrom / php_array_funcs_vs_foreach.php
Created Oct 25, 2019
Comparing PHP array_* functions vs. foreach.
View php_array_funcs_vs_foreach.php
$referenceMap = [ "sessRef1" => "ibkRef1", "sessRef2" => "ibkRef2", "sessRef3" => null, "sessRef1_2" => "ibkRef1" ];
function test_funcs(array $map) { $values = array_values($map); $newMap = array_merge($map, array_combine($values, $values)); return $newMap; }
function test_foreach(array $map) { $newMap=[]; foreach($map as $k => $v) { $newMap[$k] = $v; $newMap[$v] = $v; } return $newMap; }
function fmicrotime_funcs($map, $count=10000) { $time=microtime(true); for($i=0;$i<$count;$i++) { test_funcs($map); }; $delta=microtime(true)-$time; echo $delta; };
function fmicrotime_foreach($map, $count=10000) { $time=microtime(true); for($i=0;$i<$count;$i++) { test_foreach($map); }; $delta=microtime(true)-$time; echo $delta; }
@shtrom
shtrom / read-kinesis-stream.sh
Last active Dec 9, 2020
Simple script to read new records from an AWS Kinesis stream
View read-kinesis-stream.sh
#!/bin/bash -eu
#
# Test script to read from a Kinesis Data Stream
#
# Olivier Mehani <olivier.mehani@learnosity.com>
#
# Example usage:
#
# REGION=ap-southeast-2 AWS_PROFILE=playground ./read-stream.sh kinesis-cross-account-playground
#
@shtrom
shtrom / staticVsSelf.php
Last active Mar 25, 2019
`static` vs `self`
View staticVsSelf.php
<?php
class VarHolder {
const VAR = 2;
public function showVar() {
echo self::VAR;
echo static::VAR;
}
}
View complexity.c
int doSomething(int n)
{
for (int i = 1; i <= n; i++)
{
for (int j = 1; j < n; j += i)
{
// Some O(1) task
}
}
}
@shtrom
shtrom / fritz_cert_upload.py
Last active Jan 13, 2021
Upload a TLS key and cert to a FRITZ!Box, in pretty Python
View fritz_cert_upload.py
#!/usr/bin/env python3
# vim: fileencoding=utf-8
"""
Upload a TLS key and cert to a FRITZ!Box, in pretty Python
Copyright (C) 2018 Olivier Mehani <shtrom@ssji.net>
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or
(at your option) any later version.
@shtrom
shtrom / fritzbox-cert-update.sh
Created Jan 28, 2018 — forked from wikrie/fritzbox-cert-update.sh
Fritzbox Fritz!Box AVM SSL Letsencrypt automatically update
View fritzbox-cert-update.sh
#!/bin/bash
# parameters
USERNAME="maybe empty"
PASSWORD="fritzbox-password"
CERTPATH="path to cert eg /etc/letsencrypt/live/domain.tld/"
CERTPASSWORD="cert password if needed"
HOST=http://fritz.box
# make and secure a temporary file
@shtrom
shtrom / wallabag19-export.php
Created Nov 27, 2016
Export Wallabag 1.9 (and maybe other 1.x) library.
View wallabag19-export.php
<?php
/* Export Wallabag 1.9 (and maybe other 1.x) library.
*
* Olivier Mehani <shtrom+wallabag@ssji.net>, 2016
* MIT license (same as Wallabag itself)
*
* Particularly useful in * case the normal export process dies with a message
* such as
*
* PHP Fatal error: Allowed memory size of 134217728 bytes exhausted (tried to allocate 74558957 bytes) in /srv/www/wallabag/inc/poche/Tools.class.php on line 231