Roboterverteidiger

Sehr oft stoße ich bei Diskussionen über die korrekte Funktionsweise einer Softwarefunktion auf eine Situation, in der die Funktionalität aus der Sicht des Benutzers seltsam und unlogisch erschien. Die Diskussion mit dem Product Owner sah in etwa so aus:

– Hier liegt eindeutig ein Verhaltensproblem vor
– Nun, wir werden es veröffentlichen und wenn Benutzer anfangen, sich zu beschweren, werden wir es beheben
– ??? Naja, ok…

Es scheint ein funktionierender Plan zu sein, oder? Ein ziemlich optimaler Algorithmus für Teams mit kleinem Budget, engen Fristen, unzureichender Recherche/Fehlen eines UI/UX-Spezialisten. Benutzer werden sich beschweren, wenn etwas passiert, das ist in Ordnung.
Eine Google-Suche zeigt, dass die Quelle dieser Methode aus einem Artikel stammt – „Beschwerdegesteuerte Entwicklung“ von Coding Horror

Einmal habe ich Lebensmittel verkauft, darunter auch Arztwurst für 300 Rubel. Über ein Terminal in einem Supermarkt verließ ich den Laden mit dieser Wurst im vollen Vertrauen, dass sie bezahlt war – Das Terminal bot an, den Scheck nicht auszudrucken, und ich stimmte zu, um für diesen Scheck kein wertvolles Papier zu verschwenden. Während des „Stanzens“ der Ware für jedes Produkt gab das Terminal ein Quietschen von sich, das signalisierte, dass alles korrekt funktioniert hat. Außerdem ertönte ein akustisches Signal, und das Terminal blinkte mit der Hintergrundbeleuchtung des Barcode-Scanners.

Am nächsten Tag ging ich erneut zum Supermarkt, um Lebensmittel einzukaufen, und gab die Lebensmittel über das Terminal ab. Am Ausgang wurde ich von einem Mann mit südländischem Aussehen und dickem Bart empfangen, der mir ein Smartphone hinhielt und sagte: „ „Bist du das vor der Kamera?“, ich schaute auf sein Handy und sah mich in einem Melodic-Death-Metal-T-Shirt von Arch Enemy mit Totenköpfen und all dem, es gab keinen Grund daran zu zweifeln.
„Ja, ich bin es, was ist los?“, sagte der Mann mit zusammengekniffenen Augen, „Gestern hast du die Wurst nicht geschlagen.“… Wow

Nach einer kurzen Untersuchung darüber, wer er war und wie er zu diesen Schlussfolgerungen kam, zeigte er mir ein Video, das an der Decke des Ladens hängt. In dem Video schlage ich auf die Wurst, das Terminal blinkt mit der Hintergrundbeleuchtung des Scanners. Ich habe die Wurst in die Tüte gesteckt.

– Das Video zeigt, wie der Scanner funktioniert
– Hat nichts gebracht, zahlen Sie für die Wurst!

Ein wenig verblüfft über diese Einstellung, bat ich um ein Beschwerdebuch, um zu schreiben, dass das Terminal Softwareverbesserungen benötige, da es alle Anzeichen für einen korrekten Betrieb zeige, in Wirklichkeit aber einfach fehlerhaft sei, ohne dass dies auf dem Bildschirm angezeigt würde in irgendeiner Weise.

Nach 10 Minuten Streit mit ihm und seinem Chef, der sofort zur Verteidigung seines Angestellten und des beschissenen Terminals eilte, beschlossen sie, die Freundin des Administrators anzurufen, damit sie ein Beschwerdebuch mitbringt und das des Arztes schlägt Wurst.

An diesem Tag wurde mir klar, wie schwierig es für Benutzer wirklich ist, sich über Hardware- und Softwareprodukte zu beschweren, und dass höchstwahrscheinlich das Mantra „Die Leute werden sich beschweren“ gilt. „Lasst es uns reparieren“ funktioniert sehr schlecht. Der Hauptgrund sind Menschen, die kaputte Roboter und kaputte Softwarelösungen verteidigen. Der Einfachheit halber schlage ich vor, neue Begriffe einzuführen – Verteidiger kaputter Roboter und Verteidiger kaputter Systeme.

Normale Benutzer können sich nicht über die Fehlfunktion der Terminals beschweren, weil sie durch ZasRoshniks gestört werden, die aus irgendeinem Grund an die Maschinen, mit denen sie arbeiten, hängen und anfangen, sie zu lieben, sie vielleicht für eine Art belebte Wesenheiten halten und dabei vergessen, dass es nichts gibt dort leben.< /p>

Eine ähnliche Situation tritt bei ZaSSoshniki auf. Diese Leute können trotz Beschwerden von Benutzern und anderen Entwicklern Schaum vor dem Mund haben, um einige dumme Mängel in Frameworks, Programmiersprachen oder anderen Softwareprodukten zu verteidigen.
Ein typisches Gespräch mit ZaSSoshnik läuft wie folgt ab:

– Hier funktioniert etwas nicht, laut Dokumentation scheint alles korrekt zu sein
– Oh, Sie haben also nicht das Handbuch von 2005 gelesen, in dem unten in Kleinbuchstaben steht, dass Sie PROGRAM_START:6969
hinzufügen müssen
– ??? äh

Solche Menschen verstehen möglicherweise nicht, wie sie selbst zur Verbreitung von Problemen, Fehlern, Zeit- und Geldverschwendung bei sich selbst und anderen Menschen beitragen. Darunter leiden alle, denn die digitale Transformation ist unmöglich, wenn nicht offensichtliche Dinge und Probleme mit Software- und Hardwarelösungen vertuscht werden.
Mir ist die jüngste Geschichte eines Fehlers in der Horizon-Software der britischen Post bekannt, der Menschen in Schulden trieb, Ehen ruinierte und das Leben anderer Menschen jahrzehntelang ruinierte. All dies geschah aufgrund der Duldung von Leuten, die über Probleme in der Software schwiegen und so „schützten“. ihn.

Freunde, seid keine ZaSRoshniks und ZaSSoshniks, behandelt die Werkzeuge, mit denen ihr arbeitet, mit Vorsicht, sonst droht euch die völlige Versklavung beschissener, kaputter Systeme, wie Geiseln in der neuen digitalen Welt der Zukunft. Für diejenigen, die nicht – Stören Sie zumindest nicht andere Leute, die versuchen, auf nicht funktionierende, störende Software/Hardware aufmerksam zu machen, denn die Entwickler dieser Produkte haben zugestimmt – „Wenn Benutzer anfangen, sich zu beschweren, werden wir das Problem beheben.“

Quellen
https://blog.codinghorror.com/complaint-driven-development/< /a>
https://habr.com/ru/articles/554404/< br />
https://en.wikipedia.org/wiki/British_Post_Office_scandal

Erstellen einer bgfx-Emscripten-Anwendung

In diesem Beitrag beschreibe ich eine Möglichkeit, BGFX-Anwendungen für das Web (WebAssembly) mit Emscripten zu erstellen.

Die Installationsplattform ist Linux x86-64, zum Beispiel Arch Linux.

Lassen Sie uns zunächst Emscripten Version 3.1.51 installieren, sonst werden Sie keinen Erfolg haben, und zwar aufgrund der Änderung des Typs der dynamischen Bibliotheken in der neuesten Version von Emscripten. Mehr können Sie hier lesen:
https://github.com/bkaradzic/bgfx/discussions/3266

Das geht so:


git clone https://github.com/emscripten-core/emsdk.git



cd emsdk



./emsdk install 3.1.51



./emsdk activate 3.1.51



source ./emsdk_env.sh



Lassen Sie uns bgfx für WebAssembly zusammenbauen – Emscripten:


mkdir bgfx-build-test



cd bgfx-build-test



git clone https://github.com/bkaradzic/bx.git



git clone https://github.com/bkaradzic/bimg.git



git clone https://github.com/bkaradzic/bgfx.git



cd bgfx



emmake make wasm-debug



Als Ergebnis finden Sie im .build-Ordner Bitcode-Dateien mit der Erweiterung .bc, die mit Ihrer bgfx-Anwendung verknüpft werden müssen.
Sollte bgfx.bc, bx.bc, bimg.bc sein; Verschiedene Assemblys haben je nach Assemblytyp (Release/Debug) unterschiedliche Namen für diese Dateien.

Fügen Sie einen Link zur Datei CMakeLists.txt mit .bc-Dateien hinzu, zum Beispiel absolute Pfade zu Dateien aus dem bgfx-experiments-Projekt:


target_link_libraries(${PROJECT_NAME} SDL2 GL /home/demensdeum_stream/Sources/bgfx-build/bgfx/.build/wasm/bin/bgfxDebug.bc /home/demensdeum_stream/Sources/bgfx-build/bgfx/.build/wasm/bin/bxDebug.bc /home/demensdeum_stream/Sources/bgfx-build/bgfx/.build/wasm/bin/bimgDebug.bc)



Ändern Sie nun das native Fensterhandle in den Plattformdaten in „BGFX-Initialisierung“:


bgfx::PlatformData platformData{};



platformData.context = NULL;



platformData.backBuffer = NULL;



platformData.backBufferDS = NULL;



platformData.nwh = (void*)"#canvas";



Sie müssen außerdem den Rendertyp in OpenGL ändern:


bgfx::Init init;



init.type = bgfx::RendererType::OpenGL;







init.resolution.width = screenWidth;



init.resolution.height = screenHeight;



init.resolution.reset = BGFX_RESET_VSYNC;



init.platformData = platformData;







if (!bgfx::init(init))



{



    throw std::runtime_error("Failed to initialize bgfx");



}



GLSL-Shader auf 120 neu kompilieren:


shaderc -f "VertexShader.vs" -o "VertexShader.glsl" --type "v" -p "120"



shaderc -f "FragmentShader.fs" -o "FragmentShader.glsl" --type "f" -p "120"



Ja, aber .glsl-Dateien müssen zu CMakeLists.txt als –preload-file:

hinzugefügt werden


set(CMAKE_CXX_FLAGS ... <Остальная часть>



--preload-file VertexShader.glsl \



--preload-file FragmentShader.glsl \



Es bleibt noch, die Hauptrenderschleife in Ihrer Anwendung durch einen While-Funktionsaufruf über emscripten_set_main_loop zu ersetzen.

Sie können hier darüber lesen:
https ://demensdeum.com/blog/ru/2017/03/29/porting-sdl-c-game-to-html5-emscripten/

Als nächstes stellen Sie Ihr Emscripten-Projekt wie gewohnt zusammen, alles sollte funktionieren.
Interessant – Im Emscripten 3.1.51-Build scheint OpenAL zu fehlen (oder nur ich).

Quellcode des Projekts, der mit bgfx und Emscripten korrekt kompiliert wird:
https://github.com/demensdeum/ bgfx-experiments/tree/main/2-emscripten-build

Quellen

https://github.com/bkaradzic/bgfx/discussions/3266
https://bkaradzic.github.io/bgfx/build.html
https://emscripten.org/docs/getting_started/downloads.html
https ://demensdeum.com/blog/ru/2017/03/29/porting-sdl-c-game-to-html5-emscripten/
https://llvm.org/docs/BitCodeFormat.html

Totenmaske im öffentlichen Bereich

Ab heute geht das Spiel Death-Mask in den Open Access – Sie können den Fortschritt der Spielimplementierung unter dem Link verfolgen: (Wow!)
[Death-Mask Wild]

Aktuelle Version – 0.1 enthält grundlegende Pfeilsteuerungen, WSAD, Generierung von Karten, Gegenständen (einschließlich der Totenmaske!), Rendering.
Es gibt noch viel zu tun und ich bin sehr an Ihrem Feedback interessiert – So können Sie Kommentare auf der Seite mit der Wild-Version des Spiels schreiben.
In der endgültigen Version endet das Spiel, nachdem der Spieler den Gegenstand gefunden hat – Totenmaske
Viel Spaß beim Testen : )

Авторы ресурсов

Ist es möglich…

Frage: „Kann ich das Spiel Demon’s Cave zu Ihrer Website, Ihrem Blog oder zu Ihrer Seite zwischen süßen Kätzchen und Zitaten von Coelho / Statham?”
NeinIch persönlich verbiete es. Nur ein Scherz, nicht persönlich. Kopieren Sie einfach den HTML-Code und fügen Sie ihn ein:

<iframe width="640" height="384"
src= „https://mocha2005.mochahost.com/~demens/games/demonsCave/“></iframe>

Link zu jsfiddle mit Beispiel: https://jsfiddle.net/ovL04dqL/3/< /p>

Frage: „Ich möchte Dämonenhöhle aufhängen Auf einer Seite mit Werbung, ist das möglich?”
Ja, du kannst alles tun.

Frage: „Ich möchte das Spiel Demon’s Cave , ist das möglich?”
Sie können mit der Spiel-Engine fsagamelibrary.js machen, was Sie wollen, hinterlassen Sie einfach einen Link zu demensdeum .com
Aber Sie müssen entweder Grafiken und Musik kaufen (die kostenpflichtig sind) oder Ihre eigene verwenden. Eine detailliertere Liste der Ressourcen hier.
Wenn Sie keinen Link zur Hauptseite hinterlassen, wird ein Dämon in Ihre Träume kommen.

Frage: „Ich möchte einen Mod für das Spiel Demon’s erstellen Cave oder sogar in 3D auf Unity erstellen, kann ich Ihnen den Link später schicken?”
Natürlich. Wirf vk.

Seite mit Angabe der Autoren der Ressourcen und Auflistung der Lizenzen demensdeum.com/games/demonsCave/info. html< /a>

Demens Deum Manifest

Demens Deum MiniGames Logo

Demens Deum – Als Team von Indie-Entwicklern erschaffen wir neue interessante Dinge, sei es Spiele, Programme, Musik, Comics. Derzeit gibt es auf der Welt nur sehr wenige Teams, die bereit sind, mit Ideen, Technologien und deren Umsetzung zu experimentieren. Unser Manifest – runter mit dem üblichen Genregerüst, runter mit grauen Klischee-Hits – Lassen Sie uns mit Experimenten, originellen Universen und aufregenden Geschichten den Verstand des Durchschnittsmenschen erreichen und die Herzen der Durstigen erregen!