Skip to content

Työväline tehtävät viikko 1: laitoksen Ubuntu ympäristö

Jussi Maristo edited this page Sep 4, 2017 · 14 revisions

Terve!

Tässä kurssin ensimmäisen viikon tehtävät. Ne on parasta tehdä pajassa. Ne myös kannattaa tehdä laitoksen koneilla, omalla koneella joutuu toisinaan soveltamaan. Mutta jos omalla koneella on Ubuntu, pitäisi mennä aika kivuttomasti.

TÄRKEÄÄ

Tehtävien suoritus merkitään itse LapioStats-palveluun. Jokaisen opiskelijan tulee luoda itselleen tunnus sivulle käyttäen omaa opiskelijanumeroa. Tämä on tärkeää, sillä kurssin tulokset (arvostelut, yms) merkitään lapiostatsin kautta.

Ohjelma on avointa lähdekoodia, ja sitä voi katsella ja parantaa Githubissa. Ei tarvitse vielä tietää mitä tämä tarkoittaa.

Apua tehtäviin löytyy internetistä. Erityisesti TKO-älyn fuksiwiki ja laitoksen tietotekniikka-sivut ovat hyödyllisiä. Materiaali näillä sivustoilla voi olla osittain vanhaa johtuen cs-tunnusten loppumisesta.

Tarkoitus ei ole, että ohjeissa kerrotaan kaikki. Opiskelemme Tietojenkäsittelytiedettä, ja siksi hakukone on todella tärkeä, ei pelkästään tällä, vaan kaikilla laitoksen kursseilla. Ei pidä kuitenkaan panikoida jos ei löydä haluamaansa asiaa internetistä, pajasta saa apua. Osa tehtävistä on kuitenkin sen verran yksinkertaisia, että ohjaajan voi olla tosi vaikea antaa niihin vinkkiä ilman että paljastaa ratkaisun!

Jos on jotain ohjaajiin liittyvää palautetta tai kommenttia, niin se on erittäin tervetullutta Chang Rajanille

Tehtävät on numeroinnin sijaan nimetty [näin], jolloin niihin voi yksikäsitteisesti viitata ja etsiä selaimen hakutoiminnolla (ctrl + f).

1 [ubuntu]

Boottaa kone Ubuntuun, jos se on Windowsissa. Tai laita kone päälle jos ei ole. Jos teet tehtäviä kotona, oletamme että koneellasi on Linux tai Mac.

2 [ktunnus]

Aktivoi käyttäjätunnuksesi, jos et ole vielä tehnyt sitä. Tässä ohjeet.

Käy tämän jälkeen laitoksen verkkosivuilla aktivoimassa laitoksen palvelut käyttöösi.

3 [email]

Asenna (jatkossa konffaa) yliopiston sähköpostisi Thunderbirdiin, tai haluamaasi sähköpostiohjelmaan, mutta webmail ei käy. Tässä ohjeita jos tarvitset.

4 [terminal]

Avaa pääte (Dash→kirjoita "Terminal") (tai vaihtoehtoisesti paina ctrl + alt + T ).

Dash on vasemman yläkulman Ubuntu-logolla varustettu käynnistin. Sen saa esiin myös Windows-näppäimellä.

Komenna ls -l.

Hae internetistä satunnainen lolcat ja tallenna kuva kotihakemistossasi olevaan Downloads-hakemistoon (johon selain oletuksena tallentaa). Toista ls -l. Näkyykö lolcat?

Ei pitäisi näkyä, joskin Downloads-hakemiston aikaleima on muuttunut. Vaihda hakemistoon komennolla cd Downloads. Toista ls -l. Joko näkyy?

Avaa myös tiedostoselain kotihakemistoosi (vasemman reunan Home Folder -käynnistin/launcher). Etsi lolcat näkyviin tiedostoselaimella.

Pääte listaa kotihakemistosi tiedostot komennolla ls; samoin tekee graafinen tiedostoselain (Ubuntussa/Gnomessa Nautilus). Tietojenkäsittelytieteessä hyödylliset työkalut ovat usein komentorivillä, ja se onkin Työväline-kurssin kiinnostavinta asiaa!

HUOM! Älä suorita laitoksen koneilla mitään komentoa joka alkaa komennolla sudo. sudo-komennolla yritetään suorittaa toista komentoa järjestelmänvalvojan oikeuksin. Sinulla ei ole näitä oikeuksia, ja jokaisesta yrityksestä lähtee viesti väärinkäyttöyrityksestä ylläpidolle.

5 [mkdir]

Luo kotihakemistoosi työväline-hakemisto, johon voit esim. tallentaa kurssin ohessa syntyviä shell-skriptejä.

Tutoriaali: https://help.ubuntu.com/community/UsingTheTerminal

Päätteessä on taikaa. Ylös/alas / nuolinäppäimet selaavat vanhoja komentoja. Tabulaattori Tab ↹ (q-kirjaimen vasemmalla) täydentää komentoja ja tiedostonimiä. Ja koska ctrl + c ja ctrl + v ovat päätteessä erityisiä, copy-paste on ctrl + shift + c sekä ctrl + shift + v.

Kaikista komennoista saa ohjeen komennolla man komento tai help komento. Man ei oo mikään hupiohje, vaan sisältää kaiken, mitä kyseinen komento osaa tehdä!

Man on manuaalisivujen selain. Se näyttää erikoisia groff-formatoituja tekstitiedostoja. Itse selaukseen man käyttää less-komentoa, ja näillä onkin samat näppäinkomennot. Tärkeimmät:

Komento Selite
/ Selaa alas/ylöspäin
pagedown / pageup selaa alas/ylöspäin sivu kerrallaan
< > siirry alkuun/loppuun
/ hae tekstiä (kysyy mitä etsitään)
n hae seuraava hakutuloks aiemmalla hakusanalla
h ohje
q poistu man/less -selaimesta

6 [ssh]

Avaa toinen pääte. Ota tekstipohjainen etäyhteys palvelimelle shell: ssh shell.cs.helsinki.fi. Anna kysyttäessä laitoksen salasanasi. Jos teet tehtävää kotikoneeltasi, oikea komento on ssh <käyttäjätunnus>@shell.cs.helsinki.fi missä tekstin <käyttäjätunnus>tilalla on oma yliopiston käyttäjätunnuksesi. Komenna ls -l.

Windowsissa käytetään ohjelmaa Putty.

Jatkossa tulee lisää ssh-etäyhteystehtäviä.

Laitoksella on kolme opiskelijoiden yleiskäyttöön tarkoitettua etä-ssh-linux-palvelinta: melkki, melkinpaasi ja melkinkari (.cs.helsinki.fi). Periaatteessa shell.cs.helsinki.fi saisi ohjata näistä vähiten ruuhkaiseen, mutta nykyisellään se ohjaa aina melkinpaasiin.

7 [kotihakemistot]

Käytössäsi on kaksi eri kotihakemistoa.

  • Helsingin yliopiston (AD) kotihakemisto (mikroluokkien tietokoneilla ja laitoksen palvelimilla) polussa /home/<käyttäjätunnus>
  • CSFS (CS) kotihakemisto polussa /cs/home/<käyttäjätunnus>

Luo Helsingin yliopiston (AD) kotihakemistoon symbolinen linkki CSFS kotihakemistoon komennolla ln -s ......... ...

Tutustu ln-komennon ohjeeseen komentamalla man ln ja selvitä kuinka symbolinen linkki luodaan.

OBS! Jos tekemäsi kansio näkyy punaisena eikä toimi, tutustu uudelleen tehtävään 2!

8 [rdesktop]

Ota etäyhteys laitoksen Windows-etäpalvelimeen (winserver.cs.helsinki.fi).

Laitoksen ohjesivu.

Ubuntulla esim. seuraava:

rdesktop -D -g workarea -xp -d TKTL -u tunnus winserver.cs.helsinki.fi

Kirjaudu sisään yliopiston tunnuksilla. Kirjautuminen saattaa kestää useita minuutteja.

man rdesktop kertoo mitä parametrit tekevät. -D -g workarea antaa huijauskokoruututilan, jossa Ubuntu-palkit jäävät näkyviin, koska virallisesta -f kokoruututilasta ei pääse pois. Komennolla less $(which windows) voit vakoilla, mitä laitoksen windows-komento tekee.

Windowsissa etäwindows-ohjelma löytyy nimellä "Remote Desktop Connection". OS X:ään saa Microsoftin tarjoaman etäwindowsin, tai hyväksi havaitun ilmaisen CoRDin.

9 [gedit]

Avaa gedit-tekstieditori. Määritä ainakin seuraavat asetukset

  • Näytä rivinumerot / Display line numbers
  • Korosta nykyinen rivi / Highlight current line
  • Korosta vastaava sulku / Highlight matching brackets

Laita myös hyödyllinen sivupaneelin tiedostoselain näkyviin.

Raportoi editoriin päivän fiiliksesi ja tallenna tekstitiedosto tehtävässä mkdir luomaasi työväline-hakemistoon nimellä perjantai.

Bonus: Mikä on ohpe-kurssin toivoma Java-koodin sarkainleveys (tab width)?

Muita tekstieditoreja: Atom ja Sublime Text. Molemmat tukevat Macejä, Linuxia ja Windowsia.

10 [nano]

Mainio tekstipohjainen tekstieditori pieniin muokkauksiin on nano. Se löytyy laitoksen tietokoneilta valmiina, ja sen voi käynnistää kirjoittamalla päätteeseen komennon nano. Kokeile sitä luomalla tiedosto Moi.java, jonka sisältönä on seuraava hello world -lokalisointi:

public class Moi {

    public static void main(String[] args) {

        System.out.println("Moi Kumpula!");

    }

}

Komenna nano Moi.java. Copy-paste, tallenna ja poistu nanosta: ctrl + x, y, enter.

Käännä ja suorita luomasi java-tiedosto: javac Moi.java, java Moi.

Nanon komentoja: ctrl + x lopettaa (ja kysyy tallennetaanko, jos teit muutoksia tiedostoon). ctrl + o tallentaa, muttei poistu nanosta. Lisää komentoja nanon alareunassa.

Ps. Putty-ssh:lla ja nanolla voit ohjelmoida Javaa kotiwindowsista: avaa kaksi Putty-ssh:ta. Toisessa nano moi.java, ctrl + o tallentaa. Toisessa javac moi.java && java moi. Tosin ohpe-kurssilla tämä tehdään paremmin, käyttämällä NetBeansia.

11 [nano-2]

Konffaa nanoon ohjelmoinnissa hyödyllinen autoindent. Tarpeelliset komennot: man nanorc, nano .nanorc. Tiedät, että olet onnistunut, kun editori muistaa edellisen rivin sisennyksen painaessasi enteriä.

12 [alias]

Tee seuraavat aliakset (apukomennot). Ks. help alias tai internetistä. Esim. Wikipediassa on tästäkin hyvä artikkeli.

  • alias manh, joka suorittaa komennon "man --html=chromium-browser" (eli avaa pyydetyn man-sivun Chromium-selaimessa). Mukavampi katsella man-sivuja selaimessa!

    Bonus: myös seuraava saattaa kiinnostaa: man -t bash | ps2pdf - bash.pdf. Tästä ei voi tehdä aliasta, koska muuttuja/parametri "bash" esiintyy muuallakin kuin komentorimpsun lopussa. Sen sijaan voi tehdä shell-skriptin (korvaa "bash"→"$1"), ja pian tehdäänkin!

  • alias ls, joka suorittaa komennon ls --color=auto, eli korvaa oletus-ls-komennon komennolla, joka värittää tiedostot/hakemistot niiden tyypin (tiedostopäätteen) mukaan!

  • alias o, joka suorittaa komennon ls -latr, eli listaa tiedostot...

    • l: pitkässä muodossa,
    • a: myös pisteellä “.” alkavat "piilotetut" tiedostot,
    • t: aikaleiman (muokkausajan) mukaan järjestettynä,
    • r: käänteisessä järjestyksessä, eli uusimmat tiedostot alimmaksi.

Monet käyttävät o-aliasta lähes aina komennon ls sijaan, koska usein kiinnostaa juuri uusimmat tiedostot. Nimi on “o” historiallisista DOS-syistä; voit tietenkin antaa omankin nimen.

13 [alias-2]

Tallenna kaikki aliakset ad-kotihakemistoosi tiedostoon .bash_aliases (huomaa piste alussa). Komento alias listaa nykyiset aliakset, niin voit kopioida. Tallennetut aliakset toimivat jatkossa kaikissa päätteissä joita käytät. Joudut kuitenkin määrittämään asetukset erikseen laitoksen ssh palvelimille. Seuraa tehtävän loppupäässä olevia ohjeita jos alias ei toimi.

Testaa: avaa uusi pääte, komenna o (myös värit pitäisi näkyä), manh nano.

.bash_aliases on aivan tavallinen tekstitiedosto. Sen tiedostonimen alussa oleva piste tekee tiedostosta piilotetun useissa normaaleissa käyttötilanteissa. Noin yleensä linuxissa kaikki konfiguraatiotiedostot ovat piste-alkuisia, ja moni niistä sijaitsee kotihakemistossasi. Tiedostoselain eikä ls eivät oletuksena näytä piste-alkuisia tiedostoja, mutta parametrilla -a ls näyttää: ls -la. Myös tiedostoselaimen saa näyttämään "piilotiedostot": View > Show hidden files.

OBS! Laitoksen koneilla joudut vielä lisäämään kotihakemistoosi tiedoston .bashrc (huomaa piste) ja sinne seuraavan oletus-ubuntussa valmiiksi olevan rivin (huomaa piste ja väli rivin alussa): . ~/.bash_aliases. Joudut avaamaan uuden terminaalin jotta muutokset tulevat voimaan.

OBS2! Ja jotta toimii myös ssh-yhteyksillä, pitää kotihakemistoon lisätä .bash_aliases ja lisäksi vielä tiedosto .profile (huomaa piste), ja sinne seuraava rivi (huomaa piste ja väli rivin alussa): . "$HOME/.bash_aliases". Joudut avata uuden etäyhteyden jotta muutokset tulevat voimaan.

Lisää tietoa yllä OBS-sivutusta aiheesta (login- ja non-login-shell).

http://www.joshstaiger.org/archives/2005/07/bash_profile_vs.html http://stefaanlippens.net/bashrc_and_others

14 [http]

Käytetään wget komentoa ja ladataan MOOCin ensimmäinen viikko koneellemme. (Muista man wget!) Avaa ensin tiedosto haluamallasi tekstieditorilla (nano, gedit). Mitä huomaat? Avaa nyt sivu selaimessa komennolla firefox <tiedoston nimi> (Tiedosto on luultavasti nimeltään index.html). Nyt näyttää paremmalta, mutta jotain on vieläkin hassusti.

Tämä johtuu siitä, että latasimme ainoastaan sivun HTML-koodin. Kuitenkin olellinen osa nettisivuja on myös Javascript ja CSS, joita emme saaneet ladattua mukaan. Perehdymme näihin syvällisemmin ensi viikolla.

15 [ssh-irc]

IRC on todella hyödyllinen työkalu opinnoissasi, sillä sieltä löytää lähes kaikkiin kursseihin apua. Sinne pääsy tehdään helpoksi näillä ohjeilla.

  1. Noudata fuksiwikin ohjeita irkin päälle laittamiseksi ja käy ainakin kääntymässä kanavalla #lapio2017 IRCnetissä. Kanavalla ei tarvitse sanoa mitään.

  2. Tee .bash_aliases -tiedostoon alias irc, joka ottaa laitokselle (melkki.cs.helsinki.fi) ssh-yhteyden ja ajaa suoraan komennon screen -dr. ssh-komento vaatii parametrin -t, jotta se suostuu avaamaan screenin "pseudo-tty":lle (ks. man ssh).

16 [public_html]

Laita testikotisivu internetiin: http://cs.helsinki.fi/u/tunnus (korvaa tunnus omallasi). Ks. laitoksen ohjeet (mutta älä noudata niitä).

  1. Tee cs-kotihakemistoosi uusi hakemisto public_html.
  2. Tee sinne tiedosto index.html, jonka sisältö on aluksi moikka moi tms.
  3. Aseta cs-kotihakemiston, public_html:n ja index.html:n oikeudet niin, että menemällä selaimella osoitteeseen http://cs.helsinki.fi/u/tunnus näet tiedoston index.html sisällön.
  4. Oikeuksien asettamiseen: man chmod.
  5. Periaate: tiedostoille oikeudet go+r, hakemistoille go+x.
  6. Todennäköisesti oikeudet ovat muuten itsestään oikein, mutta cs-kotihakemistolta (~) puuttuu go+x.

Oikeuksien säätämiseen ks. Wikipedia. Tee näin:

  • Siirry päätteessä hakemistoon public_html, jolloin ls -la näyttää kerralla kaikki tiedostot ja hakemistot, joiden oikeuksia pitää muuttaa.
  • . (piste) viittaa nykyiseen hakemistoon (public_html) ja .. (pistepiste) yhtä hakemistotasoa "ylöspäin" (kotihakemiston juuri eli ~).

Lopputilanne. Ei (välttämättä) haittaa jos on enemmän oikeuksia kuin alla.

tunnus@melkinkari:~/public_html$ ls -la
drwx--x--x  9 tunnus tkol    4096 elo   24 12:38 .
drwx--x--x 52 tunnus tkol    4096 elo   25 21:59 ..
-rw-r--r--  1 tunnus tkol      18 touko 21 18:22 index.html

Kun luot tiedostoja laitoksen koneilla tai ylipäätään Ubuntulla, oikeudet ovat oletuksena -rw-r--r--: sinulla on luku- ja kirjoitusoikeus, lisäksi ryhmällä (group) ja muilla (others) on lukuoikeus. Oletusoikeudet voi halutessaan vaihtaa komennolla umask.

17 [git]

Git on erittäin hyödyllinen työkalu jota käytetään todella monella laitoksen kurssilla, sekä työelämässä. Lisäksi on olemassa palvelu nimeltä Github, jota myös käytetään hyvin laajasti. Pikakatsaus siihen mitä git ja Github ovat löytyy täältä. Teemme kurkistuksen gitin toimintaan kloonaamalla repositorion. Ylläoleva linkki selventää myös tätä. Kloonaaminen tarkoittaa, että kopioimme jonkin projektin koko sisällön (koodin) omalle koneellemme.

Git löytyy laitoksen koneilta ja kaikista Ubuntu-asennuksista valmiiksi. Kloonaa (komento on git clone, man git-clone auttaa!) haluamasi repositorio koneellesi ja käy vilkaisemassa sen sisältöä. Esimerkkejä Java-repositorioista on JUnit ja Google Guava.

18 [plan]

Luo ad-kotihakemistoosi .plan-tiedosto (huom. piste) haluamallasi tekstieditorilla tai vaikka komennolla echo, jonka tulostuksen ohjaat tiedostoon uudelleenohjaus-operaattorilla >. Laita tiedostoon MAAILMANVALLOITUSSUUNNITELMASI.

Komenna ssh-palvelimella cat .plan, tulostaa (näytölle) tiedoston sisällön. Komenna chmod a+r .plan ja finger tunnus (korvaa omalla käyttäjätunnuksellasi). Pitäisi näkyä maailmanvalloitussuunnitelmasi.

Voit myös urkkia vieressä istuvien maailmanvalloitussuunnitelmia fingerillä. Kysy käyttäjätunnusta ja koklaa. Tämä toimii vasta kun edellisessä public_html -tehtävässä on lisätty kotihakemistoon a+x -oikeudet.

19 [montako-tehtävää]

Laske automatisoidusti (eli komentoriviltä), montako tehtävää tässä html-dokumentissa on.

Tarvittavat työkalut: curl -L, tämän sivun markdown-koodi, grep, putki | ja wc.

Vinkki: kaikki rivin alussa olevat [...] -tekstipätkät merkkaavat yhtä tehtävää.

PS. ei tarvii vielä osaa, tää oli viikon vika tehtävä!