Sivut

perjantai 28. elokuuta 2020

Testaamisen sietämätön keveys

 Joudun säännöllisen epäsäännöllisesti testaamaan kaikki hengentuotteeni erilaisilla järjestelmillä. Testit täytyy tehdä erilaisilla käyttöjärjestelmillä (Windows 7/8/10, MacOS ja Linux), erilaisilla laitteilla (PC, Laptop, Mobiilit) sekä erilaisilla selaimilla (ja niitähän riittää). Vaikka kehitystyö ja käyttö tehdäänkin internetissä, niin ohjelman käyttäytyminen asiakkaan laitteella riippuu noista kaikista tekijöistä. Osa toiminnoista kun on sidottu järjestelmään, eikä siihen pääse kehittäjä vaikuttamaan. Vielä 1990-luvulla piti "vain" tietää, että millaiseen Windows versioon ohjelma tullaan asentamaan. Nykyaika ei ole tuonut tähän ainakaan helpotusta. Etenkin mobiililaitteet ovat tyhjentäneet hiukset päästä. Tässä eräänä päivänä (nyt) ajattelin testata erästä tuotetta vanhassa Windows 7 ja 8.1 koneessa. Huomasin kyllä, että selain oli toki päivittynyt uudempaan versioon (IE 11.x). Mutta sitä en muistanut, että kuinka hankalaa on Windows 7 koneelle kertoa, että WiFi verkon reititin ja salasana ovat vaihtuneet. Se vai haluaa itse ratkaista verkon ongelmat, eikä päästä käyttäjää väliin. Kun tein saman testin uudemmalla Windows 10 koneella, niin se oli jo sujuvampaa. Win 10 osasi kysyä WiFi verkon salasanaa kun vanhalla ei enää päässyt verkkoon.

Tästä satunnainen lukija huomaa, että minulla saattaa olla useampi tietokone käytössä. Oikeassa on hän. Nopeasti laskettuna niitä on kaikkiaan kahdeksan (8) erilaista. Kaikissa hieman erilainen järjestelmä. Onneksi suurin osa laitteista on hankittu kierrätyksestä.

Tykkää
Kommentti
Jaa

Avoin kehittäjäpalvelu muuttui maksulliseksi

Kehitys kehittyy ja internetin kehittäjäpalvelutkin muuttuvat maksulliseksi. Olen joskus kehittänyt (kopioinut ja muokannut) sellaisen Visitor Tracking menetelmän. Tarkoitus ei ole vain laskea käyntimääriä vaan tallentaa sivuilla vierailijasta hieman tarkempaa dataa. Sivuilla vierailijasta tallennetaan: aikaleima, selaimen nimi, selaimen tunniste (agentti), selaimen alusta (Win, Mac, Linux), selaimen käyttämä laite (PC, Laptop, Mobiili), IP-osoite ja onko kysymyksessä Robotti vai Botti. Botit heitetään roskiin, muuta vierailijat tallennetaan tietokantaan. Tämä menetelmä on ollut asennettuna asiakkaiden palveluihin.

Nyt kokeilen sitä omille sivuilleni ja uuteen kehitysympäristöön (CodeIgnniter 3). IP -osoitteen perusteella olen voinut hakea internetin palvelusta vierailijan maakoodin (FI, US, CH). Tähän palveluun minulla on ollut rekisteröitynä ilmainen kehittäjälisenssi (ipinfo.io/developers). Eräänä aamuna huomasin, että palvelu on antanut maakoodiksi pelkkää tähteä (**). Lokitiedoista sain selville, että palvelun lisenssi oli vanhentunut. Yritin sitä tietenkin uusia, mutta kas! Se olikin muuttunut maksulliseksi :-\ Onneksi internet on nykyisin tulvillaan vastaavia palveluita. Ei muu auttanut kuin vaihtaa palvelua (www.geoplugin.net). Turha ja tyhmä juttu. Teettää ylimääräistä työtä.

Miksi aikaisemmin kehittäjien yhteisön ylläpitämä avoin palvelu on muuttunut maksulliseksi? Rahan ahneus tietenkin. Ovat varmaan huomanneet, että palvelu on ollut suosittu: sillä voidaan ansaita!

Minut ja asiakkaani saivat ainakin ulkoistettua palvelusta. Onko se nyt parempi vaihtoehto?

keskiviikko 26. elokuuta 2020

Facebook plug-in Twitteriin ja Bloggeriin

Kukahan kehittäisi (uudestaan) sellaisen moduulin, joka osaa postata saman julkaisun monelle eri alustalle. Kun kirjoitan tänne Facebookiin, niin nykyisin saman tekstin joutuu käsin siirtämään Twitteriin, Instagramiin, Bloggeriin ja muualle. 
 
Joskus oli olemassa edes sellainen Facebook liitännäinen (Plug-In), joka postasi automaattisesti Facebook kirjoituksen Twitteriin. Jos sen pituus oli liikaa Twitterille, niin moduuli osasi lyhentää postin ja liittää siihen linkin Facebook sivulle. Sitten iski kilpailu ja mustasukkaisuus. Liitännäinen poistettiin käytöstä.
 
Toki toki. Onhan niitä maailmalla. Mutta ne, jotka minä olen löytänyt ovat maksullisia eikä edes kokeiluversio toimi. Ei sellaisen tekeminen ylivoimaista olisi, mutta ei vanha setä jaksa enää heilua.
 
Tykkää
Kommentti
Jaa


 

Ohjelmistojen kehitys kehittyy

Hups! On taas aikaa kulunut kun olen tänne kirjoittanut.
On niin monta paikkaa, mihin tekstejä täytisi muistaa päivittää.

Olen sentään jotakin oppinut tästä tietokoneiden ohjelmoinnista.
Viimeisen 20 vuoden aikana ohjelmointi on siirtynyt työasemasta (Windows) internettiin ja pilvipalveluihin (Cloud Service). Erilaisia sovelluksia käytetään nyt oman tietokoneen selaimella (Browser), eikä ohjelmia enää asenneta kiinteästi omalle tietokoneelle. Lisäksi mukaan ovat tulleet mobiililaitteilla käytettävät sovellukset (Applications). Ei taida olla mitään sellaista elämän aluetta, mitä ei voisi käyttää puhelimella tai tabletilla, jopa henkilökohtaisella älykellolla tai rannekkeella.

Joka tapauksessa. Kun nykyaikana aloittaa rakentamaan erilaisia sovelluksia, niin on otettava huomioon muutama seikka jo alusta alkaen. Riippumatta siitä, että millä ohjelmointikielellä tai millä ympäristöllä (IDE) ohjelmia kehität ja tuotat. 1) Kaikki tieto tulee tallentaa tietokantaan (Database). 2) Sovellusta pitää pystyä käyttämään monella eri kielellä (Languages). 3) Sovelluksesta pitää pystyä tuottamaan erilaisia raportteja ja listauksia ja niissä tulee ottaa huomioon listauksen sivutukset (Pagination). Muuten olet samassa liemessä kuin se "vanha" rallikuljettaja, joka ei asunut Laukaassa vaan Laukaalla.

Otetaan alusta.1) Kun kaikki tieto, tekstit, kuvat ja tapahtumat ovat tietokannassa, niin muutokset on "helppo" suorittaa ja antaa ne jopa käyttäjän itsensä tehtäväksi, harkitusti ja rajoitetusti.2) Edellisestä johtuen, myös erilaisten kieliversioiden toteuttamisen tekee tietokanta huomattavasti helpommaksi. Kielen vaihtaminen näytöllä tulee paljon helpommaksi kun kieliversiot on tallennettu tietokantaan.3) Kun tietoa tallennetaan, niin on tyypillistä, että sitä kertyy ajan kanssa huomattavia määriä. Silloin on tärkeää, että halutun tiedon löytäminen pitää tehdä helpoksi. Kaikkiin raporteihin ja listauksiin tulee järjestää tiedon hakemiseen (Search) ja sivunumerointiin (Pagination) tarvittavat välineet. 

Tämän kohdan 3) kanssa olen jumpannut viimeisen kuluneen viikon aikana. Kiitän luojaani (??) ja itseäni siitä, että olen ottanut huomioon kohdat 1) ja 2) jo alkuvaiheessa.

Siitä huolimatta siihen kuluu yllättävän paljon aikaa. Kyllä tekniikan saa toimimaan suhteellisen nopeasti, mutta ennen kuin raportti on luettavassa muodossa, siistin näköinen ja muutenkin selkeä, niin kyllä aikaa ja kahvia kuluu. Onneksi en polta tupakkaa 😉 

Yksi esimerkki on internet sivulla vierailleiden kävijöiden seuranta (Visitor Tracker). Vaikka mitään tarkkaa ja yksityistä tietoa ei tallenneta, niin on mukava seurata, että mistäpäin maailmaa, mihin aikaan, millä laitteella ja millä tekniikalla ihmiset verkossa liikkuvat. Taisin jo mainostaa tätä sovellusta aikaisemmin. Oheisessa kuvassa on kuitenkin viime yön aikana (noin 1:30) jälkeen omalla sivullani vierailleet käyttäjät. Listassa on kymmenen viimeistä tapahtumaa. Jo tästä näkee aikaeron, tekniikan ja vierailijan sijainnin (IP osoitteen perusteella). Listalta on poistettu kaikki tunnetut robotit (Botit, joita minun tiedossa on noin 4650) sekä minun omat käynnit. Aikaerosta johtuen on aamukahvin aikana mukava seurata, että ketä kaikkia on sivulla vieraillut.

Että onko tästä mitään hyötyä? Ei yhtään mitään. Tämä puuhastelu on pelkkää ajan kuluttamista sekä uusien asioiden ja tekniikoiden oppimista. Uskokaa tai älkää, niin kyllä vanhakin koira oppii uusia temppuja.

lauantai 2. toukokuuta 2020

Tietokoneiden sietämätön kilpajuoksu

Vieläkin tänä päivänä hämmästyttää, kummastuttaa pientä (tai aika suurta) koodaria sellainen asia: miksi yksinkertaiseen käyttöliittymään pitää lisätä kaikenlaista vilkkuvaa ja välkkyvää sekä pyörivää animaatiota?

Taas mennään sille muistelun osastolle.
Silloin kun aloitimme rakentaa ohjelmia Windows 3.1x, 95, 98 (eli käytännössä MS-DOS) käyttöjärjestelmälle, niin laitteiden kapasiteetti oli rajoitettu. Viimeisen päälle huippulaitteet olivat silloin varustettu x386 (16MHz) tai jopa x486 (25MHz) prosessorilla (CPU). Eikä erillistä grafiikkaprosessoria (GPU) ollut. Hyvä jos oli edes erillinen matematiikka prosessori.

Voitte vain kuvitella, millaiset rajat se ohjelmoijalle asetti? Kaikki kuvaruudun käsittelyyn tarkoitetut moduulit piti koodata ASM kielellä (eli Assembler konekielellä). Sitä laitteen CPU pystyi sentään suorittamaan ilman tulkin avustusta ja kuvaruudun sai toimimaan siedettävällä vasteajalla.

Mutta nyt kun laitteiden suorituskyky ei olisi esteenä, niin siitä huolimatta kaikki käytettävissä oleva kapasiteetti menee kaikenlaisten animaatioiden pyörittämiseen. Onhan se varmaan hienoa, kun vaihtaa ohjelmasta toiseen, niin ikkunat liukuvat, siirtyvät ja sinkoilevat sinne ja tänne. Mutta se syö turhaan resursseja. Minä pidän ensisijaisesti nopeasti toimivasta käyttöliittymästä, en mistää turhasta animaatiosta. Onneksi nykyaikaisissa käyttöliittymässä (ainakin Linux) voi itse säätää animaatioiden ja tehosteiden tasoa ja jättää pois kaikki turhat tehosteet.

Onko kukaan laskenut, kuinka kauan maailmassa käyttäjät odottavat ns. tiimalasia tai jotakin muuten pyörivää ja hyrräävää kursoria? Poikkeuksetta, kun avaat jonkin web-sivun, niin ruudulla pyörii joku väkkärä ja varmaankin hieno animaatio. Eikö tämän sijasta voisi käyttää yksinkertaista tekstiä: "Odota hetki ..."

Silloin ei prosessori ressukan aika menisi turhaan. No tietysti nyt kaikki suuttuvat: Sen animaation hoitaa nykyjään grafiikkaprosessori (GPU), mutta kaikilla käyttäjillä ei ole kallista ja tehokasta GPU laitetta. Sillä joku ATI Radeon tai NVIDIA GeForce maksaa aika paljon ja mitä sillä saavutetaan tavallisessa käytössä?

Laitetaan ostohetkellä myssy päähän ja mietitään sitä, että mitä me oikeasti tarvitaan? Jos olemme ostamassa lapselle tai lapsenlapselle pelikonetta, niin silloin tarvitaan tehokas GPU ja siihen riittävästi muistia. Sen lisäksi, että tarvitsemme myös erittäin tehokkaan keskusyksikön (CPU). Siihen totta tosiaan tarvitaan myös paljon rahaa.
Mutta jos olemme ostamassa itselle toimistokonetta ja/tai etätyöhön vaadittavaa LapTop konetta, niin hieman vähempikin riittää. Ei Office, sähköposti ja internet liikenteeseen tarvita mitään hirmukonetta.

Anteeksi jo etukäteen. Tästä tulee varmasti sanomista, mutta tulkoon. Minä olen tullut toimeen web- ja tietokanta- kehittäjänä melko vanhalla tekniikalla. En todella ole tarvinnut mitään huippuvirityksiä. Ja teen sentään työkseni internet ohjelmia.

Kuinka käy hakukoneiden?


Internetin hakukone on kuin maaperän öljy ennen moottorin keksimistä.
Vasta kun keksittiin mihin sitä voidaan käyttää siitä tuli merkityksellistä ja arvokasta. Nyt öljyä osataan käyttää ja joskus se loppuu.

Kuinka käy hakukoneen? Se valvoo, kuuntelee ja katselee meitä ja oppii koko ajan lisää meistä. Juuri kun opimme sitä käyttämään niin se on hyödytön.

(Blue Book Weinberg)

Salasanat haltuun


Olen kirjoittanut tästä jo aikaisemmin, mutta kertaus se on opintojen anoppi.

Oletteko koskaan miettineet erilaisten salasanojen (Password) sekamelskaa? Varmaan olette, jos olette kiinnostuneita pitämään omat tiedostonne turvassa.

Sääntö on sellainen, että samaa salasanaa ei saa käyttää joka paikassa.
Salasanan pitää olla riittävän turvallinen.
Salasanan tulee olla sellainen, että sitä ei voi arvata.
Salasanan pitää sisältää erilaisia merkkejä, numeroita sekä isoja että pieniä kirjaimia.

Siinä sitä sitten ollaan, kuka niitä muistaa? Internet on täynnä erilaisia salasanojen muistamiseen tarkoitettuja ohjelmia. Kaikissa niissä on se huono puoli, että ne ovat murrettavissa.

Yksi hyvä menetelmä on olemassa. Käytä omaa päätäsi ja käytä sellaista salasanaa, jonka voit päätellä aivan itse. Minä kerron kuinka se toimii.

Oma salasana alkaa aina tietyllä tavalla: alkuun joku erikoismerkki, vaikka # tai &.
Sitä seuraa neljä tai viisi numeroa, esimerkiksi oman puhelinnumeron alkuosa tai joku muu numero minkä itse muistat. Minulla se alkaisi siis: #1650.
Sen jälkeen aina sama kaava: lisätään siihen :4 eli Salasana jotakin varten. Siitä tuo kaksoispiste ja nelonen (:for).
Tämän jälkeen salasanaan lisätään sen palvelun nimi, mihin olemme kirjautumassa. Minä olen nyt kirjautumassa Youtube palveluun, niin lisään salasanaan tekstin Youtube. Eli koko salasana on: #1650:4Youtube tai jos kirjaudun Googleen, niin salasana on #1650:4Google

Helppoa kuin heinänteko, mutta muiden on sitä melkein mahdoton arvata tai hakkeroida. Arvaatte varmaan, että minä en käytä omaa puhelinnumeroa, enkä tätä esimerkkiä :-) Mutta en ole koskaan myös hukannut salasanoja.

Valitettavasti on olemassa sellaisia palveluita, jotka eivät salli salasanaan erikoismerkkejä (#,$,&,:). Silloin pitää käyttää sitä maalaisjärkeä ja jättää ne pois. Se on vaan muistettava. Eikä toimia niin, kuin eräässä laitoksessa, jonka palveluksessa olin.

Asia meni muuten hyvin perille, mutta ... Kun kävin työntekijän tietokoneella ja nostin hiirimattoa, niin siltä löytyivät tämän käyttäjän kaikki salasanat.

On olemassa sellainen ohjelmisto kuin Team Password Manager https://teampasswordmanager.com/
Se toimii salatulla tietokannalla ja cryptatulla PHP-kielellä, mutta vaatii oman web palvelimen.

Facebook ja sietämätön hitaus.


Hieman ärsyttää tämä Facebook'in jQuery ja JavaScript kielillä toteutettu käyttöliittymä. Tämä yrittää olla niin viisas, mutta epäonnistuu siinä surkeasti.

Ymmärrän täysin miksi Facebook on valinnut käyttöliittymän moottoriksi JavaScriptin: he ovat haluneet, että Facebook'in alusta ei kuormita heidän omia palvelinkeskuksia. Sillä kaikki - aivan kaikki - koodi suoritetaan juuri Sinun omalla tietokoneellasi.

Jos joskus ihmettelet, että miksi joku sivu tai posti ei aukea nopeasti tai miksi kirjoitettu teksti ei aina näy oikein tai miksi ei voi käyttää Kopioi/Liitä tekniikkaa, niin voit syyttää vain omaa tietoliikennettä, omaa tietokonetta tai omaa selainta.

Minulla on testejä takana, monella eri käyttöjärjestelmällä ja monella eri selaimella.

Päivityksen puute

Hupsista. On kulunut jo tovi kun viimeksi tänne kirjoitin. Ei vaan aina jaksa kirjoittaa samaa tekstiä kolmeen eri mediaan (Facebook, Twitter ja Blogger).
Joskus näiden medioiden välille sai muodostettua linkin jonka kautta päivitykset toimivat "automaattisesti". Nykyisin memä mediat ovat niin mustasukkaisia, että kaikki linkitykset on estetty.

Yritän parantaa tapani ja kirjoittaa tai siirtää kirjoituksiani myös tänne Bloggeriin.

torstai 31. lokakuuta 2019

Selaimen tilarivin päivitys


Etsin foorumeilta toimintoa tai funktiota, jolla voisi näyttää tietoa käyttäjälle selaimen alareunan tilarivillä (status bar). Löysinkin sellaisen toiminnon ja vieläpä esimerkin.
Päätin kokeilla, mutta ... Ohjeessa kerrottiin, että

"Note: This property does not work in default configuration of IE, Firefox, Chrome, Safari or Opera".  Vapaasti suomennettua: "Huomaa: Tämä ominaisuus ei toimi IE-, Firefox-, Chrome-, Safari- tai Opera oletusasetuksissa".

Jaa, olikos niitä muitakin selaimia, jotka ovat laajemmin käytössä? Se siitä kokeilusta sitten!
No onhan niitä muitakin. Ei lienee kovin tunnettuja (SM, Torch, Baidu, Maxthon, Avant)

Pitänee käyttää (taas) sellaista ponnahdusikkunaa, vaikka en niistä tykkää. Tai hei, entäpä erillinen nauha selaimen ruudun yläosassa?

S.O.T. (Se On Testattava)

perjantai 19. tammikuuta 2018

Windrose: Tuulen nopeus ja suunta grafiikkana


Nyt tärppäsi, taas! Uusi työkalu: #JpGraph ja #php

Ennen vanhaan kun mietin, kuinka jonkin ongelman voisi ratkaista juuri tietyllä ohjelmointikielellä. Silloin menin kirjastoon tai kirjakauppaan. Yleensä Akateemiseen kauppaan Helsingissä. Sieltä ostin paksun manuaalin joka kertoi silloisen ongelman ratkaisusta. Ainakin antoi viitteen siitä.

Nyt tämä tiedonhankinta on helppoa. Laitan oikeat hakusanat hakukoneeseen ja kas ... minulla on saatavilla monta lähdeteosta, jotka käsittelevät juuri sinun ongelmaasi. 
Mutta ... onko tieto oikeaa?

Internet on tulvillaan valetta ja arvauksia. Yksi tyypillisistä vastauksista Q&A palstoilla (Kysymys & Vastaus) on, että kokeile tätä, ehkä se toimii. Vielä pask/%¤ .. tai huonompi vastaus on, että mitä sinä täällä kyselet, opettele itse! 
Niinhän minä teenkin ja yritin kysyä Teiltä apua!

Mutta kuten aloitin, niin joskus tärppää. Löysin Japanilaisen yhteisön kirjoittaman grafiikkakirjaston, joka on tarkoitettu PHP -kielelle. Sen avulla on varsin "helppo" tuottaa erilaista grafiikkaa: pylväitä, piirakoita, ruusuja ja muita. 
Tietysti data pitää olla oikeassa muodossa ja sitä pitää olla riittävästi. Sen jälkeen grafiikan piirtäminen onnistuu. No, periaatteessa aika hyvin.

Laitoin omalle sivulleni mittaustulokset Mikkelin sääpalvelun mittauksista: tuulen suunta ja nopeus. Se on nimeltään ns Windrose ja näyttää oheisen kuvan mukaiselta. Live dataa voi katsella osoitteessa: http://datatuki.net/fmiweb/weather_fmi.php

Tuuliruusu (Windrose) grafiikka siis kertoo mistä tuuli on puhaltanut ja miten kovaa.
Sakara "E" tarkoittaa Itätuulta (East) ja sen pituus tarkoittaa kuinka monta prosenttia tuulesta on puhaltanut idästä. Sakaran väri taas kertoo tuulen voimakkuudesta. Vaaka-akselilla on merkitty tuulen nopeudet eri väreillä.


Kolme ystävää

Tässä ovat minun kolme parasta ystävääni.
Tai parhaan ystäväni jälkeen seuraavaksi parhaat ... Jos Puolen hehtaarin metsässä perhonen räpäyttää siipiään, niin mitä tapahtuu Mikkelissä?


Iliman pilluu eli Ilmastonmuutos


Kolome kovvoo savolaesta sannoo: tulokku, pölökky ja mulukku.

Tässä asiayhteydessä kuitenkin #päästö, #vety ja #hiilidioksidi !

Joskus kauan sitten, eräs vanha ja viisas kertoi minulle: "Elekee mänkö sorkkimaan muapalloo ja lähettämmää niitä sputnikkeja taevaalle, siitä männöö taevaan kirjat sekasin". Olen vieläkin hyvin pitkälti samaa mieltä. 

Nyt on keksitty kerätä ilmakehästä talteen kaikki hiilidioksidi ja muuttaa se biopolttoaineeksi tai -tuotteiksi. Siihen prosessiin tarvitaan lisäksi vetykaasua. Ja vielä päästötöntä vetykaasua. 

Mistä näitä alkutuotteita saadaan? Ilmasta ja vedestä. Vedyn tekemiseen tarvitaan lisäksi päästötöntä sähköä. Päästöttömän sähkön tekemiseen on toistaiseksi hyvin vähän vaihtoehtoja, eikä mikään niistä kelpaa politiikoille. 

Ja sitten: mitä tapahtuu luonnolle silloin, kun ilmakehästä poistetaan liikaa hiilidioksidia polttoaineiden tarpeisiin? Muistanko oikein biologiasta, että esimerkiksi viherkasvit tarvitsevat hiilidioksidia yhteyttämiseen?

Oletetaan, että saamme poliittisen päätöksen käyttää päästötöntä sähköä (tuuli-, aurinko-, ydin-, tms energiaa) ja luvan ottaa vettä riittävästi käyttöön vedyn valmistamiseksi ja yhdistää nämä prosessit teollisuuden voimantuoton hiilidioksidipäästöihin, niin silloin ollaan oikealla jäljellä. 

Vety ja vesiongelma pitää vielä ratkaista ilman, että puututaan kehittyvien maiden puhtaan veden tarpeisiin.

Aurinkokunnan synty

Saattaa olla, että käsityksemme aurinkokunnan synnystä on täysin väärä. 
Mikäli on uskomista Eteläafrikkalaisen Johannesburgin yliopiston geologeihin. 

Vuonna 1996 egyptiläinen geologi Aly Barakat löysi aavikolta erikoisen kivenpalasen. Se ei vaikuttanut olevan peräisin maapallolta. Paljon myöhemmin selvisi, että kivi todella on avaruudesta. Sen uskottiin olevan muinaisen komeetan ydin, ensimmäinen koskaan löydetty. Annetaan sille nimeksi vaikka Hypatia.

Aurinkokunta alkoi muodostua yli 4,5 miljardia vuotta sitten, kun Aurinkoa ympäröinyt kaasu- ja pölykiekko tiivistyi planeetoiksi. Kiekko oli varsin homogeeninen eli planeettojen rakennusmateriaali oli alkuaine jakaumaltaan samanlaista.
Jos maapallon jauhaisi tomuksi, tomun koostumus olisi hyvin samanlaista kuin yleisimmissä kivimeteoriiteissa, kondriiteissa: melko paljon piitä ja pienempiä määriä hiiltä.

Hypatia sen sijaan sisältää paljon hiiltä, mutta varsin vähän piitä. Sen alkuaineiden jakauma on päinvastainen kuin aurinkokunnan kiviplaneetoilla ja asteroideilla.

”Vielä erikoisempaa on, että kiven rakenteessa on paljon tietynlaisia hiiliyhdisteitä, polyaromaattisia hiilivetyjä. Niitä oli huomattavan paljon siinä tähtienvälisessä sumussa, joka oli olemassa jo ennen kuin planeetat muodostuivat”

Minäkin uskon, että Hypatia on muodostunut jo ennen Aurinkoa ja planeettoja. Kun Hypatia, tai paremminkin se meteoriitti, josta Hypatia lohkesi, iskeytyi Maahan miljoonia vuosia sitten, kuumuus ja paine puristi sen hiilivedyt timanteiksi. Niistä muodostui suojakerros, joka on säilyttänyt kiven meidän päiviimme saakka niin, että sitä voidaan nyt tutkia. Vielä sekin erikoisuus Hypatiassa on, että se sisältää alumiinia puhtaana alkuaineena, mikä on harvinaista Maan päällä ja muualla aurinkokunnassa.

Todennäköisintä on siis, että Hypatian mineraalijyväset ovat peräisin ajalta ennen aurinkokuntaa. Seuraavaksi täytyy selvittää tarkemmin, mistä Hypatia voisi olla peräisin. Kaukana Neptunuksen takana kiertävien kivisten kohteiden koostumuksen tarkempi tuntemus voisi avata asiaa.

Mahdollisesti Hypatia tömähti Saharaan 28 miljoonaa vuotta sitten. Törmäys sulatti aavikon hiekan lasiksi, ja tuota kellertävää Libyan aavikkolasia kerätään alueelta yhä.

Mutta mutta. Tämä on vain yksi teoria. Mistä näitä tietää.
Tästä aiheesta lukaisin ensin: www.tiede.fi lehdestä.

Y2038 ongelma

Y2038 ongelma. Tämä "koodivirhe" tai ominaisuus yllättää seuraavaksi. Mutta kenet?

Juuri kun selvittiin Y2K ongelmasta (eli vuosien 1999 - 2000 vaihteesta), niin seuraava koputtaa jo ovella. 
Vuonna 2038 kaikki C -kieleen perustuvat ohjelmistot sekoavat numeeriseen ylivuotoon. 
Kuten Y2K'ta, tätä minä en ole enää selvittämässä. 

C-kielellä tai sen johdannaisilla (C++ ja C#) on kirjoitettu suurin osa käyttöjärjestelmien ytimistä ja suurin osa tietokantojen hallintaan tarkoitetuista ohjelmistoista. 

Itse ajattelin 1980 -luvulla, että on se 2000 vuosi niin kaukana, että ei siihen tarvitse varautua. 
Sieltä se kuitenkin tuli vastaan ja itse jouduin niitä paikkoja korjaamaan.

Tämän päivän koodarit toivottavasti osaavat varautua 20 vuoden tulevaisuuteen paremmin kuin minä 30 vuotta sitten.

Menestystä tulevaisuuden ennustamiseen.

Android Studio kehitystä



Jos oli aikanaan MSDN C/C++ Windows Studio kehitysympäristö massiivinen ja raskas niin ei siitä paljon häpeä Windows Phone 8+ kehitysalusta. Nyt sitten päätin kokeilla Android laitteiden ohjelmien kehitystä. Se on tunnetusti ja jostakin syystä Java ohjelmointia.

Sitä varten pitää ladata yli 700MB asennusmöhkäle Googlen palvelusta. Se asentaa Android Studion tietokoneelle. Sen jälkeen ladataan muut tarvittavat palikat dl.google.com palvelusta. Android Studio syö levytilaa asennettuna 2GB ja projektitiedostot päälle. Eikä asennusosiota voi edes valita. Se asentuu suoraan käyttäjän kotihakemistoon (home).

Tyypillinen ensimmäinen testi uudella ohjelmointikielellä on saada ohjelma tulostamaan laitteelle yksinkertainen teksti: Hello World! Sitä varten Studiossa on valmis esimerkki applikaatiosta. Se ladataan (jälleen) dl.google.compalvelusta ja yritetään kääntää se suoritettavaksi ohjelmaksi (Build). No eihän se tietenkään ensimmäisellä kerralla onnistunut. Puuttui sitä ja tätä kirjastoa ja palikoita. Niiden asennuksen jälkeen itse käännös meni läpi. Koodi näyttää virheettömältä ja ehkä toimivalta. En ole vielä pystynyt testaamaan siltä. Pitää ensin asentaa omalle Linux työkoneelle KVM virtuaalikone, jolla pystyy leikkimään vaikka puhelinta. Sillä en ajatellut ladata applikaatiota ensimmäisenä omalle puhelimelle.:-)

Mutta se alkuperäinen kirjoitelman syy: miksi näistä kehitysvälineistä tehdään niin hirvittävän raskaita ja resursseja syöviä möhkäleitä. Vähempikin riittäisi. Kuten esimerkiksi PHP/HTML5/CSS3 kehitys web-palvelimelle. Se ei vaadi kuin asianmukaisen editorin. Jos ei osaa koodata niin voi käyttää jotakin WysiWyg IDE työkalua, mutta nekin ovat tosi kevyitä käyttää.


Tämä Android SDK ottaa kaiken irti koneesta, eikä Build tapahtuman aikana juuri mitään voi tehdä kuin istua ja odotella. Toki käytössä voi olla useampi kone. Tässä kuva laitteen kuormituksesta SDK Buil yhteydessä.

PS. Android asennusohjelman esimerkki näyttää, että käytössä pitäisi olla vähintään 4- tai 6 -ytiminen 64-bit suoritin. Minulla on vain kaksi. Ehkä siinä on hitauden syy.


tiistai 13. joulukuuta 2016

MySQL tietokantojen varmistus PHP -koodilla


On aika suutarinkin rakentaa itselle omat kengät.
Tässä tapauksessa automaattinen varmistus tietyille SQL -tietokannoille.

Sitä tarkoitusta varten on maailma tulvillaan koodia, mutta niitä ei vain tule käytettyä tai ehkä ne ovat liian monimutkaisia. Pienten ja keskisuurten tietokantojen varmistamiseen löysin erään mielenkiintoisen PHP -koodin.

Tässä on pieni koodinpätkä varmistusten tekemiseen, joka käyttää backupmysql.class.php kirjastoa. Se taas löytyy otsikossa kerrotusta paikasta.

<?php
/*
 * http://coursesweb.net/php-mysql/simple-backup-mysql-database_s2
 *
 * - Using backupmysql class to create backup of all the tables in mysql database.
 * - Modify for Hotel database, JoH 30.11.2016
 *
 * cron: 0     1     *     *     *
 * wget -qO- -t 1 http://www.hotelli.fi/db/do_backup.php
 * file: date('d-m-Y'). '@'. date('h.i.s') .'.sql';
 *
 */

$host = '127.0.0.1';
$user = 'username';
$pwd = 'salasana';
 
// Set object of backupmysql class
include 'backupmysql.class.php';

// Perform the backup for all databases
makeBackup($host, $user, $pwd, 'hotelli_customers');
makeBackup($host, $user, $pwd, 'hotelli_staff');
makeBackup($host, $user, $pwd, 'hotelli_reservations');
makeBackup($host, $user, $pwd, 'hotelli_rooms');

// Do backup
function makeBackup($h, $u, $p, $db) {

    $lang ='en';        // Indice of the "lang_...json" file with texts
    $dir ='backup/';    // Folder to store the ZIP archive with SQL backup

    $bk = new backupmysql($lang, $dir);

    // Data for connecting to MySQL
    $conn_data = ['host' => $h,
                  'user' => $u,
                  'pass' => $p,
                  'dbname' => $db];
   
    $bk->setMysql($conn_data);  // Set connection
    $tables = $bk->getTables(); // Get array with all the tables in database

    // If no error
    if($bk->error === false) {
        // If tables, creates the SQL backup of all the tables
        // and saves it in ZIP archive (get succesful or error message)
        $bk_sql = (count($tables) > 0) ? $bk->saveBkZip($tables) : 'No tables in database';

        // Use BR when print out to browser
        echo $bk_sql . "<br />";
    }
        else echo $bk->error;

    // Kill or Close PDO object
    $bk = null;
  
    return;
}
?>

Siitä vaan varmistamaan!

torstai 3. marraskuuta 2016

Seurataan julkisen IP osoitteen vaihtumista



Tässä on melko lopullinen PHP koodi, joka seuraa IP -osoitteen vaihtumista julkisessa verkossa. Tämä koodi tallentaa aikaisemman IP -osoitteen ja vertaa sitä uuteen vastaavaan. Muutoksesta ilmoitetaan.

Asenna tämä scripti web -palvelimelle ja laita se Cron -taulukkoon,
niin saat joka aamu uuden raportin IP -osoitteesta tai sen vaihtumisesta.

<?php
// https://www.ipify.org/
// Check Public IP Address

define('TIMEZONE', 'Europe/Helsinki');
date_default_timezone_set(TIMEZONE);
$thisDate = date('d-m-Y H:i');

// Get current Public IP address
$n_ip = file_get_contents('https://api.ipify.org');

// Current IP address in file and last modified
$ip_file = 'ip_addr.txt';
$fileDate = date('d-m-Y H:i', filemtime($ip_file));

// Get IP address from file
$content = file_get_contents($ip_file);
$ip_array = explode("\n", $content);
$c_ip = strtok($ip_array[0], '@');

// Compare Public address and fileaddress
if(strcmp($n_ip, $c_ip) == 0) {
    // No change!
    echo "Public IP address has remained the same: " . $c_ip . "@ Last changed: " . $fileDate . "\n";
} else {
    // Write NEW IP address to file
    $content = $n_ip . "@ " . $thisDate . "\n";
    file_put_contents($ip_file, $content);
    echo "Public IP address has changed: <b>" . $n_ip . "</b>@ " . $thisDate . " Last changed: " . $fileDate . " \n";   
}

?>

Avain tietokoneeseen


Avain tietokoneeseen.

Onhan se ollut jo monessa palvelimessa mukana. Eli kone ei lähde käyntiin eikä sammu ilman avainta. Mutta entäpä täydellinen käynnistymisen ja tietomurtojen estävä avain? ORWL on sellainen. Jos sen yrittää ohittaa ilman omaa avainta, niin se tuhoaa tiedot tietokoneelta eikä rosvo saa käsiinsä kuin tyhjän koneen.

Siihen tietysti tarvitaan hieman älyä, salausta ja koodia. ORWL on avointa koodia. Niin koodia! Sillä sillä koodiakin siihen tosiaan tarvitaan, ei pelkkää fyysistä avainta. Tietysti kysymys kuuluu: onko tällaiseen suojaukseen tarvetta? Minusta tietyissä palvelimissa on.

-- oo -- 
 
ORWL basic specs include Intel Skylake M3 processor, USB-C & micro HDMI ports, 8GB memory, 120GB Solid State Drive, Bluetooth, Wifi and NFC technology. Currently it supports Ubuntu 16.04, Qubes OS and Windows 10 out-of-the-box.
All you need is a monitor, keyboard and mouse to get started.
ORWL is Open Source - ORWL is totally open source.
It means that the schematic and layout files, software, firmware,
everything is up for grab if anyone wants to make one themselves or make improvements.

Log Reportico Use Count



Tässä PHP koodi, jolla voidaa laskea ja kirjata lokiin Reportico käytäjien määrä.

<?php
/*
 * Remember to remove <?php ?> tags when include Reportico
 *
 */

define('TIMEZONE', 'Europe/Helsinki');
date_default_timezone_set(TIMEZONE);

$dbfile = 'reports_all.db';
$cur_ip = getIP();
$name = "Report name";
$created = date('d-m-Y H:i:s');

if (file_exists($dbfile)) {
    $data = seekLastLine($dbfile);
    $count = (int)strpbrk($data, "0123456789");
    $count = $count + 1;
    $out = sprintf("%04d", $count);
    $data = $out . " : " . $cur_ip . " : " . $name . " : " . $created . "\n";
    $fh = fopen($dbfile, "a+");
    fwrite($fh, $data);
}
else {
    $fh = fopen($dbfile, "w");
    $data = "1 : " . $cur_ip  . " : " . $name . " : " . $created . "\n";
    fwrite($fh, $data);
    fclose($fh);
}

function seekLastLine($f) {
    $f = escapeshellarg($f); // for the security concious
    $line = `tail -n 1 $f`;
    return $line;
}

function getIP() {
  if(isset($_SERVER['HTTP_X_FORWARDED_FOR'])) $ip = $_SERVER['HTTP_X_FORWARDED_FOR'];
  elseif(isset($_SERVER['REMOTE_ADDR'])) $ip = $_SERVER['REMOTE_ADDR'];
  else $ip = "0";
  return $ip;
}
?>

Facebook editorin toimimattomuus



Olenko minä ainut tällä planeetalla, jolla Facebook editori ei hyväksy tavallista Liitä - Liimaa - Askartele toimintoa? Eli Copy - Paste tai Kopioi - Liitä?

Nimittäin, yritän kopioida tekstiä jostakin toisesta dokumentista. Vaikka Word, Writer, Kate tai toiselta www -sivulta.  Poikkeuksetta käy niin, että kun liitän tekstin Facebook editoriin ja haluan Julkaista tai Tallentaa tekstin, niin Facebook editori menee sekaisin ja ilmoittaa, että julkaisu näyttää olevan tyhjä! Kirjoita jotakin!


Ja minähän kirjoitan ja haluan liittää sitaatin toisesta kirjoituksesta - omastani - ja taas sama juttu.

Hetken jo luulin, että vika oli muotoiluissa. Otin sitten käyttöön aivan tavalliset tekstieditorit: Nano ja Gedit sekä Windows puolella Notepad.
Jotka eivät lisää tekstiin ja tiedostoon mitään muotoiluja.

Kierrätin tekstin näiden editoriohjelmien kautta ja poistin kaikki muotoilut.

Sama juttu! Ei vaan toimi.

Olen kokeillut kaikkea: Hiirellä Copy ja Paste, näpäimistöllä Ctrl-C ja Ctrl-V sekä harvemmin tunnettu vanha konsti Ctrl-Ins ja Shift-Ins


Tietääkö kukaan Facebook moderaattori ratkaisua tähän ongelmaan?

Yksi tai kaksi, mitkä tulevat mieleeni, ovat nämä rivinvaihdot.
- next line ("\n") tarkoittaa Unix ja Linux koneissa rivin vaihtoa
- next line ja carriage return yhdessä ("\nr\cr\") ovat pelkästään Windowsille varattu muoto
- sitten on vielä merkistön koodaus. Voiko sillä olla vaikutusta.
Itse käytän UTF-8 Unicode muotoa

Mutta jos kopiointi tehdään sellaisen editorin kautta, joka ei tiettävästi lisää mitään muotoiluja sisältöönsä, niin miksi näin käy?