From 716fa9e840b7c3063574316fd7e0246a2bcb9332 Mon Sep 17 00:00:00 2001 From: Jasper Ras Date: Wed, 30 Jul 2025 10:37:50 +0200 Subject: vault backup: 2025-07-30 10:37:50 --- Go Flags.md | 22 ++++++++++++ ... Latency TCP Might Be Caused By TCP No Delay.md | 14 ++++++++ Port stuck in migrating.md | 42 ++++++++++++++++++++++ Switch networks and external networks on OS5.md | 6 ++++ bilat-2025-07-23.md | 9 +++++ git-crypt.md | 12 +++++++ ipcalc.md | 3 ++ 7 files changed, 108 insertions(+) create mode 100644 Go Flags.md create mode 100644 High Latency TCP Might Be Caused By TCP No Delay.md create mode 100644 Port stuck in migrating.md create mode 100644 Switch networks and external networks on OS5.md create mode 100644 bilat-2025-07-23.md create mode 100644 git-crypt.md create mode 100644 ipcalc.md diff --git a/Go Flags.md b/Go Flags.md new file mode 100644 index 0000000..07af1f6 --- /dev/null +++ b/Go Flags.md @@ -0,0 +1,22 @@ +[[Golang]] + +--- + +Flags! + +```go +package main + +import "flag" + +var n = flag.Bool("n", false, "omit trailing newline") +var sep = flag.String("s", " ", "seperator") + +func main() { + flag.Parse() + + if *n { + strings.Split("blaat", *sep) + } +} +``` diff --git a/High Latency TCP Might Be Caused By TCP No Delay.md b/High Latency TCP Might Be Caused By TCP No Delay.md new file mode 100644 index 0000000..a70efc1 --- /dev/null +++ b/High Latency TCP Might Be Caused By TCP No Delay.md @@ -0,0 +1,14 @@ +[[TCP]] [[Networking]] + +# High Latency TCP Might Be Caused By TCP No Delay +https://brooker.co.za/blog/2024/05/09/nagle.html + +Describes a situation where two algorithms in TCP bite each other: +- Nagle's algorithm tries to prevent sending very small data packets to minimze header overhead +- Delayed ACK delays acks until data's ready + +So the first holds packets back until an ACK is received, the second holds ACK until the response is ready. + +Also due to modern systems the penalty for small datagrams is much lower. + +To get rid of Nagle's algorithm when latency matters: enable TCP_NODELAY. diff --git a/Port stuck in migrating.md b/Port stuck in migrating.md new file mode 100644 index 0000000..26c22e1 --- /dev/null +++ b/Port stuck in migrating.md @@ -0,0 +1,42 @@ +[[Neutron]] + +--- + +# Port stuck in migrating + +Check whether DB has duplicate record: +``` +MariaDB [neutron]> select * from ml2_port_bindings where port_id = "e87c2cab-e2e8-4e7b-9014-acdf5adfff0e"; ++--------------------------------------+-----------------------------------+----------+-----------+----------------------------------------------------------------------------------+---------------------------------------------+----------+ +| port_id | host | vif_type | vnic_type | profile | vif_details | status | ++--------------------------------------+-----------------------------------+----------+-----------+----------------------------------------------------------------------------------+---------------------------------------------+----------+ +| e87c2cab-e2e8-4e7b-9014-acdf5adfff0e | n13.compute.env.vps1-lej1.one.com | ovs | normal | {"os_vif_delegation": true} | {"port_filter": true, "connectivity": "l2"} | INACTIVE | +| e87c2cab-e2e8-4e7b-9014-acdf5adfff0e | n16.compute.env.vps1-lej1.one.com | ovs | normal | {"os_vif_delegation": true, "migrating_to": "n13.compute.env.vps1-lej1.one.com"} | {"port_filter": true, "connectivity": "l2"} | ACTIVE | ++--------------------------------------+-----------------------------------+----------+-----------+----------------------------------------------------------------------------------+---------------------------------------------+----------+ +2 rows in set (0.000 sec) +``` + +Delete the that is INACTIVE +``` +MariaDB [neutron]> delete from ml2_port_bindings where port_id = "e87c2cab-e2e8-4e7b-9014-acdf5adfff0e" and host = "n13.compute.env.vps1-lej1.one.com"; +Query OK, 1 row affected (0.001 sec) +``` + +Now update port binding +``` +.venv ❯ os3 port set --host n13.compute.env.vps1-lej1.one.com e87c2cab-e2e8-4e7b-9014-acdf5adfff0e +``` + +Update binding_profile: + +``` +osc main*​​ 2s +.venv ❯ os3 port set --no-binding-profile e87c2cab-e2e8-4e7b-9014-acdf5adfff0e +``` + +``` +osc main*​​ 2s +.venv ❯ os3 port set --binding-profile os_vif_delegation=True e87c2cab-e2e8-4e7b-9014-acdf5adfff0e +``` + +Check the port status afterward, is it DOWN? Perhaps migrate the VM. diff --git a/Switch networks and external networks on OS5.md b/Switch networks and external networks on OS5.md new file mode 100644 index 0000000..73d5d3a --- /dev/null +++ b/Switch networks and external networks on OS5.md @@ -0,0 +1,6 @@ +[[GroupVPS Platform]] + +--- + +The switch networks are regular flat layer 2 networks, they act as a big switch (hence the name). +The external networks are for Floating IPs. They are also connected to the switches, but here the public IPs are on the network nodes rather than in openstack. So instead of \ No newline at end of file diff --git a/bilat-2025-07-23.md b/bilat-2025-07-23.md new file mode 100644 index 0000000..2f0525e --- /dev/null +++ b/bilat-2025-07-23.md @@ -0,0 +1,9 @@ +[[bilaterale-gesprekken-met-rutger]] + +--- + +calendar + +keystone auth middleware maken -> restrict ip per user. + +marcel huck - share netwerk diff --git a/git-crypt.md b/git-crypt.md new file mode 100644 index 0000000..9648571 --- /dev/null +++ b/git-crypt.md @@ -0,0 +1,12 @@ +# Git-Crypt +[[git]] + +--- + +[Website](https://www.agwa.name/projects/git-crypt/) + +Encrypts files in a git repository transparently. + + +## Add new user +`git-crypt add-gpg-user USER_ID` diff --git a/ipcalc.md b/ipcalc.md new file mode 100644 index 0000000..c558bbe --- /dev/null +++ b/ipcalc.md @@ -0,0 +1,3 @@ +# IPCalc +The busybox ipcalc does very little. Install RedHat Ipcalc, either via nix-shell or globally. + -- cgit v1.2.3 From cb2d833329c58d00229056c01538fa097ecb03ca Mon Sep 17 00:00:00 2001 From: Jasper Ras Date: Fri, 1 Aug 2025 10:37:07 +0200 Subject: vault backup: 2025-08-01 10:37:07 --- ...e screen border with correct convex rounding.md | 13 +++++ Excalidraw/quickshell_border_area.excalidraw.md | 64 ++++++++++++++++++++++ Item Size Position.md | 3 - LVM.md | 11 ++++ Loop devices.md | 7 +++ QtQuick.md | 0 Quickshell.md | 7 +-- 7 files changed, 97 insertions(+), 8 deletions(-) create mode 100644 Creating the screen border with correct convex rounding.md create mode 100644 Excalidraw/quickshell_border_area.excalidraw.md create mode 100644 LVM.md create mode 100644 Loop devices.md create mode 100644 QtQuick.md diff --git a/Creating the screen border with correct convex rounding.md b/Creating the screen border with correct convex rounding.md new file mode 100644 index 0000000..f731dae --- /dev/null +++ b/Creating the screen border with correct convex rounding.md @@ -0,0 +1,13 @@ +[[Quickshell]] +[[Item Size Position]] + +--- + +To create the border around the entire screen with convex rounding at the edges we can simply create an overlay rectangle over the entire screen which is transparent and then set the border size. + +Set `PanelWindow.aboveWindows: false` to regain mouse control. + +The next challenge is how to offset this rect from the edges of the screen and allow us to put visual items "inside" of it. +![[quickshell_border_area.excalidraw]] Fig1. Monitor View + +In Fig1. the white part is our rect with borders. \ No newline at end of file diff --git a/Excalidraw/quickshell_border_area.excalidraw.md b/Excalidraw/quickshell_border_area.excalidraw.md new file mode 100644 index 0000000..0779088 --- /dev/null +++ b/Excalidraw/quickshell_border_area.excalidraw.md @@ -0,0 +1,64 @@ +--- + +excalidraw-plugin: parsed +tags: [excalidraw] + +--- +==⚠ Switch to EXCALIDRAW VIEW in the MORE OPTIONS menu of this document. ⚠== You can decompress Drawing data with the command palette: 'Decompress current Excalidraw file'. For more info check in plugin settings under 'Saving' + + +# Excalidraw Data + +## Text Elements +%% +## Drawing +```compressed-json +N4KAkARALgngDgUwgLgAQQQDwMYEMA2AlgCYBOuA7hADTgQBuCpAzoQPYB2KqATLZMzYBXUtiRoIACyhQ4zZAHoFAc0JRJQgEYA6bGwC2CgF7N6hbEcK4OCtptbErHALRY8RMpWdx8Q1TdIEfARcZgRmBShcZQUebQBObR4aOiCEfQQOKGZuAG1wMFAwYogSbggAIRh9AA4AQQA2GAA1fGwABgAFeLYAR2VOgGUAcQBWXBTiyFhEcsDsKI5lYMmS + +zG5nHnia7VH+EpgNgGYeAHYEgEYAFnaGnj2CyAoSdW4G06P9yEkEQmVpbhHdoXL4QazLcSodqg5hQUhsADWCAAwmx8GxSOUAMQXBC43GrSCaXDYBHKeFCDjEVHozESLG4UbEGoAMxZhIgLMI+Hwg1gKwkkhJGkCHNh8KRAHUXpJuHxHhBxYiEHyYAL0IIPByKf8OOEcmhoQq2HASWpDmgLu0jVMIOThHAAJLEA2oXIAXVBLPIGWd3A4Qh5oMIVKw + +5VwV21wipeuYroDQYVYQQxG4F3u7SuPAuNRqNpKjBY7C4aFGp1BhdYnAAcpwxGmGqN4vELvErldg8wACJpKAp7gsghhUGaaPEACiwQyWXjgfwoKEcGIuD7qctp1GRxqDRqpwuoyuDRBCqIHAR/rnoPRpP7aEH+DCBQAvvsiiUyhJHV2AKosmTNUZGCEAArbBhgATX0fQWQQU4qFBGZIQgeZFghDl1jQTYaiObR2h4PMrhqbMeHeC5TgaUELVQZwj + +itXDm2BU52lGMtgXbUFnmIV40AaK4cIaI47hzdoPl47NQR+P4ATQEirm0G4mJ4HhCNbJiag7BVwXVfMBDhZUaQxbF8TxJARxJMkKSpAy6XQLE2Xs9kvW5Xl+SQzUyhhPSpRlOVPIlFVXPKdzU1BHVJFjV0dIgE0zVgNNrVBe1F2dV0PS9H0ED9NAE3nBUQ2IMMJFwBoo0pYgIu4N8SkQwFHhfJMEFvVBW23Jsan3eVbUrYs0zIismCrDhaw4esZJ + +E05lKOUZ007HtglXAchwQEcx0ndJMmyC9E1tRdlwW9dN23XdBIaHcrxDc9ssvE82BvNdUHvR9inq4oqtKe6ICuQhmgRZwAEVkVGBBnElZwrk0Kl9GRLt4mAjkaokb1Gs8eCFQw6j9waXZKI2HNEhbG47geW1OO43gJN+f4oG4DTbS0yEoqVJFrKMkyCTM0kkqstFDIkOFrGYU1AiyDkuR5VV1UVNEPKTLyEGlLjZRkvzlQltzpZChUwoqy1QRi7B + +zXiqKkqdF08k9BVvVwX17py4NQ3RsF2lKmN9S23LbWTe73luJtW06gsBp6nj+qLGs60hdNTj4viGiiwhu17Jq4SEZaFVHMq1unTaru2kpdpXJqyMOncjy2fDzrPd2r1upF7setPbTgNgQxzt1HjAfIpmKHSe47i3u677vj27sAeH7r5O47sfJ7AK4J47oepgDqZ5+791HgHko4ECOMRHCc2YUIfRA0Lzpd+YffuBTxuSnwUIoFRKC1FXToW5FtAl + +5nju1+KDfntfHlD6+BHTYBqKMZg2AABKFQACyAAxYYzRJSdAAFLKCuM0AA+mweG8AkJIxTOQVGtp0bOHTHJYmBxcZMUuITe4HEfJoCzBTKS1M0DgNBPTbgjM5Ys3pMZdm6dzJc2pDzGy0ByAcEFrgYW1MnLi0ChIYKYo5YKzJivRUcs1ZBQ1qVXUbtdbGlNAbOKloEoKhNilQ+lsMpZVQHbPKDtwwXBduVQxDjrqe2Rm8d48QPjKSit1TgaZNHBK + +GhHNMVxNy8XiGcTRCc5oIH2qgG+K1M5Tg2rOPOkAC4pOLluUu6Y7i0zvhdauN07qLQfLfSAzdW6pUXtPXuYB2gL0HtPGis9TjtKmF/MA5CWk8DaevSe/TNgj27lNXpxRxmCVnkeGZU9R40RqAshoSzxksOnqcHpoymkrO2aPdSmzOlHO7uA05hyV7FEuevTeoId76n3qlLeAhj6nz7OfZ5oo0BpJPA/J++gX4pjfq3PIHcwY3LuX/Z8gDbQfnQJg + +P61YsFYJZM0TAFxBjAQAFq9D+tgDg4E/qoMGOOPBsxEaBCIZQdCNNKE40wtcOSBNbgMIVKTJWzV5kKkklTQE8QorcMNCrZm4jWbGQ5MSTmlkxG0nKPzaRQsNqi2cjo5ReixXyyYeTWW/kNUai1VrYQBi4xpj1iYw25jjYUlNq89K1tMq2y8e+ZxRVkihTHDrTxOTFQ+MtO2VsOZ1JBKDiE8xkzIDhOGqNVARwswCSBKUyAiSk73X+baDOVIs5ZIq + +TtJchd7oFKOgJMsp1K6XV9R7O+tcmoN0ee/NuX9+ktJGVMN5yzu7kNnjwI4Vzu4tOmfsjpo8o3FEIgO5eCz21/zGdPFNxQJpTonbPPMK655rr2R2+do9F1gHiKMDdNywBWn7SOvp09x2nouOendBzB2zwoRulp6YagvqfUCD9V6TjfrHQmv9w9BKAamLe99F7ZnNKfVmEDxQWUbs2NB8D97R3dvLFe0Y48INdqmOQz4GGNnYfGeJAjCGbhPtGMhu + +dD7cNXHiBRqjYBO3jLLBR3+1HUO4YEtBwjKHL0rPeJ+3jHH+PdoaPRq97Q70icgwJiTxyj1Ec6eJhZjHmPKfQ6PTDCHeKzyOPEBDrGMOGevexpju7u3RNns4YT5maPFBovJ7t1wENHHwys4ZCG+qdK/UplZayfPSbs5xuD1n9MbouNesGFxj1RauDFvzUyWnRY3VcTT3aSIbs3NZlziWpijAogurLVD8tYb47J7uhE11mfU6PI46XQNkWPe54eox + +Z3BdE1MALY7dkIe68PeIQXavdv07260hmWugf8TpkrcH2oIejk+gSC2nOgcPH119t6Fv7ubDp/du5DMnpOXlhzW5qsIdW7cxT5WcPFEK8cgzJ3T2XYPY9m7/TaJPv3Bus7P6ysydu3PE9ZFt0A4+w14owz2vDeXhDseSkIuzbHvViLva0sIZIr26armkfKWu2Ds516+2g46xV2jk3If4TIxTseuX3s+fu93KHXnr05gS/TrTT7etPeGVzknMOJ3A + +5qG9gne64fDNswLue4vgNPdG9PM4Q2LPL0Z1MZNG6XsnBF6TwHNFr0Ju11LsGcODc6aHfFnT/W1dnAW/runouxM05Iuzh3tHVeU7U8rhzykn27ae+Q1nMLXcOci0+oPTGHkKieXvXeELH0d17onyeSeE/J7T6njP8es9TBT9nnu6e8+tILzn4v+fM8l/L2XwvueK/V9L0XyvDe6+N5r1X2v7e2+d6bx37vXfW+94H/3of9fh8t5H+Psfk/m/T576 + +PmffeJ/z8H4v2fI/I+ew+ffL5F8r53iWleQFBhgUyFBU2uPuHQ8dxzPj/+YAXqFCAeUbAgwOCdGwLA0Y+gAAanRJRVHoLgKcI6DwEIKMFApSgQjSijPSjxO0NjAqFRGDJmHQuyiVhAFynKJwnypTNJPGkpFwksNpNqvwrZIIqZMIrKmOCQZIgLCqiLAoi5GqOrFqNquotypokzAFEwboiwSan4OFB4lGtFFamYs1BYraFYmbJ/G8pyHYi6n6vlIV + +OgLgEcG4j6o4t4kXIJATOmAVqHINGmG5vocWLGpHAVsMrspmFbqUInPNMnKQKnOkjmpkjOPmvnIWvkhuIUq1CRG1pWm4ZANeHXNUsOFHk2o0iFgPq0rBnPDEVaHEZLl7lEQBk9qZvjjrv0iek2Met0i7hkdPDTuunLk+u0J7vZpuleq2Klp+nkVLkjtcEruUfUbxFllzokU0WHu0ZEfUYNq0QrlJhuu7vDrUUkUMUpIbqMb2rLhzt3OLjcBunMf9 + +vkaPHMTVkkVbpDu2BFkTlsakfuspGseUd5qPAcbFmjocZERyicbsTMWrkMjccHmALytcV0Z1hOrjutk9n4Qrp8bccUCxGjmUZEXHFjtDqMbjtpk9otgrgeAsRsWPLCU9kRFjq8WTrcuLpRhrieiRGCUcXhL2nHBFqUQSUsVLpFvsXcBFrzgri0akZjjSRcW8aekYTSaiYDtcPCSRGyf0vuLjqdBFncASdyVeipqyRFsiWKakbmEKRFoejKTzsCPK + +X8WPLcEqY8dmOLvyTzvgZKcqUpJqYyWicjtibSXqc8UzpSTzuxDSbiZcWlgSbaUyfcETpiTzgCTCcKScdxh6ceoJjCYaYDmcEMoiXqR8FjgGZkRuOGcersljqSUkWcJyW1jGS9spECU6XmFMZ6UzthL2ltjzupL7o6UafhPURbgWfUdmMelgWOnhNWUjsdnqTWd3OJtWTTuFgWSadWazvGeUWcC9uQjGfCeQukVLmcEMZsBMX2dCYctmbDjTs4JC + +aGSeouRGQrnuNZgVjGclluTzqKSsruXqRWp0oeeqYKSeXOZDnoSeb2XaQOb8eqZ9j5vzgmX2mFqOQmfuGFo0ZcSJGFiMUcYNtZlsOKROTbqkacAOeBcqWRPupsB+UcX6R5j+UybyTllOZEdcAOU1nsQud9qkb9ispFhFiyURQBZhRXJ0hhahTmNZtRUaeSXRUSQOfReyZmDluRUyW2BxRutKZ0sRUiXhZxUaacMOQJcqWGfxcJYDt6URShUaZRjl + +ghd0XhcpUyVVvxWpUadaURS+eUeabhn2j9gufcD9iudBY8ScMBfzuvtvDvrHp/FPqvk5Qvi5cvm5XPs5Uvp5a5d5Svr5V5YFQFcFe5X5R5f5aFUFZFSFT5dFXFbFQlRFYleFSlWFWlVFclelTFUlTlalRlblVlfFQVflQnrZe8ifFvggN8jHpCA2gCrCECiCsQGCh/O3FMjcpsKDrfvfm9IihALigiKcPgF2NWAiJSNWHUIMDwMBEcDAM4J0F/jA + +K4ghPgnMAgAsNwqCGQrstoGXH2vpm5upNsEIYgUePJINtmFaAVnuOJhcKrugbqhcLhJuPFu2CcK2C2MxKwgKjxNoOpHuINnmHEm2KUZNmCIQQzMQRKgImzOQVmiInKtQUqjInImqootwZqrwZ7GorqhwdokokaljSUNrIIZarFFRFaLag6NYtIY6jbAEaUO6soaMGoR4lVNMKtWgNJvfgIAGrwMxJhnmGmcYRGs1KtgwOGhEiNJHLeuRFuB1LNOm + +tfA4bUhANmhOC4W3Boe4XtEXF4aWuRJhpoqeFWtrYEXWvXEtM+OAAPGCHAHAHyIXJVAUNAD8BkOUEQAKvsAwIQAgBQBUAjVQdDbZA5GyKsBANgCIHIo6H2PoHyP5NQTiLDeHZHaQNHbHQHZQWVInaHY5C7anenekPAuqgTVLETRHVHRtDHekPHcqGwb5PnZXVkNXXHfjRjYTTLCUAXVXbHVAqagIeaqKo3WnT3ekAAPIiEU3iGQDd3N2x3wKcBQD + +wLWzchURUIV0j1z1F2L2DCEBGCQjUld1N1QAt0AAqWAUAdQntJY6AwQf4Kdx9LdjtpAl9adbAFAPwuA8hNaG9hd+g44VIdQb9H9IQH0si8IJCM9j9sdQDEDp9nN6Acq4dkC8IPIX+gId1SQVocc+EJEbYLWio2AqD+A4E3AbWiQ+EhEE0B4Nwh6cpLtRgbABgztXUBAqcaYf12wlGyG9+v9o9+gfdZUPqyEY44d5IJAu9+9co+YdopAEjfYcAZD3 + +t4jxAsCbABUADuAmgwQltNSyjcj8qvMqAb0FQaIH0pAygxIAAFBqdQLwH1PY+WFCLsAAJQchQIIDKCnwSIWPWN9rQi8BAh2P+N2NwGjBuNwrD1yK11IgT1QDFjZI/1WwZAeOhhyNLAsMlCZBaM6PK2OEKjYBECKN/Iq2ggcBOp5Oq3CBQCniQg3yRMlB2DATrXZAv64BwBqMaPlPaP1r74u0kjxOMCn1MP4CZMc1UoahpALA9SgiR2wgGDwMTNm0 + +QBBG9N6P1WX3TNDMjPuzW1378CcjcgHxoDABPggBPhAA +``` +%% \ No newline at end of file diff --git a/Item Size Position.md b/Item Size Position.md index 2479688..3a6ba30 100644 --- a/Item Size Position.md +++ b/Item Size Position.md @@ -2,8 +2,6 @@ --- -# Item Size Position - `Item` type is the base type for "visual items". It has two properties: - actual size ( width, height ) - implicit/desired size ( implicitWidth, implicitHeight ) @@ -37,4 +35,3 @@ Item.childrenRect represents the actual geometry of all child items, not the mpl Use [MarginWrapperManager](https://quickshell.org/docs/types/Quickshell.Widgets/MarginWrapperManager) to handle size and position of container and a single child item. -## Layouts diff --git a/LVM.md b/LVM.md new file mode 100644 index 0000000..5d9561a --- /dev/null +++ b/LVM.md @@ -0,0 +1,11 @@ +[[Linux]] + +--- + +Physical volumes: +- create: `pvcreate` +- show: `pvs` + +Logical Volume Groups: +- create: `vgcreate ` +- show: `vgs` diff --git a/Loop devices.md b/Loop devices.md new file mode 100644 index 0000000..c72b2e1 --- /dev/null +++ b/Loop devices.md @@ -0,0 +1,7 @@ +[[Linux]] + +--- + +Managed with `losetup` + +A loop device is a block device that can be backed by a file or another block device. \ No newline at end of file diff --git a/QtQuick.md b/QtQuick.md new file mode 100644 index 0000000..e69de29 diff --git a/Quickshell.md b/Quickshell.md index c801fee..2ff8d48 100644 --- a/Quickshell.md +++ b/Quickshell.md @@ -2,12 +2,11 @@ --- -# Quickshell - https://quickshell.org -XDG standard config paths. Looks for `shell.qml` in all sub-directories unless root dir has one. Target specific config using `quickshell -c configname`. +When launching `quickshell` it wil scan XDG_CONFIG_DIRS for `shell.qml` that it will load unless `-c` is specified. It will scan sub-directories if no `shell.qml` is found in the root directory. +Quickshell expands [[QtQuick]] with functionalities useful for building shells. ## Windows Requires `import Quickshell`. Types: @@ -76,7 +75,6 @@ Set `pragma Singleton` at the top of the file ( before imports ). and Use `Singl [Clock formatting](https://doc.qt.io/qt-6/qml-qtqml-qt.html#formatDateTime-method) - ## Signals Event emitter. Same rules as properties and function. @@ -94,7 +92,6 @@ Does that somehow override the onClicked function of the target?? All properties have `propertynameChanged` handler, powering the reactivity. - ## Attached objects Every object has `Component` attached, used to run stuff when an Object finishes initializes using `Component.onCompleted`. -- cgit v1.2.3