Skip to content

Instantly share code, notes, and snippets.

@bskiefer
bskiefer / Dockerfile
Created May 3, 2024 20:03
Parse Xdebug traces and produce unique listing of usages. Includes require/include files, functions/methods, used files, and a csv containing every entry.
FROM php:8.2-cli
RUN groupadd -r dev -g 433 && \
useradd -u 431 -r -g dev -s /sbin/nologin -c "Docker image user" dev
WORKDIR /home/dev
COPY trace.php /home/dev/trace.php
COPY entry.sh /home/dev/entry.sh
RUN chmod +x /home/dev/entry.sh
@bskiefer
bskiefer / json-to-php-file.php
Created May 3, 2024 19:48
Convert JSON to PHP array output file syntax
<?php
$source = file_get_contents("readfile.json");
$target = sprintf("<?php\n\nreturn = %s", JSONToPHPArrayConverter::convert($source));
file_put_contents("output.php", $target);
class JSONToPHPArrayConverter
{
/**
@bskiefer
bskiefer / xbrew.sh
Last active April 6, 2023 14:46
Automatically migrate amd64 to arm64 brew packages. Removes packages installed under /usr/local and reinstalls (if necessary) under /opt.
#!/bin/zsh
confirm=1
while getopts c flag; do
case "${flag}" in
c) confirm= ;;
esac
done
relink() {
<?php
declare(strict_types=1);
use Rector\CodeQuality\Rector\Class_\CompleteDynamicPropertiesRector;
use Rector\Config\RectorConfig;
use Rector\Core\ValueObject\PhpVersion;
use Rector\DowngradePhp74\Rector\ArrowFunction\ArrowFunctionToAnonymousFunctionRector;
use Rector\Set\ValueObject\LevelSetList;
use Rector\Set\ValueObject\SetList;
use Rector\Visibility\Rector\ClassMethod\ExplicitPublicClassMethodRector;
@bskiefer
bskiefer / README.md
Last active September 27, 2024 22:34
VSCodium Update Extensions from VS Marketplace

This script will gather the extensions currently installed for VSCodium and update them from marketplace.visualstudio.com automatically.

  • Packages defined under $SKIP are ignored.
  • Old extension folders are removed before the update is installed.

Why?

  • open-vsx.org doesn't get updated very quickly, if at all
  • it's "illegal" to use the VS Marketplace as the extension source in non-M$ products
@bskiefer
bskiefer / .pre-commit-config.yaml
Created April 1, 2022 17:04
pre-commit hooks & config
repos:
- hooks:
- id: trailing-whitespace
- id: check-docstring-first
- id: check-json
- id: pretty-format-json
- id: check-merge-conflict
- id: check-yaml
- id: debug-statements
- id: name-tests-test
@bskiefer
bskiefer / reset-expired-ad-password.ps1
Created February 16, 2022 21:58
Reset Expired AD Password
function Set-PasswordRemotely {
[CmdletBinding(DefaultParameterSetName = 'Secure')]
param(
[Parameter(ParameterSetName = 'Secure', Mandatory)][string] $UserName,
[Parameter(ParameterSetName = 'Secure', Mandatory)][securestring] $OldPassword,
[Parameter(ParameterSetName = 'Secure', Mandatory)][securestring] $NewPassword,
[Parameter(ParameterSetName = 'Secure')][alias('DC', 'Server', 'ComputerName')][string] $DomainController
)
Begin {
$DllImport = @'
@bskiefer
bskiefer / clean_node_vendor_dirs.md
Last active May 18, 2022 17:57
List & delete all node_modules and vendor directories recursively

Output:

293M /Users/name/repos/app1/vendor

504M /Users/name/repos/app1/node_modules

423M /Users/name/repos/app2/node_modules

View folders sizes:

find ~/repos -type d \( -name "vendor" -o -name "node_modules" \) -exec du -sh {} \; -maxdepth 2

Delete folders

find ~/repos -type d ( -name "vendor" -exec du -sh {} ; -o -name "node_modules" -exec du -sh {} ; ) -exec rm -rf {} ; -maxdepth 2

@bskiefer
bskiefer / blackfire.sh
Last active March 4, 2020 09:26
PHPBrew Blackfire Extension Installer
#!/usr/bin/env bash
# Automatically finds your php version, installs, and enables the blackfire extension on your current php.
source ~/.phpbrew/bashrc
EXTENSION_URL="https://packages.blackfire.io/binaries/blackfire-php/1.27.0/blackfire-php-linux_amd64-php-VERSION.so"
PHP_VERSION=$(php -r 'echo PHP_MAJOR_VERSION . PHP_MINOR_VERSION;')
EXT_DIR=$(phpbrew path ext)
@bskiefer
bskiefer / bluetooth.sh
Last active May 27, 2019 02:23
Connect rpi bluetooth devices automatically
#!/bin/bash
BLUETOOTH_DIR=/var/lib/bluetooth
for CONTROLLER_DIR in ${BLUETOOTH_DIR}/*; do
CONTROLLER_MAC=$(basename ${CONTROLLER_DIR})
if [ -d "${CONTROLLER_DIR}" ] && [[ $CONTROLLER_MAC =~ ^([0-9A-F]{2}[:]){5}([0-9A-F]{2})$ ]] ; then
for DEVICE_DIR in ${CONTROLLER_DIR}/*; do
DEVICE_MAC=$(basename ${DEVICE_DIR})
if [ -d "${DEVICE_DIR}" ] && [[ $DEVICE_MAC =~ ^([0-9A-F]{2}[:]){5}([0-9A-F]{2})$ ]] ; then