Töpökääpiötypäkkö
Voiko linnulla olla vieläkin hassumpi nimi?
Ei toki kuulu meidän lajistoomme. Eikä nimi varmaan lintuakaan pahenna.
Töpökääpiötypäkkö
Voiko linnulla olla vieläkin hassumpi nimi?
Ei toki kuulu meidän lajistoomme. Eikä nimi varmaan lintuakaan pahenna.
Maailman väkiluku vuonna 2022
Yhdistyneiden kansakuntien arvion mukaan se on 7,942 miljardia. Nykytietämyksen mukaan (15.11.2022) se on jo yli 8 miljardia.
Vaan mistä näitä kukaan tietää?
Maailmassa on paljon sellaisia alueita, missä ei tarkkaa väkilukua tiedä kukaan. Esimerkiksi Yhdysvalloissa ei ole pakko rekisteröityä (saada henkilötunnusta) kuin halutessaan äänestämään, hankkimalla vakuutuksen tai pankkitilin.
Toisaalta synkimmässä Afrikassa lienee alueita, joiden väestön määrää ei voi kuin arvailla.
Mikä on ero aloittelijan, keskitason ja kehittyneen ohjelmoijan välillä? Sen voi kutistaa kahteen yksinkertaiseen seikkaan:
1) Millaisia ongelmia ratkaistaan
a) Aloittelija etsii pilkkuvirheitä, mikä olikaan sort metodin nimi?
b) Keskitason tekijä osaa korjata bugeja, miettiä tietorakenteita, ja rakentaa yksinkertaisia mutta toimivia ratkaisuja.
c) Kehittynyt ohjelmoija hallitsee ongelman osaamisen, omistaa kehittyneen käsityksen parhaista toimintatavoista, ja tietää missä sudenkuopat ovat. Ongelma ei enää ole, että voiko jotain ratkaista vaan mikä on paras tapa ratkaista se.
2) Miten ne ratkaistaan
a) Aloittelijalla on hyvin rajoittunut käsitys eroista ratkaisujen välillä ja yksi parhaita tapoja oppia on antaa hänelle ongelma, johon hänen on itse etsittävä ratkaisu ja sen jälkeen käydä läpi "code review" kokeneemman ohjelmoijan opastuksella.
b) Keskitasolla ohjelmoija on jo oppinut paljon hyviä toimintatapoja, hän ymmärtää versionhallinnan ja testaamisen tärkeyden, ja aktiivisesti etsii parempia ratkaisuja.
c) Kehittyneellä tasolla se mikä vie paljon aikaa keskitasolla on suhteellisen itsestään selvää ja mutkatonta.
Sitten on tietysti vielä yksi ylempi taso, tekniikan ihmelapsia, jotka eivät enää ratkaise ongelmia vaan ovat yhtä taon kanssa.
Lähde: Quora 14.2.2022
Täällä satoi vettä-räntää-lunta viikonloppuna (12. - 13.2.)
Piti siis keksiä tekemistä sisätiloissa. Ei tarvinnut kovin pitkään miettiä. Rakentelin omille sivuilleni sellaisen ajastimen, joka näyttää sivun uudelleen latautumisen ajan (Refresh). Koodatessa käytin tuttua Kopioi-Liitä menetelmää, eli var****n eikun lainasin koodia internetistä ja tein siihen omat muutokseni.
Kuva 1) Ajastimen JavaScript koodi
Kuva 2) Lopputulos sivulla (Waiting data)
Miksi sitten JavaScript? Siksi, että ajastimen pitää toimia käyttäjän koneella selaimessa.
Akut kannattaa pitää virkeänä, koska uutisten mukaan näistä kohta maksetaan.
Näitä ei voi käyttää vakoiluun, paitsi ehkä tuota vanhaa Huawei mallia. Tuskin sitäkään.
Kaikki ovat toimintakuntoisia. Testasin laittamalla sisälle SIM-kortin ja soitin puhelun.
Vasemmalta: Nokia C2, Huawei Y-560 ja 2 x Nokia 3510i
Ei niin kovin kiva animaatio.
All Known Asteroids in the Solar System (1999-2018), eli kaikki tunnettut (löydetyt) asteroidit omassa aurinkokunnassamme vuosina 1999-2018. Ja koko ajan löydetään lisää.
Katsokoon ken uskaltaa. (Copied from NASA)
Joku on saattanut kuulla Arecibon observatoriosta. (Arecibo Observatory). Se sijaitsee Puerto Ricossa, Karibialla. Siellä on toistaiseksi suurin yhtenäinen teleskooppiantenni (lautanen) . Tähän ei nyt lasketa mukaan näitä teleskooppiverkkoja, joita muodostetaan ympäri maapalloa olevista pienemmistä teleskoopeista. Arecibon lautasen halkaisija on 302m. Kun se pläjäytetääan tämän minun asuntoni päälle, niin kuvasta näkyy millaisen alan se peittää Leppävirran kirkonkylän raitista. Siinä jäävät kirkko, tori ja marketit lautasen alle.
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
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:
Näin se toimii Python kielellä:
Ja näin PHP kielellä:
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!
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.