Ich bin nicht sicher wie gut du einen Job findest, ich habe vereinzelt schon gesehen, dass Firmen für Quereinsteiger offen sind.

Wenn du wirklich so intensiv lernst würde ich das als realistisch einschätzen. Es kommt aber auch darauf an wie viel Verständnis du für solche Themen bereits hast und wie gut dir das liegt.

Ich denke um eine passende Firma zu finden wirst du aber auch etwas Glück brauchen.

...zur Antwort
MacBook 2019 mit Intel Prozessor?

Sehr geehrte Leser,

ich hoffe sie können mir mit folgendem Problem weiterhelfen:

Mein Laptop ist nach sehr langer Laufzeit nun endgültig nicht mehr funktionstüchtig (Dell Inspiron, 15 Jahre Laufzeit). Ich war damit sehr zufrieden. Ich bin kein Techjunkie und gebe einen Rechner lieber mal in Reparatur als mir nach (für mich) wenigen Jahren einen neuen zu kaufen. Zur Einschätzung: ich habe mir im Leben erst 1 eigenes Handy gekauft, der Rest waren geschenkte alte Handys von Freunden.

Meine Nutzung: Windows, Zoomkonferenzen, diverse andere Programme, jedoch kein Filmschnitt, große Grafikanwendungen oder Sonstiges

Situation: Ich fragte im Bekanntenkreis ob Jemand ein "altes" Notebook" abzugeben hat.

Angebot: Für 250 € bat mir ein Bekannter folgendes Notebook an:

MacBook Pro, 16", 16 GB, von 2019, Intel Prozessor

Das Notebook läuft mit macOS14, im Moment ist Windows (welche Version weiß ich nicht) als Betriebssystem installiert.

Frage: Wie finden sie das Angebot?

Schwierigkeit: Das Problem welches ich sehe ist der Intel Prozessor. Laut meiner Recherche kann es sein dass apple ab 2025 die Unterstützung seiner Intel Rechner einstellt. Die Frage ist was würde das im Genauen für mich bzw. diesen erwähnten Rechner bedeuten?

Auch frage ich mich ob ich den Rechner mit Windows (da ein Update auf macOS15 nicht mehr ginge) noch einige Jahre nutzen könnte oder ob es da auch was die Unterstützung angeht zusehend zu Problemen kommen würde?

Das MacBook ist mit Sicherheit ein gutes Book. Die Hardware für mich mehr als gut. Da ich ein Laie bin ist mir jedoch schleierhaft ob das Sinn macht dieses Book (für 250 €) von meinem Bekannten zu kaufen bzw. wie lange ich von dem Book hätte (aufgrund des Intel Prozessors).

Was denken sie?

Vielen Dank für Hilfe und Tipps!

Beringia

...zur Frage

Hey, also falls Apple keine neuen MacOS Versionen raus bringt wird es vermutlich noch 2 Jahre Security Updates geben. So 6 Jahre wären ein normaler Zeitrahmen ab dem ein Mac keine neuen Features bekommt, und da Apple ja jetzt auf eine andere Prozessorarchitektur setzt wäre es nicht unwahrscheinlich, dass die Geräte bald nicht mehr supported werden.

Auf den Intel MacBooks läuft natürlich auch Windows, aber Windows 11 wird vermutlich ebenfalls offiziell nicht unterstützt, ich glaube das MacBook erfüllt die Anforderungen zu dem TPM nicht. Wege Windows 10 weiter zu nutzen würde es vermutlich auch irgendwie geben, wenn das nicht mehr weiter supported ist.

Also ich sehe da schon Probleme für die Zukunft. Für 250€ finde ich den Deal aber jetzt auch nicht so schlecht.

Refurbished ThinkPads sind wegen Reparierbarkeit beliebt, aber die neueren Modelle sind da auch schlechter als die alten geworden und da müsstest du ebenfalls schauen welche Modelle Windows 11 kompatibel sind.

Vielleicht wäre sogar Framework für dich interessant, da ist der Laptop auch sehr modular aufgebaut, so dass sie repariert und teils aufgerüstet werden können, aber da zahlst du deutlich mehr und ich glaube es gibt keinen wirklichen gebraucht Markt.

...zur Antwort

Nein, nicht ohne löten.

Andere haben hier ja schon mehr dazu gesagt, natürlich kann man einen anderen Chip auf ein Board löten. Wenn du das noch nie gemacht hast und dafür kein Equipment hast, kannst du das vergessen.

Eine Alternative wäre höchstens noch eine remote workstation, falls du jetzt nur etwas bestimmtest hast was mehr Ram benötigt könntest du vielleicht entweder zuhause eine Workstation remote nutzen, oder dir bei einem Anbieter eine virtuelle mieten.

...zur Antwort

Offiziell geht nur Minecraft, nicht die Minecraft Bedrock Edition.

Das steht ja auch auf der offiziellen Website.

Bild zum Beitrag

Es gibt eventuell inoffizielle Wege, wie die iOS Version auf neueren Macs mit Apple Chips zu nutzen, oder Windows nutzen (in einer VM oder auf Intel Macs mit Dualboot).

Java Edition, also das normale Minecraft, geht natürlich problemlos.

...zur Antwort

Ich kann dir nur sagen, dass ich mit APS-C sehr zufrieden bin.

Full Frame ist nicht immer besser. Aber du hast meist einen besseren Dynamik Umfang, weniger Rauschen und mehr Möglichkeiten was Bokeh angeht.

Bei Bokeh, bzw. geringer Schärfentiefe ist es so, du musst den Crop Faktor auch auf die Blendenöffnung mit einbeziehen. Für ein Full Frame 50mm f2 Objektiv bräuchtest du auf APS-C (bei 1.5 crop factor) 33mm f1.3. Wenn dir Bokeh wichtig ist, dann vergleich doch mal die Objektive auch nach equvivalenter Blendenöffnung, oft vergleichen Menschen das ja nur nach der Full Frame equivalenten Brennweite.

Bei APS-C hast du natürlich umgekehrt den Vorteil, du brauchst für einen geringeren Bildauschnitt (mehr Zoom) ja auch eine geringere Brennweite als bei Full Frame. Da könnte der Crop Faktor ein Vorteil sein.

Wie gesagt, bei Dynamik Umfang und low Light Performance ist Full Frame meist besser. Vergleich das bei den Kameras auch mal und überlege, ist das dir wichtig?

Ich hab es so gelöst, ich hab gar nicht groß über Sensorgröße nachgedacht sondern einfach überlegt wäre ich mit dieser Low Light Performance die ich aus Reviews gesehen habe zufrieden, würde mir das Bokeh mit dem Objektiv das ich vermutlich kaufen würde passen und wie gut gefällt mir der Body an sich. Nur beim Dynamik Umfang, da würde ich mir bei meiner APS-C Kamera vielleicht manchmal einen tick mehr wünschen.

...zur Antwort

Mach das nicht. Hol dir lieber Sony WF, Pixel Buds oder so was ähnliches.

Ich habe AirPods Pro für mein iPhone und hab sie auch teils an einem Android Handy genutzt. Es geht, aber du hast weniger Features als auf iOS. Das ergibt nur Sinn, wenn du primär ein iPhone nutzt oder bald nutzen wirst.

Es gibt keine richtige App mit denen du alles einstellen kannst, es werden nicht mehrere Geräte auf ein mal unterstüzt (bei Apple Geräten wechseln sie automatisch zwischen den Geräten) und mit die besten Features wie das FindMy Feature bei den Pro kann man nicht nutzen, damit sind andere inEar einfach besser für den Preis.

Falls du dir das unbedingt an tun willst, ich hatte mal eine dieser Apps genutzt (weiß nicht mehr welche), damit man zumindest eine vernünftige Batterie Anzeige hat: https://search.f-droid.org/?q=AirPods&lang=de

...zur Antwort

Ich gehe mal davon aus, dass du dich auf gekaufte beziehst. Mit den Barista Editions hatte ich immer eine gute Erfahrung, die schäumen super auf, sogar besser als Kuh Milch.

Soja und Hafer sind da kein Problem, andere kenne ich nicht so gut.

Bei den nicht Barista Editions geht es teils nicht, teils flockt die Milch dann auch im Kaffe.

...zur Antwort

Fangen wir am Anfang an.

132: main()
135: router.HandleFunc("/sse/", sseHandler)

hier wird ein HTTP Server erstellt, und zu dem Pfad /sse/ die Funktion sseHandler registriert. Wir müssen uns also "sseHandler" ansehen

102: sseHandler

hier haben wir einen Standard HTTP Request Handler.

  • Es wird eine Client ID aus dem Pfad extrahiert
  • Zu unserer "SSE Con", die wir uns später genauer anschauen, wird ein Client hinzugefügt
  • In einer For Loop (line 118) und einem Select statement wird gewartet bis 1. eine neue Nachricht an den Client durch den Channel gesendet wird oder 2. die Verbindung geschlossen wird. Hier haben wir quasi schon die Antwort wo eine "message" aus dem Go channel an den Client gelangt. Der channel wird von "104: ch := sseConn.addClient(id)" zurück gegeben, also schauen wir uns diese Methode an.

noch mal die for loop und das select statement aus sseHandler beginnend in Zeile 118 (w ist der http.ResponseWriter, womit wir über die HTTP Verbindung Daten senden können).

for {
		select {
		case message := <-*ch:
			fmt.Println("case message... sending message")
			fmt.Println(message)
			fmt.Fprintf(w, message)
			flusher.Flush()
		case <-r.Context().Done():
			fmt.Println("Client closed connection")
			return
		}
	}
21: (p *SSEConn) addClient(id string) *chan string

hier wird die addClient Methode auf den Typ *SSEConn implementiert. Also eine Methode um einer *SSEConn einen Client hinzuzufügen

  • der Mutex wird gelockt, um zu vermeiden, dass irgendwelche Operationen in verschiedenen Threads sich behindern können
  • nach einem defer mit etwas logging und um sicher zu stellen, dass der mutex wieder unlocked wird…
  • … finden wir heraus, dass in Zeile 32 auf die "clients" map zugegriffen wird, die übergebene ID wird als key genutzt, und wenn kein (Slice mit) Channel(s) existiert, wird ein neuer erstellt
  • Hier habe ich gesehen, dass ich selber einen Fehler gemacht habe, die map bezieht sich gar nicht auf einen einzelnen Channel sondern einen Slice mit Channels! Von der Methode wird allerdings ein Pointer auf den neuen, gerade erstellte Channel zurück gegeben.
Zwischenergebnis

Jetzt haben wir so ziemlich das Geheimnis gelüftet, wie man ja schon an dem Typen SSEConn (line 12) erkannt hat bestimmt eine "SSEConn" aus einem Mutex zur Synchronisation und einer Map aus IDs und mehreren Channel. Aber jetzt wissen wir auch wie diese genutzt werden. Wie wir oben in SSE Handler gesehen haben, werden dort die Messages aus einem channel zu der offenen HTTP Verbindung an den Client gesendet, bis diese geschlossen wird. Jetzt liegt es natürlich nahe, dass es eine Methode gibt um an alle Channel zu einer ID eine Nachricht zu senden.

Zurück zu SSE Handler, in Zeile 111:  sseConn.removeClient(id, *ch) finden wir wie zu erwarten auch eine Methode um einen Channel wieder einer ID zu entfernen, sobald die HTTP Verbindung geschlossen wird. Ich denke die remove Client Methode ist uns egal, wir können uns ja sehr gut erschließen was sie macht (den channel entfernen und eventuell cleanup falls kein channel mehr existiert).

Schauen wir uns also an wo Nachrichten an Clients gesendet werden. Wir erinnern uns, es gab auch einen zweiten HTTP Handler in Main. Zurück zur Main. Hier schauen wir uns noch mal den Handler zu /time/ "getTime" an

94: getTime

wie auch in SSE Handler ein Standard HTTP Request Handler.

  • Auch hier entnehmen wir wieder eine ID aus der URL.
  • Als nächstes nehmen wir die aktuelle zeit und speichern sie in "msg"
  • Und wie zu erwarten wird hier eine Nachricht gesendet, über die Broadcast Methode der SSE Conn: nämlich die aktuelle Zeit. Also schauen wir uns zuletzt die Broadcast Methode an.
78: (p *SSEConn) broadcast(id string, data, event string)
  • wieder wird unser Mutex gelockt und in einem Defer wieder unlocked
  • Klar, wir nehmen die ID um den Slice an Channel zu finden, mit etwas error handling falls es zu der ID keine Channel gibt. In dem Fall passiert einfach nichts (return in Zeile 84).
  • Ansonsten loopen wir über alle Channel und senden an jede Verbindung (also an jeden Channel) die msg, also in diesem konkreten Fall die Zeit aus "getTime"
  • Wie wir schon oben gesehen haben, wartet in Zeile 120 innerhalb des sseHandler auf neue Nachrichten, und sendet sie in der zu /sse/ aufgebauten http Verbindung an den jeweiligen Client zurück. Da sseHandler ja eine for loop offen häft, bis die Verbindung beendet wird, wird der Client dann über die HTTP Verbindung die neue Nachricht empfangen.
Fazit
  • Alle guten Dinge sind drei: in der Loop/dem Select aus sseHandler wird die Nachricht aus jedem Channel zurück über die Verbindung aus dem Client gesendet :)
  • Es gibt eine ID die über die URL an den Server gesendet wird, zu jeder ID kann es beliebig viele Verbindungen geben und an jede ID können Nachrichten gebroadcastet werden
  • Jeder Channel stellt eine offene HTTP Verbindung dar
  • Das ist jetzt kein Code Review, ich habe auch nicht nach Fehlern gesucht oder mir überhaupt überleget ob das alles so funktioniert, eventuell könnte man aber einen Buffer einbauen, vermutlich wird ein Client die Verbindung so lange wie möglich offen halten und dann eine neue Verbindung aufbauen, es gibt also einen kurzen Moment wo er eventuell keine Nachrichten empfängt. Aus dem Kopf raus gibt es ja auch keinen Indicator ob überhaupt eine Nachricht über einen Broadcast gesendet wurde, also auch Code der die SSE Conn nutzt könnte dies vermutlich nicht implementieren. Etwas doof.
  • Ich stelle fest, dass ich nicht nur die Frage beantwortet habe, sondern den gesamten Code erklärt. Ich bin einfach gut.
...zur Antwort

Nein, wenn der Bot kein Feature dafür hat.

Der Bot bekommt deine Account ID von deinem Telegram Account. Wenn er diese nutzt müsstest du einen anderen Telegram Account nutzen.

Wenn es dein eigener Bot ist… dann lösch halt deinen Account selber aus den Bot Daten.

...zur Antwort

Das einfachste wäre über https://play.geforcenow.com/ zu spielen.

Dann läuft das Spiel in der Cloud und wird gestreamt. Mache ich auch auf MacOS und Linux (für andere Spiele), aber das free Tier ist limitiert und ich zahle dafür monatlich ca. 12€.

Ansonsten würde ich dir Dual Boot empfehlen.

Die Frage ist warum du Linux auf dem Laptop hast und wie gut du dich damit auskennst. Wenn der Laptop älter ist wird das Spiel eventuell sowieso nicht darauf laufen und Cloud Gaming wäre die einzige Möglichkeit.

...zur Antwort

Es gibt unterschiedliche Sprachmodelle die natürlich andere Ausgaben generieren.

Du kannst auf verschiedenen Daten trainieren, KIs nachtrainieren (fine tuning) wodurch du natürlich auch unterschiedliche Antworten bekommst.

Und zuletzt nutzen solche Modelle auch Parameter die bestimmten wie unterschiedlich die Antworten sein können, qausi wie kreativ ein Modell sein darf und wie stark es sich an seine vorgaben halten muss, es kann also auch sein, dass ein Modell mit dem gleichen Datensatz unterschiedlich auf die gleiche Frage reagiert.

Also ganz klar nein, selbst wenn das gleiche Modell genutzt wird, auf den selben Daten vortrainiert wurde und so weiter bekommst du nicht die selben Antworten.

...zur Antwort

Natürlich. Wenn du im Frontend programmieren möchtest, dann musst du grundsätzlich verstehen wie CSS funktioniert.

Je nach Bereich musst du jetzt nicht die schönsten Anwendungen coden können, aber ohne grundsätzliches Verständnis dafür geht es im Web Frontend einfach nicht.

Selbst wenn du mit Frameworks arbeitest die CSS etwas verstecken gibt es immer wieder Punkte bei denen du es doch anpassen und verstehen können musst. Und bei vielen modernen Frontend Frameworks/Libraries kümmert man sich auch selber um CSS.

Wenn du einfach nur Websites machen möchtest, dann schau dir natürlich so eine fertig Baukasten Lösung an, aber CSS und HTML solltest du trotzdem verstehen. Wenn du wirklich mehr programmieren möchtest und das mit JavaScript in einem Web Frontend machen möchtest, Sachen umsetzen die eben nicht einfach in einem Baukasten gehen, dann brauchst du fast immer HTML/CSS als Grundlagen oder zumindest ein Grundverständnis dafür.

...zur Antwort
MacBook

Naja so ein iPad Pro hat an sich genügend Leistung, einen guten Bildschirm. Was will man mehr?

Naja vielleicht die Programme ausführen die „Pros“ auch brauchen und mit denen man so einen M Chip auch sinnvoll nutzen kann. Du hast halt kein Desktop Office, du hast keine Entwickler Umgebung die was taugt, du hast halt einfach so die meisten Möglichkeiten für die sich die Leute einen Laptop kaufen nicht, weil Apple das im OS nicht zulässt damit sich die Leute ein MacBook kaufen.

Das iPad ist für die Leute, die nur surfen, Apps nutzen, Medien konsumieren, vielleicht etwas Office machen aber nicht viel (oder den content später an einem PC/Laptop sowieso überarbeiten). Also quasi alles was eh am Handy gehen würde nur in größer.

Ist halt leider so, ein iPad ist ein Mittelding zwischen Handy und Laptop, entweder als Ergänzung zum MacBook oder für die Leute die keinen Mac brauchen. Das iPad könnte theoretisch ein MacBook Ersatz sein, aber wenn Apple das zulassen würde würden sie halt weniger Geräte verkaufen.

Die eine wirkliche Ausnahme wäre vielleicht noch Design, da hat das iPad eben durch den Stift einen echten Vorteil.

...zur Antwort

Geräte nutzen üblicherweise nur die SSID um Netzwerke zu erkennen. Also ja, wenn sich die ändert ja.

Passwort ist klar, wenn sich das ändert kommen Geräte ja gar nicht rein ohne den neuen Schlüssel.

Es gibt seltene Ausnahmen, wenn Netzwerk Equipment vom gleichen Hersteller sich synchronisieren kann und dann so was wie ein Repeater im Netz bleibt (aber eben keine Endgeräte wie Smartphones, Laptops usw.). Und ganz theoretisch ist es bei Netzwerk Equipment möglich verschiedene Passwörter zu akzeptieren (WPA PPSK, oder über RADIUS Server). Aber das ist wirklich nicht die Norm und Support für so was durfte bei Standard heim Router selten sein. Aber das sind dann ja auch bewusste und gewollte Ausnahmen.

Wenn es dir einfach darum geht Geräte aus dem Netz auszuschließen ist die richtige Methode das Passwort zu ändern.

Wenn es dir drum geht deine SSID oder Passwort zu ändern ohne alle Geräte einzustellen, da wirst du nicht drum rum kommen in der Regel.

...zur Antwort

Nimm was dich generell mehr anspricht.

Ich bin eher Fan von so was wie ASP.NET (C#), oder Go.

PHP ist sehr verbreitet als Backend Sprache, ich selber finde die Sprache.. naja. Wems gefällt.

Ich denke mit Python kannst du auch einfach generell viel machen, PHP ist halt wirklich eher nur im Web Server Umfeld verbreitet. Also wenn du nur eine general purpose Sprache nehmen möchtest und nur die beiden zur Auswahl stehen wurde ich Python nehmen.

Wenn du nur Web Backend machen möchtest und dich über PHP informiert hast und es aus irgendwelchen Gründen gut findest, dann nimm eher PHP. So sehr ich die Sprache auch hasse, im Web ist sie verbreitet und bietet auch einen vergleichsweise einfachen Einstieg in Backend Entwicklung - und es gibt sogar angeblich brauchbare Frameworks die manche gut finden.

Man muss halt auch sagen, ohne Infos was für Projekte du machst, welche Faktoren für dich wichtig sind, wie umfangreich deine Projekte sind kann man dir halt auch keine wirklich fundierte Empfehlung geben. Generelle backend Entwicklung kann man mit den meisten general purpose sprachen machen.

...zur Antwort

Browser werden hier immer eine Warnung anzeigen.

Diese kann man ignorieren aber einem wird auf jeden Fall klar gemacht, dass ein Sicherheits Risiko besteht.

Wenn die Seite so eingestellt ist, dass der Browser nur eine sichere Verbindung nutzen darf kann man die Warnung nicht ignorieren.

Da die Frage ergänzt wurde, hier noch die übrige Antwort.

So ein Zertifikat kann auch für mehrere Seiten ausgestellt werden. Bzw. sollten/müssen sogar alle Domains in den "Subject Alt Names" stehen, inklusive der Haupt-Domain. Hier ein Stack Overflow Post zu dem Thema für mehr Informationen: https://stackoverflow.com/questions/5935369/how-do-common-names-cn-and-subject-alternative-names-san-work-together

Oder hier: https://en.wikipedia.org/wiki/Subject_Alternative_Name

Das sieht man auch an diesem Screenshot:

Bild zum Beitrag

Das nutzt man nicht nur für komplett verschiedene Domains, sondern kann man auch für Subdomains unter der selben Domain nutzen.

...zur Antwort

Ich würde dir empfehlen eine vernünftige Middle Ware zu nutzen die das bei jedem Aufruf checkt. Du schreibst hier nicht ob du irgendein Framework nutzt oder welche Sprache (ich denke PHP wegen den Themen), moderne Frameworks bieten für so etwas Lösungen.

Ansonsten funktioniert das schon über die session, aufgrund der Frage kann man dir ja jetzt aber nicht sagen was du falsch machst. Cookies ist etwas… naja. Solltest du wissen was du tust. Da gäbe es schon pitfalls was du Security Technisch falsch machen kannst.

Ich würde dir empfehlen dich mit Frameworks, Libraries bzw. Middlewares für authentication zu beschäftigen oder du stellst deine Frage noch mal und postest den Code sauber formatiert dazu (oder verlinkst ein Git repo oder einen Paste), bzw. zumindest ein minimal Beispiel an dem man nachvollziehen kann was falsch läuft.

...zur Antwort

Generelle Logik dürfte aussehen

  1. Stelle fest was getroffen wird, im richtigen Umkreis
  2. Prüfe für jedes Objekt, ob eine Wand im Weg ist
  3. Rufe ein Event oder aktualisiere sonst irgendwie den State auf den getroffenen Objekten bei denen nichts im Weg ist.

Beachte dass du hier keine unnötigen Checks machst pro Frame und stattdessen eher zb Events nutzen solltest oder irgendwas temporäres.

Zu deiner Frage sollte eigentlich zumindest mal gehören ob es 2d/3d ist.

Meine Zeit mit Godot und Unity ist leider zu lange her dass ich das jetzt sagen kann aber in der Doku zu Kollision findest du ganz sicher eine Lösung für die einzelnen Schritte.

Alternativ könnte man auch Safe zones definieren auf der Map, wenn in dem Setting quasi die Bombe fast überall auf der Map einen Einfluss hat, aber dafür fehlen halt Infos. Wäre mein zweiter Vorschlag für eine Lösung kommt aber stark auf das Szenario an. Das eignet sich wenn es nur wenig safe zones gibt und sonst so viele Objekte dass solche line of sight checks zu performance intensiv wären.

...zur Antwort

Wichtig auf Android ist die Sicherheits patch Ebene.

Phishing sind Angriffe, bei denen es darum geht (Zugangs)Informationen abzugreifen. Meistens nicht über Sicherheitslücken, sondern indem man den Nutzer täuscht.

Aber ein Gerät ohne aktuelle Sicherheits Updates wäre gefährlicher, bei manchen Phising links könnten die Angreifer zb auch versuchen das Gerät über bekannte Lücken zu infizieren wenn möglich und wenn nicht möglich einfach versuchen den Nutzer dazu zu bringen Passwörter zu teilen.

Aber solange das Gerät nicht wirklich sehr alt ist würde ich mir direkt erst mal keine Sorgen machen. Schau in den Android Einstellungen wann das Gerät das letzte mal Sicherheits patches bekommen hat. Bei Android 8 kann es gut sein dass es keine Updates mehr gibt.

PS: mittlerweile bieten Hersteller auch länger Updates, Fairphone bietet sehr lange Updates, Google Pixel und Samsung mittlerweile auch und Apple war was das angeht noch nie schlecht.

...zur Antwort