User Tools

Site Tools


sk2:zajecia_zdalne

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revisionPrevious revision
Next revision
Previous revision
sk2:zajecia_zdalne [2021/11/24 18:10] – [Metoda #1: Wtyczka 'Live Share' w VS code (tylko zajęcia z programowania C/C++)] jkonczaksk2:zajecia_zdalne [2021/12/18 12:38] (current) – [Oprogramowanie do zdalnych zajęć] jkonczak
Line 1: Line 1:
 ====== Oprogramowanie do zdalnych zajęć ====== ====== Oprogramowanie do zdalnych zajęć ======
  
-++++ Programowanie niskopoziomowe (zajęcia 1-6) |+++++ Programowanie niskopoziomowe |
  
 Do zajęć zdalnych koniecznie musicie mieć do dyspozycji: Do zajęć zdalnych koniecznie musicie mieć do dyspozycji:
   * system operacyjny GNU/Linux   * system operacyjny GNU/Linux
-  * dowolny współczesny kompilator C/C+''''+:+  * dowolny współczesny kompilator C/C+%%%%+:
     * polecane: [[https://gcc.gnu.org/|GCC]] w wersji ≥9 lub [[https://clang.llvm.org/|Clang]] w wersji ≥ 9     * polecane: [[https://gcc.gnu.org/|GCC]] w wersji ≥9 lub [[https://clang.llvm.org/|Clang]] w wersji ≥ 9
-    * uwaga: proszę sprawdzić działanie kompilatora na [[https://gitlab.cs.put.poznan.pl/jkonczak/sk2_examples/raw/master/l4/l4_z1_lambda.cpp|przykładowym pliku]] - plik powinien się kompilować komendą ''c+''''+ -pthread --std=c+''''+2a l4_z1_lambda.cpp''((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))+    * uwaga: proszę sprawdzić działanie kompilatora na [[https://gitlab.cs.put.poznan.pl/jkonczak/sk2_examples/raw/master/l4/l4_z1_lambda.cpp|przykładowym pliku]] - plik powinien się kompilować komendą ''c+%%%%+ -pthread --std=c+%%%%+2a l4_z1_lambda.cpp''((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))
   * IDE lub edytor tekstowy do pisania kodu:   * IDE lub edytor tekstowy do pisania kodu:
     * przykładowe IDE: [[https://www.kdevelop.org/|kdevelop]], [[https://www.qt.io/product/development-tools|QtCreator]], [[https://www.jetbrains.com/clion/|CLion]] (wersja dla edukacji jest bezpłatna)     * przykładowe IDE: [[https://www.kdevelop.org/|kdevelop]], [[https://www.qt.io/product/development-tools|QtCreator]], [[https://www.jetbrains.com/clion/|CLion]] (wersja dla edukacji jest bezpłatna)
Line 23: Line 23:
     * ''wireshark''     * ''wireshark''
   * wygodny emulator terminala   * wygodny emulator terminala
- 
 ++++ ++++
  
-++++ Qt – 10.11 i 17.11 (grupy wtorkowe) / 25.11 i 2.12 (grupy środowe) (zajęcia 6 i 7) | +**Qt**\\ 
-Proszę zainstalować program qtcreator oraz podstawowe biblioteki deweloperskie, dokumentację i narzędzia frameworku Qt (w wersji 5).  +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 libclang-common-8-dev''((Paczka ''libclang-common-8-dev'' jest wymagana w Ubuntu niezależnie od wersji clanga [[https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=952718|z niezrozumiałych przeze mnie powodów]]))). \\ +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: {{:sk2:l6_z2_template.tar.xz|}}. +Proszę przetestować czy środowisko działa poprawnie kompilując przykładowy kod: {{:sk2:l6_z2_template.tar.xz|}}. \\ 
-+++++<html><small></html>Uwaga: dla Qt6 trzeba w CMakeLists.txt zmienić wszystkie wystąpienia ''Qt5'' na ''Qt6''<html></small></html>
  
-++++ Java - 24.11 (grupy wtorkowe) / 9.11 (grupy środowe)  (zajęcia 8) |+**Java**\\
 Proszę zainstalować JDK i swoje ulubione IDE do Javy (np. IntelliJ / Eclipse / NetBeans).  Proszę zainstalować JDK i swoje ulubione IDE do Javy (np. IntelliJ / Eclipse / NetBeans). 
-++++ 
  
-++++ DNS - 1.12 (grupy wtorkowe) / 9.12 (grupy środowe) (zajęcia 9) |+++++ DNS |
 Proszę zainstalować programy ''dig'', ''host'' i ''bind''. \\ Proszę zainstalować programy ''dig'', ''host'' i ''bind''. \\
 W zależności od dystrybucji, programy mogą być w paczkach o nazwach: W zależności od dystrybucji, programy mogą być w paczkach o nazwach:
Line 76: Line 74:
 ++++ ++++
  
-++++ Kształtowanie ruchu - 8.12 (grupy wtorkowe) / 23.12 (grupy środowe) (zajęcia 10) |+++++ Kształtowanie ruchu |
 Na zajęciach będziecie pracować na komputerach w laboratorium na Politechnice. Na zajęciach będziecie pracować na komputerach w laboratorium na Politechnice.
 Przed zajęciami proszę: Przed zajęciami proszę:
Line 91: Line 89:
  
  
-++++ IPv6 - 15.12 (grupy wtorkowe) / 13.01 (grupy środowe) (zajęcia 11) |+++++ IPv6  |
 Podobnie jak na zajęciach z kształtowania ruchu (powyżej) w trakcie zajęć będą wykorzystywane komputery w laboratoriach. Podobnie jak na zajęciach z kształtowania ruchu (powyżej) w trakcie zajęć będą wykorzystywane komputery w laboratoriach.
  
Line 103: Line 101:
 ++++ ++++
  
-++++ WLAN 1 - 22.12 (grupy wtorkowe) / 20.01 (grupy środowe) (zajęcia 12) |+++++ WLAN 1  |
 Podobnie jak na zajęciach z IPv6 (powyżej) w trakcie zajęć będą wykorzystywane komputery w laboratoriach. \\ Podobnie jak na zajęciach z IPv6 (powyżej) w trakcie zajęć będą wykorzystywane komputery w laboratoriach. \\
 Możliwe (zależy od tempa zajęć) że w trakcie zajęć będzie też potrzeba uruchomić Wireshark na komputerach w laboratorium. Możliwe (zależy od tempa zajęć) że w trakcie zajęć będzie też potrzeba uruchomić Wireshark na komputerach w laboratorium.
 ++++ ++++
  
-++++ WLAN 2 - 12.01 (grupy wtorkowe) / 27.01 (grupy środowe) (zajęcia 13) |+++++ WLAN 2  |
 Zajęcia będą odbywać się na komputerach w laboratorium. \\ Zajęcia będą odbywać się na komputerach w laboratorium. \\
 W zależności od ilości osób może wystąpić konieczność pracy w grupach – sprzętowych AP jest ograniczona ilość. W zależności od ilości osób może wystąpić konieczność pracy w grupach – sprzętowych AP jest ograniczona ilość.
Line 114: Line 112:
 ++++ ++++
  
-++++ WLAN 3 - 19.01 (grupy wtorkowe) |+++++ WLAN 3  |
 Zajęcia będą odbywać się na komputerach w laboratorium. \\ Zajęcia będą odbywać się na komputerach w laboratorium. \\
 Będziecie konfigurować sprzęt firmy MikroTik, który najłatwiej konfiguruje się z użyciem przeglądarki pod domyślnym  dla sprzętu tej firmy adresem IP 192.168.88.1.\\ Będziecie konfigurować sprzęt firmy MikroTik, który najłatwiej konfiguruje się z użyciem przeglądarki pod domyślnym  dla sprzętu tej firmy adresem IP 192.168.88.1.\\
Line 126: Line 124:
 ====== Udostępnianie widoku swojego pulpitu  ====== ====== Udostępnianie widoku swojego pulpitu  ======
  
-Proszę wybrać jedną metodę na udostępnianie mi podglądu kodu który piszecie.+Proszę wybrać __jedną__ metodę na udostępnianie mi podglądu kodu który piszecie.
  
-Najprostsza do skonfigurowania jest metoda #1, ale nie pozwala ona mi widzieć terminala, co utrudnia mi pomaganie w razie problemów z/podczas uruchomienia programów. +===== Metoda #1: Udostępnienie VNC prowadzącemu (Linuks) =====
-===== Metoda #1: Wtyczka 'Live Share' w VS code (tylko zajęcia z programowania C/C++) =====+
  
-Edytor VisualStudio Code pozwala udostępniać bieżąco edytowany projekt przy użyciu rozszerzenia [[https://visualstudio.microsoft.com/pl/services/live-share/|Live Share]]. +==== Skrócona instrukcja ==== 
-  - pobrać i zainstalować VS Code, +Instrukcja skrócona (dla osób które chcą gotowe polecenia i nie chce im się czytać dalej):
-  - zainstalować wtyczkę Live Share (menu view/extensions), +
-  - zalogować się, np. kontem Microsoft ([[https://instrukcje.put.poznan.pl/microsoft-office365-tworzenie-konta/]]), +
-  - wybrać 'live share' (1), wystartować współdzielenie (2), wybrać 'invite' (3) i przekazać link prowadzącemu (numery odnoszą się do ilustracji poniżej) +
-  - po pojawieniu się prośby o dołączenie osoby, zaakceptować tę prośbę. +
-{{:sk2:vscode_ls.png|}}+
  
-**Uwaga**: Osoby korzystające z tej metody powinny do zajęć 1 i 2 z BSD sockets: +  - zainstaluj openvpn, x11vnc i vncviewer 
-  * uruchomić u siebie usługę daytime na TCP i UDP +  - wykonaj:<code> 
-  * lub wykonać z roota polecenie zastępujące daytime, np: \\ ''socat udp-l:daytime,fork exec:date & socat tcp-l:daytime,fork exec:date &''+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</code> 
 +  - sprawdź z drugiego komputera czy po połączeniu go identycznymi poleceniami do VPNa możesz zobaczyć swój ekran:<code>vncviewer <ip_komputera></code>
  
- +==== Pełna Instrukcja ====
- +
-===== Metoda #2: Udostępnienie VNC prowadzącemu (Linuks) ===== +
- +
-  # tl;dr (czyli dla osób które chcą gotowe polecenia i nie chce im się czytać dalej) +
-  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+
      
- +=== Krok 1: dołączenie do VPNa ===
-==== 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. 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.
  
Line 166: Line 153:
   * (port i protokół domyślne - 1194/udp)   * (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: <code - userPass.txt>theExampleUsername   * 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: <code - userPass.txt>theExampleUsername
-someIncorrectPassword</code>Uwaga: plikz 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'')+someIncorrectPassword</code>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**): Polecenie uruchamiające VPNa, należy je uruchamiać z __roota__ (**wybierz jedno**):
-  * Wersja 1 - wszystko w linii poleceń: <code>openvpn --dev tap --client --ca /somewhere/sk2-vpn-ca.crt --auth-user-pass /somewhere/userPass.txt --remote ipv4.jprofesorek.mooo.com</code> Uwaga 1: można pominąć nazwę 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 1 - wszystko w linii poleceń: <code>openvpn --dev tap --client --ca /somewhere/sk2-vpn-ca.crt --auth-user-pass /somewhere/userPass.txt --remote ipv4.jprofesorek.mooo.com</code> 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: <code - sk2-vpn.ovpn>client   * Wersja 2 - przygotuj plik konfiguracyjny: <code - sk2-vpn.ovpn>client
 remote ipv4.jprofesorek.mooo.com remote ipv4.jprofesorek.mooo.com
Line 176: Line 163:
 auth-user-pass /somewhere/userPass.txt auth-user-pass /somewhere/userPass.txt
 #daemon</code> następnie uruchom polecenie: <code>openvpn --config sk2-vpn.ovpn</code> #daemon</code> następnie uruchom polecenie: <code>openvpn --config sk2-vpn.ovpn</code>
-  * Wersja 3 - użyj graficznego konfiguracja dla NetworkManagera (ta wersja potrzebuje NetworkManagera i może potrzebować dodatkowych pakietów, np. ''network-manager-openvpn-gnome'').+  * Wersja 3 - użyj graficznego konfiguracja dla NetworkManagera (ta wersja potrzebuje NetworkManagera i może potrzebować dodatkowych pakietów, np. ''network-manager-openvpn-gnome''). <html><small></html> \\ 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'' <html></small></html> 
  
 **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''. **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''.
Line 182: Line 169:
 <html><small></html>Dla zainteresowanych [[sk2:vpn_serwer_dla_zajec|konfiguracja serwera]]<html></small></html> <html><small></html>Dla zainteresowanych [[sk2:vpn_serwer_dla_zajec|konfiguracja serwera]]<html></small></html>
  
-==== Krok 2: uruchomienie VNC ====+=== Krok 2: uruchomienie VNC ===
  
 Przykładowe polecenie używa serwer [[https://en.wikipedia.org/wiki/X11vnc|x11vnc]] aby udostępnić bieżącą sesję graficzną. \\ <html><small></html> Przykładowe polecenie używa serwer [[https://en.wikipedia.org/wiki/X11vnc|x11vnc]] aby udostępnić bieżącą sesję graficzną. \\ <html><small></html>
Line 214: Line 201:
 **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.** **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 #2: Udostępnienie VNC prowadzącemu (Windows) =====+===== 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. Do zajęć z Qt / Javy można korzystać z Windowsa, stąd krótka instrukcja jak uruchomić VPN+VNC pod Windowsem.
  
 === OpenVPN === === OpenVPN ===
-Należy zainstalować openvpn: https://openvpn.net/community-downloads-2/ \\+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 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 proponuję z __uruchomionego jako administrator__  cmd.exe lub powershella
 wykonać odpowiednią komendę: \\ wykonać odpowiednią komendę: \\
-   ''"C:\Program Files\OpenVPN\bin\openvpn.exe" …'' \\+   "C:\Program Files\OpenVPN\bin\openvpn.exe" …
 Argumenty dla komendy wyglądają jak w Linuksie. Argumenty dla komendy wyglądają jak w Linuksie.
 ++++ Przykładowe screeny: | ++++ Przykładowe screeny: |
Line 236: Line 223:
 ++++ Przykładowy screen: | ++++ Przykładowy screen: |
 {{:sk2:win-vnc.png|}} {{:sk2:win-vnc.png|}}
 +++++
 +
 +
 +===== 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") |
 +
 +Ta metoda jest prostsza do skonfigurowania, ale nie pozwala ona mi widzieć terminala, co utrudnia mi pomaganie w razie problemów z/podczas uruchomienia programów.
 +
 +Edytor VisualStudio Code pozwala udostępniać bieżąco edytowany projekt przy użyciu rozszerzenia [[https://visualstudio.microsoft.com/pl/services/live-share/|Live Share]].
 +  - pobrać i zainstalować VS Code,
 +  - zainstalować wtyczkę Live Share (menu view/extensions),
 +  - zalogować się, np. kontem Microsoft ([[https://instrukcje.put.poznan.pl/microsoft-office365-tworzenie-konta/]]),
 +  - wybrać 'live share' (1), wystartować współdzielenie (2), wybrać 'invite' (3) i przekazać link prowadzącemu (numery odnoszą się do ilustracji poniżej)
 +  - po pojawieniu się prośby o dołączenie osoby, zaakceptować tę prośbę.
 +{{:sk2:vscode_ls.png|}}
 +
 +**Uwaga**: Osoby korzystające z tej metody powinny do zajęć 1 i 2 z BSD sockets:
 +  * uruchomić u siebie usługę daytime na TCP i UDP
 +  * lub wykonać z roota polecenie zastępujące daytime, np: \\ ''socat udp-l:daytime,fork exec:date & socat tcp-l:daytime,fork exec:date &''
 +
 ++++ ++++
sk2/zajecia_zdalne.1637777413.txt.gz · Last modified: (external edit)