torstai 19. joulukuuta 2013

Jolla Harbour ja Together

Jos haluat osallistua Jollan kehittämiseen, portaali together.jolla.com on avattu (tai avautuu).
Puhelimen voit ostaa vaikka täältä shop.jolla.com
Tai
Jos kirjoitat Sailfish sovelluksia, voit lähettää ohjelmat sitten tänne harbour.jolla.com
 sovelluskehittäjille tehty satama, myös Android™ sovellukset.


Aluksi Sailfish sivuille hankkimaan työkalut, aluksi pitää kuitenkin asentaa VirtualBox (Oracle), jossa sitten omaa ohjelmaa voidaan koeajaa virtuaalisesti, vaikka puhelinta ei vielä ole ... eli kannattaa jo nyt aloittaa ohjelmoijan ura, kyntämätöntä sarkaa on tällä alalla vaikka kuinka.
Laitteistovaatimukset on 5GB vapaata levytilaa ja 4GB muistia tai enempi.
Jos joudut lisäämään koneeseen muistia, etkä tiedä mitä tyyppiä muistin pitää olla, niin NÄILTÄ sivuilta voi löytyä tietoa, valmistajan, tyypin ja mallin mukaan.
(sieltä sivun alhaalta ...)


Ei muuta kuin koodaamaan :)




lauantai 7. joulukuuta 2013

SailfishOs emulaattori



Ei oikein hyvin nyt alkanut ohjelmien koodaaminen jollaan.
Virtualboxissa pyörivä SailfishOs emulaattori ei oikein toimi tässä koneessa,  emulaattori on aivan liian hidas, jotta olisi mielekästä koodata ylipäätänsä mitään ...  harmi sinänsä.

Eikä ihan tarkkaa tietoa ole mistä tämä johtuu...
Tai on sentään ... koneen bios ei anna mahdollisuutta valita virtualisointia, vaikka prosessori tukee tätä "AMD-V"
Nyt täytyy sitten koodata toisella koneella ja emuloida toisella.
Tähän tehtävään löytyi sitten 32 bittinen läppäri

Otetaan ssh -X yhteys siihen tietokoneeseen jossa virtualboxia ajetaan.
Startataan emulaattori.

VBoxManage startvm "SailfishOS Emulator"   tai sitten UUID esim.
VBoxManage startvm 88b3433f-76e6-4e74-84d9-1ea533eb434e

(VBoxManage list vms  [-l])


Sailfish emulaattori näkyy nyt isäntäkoneen ruudulla, mutta tämä tapa on vähän hidas.
Parempi olisi ajaa emulaattoria kakkos-koneen näytöllä (siis koneessa jossa virtualboxia ajetaan)
ja isäntäkoneesta otetaan tunneloitu yhteys emulaatttoriin.

ssh user@laptop -L 10000:127.0.0.1:2223 -N  <-- konsolissa ... huom. jää odottamaan

fish://nemo@localhost:10000/  <tai ftp..  tiedostoselaimelle annetaan osoite

Nyt voimme siis koodata isäntäkoneella jollakin Python editorilla  joka tallentaa koodian suoraan emulaattoriin, jos vain editori tämän taitaa.... mutta välttämättä kyse ei ole editorista, vaan KIOExec ohjelmasta jonka pitäisi hoitaa tämä työ,  KDE / Gnome työpöydillä voi olla eroja tämän suhteen.
Jos tallennus ei toimi, voidaan tiedostot liittää isäntäkoneeseen sshfs kautta, jolloin sshfs putkitus voi näyttää vaikka tältä.
sshfs -p 10000 nemo@localhost:/home/nemo/ /mnt/nemo

hakemistoon /mnt/ on luotu hakemisto nemo ja oikeudet on muutettu 777 

sudo mkdir /mnt/nemo
sudo chmod 777 /mnt/nemo
sshfs -p 10000 nemo@localhost:/home/nemo/ /mnt/nemo

fusermount -u /mnt/nemo --- irrottaa

Tämänjälkeen tiedostoja voidaan tutkia tiedostoselaimella, ja avata ja työstää editorilla eikä
talennuksessa pitäisi olla enään ongelmia.
----------

Työkalujen mukana tuli siis.

QtCreator ... Qt5 
Mer SDK virtuaalikone 
Sailfish emulaattori
Silica komponentit

ssh -p 2223 nemo@localhost    tällä ssh yhteydellä päästään siihen emulaattori jolla puhelimeen.

Koska tarkoitus on tehdä QML ja Python yhdistelmällä ohjelmia,  asiaan lähestytään siis vähän toisella tapaan.

Python näkyy olevan 2.7.5 eikä siis 3, toivottavasti vaihtuu joskus 3.3
Python 2  on kyllä ikävä ... etenkin ne "encode decode" jutut.

----------
PyQt5 on yksi mahdollisuus , mutta tätä ei tulla käyttämään,  samoin käy Nokian PySide.
Mutta PyOtherSide on se jota kokeillaan, kyse on kuitenkin QML ohjelmista, jossa normaalisti lisänä on  JavaScript tai  C++  
.. tästä myöhemmin.

perjantai 29. marraskuuta 2013

Chromium selain ja Youtube videot

Jos Chromium selain ei suostu näyttämään Youtube videoita, vaan ilmoittaa ettei "video ole katsottavissa" tms. mutta silti voit katsoa sitä jollain toisella selaimella samassa koneessa ?
Eikä esim. irroittauminen HTML5 kokeilusta, jos on siihen liittynyt , tai välimuistin tyhjentämiset auta mitään.
Myös videot saattavat katketa tai pätkiä kesken ajon, eikä tämä johdu hitaasta yhteydestä.

Tähän voi auttaa irroittamalla "chromium-codecs-ffmpeg"
Tämän voi tehdä pakettihallinnan kautta, jolloin tilalle asennetaan automaagisesti
"chromium-codecs-ffmpeg-extra"

Tai sitten: (Ubuntu/Debian)

sudo apt-get remove chromium-codecs-ffmpeg

ja asentamalla

sudo apt-get install chromium-codecs-ffmpeg-extra

(Työpöydällä oleva kuvake saattaa ehkä kadota)

Chromium voi tämän jälkeen näyttää videot ongelmitta.

torstai 21. marraskuuta 2013

Bitcoin ja bitcoin-qt ohjelma


Bitcoin - bittiraha, vai pitäisikö sitä kutsua - vertaisverkko rahaksi 
Pankkien tietokoneiden sijaan rahat pyörii vertaisverkossa

Bitcoin-qt on bitcoinprojektin kehittämä asiakasohjelma, ei siis ohjelma millä louhitaan bitcoineja, vaan lompakko-ohjelma eli vertaisverkko-ohjelma.

Ei siinä mitään ,mutta aikamoinen resurssisyöppö tuntuu olevan, vaikka kuvassa oleva 78.6 % bitcoin-qt ottama cpu aika on sinänsä vähän tälle ohjelmalle, koska paljon kovempiin lukuihin olen päässyt, normaalisti jotain 80-110 %  ja onhan puhuttu jopa jostain 400 % tehoista (riippuu vähän siitä kuinka monta ydintä prossussa on, tässä koneessa on vain kaksi), tyhjäkäynnilläkin vie noin 40% , aktiivisia yhteyksiä oli 8.

Näin kova tehonkulutus tuntuu jo muitten ohjelmien hidastumisina.
Nähtävästi kuitenkin tämän ohjelman saa myös toimimaan vaikka yhdellä ytimellä, jolloin resursseja vapautuu ... täytyy testata myös tämä.
Tästä ohjelmasta on myös olemassa komentoriviltä ohjattava versio nimeltä Bitcoind, ja se ainakin omien havaintojen mukaan vie vähempi resursseja, ja sen saa käynnistettyä daemoniksi ... ehkä tälle pitäisi koodata jokin oma käyttöliittymä.

Tai sitten, ei vaan pidä ohjelmaa jatkuvasti toiminnassa, vaan käynnistää vaikka kerran päivässä, tosin tämä ohjelma on aika hidas starttaamaan, koska mm. joutuu hakemaan ne aktiiviset yhteydet, mutta lohkot se sitten tsekkaa nopeasti ... ja kyllähän noilla tehoilla. 
Tällä hetkellä vuorokaudessa tulee noin 160 uutta lohkoa.


Blogger ja 1&1 domain


Jos omistat verkkotunnuksen jota hallinnoi1&1 ja haluat liittää se omaan blogiisi ... niin niin tässä on
1 & 1 sivuilta lainattua tekstiä.

Enter the CNAME address in the Alias text box (The CNAME cannot exceed 38 characters).


Eli 1&1 verkkotunnusten hallinta hyväksyy 38  merkkiä pitkän CNAME aliaksen, mutta Googlen merkkijono voi olla pidempi kuin 38 ... minulla se oli 37 merkkiä, eli mahtui juuri, mutta entä jos on ylin tuon 38 merkkiä ?
joskus 1-2 vuotta sitten se ei saanut ollut kun 32 merkkiä, eli jotain parannusta on siis tapahtunut.

Yli 38 merkin tapauksissa homma saadaan kyllä toimimaan jollain pilvi nimiserverillä, mutta ei tästä sen enempää nyt.

Näiden ohjeiden mukaan homma saadaan toimimaan.

Jos verkkotunnus on
omasivut.fi      niin aliverkkotunnus voi olla vaikka
www.omasivut.fi  tai
blogi.omasivut.fi  tai mitä vain keksit

mutta tämän lisäksi lisäsin myös päätunnukseen ip osoitteen ... ja tätähän ohjeet ei sinänsä käske tehdä.

Päätunnus -> edit DNS settings

  • Advanced DNS settings
  • IP address (A Record)  - valinta-  Other IP address
  • IPv4 address 216.239.32.21
  • IPv6 address   -tyhjä-
Nämä DNS propagaatiot ovat hitaita, mutta nyt tällä kertaa meni vain muutama tunti ...
kerran odotin 54 tuntia.

Kun liitetään Bloggerissa omatunnus blogiin muista laittaa raksi ruutuun
Uudelleenohjaa omatsivut.fi kohteeseen www.omatsivut.fi     ... tms
Silloin selaimen osoiteriville kirjoitettu http://omatsivut.fi menee blogiisi.

Nämä tällaiset jutut on aika ikäviä, ja samaa mieltä näkyy Googlekin olevan,
kun etsin haulla aliverkkotunnus ja pääverkkotunnus niin Google ehdotti



tiistai 19. marraskuuta 2013

Debian Wheezy - asennus SheevaPlugiin

Wheezye:n asennus tähän laitteeseen on sinänsä aika triviaalia tai tarkalleen ottaen Wheezy ei asenneta laitteen flashille vaan USB tikulle tai SD kortille. Wheezy asennetaan käyttäen Debian installer:ia joka hakee Wheezy:n verkosta suoraan, kunhan aluksi tikulle tai muistikortille on asennettu uImage ja uInitrd tiedostot, nämä tiedosto voi myös olla TFTP serverillä.

Aluksi, jotta pääsemme Sheevaplugin bootloaderiin käsiksi joka muuten on U-boot, on käytettävä jotain sarjaterminaali esim. Putty tai Minicom ohjelmaa,

Yhteysasetuksin:
/dev/ttyUSB0 (tai ttyUSB1..) baud 115200/8/1/N.

Kytketään USB kaapeli tietokoneeseen ja kaapelin toinen pää (mini USB) boxiin, virrat päälle ja jos olemme tarpeeksi nopeita ehdimme keskeyttämään latauksen tarpeeksi ajoissa.

Nyt meillä pitäisi olla edessä tämän näköinen teksti.

Marvell>>

Komennolla "help" listataan U-bootin komennot ja "printenv" listataan senhetkiset asetukset.

aluksi kannattaa muuttaa bootdelay arvoa

Marvell>>setenv bootdelay 5

Marvell>>saveenv

Komento

Marvell>>version

kertoo mikä U-boot versio on käytössä, kahta versiosta on liikkeellä ja suositus olisi käyttää DENX varianttia ei siis Marvelin oma muunnosta. Tarkemmat ohjeet täältä

http://www.cyrius.com/debian/kirkwood/sheevaplug/uboot-upgrade.html

USB tikulla ja SD kortilla voidaan käyttää joko fat tai ext3 tiedostojärjestelmää. Jos käytetään ext3:ta silloin fatloadin tilalla on ext2load

mmc init

fatload mmc 0:1 0x00800000 /uImage

fatload mmc 0:1 0x01100000 /uInitrd

usb start

fatload usb 0:1 0x01100000 /uInitrd

fatload usb 0:1 0x00800000 /uImage

TFTP server asennus

setenv serverip 192.168.1.2

setenv ipaddr 192.168.1.147

tftpboot 0x00800000 uImage

tftpboot 0x01100000 uInitrd

Startataan asennus

setenv bootargs console=ttyS0,115200n8 base-installer/initramfs-tools/

driver-policy=most bootm 0x00800000 0x01100000

Kun asennus on suoritettu pysäytä Debianin lataus ja palaa u-boot:n, kirjoitetaan alla olevat parametrit ja tallennetaan ne (saveenv).

Näillä kone saadaan boottaaman ulkoiselta medialta, eikä siis laitteen omalta flash muistilta.

USB:

setenv bootargs_console console=ttyS0,115200

setenv bootcmd_usb 'usb start; ext2load usb 0:1 0x00800000 /uImage; ext2load usb 0:1 0x01100000 /uInitrd'

setenv bootcmd 'setenv bootargs $(bootargs_console); run bootcmd_usb; bootm 0x00800000 0x01100000'

SD:

setenv bootargs_console console=ttyS0,115200

setenv bootcmd_mmc 'mmc init; ext2load mmc 0:1 0x00800000 /uImage; ext2load mmc0:1 0x01100000 /uInitrd'

setenv bootcmd 'setenv bootargs $(bootargs_console); run bootcmd_mmc; bootm 0x00800000 0x01100000'

tallennetaan

saveenv

------

Muutama huomautus - mmc 0:1 tarkoittaa sitä että bootti tapahtuu-- laite 0 partition 1 - jos muistokortin luku ei onnistu, tällöin voidaan kokeilla ajaa 'mmc init' komentoa uudelleen

..........................................................................................

artikkelia jatketaan myöhemmin ....

maanantai 18. marraskuuta 2013

Jaettu nettiyhteys ja Linux verkko

Jos sisäverkossa on useampia kone ja niihin myös haluttaisiin nettiyhteys …  tämä onnistuu Linux koneissa aika helposti ip-tablesia käyttäen.
Esimerkissä on 3 Linux konetta jossa kahdessa ei ole X käytössä, käyttis on molemmissa Debian Wheezy ja kolmannessa koneessa on Ubuntu KDE työpöydällä.
Nettiyhteys saadaan DNA:n 4G mokkulalla, joka on kytketty pieneen ARM vähävirtanen tietokoneeseen joka tässä tapauksessa on SheevaPlugi , samalla kone voi toimia myös palomuurina, ja ehkä myös pienenä serverinä, koska konehan on jatkuvasti päällä ja netissä.
Tietokoneessa 1 joka siis jakaa nettiyhteyttä, on kaksi rajapintaa
wwan0 — ulkoverkko 
eth0 — sisäverkko
Ulkoverkko on wwan0 koska kyseessä on langaton yhteys, se voi siis olla jokin muu esim. eth0 jolloin sisäverkko on eth1
Tietokoe 1:
Ensimmäinen tehtävä on asentaa —  isc-dhcp-server
# apt-get install dhcp3-server
ja sitten /etc/dhcp/dhcp.conf  tiedostoon kirjoitetaan vaikka nämä osoitteet.
subnet 10.5.5.0 netmask 255.255.255.224 {
range 10.5.5.26 10.5.5.30;
#option domain-name-servers ns1.oma.server.org;
#option domain-name "oma.server.org";
option routers 10.5.5.1;
option broadcast-address 10.5.5.31;
default-lease-time 600;
max-lease-time 7200;
}
Ja /etc/network/interfaces tiedostoon kirjoitetaan staattinen IP (huomaa kommentit)
auto lo
iface lo inet loopback

#allow-hotplug eth0 ←poista tai laita kommentiksi
#iface eth0 inet dhcp ←poista tai laita kommentiksi

auto eth0
allow-hotplug eth0
iface eth0 inet static
address 10.5.5.1
netmask 255.255.255.224
network 10.5.5.0
broadcast 10.5.5.31
gateway 10.5.5.1
Käynnistä verkkoyhteys uudelleen
# /etc/init.d/networking restart (*stop start restart)
varmista ifconfig:a käyttäen että eth0 saa oikean osoitteen 10.5.5.1
Käynnistä uudelleen dhcp serveri
# /etc/init.d/isc-dhcp-server restart – tai service isc-dhcp-restart (*start, stop, restart)
eikä virheitä saisi tulla
Tietokone 2:
Artikkeli on kesken  —- jatkuu…

A-LINK WNU (m) wlan USB sovitin


A-linkin wlan sovite (kuvassa) voi toimia suoraan esim. Ubuntu/Debian järjestelmässä, laiteajuri (moduuli) on nimeltään rtl8192cu, valmistajan mukaan laite on Linux yhteensopiva, paketin kyljessä niin lukee … ja tottahan se tavallaan on, sillä mukana tulee ohjeet miten käännät omat ajurit.
Mutta moduli rtl8192cu voi olla jo mukana järjestelmässä, eli sovittimen pitäisi toimia suoraan.
lsmod,dmesg,lsusb sen kertoo (katso alempana).
Laite sinänsä ei ole kovin tehokas, käytännössä pitää olla samassa huoneessa sen toisen WiFI laitteen kanssa johon halutaan ollaan yhteydessä.
Laite siis toimii, mutta joitakin ongelmia voi esiintyä, esimerkiksi tietokoneen sleep tilasta paluun jälkeen WiFi yhteys ei enää toimikkaan.

Tähän löytyy muutama ratkaisu.

Ajetaan konsolissa käsky:

 sudo service network-manager restart
Jos tämä palautti yhteyden, kirjoita skripti /etc/pm/sleep.d hakemistoon.
Tiedoston nimeksi voit antaa vaikka network-manager_restart


#!/bin/bash

USERID=boat
SCRIPT="/usr/bin/xgps"

case "$1" in
  suspend|hibernate)
     ;;
  resume|thaw)
    export DISPLAY=":0"
    export XAUTHORITY="/home/$USERID/.Xauthority"
    su $USERID -c "$SCRIPT"
    /usr/sbin/service network-manager restart
     ;;
  *) exit $NA
     ;;  

esac



(ajettava ohjelma, jonka omistaja on root
sudo chmod -R 755 network-manager_restart
tai
sudo chmod +x network-manager_restart)

Mutta jos edellinen ei auttanut, kokeillaan alla olevat käskyt


 sudo modprobe -r rtl8192cu ja sudo modprobe rtl8192cu 



Jos tämä toimii, kirjoita skripti /etc/pm/sleep.d hakemistoon
Tiedostolle voi antaa nimeksi vaikka a-link-wnu
ja sisältö löytyy tästä

#!/bin/sh
#lepotilasta paluu

case "${1}" in

resume|thaw)

sudo modprobe -r rtl8192cu
sudo modprobe rtl8192cu swenc=1

;;
esac


ja lopuksi pitää skripti muuttaa ajettavaksi chmod komennolla
sudo chmod +x a-link-wnu

swenc=1 tarkoittaa, ohjelmallinen kryptaus
*****************************************************
Muita mahdollisia temppuja:

Luo tekstitiedosto /etc/pm/config.d hakemistoon ja kirjoita sinne alla oleva rivi
SUSPEND_MODULES="rtl8192cu"

Täyyy myös muistaa ettei hakemistoihin /etc/pm/~
config.d 
power.d 
sleep.d 
Ei kannata jättää mitään turhia tiedostoja, eli jos ylläolevat skriptit ei toimi, ne pitää poistaa sieltä. 
******************************************************



jolla ringtone


Jolla Mobilen sivuilta poimittu.

Jolla ringtone
 (lataa tai kuuntele)

MP3
OGG
FLAC



Äänitiedoston soitto Python koodilla

Jos halutaan soittaa äänitiedosto APlay ohjelmalla Python koodissa, se käy vaikka näin

import os

SOUND = ’/home/pi/joku_biisi.wav’
command = ’aplay %s -D plug:hw:1′ % SOUND
os.system(command)


APlay on Alsa äänikorttiajurien mukana tuleva soitto-ohjelma (toki Pythonilla voidaan soittaa muullakin tapaa)

plug.hw:1 on äänikortti … ja tässä tapauksessa käytetään ulkoista USB sovitinta, parametri -D = device.

Esimerkissä siis komentorivikoodia ajetaan python ohjelman sisällä, kappaleen osoite on muuttujassa SOUND ja se sijoitetaan merkkijonoon %s. tuloste menee konsoliin, mutta jos ohjelmaa ei ajeta konsolissa, tuloste voidaan ohjata vaikka nollalaitteelle.

Alla olevassa esimerkissä myös virheet menee sinne minne tuloste  ( kohta 2>&1 ), tulosteet voidaan myös ohjata vaikka jonnekkin loki tiedostoon

command = ’aplay %s -D plug:hw:0 1>/dev/null 2>&1′ %SOUND

Esimerkiksi Raspberry Pi on äänipiirin osalta niin heikko että ulkoista sovitinta tarvitaan kun ei yksinkertaisesti riitä teho … tästä lisää myöhemmin ... kuinka kopioit kaukosäätimen koodit

Sim-kortti modeemi ja Python koodia



Sim-kortti modeemi USB porttiin esim.niin sanottu Mokkula tai vastaavanlainen modeemi on seuraavaksi tarkastelun alla. Näitä modeemeja voidaan käyttää moneen eri tarkoitukseen, ja yksi mielenkiintoinen juttu on ohjata tätä AT komennoilla .. siis jos kytkemme tällaisen modeemin vaikka Plugin tietokoneeseen, niin saamme laitteen jota voidaan ohjata kännykällä suoraan AT komennoilla, tai se lähettää tekstiviestejä kännykkään.

Tämä artikkeli on laajuuteensa takia vielä kesken, mutta tullaan kyllä kirjoittamaan...

JAVA alkuhistoria

Java ohjelmointikielenä on varmaan monille tuttu, tavukoodia tekevä tulkattava ohjelmointikieli on nykyään hyvin yleinen, voi olla ehkä suosituin kieli tällä hetkellä. Javan alkuperäinen idea oli kuitenkin aivan toinen … eikä edes nimi ollut Java.

Vuonna 1990 Sun Microsystems yhtiössä päätettiin yhdistää kodin kulutuselektroniikka, siten että eri laitteet  muodostaisivat yhdessä sulautetun järjestelmän, tätä varten kahden ohjelmoijan James Gosling ja Patrick Naughton ja yhden insinöörin Mike Sheridan  ryhmä, koodinimeltä ”Green” alkoi kehittämään laitetta jolla voidaan ohjata kaikkia kodin elektroniikkaa, videonauhuria, televisiota,stereota jne  … siis varsinainen yleiskaukosäädin oli kyseessä. Laitteessa ei ollut nappeja ollenkaan vaan kosketuspinta, liikuttelemalla sormea liuttaen siinä saatiin vastaanottava laite toimimaan halutulla tavalla.

Projektin alkuvaiheessa huomattiin että laitteet ei ymmärrä toisia ellei niillä ollut yhteistä kieltä ja tästä siis syntyi idea uudelle ohjelmointikielelle, ja nimeksi sille annettiin OAK. Tulkkia alettiin koodata vuonna 1991 kesällä.

Myöhemmin kävi kuitenkin selväksi että tällaiset laitteet tulee aivan liian kalliiksi, joten siitä luovuttiin ja OAK vapautettiin internetiin, ja nimikin vaihtui kahvin mukaan jota tuotiin Jaavan saarelta,  sitä kun oli kulunut koodatessa valtavia määriä … tästä myös Javan logo.

Sinänsä kunnianhimoinen tavoite, mutta kun nyt asiaa ajattelee, niin olisiko koko idealla ylipäätään ollut mahdollisuutta onnistua? Kun ajatellaan kuinka erilaisia käyttöliittymiä eri laitteilla on, ja niitten ohjaaminen jollakin yhteisellä kapulalla tuntuu aika vaikealta. Tietenkin nykyään asia voisi olla toinen, esim. meillä olisi isolla kosketusnäytöllä varustettu säädin, joka olisi vuorovaikutteisesti yhteydessä eri laitteisiin heti siihen tilaan tuotuna missä kyseiset laitteetkin on, toisin sanoen eri laitteet voisi lähettää kapulaan omat funktionsa, ja näin yhdelläkin säätimellä voitaisiin ohjata useita eri laitteita, kunhan aluksi valitaan mitä laitetta ohjataan. Tästä taas herää ajatus, mitä kieltä nämä laitteet puhuu? Siis pitää olla jokin alustariippumaton oliopohjainen ohjelmointikieli jota kaikki laitteet tukee, ja jossa on mittava kirjasto eri laitteille, James Gosling oivalsi tämän silloin aikoinaan, ja näin Javan taival alkoi.

AlsaMixer on Linux komentorivillä toimiva mixeri ohjelma äänille


(klikkaa kuvaa)

Alsa tulee sanoista ”Advanced Linux Sound Architecture” alsamixer taas on graafinen ohjelma jolla voit hallita äänikorttejasi komentoriviltä.

käyttö on helppoa … kirjoita  alsamixer ja ohjelma aukeaa.

Ohjelma ei siis vaadi X-ikkunointia vaan toimii konsolissa, eli hyödyllinen monissa järjestelmissä joita säädetään vaikka ssh yhteydellä.

1&1 Domain

Yli 11 miljoonaa rekisteröityä verkkotunnusta, yli 10 miljoonaa asiakasta mainostaa tämä saksalainen verkkopalveluja myyvä www.1&1.com firma. 11 toimipaikkaa 4561 työntekijää Euroopassa ja USA:ssa. Halvat hinnat ja ilmainen salattu rekisteröinti, oli sen verran kiinnostavia yksityiskohtia, joten sieltähän Domaini oli sitten hankittava. Ei siinä mitään, Domainin tilaaminen oli todella helppoa, ja maksu tapahtui kätevästi PayPal linkkiä käyttäen. Tilausvahvistus tuli ruudulle jossa luki, 24 tunnin kuluttua lähetämme sähköpostiin vahvistuksen rekisteröinnistä sekä tunnukset hallintapaneeliin … aivan siis 24 tuntia? Tämä tarkoittaa sitä että verkkotunnusta ei rekisteröidy heti, vaan tuon ajan kuluessa. Ja sitten vain odottamaan …. Ja odottavan aika on pitkä, tässä tapauksessa noin 54 tuntia. Ilmoitus siis tuli sähköpostiin, ja samantien vaihtamaan DNS asetuksia jotta saatiin tunnus osoittamaan toiseen palvelimeen, muutaman tunnin odotus ja homma oli pulkassa.

Mutta se mikä jäi mietityttämään, oli pitkä rekisteröinti aika, minun tapauksessa 54 tuntia, sinänsä tällä ei ollut mitään merkitystä, mutta entä jos joku yrittää rekisteröidä jotakin erikoisen hyvää Domainia, jotka sinänsä on harvassa kun kanan hampaat, mutta eikö vaarana ole että joku vie sen välistä? Niinkauan kun nimeä ei ole rekisteröity se on vapaa, Whois sivuja kannattaa käyttää, sieltä  ne selviää.

Jotkut firmat kuten esim. GoDaddy nähtävästi rekisteröi tunnukset nopeammin, mutta kai heilläkin se 1-24 tuntia menee, johtuen DNS asetuksista, mutta toisaalta onhan heillä jo yli 50 miljoonaa rekisteröityä tunnusta…ovat päässeet harjoittelemaan enemmän.

ps. Nyt kun on tullut säädeltyä ja testailtua 1&1:n hallintapaneelista Domainia, ihan OK palvelu, ei voi moittia… etenkin kun maksoi vain 0,99$.

(alkuperäinen artikkeli kirjoitettu 12.1.2012)

ps. ja nyt tämä asia on esillä taas, kun yritän siirtää moduli.info domainia näille sivuille

sunnuntai 17. marraskuuta 2013

GPS paikannin ja Python koodia



Jos omistat kuvan kaltaisen GPS laitteen tietokoneen USB porttiin, niin tässä artikkelissa kokeillaan koodia miten saadaan laite toimimaan. Python sopii näihin hommiin hienosti. Esimerkki on Linux koneeseen, mutta tietenkin sorvattavissa myös Win alustaan.

Tällainen GPS paikannin on kätevä jos tarvitaan tietää senhetkinen sijainti, kello tai nopeus … no niin onhan nykyään kännykässä nämä kaikki, mutta tietokoneen isompi näyttö on monesti se syy miksi halutaan käyttää sitä.

Jos halutaan GPS laitteen antama sijainti näkymään kartalla, silloin tarvitaan jokin karttaohjelma … helpoin on Google Map, kun ollaan Online tilassa.

Täytyy kuitenkin sanoa, etten varsinaisesti tiedä/muista asiasta paljoakaan, vaikka joskus tällaisen ohjelman olen tehdyt.. ohjelma ja kaikki sen mukana, hävinnyt aikojen saatossa jonnekin.

Mutta toivottavasti laitteen sielunelämä aukeaa koodauksen aikana.

Tarkennetaan vielä …tässä artikkelissa oleva koodi ei ole täydellistä , vaan jotain sinnepäin … ;)

(Alla oleva koodi ajettiin Ubuntu tai Debian koneessa)

——————————————–

Aluksi meidän täytyy etsiä laite USB portista, tähän tarvitaan Python moduuli nimeltä ”serial” , ja jos moduulia ei löydy, niin se joudutaan asentamaan, asensin omassa Ubuntussa paketti ”python-serial” joka löytyi ja asentui hienosti Synaptic:lla.

Lisää tämä koodiin

import serial

Aluksi etsitään laite portista, eri Linux distroissa laitteet voi löytyä esim. /dev/ttyUSB tai /dev/tty/USB  ja Win koneessa ne on COM portteja (ToDo)

Kun kytkemme koneeseen uuden USB laitteen, hakemistoon /dev/ ilmaantuu ttyUSB0 tai ttyUSB1 tai ttyUSB2 …  jne

komennolla ls /dev/ttyUSB* nähdään ilmaantuuko laite esille … ja jos ei, silloin ei ehkä kannata jatkaa tästä eteenpäin.

Sitten varsinaiseen koodiin, luodaan aluksi yhteys ja asennetaan oikeat parametrit.

ser = serial.Serial() 
for i in range(ports_count): 
  try:
ser.port = ("/dev/ttyUSB" + str(i))
ser.baudrate = 4800
ser.bytesize = 8
ser.parity = 'N'
ser.stopbits = 1
ser.timeout = 0
ser.open()  
          finally:


ports_count arvona kannattaa pitää tarpeeksi isona  vaikka 10-15, siis jos arvo on 15 niin laitetta etsitään väliltä 0…15

Nyt on tietenkin mahdollista että koneeseen on kytketty jokin toinen laite joka vastaa yllä esitettyyn koodiin, joten meidän on tarkistettava olemmeko oikeassa laitteessa, siksi tässä vaiheessa tutustutaan tarkemmin GPS laitteeseen. (huom. joitain debuggauksia voi olla koodissa)

#!/usr/bin/env python
# -*- coding: utf-8 -*-

import sys
import serial
import time

ser = None
port = None
ports=7     # porttien maara

def serial_create():
   global ser
   global port

   try:
         ser = serial.Serial()
         for i in range(ports):
             try:
                 ser.port = ("/dev/ttyUSB" + str(i))
                 ser.baudrate = 4800
                 ser.bytesize = 8
                 ser.parity = 'N'
                 ser.stopbits = 1
                 ser.timeout = 0
                 ser.open()
             finally:
                if ser.isOpen():
                     for x in range(3) :
                         time.sleep(0.5)
                         response = ser.readline()
                       #  print response
                         if  response.find("$GP") is not -1:
                             port = i
                             print 'GPS laite on portissa USB',port
                             return True
                             break
                     print 'loop range or sleep time ?'
                     break
                else:print 'GPS laitetta ei kytketty'
         if port is None:
             print  "GPS laite ei vastaa"
             return False

   except: #IOError:
       return "serial error"

serial_create()
for x in range(15) :
    time.sleep(1.0)
    response = ser.readline()
    print response  

try:
    ser.close()
except:
    pass
sys.exit(0)

Esimerkin pitäisi tulostaa jotain tälläistä

GPS laite on portissa USB 0
$GPGGA,004634,,N,,E,0,00,,,M,,M,,*68
$GPGSA,A,1,,,,,,,,,,,,,,,*1E
$GPGSV,2,1,08,26,,,27,13,,,27,01,,,27,29,,,26*7F
$GPGSV,2,2,08,12,,,26,19,,,27,21,,,26,32,,,25*7A
$GPRMC,004634,V,,N,,E,,,010303,,,N*5C
$GPGGA,004635,,N,,E,0,00,,,M,,M,,*69
$GPGSA,A,1,,,,,,,,,,,,,,,*1E
$GPGSV,3,1,12,26,,,00,13,,,00,01,,,00,29,,,00*74
$GPGSV,3,2,12,12,,,00,19,,,00,21,,,00,32,,,00*72
$GPGSV,3,3,12,09,,,00,25,,,00,08,,,00,27,,,00*79
$GPRMC,004635,V,,N,,E,,,010303,,,N*5D
$GPGGA,004636,,N,,E,0,00,,,M,,M,,*6A
$GPGSA,A,1,,,,,,,,,,,,,,,*1E
$GPGSV,2,1,05,01,,,00,09,,,00,25,,,00,08,,,00*78
$GPGSV,2,2,05,27,,,00,,,,,,,,,,,,*79
$GPRMC,004636,V,,N,,E,,,010303,,,N*5E


(huomataan ettei paikannustietoja ole vielä saatavilla)

Seuraavaksi tätä on sitten yritettävä jotenkin tulkita.

kentästä $GPRMC ainekin löytyy helposti, latitude,longitude, nopeus jne kannattaa tutustua

allaolevaan linkkiin, sieltä selviää paljon

http://www.gpsinformation.org/dale/nmea.htm

koodin loppua voisi muuttaa vaikka näin…

serial_create()

for x in range(15) :
    time.sleep(0.5)
    response = ser.readline()
    if response.find("$GPRMC") is not -1:
      print response
      A=0; O=0; lista=[]
      for i in range(9):
        A=response.find(',',O)
        O=response.find(',',A+1)
        lista.append(response[A+1:O])

     print float(lista[2])/100,'latitude'
     print float(lista[4])/100,'longitude'
     print lista[6],'speed .. knots'

     date = lista[8]

     aika = date[:2]+'.'
     aika += date[2:4]+':20'
     aika += date[4:]
     print aika,'date'

     break

print 'exit'

try:
  ser.close()

except:
    pass 
sys.exit(0)    

Ja tulos voi näyttää vaikka tältä.



GPS laite on portissa USB 0
$GPRMC,220025,V,6057.1554,N,02539.6236,E,000.0,013.5,230312,,,N*64

60.571554 latitude
25.396236 longitude
000.0 speed .. knots
23.03:2012 date
exit

Mikrofonin tsekkaus

Simppeli mikrofonin tsekkaus Linux konsolissa: (alsa)

  $ arecord | aplay
     Nauhoittaa WAVE ’stdin’ : Unsigned 8 bit, Taajuus 8000 Hz, Mono
     Toistetaan WAVE ’stdin’ : Unsigned 8 bit, Taajuus 8000 Hz, Mono

  $ control c  — lopettaa  (kiertää herkästi)

Mikrofoniin puhuttu tulee samalla ulos kaiuttimista.
Voidaan myös tehdä pitemmän kaavan kautta

Nauhoita:
  $ arecord /tmp/mikki.wav

Toista:
  $ aplay /tmp/mikki.wav
  $ control c  — lopettaa