Letöltés mappa rendező program – 1. rész
Új rovatunk az Alkalmazásfejlesztés élesben, ami valódi és hasznos programok létrehozását mutatja be C# nyelven, hogy ne csak állatorvosi lovat és tankönyvbe való példákat lássunk. Elsőként egy letöltés mappát rendező szoftvert fogunk létrehozni.
A problémakör
Mielőtt belevágnánk a kódolásba, röviden ismertetném a problémakört. Személy szerint én több tekintetben egy lusta ember vagyok. Van egy Letöltések mappám, amibe csak úgy mennek az internetről letöltött különböző fájlok (doksik, képek, stb..), amik a munkám elvégzéséhez szükségesek. Viszont egy idő után n+1 fájl között megtalálni, hogy mire is van éppen szükségem, macerás.
Ennek apropóján gondoltam, készítek egy programot, ami bizonyos szabályok alapján szét tudja nekem válogatni az ömlesztett fájlokat több almappára.
A szabályok lényegében fájlkiterjesztések lennének, ami alapján megmondható, hogy egy adott típusú fájlt hova helyezzen a program.
Követelmények
A megoldandó problémát már látjuk magunk előtt. Ilyenkor jöhet a követelmények tisztázása. Ezt általában az ügyféllel együtt szokás megtenni. Most viszont vagyok annyira szerencsés helyzetben, hogy én vagyok a megrendelő és a kivitelező és nagyjából tudom is, mit szeretnék.
- A program egy C# konzol alkalmazás lesz, .NET Core 3.1-es keretrendszert használva.
- A program működése (szabályok, bemeneti mappa, stb…) egy konfigurációs fájl segítségével módosítható lesz.
- A program nyílt forráskódú lesz, az MIT licenc feltételeinek megfelelően.
A követelmények első pontjából csak a konzol alkalmazás kitétel szorul szerintem magyarázatra. Eddig minden itt szerepeltetett program konzol alkalmazás volt és igazából ez a program szerintem nem igen szorul grafikus felületre. Ha nagyon megerőltetném magam, akkor szerintem egy Bash szkript is képes lenne a feladat ellátására.
A további követelmények közül talán még az MIT licencet vesézzük ki jobban.
Rengeteg nyílt forráskódú licenc létezik, különböző feltételekkel. Ezek közül az MIT rendelkezik a legkevesebb korlátozással. Lényegében ha valami MIT licenc alatt van kiadva, akkor az szabadon módosítható és leszármaztatott termék is készíthető belőle nagyon durva korlátozások nélkül. Az MIT licencről itt tudsz további információkat találni: https://hu.qaz.wiki/wiki/MIT_License
Illetve egy hasznos olvasmánysorozat a különböző nyílt forráskódú licencekről:
- https://lacyc3.eu/hogyan-valassz-szabad-szoftver-licencet-1
- https://lacyc3.eu/hogyan-valassz-szabad-szoftver-licencet-2
- https://lacyc3.eu/hogyan-valassz-szabad-szoftver-licencet-3
Konfigurációs fájl
A konfigurációs fájl esetében formátum tekintetében több lehetőség adódik. A klasszikus XML, ami beépített keretrendszer támogatással rendelkezik, viszont jelen esetben nem a legjobb lenne, mivel sok vizuális zajjal rendelkezne.
Ezért kézenfekvő, hogy vagy JSON (https://hu.wikipedia.org/wiki/JSON) vagy YAML (https://en.wikipedia.org/wiki/YAML) formátumot lenne célszerű használni.
A YAML előnye és egyben hátránya, hogy felhasználók által könnyen olvasható. Ez előny olvasáskor, de feldolgozáskor inkább hátrány, mivel a TAB és szóköz tagolás között különbséget tesz, ami érdekes problémákhoz tud vezetni.
Ezért egy picivel jobb a JSON, ami legalább formázott. Olvashatóságban és kézzel szerkeszthetőségben félúton van a YAML és az XML között. További előnye, hogy van hozzá hivatalos Microsoft NuGet csomag.
Szükséges eszközök
A projekt fejlesztéséhez Visual Studio Community-t fogok használni és C# 8.0-át Nullable Reference types használatával, illetve verziókezelőnek Git-et. Ezért az alábbi eszközöknek telepítve kell lennie a gépre:
- Git
- Visual Studio 2019 Community
- .NET Core SDK