8. Oct 2021 |

PostgreSQL create db and user

I need it quite often during development (mainly school work) that I need to create new database together with new user that can only use this specific database. Here are three simple commands that do just that.

CREATE DATABASE robert_db;
CREATE USER robert WITH ENCRYPTED PASSWORD 'x1y2z3';
GRANT ALL PRIVILEGES ON DATABASE robert_db TO robert;

In development I usually keep db name and user name the same so that I have less variables to remember.

10. Sep 2021 |

Tee endale vanast arvutist server

Kui ma oleksin teadnud, et enda serveri tegemine on nii lihtne, siis ilmselt oleksin seda teinud juba varem.

Otsides kohta, kust enda arenduse asjadeks pisike VPS võtta, jõudsin selleni, et tegin (esialgu) enda vanast riiulis seisvast Dell XPS13 läpakast Linuxi serveri. 2011 mudel, i5-2467M, 4GB RAM, 512 SSD (dual masin boot, millest osa on Win7 all). See seisab ka serverina 99% ajast ilma koormuseta.

Nüüd mõtlen, et peaks võibolla läpaka Raspberry Pi 4B‘ga asendama (komplekt läheks kuskil 145 eurot). Kui kellegi on pakkuda, siis anna märku 🙂 Update: Hetkel tundub hea mõte, et ma sellega ei kiirustanud. ARM protsessoril ei tööta Docker normaalselt (viide) nii et kui üldse, siis pigem mõni Inteliga NUC või mini-PC (nt IBMi ThinkCentre).

Mul on kodus kõige tavalisem Elisa 50/10 internet ja meeldivaks üllatuseks on kõik public IP pordid lahti. Public IP’le päringuid tehes saan enda serverile ligi. Jah, see on aeglane 😀 Kui Zone annab VPSile 1 Gbit/s sisenev ja 100 Mbit/s väljuv liiklus, siis minu puhul on need hetkel vastavalt 20x ja 10x pisemad. Aga andmebaasipäringuteks piisab küll.

Kuna mul zone.ee’s on ka mõne domeenid registreeritud, siis tegin ühele neist A-kirje ja nii ei pea ma enda IP’d meeles pidama. Kuna IP ei ole staatiline, siis IP muutumisel, piisab A-kirje uuendamisest.

Mis mul seal on

Operatsioonisüsteemina on serveris Ubuntu Desktop 18.04.5 LTS (sest juba ammu installitud). Kõik asjad, mis serveris jooksevad on Dockeri konteinerina.

Esimene asi, mille tööle püüdsin saada oli see, et IP’le päringu tehes avaneks kõige tavalisem nginx (hääldatakse nagu “engine X”) Welcome Page. Piisas sellest, kui:

  • Docker on installitud (snap install docker või snap remove docker eemaldamiseks)
  • nginxi kontener käivitada docker run --name nginx_container --rm -d -p 8080:80 nginx (viide). –rm tähendab, et kui teed docker stop containerId, siis konteiner kustutatakse ära.
  • Ruuteris teha port forward sisse tuleva public IP port 80 mappida sisemises võrgus oleva seadme (ehk siis laptopi) IP porti 80. Minu puhul oli vaja mappimine teha Elisa antud Technicolori ruuteris (kuhu server-läpakas on kaabliga ühendatud). See on kõige lihtsam setup.

Seejärel installisin (kõik eraldi dockeri konteinerid) MariaDB, phpMyAdmin (selle MariaDB külge) ja Microsoft SQL Serveri.

Millest on abi

tracert that.ee – näed, kust seadmetest su liiklus läbi läheb ja kuhu ta jõuab.

Turvalisus

Selle koha peal ma olen kõige tuhmim hetkel ja mul ei ole head ettekujutust, missugused ohud mind varitsevad.

  • Ufw (Uncomplicated Firewall) panin peale
  • Sisse saab ainult SSHga, parooliga sisselogimise keerasin kinni

Kasulikud Dockeri käsud

Dockeriga toimetamine tahab super useri õiguseid. Ehk siis sudo su.

sudo snap install docker – installib Dockeri
sudo snap remove docker – eemaldab Dockeri
sudo docker ps -a – näitab kõiki konteinereid ja nende infot
sudo docker start <containerId> – käivitab konteineri
sudo docker stop <containerId> – peatab konteineri
sudo docker rm <containerId> – kustutab konteineri

sudo docker image list – näitab arvutis olevate image’te nimekirja
sudo docker image rm <imageId> – kustutab image

Kui mingi asjaga tekib raskuseid, siis Google otsing ja Digital Oceani juhendid aitavad enamasti alati.

9. Sep 2021 |

IDEA shortcuts

ctrl+shift+F10 – execute current file
ctrl + alt + M – extracts code to method
ctrl + alt + V – introduce variable
ctrl + B – move into method and back
alt+F7 – who is using variable

Debugger F8 – step over
Debugger F9 – resume program

Useful

Breakpoint → add condition

6. Sep 2021 |

URL shortener (free) using only PHP8 and SQLite3

I wrote a small, easy to deploy URL shortener. As it is written in PHP and uses SQLite3 as a data storage then no installation is needed. Just drag and drop the files through FTP to your host, configure the .htaccess file and you are ready to go.

Files are available on github – github.com/robineero/php-url-shortener. There is also database already prepared and SQL script available. Feel free to modify everything according to your needs.

2. Sep 2021 |

VPS price comparison – student in search of the cheapest

Need to keep my dev MS SQL, PostgreSQL and MariaDB servers somewhere. The cheapest Hetzner VPS has done the job.

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

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

22. Aug 2021 |

Tervisesport ja Brasiilia jiu-jitsu

TL;DR: Tulge kõik trenni 🙂 KRVA/Brazilian Top Team (Kristiines, kus minagi käin) või Estum jiu-jitsu (Tondil). Liituge algajate grupiga ja midagi kaotada ei ole.

Kuna ma veedan terved päevad arvutiga töötades, siis tundsin, et mingit liikumist on kehale juurde vaja. Praegu olen jäänud pidama Brasiilia jiu-jitsu juures (tulge trenni!).

Brazilian Top Team Estonia treeningutega saab liituda kogu aeg ja grupid on avatud kõikidele tasemetele alates päris algajatest. Vaata ajakava kodulehel. Päris algajad on BASIC COURSE (gi’d ei ole) ja natuke edasijõudnud on BEGINNERS & FUNDAMENTALS (gi seljas).

Vaade Instagrami hashtag’ist #bttestonia

Esimene kord alustasin täpselt aasta tagasi (2020 augusti lõpus 3D treeningus) aga see jäi kooli ja koroona tõttu katki. Nüüd suve alguses (juuni 2021) alustasin uuesti KRVAs (mis on mu elukoha lähedal). Ala meeldib ja sobib mulle järgmistel põhjustel:

  • Vigastuste oht on üsna väike. Enamus tegevust toimub matil pikali olles (seega kuskilt pahasti kukkuda ei saa), lööke ei ole ja heiteid ei ole.
  • “Massaaž” ja “venitused” ehk siis keegi sisuliselt masseerib oma õla, puusaga, põlvega, kannaga, rindgerega, randmega vms kogu keha ja trenni käigus saab ka keha ilusti lahti venitatud 😀 Kontoritöötajale ideaalne.
  • Trenn on lõbus, saab tugevamaks ja paremasse vormi.

Minu jaoks on see bjj treening tervisesport, mitte näiteks võistlussport. See on miski, millega pean arvestama nii enda arengut hinnates kui ka trennis käitudes. Et ei võrdleks enda arengut mõne noore competitive fighter’iga (võib mõjuda demoraliseerivalt, kui areng ei ole sama kiire) või ei läheks nende tempoga/koormusega kaasa (et vältida vigastusi).

Mida pean meeles pidama

Kuula keha

Kuna ma olen juba vanem inimene (~35), siis pean keha kuulama ja ei saa päris noortega sama hullult rapsida. Kui saan vigastada, siis see paraneks ilmselt kauem. Samuti võtab (arvatavasti) kauem treeningute vaheline taastumine – eriti, kui on mõni raskem tund.

Kuigi matil saaks olla rohkem kui 2x nädalas ning iga kord oleks võimalik pingutada ka kõvasti rohkem, siis pean endale ise ütlema, et peaksin piiri. Taastumise aeg võib olla vabalt pikem ja trennipäevade vahel ei pea veel ise avatud matil iga hinna eest peale tegema.

Ühekülgne sport

“Ühekülge sport” on bit ajast, kui rulaga sõitsin ja põlv pidevalt valutas. Siis arst ütles, et see on “ühekülgne sport”.

Tagantjärgi see tundub loogiline ja püüan nüüd ka bjj-le midagi “üldisemat” juurde teha. Mingisugune ÜKT (üldkehaline treening) oleks tore aga kuna Kristiines ma ei midagi sellist leidnud nagu Tallinna Spordihalli ÜKTd, siis olen viimasel ajal pühapäeviti ühe üldkehalist liikuvust arendava rühmatrenni nädalas veel juurde lisanud. Natuke saab jõudu, tasakaalu ja üldist lihastoonust.

Brazilian Top Team Estonia treeningutega saab liituda kogu aeg ja grupid on avatud kõikidele tasemetele alates päris algajatest. Vaata ajakava kodulehel ja ilmu lihtsalt kohale.

Sügiseks on algkursustele registreerumine juba avatud. Arvan, et tuleb see 3 kuu pakett võtta ja ega siit enam pääsu ei ole. Treener rääkis viimases trennis, et varsti hakkame gi‘ga treenima, nii et ees on muutuste aega ja tuleb see ka endale hankida.

Kuidas see spordiala välja näeb

Kui gi on seljas, siis Brasiilia jiu-jitsu võib trennis välja näha umbes selline lõbus müramine.

Naiste roll ilma gi-ta võib olla näiteks selline. Gezary Matuda on BJJ blackbelt, 5x maailmameister.

Kui tahad veel rohkem vaadata, siis näiteks Youtube’i kanalid Pedigo Submission Fighting, Polaris Professional Jiu Jitsu Invitational, FloGrappling, Eddie Bravo 10th Planet Jiu-Jitsu on lahedad.

26. Jul 2021 |

How to declare jQuery variables

var $allParas = $("p"); – When a variable starts with a $ sign, like in the following line of code, it’s a convention that developers use to indicate when a variable is storing a jQuery collection. Which means that you don’t have to do it, but you can if you’d like.

Many developers like to prefix the names of variables that store jQuery collection objects with a $, because it makes it obvious that they can call jQuery methods on them. It’s particularly useful if your code has a mix of variables that store jQuery collections and variables that store DOM elements.

Also acceptable to use var pic = $("#picture"); variable which stores a jQuery collection object. That collection does indeed contain a reference to the selected DOM element object, but it also contains many other properties and methods.

Source: Khan Academy