Ironisch genoeg eindigt mijn stage met lagere temperaturen dan dat het begonnen is in de winter...
#!/bin/bash | |
# --- Configuration --- | |
PROCESS_NAME_PATTERN="horizon:work" | |
SLEEP_INTERVAL=1 # Seconds | |
VERBOSE_PID_MEMORY=true # Set to false to hide individual PID memory usage | |
USE_CLEAR=true # Set to true to clear screen on each update | |
# --- Initialization --- | |
# Overall statistics accumulators |
function measure(string $label = 'default') { | |
static $starts; | |
if ($starts[$label]) { | |
dump($label . ' took '. (microtime(true) - $starts[$label]) . ' seconds'); | |
} | |
$starts[$label] = microtime(true); | |
} |
alfred://customsearch/Explain%20shell%20%27%7Bquery%7D%27/explain/utf8/%2B/https%3A%2F%2Fexplainshell.com%2Fexplain%3Fcmd%3D%7Bquery%7D |
opendb () { | |
unset GREP_OPTIONS | |
PORT="$(ddev describe | ggrep -Pio "(?<=port=)[0-9]*")" | |
open mysql://db:[email protected]:${PORT}/db | |
} |
opendb () { | |
[ ! -f .env ] && { echo "No .env file found."; exit 1; } | |
DB_CONNECTION=$(grep DB_CONNECTION .env | grep -v -e '^\s*#' | cut -d '=' -f 2-) | |
DB_HOST=$(grep DB_HOST .env | grep -v -e '^\s*#' | cut -d '=' -f 2-) | |
DB_PORT=$(grep DB_PORT .env | grep -v -e '^\s*#' | cut -d '=' -f 2-) | |
DB_DATABASE=$(grep DB_DATABASE .env | grep -v -e '^\s*#' | cut -d '=' -f 2-) | |
DB_USERNAME=$(grep DB_USERNAME .env | grep -v -e '^\s*#' | cut -d '=' -f 2-) | |
DB_PASSWORD=$(grep DB_PASSWORD .env | grep -v -e '^\s*#' | cut -d '=' -f 2-) |
<template name="fn" value="fn ($TYPE$ $INSTANCE$) => $INSTANCE$$END$" description="Arrow function" toReformat="false" toShortenFQNames="true"> | |
<variable name="TYPE" expression="completeSmart()" defaultValue="" alwaysStopAt="true" /> | |
<variable name="INSTANCE" expression="concat("$", camelCase(TYPE))" defaultValue="" alwaysStopAt="false" /> | |
<context> | |
<option name="PHP Expression" value="true" /> | |
<option name="PHP Statement" value="true" /> | |
</context> | |
</template> |
<?php | |
namespace App\Http\Filters; | |
use Illuminate\Database\Eloquent\Builder; | |
use Illuminate\Database\Eloquent\Model; | |
use Illuminate\Support\Arr; | |
use Illuminate\Support\Str; | |
use ReflectionObject; | |
use Spatie\QueryBuilder\Filters\Filter; |
Vandaag is het tijd om de puntjes op de i te zetten voor de twee nieuwe packages. Beiden hebben nog wat basic tests en documentatie nodig en moeten dan getagd worden. Gelukkig krijg ik hier wel wat hulp. Zo kunnen beide packages tegen de middag als v1.0.0 getagged worden. Tegen 13u zitten ze allebei al op 1.0.1, je mist bijna altijd wel iets.
Het is altijd leuk als je werk geapprecieerd wordt. Zo is de Flysystem integratie opgenomen in de officiële Laravel documentatie!
De rest van de dag probeer ik bij wijze van ultieme integratietest de Dropbox driver te gebruiken in het backup pakket. Iets dat ik waarschijnlijk zelf ook zal gebruiken zo. Dat ging op eerste zicht zonder problemen maar bij het oplijsten van de backups ging het mis. Zo duurde het redelijk lang (3 minuten) om gewoon een lijstje van 2 backups weer te geven... Na een beetje debuggen werd het duidelijk dat heel wat simpele filesystems calls (zoals bv. kijken of een bestand bestaat) meerdere keren werden uitgevoerd binnen de dezelfde backup coll
Nog maar 4 dagen! Om sterk te eindigen begin ik vandaag niet aan één maar twee nieuwe packages...
De Dropbox API bestaat ondertussen al enkele jaren en is redelijk goed geintegreerd in de opensource wereld. Zo zijn er binnen PHP alleen al een aantal third party Dropbox SDKs bovenop de officiele PHP SDK van Dropbox zelf. Ook in de andere packages die ze hier maken wordt Dropbox vaak gebruikt d.m.v. Flysystem in Laravel.
Allemaal goed en wel tot Dropbox beslist de stekker eruit te trekken en enkel nog support te bieden voor hun v2 API. Een officiele PHP SDK komt er ook niet meer. Tijd om het heft in eigen handen te nemen dus.
Aangezien een volledige Dropbox PHP SDK schrijven nogal veel werk is (denk maar aan alle Dropbox specifieke share opties) hebben we beslist enkel de endpoints nodig voor Flysystem integratie te voorzien. Als tweede package gaan we dan ook de Flysystem integratie zelf voorzien.
Zo gezegd zo gedaan, de rest van de dag werk ik verder aan de eerste simpele endpoints voor directory listing