Devaajien mieltymykset

Stack Overflow oli toteuttanut jokavuotisen kyselyn käyttäjilleen, joka sisältää mielenkiintoisia tilastoja koodareiden, kehittäjien ja harrastelijoiden tavoista ja mieltymyksistä.

Lue tulokset täältä: Stack Overflow Developer Survey 2015

Suosituimpia ohjelmointikieliä on Javascript. Rakastetuimpien kielien listalta itselläni pisti silmään kuudennelta sijalta Scala.

Git pitää ansaitusti paikkaansa suosituimpana versionhallintaohjelmintona. Yllättävää on, että 10% kehittäjistä ei käytä versionhallintaa. Ehkäpä harrastelijat eivät ole vielä kokeilleet versionhallintaohjelmiston hyötyjä.

Jännittävä turha tieto: 52,5-prosentilla kehittäjistä on ohjelmointiympäristössään tumma teemaväritys.

 

 

Ei riemulla rajaa, kun uudella reitittimellä ajaa

Edellisen artikkelin valvontakamera-projektissa porttien uudelleenohjaus ajautui vaikeuksiin, kun Zyxelin reitittimellä uudelleenohjaaminen ei yksinkertaisesti onnistunut. Kyseinen vika ominaisuus olisi ollut ehkä korjattavissa firmwaren päivityksellä, mutta turhautuminen ajoi ostoksille. Kaupasta tarttui mukaan Asuksen reititin.

Asus RT-N56U -reititin
Asus RT-N56U -reititin

Asuksen RT-N56U -reititin on ollut hyvä valinta:

  • se on nopea
  • se on pieni
  • se sopii sisustukseen
  • se pystyy jakamaan kaksi langatonta verkkoa
  • sen käyttöliittymä on selkeä

Näillä eväillä siis eteenpäin.

 

Raspberry Pi:lle julkinen IP-osoite, osa 2

Tässä artikkelissa Raspberry Pi asetetaan hakemaan IP-osoite DHCP:llä. Edellisessä artikkelissa julkinen osoite asetettiin asettamalla staattinen IP-osoite. Kun RasPilla on dynaaminen IP-osoite, niin sen jälkeen voidaan käyttää dynaamisen DNS:n palveluntarjoajan antamaa osoitetta, jolloin RasPiin voidaan ottaa yhteyttä mistä verkosta tahansa. No-IP on tällainen palvelu, josta rekisteröitynyt jäsen saa valita itselleen osoitteen. Tämän jälkeen RasPiin asennetaan No-IP client, jonka toimeksiantona on lähettää RasPin vaihtuva IP-osoite palveluntarjoajalle aina kun osoite vaihtuu.

Miten tämä toteutetaan käytännössä? Se selviää tästä artikkelista. Aloita No-IP clientin asennus antamalla seuraavat käskyt:

Asennus kysyy seuraavaksi kirjautumistietoja No-IP-palveluun ja asetuksia.

  1. Syötä tähän No-IP-palveluun rekmisteröimäsi käyttäjänimi tai sähköpostiosoite
  2. Syötä No-IP tunnukseesi kytketty salasana
  3. Asennus mahdollisesti kysyy, haluatko päivittää laitteeseen kaikki No-IP palveluun tekemäsi osoitteet
  4. Suositusasetus päivitystiheydeksi (update interval) on 5 minuuttia
  5. Asennus kysyy, haluatko ajaa lopuksi skriptin

Aseta reitittimen porttien uudelleen ohjaukseen portti 8081 ja No-IP alkaa toimimaan RasPin kanssa. No-IP on toimiva tapa asettaa DHCP:llä RasPille osoite, johon voi ottaa yhteyttä..

Viime artikkelissani kuitenkin totesin Zyxelin modeemin porttien uudelleenohjauksen toimimattomaksi. Seuraavassa Kubitin artikkelissa projektia jatketaan kuitenkin staattisella IP-osoitteella, jolloin portit uudelleenohjataan reitittimessä. Tällä hetkellä projektin etenemistä on siis jarruttanut ZyXEL VMG3326-D20A -reititin, jolla porttien uudelleenohjaaminen ei ole ollut mahdollista! Reititin mahdollistaa porttien uudelleenohjauksen reitittimen käyttöliittymän kautta, mutta käytännössä se ei toimi. Kyseessä on siis kyseisen reititinmallin vika, joten valvontakameraprojekti jatkuu kun allekirjoittanut hankkii uuden reitittimen.

ip-address

Raspberry Pi:lle julkinen IP-osoite, osa 1

Valvontakamera-projekti vaatii, että RasPille asetetaan julkinen internet-osoite. Tämä artikkeli on ensimmäinen osa juttusarjasta, jossa RasPille asetetaan IP-osoite, johon pääsee käsiksi myös kotiverkon ulkopuolelta asettamalla reititin siltaavaksi ja uudelleenohjaamalla portit. Tämän artikkelin kehitys kuitenkin pysähtyy reitittimen porttien uudelleenohjausongelmien vuoksi. Sarjan toisessa osassa testataan vaihtoehtoista tapaa, jolloin RasPiin otetaan yhteys DNS-nimipalvelun palveluntarjoajan kautta. Kolmannessa osassa jatketaan kehitystä kiinteällä IP-osoitteella.

Kun Raspberry Pillä on staattinen IP-osoite, niin siihen voidaan ottaa yhteyttä kotiverkon ulkopuolelta. Kubitti-blogin artikkelissa RasPille asetettiin staattinen IP-osoite.

Siltaaminen

Reitittimen asettaminen siltaavaksi

Kun reititin ja sen LAN-portit on asetetaan siltaavaksi, operaattori arpoo reitittimeen liitetylle laitteelle kiinteän IP-osoitteen. Riippuu operaattorista, kuinka monelle laitteelle pystytään jakamaan kiinteä IP-osoite. Reitittimen siltaaminen toteutetaan reitittimen käyttöliittymästä (Ohje, Zyxel). Riippuu reitittimestä, kuinka siltaaminen tapahtuu. Zyxelin reititin sillataan laajakaista-valikosta (broadband), jolloin siltaus-valikosta (bridge and routing) valitaan samanaikainen laajaverkko (concurrent WAN, wide area network) ja LAN-porteista ne jotka halutaan sillata.

Tietoturva ja NAT

Kun modeemi on reitittävässä tilassa ja osoitteenmuunnos (NAT, network address translation) toimii, on kotiverkon tietoturva parempi kuin siltaavassa tilassa! NAT:n ansiosta reitittimestä näkyy maailmalle vain yksi kiinteä IP-osoite. Kaikki reitittimeen yhdistetyt laitteet (esimerkiksi pöytäkone, kannettava tietokone, tabletit, RasPi) saavat itselleen osoitteenmuunnoksen tarjoamat sisäverkon osoitteet. Tietorturva paranee osoitteenmuunnoksella, koska hyökkääjät eivät näe sisäverkossa olevien laitteiden IP-osoitteita.

RasPi kiinteällä IP-osoitteella

Raspberry Pi:lle haluttiin asettaa kiinteä IP-osoite. Reititin muutettiin siltaavaan tilaan ja RasPi oli asetettiin hakemaan IP-osoite DHCP:n kautta (dynamic host configuration protocol). RasPi löysi kiinteän IP-osoitteen automaattisesti uudelleenkäynnistyksen jälkeen. Tällöin RasPilla oli käytettävissä osoite, johon voi ottaa yhteyttä julkisesta internetistä. Etäyhteyden ottaminen toimi siis mainiosti!

Ongelmia voi syntyä kiinteän IP-osoitteen vaihtumisessa. Jos RasPi joudutaan käynnistämään uudestaan, niin operaattori ei välttämättä tarjoa kyseiselle laitteelle enää samaa kiinteää IP-osoitetta. Tällöin voidaan olla tilanteessa, jolloin halutaan ottaa RasPiin etäyhteys, mutta se ei ole mahdollista koska IP-osoite ei ole enää tiedossa. Vaikka RasPi voidaan konfiguroida niin, että se pyrkii pitämään saman IP-osoitteen, niin se ei välttämättä saa enää samaa IP-osoitetta operaattorilta.

Ongelmia porttien uudelleen ohjaamisessa?

Jos RasPin porttien uudelleen ohjaaminen ei onnistu, vikaa voidaan etsiä seuraavilla tavoilla:

Jos ylläoleva komento ei toimi, syy voi olla SSH:n asetuksissa. Mahdollinen virhekoodi kertoo muut viat.

Vianselvitys:

  • Tarkista IP-osoitteesi täällä.
  • Tarkista, ovatko asettamasi portit auki tämän linkin avulla.

Jos ylläoleva komento ei toimi, RasPin palomuuri voi estää liikenteen! Tällöin vain tietyt yhteydet tai portit on asetettu toimimaan.

Jos et saa otettua SSH-yhteyttä kiinteällä IP:llä varustettuun RasPiin niin kokeile vaihtaa portti. Voi olla niin, että oletusportit ovat jo käytössä. Vaihda porttien uudelleenohjaukseen vapaavalintainen portti suurella numerolla.

Tätä artikkelia tehdessä osoittautui mahdottomaksi uudelleenohjata portteja ZyXEL VMG3326-D20A -reitittimellä. Porttien udelleenohjauksen pitäisi olla mahdollista kyseisellä reitittimellä, mutta se ei toimi. Keskustelupalstoilta sai käsityksen, että kyseessä on yleinen ongelma tällä reititinmallilla. Koska reititin ei toiminut odotetulla tavalla, kokeiltiin vaihtoehtoista tapaa, eli DNS-nimipalvelua.

DNS-nimipalvelu

RasPi voidaan myös konfiguroida lähettämään kiinteä IP-osoite DNS-nimipalvelulle (domain name system). Tällöin IP-osoite välittyy palveluntarjoajalle ja laitteeseen saadaan yhteys yhdistämällä palveluntarjoajan tarjoamaan osoitteeseen (eli URL:iin, uniform resource identifier). On oman tietokoneen tietoturvan kannalta parempi asettaa Raspberry Pille dynaaminen IP-osoite, eli hakemaan IP-osoite DHCP:llä. Näin NAT on taas käytössä. Tällöin RasPin voi asetta päivittämään IP-osoite nimipalvelulle (esimerkiksi no-ip.com:iin). Tästä lisää seuraavassa Kubitin artikkelissa!

Hyödyllisiä linkkejä:

  • No-IP – Palveluntarjoaja – dynaaminen DNS
  • FreeDNS –  Palveluntarjoaja – dynaaminen DNS
  • DY –  Suomalainen palveluntarjoaja / harrastesivusto – dynaaminen DNS
  • DynDns –  Palveluntarjoaja – dynaaminen DNS

zyxel

Staattinen IP-osoite Raspberry Pille

Staattisen IP-osoitteen asettaminen Raspberry Pille on ensimmäinen askel siihen, että voit ottaa yhteyttä RasPi-laitteeseen mistä puolelta maailmaa tahansa.

Jos RasPi-laiteella ei ole kiinteää IP-osoitetta, eli se toimii DHCP:llä ja jaetaan ulos reitittimelle dynaamisesti, interfaces-tiedostossa lukee “iface eth0 inet dhcp“.

Ota ylös seuraavat ifconfig-käskyn antamat tiedot:

  • inet addr – 192.168.x.xx
  • Bcast – 192.168.xx.255
  • Mask – 255.255.255.0

Ota ylös seuraavat netstat-käskyn antamat tiedot:

  • ‘Gateway’ Address – 192.168.x.xxx
  • ‘Destination’ Address – 192.168.xx.x

Muokkaa interfaces-tiedostoa, kiinnitä huomiota seuraaviin kohtiin:

  • Vaihda rivi “iface eth0 inet inet dhcp” muotoon “iface eth0 inet inet static
  • Täydennä tiedosto aiemmin ylös ottamallasi tiedoilla
    • Valitse staattiseksi IP-osoitteeksi jokin loppupään osoite välttääksesi päällekkäisyyksiä. Esimerkki: 192.168.1.xx, jossa “xx” on välillä 60-90.
  • Tässä apuja aiemmin ylös otettujen tietojen sijoittamiseen:
    • address (Pi’s Current IP Address) = inet addr
    • netmask (Subnet Mask Address) = Mask
    • network = Destination
    • broadcast (The Broadcast IP Range) = Bcast
    • gateway = Gateway

Avaa samaan lähiverkkoon kytketyn tietokoneen komentorivi, esimerkiksi cmd.exe:

Kun pingaus vastaa, niin olet asettanut RasPille onnistuneesti staattisen IP-osoitteen!

Jos RasPiin halutaan ottaa yhteyttä internetistä, eli muualtakin kuin kotona olevasta verkosta, on IP-osoite muunnettava reitittimessä. Siitä lisää seuraavissa artikkeleissa. Yksityiseen osoitteeseen 192.168.x.x ei pysty ottamaan yhteyttä julkisesta internetistä.

staattinen_IP_raspberry_pi_ohje

Testaa Raspberry Pin kameramoduulia

Raspberry Pin kameramoduulin Python-kirjaston kehitys perustuu paljolti vapaaehtoisten kehitystyöhön. Asentamalla PiCamera:n voit soveltaa PiCamera-projektin Python-kirjaston suomia mahdollisuuksia omassa kameraprojektissasi.

Aja komennot komentorivillä tai graafisen käyttöliittymän LXTerminalissa.

Oho, näytölläsi näkyi nyt 10 sekuntia piirilevykameran ottamaa kuvaa.

Raspberry Pi kameramoduuli
Raspberry Pi kameramoduuli

Kuinka kytken Raspberry Pin WLANiin

Raspberry Pin langattoman lähiverkon (WLAN) kytkeminen  päälle onnistuu helposti komentorivin kautta kahta tekstitiedostoa muokkaamalla. Kytke ensin kuitenkin RasPin Wi-Pi, eli USB-WLAN-moduuli kiinni laitteeseen.

Raspberry Pin Wi-Pi on USB-WLAN-moduuli
Raspberry Pin Wi-Pi on USB-WLAN-moduuli

Poistu tiedostosta painamalla Ctrl+x. Valitse, haluatko tallentaa muutokset: Yes / No.

Täytä siis tiedostoon langattoman lähiverkkosi verkkotunnus, eli SSID (service set identifier) ja WLANisi salasana. Valitse protokollaksi RSN tai WPA, riippuen lähiverkkosi salauksesta. Jos käytät modeemin oletusasetuksia, niin näet nämä tiedot modeemiin kiinnitetystä tarrasta. Piilotettua langatonta lähiverkkoa ei ole otettu huomioon tässä artikkelissa.

Wi-Pinää iltoihisi!

Salasanat talteen töissä ja kotona

Tulipa pitkästä aikaa kaivettua Raspberry Pi esille ja todettua, että salasana on pyyhkiytynyt täydellisesti muistista. Ei auttanut se hatara muistikuva siitä, että oletussalasana tuli vaihdettua johonkin parempaan. Niinpä sitä tuli sitten asennettua RasPin käyttöjärjestelmä uusiksi.

keepass

Salasanat on hyvä pistää talteen yhden salasanan taakse. KeePass on luotettava ja ilmainen apuväline, joka toimii salasanojen kassakaappina. Tämä on tullut todettua hyväksi arjen kaveriksi niin töissä kuin kotona. Lataa KeePass täältä.

Taiteenlajina löytää hyvää lukemista

Tällä hetkellä lukunurkassani odottelee opas ketterän ohjelmistokehityksen saloista, eli kirja nimeltä The Art of Agile Development (James Shore & Shane Warden, O’reilly, 2007). Ehkäpä scrum sujuu tämän kirjan kahlaamisen jälkeen entistä syvemmällä ymmäryksellä…

Taiteenlaji tämänkin
Taiteenlaji tämänkin

 

Löysin taannoin GitHubista mainion ja pitkän listan ilmaisista digitaalisessa muodossa olevista ohjelmointikirjoista. Suosittelen! Löydät ohjelmointikirjat täältä.