30. Aug 2022 |

Eestiblogid.eu uuendus – Eloquent ja e-mailid

Panin lõpuks uue blogi lisamise vormi tööle (lehe allosas). See ei tee muud, kui saadab mulle e-mailile uue blogi lisamise info.

Pisut oodatust kauem kulus aega sellele, et .env failis e-maili saatmise konfiguratsiooni paika saada.  Arenduse ajal kasutasin mailtrap.io teenust aga toodangus tahtsin ikka Zone enda SMTPd kasutada. Siin näidises oleva konfiguratsiooniga tekkis pildil olev viga. Põhjuseks, et mul oli Laravel 8 → Laravel 9 uuendamise käigus puudu jäänud mail.php failis rida 'verify_peer_name' => false (StackOverflow, Github).

Lisaks asendasin (peamiselt õppimise eesmärgil) Query Builder andmebaasipäringud Eloquent ORM päringutega, mis eeldatavasti võiksid olla kiiremad (eeldusel, et Eloquent oskab natuke nutikama päringu kokku panna kui ma ehk ise oskaks) ja paremini loetavad (kuigi nad on kohati päris õudsed). Näiteks selline näeb välja rubriigi päring.

PostsController show method query.

Täiendasin mudeleid seostega (et Eloquent neid kasutada oskaks).

Kui .NETis (koolis) arendus käis nii, et teed mudeli+seosed ja mudeli põhjal scaffoldid migrationi (me enamasti isegi ei süvenenud, mida üldse toodeti sinna), siis Laravelis teen mõlemad käsitsi ja nad üksteisest midagi ei tea. Migration on ainult andmebaasi muudatusteks (määrad baasis indeksid ja seosed). Model on Eloquenti päringute jaoks ja ta ei tea midagi sellest, mis baasis toimub.

Lisaks kirjutasin PostsSeeder‘i, mis Fakeri abil teeb kiiresti palju postitusi, et saaksin vaadata, kuidas rakendus 100k või miljoni postitusega töötab. Arenduse andmebaas on Dockeri konteinerina mul pisikeses Hetzneri CPX11 purgis (2 vCPU, 2GB RAM ja 40GB ketast).

Kellaaegadega tegelesin ka. Avastasin, et blogide RSS annab UTC ajad. Sellepärast võis jääda mulje, et Eestis on väga palju varahommikusi blogijaid aga tegelt oli lihtsalt kellaaeg vale. Need on vaja kuidagi Europe/Tallinn aegadeks saada. Lahendasin hetkel nii, et Carbon teeb need mallis korda aga ma sellega lõpuni rahul ei saa olla, sest mul on andmebaasis kuupäev ja kellaaeg eraldi. Natuke pean veel nuputama, kuidas seda veakindlalt lahendada.

21. Jul 2022 |

Eestiblogid.eu uuendus

Kirjutasin eestiblogid.eu lehe ümber Laraveli raamistikule. Kasutajaliidese jaoks hetkel kasutusel blade mallid (hea mugav kasutada). Väga suurt äriloogikat ei teinud aga vähemalt viewmodelid püüdsin ikka kasutusele võtta.

Reader (ehk see tükk, mis blogisid loeb) on Laravelist eraldi. Endiselt lihtsakoeline php rakendus (index.php, functions.php ja kaks mudelit) aga püüdsin valmisteeke kasutada seekord. Kasutusele said võetud laminas/laminas-feed, laminas/laminas-http, doctrine/dbal. DI implementeerimisest (php-di abil) kahjuks jõud üle ei käinud. Eesmärk olnuks andmebaasiühenduste kasutust viisakamaks muuta 🙂

Asub Zone serveris, minu muude asjade hulgas. Laraveli deployment sinna on väga mugav. Pmst repo fetch ja pull privaatses kaustas. Rakenduse kiirus on päris normaalne. Andmebaas on hetkel veel arendusserveris (pisike Hetzneri VPS) aga tõstan vasti Zonesse ringi.

Andmebaasi kolimisel Zone’sse läksid tähed katki.

Andmebaasi kolimisel tekkis selline viga (mida arenduskeskkonnas ei esinenud). Esialgu oli vaja kohendada Doctrine‘i ja lisada selle konfiguratsiooni charset (mille valik vajas natuke otsimist, kasutusele läks utf8mb4). Selle tulemusel sai andmebaasi kirjutamise esmapilgul korda. Seejärel läks katki Laravel. Põhjuseks see, et andmebaasitabelite collation ei olnud see, mida Laravel (enda konfuguratsioonis) kasutab. Tabeli collation’i muutmisel läks Laravel ka korda. Arendamise ajal (kuna arenduskeskkonna baasis vigu ei esinenud) ei osanud nendele asjadele tähelepanu pöörata.

2. Sep 2021 |

VPS price comparison – student in search of the cheapest

My main use of VPS is that i need to keep my dev MS SQL, PostgreSQL and MariaDB servers somewhere. The cheapest Hetzner VPS has done the job though for simple CRUD tasks. But bigger appliations (like WooCommerce) the Digital Ocean’s smallest droplet tends to become slow. Therefore I would not recommend anything below Hetzner’s CPX11 2 vCPU and 4GB of RAM.

The cheapest end of VPS

Minimum requirements: 1vCPU and 2GB memory. Looking only for Linux machines.

AWS, Google Cloud, Azure and Alibaba Cloud are much more expensive and more difficult to use for this simple purpose of just hosting few Docker containers with capped (end therefore predictable) pricing.

If you need 2 vCPU then starting price at the moment is shown in the table below.

Digital Ocean $15
Hetzner CPX11 € 4.75