Skip to content

Instantly share code, notes, and snippets.

Avatar
🇺🇦

Florian Wendelborn FlorianWendelborn

🇺🇦
View GitHub Profile
View exiftool-tag-location.sh
exiftool *.ARW -gpslatitude=50.123 -gpslongitude=10.123 -gpslatituderef=N -gpslongituderef=E
View null-to-undefined.d.ts
type NullToUndefined<T> = {
[KEY in keyof T]: null extends T[KEY]
? Exclude<T[KEY], null> | undefined
: T[KEY]
}
@FlorianWendelborn
FlorianWendelborn / wtf-sliders.html
Created Oct 26, 2019
AFAIK, this is supposed to be impossible behvavior. Yet, all browsers seem to be affected.
View wtf-sliders.html
<html>
<head>
<!-- Any idea whatsoever why input.works works and input.wtf is completely
unstyled in firefox & chrome? Also, input.half-wtf works in Firefox, even
when swapping around the lines. -->
<style>
input {
-moz-appearance: none;
-webkit-appearance: none;
appearance: none;
@FlorianWendelborn
FlorianWendelborn / deep-object-partial.ts
Last active Nov 25, 2021
DeepObjectPartial<T>: Deep Partial, but Only Objects are Optional
View deep-object-partial.ts
type ExampleType = {
a: string
b: {
x: string
y: number
}
c: string[]
}
type ExtractOptionalKeys<TYPE> = { [KEY in keyof TYPE]: TYPE[KEY] extends Record<string, any> ? (TYPE[KEY] extends Array<any> ? never : KEY) : never }[keyof TYPE]
View regex-for-scss-variables-in-vue.js
const regexForScssVariablesInVue = /\$(?!t\(|router|refs|emit|event|route|t:|store|i18n)([a-z]+)/
View keybase.md

Keybase proof

I hereby claim:

  • I am FlorianWendelborn on github.
  • I am dodekeract (https://keybase.io/dodekeract) on keybase.
  • I have a public key whose fingerprint is A1E4 7ADC D550 DAE9 2337 7CF2 647E 95F1 6C71 B29F

To claim this, I am signing this object:

View shitty-rotation-hack.html
<html>
<head>
<title>Shitty Hack to Reverse Children in CSS Without Flex-Direction</title>
<style>
body {
position: absolute;
top: 0;
left: 0;
right: 0;
bottom: 0;
View replace-object-strings.ts
const replaceObjectStrings = <T extends object>(
data: T,
from: string | RegExp,
to: string
): T =>
Object.fromEntries(
Object.entries(data).map(([key, value]) => {
if (value === null) return [key, null]
switch (typeof value) {
View mapGetters.ts
const mapBranchesGetter = <G extends keyof BranchesStore>(
getter: G
): BranchesStore[G] => {
return this.context.rootGetters[`branches/${getter}`]
}
const getBranch = mapBranchesGetter('getBranch')
const mapGetter = <S, G extends keyof S>(namespace: string, getter: string): S[G] => {
return this.context.rootGetters[`${namespace}/${getter}`]
}
@FlorianWendelborn
FlorianWendelborn / illuminati.js
Last active Dec 23, 2018
Exploiting https://button.mohsh.com to make the Illuminati the Top Country
View illuminati.js
#!/usr/bin/env node
const WebSocketClient = require('websocket').client
const attempt = () =>
new Promise((resolve, reject) => {
const client = new WebSocketClient()
client.on('connectFailed', error => {
console.log('Connect Error: ' + error.toString())
resolve()