SquirrelDisk

Seit einigen Jahren haben ich DaisyDisk auf meinem Mac im Einsatz. Mit SquirrelDisk gibt es nun auch eine quelloffene und hübsche Alternative. Using SquirrelDisk is a matter of clicking one button to easily find all the huge files on your computer.

2. Mai 2023 · 1 Minute · 41 Wörter

Open Source

Von außen betrachtet wirkt Open Source oft wie ein technisches Konzept. Eine Lizenz hier, ein Repository da, ein paar Zeilen Quellcode, öffentlich sichtbar. Doch wer genauer hinsieht, erkennt: Es geht um weit mehr als nur um Software. Es geht um Freiheit. Und ums Teilen. Ich selbst bin kein Entwickler im klassischen Sinne. Ich habe nie große Projekte betreut oder komplexe Softwarearchitekturen entworfen. Aber ich habe im Lauf der Jahre viele kleinere Skripte geschrieben, mal in PHP, mal in Python oder Perl. Ich habe Webseiten mit WordPress gebaut, HTML- und CSS-Code geschrieben, Dinge ausprobiert und wieder verworfen. Nie mit dem Anspruch, perfekt zu sein, aber immer mit dem Wunsch, etwas zu schaffen, das funktioniert. Für mich, manchmal auch für andere. ...

1. April 2023 · 2 Minuten · 340 Wörter

Quellcode ist keine Akte

Knut Hühne schreibt in »Open Source in der Berliner Verwaltung: Eine ernüchternde Zwischenbilanz« für codefor.de Ein solcher Quellcode ist keine Akte im Sinne von § 3 Abs. 2 IFG. Akten sind danach alle schriftlich, elektronisch, optisch, akustisch oder auf andere Weise festgehaltenen Gedankenverkörperungen und sonstige Aufzeichnungen, insbesondere Schriftstücke, Magnetbänder, Disketten, Filme, Fotos, Tonbänder, Pläne, Diagramme, Bilder und Karten, soweit sie amtlichen Zwecken dienen. Ein Quellcode zählt nach diesen Maßstäben nicht zu den von der Vorschrift erfassten Akten öffentlicher Stelle, denn er weist keinen Bezug zu einer konkreten Verwaltungsangelegenheit auf. Er ist vielmehr (nur) ein allgemeines Mittel um die informationstechnologische Arbeitsfähigkeit der Verwaltung herzustellen. Eine Übersendung des Quellcodes kann daher nicht erfolgen. Ich lehne Ihren Antrag ab. ...

21. März 2023 · 1 Minute · 116 Wörter

IMG Quest

Hier kommt eine kleine Tool-Empfehlung. Mit IMG Quest einer Open Source API zum erstellen von Open Graph Bilder. Per URL kann man Titel, Untertitel Farbgestaltung und ein Bild mitgeben. Die Website erklärt wie simple es ist.

3. Januar 2023 · 1 Minute · 36 Wörter

Apple Store Notifier

Apple hat vor einigen Tagen neue Produkte angekündigt. Wie immer sind die Artikel in den Stores nur bedingt vorrätig. Wer schlau ist, schaut online, ob das gewünschte Produkt im örtlichen Apple Store vorrätig ist. Wer faul ist, nutzt dazu das folgende Python Script, um das automatisiert zu machen. Achtung Pushover wird vorausgesetzt. #!/usr/bin/env python3 import requests import os import time def fetch_availability(product_number, store_id): payload = { "store": store_id, "little": False, "mt": "regular", "parts.0": product_number, "fts": True, } url = "https://www.apple.com/de/shop/fulfillment-messages" r = requests.get(url, params=payload) data = r.json() stores = data["body"]["content"]["pickupMessage"]["stores"] store = next(store for store in stores if store["storeNumber"] == store_id) avail = store["partsAvailability"][product_number] return { "store_name": store.get("storeName"), "available": avail.get("pickupDisplay") != "ineligible", "store_pickup_quote": avail.get("storePickupQuote"), "pickup_search_quote": avail.get("pickupSearchQuote"), "pickup_display": avail.get("pickupDisplay"), } def assemble_availability_text(product_number, store_ids): avail_text = "" for store_id in store_ids: avail = fetch_availability(product_number, store_id) avail_text += f'{avail["store_name"]}: {avail["store_pickup_quote"]}\n' return avail_text def create_file_if_not_exists(filepath): if not os.path.exists(filepath): with open(filepath, "w") as f: f.write("") def do_it(part_no, store_ids, **kwargs): availability_text = assemble_availability_text(part_no, store_ids) create_file_if_not_exists("/tmp/cache.txt") with open("/tmp/cache.txt", "r+", encoding="utf-8") as f: if f.read() == availability_text: print("No Changes", flush=True) else: print("Changes detected", availability_text, flush=True) if kwargs["pushover_enabled"] == "1": requests.post( "https://api.pushover.net/1/messages.json", data={ "token": kwargs["pushover_token"], "user": kwargs["pushover_user"], "message": availability_text, "title": "CHANGES DETECTED", }, headers={"Content-Type": "application/x-www-form-urlencoded"}, ) f.truncate(0) f.seek(0) f.write(availability_text) if __name__ == "__main__": while True: do_it( os.environ["MONITORED_PART_NO"], os.environ["MONITORED_STORES"].split(","), pushover_enabled=os.environ["PUSHOVER_ENABLED"], pushover_token=os.environ["PUSHOVER_TOKEN"], pushover_user=os.environ["PUSHOVER_USER"], ) time.sleep(int(os.environ["POLLING_DELAY_SECONDS"])) Das Script liegt im Repository dprandzioch/apple-store-notifier auf GitHub. ...

19. März 2022 · 1 Minute · 228 Wörter