Sivut

tiistai 16. marraskuuta 2021

Digiboksin pelastusta

 

Viikonloppuna (vko 45/46 2021) vaihdoin digiboksia, koska vanha alkoi sekoilemaan. Vanhassa boksissa oli kuitenkin tallenteita, jotka halusin vielä katsoa.
Tiesin, että jos vaihdan kiintolevyn vanhasta uuteen boksiin, niin levy alustetaan automaattisesti. Joten piti saada tallenteet siirrettyä muualle.
Onnistuin kopioimaan tallenteet tietokoneelle, mutta niiden siirtäminen uuteen boksiin ei enää onnistunut, vaikka boksit olivat samaa merkkiä ja mallia. Toiminto ei yksinkertaisesti ollut sallittu, eli kirjoittaminen suoraan boksin kiintolevylle ei onnistunut.

Sitten syttyi lamppu (päässä). Ajattelin, että kokeilen erästä juttua:
* muunnan digiboksin tallenteet (rec) tietokoneen ymmärtämään muotoon (mp4, mpeg, avi, tms.)
* sen jälkeen teen niistä DVD-levyn, jota voin katsella tavallisella DVD-soittimella tai siirtää ne tabletille ja katsoa sieltä käyttäen televisiota näyttönä (ChromeCast).

Ja tässä tulee se hauskin osuus, josta minä pidän erityisesti:
Linuxin perinteinen komento 𝐟𝐟𝐦𝐩𝐞𝐠 osasi tehdä muunnoksen. (ffmpeg = A complete and 𝐟𝐫𝐞𝐞 solution to record, convert and stream audio and video).

Ja mikä vielä parempaa:
Linux 𝐃𝐞𝐯𝐞𝐝𝐞 is a 𝐟𝐫𝐞𝐞 tool to create video CDs and DVDs that can be played in home DVD players. 
 
Mutta kuten edellä kirjoitin, voin yhtä hyvin siirtää MP4 tiedostot tabletille ja katsella ne sitä kautta. Koska ei niitä enää sen jälkeen tarvitse säilyttää. Käyttäen Suomen kielen vanhaa modusta agressiivi, voin kirjoittaa, että "(pl) vittume mitään siirtoa tarvitaan, poltetaan DVD".
 
Koska tallenteet ovat suurikokoisia tiedostoja, niiden muuntaminen yksitellen kestää. Kirjoitin siis pienen komentoriviohjelman (Bash), joka muuntaa kaikki hakemistossa olevat tallenteet toiseen muotoon ja tallentaa ne uuteen hakemistoon:
#!/𝚋𝚒𝚗/𝚋𝚊𝚜𝚑
𝚏𝚘𝚛 𝚒 𝚒𝚗 *.𝚛𝚎𝚌; 𝚍𝚘
𝚏𝚏𝚖𝚙𝚎𝚐 -𝚒 "$𝚒" 𝚖𝚙𝟺/"${𝚒/.𝚛𝚎𝚌/.𝚖𝚙𝟺}"
𝚍𝚘𝚗𝚎
 
Jätin tietokoneen tekemään töitä ja menin nukkumaan.
Nyt kun olen pystyssä (en välttämättä hereillä), niin tietokoneelta löytyvät kaikki vanhat tallenteet uudessa muodossa.
Koodaaminen on kivaa, varsinkin kun se ei maksa mitään!
Tykkää
Kommentti
Jaa


lauantai 23. lokakuuta 2021

Hash baby Hash

In this case, "hash" means messing up passwords. Sorry, but this is the English version. Nerds and half of the world do understand.

But how to hash passwords on a website? As a developer, I must know how to store passwords securely. For the following reasons:
1) Many web attacks aim at stealing your users’ passwords. If passwords are stolen, I must make sure the attacker cannot decrypt them.
2) Today’s strict privacy regulations require sensitive data, like passwords, to be protected. Failing to comply can result in fines.
3) Password security is one of the basic security features my clients expect from me.
4) If I know how to do it properly, my reputation will improve and my clients will trust me.

So, are legacy MD5 and SHA hashes secure? Short answer: No!

Back in the day, passwords were stored using an MD5 or SHA1 hash.
Like this: 
$𝘩𝘢𝘴𝘩 = 𝘮𝘥5($𝘱𝘢𝘴𝘴𝘸𝘰𝘳𝘥);

However, this technique is not safe enough. For two reasons:
1) MD5 and SHA algorithms 𝐚𝐫𝐞 𝐭𝐨𝐨 𝐰𝐞𝐚𝐤 for today’s computational power.
2) Simple, not-salted hashes are vulnerable to “𝐫𝐚𝐢𝐧𝐛𝐨𝐰 𝐭𝐚𝐛𝐥𝐞𝐬” and dictionary attacks.

If an attacker steals an MD5 or SHA hash, he or she can easily find out the original password too. In other words, these hashes are almost as insecure as plain text passwords.

The solution is to use a PHP 𝐬𝐞𝐜𝐮𝐫𝐞 𝐡𝐚𝐬𝐡𝐢𝐧𝐠 𝐟𝐮𝐧𝐜𝐭𝐢𝐨𝐧:
$𝘩𝘢𝘴𝘩 = 𝘱𝘢𝘴𝘴𝘸𝘰𝘳𝘥_𝘩𝘢𝘴𝘩($𝘱𝘢𝘴𝘴𝘸𝘰𝘳𝘥, 𝘗𝘈𝘚𝘚𝘞𝘖𝘙𝘋_𝘉𝘊𝘙𝘠𝘗𝘛);

The password_hash() function creates a secure hash of your password. The result hash from password_hash() is secure because:
1) It uses a 𝐬𝐭𝐫𝐨𝐧𝐠 𝐡𝐚𝐬𝐡𝐢𝐧𝐠 𝐚𝐥𝐠𝐨𝐫𝐢𝐭𝐡𝐦.
2) It adds a 𝐫𝐚𝐧𝐝𝐨𝐦 𝐬𝐚𝐥𝐭 to prevent rainbow tables and dictionary attacks.

Once you have the password hash, you can save it directly in the database.

To verify the password provided by a remote user, you need to use the password_verify() function.

Important:
You cannot just compare two different hashes to see if they match.
The reason is that password_hash() creates 𝐬𝐚𝐥𝐭𝐞𝐝 𝐡𝐚𝐬𝐡𝐞𝐬.

Salted hashes include a random string, named “salt”, as a protection against rainbow tables and dictionary attacks. Therefore, every hash will be different even if the source password is the same.

Note:
password_verify() only works with hashes created by password_hash(). You cannot use it to check a password against a MD5 or SHA hash.

There are ways you can still add hash protection, but I may write about them a second time.

You can read more in the PHP manual

lauantai 18. syyskuuta 2021

Koodarin kujanjuoksu

Kyllä on vanhan koodarin elämä tehty hankalaksi. 

Sen lisäksi, että pitää tietää tai tunnistaa millä selaimella käyttäjä ohjelmaa suorittaa, niin jokaisessa ohjelmointikielessä on omat kummallisuudet niinkin yksinkertaiseen asiaan kuin päivämäärien käsittelyyn. Lasketaan vaikka esimerkiksi kahden päivämäärän välinen päivien lukumäärä.

Näin se tehdään Bash komennoilla:

#!/bin/bash
CDATE=`date -d "Sep 30" +%j`
TODAY=`date +%j`
DAYS=$(($CDATE - $TODAY))
echo $DAYS # Näytetään lopputulos


Näin se toimii Python kielellä:

#!/usr/bin/env python3
from datetime import date
f_date = date(2021, 9, 18)
l_date = date(2021, 9, 30)
delta = l_date - f_date
print(delta.days)  # Näytetään lopputulos


Ja näin PHP kielellä:

<?php
$date1=date_create("2021-09-18");
$date2=date_create("2021-09-30");
$diff=date_diff($date1, $date2);
echo $diff->format("%R%a days");  // Näytetään lopputulos
?>

Ja kuuluisasta internetistä on turha hakea apua tai vastauksia. Se on täynnä täysin luokattomia kommentteja, jotka kuuluvat suurinpiirtein: "En tiedä toimiiko tämä, mutta kokeile"
Olen huomannut, että internetissä on sentään muutama sellainen taho, joiden kirjoittamat esimerkit ja oppaat jopa toimivat. Yksi niistä on IBM.

"Joskus muinoin" kun oppaat painettiin kirjan muotoon, niin julkaisijalla oli sentään jonkinlainen vastuu esimerkkien toiminnasta. Siksi olen laatinut ja kerännyt esimerkkejä aivan itse ja kirjoittanut niistä oman tietokannan.

Tätä opasta täydennän aina tarpeen mukaan.








Entiseen aikaan riitti se, että ensin valittiin ohjelmointikieli. Esimerkiksi M$ yhtiön tuotteista Visual Studio (Basic, C, C++, C#). Tämän jälkeen piti tietää mihin ympäristöön ohjelma asennetaan (M$ DOS, Windows 3.x, 95, 98, NT, XP). Sen jälkeen koodattiin niin vimmatusti ja muodostettiin lähdekoodista tietokoneella suorittava versio (EXE).
Oliko se sitten helpompaa, päätelkää itse!


maanantai 13. syyskuuta 2021

Päivitysten suloinen kirous

Ei, miksi näin. Aina! 

Näin kehittäjänä minua ottaa päähän (lue: h****aa) se, että joka kerta kun käyttämäni ohjelmiston versio päivittyy, niin uusi versio sotkee minun omat muokatut asetukset. 

Aatelkaapa ite: jos lähdette metsään kaatamaan puita sillä vanhalla tutuksi tulleella sahalla. Olet juuri saanut viilattua vanhan ketjun kuntoon, niin sitten tulee sahaan päivitys ja ketju vaihtuu. Lisäksi uudessa päivityksessä jokaiselle puulajille pitää käyttää erilaista ketjua. Ei muuta kuin kauppaan ostamaan uusia ketjuja! 

No, miksi päivittää jos kaikki toimi? Tämä vanha kysymys on aiheellinen jokaisessa päivityksessä. Mutta monessa järjestelmässä ja työkalussa päivitystä ei voi helposti estää, se tehdään automaattisesti. Tai sitten menetät joitakin ominaisuuksia, jotka eivät enää toimi vanhassa versiossa. 

Viimeksi tämä tapahtui Firefox selaimen uudessa 92.0 versiossa. Käytän etupäässä neljää eri selainta, olosuhteiden pakosta. Firefox on yksi niistä, sekä Linuxissa että Windowsissa.

sunnuntai 12. syyskuuta 2021

Agressiivi

Kielioppi haltuun!

AGRESSIIVI
Suomen kielen vanhojen modusten rinnalle on puhekielessä vakiintunut aggressiivi. Se taipuu persoonissa ja luvuissa ja kaikissa tempuksissa.

Aggressiivin tunnus on toistaiseksi hyvin vaikeasti mihinkään sanaluokkaan määriteltävissä oleva vittu. Vittu ei koskaan esiinny yksin, se edustaa siis eräänlaista pohjarakennetta tai osamorfeemia.
Vittuun agglutinoidaan aina jokin persoona- tai relatiivipronomini.

Jälkimmäiset esiintyvät poikkeuksetta paikallissijoissa.
Vittu + pronomini -kombinaatio muodostaa siis aggressiiville tunnusomaisen modusrakenteen.

PREESENSTAIVUTUS
sg vittumä jaksa mihinkään venäjän tenttiin lukea.
sg vittusä rupee mulle iniseen.
sg vittuse tullu ees paikalle, turhaan venasin.
pl vittume mitään pikkulapsia syödä, paskapuhetta.
pl vittute mihinkään raflaan tule, kunhan jauhatte.
pl vittune mistään mitään tiedä.

PERSOONATTOMIA
Vittusiellä mitään ilmaista viinaa ollu.
Vittutäällä mikään kesä ole.
Vittutäällä jaksa pitempään notkua.

Muissa tempuksissa Aggressiivi taipuu saman kaavan mukaan.

IMPERFEKTI
Vittumä jaksanu sitä kissaa pelastaa.

Huom! Lause "Vittuse tippu tohon avantoon" ei ole aggressiivi, koska lauseen imperfektimuotoinen predikaatti on indikatiivissa!  Kyseessä on siis tavallinen kirosanalla höystetty indikatiivilause, joka nimeäminen aggressiiviksi osoittaa sangen pitkälle kehittynyttä lingvistisen silmän verkkokalvon rappeumaa.

PERFEKTI
Vittumä oo jaksanu kahteen viikkoon tiskata.

PLUSKVAMPERFEKTI
Vittumä ollu jaksanu ees syödä päiväkausiin ennenku jouduin tiputukseen.

AGGRESSIIVI MODUKSENA
Koska aggressiivi on modus, se ei voi esiintyä samassa lauseessa eri modukseksi laskettavan predikaattimuodon kanssa.

Aggressiivi, vanhan kansan suussa ponsitapa, ilmaisee aktiivista närkästystä, kyllästymistä, turhautumista, hermostumista ja suoranaista suuttumusta. Tarkemman taustatunteen voi vastaanottaja päätellä kontekstista. 

Aggressiivin yhteydessä käytetään eräissä piireissä tehokeinona elekieltä, jonka luonne voi vaihdella sormimerkeistä aina täyskontaktimanööveriin.


PS.
Tämä juttu on kopioitu joskus ennen sähköpostiaikaa tulleesta telefaksiviestistä.
Tallennettu sähköiseen muotoon tietokoneelle, josta se nyt siivouksen yhteydessä löytyi.



tiistai 22. kesäkuuta 2021

Apuohjelmia

 

Kun Windows XP julkaistiin, niin silloin M$-yhtiö kertoi, että nyt ei enää tarvita ulkopuolisia apuohjelmia. Vaan toisin kävi.

Oheisessa kuvassa on pikku apulaisia. 
Vasemmalla yläosassa (gKrell) on tietokoneen kuormitusta kuvaava grafiikka ja alaosassa (Color Picker). Se on värikoodin poimintaan tarkoitettu työkalu.
Oikealla on tiedostoselain (Dolphin), johon voi itse muokata pikavalintoja useasti käytettyihin kansioihin ja merkitä ne värikoodilla.

Nyt joku taas kysyy: mihin näitä tarvitaan?
Minä vastaan: töiden tekemiseen, useaan kertaan tunnissa.

Kuormituksen grafiikasta näen syyllisen jos joku tuntuu hidastavan tietokonetta.
Värikoodin poimintaa tarvitsen, kun määritttelen esim. nettisivulle tarvittavan värin.
Tiedostoselainta käytän jatkuvasti ja kansioiden pikavalinnat helpottavat työtä!

Nämä apulaiset toimivat Ubuntu 20.04 (Desktop) Linux koneessa.



Koodin korjaamista

 

Viikolla 24/2021 meni ainakin kaksi päivää (ja hyvä ettei yötäkin) hukkaan.
Rakennan sellaista kotisivulla olevien tekstien ja kuvien ylläpito-ohjelmaa. Silloin käyttäjä voi muokata sivua ilman minun puuttumista asiaan. 

Ai miksikö? 

Ensiksi: minä en pidä näiden erilaisten WySiWyg -ohjelmien tuottamasta koodista. Koodi muistuttaa enemmän vanhaa risuaitaa. Jos sitä joutuu jälkeenpäin muokkaamaan, niin silloin ollaan suossa.
Sitäpaitsi WySiWyg-ohjelmat ovat varsin raskaita käyttää, ainakin loppukäyttäjälle.

Toiseksi: haluan pikkuhiljaa irtaantua näistä tiukalla aikataululla tehtävistä töistä ja keskittyä enemmän itseeni ja uuden oppimiseen. Esimerkiksi ukulelen soittamisen opetteluun 😃 Siksi siis rakennan tätä ohjelmaa. Ja nyt vasta päästään itse asiaan.

Tässä tosiaan meni pari päivää kun etsin vikaa koodista. Käytän kolmannen osapuolen moduuleita (DataTable ja TablEdit), joiden ympärille rakennan omaa koodia. Vanha viisaus sanoo, että kaikkea ei tarvitse tai kannata itse tehdä.
No, nämä moduulit eivät suostuneet toimimaan yhdessä. Etsin tietenkin vikaa omasta koodista, turhaan! TablEdit moduulista on olemassa kolme erilaista versiota. Yksi ei suostunut muokkaamaan tietoa textarea kentässä, toinen ei suostunut tallentamaan ($_POST) muokattua tietoa. Vasta kolmas suostui tekemään molempia!

Arvatkaa harmittiko kun huomasin, että vika ei ollutkaan minussa, vaan näissä eri moduuleiden versioissa. 

Indeksointi kuormittaa tietokonetta


Windows 10 koneessa on käynnissä indeksointi. M$ kertoo, että "Indeksointi tarkoittaa tiedostojen, sähköpostiviestien ja tietokoneesi muun sisällön tarkastelua ja niissä olevien tietojen, kuten sanojen ja metatietojen luettelointia. Kun teet tietokoneellasi haun indeksoinnin jälkeen, haku etsii tuloksia nopeammin indeksistä." Ja lupaa vielä, että "Täydellinen indeksi voi palauttaa vastauksia hakuihin, kuten "Näytä kaikki Coldplayn kappaleet" sekunnin murto-osassa. Haku kestäisi useita minuutteja ilman indeksiä." 

Ja Pah! sanon minä. Minkään käyttöjärjestelmän (Windows, Mac, Linux) indeksointi ei palauta tietoja sekunnin murto-osassa. Sen sijaan täydellinen indeksointi jopa hidastaa tietokoneen toimintaa, koska se toimii koko ajan taustalla ja käyttää tietokoneen resursseja (muistia, kiintolevyjä ja keskusyksikköä).

Indeksointi-ohjelmaa ei yleensä kannata kokonaan poistaa, sillä silloin lakkaavat toimimasta monet muut ohjelmat, varsinkin tiedostojen hallintaan tarkoitetut. Indeksoinnin voi pysäyttää, jolloin se ei ole käynnissä, eikä kuluta tietokoneen resursseja. Indeksoinnin pysäyttäminen riippuu järjestelmästä ja laitteesta, eikä sitä kannata yrittää kotona ;-\ 

PS. Montako kertaa olet käytännössä tarvinnut indeksointia? Eli olet hakenut tietoa, jotakin nimeä tai hakemistoa tietokoneen sisuksista. Jos tiedostosi ovat hajallaan erilaisissa hakemistoissa, joita ei ole järjestetty mitenkään loogisesti, niin silloin saatat tarvita kunnollista indeksointia, kun esimerkiksi haet "Valokuvat viime talven pilkkikisoista". Moni meistä kuitenkin selaa kansioita ilman, että käyttää indeksointia. Kannattaa siis pitää tiedostot omissa kansioissaan ja nimetä kansiot siten, että tiedot löytyvät helpommin selaamalla.

lauantai 15. toukokuuta 2021

Github on hyvä olla, kaiken varalta


On välillä terveellistä "kloonata" omat työnsä toiseen tietokoneeseen tai pilvipalveluun. Koska olen "kerettiläinen", eli poikkean "yleensä vallitsevista käsityksistä", niin minä varmaan ylireagoin näihin varmistuksiin. Nimittäin käytän molempia. 

Kotona työt ovat tallessa vähintään kahdessa eri tietokoneessa. Lisäksi tallennan kaiken tärkeän tiedon ja projektit Github pilvipalveluun. 

Tästä oli jälleen eilen (14.5.2021) hyvä esimerkki. Pystyin ensimmäisen kerran kyseisellä viikolla käyttämään tietokonetta, kivun sallimissa rajoissa. Siinä se juttu olikin. Koska kipua selvästi vielä oli, niin ajatukset eivät pysyneet kasassa ja sähläsin erään työn tiedostot selittämättömään muotoon. 

Onneksi oli tämä Github. Siellä oli tallessa edellinen versio koko projektista ja sain sieltä palautettua toimivan koodin. HuH !!

Niin, mikä on Github? "GitHub on vuonna 2008 avattu verkkosivusto, joka tarjoaa paikan Git-versionhallintaa käyttäville ohjelmakehitysprojekteille." 

Lisää suomenkielisessä Wikipediassa: https://fi.wikipedia.org/wiki/GitHub

Mitä tästä opimme? Joku varmistus on aina hyvä olemassa. Kaiken varalta, kuten kuntavaalit.

Märkää tietä Mikkelistä pohjoiseen

Vuonna 2014 juuri tähän aikaan (14.5.) oli hieman kosteampi keli, ainakin jossakin Mikkelin lähellä. Tuli mieleeni, että onkohan tuo varoituskolmio aivan oikeassa paikassa?



Ruuveja ja muttereita


En enää muistanut, että kuinka paljon inhoan lattapäisiä ruuveja. 

Tällä kertaa ei kuitenkaan löytynyt oikean kokoista risti tai torx ruuvia, niin piti käyttää vanhaa.
Tämän seurauksena nyt on vasemmassa kämmenessä arpia ja nirhamia. Tuli kuitenkin korjattava laite (hätä)kuntoon ja saa jäädä odottamaan "oikeiden" ruuvien tilausta. 

Tässä ruuvien maailmassa pätee varmaan sama laki kuin sähkölaitteissa. Muutetaan hieman lakia tai asetuksia, tehdään uusia ominaisuuksia, mitä hyvänsä, että saadaan uusia tuotteita ja versioita kaupaksi.

Ruuvien ja työkalujen valmistajat ovat varmaan kimpassa, jos ei aivan kartellissa (mikä olisi kiellettyä).