Month: February 2012

Hello World -ohjelma 3 eri ohjelmointikielellä

Tässä artikkelissa käsittelen helloworld -ohjelman luomista kolmella eri ohjelmointikielillä.

C++:

Ensiksi pitää hankkia c++ -kääntäjä. Linuxilla on g++, avoimen lähdekoodin c++ -käännin. Latasin ja asensin ohjelman komennolla $ sudo apt-get install g++, jonka jälkeen loin helloworld.cc -nimisen tiedoston nanolla (nano helloworld.cc). Kirjoitin tiedostoon:

#include <iostream>
using namespace std;

int main() {

std::cout << “Hello World!” << std::endl;
return 0;

}

Ja annoin komennon $ g++ helloworld.cc kääntääkseni lähdekoodin. Tuloksena oli a.out -niminen tiedosto, jonka ajoin komennolla $ ./a.out. Ohjelma tulosti terminaaliin “Hello World!” -tekstin.

 

C#:

Asensin ensiksi mono-mcs:n komennolla $ sudo apt-get install mono-mcs. Tämän jälkeen kirjoitin tiedoston nimeltä HelloWorld.cs:

class HelloWorld {
static void Main() {
System.Console.WriteLine(“Hello World!”);
}
}

Ja annoin komennon $ mcs HelloWorld.cs. Tuloksena oli HelloWorld.exe, jonka ajoin komennolla $ mono HelloWorld.exe. Terminaaliin tulostui “Hello World!”.

 

Java:

Java -ohjelmointia varten tarvitsee Linuxilla openjdk:n, eli open java development kitin. Kirjoittaa $ sudo apt-get install openjdk ja painaa tabulaattoria, niin saa listan openjdk -paketeista. Uusin tämän artikkelin aikana oli openjdk-7-jdk, mutta latasin silti openjd-6-jdk:n. Pitää muistaa ladata openjdk-#-jdk -niminen paketti, koska muut eivät ole development kittejä. Lataamisessa voi kestää hiukan: itselläni kesti noin kaksi minuuttia tasaisella 748 kbps nopeudella.

Kun olin asentanut openjdk, aloin tekemään HelloWorld.java -lähdekoodia ($ nano HelloWorld.java). Koodi näytti tältä:

public class HelloWorld {
public static void main(String[]args) {
System.out.println(“Hello World!”);
}
}

Käänsin lähdekoodin komennolla $ javac HelloWorld.java, ja tuloksena oli HelloWorld.class, jonka join komennolla $ java HelloWorld. Ohjelma tulosti terminaaliin “Hello World!”.

 

Lähteet:

HelloWorld -ohjeet: Programming Languages on Linux – Installing and Using on Ubuntu

Lähdekoodit (c++ ja c#, javan kirjoitin itse): Transwiki:List of hello world programs

myy.haaga-helia.fi:lle kirjautumisen automatisointi (OpenSSH)

Raportoin tässä raportissa onnistuneesta julkisen avaimen luonnista ja sen käytöstä myy.haaga-helia.fi -palvelimella.

10:55 – Onnistuin luomaan julkisen avaimen ja annoin avaimen käyttäjälleni myyllä, mutta ilmeni sama bugi kuin oppitunnilla, eli ”Agent admitted failure to sign using the key.”

11:19 – Päätin kokeilla tehdä prosessin laittamalla SSH_AUTH_SOCK=0 komentojen eteen. Tämä ei korjaa bugia, vaan on menetelmä millä kiertää bugi. Laitoin SSH_AUTH_SOCK=0 käyttöön koko istunnalle komennolla

$ export SSH_AUTH_SOCK=0

11:22 – Annoin komennon

$ ssh-copy-id kayttajatunnus@myy.haaga-helia.fi

ja annoin salasanan jonka olin luonut julkiselle avaimelle.

11:25 – Kokeilin kirjautua sisään. Minulta pyydettiin taas julkisen avaimen salasanaa (passphrase). Annoin sen ja pääsin sisään.

11:26 – Kokeilin kirjautua uudelleen sisään. Salasanaa (passphrase) kysytään joka kerta.

11:27 – Loin uuden julkisen avaimen ja annoin sen kayttajatunnus@myy.haaga-helia.fi:lle.

$ ssh-keygen

$ ssh-copy-id kayttajatunnus@myy.haaga-helia.fi

Tällä kertaa en laittanut passphrasea. Pyydettiin salasanaa, ja avain oli kopioitu. Kirjauduin onnistuneesti sisään eikä salasanaa pyydetty.

Lähteet:

Karvinen, Tero. ICT01TN002 -kurssin materiaali <http://terokarvinen.com/&gt;

OpenSSH -palvelimen ja julkisen avaimen käytön raportti

Tässä raportissa kerron onnistuneesta openssh-server –palvelinohjelmiston asennuksesta ja sen käytöstä. Raportoin myös julkisen avaimen luomisesta ja käyttämisestä.

Edit: auth.log:n aikaleimat ovat eri aikavyöhykkeellä, 2 tuntia Suomen aikaa jäljessä, eli CET.

10:00 – Annoin komennon

$ sudo apt-get update

ja asensin openssh-server –ohjelmistopaketin komennolla

$ sudo apt-get install openssh-server

10:03 – Muutin salasanani (default salasana: enter) hyvään salasanaan.

10:05 – Onnistuneesti kirjauduin sisään localhostilla.

$ ssh ubuntu@localhost

10:08 – Yritin kirjautua sisään tietokoneen ip-osoitteella localhostin sijaan.

$ ssh ubuntu@10.0.0.4

Sain virheilmoituksen ”permission denied”. Olin kirjoittanut salasanan väärin.

auth.log:ssa kyseinen tilanne näytti tältä:

Feb 11 08:09:38 ubuntu sshd[6575]: pam_unix(sshd_auth): authentication failure; logname= uid=0 euid=0 tty=ssh ruser= rhost=ubuntu.local user=ubuntu

Feb 11 08:09:39 ubuntu sshd[6757]: Failed password for ubuntu from 10.0.0.4 port 53810 ssh2

10:16 – Yritin uudelleen kirjautua, ja sain salasanan oikein tällä kertaa.

auth.log:

Feb 11 08:16:57 ubuntu sshd[6645]: Accepted password for ubuntu from 10.0.0.4 port 53811 ssh2

Feb 11 08:16:57 ubuntu sshd[6645]: pam_unix(sshd:session): session opened foruser ubuntu by (uid=0)

10:19 – Loin uuden käyttäjän petteri, ja sille hyvän salasanan.

$ sudo adduser petteri

10:22 – Onnistuneesti kirjauduin ssh:lla sisään petteri –käyttäjän käyttäjätunnuksilla.

$ ssh petteri@10.0.0.4

Kirjauduin ulos ja ryhdyin automatisoimaan kirjautumisen.

10:24 – Loin julkisen avainparin komennolla

$ ssh-keygen

sen jälkeen annoin julkisen avaimen petteri –käyttäjälle komennolla

$ ssh-copy-id petteri@10.0.0.4

10:25 – Kokeilin kirjautumista petteri –käyttäjätunnuksilla. Kirjauduin automaattisesti sisään. Kirjautumisen automatisointi oli valmis.

auth.log:

Feb 11 08:25:58 ubuntu sshd[7365]: Accepted publickey for petteri from 10.0.0.4 port 53816 ssh2

Feb 11 08:25:58 ubuntu sshd[7365]: pam_unix(sshd:session): session opened for user petteri by (uid=0)

 

Lähteet

Karvinen, Tero. ICT01TN002 -kurssin materiaali. <http://terokarvinen.com/&gt;

LAMP -ympäristön pystyttäminen

Tässä artikkelissa raportoin onnistuneesta LAMPin käyttöönotosta Linux Ubuntun LiveCD -tilassa.

Ohjelmistot, mitä käytettiin olivat tietenkin: L = Linux, A = Apache, M = MySQL ja P = PHP. Tietokantojen ja taulukoitten luontiin käytettiin PHPMyAdminiä, joka ei ilmeisesti ole avoimen lähdekoodin ohjelmisto.

Ohitan nyt tähän mennessä perustoiminnot, kuten mitä tehdään ennen kuin asennetaan jotain. Menen siis suoraan asiaan.

Asensin Apache2 -webbipalvelimen onnistuneesti. Laitoin modin userdir päälle ja käynnistin Apache2:n uudelleen.

$ sudo a2enmod userdir

$ sudo service apache2 restart

Uudelleenkäynnistyksen jälkeen tarkistin toimiiko localhost. Localhost toimi, mutta tarvittiin public_html -hakemisto /home/user -hakemistoon.

$ mkdir public_html

Siirryin public_html -hakemistoon ja tein sinne tiedoston index.html. Tässä vaiheessa en kirjoittanut tiedostoon muuta kuin “Moi” testaussyistä.

Tarkistin localhostin ja omalla IP-osoitteella sivun tilan. Koska ei ilmennyt mitään ongelmia ja Moi luki sivulla, lisäsin html -ohjelmoinnilla sivulle nimen ja lisää tekstiä. Tähän kaikkeen kesti noin viisi minuuttia. Skandinaavisia kirjaimia en laittanut päälle, koska osaaminen puuttui. Jatkoin sitten asentamalla MySQL -tietokantapalvelimen ja PHPMyAdmin -tietokantahallintaohjelmiston.

$ sudo apt-get install mysql-server phpmyadmin

Ekalla yrityksellä unohdin pistää rastin (tähden) ruutuun, kun kysyttiin, että haluanko mysql:n virittävän apache2 -palvelimen tukemaan mysql:ää. Lopputuloksena oli kasa virheilmoituksia PHPMyAdmin:n asennuksen aikana. Koska poistoprosessin aikana ilmestyi myös virheilmoituksia, estäen poiston, sammutin Linuxin liveCD -tilan ja käynnistin uudelleen. Jouduin täten myös asentamaan apache2:n uudelleen. Käytin tähän aikaa noin 20 minuuttia.

Toisella kerralla onnistuin. PHPMyAdmin -sivu aukeni ja pääsin sisään hallitsemaan tietokantoja. Lisäsin tietokannan LAMP_test, ja sinne taulun nimeltä “asunto”. Tauluun laitoin kolme saraketta ja lisäsin kaksi riviä siihen. Tähän kesti noin 15 minuuttia.

Kokeilin tässä vaiheessa toimiko php. Muutin index.html -tiedoston index.php:ksi, lisäsin siihen yksinkertaisen laskutoimituksen (2+2) ja testasin sivua. Firefox tarjosi sivua ladattavaksi, joten tiesin php:n olevan pois päältä. PHPMyAdmin asentaa php -modin Apache2 -palvelimeen kun sen asentaa, joten modi oli valmiina, se ei vaan ollut päällä. Menin /etc/apache2/mods-enabled/ -hakemistoon ja avasin sudolla php5.conf -tiedoston muokattavaksi.

$ sudo nano php5.conf

Kuten oli opastettu, lisäsin opastettuihin kohtiin #-merkin. Sen jälkeen käynnistin apache -palvelimen uudelleen. Kokeilin sivua uudelleen, ja sivu ilmestyi. Sivulla oli myös haluttu tulos, eli 4. Tähän kesti noin viisi minuuttia.

Tein yksinkertaisen PHP-ohjelman, joka lukee tietokantaa. Parametreina tietokannalle oli aikaisemmin mainittu tietokanta “LAMP_test” ja taulu oli “asunto”. Tallensin PHP-sivun (hello.php) public_html -hakemistoon ja kokeilin sitä Firefox:ssa. Sivulle tulostui “Connected successfully” ja taulun tiedot. Koska kopioiminen nano -editoriin ei onnistu, kirjoitin ohjelman mallin mukaan käsin. Ohjelman luominen ja testaaminen kesti noin 10 minuuttia.

Lähteet:

LAMP -ohjeet (englanninkieliset)

Command Line Basics

Commands for Admins

Install Apache Web Server on Ubuntu