Warsztat narzędziowy przydatny podczas pisania pracy dyplomowej cz. 1

W najbliższym czasie przedstawię kilka spostrzeżeń i wniosków związanych z narzędziami, które warto wykorzystywać podczas prac nad jakimkolwiek większym projektem. Niekoniecznie informatycznym. Niekoniecznie pracą dyplomową. Ponieważ sam dosyć długo eksperymentowałem, zanim odnalazłem (w mojej ocenie) najbardziej efektywne rozwiązania, chciałbym podzielić się wnioskami, które czytelnik mógłby bezpośrednio wykorzystać, żeby ułatwić sobie życie. Dzisiejszy post jest pierwszym w serii omawiającej 3 zagadnienia: LaTeX, system kontroli wersji, narzędzie do tworzenia kopii zapasowych.

Używanie LaTeX’a

Na wstępie dwa słowa, jeżeli ktoś z czytelników nigdy nie słyszał tej nazwy. Generalnie, wszystkie powszechnie znane edytory tekstu działają na zasadzie WYSIWYG, What You See Is What You Get. Edytuje się tekst, który jest rozmieszczony na stronie. Po wydrukowaniu uzyskuje się dokładnie to samo, co było na ekranie. LaTeX to zupełnie odmienne podejście. Wygląd dokumentu opisywany jest za pomocą komend. Za rozmieszczenie tekstu tak, jak to zostało zadeklarowane, odpowiada program kompilujący LaTeX, który jako rezultat, powiedzmy w uproszczeniu zwraca dokument PDF.

Na temat LaTeX’a istnieją jedynie skrajne opinie. Albo ktoś go nie używa i uważa za wariatów ludzi, którzy zaśmiecają sobie umysł jakimiś komendami, zamiast po prostu uruchomić Word’a; albo ktoś go używa i nie wyobraża sobie pisania dłuższych tekstów w innym narzędziu. Sam przeszedłem ewolucję od pierwszego do drugiego “typu” ludzi. W mojej ocenie, LaTeX w znaczący sposób ułatwia pracę nad długim tekstem i ma szereg zalet w porównaniu do klasycznych edytorów. Początkujący użytkownik napotyka jednak na kilka problemów, z których pierwszym jest wybór edytora.

Osobiście próbowałem używać różnych narzędzi, np. TeXnicCenter, Kile czy LEd, ale wszystkie one wydawały mi się skomplikowane i nieintuicyjne. LyX z kolei, moim zdaniem nakłada zbyt wiele ograniczeń na ogromne możliwości LaTeX’a. Wielu profesjonalistów używa po prostu Vim’a, ale moim zdaniem do wygodnej pracy potrzebnych jest wiele funkcjonalności oferowanych przez specjalistyczne edytory. Mam na myśli np. automatyczne wyświetlanie podglądu struktury dokumentu, sprawdzanie pisowni, zwijanie bloków kodu, dostępność “na wyciągnięcie ręki” najczęściej używanych komend itd. Narzędziem, które sam wybrałem i gorąco polecam jest TeXStudio. Oferuje on duży zbiór funkcjonalności, ma intuicyjny i zdumiewająco prosty w obsłudze interfejs oraz pozwala na szybką i łatwą konfigurację sprawdzania pisowni “w locie”. Moim zdaniem wielką zaletą tego narzędzia jest to, iż po bardzo krótkim zapoznaniu się z nim, można rozpocząć wydajną pracę. Gdy mamy już edytor, możemy przejść do konkretów - dlaczego LaTeX jest lepszy od tradycyjnych edytorów:

  1. Bardzo precyzyjna kontrola nad strukturą dokumentu. Wszelkie zmiany typu przesunięcie rozdziału do podrozdziału czy zmiana lokalizacji w strukturze dokumentu wykonują się bezboleśnie.

  2. W ogóle bardzo precyzyjna kontrola nad formatowaniem. W przypadku edytorów klasycznych, bardzo często zdarza się, że edytor zwyczajnie odmawia wykonania tego, co byśmy chcieli, żeby zrobił. Sam widziałem sytuację gdy Microsoft Word uparł się, że w dość długim dokumencie, na każdej stronie każdy pierwszy akapit miał zmniejszone marginesy w stosunku do reszty tekstu. Nie było żadnej możliwości, aby przekonać program, żeby to zmienił. W LaTeX’u takie rzeczy się nie zdarzają.

  3. Gdy wszystko jest już ustawione, można jedynie pisać swój tekst i nie martwić się, jak to będzie wyglądać. Ty koncentrujesz się jedynie na merytorycznej stronie pracy. Resztą zajmie się LaTeX. Używanie LaTeX’a jest jak zatrudnienie specjalisty od składania tekstu, który wykonuje dla nas czarną robotę za friko. Twój tekst zostanie tak rozmieszczony na stronach, że będzie wyglądał profesjonalnie.

  4. Jeżeli potrzebujesz pisać nietypowo sformatowane rzeczy, w dodatku zagnieżdżane jedne w drugich, np. wielokrotne wypunktowania z wklejonymi wyróżnianymi fragmentami od nowej linii (np. kod), to bardzo szybko docenisz potęgę LaTeX’a. Tego typu rzeczy po prostu działają. Nigdy nie zepsują Ci układu dokumentu. Będą wyglądać dokładnie tak, jak chcesz.

  5. Gdy zapragniesz dodać ilustrację w środku tekstu, również masz gwarancję, że nic w układzie tekstu “nie rozjedzie się”.

Word

  1. Masz pełną, w dodatku bardzo szybką i wygodną kontrolę nad odnośnikami do czegokolwiek w tekście. Dzięki tekstowym etykietom odnośników, na pierwszy rzut oka wiesz, do czego prowadzi odnośnik.

  2. Dokument jest czystym plikiem tekstowym, w związku z tym można na nim wykonywać dowolne operacje klasycznymi narzędziami jak grep/sed/awk/diff.

  3. Gdy w gotowym już dokumencie musisz wprowadzić jakiekolwiek zmiany, również nie musisz obawiać się, że cokolwiek “się zepsuje”.

  4. Dysponujesz gotowymi szablonami różnych typów dokumentów. Nie musisz martwić się jak powinna wyglądać książka, raport czy list. Po prostu używasz odpowiedniej klasy.

  5. Jeżeli uważasz że większość prezentacji wykonanych przy użyciu Microsoft PowerPoint wygląda mało profesjonalnie, to poczytaj sobie o klasie Beamer. To zupełnie nowa jakość jeśli chodzi o estetykę prezentacji.

  6. Dokumenty można edytować i kompilować na różnych systemach operacyjnych. TeXStudio działa bezproblemowo w systemie Microsoft Windows 7 i Linux.

Osobiście byłem pełen obaw, zanim podjąłem decyzję o pisaniu pracy magisterskiej w LaTeX’u. Mam porównanie, ponieważ pracę inżynierską pisałem w OpenOffice Writerze. Decyzja o wybraniu LaTeX’a była jednak bardzo dobra. Początkowo obawiałem się, że podczas pisania pojawią się takie rzeczy, których nie będę umiał zrobić. Nie należy się tego obawiać. W edytorach typu Microsoft Word, jeśli nie umiesz czegoś zrobić, to często nawet nie wiadomo jakie zapytanie wpisać do wyszukiwarki, aby rozwiązać problem. W LaTeX’u tak naprawdę jest dużo łatwiej. W każdym przypadku, zawsze, szybciej lub później udawało mi się znaleźć potrzebną do rozwiązania komendę.

Innym częstym problemem jest strona tytułowa, której układ sformalizowany dla danej uczelni może być kłopotliwy do samodzielnego uzyskania. Polecam w tym przypadku poszukać gotowych szablonów, najlepiej wśród studentów uczelni. Mniej obeznany użytkownik LaTeX’a faktycznie może mieć problemy z samodzielnym wytworzeniem stron tytułowych. Przed zabraniem się do poważniejszej pracy polecam również metodę polegającą na przećwiczeniu sobie najpotrzebniejszych zadań oraz komend potrzebnych do ich zrealizowania np. tabelki, bibliografii, wypunktowania etc. Z takich ćwiczeń warto jest utworzyć sobie jeden dokument zawierający przykłady użycia komend. We właściwej pracy można wtedy posiłkować się taką ściągawką i całkowicie skupić się ma zawartości merytorycznej tekstu.

Czy LaTeX ma jakieś wady? Aby opanować LaTeX’a należy się trochę wysilić. Opanowanie całości jest raczej niemożliwe i z pewnością bardzo trudne. Osobiście uważam, że słabo znam LaTeX’a. Ciekawe jest jednak to, iż znając nawet stosunkowo niewielki podzbiór komend można już zacząć wydajnie pracować. Inną wadą może być proces dostrajania różnych drobiazgów. Czasami bywa tak, że z pewnymi komendami trzeba eksperymentować, wielokrotnie kompilować dokument i patrzeć, czy rezultat jest właściwy. W pewnych przypadkach może to być uciążliwe, ale de facto jest to częścią procesu uczenia się LaTeX’a. Jeżeli natrafimy na dobre wytłumaczenie danej komendy wraz z przykładem to, można tego uniknąć.

Konwersja czasu w formacie Unix

W codziennej pracy bardzo często mam do czynienia ze znacznikiem czasowym typu Unix. Konwersja pomiędzy, nazwijmy to, “naturalnym” formatem czasu, a liczbą sekund, która upłynęła od 1 stycznia 1970 roku jest stosunkowo prosta. Jednakże moja praktyka pokazuje, że również niewygodna. Środowisko baz danych, z którym pracuję nie udostępnia stosownych funkcji w każdym schemacie, co prowadzi do kłopotliwego “zgadywania” gdzie znajduje się definicja funkcji. Z kolei napisane proste skrypty shell’owe opakowujące wywołania funkcji konwertujących Perl’a wymagają, jak nietrudno się domyślić, powłoki systemu Unix, co w systemie Windows również nie jest zbyt wygodne.

Zaistniała potrzeba stworzenia narzędzia z graficznym interfejsem, działającego w systemie Windows, takiego, które pozwoli na błyskawiczną konwersję zapisanego czasu w obie strony, bez zbędnego zastanawiania się w jakiej kolejności podać “naturalne” części daty. Napisałem w tym celu bardzo prosty program, który ma następujące właściwości:

  • Konwersja czasu do i z formatu systemu Unix “w locie”, tzn. podczas pisania.

  • Automatyczne zmiana fokusu na kolejne pole, po wpisaniu 4-cyfrowego roku, oraz kolejnych 2-cyfrowych fragmentów.

  • Możliwość ręcznego przełączania kolejnych pól za pomocą klawisza TAB.

  • Automatyczne wyświetlanie bieżącego czasu po uruchomieniu programu, oraz możliwość ręcznej aktualizacji do bieżącego czasu.

Należy pamiętać, że czas w formacie Unix liczony jest według czasu UTC. W związku z tym, data podawana w górnej części interfejsu mojego programu przed przeliczeniem na timestamp jest najpierw przeliczana na czas UTC według ustawień strefy czasowej systemu (dla Polski +1 godzina, w związku z tym program odejmuje 1 godzinę od podanego czasu).

UnixTime

Program do poprawnego działania potrzebuje środowiska .NET w wersji 2.0, co w praktyce pozwala założyć, iż będzie działał w każdym współczesnym systemie Windows. Możliwe jest dowolne, darmowe wykorzystanie i rozpowszechnianie jego skompilowanego pliku wykonywalnego. Poniżej link do pobrania:

UnixTime.zip

Hello World :)

Witam na moim blogu technicznym poświęconym głównie tematyce związanej z informatyką oraz użytkowymi aspektami komputerów i Internetu. Jako „użytkowe aspekty” rozumiem takie, które są sprytne i prowadzą do tego, że różne czynności możemy wykonać szybciej i prościej czyli po prostu ułatwić sobie życie - bo właśnie do tego moim zdaniem powinny służyć komputery. Ponieważ zdaję sobie sprawę, że blogów o tematyce IT jest już sporo, przy tworzeniu wpisów będę starał się uwzględniać:

  • Aby treść wpisu nie była powieleniem żadnego newsa znalezionego na innym blogu (sam nie lubię gdy w kilku serwisach czytam dokładnie o tym samym) - nie mam zamiaru zajmować się śledzeniem newsów - od tego są inne blogi i serwisy (np. osnews.pl) którym całkiem nieźle to wychodzi.
  • Aby treść wpisu była oryginalna - w ten sposób że na opisywany pomysł wpadłem sam i pochodzi on ode mnie, a jeżeli nawet podobne rozwiązania już istnieją to moje w znaczący sposób się od nich różni
  • Aby wpisy nie były trywialne - nie będę opisywać faktu, że pojawiła się kolejna wersja systemu Windows, albo że dodano nową funkcję GMail’a z Google Labs.
  • Nie wykluczam również od czasu do czasu jakichś własnych komentarzy czy przemyśleń Uśmiech

Blog kieruję do średniozaawansowanych użytkowników, choć zawsze będę starał się opisywać różne rzeczy tak, aby Ci mniej zaawansowani ale ambitni i kreatywni również skorzystali z moich pomysłów.