15. Dec 2020 |

NETSDK1005 – update dotnet aspnet-codegenerator

If you are getting this error NETSDK1005 when trying to scaffold the webpages that says “Assets file [..] doesn’t have a target for ‘net50′” then please check if you have updated dotnet aspnet-codegenerator. Documentation is behind this link.

I got stuck to this for some time before figuring it out. I had updated dotnet SDK and runtime but not aspnet-codegenerator (which I was not aware of).

Though, now I am running into another issue – “A file matching the name Create.cshtml was not found” 🙂 I have not yet figured out any solutions. But I see people running into it quite everywhere.

Update: I discussed it with the teacher and TAs and got to the conclusion that this is some kind on Linux specific aspnet-codegenerator issue. As it is used mainly for intoductory/demo purposes at this point then I simply proceed without demo content as there is no actual need for this.

Few useful commands for myself as a footnote:

dotnet --info

dotnet tool list -g (List your dotnet tools, useful)

Updates
dotnet tool update --global dotnet-ef (EF update to the latest, link)
dotnet tool update -g dotnet-aspnet-codegenerator (Update codegenerator, link)

5. Dec 2020 |

C# – cannot resolve symbol ‘UseIdentityColumns’

Getting build errors in DAL after InitialMigrate due to missing nuget package.

If you get such an error from Rider after initial migration dotnet ef migrations add InitialMigration --project DAL --startup-project WebApp that cannot resolve symbol ‘UseIdentityColumns’ then please check that you have nuget package Microsoft.EntityFrameworkCore.SqlServer v5.0.0 installed in DAL (data access layer) class library. I had it missing and could not figure out for some time and Stack Overflow did not have any threads available for it at this point.

I use C# 9, dotnet 5.0 and Rider EAP 2020.3 at the moment. If you use any of the earlier versions of dotnet or C# then please pay attention to getting the correct version of the package.

28. Nov 2020 |

TĂ€helepanek – tahvel

Kuna Echo360 loengute jĂ€relvaatamine on ĂŒsna… nagu ta on, siis ma ripin kĂ”ik videod (mis on omaette vĂ€ike tööke*) ja panen endale Youtube’i, kus kiiruse kontroll, timestamping, kĂ”igis seadmetes töötamine jne on palju parem.

Aga sellel on ĂŒks nĂ”rk koht – kui Ă”ppejĂ”ud kasutab tahvlit 🙂 Sellisel juhul ma pean rippima 2 videot ja vaatamisel kuidagi navigeerima nende vahel.

Aga ma saan aru, et mingit head tehnilist lahendust ei ole hetkel olemas, kuidas arvutisse asju “tahvliliku kogemusega” saaks joonistada. Ago joonistab hiirega. Vahepeal Excalidraw‘s, enamasti Paintis, vahepeal Microsoft Whiteboardis. PĂ”himĂ”tteliselt graafikalauaga see isegi toimiks aga graafika laua kasutamine (nii et see mugav tunduks) vĂ”tab pĂ€ris kaua aega ja eeldada, et kĂ”ik Ă”ppejĂ”ud ennast klassis graafikalauaga hĂ€sti tunneks on ebamĂ”istlik oodata. Mul endalgi vedeleb pĂ”himĂ”tteliselt kasutamata Wacom Intuos kapi otsas ja ei leia head kasutust.

Jalutamas kÀisin, siis kuulasin Stack Overflow Podcasti, kus rÀÀgiti IT-haridusest. Oli huvitav ja vast sobib siia ka.

Nt see koht, kus rÀÀgiti, et nr 1 oskus on AWSi hĂ€sti tunda, mis on “the new cool programming language“.

*Kuna TalTechi Echo360 seadistus hetkel annab vĂ€lja heliriba ja 2 (ilma helita) videoriba, siis tuleb need ise kokku kleepida pĂ€rast brauseri Network tab’i kaudu allalaadimist. Ametlikku allalaadimise vĂ”imalust ei ole enamasti sisse lĂŒlitatud. Vanemate videote (nt 2018) seadistuses on heliriba pandud videote kĂŒlge.

21. Nov 2020 |

Let the Spotify play your favourite songs by 30 seconds

Inspired by this article and the economic situation for musicians I wrote this little script. This lets Spotify to play your favourite artists on rotation and automatically presses “next” after every 33 (+ littlebit of random) seconds. 30 seconds is the minimum amount of time a song must be listened to before Spotify registers a single “play”.

Loading the song also takes little bit of time so you can not maximize the play count by making the loop take exactly 30 seconds long.

function getRandomInt(min, max) {
    min = Math.ceil(min);
    max = Math.floor(max);
    return Math.floor(Math.random() * (max - min) + min);
}

function doSomething() {
    var button = document.querySelector('[aria-label="Next"]');
    button.click();
}

(function loop() {
    var rand = getRandomInt(33000, 37000);
    console.log(rand);
    setTimeout(function() {
        doSomething();
        loop();
    }, rand);
}());

If you are using Spotify in your browser the press ctrl+shift+k or just F12, open console tab, paste this code there and press enter. This code does nothing but pressing the button with title attribute “Next” after every 33-37 seconds (random between these times).

Example of how it works in browser.

It is one option to support your favourite artists 🙂

5. Nov 2020 |

Kui kaua see aega vÔtab

Mind natukene rĂ”hub see mÀÀramatus, et ma ei tea, kui kaua mingi asi aega vĂ”tab. NĂ€iteks hetkel on 2 ainet – algoritmid ja C#. MĂ”lemad meeldivad aga kui mĂ”lemal on tĂ€htajad lĂ€henemas, siis ma ei oska hinnata, kui kaua mul töö tegemiseks aega lĂ€heb. Ja see skaala on ĂŒsna raju selles mĂ”ttes, et ma ei tea, kas lĂ€heb 2 pĂ€eva mingi algoritmi harutamiseks vĂ”i lĂ€heb 2 tundi 🙂

C# semestritöö on pÔhimÔtteliselt selline, et kogu aeg on vÔimalik ka ainult sellele Àra kulutada. Ja samas ei tea, kas puruneb töö kÀigus Git, mida on vaja remontima hakata vÔi laguneb Rider Àra vms. MÀÀramatust on pÀris palju, millest siis omakorda tekib hirm ja Àrevus.

21. Oct 2020 |

Python OOP – objektorienteeritud programmeerimine

Kuna ma ise sellega olin aasta tagasi ĂŒsna hĂ€das, sest pea lihtsalt ei vĂ”tnud seda abstraktsiooni nii lennult, siis laia pintsliga kirjutasin siia (vĂ”imete piires) natuke selgitustega töötavat objektorienteeritud Pythoni koodi:

github.com/robineero/my-python-jam/tree/master/oop-jam

MÔni objekt, mÔni meetod ja natuke funktsionaalsust. Ehk on kellelegi veel abiks, kes aru ei saa, kuidas objektid töötavad. See vÔib sisaldada vigu igal pool aga noh, see ongi jam.

17. Oct 2020 |

3. semester – teise kuu keskel

Sorry, et ma ei ole jĂ”udnud Ă”ppimisest kirjutada. See semester on ĂŒsna kiire olnud. Aga jĂ€rgemööda nĂŒĂŒd pĂŒĂŒan natuke valgustada, mis koolis toimub 🙂

Veenduge

Aina enam pean endale meelde tuletama, et kui millegi uue Ă”ppimisel on  tunne, et “ma ei oska seda seda ĂŒldse” vĂ”i  “ma ei saa mitte midagi aru”, siis see ongi Ă”ige koht, kus olla ja kust alustada. Ja end rahustama, et see ei ole maailma lĂ”pp, kui mingit asja isegi esimese korraga tehtud ei saa, sest Ă”ppeprotsess ongi iga kord erinev ja individuaalne.

Lorentsi “sĂŒsteemide selitamine” hulgateooriast on siin ka abiks mĂ”istmisel, kuidas teadmine tekib.

Kui miski huvitab

Olen mÀrganud, et kui mind miski huvitab, siis ma vÔin seda teha vÀsimatult tundide viisi. Olgu selleks algoritmide lahendamine, veebitehnoloogia vÔi isegi C#. VÔi EDRide joonistamine. VÔi giti remontimine. VÔin ennast tÀiesti Àra unustada neid nokitsedes.

Aga kui peab tegema midagi, mis mind ĂŒldse ei huvita – nĂ€iteks see Ă”nnetu arvutigraafika valikaine – siis peab ennast kĂ”vasti sundima.

Andmebaasid

Seni ĂŒsna kasulik aine. Eriti kombinatsioonis Lorentsi hulgateooriaga. Aga ma ei saa aru, miks Ă”ppejĂ”ud Priit Raspel ei kasuta praktikumides ja loengutes enda soovitatud Vertabelot, mis teeb seose jooned automaatselt sirged ja laseb kasutada korduvaid olemite nimesid (kuigi annab sellekohase veateate). Nii ta ei peaks tegelema viltuste joontega ja sama sĂ”na erinevate versioonide vĂ€ljamĂ”tlemisega (nt isik, isic, isikk, izik, isssikkkk jne), kui ta ERDi nĂ€iteid joonistab. Aga noh, 7. nĂ€dala lĂ”puks olen sellega juba harjunud 🙂

C#

Minu jaoks kĂ”ige hirmutavam aine. ÕppejĂ”ud ĂŒtles, et 50% ei saa lĂ€bi ainest ja sain aru, et jĂ€rgmise semestri hajussĂŒsteemid tulevad selle C# baasil edasi. Javas aitas mind kĂ”vasti soomlaste MOOC aga C# jaoks ei ole midagi sarnast leidnud.

Samuti ei ole pĂ€ris tĂ€pselt aru saanud, et milleks C# vajalik vĂ”i mille poolest eriline vĂ”i mis mĂ€rksĂ”naga seda peaks kuskil arendusfirmades mĂ€rkama (.NET?). Lihtsalt mul ei ole tutvusringkonnas olnud mitte kellegagi sellest keelest juttu. Pigem Java, TypeScript, Python jne. Samas Tiobe 5. koht hetkel. Seega, paneme kĂ”ik vĂ€lja ja vaatame kuhu see jĂ”uab. Äkki on tĂ”esti hea. Hetkel mul ei ole ĂŒhtegi mĂ”tet, mida ma selle keelega huvitavat teha saan.

Seni on mulje selline, et nii palju jama mul ei ole ĂŒhegi keelega seni olnud tehniliselt poolelt. Nii Rider‘i erroreid, mingeid koodi crashimisi tĂ€iesti suvalise koha peal, giti jamasid jne. Python ja Java selle kĂ”rval töötasid (vĂ€hemalt Ă”ppetöös) ikka eriti sujuvalt 😀

Algoritmid

Vaimustun. VÀga lahe ÔppejÔud. Aga hirmus aine on ka, et ei tea, kas pea vÔtab lÔpuni ikka. Aine lehe leiab siit.

Veebitehnoloogia

Üks lemmik aineid. Ootan huviga igat kodutööd ja teen hea meelega ise juurde. Selle aine Moodle foorum on parim meelelahutus.

Sotsiaalmeedia

Eelmise semestri lÔpus panin endale sotsiaalmeedia piirangu ja see tÔstis mÀrgatavalt mu produktiivsust. Hetkel tunnen, et peaksin sama uuesti tegema. Sotsiaalmeedia segab kohutavalt.

Arvutigraafika

Tegin ĂŒhe halva valiku juba sel semestril ja selleks on valikaine nimega Arvutigraafika (ICD0002). ÕppejĂ”ud ja kĂ”ik on vĂ€ga tore – pole viga midagi – aga see tĂ€iesti vale asi vĂ”rreldes sellega, mida ma arvasin, et see on. Ma arvasin, et see on midagi sellist nagu kasutajaliidese prototĂŒĂŒpimine, Sketch, Figma, CSS nagu www ja Aku jne seda teeb, ligipÀÀsetavus jne. Aga ei. See on 3D joonestamine ja ma hetkel ei oska ĂŒldse rÔÔmu tunda sellest sĂŒlle kukkunud vĂ”imalusest seda Ă”ppida 😀 Ei teagi mis teha sellega.

12. Oct 2020 |

Entity–relationship diagram (ERD scheme) for family tree database

I have seen this question asked many times and most of the times poorly answered.

Entity–relationship diagram for family tree database. N means ‘nullable’ in this syntax.

I think it could be done like this. The left one has two tables – person and pairing. Person table is for entities and the other table for relationships between persons. The green one has both in one table and it is basically recursion hierarchy between Persons.

I don’t know if this solution is correct or not. Neither know I which one is better 🙂

Lines on the right ERD explained:

  • Each mother_id can be mother to zero-to-many person_id’s
  • Each father_id can be father to zero-to-many person_id’s
  • Each person_id can have 0-to-1 father id (zero if I don’t know the father) and 0-to-1 mother id. Person can not have more than one biological father and mother.

NB! You can not add relationships between Persons before you have created the Person you need. Therefore I suggest to leave everything nullable where it makes sense.

Please come back later. If I have time I will share SQL query for setting up MySQL database with sample data and maybe some simple php interface.

10. Oct 2020 |

MySQL autoincrement PK growing quickly

Primary key (PK) is skipping values for some reason. This was an issue I spent time solving until I discovered that auto increment column increases after insertion error occurs. To avoid duplicates on this website I set rule on MySQL side that if three colums match then don’t insert (give insertion error and continue). This way I had hundreds of insertion errors every hour and therefore PK was growing rapidly.