Skip to content

Instantly share code, notes, and snippets.

Avatar
🌚
Dark mode propaganda account

Alex Vanderbist AlexVanderbist

🌚
Dark mode propaganda account
View GitHub Profile
@AlexVanderbist
AlexVanderbist / opendb.sh
Created Sep 17, 2020
`opendb` command - opens the database for a Laravel app in your GUI
View opendb.sh
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-)
View opendb-ddev.sh
opendb () {
unset GREP_OPTIONS
PORT="$(ddev describe | ggrep -Pio "(?<=port=)[0-9]*")"
open mysql://db:db@127.0.0.1:${PORT}/db
}
@AlexVanderbist
AlexVanderbist / alfred_search_engine_url
Created Apr 20, 2021
Explain shell Alfred search engine
View alfred_search_engine_url
alfred://customsearch/Explain%20shell%20%27%7Bquery%7D%27/explain/utf8/%2B/https%3A%2F%2Fexplainshell.com%2Fexplain%3Fcmd%3D%7Bquery%7D
@AlexVanderbist
AlexVanderbist / fn-live-template-phpstorm.xml
Created Jul 22, 2020
PhpStorm arrow function live template
View fn-live-template-phpstorm.xml
<template name="fn" value="fn ($TYPE$ $INSTANCE$) =&gt; $INSTANCE$$END$" description="Arrow function" toReformat="false" toShortenFQNames="true">
<variable name="TYPE" expression="completeSmart()" defaultValue="" alwaysStopAt="true" />
<variable name="INSTANCE" expression="concat(&quot;$&quot;, camelCase(TYPE))" defaultValue="" alwaysStopAt="false" />
<context>
<option name="PHP Expression" value="true" />
<option name="PHP Statement" value="true" />
</context>
</template>
@AlexVanderbist
AlexVanderbist / ScopeFilter.php
Created Dec 6, 2019
laravel-query-builder scope filter with model binding
View ScopeFilter.php
<?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;
View blog_day_59.md

Ironisch genoeg eindigt mijn stage met lagere temperaturen dan dat het begonnen is in de winter...

View blog_day_58.md

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

View blog_day_57.md

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

View blog_day_56.md

Hoezo zit ik al aan de laatste week van m'n stage? De tijd is echt gevlogen (de weekends aan de andere kant ook wel...). Voor de laatste week staat er nog niet veel op het programma. Ik zal waarschijnlijk nog wat verder werken aan het geheime project en de rest van de week wat dingen afronden.

Vandaag werk ik aan het menubar icoontje. Ook dat ondersteund electron native en cross-platform maar wel binnen de main thread. Spijtig genoeg zit alle applicatie logica in de Vue app. Als een menu item uit het contextmenu van het icoontje een actie wil aanroepen zou er dus in principe een open browser/electron window moeten zijn. Gelukkig heeft Electron ook hieraan gedacht en kunnen onzichtbare browserwindows worden geopend specifiek voor dit soort gevallen. In eerste instantie vond ik het nogal een louche oplossing maar in praktijk is het meer dan snel genoeg, zeker voor wat wij proberen te doen.

Het is vandaag ook paasmaandag, dat wil hier zeggen dat we gaan uit-eten. Dat gebeurt zoals altijd bij een kleine Italiaa

View blog_day_55.md

Vandaag begon een beetje al een luie, grijze vrijdag. Ik had nog wat kleine issues in te halen en het werd tijd dat ik mijn werkcomputer eens opkuiste. De voorbije maanden heb ik zo goed als iedere package van de GitHub repo binnengehaald inclusief nog enkele kopieen voor tests. Tijd om wat orde op zaken te zetten.

Tijdens de middag eten we hier meestal allemaal samen. Vaak zorgt dat ook wel voor de nodige creatieve input. Je hoort waar andere mensen mee bezig zijn, krijgt wat feedback op je eigen projecten/opdracten en het belangrijkste van al: het is een beetje een break van 8 uur per dag programmeren. Deze middag werd er gepraat over het geheime project. Aangezien Electron eigenlijk niet veel meer is dan een minimale browser is het belangrijk om die "browser feeling" zoveel mogelijk weg te werken. Zo werken we met Vue om alles realtime en snappy te maken en een globale store via Vuex om de verschillende onderdelen in sync te houden met elkaar. Bijvoorbeeld wanneer iets aan het laden is in een onderdeel mo