Sivut

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?








keskiviikko 6. heinäkuuta 2016

PHP: Tarkistetaan sähköposti IMAP postilaatikosta


Monessa työpöytäympäristössä (Desktop) on käytössä saapuvan sähköpostin tarkistamiseen tarkoitettu ilmoitus. Niin sanottu Mail Notify. Tämä toimii vaikka itse sähköpostiohjelma (Outlook tai Thunderbird) ei olisikaan käynnissä.

Ainakin Ubuntu, Debian ja openSUSE sisälsivät aikoinaan tämän ominaisuuden, mutta yllätys oli, että uudesta 64 -bittisestä Ubuntusta se puuttui. Tai ainakaan se ei toiminut toivotulla tavalla.

Silloin kun joku toiminto tietokoneesta puuttuu, niin minä yleensä koodaan sen itse. Niin siis tässäkin tapauksessa. Apuun tuli PHP -kieleen ympätty ominaisuus IMAP -postilaatikon käsittelyyn. Sen avulla pystyy kirjautumaan omaan postilaatikkoon ja tarkistamaan tilanteen: paljonko laatikossa on postia ja montako kirjettä on lukematta.

Kirjoitetaan siis PHP -ohjelma joka tarkistaa postilaatikon ja ilmoittaa saapuneesta postista käyttäjälle. Se vaatii tietysti, että PHP -kielen vaatimat palikat on asennettu tietokoneelle ja ohjelma voidaan suorittaa ajastetusti vaikkapa cron -ajastuksella (Linux).

Itse PHP -ohjelma on varsin yksinkertainen. Tässä siitä listaus, joka tarkistaa kaksi postilaatikkoa:


<?php

/*
 imap_open — Open an IMAP stream to a mailbox
  All names which start with { are remote names,
  and are in the form "{" remote_system_name [":" port] [flags] "}" [mailbox_name] where:
    remote_system_name - Internet domain name or bracketed IP address of server.
    port - optional TCP port number, default is the default port for that service
    flags - optional flags, see following table.
    mailbox_name - remote mailbox name, default is INBOX

 imap_status — Returns status information on a mailbox
 Valid flags are
    SA_MESSAGES - set $status->messages to the number of messages in the mailbox
    SA_RECENT     - set $status->recent to the number of recent messages in the mailbox
    SA_UNSEEN     - set $status->unseen to the number of unseen (new) messages in the mailbox
    SA_UIDNEXT     - set $status->uidnext to the next uid to be used in the mailbox
    SA_UIDVALIDITY - set $status->uidvalidity to a constant that changes when uids for the mailbox may no longer be valid
    SA_ALL - set all of the above

*/

# MyHost imap with ssl
$myhost="{myserver.org:993/imap/ssl/novalidate-cert}";

# Google with imap
$gmailhost="{imap.gmail.com:993/imap/ssl/novalidate-cert}INBOX";

$user="username@myhost.org";
$pass="********";

$gmailuser = "user.name@gmail.com";
$gmailpass = "********";

// In crontab All commands need to reference their location eg. /usr/bin $notify_cmd = "/home/user/bin/notify-send-user.sh -U user -i info 'Sinulle on postia!' ";

// Status file. Append and clear after a month, maybe joskus?
$file = "/home/user/bin/mail/mail_status.txt";
file_put_contents( $file, "\n--- ooo ---\n\n", FILE_APPEND );

date_default_timezone_set('Europe/Helsinki');
$t=time();
file_put_contents( $file, (date("d-m-Y H:i",$t))."\n", FILE_APPEND );

# ------ Myhost Mailbox -----

if ($mbox=imap_open( $host, $user, $pass ))
  {
    file_put_contents( $file, "Host Connected\n", FILE_APPEND );
  } else
  {
    file_put_contents( $file, "Host Connection FAIL!\n", FILE_APPEND );
    exit(1);
  }

$data_unread = 0;

$status = imap_status($mbox, "{myserver.org:993}INBOX", SA_ALL);
if ($status) {
  $msgs = $status->messages;
  $data_unread = $status->unseen;   
 
  $notify_msg = "'Host: $data_unread";    // Alkaa hipsulla
  file_put_contents( $file, "Datatuki\n"."-Messages: ".$msgs."\n-Unread  : " . $data_unread . "\n", FILE_APPEND );
 
} else {
  file_put_contents( $file, "Host imap_status failed: " . imap_last_error() . "\n", FILE_APPEND );
}

imap_close($mbox);

# ------- Google Gmail Mailbox -------------

if ($mbox=imap_open( $gmailhost, $gmailuser, $gmailpass ))
  {
    file_put_contents( $file, "Gmail Connected\n", FILE_APPEND );
  } else
  {
    file_put_contents( $file, "Gmail Connection FAIL!\n", FILE_APPEND );
    exit(1);
  }

$gmail_unread = 0;

$status = imap_status($mbox, "{imap.gmail.com:993}INBOX", SA_ALL);
if ($status) {
  $msgs = $status->messages;
  $gmail_unread = $status->unseen; 
  // Append messages
  $notify_msg .= " Gmail: $gmail_unread'";  // Loppuu hipsuun
  file_put_contents( $file, "Gmail\n"."-Messages: ".$msgs."\n-Unread  : " . $gmail_unread . "\n", FILE_APPEND );
 
} else {
  file_put_contents( $file, "Gmail imap_status failed: " . imap_last_error() . "\n", FILE_APPEND );
}

imap_close($mbox);


# ------ If there is any email ------

if( $data_unread != 0 || $gmail_unread != 0 ) {
  // Sinulle on jotakin postia!
  $notify_cmd .= $notify_msg; 
  exec($notify_cmd);
  exec($play_cmd);
  } else {
    file_put_contents( $file, "Nothing to do ...\n", FILE_APPEND );
  }

?>

Että silleen.
Tämä koodi ilmoittaa kun uutta postia on saapunut.


Vaihtuva IP -osoite ... taas

Pitkästä aikaa blogia kirjoittamassa.
Mennyt vuosi meni mökillä remonttia tehdessä, siten tuli muutto uuteen kotiin ja kas vain, en huomannutkaan, että blogi oli jäänyt kirjoittamatta.

Pitäisikö kirjoittaa kuten pysäköinninvalvojahenkilö minulle huomautti: pysähtymiskieltomerkin noudattamatta jättämisestä seuraamuksena huomautusmaksu.

Kirjoitan siitä, mihin viimeksi jäin, eli IP -osoitteen vaihtumisesta.

Uuden 3G/4G tekniikan aikakaudella ei millään saa omaa IP -osoitettaan pysymään vakiona, vaan se vaihtuu ainakin kerran viikossa. Vaikka reitittimen asetuksia kuinka muuttaisi.

Siksi kirjoitin omalle Ubuntu koneelle seuraavan scriptin, joka tarkistaa IP -osoitteen koneen käynnistyksessä ja ilmoittaa minulle, jos osoite on vaihtunut.

#!/bin/bash
#
# Vertaillaan julkista IP -osoitetta
#
# Current eli nykyinen IP-osoite. Kirjoita tai lue tiedostosta
cip='109.XXX.YYY.ZZZ'
# New eli uusi IP-osoite haetaan ipify -palvelimelta
nip=$(curl -s https://api.ipify.org)
# Verrataan osoitteita kekenään
if [ "$cip" != "$nip" ]; then
  # Jos oli muuttunut, niin ilmoitetaan siitä minulle
  notify-send "Public IP address has changed!"
  exit 1;
fi

Tällä menetelmällä ainakin huomaan koska asialle pitää tehdä jotakin.


keskiviikko 22. heinäkuuta 2015

Vaihtuva IP -osoite

Vaihtuuko oma IP -osoitteesi joka kerran kun avaat uuden internet yhteyden?
Se on joskus hankalaa, jos käytät sellaisia palveluita, joihin kirjautuminen tehdään IP -osoitteen perusteella tai käyttämäsi palvelu ei muista sinun tietojasi, koska osoitteesi on vaihtunut.

Siihen tarjoaa avun Unix/Linux järjestelmän cron -ohjelma. Jälleen Wikipediaa: "Cron on ajastuspalvelu Unix-pohjaisille käyttöjärjestelmille. Nimi pohjautuu kreikan sanaan ”chronos” (χρόνος), joka tarkoittaa aikaa. Yleensä ajastimia muokataan crontab -ohjelmalla, joka ohjaa crond -daemonia, joka ajaa komennot taustalla ja tarkistaa minuutin välein, jos komentoja pitää suorittaa ja suorittaa ne. Tehtävät suoritetaan, kun aika- ja päivämääritykset täsmäävät nykyhetkeen."

Pitääksesi oman IP -osoitteesi voimassa, tulee cron -ohjelman lähettää joku kutsu internetiin, jolla yhteys avataan säännöllisesti. Silloin operaattorin ns. "Leasing time" ei mene ikinä umpeen eikä IP -osoite vaihdu jokaisella kirjautumiskerralla.

Tähän riittää yksinkertainen PING -komento, joka kutsuu vaikka google.com palvelinta tietyin väliajoin. Ajastus riippuu oman operaattorin "Leasing time" asetuksista, mutta yleensä tunnin välein tapahtuva kysely riittää. Silloin tämä kysely ei aiheuta ylimääräistä ruuhkaa operaattorin palvelimella. Monella operaattorilla tämä ajastus on yleensä jopa neljä tuntia. Tietysti yön yli sammuksissa oleva kone saa aamulla taas uuden IP -osoitteen. Siksi tämä tietysti vaatii yhden sellaisen tietokoneen, joka on käynnissä 24/7 ja siinä on oikein asennettu cron -ohjelma, mukaanlukien esimerkiksi PING -palvelua käyttävä ajastus. Tähän yleensä vaaditaan Unix/Linux kone. Se vaan on yksinkertaisinta! En väitä etteikö Windowsilla voisi tehdä saman palvelun.

Muuta mukavaa mitä Unix/Linux cron -palvelulla voi tehdä.
Tässä openSUSE /etc/crontab sisältöä.

# Update all installed packages with their newer available versions.
15 5 * * * root zypper-out-html.sh > zypper/INFO/zypper-ps.html
20 5 * * * root php zypper/poll_zypperinfo.php >/dev/null 2>&1
Nämä kaksi komentoa suorittavat openSUSE palvelimen päivityksen automaattisesti joka päivä 15(20)min yli klo 5:00 aamuyöllä ja lähettävät tiedot toiminnasta minulle sähköpostiin.

# Dump local MySQL database (every day 02:00)
0 2 * * * root mysql_dump.sh > mysql/mysql_dump.log
Tämä komento tekee varmistuksen paikallisesta MySQL tietokannasta joka yö klo 2:00 ja kirjaa tapahtumat lokitiedostoon.

# Get temperature sensor readings, write to MySQL database and create graphs
*/2 * * * * root bin/digitemp_cron.sh > bin/digitemp_cron.log 2>&1
Tämä ohjelma lukee lämpötila-antureiden tiedot (siis lämpötilat) kahden minuutin välein (*/2), tallentaa luetut arvot tietokantaan ja piirtää grafiikan

# Read weather, update database (5min) update web-site (30min).
*/5 * * * * root rrdweather/rrdweather_cron_data.sh >/dev/null 2>&1
6,36 * * * * root php rrdweather/poll_weather.php >/dev/null
Nämä ohjelmat hakevat Weather.com (USA) palvelusta Mikkelin lentoaseman säätiedot (5min välein). Tiedot tallennetaan tietokantaan ja niistä piirretään grafiikka (6min ja 36min yli tasatunnin). Miksi USA? No siksi, että pienen ja sisukkaan Suomen palvelut ovat maksullisia (Foreca tai Ilmatieteenlaitos).

tiistai 30. kesäkuuta 2015

Faktoja Linnunradasta

Faktoja Linnunradan galaksista, meidän kodistamme.

1) Linnunrata on sauvaspiraaligalaksi, läpimitaltaan noin 100.000 valovuotta. Toisin kuin tavallinen spiraali, sen spiraalissa on "sauva" yli sen keskialueen ja kaksi tai useampi haara. Haaran, jota kutsutaan kiekoksi, "paksuus" on noin 1000 valovuotta.

2) Linnunrata ei pysy paikallaan vaan se pyörii jatkuvasti ja sen haarat pyörivät siinä samalla. Oma Aurinkokuntamme kiertää oman haaransa mukana keskimäärin nopeudella 828.000 km/h. Nopeudesta huolimatta Aurinkokunnalla kestää noin 230 miljoonaa vuotta kiertää Linnunradan ympäri.

3) Linnunrata sisältää yli 200 miljardia tähteä ja riittävästi pölyä ja kaasua toiseen mokomaan muutamaan miljardiin.

4) Aurinkokuntamme sijaitsee noin 30.000 valovuoden päässä Linnunradan keskustasta ja noin 20 valovuotta galaksin tason yläpuolella.

5) Yli puolet löydetyistä tähdistä ovat vanhempia kuin 4,5 miljardia vuotta vanha Aurinkomme.

6) Linnunradan yleisimmät tähdet ovat punaisia kääpiöitä, viileitä tähtiä jotka ovat noin kymmenesosa Auringon massasta.

7) Vielä 1920-luvulla tähtitieteilijät luulivat, että maailmankaikkeuden kaikki tähdet löytyvät Linnunradalta. Vasta Edwin Hubble löysi erikoisen tähden nimeltä Cepheid variable, jonka avulla hän pystyi mittamaan etäisyyksiä avaruudessa
ja huomasi, että aikaisemmin tähtisumuksi [Nebula] kutsutut kohteet olivatkin toisia galakseja.

8) Noin miljardin vuoden kuluttua Linnunrata törmää naapurigalaksiin [Andromeda]. Nämä kaksi galaksia lähestyvät toisiaan nopeudella 112 km/s. Silloin syntyy paljon uutta materiaa, josta taas syntyy uusia tähtiä.

Lähteet:
* Nola Taylor Redd, SPACE.com Contributor
* http://www.space.com/19915-milky-way-galaxy.html…
* http://www.space.com/15665-edwin-powell-hubble.html
* http://www.space.com/15590-andromeda-galaxy-m31.html

Kuva: Brad Goldpaint. Yöllinen näkymä Linnunradalle, Mount Shasta, California




sunnuntai 28. kesäkuuta 2015

IPCC ilmastopaneeli

Vaikka IPCC:n ilmastopaneelin tilastoista en pidäkään, koska ne ovat osin virheellisiä. Niin olisipa 1980 -luvulla ollut tiedossa nyt ilmastomalleissa käytettävät matemaattiset ja tilastolliset menetelmät:
1) Kalman -suodatin (siis Mr. Kalman kehittämä analysointimalli
2) Gosset (salanimi Student) T-testi.

Näillä pystytään analysoimaan ja ennustamaan muitakin fysikaalisia suureita kuin ilmaston käyttäytymistä. Esimerkiksi lämpötilojen mittaamiseen ja analysointiin erilaisissa tapauksissa. Ei olisi tarvinnut soveltaa koeajotuloksia virtausoppiin lämmönsiirtimien mitoittamisessa.

Nämä kaksi herraa ovat kehittäneet "yksinkertaiset" kaavat ja mallit eri mittaustulosten käsittelyyn. Esimerkiksi maapallon keskilämpötilan kehittymistä voidaan ennustaa ja analysoida näillä malleilla. Näillä malleilla olisi voinut ja myös voi laskea koeajotulosten perusteella lämpötilojen käyttäytymistä koeajopisteiden ulkopuolella ja vieläpä tarkasti.

1980-luvulla joutui soveltamaan virtausoppia ja laskemaan tietyillä kaavoilla lämmönsiirtimen ominaisuudet muissa pisteissä: virtaama + lämpöteho.

Mitä on ilmastonmuutos?


Maapallon lämpötila on noussut 1880 -luvun alusta tähän päivään noin 0,85℃ Eli sinä aikana kun joitakin järkeviä mittauksia on voitu tehdä. Silti lämpötilan mittauksissa on paljon epävarmuutta. Tuohon aikaan (siis 1880) ainoat mittaukset tehtiin rahtilaivoissa, jotka rahtasivat tavaraa ympäri maailman meriä. Silloin meriveden lämpötilan mittaus tehtiin heittämällä saavi laidan yli ja kun se nostettiin takaisin laivaan niin siitä mitattiin lämpötila, näin saatiin joku arvio meriveden lämpötilasta. Mutta!! Jos se laiva käytti puista saavia tai purjekankaista saavia, niin saatiin eri tulos. Elikkä: Jos IPCC:n ilmastopaneelin arviot ja ennustukset nojaavat 1880 -luvun mittauksiin, niin ne saattavat olla pahasti pielessä.

Toinen juttu kokonaan on CO2 määrä. Merivesi, jota maapallolla on noin 75% pinta-alasta, kehittää CO2 ja metaani kaasua enemmän kuin me ihmiset edes ymmärrämme laskea. Meret ja muut lätäköt tuottavat ilmaston CO2 pitoisuudesta yli 95% Mukaanlukien vielä suurempi ilmastomyrkky: Metaani. Metaanin määrä tietysti kasvaa sitä enemmän, mitä enemmän me varastoimme yhdyskuntajätettä kaatopaikoille. Se on taivaallisen totta. Mutta yhtä totta on se, että metaania vapautuu maailman meristä enemmän kuin CO2 kaasua.

Sitten on Hiili (C). Hiili ja muut Hiilen yhdisteet ovat meidän sivilisaatiomme huippu. On sanottu ja sanotaan se nyt vielä, että ihminen ja maapallo toimivat hiilen eri yhdisteiden voimalla. Ilman Hiilen eri yhdisteitä meitä ei olisi edes olemassa. On sanottu ja todistettu, että maapallon elämä perustuu hiilen eri yhdisteille. Jos toisella planeetalla olisi jotakin elämää, niin se ei todennäköisesti perustu Hiilen eri yhdisteisiin.- Vaan kokonaan muuhun kemiaan.

Joten, jos me poltamme voimalaitoksissa 9.000,000,000,000 tonnia hiiltä vuodessa, niin se riittää meille vielä 50 vuotta. Mutta kysymys kuuluu: mitä sitten? Joku yhtye lauloi "Uraani halkeaa ja tuottaa meille valkeaa" Mutta sekään ei ole ratkaisu. Uraanista saadaan kyllä energiaa, mutta sen jätökset ovat ongelma. Ei meille, mutta tuleville sukupolville, noin 30,000 vuoden päähän. Muistaako kukaan mikä on Uraanin Isotoopin 235 puoliintumisaika. Suurinpiirtein 4,48 miljardia vuotta.

Mutta se ratkaisu! Se olisi ei fissio vaan fuusio reaktori.
"Fuusioreaktorin sanotaan olevan turvallisempi kuin nykyisin käytössä olevat fissioon perustuvat ydinreaktorit. Ydinfuusio tuottaa suuria energiamääriä fuusioituvaa ainekiloa kohden, ja fuusioituva aine vety on maailmankaikkeuden yleisin alkuaine!" Mutta kuinka ihmiskunta oppii valjastamaan tämän sama voiman, jota koko maapallo käyttää: Aurinko!

Minusta ei ilman sotia. Koko meidän planeettamme on aina ja ikuisesti tapellut energian saamista vastaan. Sotaa tarvitaan, jotta saadaan uutta tekniikkaa ja energiaa käyttöön. Valitettavasti.

Seuraava III -maailmansota tullaan käymään puhtaasta vedestä. Ei energiasta, koska energia on jo loppunut ja ihmiset ovat oppineet kehittämään energiaa Auringosta. Mutta vesi loppuu!!

keskiviikko 22. huhtikuuta 2015

Finnish politics


I'm trying to explain Finnish politics to a person who has some sense. Talking on the phone to my friend.
Friend: So, what's going on in Finland?
Me: Well, nobody has a job and government has no money and they have to try and think of ways to save it. And they're starting to talk about cutting vacation pay. They'll let people take extra vacation if they don't take their vacation pay!
Friend: But wouldn't extra vacation cost them a lot money that little vacation pay?
Me: You don't understand the Finnish idea of vacation pay. First, they get their normal pay while they're on vacation. Then they get extra vacation pay on top of that.
Friend: So what? I think lots of places here give vacation bonus too.
Me: Ok, but this is not any bonus, it's a huge amount of money. Then they also get Coming-Back-From-Vacation pay.
Friend: You are making this up. Why do they get this Coming-Back-From-Vacation-Pay?
Me: Because they come back from vacation!
Friend: People get paid for going on vacation and then for coming back from it? Hey You, I think you're lying!
Me: And then there's Pekka's päivät
Friend: What's a Pekka's päivä?
Me: That's when you get a day off work for no reason. You don't have to be sick or anything. See, Finns get all these things PLUS sick days of PLUS 4-6 weeks of vacation - with pay for going and coming back - every year. And we still complain!
Friend: But no economy in the world can support that! How does anything ever get done?
Me: Ok, they're finding that out here. Now they're talking about making the school year shorter. If the lay the teachers off for two weeks, then they'll have enough money saved to give them their vacation.
Friend: So they think it's more important to pay someone to be on vacation than to pay them for doing work. Wouldn't it be more sensible to get rid of these ridiculous vacation payments? It seems to me that soon everyone's going to be doing a lot less work and still getting paid for it.
Me: You know that and I know that and I believe that they ALL know that. But they're still fighting over it.
Friend of mine: that's an amazing way to run things.

Ote Savon Sanomat kirjoituksesta.
Keskiviikko 17.3.1993 Sincerely Yours, Mary

Kaikella on aikansa

Milloin aika alkoi?

Aikaa on yritetty hallita ja määrittää tavalla tai toisella koko ihmiskunnan historian ajan. Vaikka tekniset apuvälineet ovat kehittyneet, on aika yhä aihe joka puhuttaa. Voiko aika kaareutua ja aiheuttaa vääristymiä omaan universumiimme?

Aika on filosofinen ongelma. Koska minä en ole filosofi on minun mahdotonta sanoa milloin aika alkoi tai milloin aika loppuu. Lisäksi eri ihmiset kokevat ajan eri tavalla. Esimerkkinä siitä on vaikka kynttilän valo joka on junan kyydissä. Valon näkeminen on suhteellista riippuen siitä missä kynttilää katsot ja millä nopeudella kynttilä liikkuu. Tätä kutsutaan Dopler ilmiöksi, joka on paremmin tunnettu äänimaailmasta. Kuulet suihkulentokoneen lähestyvän ja kuulet vain korkeat äänet, jotka heijastuvat lentokoneesta eteenpäin. Kun lentokone ohittaa sinut, kuulet vain matalat äänet, jotka loittonevat sinusta. Sama pätee myös valolle, joka on samanlaista sähkömagneettista säteilyä.

Aika ymmärretään jatkuvaksi tapahtumien ketjuksi, silloinkin kun mitään konkreettista ei tapahdu. Jokainen on huomannut tämän omissa toimissaan. Kivettyneet fossiilit, luolamaalaukset ja vanhat tietokoneet kertovat menneestä, mutta tulevaisuuteen meillä ei ole mitään näkymää. Kananmunasta voi tehdä munakkaan, mutta toisinpäin prosessia emme voi kääntää.

Me ihmiset olemme aina jakaneet ajan pienempiin yksiköihin. Muinaisten Egyptiläisten vuosi alkoi hieman ennen tulva-aikaa, kun Sirius tähti ensimmäisen kerran näkyi Itäisellä taivaalla, ennen Auringon nousua. Aikaa joka siitä kului Siriuksen seuraavaan näyttäytymiseen, kutsuttiin Egyptissä vuodeksi. Sirius tähti siis määräsi vuoden pituuden.

Muutama miljardia vuotta sitten muodostunut Kuu puolestaan ilmoitti kuukauden pituuden. Aika täysikuusta seuraavaan täysikuuhun oli tietenkin yksi kuukausi. Egyptiläisten kuukaudessa oli 30 päivää ja kuukausia mahtui yhteen vuoteen 12, joten vuodessa oli 360 päivää. Tästä tulikin ongelma. Sillä todellisuudessa aurinkovuosi kestää 365 päivää, 5 tuntia, 48 minuuttia ja 48 sekuntia. Vaikka vuoteen lisättiin viisi karkauspäivää, niin kalenteri vääristyi aina.

Julius Ceasar (100-44 eaa) pani sitten kalenterin remonttiin. Maailman johtajana ja ylipappina hänen tehtävänään oli huolehtia, että Jumalille uhrattiin oikeaan aikaan ja oikeana päivänä. Uuden Juliaanisen kalenterin mukaan vuoden pituus oli 365,25 päivää, mikä on hieman pidempi kuin aurinkovuosi, jossa siis on 365,2422 päivää. Siksi kevätpäiväntasaus siirtyi vähitellen myöhemmäksi.

Julius Caesar oli juuri nimennyt heinäkuun itsensä mukaan (eng July). Hänen adoptiopoikansa (Augustus) ei halunnut jäädä huonommaksi, joten hän antoi elokuulle oman nimensä (eng. August) ja lisäsi siihen vielä yhden päivän. Seurauksena oli, että ennestään lyhyeen helmikuuhun jäi vain 28 päivää. Karkausvuosina 29 päivää.

Vaikka Caesarin kalenteri olikin edistysaskel, niin ajanlaskumme jäi vielä epätarkaksi. Kalenterivuosi oli yhä 11 minuuttia ja 14 sekuntia liian pitkä. Joten vuosisatojen kuluessa minuutit ja sekunnit kasaantuivat ylimääräisiksi tunneiksi ja päiviksi. Niinpä 1500 -luvulla kalenteri oli kymmenen päivää edellä.

Paavi Gregorius XIII (1502-85) määräsi vuonna 1582 otettavaksi käyttöön uuden ajanlaskujärjestelmän, ns. Gregoriaanisen kalenterin. Uuden järjestelmän vuoksi vuonna 1582 siirryttiin lokakuun 4. pvä suoraan lokakuun 15. päivään. Gregoriaanisessa kalenterissa kahteen nollaan päättyvät vuosiluvut ovat karkausvuosia vain silloin, kun satojen vuosien luku on jaollinen neljällä. Järjestelmän mukaan esim. vuodet 1600 ja 2000 ovat karkausvuosia, kun taas vuodet 1700, 1800 ja 1900 eivät ole. Vuoden keskimääräiseksi pituudeksi saatiin siten 365,2425 päivää.

Siinä sopassa sitä nyt ollaan.

Edessä oli siis 2000 vuosituhat eli kahteen nollaan päättyvä vuosiluku, joka lisäksi oli karkausvuosi. Me 1900 -luvun ohjelmoijat emme edes kuvitelleet sellaista tapahtuvaksi. Silloin oli levytila ja muisti tiukalla ja kaikki tarvittava tehtiin tallennustilan ja muistin säästämiseksi. Silloin tallensimme vuosiluvut tietokantaan kahdella numerolla. Vuosi 85 tarkoitti 1985 ja vuosi 98 tarkoitti 1998. Vaan kuinka kävikään vuonna 2000. Silloin vuosiluvuksi kääntyi 00, joka oli huomattavasti pienempi kuin vuosiluku 99. Kaikki päivämäärään sidotut tapahtumat kääntyivät pe###'leen.

Aikaa jaetaan myös tunteihin, minuutteihin ja sekunteihin. Sitä, miten vuorokautta jaettiin 24 tuntiin ei tiedetä varmasti. Sen arvellaan liittyvän aurinkokelloihin. Vuorokauden 24 tunnissa on 60 minuuttia. Jako on peräisin Babyloniasta, jossa oli 5000 vuotta sitten käytössä lukuun 12 perustuva järjestelmä. Babylonialaiset jakoivat vuoden 12 kuukauteen, päivän 12 tuntiin ja ympyrän 360 asteeseen. Niin muuten tekevät vielä Amerikkalaisetkin. Nykyisin asteen merkkinä käytettävä pieni ympyrä [jota nyt en voi tähän piirtää], oli alunperin Aurinkoa tarkoittava kirjoitusmerkki. Aurinko on yhä läsnä kellotaulussa, koska kellossa 12 on ylimpänä samaan tapaan kuin Aurinko on taivaalla keskipäivän aikaan.

Minuutin ja sekunnin historia tunnetaan huomattavasti paremmin. Kreikkalainen Aleksandriassa toiminut tähtitieteilijä Klaudios Ptolemaios kirjoitti 100 -luvulla (.jaa) kirjan: Mathematike Syntaksis (Matematiikan kielioppi), joka on vieläkin antiikin tähtitieteen yleisteos. Ptolemaios käytti laskelmissaan Babylonialaisten ja Sumerialaisten laskujärjestelmää, jonka kantalukuna oli 60. Siksi Ptolemaios jakoi tunnin 60 osaan. Myöhemmin vasta huomaamme, että olisi saanut jäädä jakamatta.

Latinaksi tunnin kuudeskymmenesosaa kutsuttiin minuta primoksi ja sen kuudeskymmenesosaa minuta secundoksi. Myöhemmin minuutti ja sekunti vakiintuivat ajanmitoiksi. Siihen aikaan niillä ei ollut juurikaan käytännön merkitystä, sillä silloin aikaan suhtauduttiin rennosti. Juna lähti asemalta kun aseman kello löi 15:00 eikä jonkun rautatien kellon mukaan.

Huygensin heilurikello (1656) mullisti ajan mittaamisen. Sen virhe oli alle minuutin vuorokaudessa. 1800 -luvun lopussa kellot olivat jo niin tarkkoja, että virhemarginaali oli vähemmän kuin 1/100s

Nykyisin aikaa mitataan atomikelloilla. Vuonna 1967 otettiin käyttöön atomiaika, jonka yksikkö on atomisekunti. Silloin kansainvälinen konferenssi teki päätöksen, jonka mukaan sekunti on 9.192.631.770 Cesium 133 -isotoopin atomin energiatilan muutoksessa syntyvän säteilyn värähtelytaajuus.

Sittenkin meillä on vielä erilaisia määritelmiä vuoden pituudelle.
Aloitetaan meidän omasta vuodesta 2000

Kristillinen vuosi: 2000
Vuonna 525 apotti Dionysos Exigus määritteli Paavin toimeksiannosta Kristuksen syntymäajan. Kristillisessä ajanlaskussa käytetään myös negatiivisia vuosia. Luultavasti Jeesus syntyi ainakin neljä vuotta Dionysoksen määritelmää aikaisemmin, joten vuotta 2000 saatettin nykyisen ajanlaskun mukaan juhlia jälkijunassa.

Juutalainen vuosi 5760
Juutalainen ajanlasku alkaa maailman luomisesta 7. lokakuuta 3760 eaa. Juutalaisten kuukaudessa on joko 29 tai 30 päivää. Jotta kuukaudet eivät sekoita aurinkovuosia, tiettyihin vuosiin lisätään ylimääräisiä kuukausia. Vuosi 5760 - siis meidän vuosi 2000 - on juutalaisten karkausvuosi. Silloin vuodessa oli 13 kuukautta.

Islamilainen vuosi 1431
Islamilaisten ajanlaskun alku on 15. heinäkuuta 622, kun profeetta Muhammed pakeni Mekasta Medinaan. Vuosi 2000 oli siis Islamilaisen ajanlaskun mukaan 1431

Kiinalainen lohikäärme
Vanha Kiinalainen ajanlasku on yhä varsin yleinen. Se perustuu Kuun ja Auringon liikkeisiin. Siinä ei ole vuotta 0, koska vuodet noudattavat 600 vuoden sykliä. Vuodet ovat nimetty eläinten mukaan. 5.2.2000 alkava vuosi oli Lohikäärmeen vuosi.

Tämän tekstin kirjoittaminen alkoi 14.4.2001 ja sen on yhä pahasti kesken.
Kaikki vuosiluvut ja päivämäärät pitää tarkistaa, mutta ajatus lienee selvillä.

Aika on suhteellinen käsitys!