Skip to content

Instantly share code, notes, and snippets.

View ghostwriter's full-sized avatar
🐘
while(!succeed=try())

Nathanael Esayeas ghostwriter

🐘
while(!succeed=try())
  • 0.0.0.0
View GitHub Profile
@ghostwriter
ghostwriter / ConfigProvider.php
Created March 31, 2025 13:55
A custom middleware that delegates authentication to a specific adapter.
<?php
return [
'dependencies' => [
'factories' => [
'BasicAuthMiddleware' => function (ContainerInterface $container): CustomAuthenticationMiddleware {
$adapter = $container->get(BasicAuthAdapter::class);
return new CustomAuthenticationMiddleware($adapter);
},
'OAuth2Middleware' => function (ContainerInterface $container): CustomAuthenticationMiddleware {
@ghostwriter
ghostwriter / Functor.php
Last active September 28, 2024 18:32
Polynomial Functors in PHP
<?php
interface Functor
{
/**
* Maps a function over the functor.
*
* @template A
* @template B
* @param callable(A): B $f
@ghostwriter
ghostwriter / build-and-test-php-extension.yml
Created September 13, 2024 20:22
Build & Test PHP Extensions via GitHub Actions
# BlackLivesMatter
name: Build & Test Extension
on:
push:
pull_request:
jobs:
qa:
runs-on: ubuntu-latest
@ghostwriter
ghostwriter / abnf-to-regex.txt
Last active September 13, 2024 20:50
abnf-to-regex generator output (https://github.com/ghostwriter/abnf)
(?(DEFINE)
# Basic components
(?<ALPHA>[A-Za-z])
(?<BIT>[01])
(?<DIGIT>[0-9])
(?<HEXDIG>[0-9A-Fa-f])
(?<CHAR>[\x01-\x7F])
(?<VCHAR>[\x21-\x7E])
(?<SP>[\x20])
(?<WSP>[\x20\x09])
@ghostwriter
ghostwriter / dump.php
Created August 25, 2024 22:39
list of characters to avoid
<?php
/*
Conflicts with file systems: :, *, ", <, >, |
Conflicts with shell variables: $
Conflicts with bash brace expansion {, }
*/
@ghostwriter
ghostwriter / gh_codecov.sh
Created June 12, 2024 15:21
Using the `gh` to query repositories and set secrets for each non-fork repository.
#!/bin/bash
# GitHub username/organization
USERNAME="ghostwriter"
# Secret name and value
SECRET_KEY="CODECOV_TOKEN"
SECRET_VALUE="global-upload-token"
# Get the list of repositories for the user
@ghostwriter
ghostwriter / obfuscate.php
Last active June 12, 2024 15:27
Obfuscate a string to prevent spam-bots from sniffing it.
<?php
#BlackLivesMatter
/**
* Obfuscate a string to prevent spam-bots from sniffing it.
*/
function obfuscate(string $value): string
{
$safe = '';
<?php
function getOpenBinary(): string
{
return match (PHP_OS_FAMILY) {
// Using PowerShell allows us to open the file in the background
'Windows' => 'powershell Start-Process',
'Darwin' => 'open',
'Linux' => 'xdg-open',
@ghostwriter
ghostwriter / pg-backup.sh
Last active January 17, 2024 19:25
Rotating PostgreSQL Backup Script
#!/bin/bash
# for use with cron, eg:
# 0 3 * * * postgres /var/db/pg-backup.sh foo_db
if [[ -z "$1" ]]; then
echo "Usage: $0 <db_name> [pg_dump args]"
exit 1
fi
num_args=$#
max_runs=$1
sleep=$2
cmd=$3
shift 3
args=("$@")
runs=0
[[ $num_args -le 2 ]] && echo "Usage retry.sh <sleep> <retry_times> <command>" && exit 0;
until [[ $runs -ge $max_runs ]]
do