Nowe posty

xx Dystrybucja pod HP Omen (6)
Wczoraj o 23:30:08
xx [Poradnik] Wyszukiwanie Sterowników (2)
Wczoraj o 21:08:23
lamp Problem z Linux Lite po instalacji (0)
Wczoraj o 19:50:30
xx Ile pingwinów? (1)
Wczoraj o 08:59:24
xx konfiguracja pale moon (0)
2024-03-24, 21:53:42
xx Plasma 6 w Neonie ssie trochę mniej ... (10)
2024-03-23, 02:38:11
xx problem z instalacja sterowników do karty sieciowej (3)
2024-03-18, 18:10:16
xx Plik abc.001 (1)
2024-03-17, 17:48:27
xx Zlecę dopracowanie programu w MatLab (0)
2024-03-13, 15:28:40
xx Linux Mint 21.3 XFCE brak dźwieku po paru minutach (karta muzyczna zintegrowana) (5)
2024-03-12, 23:07:01

Pokaż wiadomości

Ta sekcja pozwala Ci zobaczyć wszystkie wiadomości wysłane przez tego użytkownika. Zwróć uwagę, że możesz widzieć tylko wiadomości wysłane w działach do których masz aktualnie dostęp.


Wiadomości -

Strony: [1] 2 3 ... 8
1
C/C++ / Odp: [C] Uruchamianie zewnętrznych programów
« dnia: 2024-02-11, 13:48:18 »
Może odpisuję już jakiś czas temu, ale ten wątek nie został skasowany, m.in dla potomnych, więc dopiszę swoje.

Windows i Linux nie obsługują tych samych plików wykonywalnych, zarówno skryptowych, jak i binarnych. Tak jest domyślnie. Można napisać, że zawsze możesz nakazać użytkownikowi zainstalować WSL lub Wine, albo basha/python-a/perl-a pod Windows, ale czy to ma sens. Dalej rozwinę myśl, bo może to podsunie rozwiązanie: możesz pisać program w jakimś języku skryptowym i redystrybuować skrypty wraz z interpreterem, a na stronie wykrywać OS i podsuwać odpowiednią paczkę/instalator. Możesz również pisać pod Windows, i dystrybuować wersję Linuksową wraz z Wine (patrz: TeamViewer).

Natomiast, to polecam C++/Qt, i kompilację pod Windowsa i Linuksa. Do dystrybucji na Linuksa, to możesz skorzystać z Flatpaka. Flatpak ma mieć w przyszłości możliwość zarabiania na sprzedaży licencji lub dotacjach. Plik manifest dla Flatpaka nie jest dosyć skomplikowany. Sam opublikowałem jeden program na Flathub na gałęzi beta i zwykłej. Wcześniej wydawałem bundle dla innego programu. Jeżeli już się zdecydujesz na Qt/C++ i Flatpak, to nie zapomnij o runtime KDE.

2
C/C++ / Odp: libfuse i wielowątkowość
« dnia: 2024-02-11, 13:37:22 »
Sorry, za robienie bałaganu. Zapomniałem o tym wątku. Jeżeli można, to proszę o ewentualne połączenie obecnego wątku, a także tego: https://forum.linux.pl/index.php/topic,26861.0.html .

3
Zauważyłem, że w przypadku operacji create, fuse kolejkuje wywołania dla danego katalogu. Np:

cat > /punkt/montowania/mego/fs/podkatalog/plik_a
cat > /punkt/montowania/mego/fs/podkatalog/plik_b

Spowoduje, że create nie zostanie wywołane dla plik_b, dopóki procedura obsługi dla plik_a się nie skończy. Ja jednak muszę zwrócić resultat obsługi create (np. odmowa dostępu, itd.), lub identyfikator zasobu (o ile dobrze pamiętam). Czy jest sposób na wyłączenie tej blokady/kolejki?

4
Cytuj
Czytałem te źródło, ale nie ma opisu, co robi Obiekt1 ||= Obiekt2 . Przynajmniej ja nie zauważyłem.

Jest WSZYSTKO napisane.

if (!x){
 x = y
}

Dzięki! Szukałem jawnego odwołania do obiektów, a z moją znajomością języka angielskiego, jest kiepsko.

if (!x){
 x = y
}
Czyli już rozumiem. Zaimplementuję to.

5
Z internetu
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Logical_OR_assignment
Czytałem te źródło, ale nie ma opisu, co robi Obiekt1 ||= Obiekt2 . Przynajmniej ja nie zauważyłem.

6
Kompiluję kod w emscripten i mam problem. WebView androida wyrzuca mi, że nie zna operatora ||= . Postanowiłem dodać kod JavaScript, co w prototypie object sprawdza, czy taki operator został zdefiniowany. Jeżeli nie, to definiuje moją implementację. Problem tylko taki, że nie mogę znaleźć dokumentacji tego operatora. Znalazłem jedynie, że jest to logiczne OR na lewej i prawej stronie wyrażenia, a wynik jest zapisywany do lewej. Czy dla obiektu, to dodaje pola z wartościami z prawej strony wyrażenia do obiektu z lewej, jednocześnie nadpisując pojawiające się w obu obiektach?

7
C/C++ / Odp: libfuse i wielowątkowość
« dnia: 2023-12-30, 14:23:20 »
Współbieżne tworzenie plików  o różnych ścieżkach działa.

8
C/C++ / Odp: libfuse i wielowątkowość
« dnia: 2023-12-29, 21:23:15 »
Fuse nie jest dostosowany do osadzania go w innych aplikacjach (mam wrażenie, że to chcesz uzyskać). Ma własną, zamkniętą pętlę obsługi eventów. Filesystem serwowany z Fuse jest zamkniętą, samodzielną aplikacją.

1. Fuse sam z siebie obsługuje MT: zamieniasz  fuse_loop() na odpowiednie fuse_loop_mt_XX() i wtedy handlery wykonywane są współbieżnie na puli wątków. Jak twórcy piszą: "z pętlą MT cieszysz się wykonaniem współbieżnym oraz dodatkowo wyścigami i zakleszczeniami". Wszystkie handlery muszą być bezpieczne wątkowo.

2. Każde zapytanie Fuse jest zasadniczo samodzielnym bytem. Jeżeli potrzeba kontekstu, jest on globalny dla danej aplikacji realizującej Fuse.

Niby działa, przynajmniej otwieranie plików jest współbieżne. Problemem jest tworzenie plików, co mogę zrozumieć - kernel musi przeciwdziałać sytuacji, gdy wiele programów będzie chcieć utworzyć plik o tej samej nazwie. Nie wiem, czy chcę rozwiązywać ten problem. Sprawdzę jeszcze, czy tworzenie plików o różnych nazwach działa, ale z tego, co pamiętam, to nie, co przydałoby się rozwiązać.

9
C/C++ / libfuse i wielowątkowość
« dnia: 2023-10-30, 14:11:06 »
Zależy mi na napisaniu własnego systemu plików, co byłby interaktywny (coś, jakby KIO-Polkit czy UAC).

Problem jest taki, że python3-pyfuse ma problemy z obsługą wątków w niektórych implementacjach Pythona. W OpenSUSE akurat ma.
Są też inne moduły pythona dla fuse, ale są inne problemy, np. nie mogą być równocześnie zainstalowane z python-pyfuse.

Stąd postanowienie o przepisaniu na C. I stąd moje pytanie - jak wygląda kwestia wielowątkowości lub asynchroniczoności. Szukałem w dokumentacji i jest np. id sesji, ale do jego otrzymania, trzeba podać obiekt fuse, który nie jest przekazywany do funkcji-operacji-fuse.

Zależałoby mi czymś takim:

void callback_fuse(int identyfikator_żądania) {
    int fd = wywołujemy_helpera_przekazując_np_ścieżkę_do_pliku
   dodaj_deskryptor_pliku_i_id_żądania_do_pętli(fd, identyfikator_żądania)
}

// Pętla główna
while (1) {
   poll(deskryptory_plików_poll, ilość_deksryptorów, -1);
   int i;
  for (i = 0; i < ilość_deskryptorów; ++i) {
      if (deskryptory_plików_poll[i].revents) {
         int result = obsłuż_helpera(deskryptory_plików[i],&deskryptory_plików_poll[i])
         zwróć_resultat(id_żądań, result);
      }
   }

10
Taki strzał całkowicie w ciemno:

attr.key_size = 4;
               ^^^
               
attr.key = (__u64)&key_zero;
            ^^^^^

OTOH 4 pewnie odnosi się do rozmiaru key_zero, choć w testach w źródle kernela jest wszędzie .key_size = 8...

To nie jest błąd. Podawany jest wskaźnik na klucz, bo klucz ma rozmiar definiowany przez użytkownika. Unika się w ten sposób różnych problemów, jak obcięcia, promocji, itd. Przynajmniej ja tak zrozumiałem. Po podstawieniu 0 pod pole klucz, funkcja zwraca błąd niepoprawny adres (BAD ADDRESS). Generalnie, to jakby ta zmienna była typu (załóżmy) unsigned char, a ty chciałbyś mieć klucz long long unsigned int, to byłby problem. Fakt, że w dokumentacji jest napisane, że tablica musi mieć klucze czterobajtowe niczego chyba nie zmienia, bo mapa może być przeróżnego typu.

11
Niestety, ale funckja BPF_MAP_UPDATE_ELEMENT usługi bpf, zwraca operation not supported. MAP_

   
attr.map_fd = map_fd_read;
    attr.value = (__u64)&em_read.perf_monitor_fd;
    attr.key = (__u64)&key_zero;
    attr.flags = BPF_ANY;

    if (-1 == syscall(SYS_bpf, BPF_MAP_UPDATE_ELEM, &attr, sizeof(attr))) {

        perror("2.Unable to setup map: unable to set perf fd as map element");
        exit(1);
    }

Mapę tworzę tak:
memset(&attr, 0, sizeof(attr));
    attr.key_size = 4;
    attr.map_type = BPF_MAP_TYPE_PERF_EVENT_ARRAY;
    attr.value_size = 4;
    attr.max_entries = 1;

    map_fd_read = syscall(SYS_bpf, BPF_MAP_CREATE, &attr, sizeof(attr));

    if (-1 == map_fd_read) {
        perror("ERROR: Unable to create map");
        exit(1);
    }

Program BPF działa, ale BPF_FUNC_perf_event_output zwraca błąd.
Pytanie: czemu aktualizacja elementu zwraca, że operacja jest nieobsługiwana? Szukałem w internecie, i nie znalazłem. :-(

12
Uwagi i propozycje / Reklamy skierowane albo oferty skierowane
« dnia: 2021-01-23, 14:13:15 »
Chodzi o to, by zrobić coś potrzebnego szczególnie dla desktopowych użytkowników Linuksa. Reklamy skierowane by były skierowane względem położenia geograficznego. Ktoś dodaje do profilu swoje miasto zamieszkania i serwis automatycznie wyświetla mu reklamy usługodawców, świadczących usługi niedaleko miasta lub w nim. Alternatywnie, to można byłoby podzielić dział forum „wykonam” na województwa lub miasta.

Dlaczego? Trudno znaleźć w Polsce usługodawców świadczących usługi z GNU. System ten często jest pomijany lub brak informacji, kto wykonuje dobrze zlecenia. Np. dział na forum umożliwiłby polecanie usługodawców.

13
Advocacy / Odp: Propozycja recenzji
« dnia: 2020-10-19, 17:58:22 »
Jaki jest status? Na e-mail, jak i PW nic nie otrzymałem. Czekam z niecierpliwością.

15
Advocacy / Odp: Propozycja recenzji
« dnia: 2020-09-28, 19:10:12 »
Nadal jestem zainteresowany recenzją. Zastanawiam się też nad stworzeniem Polskiego, Linuksowego czasopisma o grach. Pełniaków, to chyba nie będzie, chociaż niekiedy można kupić np. Civ5 za mniej niż dolara (w przypadku Civ5 warto nadmienić, że wersja Linuksowa nie obsługuje języka Polskiego).

Na początku udostępniliśmy by parę numerów za darmo w sieci. Potem wyciągnęli wnioski, bazując na zainteresowaniu. Jestem graczem i wieloletnim użytkownikiem OpenSUSE, ale nie wiem za bardzo, jak się zabrać za profesjonalne redagowanie tekstów, skład i część artystyczną.

Strony: [1] 2 3 ... 8