dev.audiomixing.de

Hi, ich bin Dennis(trashcoder) und hier dokumentiere ich alles, was ich für meine Softwareentwicklung benötige oder an interessanten Features finde

dev.audiomixing.de - Citrix Black Screen in VM beheben

Citrix Black Screen in VM beheben

Um den Black Screen in Citrix Workspace zu beheben, muss man in der VM die Citrix Anwendung zu den Anwendungen hinzufügen, die keine Grafikbeschleunigung erhalten sollen. Dazu öffnet man die Grafikeinstellungen in Windows und fügt im Untermenü "Grafik" die Datei "wfica32.exe" aus dem "c:\Program Files (x86)\Citrix\ICA Client\" Verzeichnis hinzu. Anschließend wählt man "Energiesparen" als bevorzugte Grafikeinstellung aus. dev.audiomixing.de - Flutter Package Empfehlungen

Flutter Package Empfehlungen

dev.audiomixing.de - Zig Funktion per Dart FFI aufrufen

Zig Funktion per Dart FFI aufrufen

In meinem Beispiel übergebe ich aus Dart eine Liste mit unbestimmter Länge an eine Zig Funktion. Dort wird die Summe der Elemente des Arrays gebildet und an Dart zurückgegeben:

Zuerst erstelle ich ein Dart Projekt mit
dart init
Anschließend erstelle ich im Hauptverzeichnis des Projektes ein Unterverzeichnis mit Namen "linux_64" Dort hinein speichere ich die folgende Zig-Datei mit dem Namen "test06.zig":

const std = @import("std");
export fn sum(myArray: [*]const i32, arraySize: usize) i32 {
    var summe: i32 = 0;
    for (0..arraySize) |index| {
       summe += myArray[index];
    }
    return summe;
}
Anschließend führe ich den folgenden Befehl aus, um aus der zig-Datei eine Library zu generieren:
zig build-lib test06.zig -dynamic
Jetzt müssten die folgenden Dateien erstellt worden sein: "libtest06.so" und "libtest06.so.o". Wer möchte kann beim Erstellen der Librarys mit dem Parameter -ReleaseSmall die Filegröße noch verkleinern. Im bin-Verzeichnis erstelle ich die Datei "main.dart" und schreibe folgendes hinein:

import 'dart:ffi' as ffi;
import 'package:ffi/ffi.dart';
            
void main(List<String> arguments) {
    final list = [1, 2, 3, 4, 5];
    final listPtr = intListToArray(list);
            
    final myLib = ffi.DynamicLibrary.open('../linux_64/libtest06.so');
    final mySum = myLib.lookupFunction<
    ffi.Int32 Function(ffi.Pointer<ffi.Int32>, ffi.Int32),
        int Function(ffi.Pointer<ffi.Int32>, int)
        >('sum');
            
    final result = mySum(listPtr, list.length);
    print('Result: $result');
    malloc.free(listPtr);
}
            
ffi.Pointer<ffi.Int32> intListToArray(List<int> list) {
    final ptr = malloc.allocate<ffi.Int32>(ffi.sizeOf<ffi.Int32>() * list.length);
    for (var i = 0; i < list.length; i++) {
        ptr[i] = list[i];
    }
    return ptr;
}
Anschließend führe ich die main.dart Datei mit dem folgenden Befehl aus:
dart run main.dart
dev.audiomixing.de - Enums mit useState verwenden

Enums mit useState verwenden

Typescript behandelt enums, wenn diese nicht in Hochkomma gesetzt sind, als numbers. Daher muss man, wenn man enums in useState verwenden möchte diese als numbers casten.

enum loginStatus {
    isNotLoggedIn,
    isLoggingIn,
    isLoggedIn
    }

    const [status, setStatus] = useState<numbers>(isNotLoggedIn);
    if (status == isLoggedIn) {
    /// Your Code
    }            
        
dev.audiomixing.de - iPhone neu starten

iPhone neu starten

Es gibt zwei Möglichkeiten dein iPhone direkt neu zu starten, statt es auszuschalten und wieder einzuschalten. Die erste Möglichkeit ist "AssistiveTouch" zu aktivieren und dann im Submenü; des auf dem HomeScreen befindlichen neuen Button den Neustart auszufü;hren. Einfacher ist es aber per Siri mit dem Sprachbefehl "Hey Siri, mache einen Neustart" zu sprechen und anschließend in Siris Auswahl den Button "Neustart" zu drü;cken.

dev.audiomixing.de - XCode meldet iPhone sei gesperrt

XCode meldet iPhone sei gesperrt

Wenn XCode nach dem Build meldet, dass das iPhone noch gesperrt sei und der Transfer des Builds erst nach der Entsperrung durchgeführt wird, dann hast du evtl. ein Update deines iPhones installiert und im XCode ist dein iPhone noch mit der alten iOS Version konfiguriert. Gehe in XCode -> Window -> Devices and Simulators und lösche dort den Eintrag vom iPhone mit der alten iOS Version und trage anschließend dein iPhone mit neuer iOS Version ein.

dev.audiomixing.de - Enums mit useState verwenden

OpenUI5: Refresh Custom Control / Rerender Alternative invalidate()

Der Befehl "rerender()" wurde seitens der Entwickler als deprecated gekennzeichnet. Das hat hauptsächlich den Grund, dass rerender inperformant ist. Jeder Aufruf führt dazu, dass ein komplettes Rerendering durchgeführt wird und zwar für jedes Custom Control, welches ein Rerender anfordert. Daher wurde der Befehl "invalidate()" eingeführt.
control.invalidate();
Dieser Befehl sorgt dafür, dass sich das Custom Control für ein Rerender anmeldet. Mehrere Anmeldungen werden dann gemeinsam in einem Zyklus durchgeführt, welches wesentlich performanter ist, als wenn jedes Custom Control ein eigenes Rerender durchführen würde.

Impressum: Dennis Schey email: dennis|@|audiomixing.de

Date2025-12-02 07:48:53