Narzędzia użytkownika

Narzędzia witryny


Pasek boczny

sk2:zajecia_zdalne

Oprogramowanie do zdalnych zajęć

Programowanie niskopoziomowe

Qt
Proszę zainstalować program qtcreator oraz podstawowe biblioteki deweloperskie, dokumentację i narzędzia frameworku Qt (w wersji 5.15.X lub 6.X).
W zdecydowanej większości dystrybucji Linuksa pakiety są dostępne w domyślnych repozytoriach (np. dla Ubuntu: qtbase5-dev qt5-doc qtcreator).
Proszę przetestować czy środowisko działa poprawnie kompilując przykładowy kod: l6_z2_template.tar.xz.
Uwaga: dla Qt6 trzeba w CMakeLists.txt zmienić wszystkie wystąpienia Qt5 na Qt6

Java
Proszę zainstalować JDK i swoje ulubione IDE do Javy (np. IntelliJ / Eclipse / NetBeans).

DNS

Kształtowanie ruchu

IPv6

WLAN 1

WLAN 2

WLAN 3

Udostępnianie widoku swojego pulpitu

Proszę wybrać jedną metodę na udostępnianie mi podglądu kodu który piszecie.

Metoda #1: Udostępnienie VNC prowadzącemu (Linuks)

Skrócona instrukcja

Instrukcja skrócona (dla osób które chcą gotowe polecenia i nie chce im się czytać dalej):

  1. zainstaluj openvpn, x11vnc i vncviewer
  2. wykonaj:
    wget http://www.cs.put.poznan.pl/jkonczak/pub/sk2/sk2-vpn-ca.crt
    sudo openvpn --dev tap --client --ca sk2-vpn-ca.crt --auth-user-pass --daemon --remote ipv4.jprofesorek.mooo.com
    x11vnc -quiet -nopw -forever -display :0 & disown
    sleep 5
    ip -4 addr show dev tap0
  3. sprawdź z drugiego komputera czy po połączeniu go identycznymi poleceniami do VPNa możesz zobaczyć swój ekran:
    vncviewer <ip_komputera>

Pełna Instrukcja

Krok 1: dołączenie do VPNa

W trakcie zajęć wykorzystywany będzie OpenVPN. Należy zainstalować odpowiednią paczkę (zwykle o nazwie openvpn) w systemie z którego będzie udostępniany ekran.

Uwaga: VPN jest skonfigurowany tak, by była łączność między wszystkimi podłączonym osobami, co będzie wykorzystywane w trakcie zajęć, ale niesie za sobą dość oczywiste konsekwencje bezpieczeństwa.

Do uruchomienia VPNa potrzebny jest:

  • plik CA: sk2-vpn-ca.crt,
  • adres: ipv4.jprofesorek.mooo.com,
  • informacja że VPN pracuje na warstwie 2 modelu ISO/OSI, tzn. device tap
  • (port i protokół domyślne - 1194/udp)
  • nazwa użytkownika i hasło, przekazane innym kanałem przez prowadzącego.
    Nazwę użytkownika i hasło można dla wygody wpisać do pliku o nieskomplikowanym formacie:
    userPass.txt
    theExampleUsername
    someIncorrectPassword

    Uwaga: plik z hasłem musi mieć uprawnienia zabraniające odczyt komukolwiek poza bieżącym użytkownikiem (do ustawienia uprawnień można użyć np. chmod go-rwx userPass.txt)

Polecenie uruchamiające VPNa, należy je uruchamiać z roota (wybierz jedno):

  • Wersja 1 - wszystko w linii poleceń:
    openvpn --dev tap --client --ca /somewhere/sk2-vpn-ca.crt --auth-user-pass /somewhere/userPass.txt --remote ipv4.jprofesorek.mooo.com

    Uwaga 1: można pominąć podawanie pliku /somewhere/userPass.txt, wtedy program pyta o nazwę użytkownika / hasło.
    Uwaga 2: można dodać opcję --daemon, która przenosi program w tło. Bez tej opcji program openvpn zajmuje konsolę (a zamknięcie okna z konsolą przerywa połączenie).

  • Wersja 2 - przygotuj plik konfiguracyjny:
    sk2-vpn.ovpn
    client
    remote ipv4.jprofesorek.mooo.com
    dev tap
    ca /somewhere/sk2-vpn-ca.crt
    auth-user-pass /somewhere/userPass.txt
    #daemon

    następnie uruchom polecenie:

    openvpn --config sk2-vpn.ovpn
  • Wersja 3 - użyj graficznego konfiguracja dla NetworkManagera (ta wersja potrzebuje NetworkManagera i może potrzebować dodatkowych pakietów, np. network-manager-openvpn-gnome).
    Uwaga: poza przeklikaniem wymienionych wyżej ustawień konieczne jest wyłączenie dodawnia domyślnej bramy przez VPN:
    IPv4 options / Routes… / Use this connection only for resources on its network
    Można to też zmienić z konsoli: nmcli c modify <nazwa_połączenia> ipv4.never-default true

Sprawdzenie czy wszystko poszło dobrze: po wykonaniu wybranej z komend, w wynikach komendy ip address powinien pojawić się interfejs tap0 z adresem IP z sieci 10.0.9.0/24. Dodatkowo powinna działać komenda ping 10.0.9.1.

Dla zainteresowanych konfiguracja serwera

Krok 2: uruchomienie VNC

Przykładowe polecenie używa serwer x11vnc aby udostępnić bieżącą sesję graficzną.
Możecie oczywiście użyć dowolnego innego serwera VNC, np. TigerVNC, który pozwala zarówno udostępnić bieżącą sesję (np. x0vncserver --SecurityTypes None) jak i stworzyć nową wirtualną sesję Xów (bez konieczności wykorzystania Xvfb).

Udostępnienie całej sesji graficznej:

x11vnc -forever -display :0 & disown

W powyższym poleceniu & disown wrzuca program w tło i odłącza program od bieżącego terminala.

Oczywiście normalnie VNC pozwala na kontrolę myszy i klawiatury. W x11vnc można dodać opcję -viewonly żeby pozwolić tylko na podglądanie ekranu.
Inne przydatne opcje to -quiet która zmniejsza gadatliwość standardowego wyjścia i -nopw która pomija komunikat że serwer nie jest chroniony hasłem.

Można poeksperymentować z udostępnieniem części ekranu (poniższe polecenia wymagają zainstalowania xwininfo do wyboru okna).
Udostępnienie jednego okna (nie udostępnia innych okien, np. oknien dialogowych czy okien menu):
x11vnc -forever -id pick -connect :0
Udostępnienie obszar jednego okna (uwaga: jeśli je coś zasłoni, x11vnc przesyła to co je zasłoniło):
x11vnc -forever -sid pick -connect :0
Udostępnienie jednej aplikacji (uwaga: u mnie nie działało prawidłowo):
x11vnc -appshare -id pick -connect :0

Aby sprawdzić czy VNC działa prawidłowo, należy spróbować połączyć się do (z innego komputera) np. poleceniem

vncviewer <ip lub nazwa domenowa>

Po uruchomieniu VPN i VNC należy na początku zajęć przesłać do prowadzącego swój adres IP z sieci 10.0.9.0/24.

Metoda #1: Udostępnienie VNC prowadzącemu (Windows)

Do zajęć z Qt / Javy można korzystać z Windowsa, stąd krótka instrukcja jak uruchomić VPN+VNC pod Windowsem.

OpenVPN

Należy zainstalować openvpn: https://openvpn.net/community-downloads/
Nie udało mi się (ale za bardzo nie próbowałem) skorzystać z GUI, stąd proponuję z uruchomionego jako administrator cmd.exe lub powershella wykonać odpowiednią komendę:

 "C:\Program Files\OpenVPN\bin\openvpn.exe" …

Argumenty dla komendy wyglądają jak w Linuksie.

Przykładowe screeny:

VNC

Przykładowy i dość bezproblemowy serwer VNC to TightVNC.
Inne popularne serwery VNC to np. RealVNC czy TigerVNC.
W każdym przypadku proszę o niewymaganie hasła (ewentualnie podanie hasła prowadzącemu).

Przykładowy screen:

Metoda #2: Wtyczka 'Live Share' w VS code (tylko zajęcia z programowania C/C++)

Ten sposób nie nadaje się do tematów innych niż 5-10 (od "Wstęp do BSD sockets" do "Dobre praktyki w programowaniu")

1) jeśli kompilator narzeka na --std=c++2a, to znaczy że jest dość stary; sugeruję zaktualizować, ale jeśli działa z --std=c++1z, to na potrzeby zajęć wystarczy
sk2/zajecia_zdalne.txt · ostatnio zmienione: 2021/12/18 13:38 przez jkonczak