Android Remember right – Peli

Api harjoittelua ja ensimmäisen pelin luomista

* Android alustalle muistipeli jossa tarkoituksena muistaa värit esitetyssä järjestyksessä

* Hyödyntää SQLite tietokantaa, Jqueryä ja Javascriptiä, Cordovaa

Status: Released (Toimiva versio, peliä testattu Android Galaxy S3 puhelimella sekä Eclipse emulaattorilla)

Screenshots

Screenshot_2013-10-01-16-57-48

Screenshot_2013-10-01-16-58-07

Kuvaus pelistä:

Peli luo alkuun satunnaisen listan ja esittää tämän käyttäjälle, jonka jälkeen käyttäjän tulee muistaa esitetyt värit samassa järjestyksessä. Mikäli pelaaja onnistuu muistamaan samat värit oikeassa järjestyksessä pääsee pelaaja seuraavalle tasolle. Pelissä ei ole ylärajaa tasojen määrälle

Lähteet:

Terokarvinen.com
docs.phonegap.com

Sourcet:

Source
APK paketti

Pelin lisenssi:

This work is licensed under a Creative Commons Attribution-NonCommercial-NoDerivs 3.0 Unported License.
More info about license: http://creativecommons.org/licenses/by-nc-nd/3.0/

Automaattinen kansio uusille käyttäjille ja helppo bash komento

Tässä artikkelissa käydään läpi, kuinka jokainen uusi käyttäjä tulee saaamaan automaattisesti public_html kansion ja sen sisällä index.html tiedoston jossa lukee ”Hei maailma”. Lisäksi käyttäjille luodaan mahdollisuus käyttää komentoa ”osoite” jonka avulla käyttäjä saa selville oman lähiverkon ip osoitteen

Kansion luonti käyttäjille

Aluksi luomme public_html kansion /etc/skel kansioon. Tällöin jokainen uusi käyttäjä saa samat kansiot tätä kautta. Jotta voit luoda tänne kansion tulee sinun käyttää sudo komentoa.

Kansioon on myös mahdollista luoda index.html tiedosto ja kirjoittaa tänne Hei maailma, jotta tiedämme sen toimivan.

Seuraavaksi tarvitsemme uuden käyttäjän joka saa nämä tiedsotot. Uuden käyttäjän luonti tapahtuu komennolla:

sudo adduser käyttäjänimi

Nyt jos sinulla on apache2 asennettu ja konfiguroitu oikein löydät virtasen hei maailma sivun osoitteesta:

localhost/~virtanen

Ja tästä eteenpäin jokainen uusi käyttäjä saa saman sivun kun tunnukset luodaan.

Bash komennon luonti

Seuraavaksi haluamme, että käyttäjät voivat käyttää komento ”osoite” saadakseen selville oman lähiverkon ip osoitteen. Aloitamme tämän luomalla helpon bash scriptin:

#!/bin/bash

ifconfig |grep ”inet addr:”

Tämä scipti ajaa komennon ifconfig ja poimii sieltä rivit joissa lukee ”inet addr:”. Seuraavaksi meidän tulee antaa tiedostolle oikeudet, jotta myös peruskäyttäjät voivat tätä ajaa ja siirtää ohjelma käyttäjien käytettäväksi. Oikeudet voit antaa komennolla:

sudo chmod ugo+x osoite

ja tämä jälkeen siirrämme osoite nimisen ohjelman oikeaan kansioon:

sudo cp osoite /usr/local/bin/

Nyt jokainen käyttäjä voi ajaa tätä komennolla: osoite

C++ tiedostonluku ja tulostus

Tässä artikkelissa on esiteltynä C++ ohjelma joka onnistuneesti avaa tekstitiedoston ja tulostaa siellä olevat rivit ja sulkee sen tämän jälkeen. Artikkelin lopusta on myös mahdollista ladata lähdekoodi ja valmiiksi käänneety ohjelma

#include <iostream>
#include <fstream>
#include <string>
using namespace std;

// Määritetään kirjastot

int main () {
string rivi;

//Määritetään string muuttuja rivi

ifstream tiedosto (”teksti.txt”);

//Halutaan  lukea tiedostoa – ifstream

if (tiedosto.is_open())

// Tarkistetaan jos tiedosto on auki

{
while ( tiedosto.good() )
{
getline (tiedosto,rivi);
cout << rivi << endl;

//Kun tiedosto on auki luetaan sitä niin kauan kuin rivejä on
//Lisäksi tulostetaan rivit käyttäjälle

}
tiedosto.close();

//Suljetaan tiedosto

}

else cout << ”Tiedoston avaaminen epäonnistui”;
return 0;

}

// Jos jokin meni pieleen, kerrotaan siitä käyttäjälle

Lähdekoodi

 

Lataa Tekstitiedostonlukija

 

Lähteet

Päivi Hietanen C++ ja olio-ohjelmointi (8 painos)

 

Tätä dokumenttia saa kopioida ja muokata GNU General Public License (versio 2 tai uudempi) mukaisesti. http://www.gnu.org/licenses/gpl.html

3 erilaista ohjelmointikieltä

Tässä artikkelissa käsitellään ” Hello world ” ohjelma kolmella eri kielellä linux ympäristössä. Linux disto on xubuntu. Tarkemmat tiedot koneesta ja linuxista
Kielet ovat C++ , PERL  , RUBY

C++

Kielen kääntämiseen linuxissa latasin ohjelman nimeltä gcc komennolla:

sudo apt-get install gcc-4.6

Tämän jälkeen loin tiedoston hello.cpp johon lisäsin myöhemmin tulevan hello world koodin. Tämän jälkeen tein tiedostosta ajttevan komennolla:

g++ hello.cpp -o hello

Nyt ohjelma on kännetty ja sen voi ajaa ./hello komennolla.

c++ Hello World esimerkki ( Lähdekoodi lopussa)

#include <iostream>

//Aluksi julistetaan C++ kielessä tarvittava iostream kirjasto jonka avulla voi tulostaa tekstiä

using namespace std;

//kerrotaan, että haluamme käyttää nimiavaruutta std. Tällöin meidän ei esimerkiksi tarvitse laittaa std::cout koodia, vaan pelkkä cout riittää

int main()
{

//Aloitetaan pääohjelma, joka alkaa aina komennolla main

cout << ”Hello World \n”;
return 0;
}

// Kerrotaan ohjelmalla, että haluamme tulostaa sanan Hello World, jonka jälkeen palautetaan käyttöjärjestelmälle luku 0 ja ohjelma sulkeutuu

PERL

Perl kääntäjä tulee xubuntussa valmiina ja toimii komennolla perl. Aluksi luomme tiedoston:

perlhello.pl

Johon laitamme seuraavanlaisen koodin:

print ”Hello World\n”;

Tämän jälkeen tallennamme tiedoston. Ajaminen tapahtuu komennolla:

perl perlhello.pl

Tämän jälkeen ruudulle pitäisi ilmestyä ” Hello world ” teksti

Ruby

Ensimmäiseksi ruby tarvitsee oman kääntäjän. Tämän voi helposti ladata komennolla

sudo apt-get install ruby1.9.3

Tämän jälkeen luodaan tiedosto helloruby.rb johon laitetaan koodi:

puts ’Hello world’

Tämän jälkeen tiedosto tallennetaan ja ajaetaan komennolla

ruby helloruby.rb

Tästä vastaus pitäisi olla jälleen ”Hello world”.

Lähdekoodit

hello.cpp

helloperl.pl

helloruby.rb

Lähteet

Tero karvinen (http://terokarvinen.com/) / Oppitunnit 12.09.2012

Tätä dokumenttia saa kopioida ja muokata GNU General Public License (versio 2 tai uudempi) mukaisesti. http://www.gnu.org/licenses/gpl.html

SSH automatisointi usealle käyttäjälle

Tämä artikkeli kertoo kuinka voit automatisoida SSH kirjautumisen niin, että sinun ei tarvitse kirjoittaa salasanaa joka kerta kun otat yhteyden SSH:lla. Esimerkissä on käytössä Linuxin Xubuntu 12.04 versio. Tarkemmat konetiedot näet täältä. Artikkelin alussa käyn läpi SSH:n kirjautumisen yhdellä käyttäjälle ja lopussa lisätään muutama käyttäjä lisää.

SSH avaimen luominen

Aluksi meidän tulee luoda avain, jonka voimme jakaa koneelle, johon haluamme olla yhteydessä. Tämä onnistuu komennolla

xubuntu@xubuntu:~$ ssh-keygen -t dsa

Kun olemme antaneet komennon tulee seuraava ilmoitus:

Generating public/private dsa key pair.
Enter file in which to save the key (/home/xubuntu/.ssh/id_dsa):
Created directory ’/home/xubuntu/.ssh’.
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /home/xubuntu/.ssh/id_dsa.
Your public key has been saved in /home/xubuntu/.ssh/id_dsa.pub.
The key fingerprint is:
0c:80:79:fb:f2:80:3b:df:e4:8d:4d:83:be:17:59:b8 xubuntu@xubuntu
The key’s randomart image is:
+–[ DSA 1024]—-+
|   o.            |
|  o ..           |
|   . ..  .       |
|    .  o. .      |
|   . .  S+       |
|  . o ..E        |
|   . +o o.       |
|  o  =.=..       |
|   o. *oo        |
+—————–+
xubuntu@xubuntu:~$

Aluksi käyttäjältä kysytään mihin kansioon hän haluaa luoda SSH avainparin. Tähän kotikansio on helppo ja turvallinen paikka. On tärkeää, että kukaan muu ei pääse käsiksi kyseiseen kansioon ja tiedostoihin. Seuraavaksi kysytään salasanaa (Passphrase) johon voit painaa enteriä, jolloin yhdistäessäsi SSH:lla sinulta ei tulla kysymään salasanaa. Nyt SSH-avaimen luonti on valmis. Seuraavaksi onkin aika yhdistää SSH palvelimelle. Jos sinulla ei vielä ole SSH palvelinta, katso kuinka openssh-server asennetaan

SSH-palvelimeen yhdistäminen

SSH-palvelimeen yhdistäminen tapahtuu komennolla ssh käyttäjänimi@osoite

xubuntu@xubuntu:~$ ssh xubuntu@localhost
The authenticity of host ’localhost (127.0.0.1)’ can’t be established.
ECDSA key fingerprint is 8c:14:cc:7a:b2:9a:ee:38:ea:45:8b:c3:af:85:a4:50.
Are you sure you want to continue connecting (yes/no)?
Warning: Permanently added ’localhost’ (ECDSA) to the list of known hosts.
xubuntu@localhost’s password:

Nyt olemme kirjautuneet sisälle. Seuraavaksi meidän tulee kopioida salausavaimemme julkinen osa palvelimelle. Tämä tapahtuu seuraavasti:

xubuntu@xubuntu:~$ ssh-copy-id -i ~/.ssh/id_dsa.pub localhost
xubuntu@localhost’s password:
Now try logging into the machine, with ”ssh ’localhost'”, and check in:

~/.ssh/authorized_keys

to make sure we haven’t added extra keys that you weren’t expecting.

Nyt olemme siirtänee avaimen onnistuneesti palvelimelle. Seuraavaksi meidän tulee kirjautua ulos ja tarkistaa, että automaattinen kirjautuminen toimii.

xubuntu@xubuntu:~$ logout
Connection to localhost closed.
xubuntu@xubuntu:~$ ssh localhost
Welcome to Ubuntu 12.04 LTS (GNU/Linux 3.2.0-23-generic i686)

* Documentation:  https://help.ubuntu.com/

Last login: Tue Sep 18 13:39:47 2012 from localhost
xubuntu@xubuntu:~$

Ja nyt olemme onnistuneesti luoneet Automaattisen kirjautumisen SSH yhteydellä.

SSH yhteys usealla käyttäjällä ja komennon antaminen

Nyt olemme onistuneesti saaneet yhden käyttäjän automatisoitua. Seurvaaksi kirjaudumme toisella tunnuksella ja annamme uudestaan komennon:

ssh-copy-id -i ~/.ssh/id_dsa.pub localhost

Kun olet luonut riittävästi useita eri käyttäjiä, tulee vastaan kysymys: kuinka antaa komentoja kaikille samaan aikaan ? Itse ratkaisin ongelman tekemällä yksinkertaisen scriptin ja tallensin sen omalle koneelleni nimellä komento.sh :

#!/bin/bash

komento=”mkdir testfolder”

ssh petri@localhost $komento
ssh xubuntu@localhost $komento

Nyt scripti ajattaessa komennolla ” bash komento.sh ” tekee kansion testifolder komennolla mkdir. Listassa voisi olla myös useampi yhteyksiä ja siihen on helppo vaihtaa komento. Mikään yhteys ei kysy salasanaa, koska kaikkiin on automaattinen SSH-kirjautuminen

Tämä artikkeli tehtiin 18. syyskuuta 2012 klo 13-15 välisenä aikana

Lähteet:

Tero karvinen (http://terokarvinen.com/) / Oppitunnit 12.09.2012

Linux webpalvelin asennus ja tarvittavat lisäosat

Tässä raportissa asennetaan Linux webpalvelin, joka sisältää Apachen ja PHP-tuen. Palvelut asennetaan linuxin Xubuntu distrolle.

Testissä käytetyn koneen tekniset tiedot:

Prosessori: 2.4 GHz AMD Athlon II Dual-Core Processor N350

Keskusmuisti: 4 GB DDR3 (2 x 2048 MB)

Näytönohjain: ATI Mobility Radeon HD 5650 Graphics (switchable)

Kovaley: 640 GB SATA Hard Disk Drive 5400 rpm

Verkkokortti: Integrated 10/100/1000 Gigabit Ethernet LAN

Käyttöjärjestelmä: Windows 7 Home Premium / Service pack 1

Raportissa käytetty linux distro: Englanninkielinen Xubuntu ( xubuntu-12.04-desktop-i386 )

Asennus tehtii 8. syyskuuta 2012 klo 12-13 välisenä aikana

 

Asennus

12.25 Asennus lähtee liikkeelle nykisten asennusten päivittämisestä. Tämä tapahtuu komennolla

 sudo apt-get update

12.26 – Seuraavaksi lähdemme asentamaan itse Apache webpalvelinta komennolla:

sudo apt-get install apache2

Tässä vaiheessa on hyvä testata asennuksen onnistumista. Tämä onnistuu helpoiten avaamlla webselaimen ja kirjoittamalla localhost osoitekenttään. Tulos pitäisi näyttää tältä:

It works!

This is the default web page for this server.

The web server software is running but no content has been added, yet.

Seuraavaksi haluamme saada Apache:n osoittamaan käyttäjien omiin kotihakemistoihin ja siellä public_html kansioon johon käyttäjät voivat luoda omia kotisivuja. Tällöin aluksi täytyy mennä omaan kotihakemistoon ( Minun tapauksessani /home/xubuntu/) ja luoda tänne uusi kansio komennolla:

mkdir public_html

Nyt käyttäjälle Xubuntu on luotu kansio public_html johon voidaan lisätä websivut. Seuraavaksi siirrymme public_html kansioon komennolla:

cd public_html

Tänne luomme tiedoston index.html. Tämä siksi, jotta tiedämme myöhemmässä vaiheessa, että olemme onnistuneet osoittamaan Apache webpalvelimen käyttäjän kotikansioon. Tiedoston luonti onnistuu komennolla:

nano index.html

Kun olet kirjoittanut tämän, aukee nano tekstieditori. Tähän on hyvä kirjoittaa jotakin yksinkertaista. Itse laitan: ”Onnistuin” tämän jälkeen tiedosto tallennetaan komennolla:

crtl + c

12. 37 – Kun olet painut crtl + c tulee kysymys ”Save modified buffer” vastaa Y ja tämän jälkeen kysytään tiedoston nimeä. Oletuksena tämän tulisi tarjota nyt index.html nimeä jos olet tehnyt kaiken oikein. Paina enter jolloin palaudut takaisin konsoliin. Nyt meillä pitäisi olla Public_html kansiossa index.html tiedosto. Tämä on helppo tarkistaa komennolla:

pwd

Josta vastaus pitäisi olla:

/home/käyttäjätunnus/public_html

12.38 – ja komennolla:

ls

Vastaus tulisi näyttää mitä kansio public_html sisältää. Tässä kansiossa tulisi olla tällä hetkellä vain yksi tiedosto, joka on index.html

Seuraavaksi haluamme saada Apachen osoittamaan käyttäjien kotihakemistoon, joten meidän tarvitsee ajaa komento:

sudo a2enmod userdir

Tämä tuottaa seuraavanlaisen vastauksen:

Enabling module userdir.
To activate the new configuration, you need to run:
service apache2 restart

Ja kuten käsky käy, seuraavaksi ajamme komennon:

sudo service apache2 restart

12.46 – Nyt meillä pitäisi olla käytössä Apache joka näyttää käyttäjien kotihakemistot. Testata voit webselaimella helposti menemällä:

http://localhost/~käyttäjätunnus/

Jolloin pitäisi tulla vastaan tekemäsi index.html sivu. Seuraavaksi haluamme PHP:n meille joten kirjoitamme komennon:

sudo apt-get install php5 libapache2-mod-php5

Kun php-kirjasto on asennettu, tulee meidän seuraavaksi ottaa vielä php käyttöön koska se, se on oletuksena otettu pois käytöstä. PHP5 käyttöönotto tapahtuu seuraavasti kirjoittamalla komentokehotteeseen:

sudoedit /etc/apache2/mods-available/php5.conf

Täältä sinun tulee kommentoida seuraavat rivit pois: (Kommentointi tapahtuu laittamalla risuaita # rivin alkuun)

<IfModule mod_userdir.c>
<Directory /home/*/public_html>
php_admin_value engine Off
</Directory>
</IfModule>

Jolloin lopputulos tulisi olla:

#<IfModule mod_userdir.c>
#    <Directory /home/*/public_html>
#          php_admin_value engine Off
#      </Directory>
#</IfModule>

13.00 – Tämän jälkeen kansio tallennetaan ja palataan kotihakemistoon. Koska olemme muokanneet tiedostoa tulee meidän käynnistää Apache uudelleen jotta muokkaukset tulevat voimaan. Tämä tapahtuu komennolla:

sudo service apache2 restart

Seuraavaksi luodaa testitiedosto php:llä jotta tiedämme sen toimivan. Luonti tapahtuu käyttäjän kotihakemistossa komennolla:

nano test.php

Tänne voimme kirjoittaa php:tä esimerkiksi <?php phpinfo(); ?> ja tämän jälkeen tallentaa tiedot. Nyt voimme siirtyä osoitteeseen:

http://localhost/~käyttäjätunnus/test.php

Täältä pitäisi nyt löytyä php5:n tiedot. Jos sivu on valkoinen tai pyytää lataamaan tiedoston, olet silloin tehnyt jotakin väärin.

Loppuyhteenveto

Toimivan webpalvelimen asentaminen käy yllättävän nopeasti, eikä vaadi käyttäjältä suurtakaan osaamista tai taitoa. Seuraavaksi voit katsoa kuinka yksinkertainen php ohjelma valmistuu tässä esimerkissä

Lähteet:

Tero karvinen oppitunnit  2.9 ja 4.9.2012

Lisenssi

Tätä dokumenttia saa kopioida ja muokata GNU General Public License (versio 2 tai uudempi) mukaisesti. http://www.gnu.org/licenses/gpl.html

PHP Painoindeksilaskuri

Seuraavassa on esiteltynä php:llä koulutyönä tehty painoindeksilaskuri. Voit ladata toimivat kooditiedostot artikkelin lopusta. Tässä raportissa käyn läpi koodin sisältöä ja selitän sen ominaisuuksia ja sitä, mitä jokainen kohta tekee

Esimmäiseksi teemme tiedoston kysymys.html jossa keräämme tiedot käyttäjän painosta ja pituudesta.

<form action="tulos.php" method="post">
<p>Pituus:(<b>HUOM syötä pituus muodossa x.xx käyttäen pistettä</b>)</p><input type="text"value="1.70" name="pituus" />
<p>Paino:(Anna arvo kiloina esimerkiksi 70)</p><input type="text" value="70" name="paino" />     
<p><input value="Lähetä tiedot" type="submit" /></p>
</form>

Tämä kohtaa kerää käyttäjiltä tiedot ”paino” & ”pituus” ja siirtää ne tulos.php tiedostoon

Seuraavaksi tarvitsemme tulos.php tiedoston.

Tässä kohdassa keräättä käyttäjien tiedot paino & pituus ja luomme tämän jälkeen näistä samannimiset muuttujat

<?php
//Otetaan lomakkeesta lähetetyt tiedot paino ja pituus
$paino=$_POST[paino];
$pituus=$_POST[pituus];

Tarkistetaan, että käyttäjän syöttämät tiedot ovat varmasti numeroita ennen jatkoa. Muuten toiminto keskeytetään ja annetaan käyttäjälle virheilmoitus

if (is_numeric($paino) && is_numeric($pituus)) {

Seuraavaksi lasketaan käyttäjien antamat tiedot ja kohdassa round($tulos, 2); pyöristetään tulos 2 desimaalin tarkkuuteen. Painoindeksi lasketaan kaavalla pituus/(paino^2)

$lasku = (pow($pituus,2));
$tulos=$paino/$lasku;
$tulos=round($tulos, 2);

Tässä kohdassa vertaillaan käyttäjän painoindeksiä ja tarkistetaan mihin kohtaan se sopii. Tämän jälkeen tulostetaan käyttäjälle tiedot hänen painoindeksistä ja annetaan vinkki.

if($tulos < 14.99)
echo "Painoindeksi on ".$tulos."<p>Vinkki: Joten Nyt syömään äkkiä sillä olet sairaalloise alipainoinen</p>";
elseif($tulos < 16.99)
echo "<p>Merkittävä alipaino.</p> Painoindeksi: ".$tulos."<p>Vinkki: Olisiko hampurilaisen paikka ?</p> ";
elseif($tulos < 18.4)
echo "<p>Normaalia alhaisempi paino.</p> Painoindeksi: ".$tulos."<p>Vinkki: Muista syödä päivisin enemmän</p>";
elseif($tulos < 24.9)
echo "<p>Normaali paino.</p>Painoindeksi: ".$tulos."<p>Vinkki: Hyvä, sinulla näyttäisi olevan normaali paino!</p>";
elseif($tulos < 29.9)
echo "<p>Lievä ylipaino</p>Painoindeksi: ".$tulos."<p>Vinkki: Kannattaisiko kenties jättää illalla muutama leipä syömättä ?</p>";
elseif($tulos < 34.9)
echo "<p>Merkittävä ylipaino</p> Painoindeksi: ".$tulos."<p>Vinkki: Et taida olla rantakunnossa ? </p>";
elseif ($tulos < 39.9)
echo "<p>Vaikea ylipaino</p>".$tulos."<p>Vinkki: Nyt olisi aika laittaa ruokatottumukset uusiksi. Ylipainoisuus on vakava asia!</p>";
elseif ($tulos > 39.91)
echo "<p>Sairaalloinen ylipaino</p> Painoindeksi: ".$tulos."<p>Vinkki: Suosittelen lääkäriin menoa - Tuloksesi on erittäin vakava</p>";
}

Jos käyttäjä oli alussa syöttänyt vääriä tietoja, kerrotaan ohjeet miten paino ja pituus tulisi syöttää

    } else {
    echo "<p>Error - Yritä uudelleen. Muista syöttää pituus muodossa x.xx jossa x on numero ja käyttää välissä pistettä, <u>eikä pilkkua</u>.</p><p>Paino tulee syöttää numeroina xxx ilman muita merkkejä</p> <a href='kysymys.html'>Palaa takaisin</a>";
}

Lataa Tiedostot:

Lataa lähdekoodi Tästä

Lisenssi

Jos meinaat hyödyntää tätä ohjelmaa sellaisenaan, olisin kiitollinen linkistä takaisin tähän blogiin.

Tätä dokumenttia saa kopioida ja muokata GNU General Public License (versio 2 tai uudempi) mukaisesti. http://www.gnu.org/licenses/gpl.html

Lähteet tämän ohjelman luontiin:

Tero Karvinen / HAAGA-HEALIA oppitunnit / 2.9, 4.9.2012

http://www.php.net/

http://www.ohjelmointiputka.net