Kompendium pracy codziennej, czyli jak wkroczyć w nowe laboratorium najlepiej :)

Aby pracować podczas programowania efektywnie, warto zdawać sobie sprawę z etapów takiej pracy i wykonywanych w jej trakcie czynności. By bez problemu realizować zadania, warto odpowiednio się do tego przygotować. Poniżej przedstawiono jak rzecz wygląda w typowych sytuacjach związanych z laboratorium Podstaw programowania. Oczywiście opisany sposób postępowanie nie jest jedynym możliwym a jedynie przykładowym, aczkolwiek wydaje się, że skutecznym sposobem pracy.

1. Przed zajęciami

Praktycznie w każdym ćwiczeniu wymagane jest samodzielne przygotowanie krótkich programów. Pamiętaj, by po ich opracowaniu i przetestowaniu umieścić je na serwerze diablo/panamint celem wykorzystania na zajęciach. Najwygodniej jest to zrobić z poziomu wykorzystanego do przygotowań komputera działającego pod nadzorem Linuksa wydając polecenie

jasiek@moj_komputer:~$ scp wartosci.c temp.c param.c user@diablo.kcir.pwr.edu.pl:Programy
Password: 
wartosci.c                                   100%   87     0.3KB/s   00:00
temp.c                                       100%   92     0.1KB/s   00:00
param.c                                      100%   44     0.1KB/s   00:00

co skopiuje wskazane pliki na komputer diablo (tudzież panamint, jako że komputery te mają wspólny system plików) do katalogu Programy (takowy na diablo musi istnieć). Z poziomu innych systemów operacyjnych należy w tym celu wykorzystać jakiś program potrafiący obsługiwać protokół scp (WinSCP, PSCP z programu PuTTY). Można też w ostateczności przynieść program ze sobą na pendrive'ie i skopiować go korzystając z komputerów w laboratorium.

Pamiętaj, by po umieszczeniu programów na diablo sprawdzić, czy kompilują się one tam i działają poprawnie.

2. W trakcie zajęć

Przygotowanie

By sprawnie przedstawić prowadzącemu własne programy warto się do tego odpowiednio przygotować. I tak:

  1. Należy być zalogowanym na wskazanym komputerze (diablo/panamint, najlepiej z przekierowaniem wyświetlania aplikacji graficznych (opcja X/Y)
    john@melasia314:~$ ssh user@diablo.kcir.pwr.edu.pl -X
    

  2. Warto skompilować przygotowane pliki źródłowe z wykorzystaniem opcji -o, tak aby każdy program był zapisany w oddzielnym pliku wykonywalnym
    [john@diablo:~]$ ls
    wartosci.c  temp.c  param.c
    [john@diablo:~]$ cc -Xc -o wartosci wartosci.c
    [john@diablo:~]$ cc -Xc -o temp temp.c
    [john@diablo:~]$ cc -Xc -o param param.c
    [john@diablo:~]$ ls
    wartosci  wartosci.c  temp  temp.c  param  param.c
    

  3. Warto otworzyć na komputerze zdalnym (diablo/panamint) lub lokalnym, w ulubionym edytorze, np. edytorze emacs czy VS Code, plik/pliki zawierające kod źródłowy przygotowanych programów
    [john@diablo:~]$ emacs wartosci.c temp.c param.c &
    

    Jeżeli połączenie nie przekazuje sesji graficznej (jest zestawione bez opcji X/Y), otwórz dodatkowe okno terminala i połącz się w nim z serwerem diablo/panamint. Wtedy w jednym z otwartych okien uruchom edytor z plikami źródłowymi, a w drugim przeprowadź ich kompilację. W tym przypadku edytor powinien być wywołany w pierwszym planie (bez operatora &), jako że wywołujemy go w wersji tekstowej. Do przełączania pomiędzy wczytanymi w nim buforami (plikami) służy komenda Ctrl-x b.

Programowanie

Proces programowania wymaga cyklicznego powtarzania kilku czynności. By robić to sprawnie warto:

  1. Utworzyć plik źródłowy, nad którym będziesz pracować. To może być nowy plik (wówczas w tym kroku nie musisz robić nic:), lub kopia jednego z plików, które opracowałeś(aś) wcześniej
    [john@diablo:~]$ cp param.c przec_zera.c
    
  2. Uruchomić w tle swój ulubiony edytor, np. emacs, i wczytać do niego opracowywany plik (najłatwiej podając jego nazwę jako argument wywołania edytora)
    [john@diablo:~]$ emacs przec_zera.c &
    
  3. Cykliczne, po każdorazowym dokonaniu zmian w edytowanym pliku, zapisać jego zawartość na dysk (w emacsie C-x C-s) a następnie (bez kończenia pracy edytora!) dokonać kompilacji programu w oknie terminala (pamiętaj, by podczas kompilowania kodu korzystać z opcji ścisłego przestrzegania standardu ANSI C oraz dodatkowych ostrzeżeń): kompilatorem Sun C (dostępnym tylko na diablo)
    [john@diablo:~]$ cc -Xc -o przec_zera przec_zera.c
    
    lub GNU C (dostępnym na diablo/panamincie/lokalnie – co zostaje wywołane na panaminicie/lokalnie po wydaniu polecenie cc?)
    [john@pdiablo:~]$ gcc -pedantic -Wall -o przec_zera przec_zera.c
    
    Częstsze kompilowanie mniejszych przyrostów kodu źródłowego pozwala uniknąć nagromadzenia błędów i znacznie usprawnia proces ich usuwania z programu. Zauważ, że wcześniej wywoływane polecenia możesz łatwo przywoływać używając klawisza strzałki w górę lub opcji przeszukiwania historii poleceń (C-r).

  4. Po poprawnym skompilowaniu programu dokonać jego uruchomienia
    [john@diablo:~]$ ./przec_zera
    
    i sprawdzić poprawność działania – to, że udało się skompilować program źródłowy nie oznacza, że działa on już poprawnie (błędy kompilacji vs. błedy wykonania).

Na zakończenie

  1. Wyślij efekty swojej pracy na zajęciach prowadzącemu (w zależności od ustaleń).
  2. Zakończ wszystkie otwarte połączenia z serwerami diablo/panamint
    [john@diablo:~]$ exit
    logout
    Connection to diablo.kcir.pwr.edu.pl closed.
    john@melasia314:~$
    
    i wyloguj się z lokalnej stacji roboczej.

3. W domu

Jeżeli posiadasz dostęp do systemu GNU/Linux (OS, maszyna wirtualna, Live USB), to wygodnie jest najpierw pracować nad programem lokalnie na własnym komputerze, a dopiero później, po jego uruchomieniu, przenieść jego źródła na serwer diablo/panamint – i tam, zdalnie, upewnić się co do jego poprawności lub/i nanieść wymagane poprawki. I tak:

  1. Skopiuj pliki, nad którymi pracowałeś(aś) na laboratorium, na swój komputer lokalny
    jasiek@moj_komputer:~$ scp user@diablo.kcir.pwr.edu.pl:plik_zrodel.c ~/
    Password: 
    plik_zrodel.c                                100%   47     0.1KB/s   00:00
    
  2. Otwórz źródła w ulubionym edytorze, np. emacs, VS Code, by dalej je rozwijać. Większość dystrybucji Linuksa ma domyślnie zainstalowany darmowy kompilator języka C, GNU C. Przy kompilacji należy dodawać odpowiednie flagi
    jasiek@moj_komputer:~$ gcc -Wall -pedantic -o prog plik_zrodel.c
    
  3. Kiedy program wydaje się już działać poprawnie, skopiuj go z powrotem na serwer diablo/panamint
    jasiek@moj_komputer:~$ scp plik_zrodel.c user@diablo.kcir.pwr.edu.pl: 
    Password: 
    plik_zrodel.c                                100%   47     0.1KB/s   00:00
    
  4. Połącz się zdalnie z serwerem diablo/panamint, skompiluj przesłany kod źródłowy i przetestuj poprawność jego działania
    jasiek@moj_komputer:~$ ssh user@diablo.kcir.pwr.edu.pl
    Password:
    Last user: Fri Apr 13 08:37:51 2012 from 176.42.241.76.i
    Sun Microsystems Inc.   SunOS 5.10      SUNW,Sun-Fire-880
    user@diablo:~$ cc -Xc -o prog plik_zrodel.c
    user@diablo:~$ ./prog
    
    Pamiętaj, że program, który wydaje się działać poprawnie na twoim lokalnym komputerze wcale nie musi działać poprawnie w ogólności, w tym na serwerze diablo! Dlatego ważnym jest, aby dokładnie go przetestować przed jego oddaniem. Jeśli będziesz miał potrzebę dokonania poprawek w pliku na zdalnym komputerze i zalogowałeś się na nim jak powyżej bez przekazywania sesji graficznej (brak opcji X/Y) to musisz uruchomić edytor w pierwszym planie (bez umieszczania na końcu polecenia znaku &).
  5. Wyślij gotowe sprawozdanie prowadzącemu (zgodnie z ustaleniami).

Jeżeli nie posiadasz w domu dostępu do systemu GNU/Linux, zainstaluj na komputerze aplikację pozwalającą na łączenie się z serwerem za pomocą protokołu SSH – dla systemu Windows wygodnym narzędziem jest np. program PuTTY (http://www.putty.org/). Zaleca się również zainstalowanie wygodnej aplikacji do bezpiecznego przesyłania plików pomiędzy lokalnym i zdalnym komputerem, np. WinSCP (https://winscp.net/).

  1. Uruchom wybraną aplikację, np. PuTTY, i połącz się z serwerem diablo/panamint.
  2. Kontynuuj, zdalnie, pracę nad programem.
  3. Wyślij gotowe sprawozdanie prowadzącemu (zgodnie z ustaleniami).

Oczywiście w obu opisanych powyżej przypadkach (z poziomu systemu GNU/Linux, innego – tutaj po zainstalowaniu odpowiedniego serwera XWindow) istnieje możliwość zdalnej pracy nad programem bezpośrednio na serwerach diablo/panamint w trybie z przekazywaniem sesji graficznej (opcja X/Y). Nie poleca się jednakże tego trybu pracy, jeżeli komputer lokalny znajduje się poza siecią wewnętrzną Politechniki Wrocławskiej – występują wtedy znaczne opóźnienia w przesyle danych, czy nawet zrywanie połączenia, co utrudnia komfortową pracę nad programem.

4. Kompilowanie programów na serwerach diablo/panamint

About this document ...

Kompendium pracy codziennej, czyli jak wkroczyć w nowe laboratorium najlepiej :)

This document was generated using the LaTeX2HTML translator Version 2021.2 (Released July 1, 2021)

The command line arguments were:
latex2html -html_version 3.2,unicode -split 0 -no_navigation dodatek_praca_codzienna

The translation was initiated on 2024-10-25