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() | |
{ |
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), |
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; } |
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 | |
# |
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 | |
} | |
} | |
} |
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. |
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 |
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 |
NewerOlder