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 celem prezentacji prowadzącemu zajęcia. 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 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ć w programie emacs 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 emacs 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, nagrać 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
    [john@diablo:~]$ cc -Xc -o przec_zera przec_zera.c
    
    lub GNU 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).

    Na komputerze panamint dostępny jest jedynie kompilator GNU CC.

  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. Jeżeli pracowałeś(aś) na stacji lokalnej, a nie na serwerze diablo/panamint, skopiuj wytworzone pliki na jeden z tych serwerów. W przeciwnym wypadku nie będziesz miał(a) do nich dostępu zdalnie!
    john@melasia314:~$ scp plik_lokalny.c user@diablo.kcir.pwr.edu.pl:
    Password: 
    plik_lokalny.c                                  100%   47     0.1KB/s   00:00
    
    W ten sposób plik_lokalny.c zostanie skopiowany do twojego katalogu domowego (~) na serwerze diablo.
  2. Wyślij efekty swojej pracy na zajęciach prowadzącemu (w zależności od ustaleń, np. za pomocą programu studinfo).
  3. 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, by dalej je rozwijać. Zauważ, że każda dystrybucja Linuxa ma domyślnie zainstalowany darmowy kompilator języka C, GNU CC, wię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, np. za pomocą programu studinfo).

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, np. za pomocą programu studinfo).

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 2008 (1.71)

Copyright © 1993, 1994, 1995, 1996, Nikos Drakos, Computer Based Learning Unit, University of Leeds.
Copyright © 1997, 1998, 1999, Ross Moore, Mathematics Department, Macquarie University, Sydney.

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

The translation was initiated by Robert Muszyński on 2019-10-22


Robert Muszyński 2019-10-22