Nowe posty

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 - Paweł Kraszewski

Strony: [1] 2 3 ... 199
1
Mam problem z dwoma laptopami: HP ProBook 450 G9 i HP EliteBook  640 G9

Oba skonfigurowane są dokładnie tak samo (jeden system na dysku, Manjaro). Po całkowitym wyłączeniu (żaden sleep, hybrid-sleep ani nic takiego) laptop zżera całą baterię w jakieś kilka dni.

Ktoś może ma podobne doświadczenia? Grzebię po supporcie i forach - ale jest od "yes we know" do "wyłącz zużywające energię aplikacje" (SIC!). Tak jakby się nie wyłączał całkowicie... W starych laptopach po miesiącu miałem ewentualne 10-20% spadek...

3
Inne / Odp: obraz Ubuntu 22.04.3
« dnia: 2023-08-22, 19:18:55 »
Od 22 lat instaluję linuksa z płyty
Widzisz, z pendriva byś już dawno zainstalował.

będzie się prawdopodobnie wiązało ze zmianą ustawień w BIOS.

Większość BIOSów ma na którejś F-ce boot do jednorazowego menu bootowania z dowolnego nośnika - bez zmiany konfiguracji. Często to F11 albo F9.

Wolę poczekać na lepiej skrojoną wersję Ubuntu...
Wątpię, że będzie. Użytkownicy fizycznych płyt są na wymarciu. Już 22.04.2 miało 5GB - więc jak nie poprawili tego w 22.04.3  to już nie poprawią.

Cytat z forum:
Cytuj
optical media such as DVD hasn't been the intended installation media since Ubuntu 20.04 LTS. A number of changes started occurring with 20.10 & later (boot media varies on release so all architectures work the same way for that release, plus automatic media validation) that don't suit optical media.

4
Inne / Odp: Wine 8
« dnia: 2023-08-21, 20:48:11 »
Może ten wątek pomoże?

5
Inne / Odp: obraz Ubuntu 22.04.3
« dnia: 2023-08-21, 20:45:22 »
Oj, chłopaki się przejechały o 300MB... Jest takie coś jak DVD-DL - ale po co, jak instalka mieści się na 8GB pendrivie. Instaluje się z niego 1598 razy szybciej niż z płyty...

6
Gry / Odp: Gry na partycji /home
« dnia: 2023-08-20, 18:51:44 »
* Gry instalowane z repozytorium pakietów natywnych (RPM, DEB czy co tam Twój Linux ma) - trafiają tam, gdzie pakiet mówi gdzie mają trafić. To jest niekonfigurowalne. Ale jeżeli trafiają do konkretnego katalogu (np /usr/games) możesz go podlinkować do katalogu w twoim katalogu domowym. Albo symlinkiem (gorzej) albo bind-mountem (lepiej). Pamiętaj, że nie będziesz mieć pełnych uprawnień do tego katalogu, nawet jak będzie w twoim katalogu domowym - a jak to zmienisz możesz uszkodzić system.
* Gry ze Steam trafiają do podkatalogu w .steam użytkownika, który je instalował. Można zmienić w konfiguracji.
* Snap trzyma swój pieprznik w /var/lib/snapd/, ale to można zmienić w konfiguracji daemona.
* Flatpak trzyma swój pieprznik w /var/lib/flatpak, to też można zmienić w konfiguracji daemona.

Tutaj naprawdę system wie lepiej. Większość znanych mi wybuchniętych Linuksów i Windowsów to próby udowodnienia, ze użytkownik wie lepiej. Nie przenoś przyzwyczajeń z Windows na Linuksa.

7
Instalacja / Odp: Eurolinux Desktop
« dnia: 2023-08-19, 16:15:33 »
Ten konkretnie błąd raportowany jest w 2 przypadkach:
* Praca w wirtualce libvirt z pustymi parametrami jądra.
* Zbyt małe partycje (któraś z / (główna systemowa), /boot bądź /boot/efi).

8
C/C++ / Odp: Budowa komunikatora internetowego
« dnia: 2023-08-11, 18:52:04 »
OK. To teraz pytanie do Ciebie - jak dużo własnego kodu musi być w pracy (tj rozumiem, że nie gotowy komunikator - ale może na przykład jakieś frameworki typowo sieciowe). Jeżeli tak, popatrz na gRPC.

* Format transmisji opisujesz plikiem tekstowym (format ProtoBuf).
* Na podstawie pliku generowane są:
  - Serializator i deserializator danych (nie musisz martwić się o format danych "na drucie")
  - Szablon serwera (klasa abstrakcyjna)
  - Szablon klienta (klasa abstrakcyjna)

Plusy gRPC/PB są takie:
* klient i serwer mogą być w różnych językach. Na przykład serwer w C++ i klienci w JS są możliwym rozwiązaniem.
* nie musisz bawić się w samodzielne pisanie obsługi sieci
* W przeciwieństwie do innych standardowych RPCów (REST, XML, itp), gRPC obsługuje funkcje przyjmujące i zwracające strumień wiadomości (nie tylko "one shot").
* Łatwo się aktualizuje protokół do nowych funkcji.

Jeżeli gRPC jest zbyt wysokopoziomowe/za bardzo "wszystkomający", popatrz na przykład na kombinację ZeroMQ do transmisji (AZMQ spina to z Boostem, ciebie najprawdopodobniej zainteresuje wzorzec PUB-SUB) i jakiegoś kodeka JSON/BSON/MsgPack do danych "na drucie".


EDIT: w dokumentacji Boosta masz gotowy przykład chatu.

9
C/C++ / Odp: Budowa komunikatora internetowego
« dnia: 2023-08-11, 12:40:22 »
Cytuj
problem z zarządzaniem efektywnym pamięcią
:] Witaj w klubie.

1. W jakim języku to w końcu piszesz? I na jaki OS?
2. Czy używasz jakiegoś wyżej-poziomowego narzędzia do socketów? (np z Boosta, jeżeli C++) Czy z surowych socketów systemu? Jaki protokół? TCP? UDP?

W takich rozwiązaniach - jeżeli nie wchodzisz w asynca (jak robi to np. nginx) i pracujesz na protokole połączeniowym - robisz wątek na połączonego klienta i wtedy powinieneś nadążać z czytaniem i interpretacją pakietów. Przydatny jest tu model aktora - jeden klient - jeden (albo dwa - jeden odbiorczy, jeden nadawczy) aktory, komunikacja między nimi przez komunikaty. Dla C++ na przykład The C++ Actor Framework.
Użycie aktorów z przesyłaniem komunikatów bardzo upraszcza model wielowątkowy (nie ma potrzeby ręcznych blokad czy globalnej synchronizacji).

Od lat pracuję na modelu aktora (w Erlangu co prawda) - świetnie się sprawdza w systemach P2P i klient-serwer.

10
Cytuj
Cytuj
Z informacji które udało mi się znaleźć w sieci
Nie dość że ładna, to jeszcze mądra...

Co do Twojego kernel panika: to "Yes, but actually no". Kernel wstał cały prawidłowo, potem rozpakował initrd,  który odpalił systemd, który załadował libc-a, który z kolei się wysypał (przez brak SSE3) - w związku z czym kontrola wróciła do kernela, który przy awarii procesu init[1] rzuca ręcznik na ziemię i się panikuje (bo i tak nie ma nic lepszego do roboty).

Pozostaje użyć jakiegoś bardziej konserwatywnego systemu. Debian, Arch, któryś BSD. Może Ubuntu Server.

11
Chyba pierwszy w historii forum post z prawie wszystkimi potrzebnymi danymi...
Też kiedyś walczyłem z panikiem.

1. Wyłącz w menu bootowania wszystkie splashe i quiety

2a) Jak maszyna ma port szeregowy i masz jak go wpiąć do drugiego komputera, to daj logowanie na ten port.

2b) Jak nie masz możliwości rejestracji przez COM-a, nagraj film video z bootowaniem i wytnij klatki zaczynające się tak z 10-15 linijek przed pierwszą linijką panika.

Potrzebne jest klilka(naście) linijek wyżej od tego, co  masz.

12
C/C++ / Odp: Budowa komunikatora internetowego
« dnia: 2023-07-27, 08:35:15 »
Dzięki wielkie za pomoc na pewno będę się odzywał jeszcze w tym temacie jak będę miał do was pytania odnośnie budowy i zabezpieczania programu.
Jak będziesz miał potrzebę komunikacji poza forum, wyślij wiadomość przez "kopertkę" pod moim ID. Nie napiszę systemu za ciebie, ale mogę podpowiedzieć narzędzia, protokoły czy biblioteki i ewentualnie rzucić okiem na założenia, implementację i dokumentację, czy nie ma jakiś oczywistych fuckupów.

13
Te dwa błędy od Chromium wynikają ze sposobu działania Xów. Twój ekran (w skrócie driver karty graficznej/klawiatury/myszy) to serwer. Chrome (albo każda inna aplikacja chcąca się wyświetlić) to klient. X-y mają dwie formy łączności: przez gniazdo Unix (nieudane połączenie do /tmp/.X11-unix/X0), potem przez sieć (nieudane połączenie do localhost:6000).
Musisz do namespace'a dostarczyć któryś z tych dwóch sposobów.

14
C/C++ / Odp: Budowa komunikatora internetowego
« dnia: 2023-07-25, 14:22:13 »
Cytuj
Szybko mnie przejrzałeś.

8 lat dydaktyki robi swoje...
Cytuj
Co do 3 pytania
Pytanie 3 było na przypadek komercji. ;)

Praca zaliczeniowa ma kilka miłych cech:
* Możesz sobie pozwolić na skalowanie projektu na kilkudziesięciu/góra kilkuset użytkowników.
* Nie musisz zapewniać SLA dla klientów
* Ochrona przed złośliwymi użytkownikami/DoS/DDoS jest sprawą drugorzędną.
* Nie musisz się chrzanić z RODO/GDPR

Z językiem bym się bardzo zastanawiał nad tym C++. Naprawdę mało rozwiązań tego typu jest w nim pisane. Z kompilowanych języków najwięcej rzeczy "z pudełka" do takiego projektu daje Go, potem Rust. Go ma całą kryptografię, TLS-y, kompresję, serwery HTTPS w bibliotece standardowej.

Masz dwie główne topologie:
* Klient-Serwer (gwiazda, tryb store-and-forward z centralnym serwerem/serwerami, tak działa 99,9% komunikatorów)

Możesz popatrzeć na gotowe rozwiązania kolejek komunikatów (MQTT, AMQT). Jak pomyślę, serwer Mosquitto ma 95% potrzebnej funkcjonalności serwerowej zaimplementowanej bezpośrednio - pozostałe 5% załatwiłby mikroserwis przypięty z boku, zajmujący się managmentem i buchalterią. Genialną cechą Mosquitto jest to, że może tworzyć dynamicznych użytkowników na podstawie DN certyfikatu SSL i można robić dynamiczne ACL-ki do kolejek na bazie nazwy użytkownika. Klientów MQTT masz do każdego popularnego języka (także dla JS, więc klienta możesz zrobić czysto przeglądarkowego i C++, jak promotor się uprze).

* P2P (brak centralnego serwera)

P2P ma kilka dodatkowych utrudnień:
 * trzeba rozwiązać problem dostarczenia wiadomości, gdy czasy pracy nadawcy i odbiorcy nie przecinają się (już to zauważyłeś, dobrze). Rozwiązaniem jest rozrzucenie komunikatu do kilku innych klientów - może któryś będzie działał jak pojawi się odbiorca. Odbiorca potem rozsyła potwierdzenie odbioru, który globalnie wipuje tą wiadomość z sieci. Warto dodać TTL, żeby nie zaśmiecać sieci, jak jakiś odbiorca się wypisze z sieci permanentnie.
 * P2P nie lubi mechanizmu NAT (brak NAT możesz przyjąć w założeniach pracy - jak prom się zgodzi. Jak nie, to potrzebujesz jakiegoś dodatkowego serwera np z protokołem STUN/TURN)


Jeżeli chodzi o sam transport danych między klientami, popatrz na bibliotekę libP2P. Daje ci ona bardzo dużo fajnych mechanizmów ułatwiających komunikację P2P (w tym NAT-traversal). Nad tym można zbudować bardzo ciekawy komunikator pracujący bez serwera centralnego. Dodatkowym mykiem jest to, że jest implementacja lipP2P w JS - może działać całkowicie w przeglądarce.

Niezależnie od topologii - jak chodzi o zabezpieczanie samych wiadomości (kryptografia end-to-end), popatrz na protokół OTR (używane np w Jabberze) oraz na implementację w kliencie Signala (mechanizm double-ratchet)

15
C/C++ / Odp: Budowa komunikatora internetowego
« dnia: 2023-07-25, 10:57:47 »
Parę pytań:

1. Problem jest na zaliczenie czy rzeczywiście chcesz świadczyć usługę? Jak zaliczenie, to można ściąć niektóre rogi. Jak komercja i "Nie wiem czy można to objeść nie jestem tak bardzo zaawansowany w kryptografii"  - absolutnie nie jesteś do tego gotowy.

2. "po stronie severa zaszyfrowanych kluczem publicznym użytkownika wysyłającego wiadomości". To może odszyfrować tylko wysyłający, więc wracasz na początek problemu. Miałoby sens zaszyfrować kluczem publicznym odbiorcy - wtedy odbiera on wiadomość w dogodnym czasie i odszyfrowuje.

3. Jakie w ogóle masz założenia tego projektu? Przede wszystkim - w czym miałby być lepszy od istniejących rozwiązań OpenSource?



To, ze większość serwerów komunikatorów jest napisana w Erlangu (ejabberd i pochodne), Pythonie (Matrix), Rubym (Mastodon), Go (alternatywny serwer Telegrama), Javie (serwer Signala),  Ruście (alternatywne implementacje wcześniejszych) i praktycznie nic dużego w C++ powinno dać coś do myślenia...

Strony: [1] 2 3 ... 199