Diskuze: Pár obecných dotazů aneb jak se toto řeší?
V předchozím kvízu, Test znalostí C# .NET online, jsme si ověřili nabyté zkušenosti z kurzu.

Tvůrce

Zobrazeno 22 zpráv z 22.
//= Settings::TRACKING_CODE_B ?> //= Settings::TRACKING_CODE ?>
V předchozím kvízu, Test znalostí C# .NET online, jsme si ověřili nabyté zkušenosti z kurzu.
Zkusim předat svůj názor:
ad 1) jo, to bude asi řešení, jen si neumím představit, tu strukturu
toho XML, i když na druhou stranu mě to trápit nemusí, když to bude
fungovat serializace/deserializace, takže asi tak.
ad 2) jo, to mě taky napadlo, předpokládám, že tento superadmin je je
jeden. A fyzicky to může být víc osob, které se mění v čase bez toho,
aniž by se vytvářel nový superadmin, protože neexistuje typ uživatele,
který by superadmina mohl vytvořit, protože superadmin je ten nejvyšší.
Pokud je to tak, jak se to řeší prakticky, ten superadmin se přihlašuje
nějakým heslem a to je někde uloženo v trezoru na papírku, když náhodou
ten aktuální superadmin "zemře"? Rozumíš, jak to myslím?
Skusim sa pridat aj ja
1: To bych asi uz neriesil cez XML aby to nebylo tak sprasene, ale z databazu.
Napr ta tvoja objednavka by byla v jednej tabulke a byla by vazana na objekty v
druhej tabulke ktere by reprezentovali ty produkty. Potom by sis nasel tu 1
objednavku a nechal v kolekcii vypisat vsetky jej produkty. Obejdenavka by mnela
v sebe vsetky tie atributy a vlastnosti + by si byla vazana na konkretne
produkty
2: Ak ta chapem spravne tak ti ide oto aby si mnel v appke uzivatelu z urcitima
pravomocama, nato sa pobuziva v .NET Identity Roles. Ucti su vsetky rovnake ale
ne kazdy ucet moze mnet niaku priradenu rolu. Takze ti jak programator/ super
admin si vitvoris prvi ucet a priradis si rolu pomenovanu superadmin Pototom v tej tvojej appke mozes
nad urcitima metodam, triedama, pages a pod nastavit kto do moze pouzivat, tjs
role. No a napr na registorvani uzivatelu nastavis ze to moze robit len
superadmin. Potom mozes nastavit pro superadmina napr to ze on priraduje role k
uctom, vytvara nove role a tak. Dam ti nato odkaze, kukni to mozno ti to povi
vic: odkaz na db vazby a identiy roles
Ad 1) ano, toto mě taky napadlo, jenže ono se nejedná o objednávky, pouze
jsem to použil jako příklad struktury, a pro tento konkrétní případ, pro
který to potřebuji, to potřebuji mít řešené tak, že uživatel bude mít
k dispozici formulář, něco si tak nakliká a pak by měl mít možnost si
práci sám pro sebe uložit k sobě na disk a pak případně opět ze svého
disku načíst. Podle mě to tedy bude ukládáno do nějakého souboru, jiná
možnost asi není, ne?
Ad 2) Já nevím, jestli tě chápu a jestli ty chápeš mě. Prostě někdo je v daný okamžik
ten superadmin (který je jen jeden) a jak se zajistí to, že když "umře",
že tu jeho roli může někdo převzít.
1- db mozes mnet aj useba na disku, 2 - no tak to sa nechapeme
Jasně, ale to bys musel iniciovat její vytvoření při prvním uložení ze strany uživatele. Já vím, že v C# se dá vytvořit jakýsi soubor, co funguje jako db, ale to už zas je podle mě komplikovaná konstrukce, protože v podstatě i třeba z důvodu sdílení, bys pro každý save, bys vytvářel nový db soubor. Takhle, i přes mojí chabou znalost mi přijde, že by se to mělo exportovat a importovat z nějakého "txt" souboru.
Ahoj.
k té 1. - nevím oč jde, že máš problém s XML, ale napadá mě teda že
například nechceš aby do souboru mohl někdo nahlížet, pročto neukládat
jako binární soubor? Pukud tam budeš mít ve formuláři nějaký klikátka a
combo boxy, tak velikosti jsou jasně dané, pokud tam uživatel vypisuje
nějaký tex, nastav pevnou délu řetězce třeba na 1000 znaků. Potom si
nastavíš přesnou strukturu načítání a ukládání a máš vyřešeno.
k té 2. - no nevím co se ti na superuser účtu nezdá. pokud ztratíš heslo,
můžeš to vyřešit obnovou emailem, ta hesla se někde ukládají, většinou
asi právě v db jako hash, ale já to třeba řeším hashem v binárce, na
projektu na kterém teď dělám. Pokud obnova emailem, nebo nějakým externím
nástrojem, neexistuje, tak potom jedině čistá instalace aplikace Jako největší hloupost mi
přijde přihlášení napsat natvrdo do aplikace, ale mohl bys to tak udělat,
pokud aplikaci budeš distribuovat, nakódit si svůj superúčet přímo do
aplikace, někde skrytě, třeba nějaký klikátko na obrazovce about, kam
nikdo normálně nechodí, a když bude potřeba vytvořit nového admina, tak
přes toto. Heslo můžeš mít ty, a další kdo kdo to bude spravovat a
zajišťovat podporu, Takové heslo potom nikdy neztratíš, protože ho máš
napsané ve zdrojáku
Určitě
by se dalo vymyslet víc možností, ale už by to byly asi nesmysly.
ad 1) Nemám problém s XML, jen jsem v první chvíli nepochopil, že by to
šlo udělat tak, jak navrhuje kolega v první reakci v tomto vlákně.
Binární soubor nepotřebuji, svým způsobem mi vyhovuje, když to bude
"záložně" čitelné v textovém editoru.
ad 2) Ale jo, nemám problém se superuserem, jen mi není jasné, jak s ním
pracovat. Asi to popisuji blbě, tak to zkusím ještě jednou. Mám tři typy
uživatelů - běžný uživatel (editor - doplňuje údaje do tabulky), admin
(zpracovává doplněné údaje, nahrává nová data apod.) a pak je nějaký
ten superadmin (vytváří adminy apod.). Tenhle konkrétní případ, co
popisuju, je jen Excelová tabulka + VBA, uživatelé a admini hesla
nepotřebují, protože se identifikují pomocí uživatelského jména, kterým
se přihlašují do PC, které mají přidělené a rozhodně ho nemůžou
měnit, čili pro tento účel zabezpečení víc než dostatečné. Pak tu jsem
já, jako ten superadmin. Já samozřejmě mám heslo k tomu VBA kódu (což
samozřejmě není nic neprolomitelného, ale o to až tak nejde). A ten můj
dotaz je, kdybych prostě "umřel", tak jak udělat to, aby mohl být vytvořen
nový superadmin, bez mého zásahu. Jak se to jako principiálně řeší?
aha, takže se bude přihlašovat tím jaký firemní účet je přihlášený, chápu to dobře? Tak potom bych se nebál, ke každému účtu má přístup IT firmy, a ti heslo nepotřebují, mají tedy přístup i k tobě jako superuserovy.
Asi jsem neměl uvádět ten konkrétní případ, protože takhle to řešit nejde. Moje Excel aplikace, která řeší jen jakýsi "malý lokální problém" je zcela mimo rozlišovací schopnost IT firmy. Ta dá uživatelům přístupové jméno a tím to ve vztahu k mé aplikaci končí. V mé aplikaci pak uživatel "Alesh" je superadmin a v tuto chvíli jsem jediný a de facto není důvod, ani moc možnost mít dalšího superadmina. Já furt nechápu, resp. nevím, jak se řeší ta situaci, kdy ten jediný superadmin "zemře". Jako kdo nastaví toho nového, jak se tato úloha obecně řeší.
Máš nevhodný axiom "superadmin může být je jeden".
To jako proč?
Co mám zkušenost, tak obvykle funguje nějaká variace tohoto:
Ještě bych měl jeden nový dotaz. Pokud chci udělat vícejazyčnou
aplikaci, tak to se dělá jak? Konkrétně mi jde především o přepínání
textů v WPF aplikaci (popisy tlačítek či jiných prvků, error zprávy
atd.). Je tu někde o tom článek, třeba i v jiném programovacím jazyce, jde
mi o pochopení principů a nerad bych znovu vynalézal kolo, protože by bylo
určitě hranatý.
Vedle C# jsi uváděl i Javu a tam je to, alespoň v Android Studiu,
extrémně jednoduché. Na práci s texty se u projektu vytvoří soubor
strings.xml, který se nachází v res/values. Do tohoto souboru se pak
ukládají veškeré texty jednotlivých komponent, které nejsou napsány "na
tvrdo", čemuž se AS brání zobrazením warningu a snahou donutit
programátora, uložit řetězec právě do strings.mxl, což je snadné a AS
tě navede.
Pak stačí s použitím strings.xml napsat celou aplikaci a soubor strings
rozkopírovat do adresáře values se speciálním příznakem pro konkrétní
prostředí (tedy values-cs pro češtinu, values-en pro angličtinu, values-de
pro němčinu atd.) a v těchto nových souborech jen přeložíš řetězce do
zvoleného jazyka. Samotná složka values bude obsahovat soubor strings.xml
defaultního jazyka.
Zde je pár tipů:
tady
tady
nebo tady
Funguje to parádně a na google toho najdeš tuny...
Díky, předpokládám, že to ale není obecné řešení, resp. nevím, jak by se dalo implementovat třeba do C#. Prostě potřebuji spíš obecný princip.
Jo, asi vymejšlím kraviny, ale přeci i taková věc může nastat, ne?
Řekněme, že se jedná
např. o jakési datum platnosti všech dat v té databázi. Nebo bych třeba
chtěl mít uloženou návštěvnost (jedno jediné číslo, které se pouze
inkrementuje). To pro každou takovou jednotlivou položku by se měla udělat
vlastní tabulka s jediným záznamem, který se aktualizuje?
Já jsem se neptal proto, že bych si myslel, že řešíš kraviny. Jen typicky je třeba znát kontext. Cest k cíli často vede více.
Ad platnost dat:
To si moc neumím představit. Zatím vždy jsem se setkal spíš s platností
pro jednotlivé záznamy (jako např.: tenhle záznam ceníku platí pro tohle
období).
Ad návštěvnost:
Pokud jde o návštěvnost webový stránky, tak bych se to nesnažil řešit
vlastními prostředky. Spíš bych nasadil nějaký Google Analytics (jestli to
ještě existuje stále se to tak jmenuje) nebo něco podobného.
Pokud to chceš řešit vlastními prostředky, tak záleží jak podrobný
chceš míš data.
Teorericky můžeš vytvořit tabulku, kde se dvouma sloupečkama pro klíč a hodnotu (sloupecek s klicem by pak byl zaroven prim. key). Tomuhle řešení bych se ale snažil vyhnout. Vidím na tom dva problémy:
Zobrazeno 22 zpráv z 22.