- sziku69: Szólánc.
- Luck Dragon: Asszociációs játék. :)
- sziku69: Fűzzük össze a szavakat :)
- Gurulunk, WAZE?!
- Magga: PLEX: multimédia az egész lakásban
- f(x)=exp(x): A laposföld elmebaj: Vissza a jövőbe!
- ubyegon2: Airfryer XL XXL forrólevegős sütő gyakorlati tanácsok, ötletek, receptek
- Argos: Szeretem az ecetfát
- No Voice in the Galaxy
- Parci: Milyen mosógépet vegyek?
Új hozzászólás Aktív témák
-
Alexios
veterán
muszáj az existinguser.Property1 = value1; minden egyes módosítandó adatnál, tehát a problem, hogy mindegyik elé mehet az object neve is.
De amúgy ez miért olyan nagy baj, vagy miért számít egyáltalán? Szerintem teljesen lényegtelen, martonx megoldása teljesen jól olvasható, ha nem létezik létre hozod, ha igen explicit látszik miket módosítasz, majd mentés, mindenféle magic nélkül ahol találgatni kell hogy működik és mint látjuk nehéz debugolni. Az egyetlen pont inkább ellene hogy ha az id-n kívül minden propertyt updatelni akarsz, akkor ha később hozzá adsz egy új propertyt akkor ezt is updatelni kell, de szerintem ezt azért meg lehet ugrani.
De tényleg, az hogy használni kell az object nevét nem kódismétlés, ettől nincs duplikalt kód, redundancia, akármi. Ha ennek a metodusnak a tartalmát atmasolnad egy másikba, ahelyett hogy ezt hívnád, na ott lenne kódismétlés, és abból lehetne gond.
-
petyus_
senior tag
var existing = db.SpotifyUsers.Where(x => x.Username == userdata.Id).SingleOrDefault();
db.Entry(existing).CurrentValues.SetValues(edited);Itt mi az edited? a másik kommentedben a userdata.Id-t hasonlítottad a Username-hez, akkor gondolom a spotify-os usernek az Id-ja a username, a te entity-dnek viszont egy int az id-ja, ezért kapod a hibát. A SetValues object-et vár, tehát nincs típus ellenőrzés, ezért kapod runtime a hibát
-
martonx
veterán
// userdata a method paraméterében
var existingUserData = await db.SpotifyUsers.SingleOrDefaultAsync(x => x.Username == userdata.Id);
if (existingUserData is null) {
db.SpotifyUsers.Add(userdata);
}
else
{
existingUserData.X = userdata.X;
existingUserData.Y = userdata.Y
}await db.SaveChangesAsync();
Ennyi.
-
martonx
veterán
Érthető, de ahogy Alexios is írja, itt nincs semmi redundancia az update-nél
Hiszen te magad kéred le a kódban, hogy létezik-e. Ha létezik, akkor propertynként update és csá.
Hol itt a redundacia?
Ehelyett valami ezeréves szar trükközéssel próbálkoztál, ami persze hogy nem megy, mert ezer éves, azóta négyszer újraírták az FE-tmeg amúgy is pont az a felesleges redundancia.
Az existinget meg nem where-el kellene lekérned hanem SingleOrDefault-tal, az már elég csúnya lenne, ha a username-ek duplikáltak lennének. -
-
petyus_
senior tag
Én a helyedben egyelőre maradnék a 6-nál, novemberben úgyis lejár a support, tehát legkésőbb akkor illene frissíteni. Közben meg előfordulhat, hogy belefutsz valamibe, ahol breaking change volt 7/8 alatt, és onnantól amúgy sem tudnál továbbmenni mindhárommal egyszerre.
martonx: nem pontosan értem mire gondolsz, milyen issue-t csináljon, mert ez nem bug, hanem az elvárt működés. A multi-target nem arra való, hogy webapp-ot futtass több környezeten, inkább library-knél jó, hogy több frameworkkel is kompatibilis legyen (nyilván ilyenkor is figyelni kell a breaking changekre, és egy idő után lesz pár #if NET6_0, stb).
-
martonx
veterán
A megfelelő github action dokumentációját kellene átnézd. Ennyiből amit küldtél még az se derül ki, hogy ez App Service vagy egy virtuális gép, vagy Azure function, vagy egy docker image. Szóval amelyik lépésnél dobódik ez a hiba, annak az actionnek a doksiját nézd át, github issue-jait, hátha meg lesz a megoldás.
Ha nem lesz meg, akkor pedig érdemes indítanod github issue-t nekik. -
petyus_
senior tag
-
martonx
veterán
Az megvan, hogy amit írsz az nettó hülyeség? Mind a logger, mind a DB esetben?
Dependency Injectionről hallottál már?
De még ha nem is, akkor is hülyeség, amit írsz, ne mondd már, hogy Asp.Net Core-ban folyton újra és újra paraméterezgetni kell a DB-t, meg a Loggert
Vagy akkor valamit őrületesen rosszul kezdtél el, és előbb talán a hivatalos dokumentációt érdemes lenne átfutnod. Asp.Net Core nem is létezik DI nélkül. Akkor meg miről beszélünk? -
joysefke
veterán
1,
Mi az, hogy "keresztbe példányosítás"?
Ha öröklődéssel hoznál létre egy körkörös dependenciát (származtatott osztály ugye függ az ősosztályától), azt kódszerkesztési időben észrevenné a VS és nem tudsz eljutni oda, hogy futni tudjon a kódod és kivételt kapj mivel le sem forg fordulni. Tehát nem ez a hiba.2,
Tehát akarsz egy ilyet:SQLiteService : CommonService { ...}
Aztán paraméter nélküli konstruktorral szeretnéd példányosítani:
SQLiteService()
Itt kódszervezési probléma van. Az ASP Net Core fő szervezési koncepciója a Dependency Injection. Mivel user kódot írsz és itt most nincsenek egyéb megfontolások ezért ezt az esetedben konstruktorral történő injekciót kéne jelentsen.
A Te SQLiteService osztályod azt állítja magáról, hogy ő nem függ senkitől és semmitől. Ami nonszensz.
Próbáld ki, csinálj egy unit teszt projektet, add hozzá az ASPs projektedet mint függőség és próbáld meg unit tesztből példányosítani és használniSQLiteService
-t.Nyilván nem fog menni, mert szükség lenne az SQLite fájl útvonálára minimum, ami viszont konfigurációból (illene) jöjjön.
3,
Loggolás ugyanez pepitában.ASP-ben a loggolás legegyszerűbb módja DI-jon keresztül van:
Logging in .NET Core and ASP.NET Core | Microsoft LearnSzerintem az a baj, hogy a szervizeidben rejtett, implicit függőségek vannak amelyeket nem derítettél fel.
-
martonx
veterán
Úristen a razor pagestől a mai napig kiver a víz. Php-ról áttérők miatt került bele a keretrendszerbe. Egyébként teljesen rosszul kezdtél neki, előbb doksit kellene olvasnod, nagyon jól le van írva az ASP. Net Core identity tutorialokkal. Fórumokban kérdezgetés, meg vakon neki esés helyett:
1. Doksi olvasás
2. Doksiban lévő tutorialok végig nyomásaMajd ha ezek után még van kérdés, szívesen segítek. Jól választottál ASP. Net Core-al, php után Trabant - Mercedes a különbség.
-
joysefke
veterán
ezeket próbáltad?
WebApplication and WebApplicationBuilder in Minimal API apps | Microsoft LearnMásik opció hogy appsettings.json-ban definiálod a portot.
-
dqdb
nagyúr
-
dqdb
nagyúr
Ez elvileg kellene, hogy működjön. Gyakorlatilag láttam már olyat, hogy a .NET szolgáltatást a rendszer olyan lassan indítaná el, hogy az SCM kilövi azt még azelőtt, hogy egyáltalán elindulna (nem tudom az okát).
A Program.Main, Service.OnStart és Service.OnStop metódusokba tegyél fájlba naplózást, hogy látszódjon, egyáltalán eljut-e oda a vezérlés. Ha nem, akkor itt a workaroundnál látható módon a gyári 30000 ms-t tornázd fel magasabbra (nekünk volt, ahol elég volt 2 perc, volt, ahol 3 kellett).
És ahogyan a többiek is javasolták, használj LTS verziót, ami a 6.x.
-
Alexios
veterán
Olyan nagy breaking changek nincsenek 5 és 6 között már, valószínűleg simán tudod upgradelni bármi gond nélkül. De amúgy igen, az utóbbi időben felgyorsult a .NET fejlesztése, jelenleg a 6 az LTS azaz hosszabb távon támogatott verzió, és két évente jön egy új LTS, közben pedig egy rövidebb ideig támogatott verzió (jelenleg a 7 az aktuális)
-
martonx
veterán
A .Net 5 már teljesen elavult. Ráadásul biztosan windows service kell neked?
Itt a hivatalos leírás windows service készítéshez .Net 6+ esetben: Create a Windows Service using BackgroundService - .NET | Microsoft Learn
-
Alexios
veterán
Én ezt az örököltetést nem erőltetném a helyedben, mert egyrész semmi szükség rá
Másrészt az öröklés IS-A kapcsolatot felételez, márpedig már nyelvtanilag is látszik hogy a dark IS A light nem állja meg a helyét
De ott agyalok, hogy a ColorScheme osztályt egyelőre nem tudom implementálni, mert nem tudom neki megmondani hogy az light és dark is lehet igazából.
Én itt megmondom őszintén nem teljesen értem mire gondolsz, de én a joysefke által felvetett úton mennék tovább -
joysefke
veterán
Van egy basic classem, kb 10 környéki color propertyvel, nevezzük ezt Light-nak.
A "basic class" megnevezés base class helyett elég rendesen zavarja a megértést.
Öröklődés helyett miért nem definiálsz valami "color profile"-okat leíró egyszerű osztályt, pld "ColorProfile", annak lehetne 1-2 static readonly beégetett értéke, pld ColorProfile.Light, ColorProfile.Dark, de nyilván lehetőség lehet akár custom példány létrehozására is (pld egy ColorProfile.Default-ból) ha van erre igény.
Annak eldöntését hogy éppen milyen ColorProfile van érvényben azt egy másik osztály (-nak példánya) végezhetné ami kérésre előrántja konfigurációból vagy akárhonnan.
Mondom ezt egy sör után, illetve anélkül, hogy tudnám, hogy milyen frameworkben mit csinálsz, illetve UI-ban nem vagyok otthon
Öröklődést akkor van értelme használni amikor egy osztály viselkedését akarod módosítani/definiálni és nem akkor amikor egy egyszerű property értékét le akarod cserélni.
-
Alexios
veterán
Hát, lehet érdemes lenne megnézni a c# és oop alapokat, mert ez kb a legalapabb öröklődés
Példa:
using System;
public class Program
{
public static void Main()
{
var dark = new Dark();
Console.WriteLine(dark.Magenta);
Console.WriteLine(dark.Green);
}
}
public class Light
{
public virtual string Magenta{get;} = "LightMagenta";
public virtual string Green {get;} = "LightGreen";
}
public class Dark : Light
{
public override string Magenta {get;} = "DarkMagenta";
}
Ha a kérdés az, hogy ezek statikus propertyk lennének, akkor statikus propertyket nem lehet virtualnak vagy abstractnak megjelölni, szóval felülírni sem lehet őket
-
dqdb
nagyúr
Kiolvasod az első két byte-ot a streamről. Ha az
1f 8b
, akkor gzip lesz a formátum.Mivel azt a két byte-ot egyszerűen nem tudod visszatenni a stream elejére, ezért ha memóriába belefér a tartalom, akkor létrehozol egy
MemoryStream
-et, az elejére beírod a két byte-ot, a végére a stream többi tartalmát, és ezt az objektumot adod tovább aGZipStream
példánynak vagy aStreamReader
-nek.Ha szép megoldást szeretnél vagy a memóriafoglalás is számít, akkor egy olyan
Stream
implementációra lesz szükséged, ami alapvetően proxyként működik a paraméterként kapott streamre, csak éppen visszateszi az elejére azt a két byte-ot.A HTTP header felejtős, az minden esetben gzipet ad vissza.
Bár a fenti taknyolás működik, de ezt igazából a szerveren kellene javítani, hogy helyesen adja vissza aContent-Encoding
mezőt.Küldesz amúgy
Accept-Encoding
-ot a kérésben? Ha nem, akkor ez még nagyobb probléma a szerveren, ha igen, akkor gyorsan szedd ki, és lehet, hogy megúszod a teljes fejlesztést. -
Alexios
veterán
de .NET 5-ön belül mi, WPF, Winforms, más?
Az, hogy webapp vagy sem mondjuk szerintem nem sokat dob azon hogy szép vagy sem, desktopon is meg lehet bármit csinálni
WPF-en belül ha van egy listád amihez tudsz bindolni, akkor a lista elemeire simán tudsz csinálni egy ilyen ListViewItem-et, amiben mondjuk van egy Grid 4 oszloppal, elsőben a kép, a másodikban a név, harmadikban a dátum, negyedikben a gomb, stb. Winformson belül is biztos van valami hasonló
-
Alexios
veterán
Nem teljesen értem a kérdést
Ha a kérdés az hogy a desktop appon belül valami browser controllal legyen megjelenítve, szerintem ne, bár előnye lehet hogy később újra használhatod.
Nem tudom milyen desktop frameworköt használsz, de igazából bármelyikben ugyanúgy kivitelezhető, nem is különösebben bonyolultan.
WPF-et ismerem én, ott mondjuk egy ListView-t kötsz a listádhoz, és a ListViewItem-nek a datatemplatejében már azt csinálsz elemenként amit szeretnél -
-
joysefke
veterán
Nem teljesen értem a feltételt. Arra van szükséged, hogy visszakapd:
A, azon dictionary-k felsorolását, amelyek rendelkeznek egy bizonoys kulccsal, VAGY
B, azon dictionary-k felsorolását, amelyek rendelkeznek egy bizonoys kulccsal amelyhez adott érték tartozik?List<Dictionary<string, string>> nagy
;A, // ahol van "xx" kulcs
nagy.Where(a => a.ContainsKey("xx"));
B, // ahol van xx kulcs és az ehhez tartozó érték "yy"
nagy.Where(a => a.TryGetValue("xx", out string val) && val == "yy");
a végén hívhatsz egy ToList()-et
-
Alexios
veterán
De a megszokottban nincs is változtatás, ha nagyon akarod használhatod a frameworköt, nyilván annak tudatában, hogy nem fog hozzá már frissítés jönni.
Az egész .NET Core lényege az volt, hogy nem kell visszafelé kompatibilisnek lenni, és nem kell hogy a következő 10 évben megkössék még 15 évről itt maradt dolgok a kezüket.
Sokáig pont azért mondta a MS is amúgy, hogy a Core nem váltja le egyelőre a Frameworköt, mert nem tartalmazott mindent, a .NET 5-nél ez lett a váltás, és ezért a névválasztás is, itt már úgy gondolták, hogy mindent amit a frameworkből tovább akarnak vinni az benne van, innentől ez a .NET jövője.Core nélkül a mai napig nem lenne a .NET cross platform, nem lenne ez az egész, hogy modulokra szét van szedve, valószínűleg nem is fejlődne ilyen gyorsan(ugye innentől évente jön új .NET főverzió), és akkor még amúgy a teljesítmény javulásról még nem is beszéltem.
Mi amúgy viszonylag nagy kódbázissal álltunk át Core-ra (WPF projekt nagyrészt), és a portability analyzer segítségével egyáltalán nem volt olyan vészes. A legkritikusabb része az volt, hogy van pár külső dll amit használnunk kell, és nincs belőlük Core/netstandard verzió, csak fw(ipari kamerák dlljei nagyrészt), viszont portability analyzerrel kijött, hogy nem használ semmi olyat, ami nincs benne a .NET Core-ban, így tökéletesen fut nálunk továbbra is, úgy hogy a fő projekt már nem fw, szóval én nem érzem ilyen macerásnak a váltást.
Cserébe bejöttek új featureök is, pl. teljes C#8-9 támogatás.
#9566 Livius : Az extensiön azt jelenti, hogy az alap core runtime nem tartalmazza, de nugetben van hozzá támogatás(pl.: [link] )
Ahogy láthatod fentebb a példámban, elképzelhető hogy továbbra is megy a .net fw dll core alatt is, de ez nem az extensiönön múlik, hanem hogy a dll miket használ. Ha olyan hívás van benne, ami core alatt nem létezik, akkor nem fog működni, de ha olyanok vannak benne csak amiket a Core is tartalmaz, akkor jó eséllyel menni fog. Dll-ekre is le lehet futtatni a portability analyzert amúgy, és akkor kidobja mi a helyzet velük. -
joysefke
veterán
Már lassan én is elvesztem a fonalat...
Egyrészt nem értem ezt az ide-oda tilitolit, az egyikben ez benne van, a másikban meg valami más. Tudom, én vagyok megrögzött, régimódi, de én ha valami jól működik, azon nem változtatok (tehát én ezt a frameworkök közti váltást teljesen visszafelé kompatibilis módon oldottam volna meg).
Pedig annyira nem bonyolúlt a dolog, és lehet lenne értelme utánanézni, ha már egyébként is foglalkoztat.Semmilyen tili-toli nincsen. Mióta a .Net Core (igen, a NET 5 is ide tartozik) vonal megjelent ezt rohamléptekben fejlesztik, az előző .Net Framework vonalat pedig csak minimális mértékben csiszolgatják.
A Core vonal már eleve multiplatformnak lett tervezve, illetve a fejlesztési modell is más. A távlati cél, hogy ez nem csak szebb jobb, gyorsabb és multi platform lesz, hanem hogy a Net 4.X szinte minden támogatott funkcióját -aminek értelme van- továbbvigyék. Ez utóbbi nagy feladat ezért csak inkrementálisan lehetséges.
-
martonx
veterán
1. könyörgök jegyezd már meg a keretrendszerek nevét, vagy örökre ignorálni foglak trollkodásért. .Net 5.0 van most. Előtte pedig két ág létezett:
.Net Framework, ami 4.8-ig jutott el
.Net Core, ami 3.1-ig jutott el.
Olyan, hogy régi .Net nem mond semmit, mert nem értjük, hogy .Net Core-ra, vagy .Net Frameworkre gondolsz. Ahogy a .Net őskövület (oké, de melyik???, amelyik 2001-ben jelent meg vagy amelyik 2017-ben jelent meg?) kijelentés se árul el semmit, azon kívül, hogy megtudtuk, hogy fingod sincs, hogy miről beszélsz. Hagy ne kelljen minden egyes mondatodat interpretálni, és azon töprengeni, hogy mire gondolhatott a költő.
2. nagyon csodálnám, ha ne lehetne ezt a fajta kókányolást (kényelmes tool használatot, ahogy te hívod) megoldani .Net 5.0-val.
-
Alexios
veterán
Ha kézzel kéne letöltögetni, akkor elég macerás lenne dolgozni olyan helyen ahol több mint 1 fejlesztő van
Jó esetben ugye valamilyen source control alatt van a kód, ott nincsenek fent a nuget packagek, csak a csproj-ban a packagereferencek(vagy még régebbi módon a packages.config-ban), ami alapján majd tudja a nuget hogy mit kell letöltsön. -
martonx
veterán
Alexios megelőzött. Ez már évek óta így van, mondjuk a .Net Core 1.x még nagyon fapados volt, 2.x-től kezdve én már soha többé nem is használtam a régi .Net Frameworköt.
5.0-tól kezdve meg elhagyták a core-t a nevéből, és már csak .Net 5.0-nak hívják a zavarokat elkerülendő.És a .Net core 2.x óta tudsz olyan appokat írni, amikhez semmit nem kell telepíteni (se előtelepítve lennie a gépen, ellentétben a régi .Net Frameworkkel), egyik OS-en sem, mindent magába foglal. És simán fut Windows-on / linuxon / osx-en. Jó persze, ahogy feljebb írtuk, ezek GUI nélküli appok, azaz console appok / web appok.
Az idén év végén befutó 6.0 viszont már cross-platform GUI-t is fog tudni. -
Alexios
veterán
Nem tartalmazza mindkettőt, elsősorban a core-ra épül, de elég sok mindent átvettek a régi fw-ből főleg támogatás céljából(lásd wpf, winform support), de elsősorban core alapú az egész, és az is marad, de ez nem a jövő, hanem már így van. Van amit nem vettek át(WCF, Webforms pl), de a lényeg hogy a jövő a .net 5+, nem lesz már új .net fw verzió
.Net core-nál amúgy lehet self contained is publisholni, azaz akkor is fut ha nincs a usernél a runtime feltelepítve
-
martonx
veterán
winget-cli pont erre van, kb. 1 éve elégedetten használom. Igaz, a mai napig sincs meg minden rajta 100%-ban, pontosabban az elmúlt 1 évben 1 olyan alkalmazás volt, amit csak a scoop-ból (ez is olyan, mint a winget) tudtam beszerezni.
microsoft/winget-cli: Windows Package Manager CLI (aka winget) (github.com)
winget-pkgs/manifests at master · microsoft/winget-pkgs (github.com) - ezek vannak most rajta, percről percre bővül a lista. Ha te ezt meg tudod számolni, akkor sok sikertDe a belinkelt chocolatey is tök jó.
Nem fog hamvába halni, mivel ha figyelemmel követed, MS nagyon tolja a console irányt (windows terminal).
-
-
sztanozs
veterán
[link]
oka
* For applications that have been manifested for Windows 8.1 or Windows 10. Applications not manifested for Windows 8.1 or Windows 10 will return the Windows 8 OS version value (6.2). To manifest your applications for Windows 8.1 or Windows 10, refer to Targeting your application for Windows.
Identifying the current operating system is usually not the best way to determine whether a particular operating system feature is present. This is because the operating system may have had new features added in a redistributable DLL. Rather than using the Version API Helper functions to determine the operating system platform or version number, test for the presence of the feature itself. -
joysefke
veterán
Dictionary<string, object> -be deszerializálni nem megoldás?
Ez tartalmazná az első hiearchia propertijeit azok neveivel mint kulcsokkal és a hozzájuk tartozó "nem túl típusos" objektumértékkekkel. Ami kulcs hiányzik, olyan property nem volt a Jsonban.
Ha a második hiearchiaszint propertijei már erősen típusosak, akkor ott _gondolom_ már működni fog a castolás object-ről?
Ha a dynamic vonalon indulsz el, nézd meg az ExpandoObject-et. Ez is egy <string, object> dictionary valosít meg, többek között.
-
vlevi
nagyúr
Newtonsoft tud dynamic-t csinálni a jsonbol.
Tényleg nem célszerű sűrűn használni, de, ebben az esetben talán ez a jó megoldás.
A dynamicnal le tudod vizsgálni mindegyik részét, hogy null-e vagy sem, ha tömb, hány eleme van, satöbbi.
Nekem is volt olyan, ahol a httppost után visszakapott json a végeredmény függvényében más és más volt. -
Atomantiii
addikt
Jó hát nem fogom elvenni más programozóktól a kenyerüket, de nem is az a cél, hanem valamennyire bele szeretnék tanulni én is meló miatt is, hogy egyszerűbb dolgokkal elboldoguljak én is.
Illetve van egy saját programom is ami nagyon rég készült még visual basic 6-ban (egyébként még ma is működik win 10-en is), de elsődlegesen azt szeretném korszerűsíteni, ezért indultam el a windows forms app irányába. De most már így akkor értem, hogy hova írhatok és hova nem (célszerű).
-
joysefke
veterán
Nekem is Lenovo volt előtte (Thinkpad T470p szintén 45W procival -4/4 i5-). Ennek 14"-os létére jobb volt a hűtése mint a 15"-os fém és jóval nehezebb Dellnek. A gép egyszerűbb volt, de jobb.
A vállalati Windows alatt azt értem, hogy nálunk egy külön enrollment image van, amit fel kell dobni a gépre.
Nálunk szerencsére nem. Semmi custom vacak nincsen. Szinte minden megy internetről VPN nélkül AzureAD SSO-val. Mint egy álom.
A Windowsban a notepad is többet ér használhatóságban mint ez a noti. egy haszna van: A nagy fényes érintésérzékeny kijelző hétvégén vidéken jól kezelhető fekve az ágyban netezésre filmnézésre.
-
joysefke
veterán
Szerintem ez leginkább a vállalati Windowsok átka lesz.
Köze nincs a Windows-hoz. A Dell notebook (Precision 5540) egy szemét arra tervezték, hogy a 15-precre amire egy beszerzésért felelős vezető a kezébe veszi jó benyomást keltsen, nem arra, hogy ezt valaki 8 órában használni is akarja, főleg nem erőforrásigényes dolgokra.
Ha a Visual Studio beindul, (vagy bármi más) akkor a háttérfolyamatai felfalják a notit, pillanat alatt megeszi a turbó/hő-keretét és utána már csak 2.6GHz-en vagy alatta szerencsétlenkedik olyan hanggal mintha egy flex lenne. Es akkor már akkor sem fog felugrani 4.6GHz-re, ha olyan burstos folyamat van aminek tényleg kéne (UI vagy bármi aminek prioritása van a VS background taskokkal szemben).
Egyértelműen tervezési / beszerzési hibás ez a gép. Zabáló túlhevülő processzor egy vékony gyenge hűtésű házban.
Szerintem ez leginkább a vállalati Windowsok átka lesz.
Ezeken vállalati Windowst futtatnak. Az 5530-on konkrétan fagyott a Linux (nálunk). A Dell képzeletbeli operációs rendszerekhez fejleszti a gépeit?.
-
-
martonx
veterán
-
joysefke
veterán
Azure AD?
szvsz ezeket a tutorialokat lenne érdemes megnézni.
Alapvetően úgy működik a SSO, hogy van egy Identity Platform (IP) (e.g. Azure AD, vagy valami egyéb) aki a user adatbázist és az azonosításhoz szükséges információkat tartalmazza. Ez az IP ismeri a te alkalmazásodat, az ott be van regisztálva: egyebek mellett pld az IP nyilvántart az alkalmazáshoz egy redirect url-t amivel sikeres user-bejelentkeztetés után Http-redirectelheti a browsert vissza az apphoz.Az IP ezen felül nyilvántartja hogy az adott appnak a domain/tenant admin mit engedélyezett mihez milyen erősorrásokhoz legyen milyen hozzáférése/ vagy egyáltalán mihez legyen lehetősége a usertől hozzáférést kérni (admin consent-user consent).
Amikor a user be akar a Web-appodon jelentkezni, akkor a Web-app őt átirányítja (http-redirect) az IP bejelentkeztető oldalára, a user bejelentkezik. Ha szükséges akkor bejelentkezé után az IP a webalkalmazás nevében engedélyt kér a usertől az előre definiált adatok elérésére, a user ezt leokézhatja. Ha az IP boldog a bejelentkeztetéssel, akkor generál egy (vagy több) tokent. Ha OpenIdConnect a használt protokol akkor elsősorban egy ID-token generálódik (és esetleg másegyebek). Ez az ID token belekerül a Http-responsba amit az IP küld vissza a browsernek, egy Http redirect keretében amivel a usert visszaküldi as bejelentkeztetést kezdeményező Web-apphoz.
A WebApp az ID token birtokában annak tartalmából ellenőrizni tudja a böngészőt felhasználó user identitását.
=======
AzureAD-ra ingyen tudsz regisztrálni (Azure AD tenantot/domaint készíteni) ezután fogod és kipróbálod a kód sampleket (próbáltam működnek ootb), ezután megérted az OpenIdConnect use caseket (azonosítod a sajátodat) aztán úgy haladsz tovább. Ez az elmélet
NET + ASP Net Core jól működő middleware komponsnseket tartalmaz ezekhez
-
Keem1
veterán
Voltaképp megoldottam, a WebBrowser built-in client képes rá, de sztem IE 6.0 alapokon nyugszik és egy modern page egyrészt fosul néz ki rajta, másrészt a rengeteg jQuery, Javascript dobálja a hibákat.
Pedig van a gépemen Edge is, meg lehetne válogatni böngészőmotort Chrome, Firefox közül is.Ezekre valakinek megoldás? Vagy másik engine dobja a login page-et, vagy valahoy letiltani a kb. 15 db JS hibát?
De a lényeg: bent vagyok SSO-val és megvan a token is.
-
sztanozs
veterán
Azért az, hogy bármelyik be sem jelentkezett felhasználó megkapja a teljes identity táblát szerintem nem szabadna túlmutasson egy főiskolai beadandón.
Még ha működik is, én úgy húznám meg az illetőt, mint a szél. Ezeknek a sz@r berögződések a javítását aranyárban mérik, amint éles kódot készít az illető egy cég számára. -
Tomi_78
aktív tag
Utánanézek a könyvnek, bár nekem is vannak programozással (C++ és C# is) foglalkozó köteteim, igaz, végigolvasni még egyet sem volt időm vagy türelmem. Inkább célirányosan kutatok, ha szembesülök valami problémával, mert azt már nem kell nekem elmagyarázni, hogy mi a tömb, az elágazás vagy a ciklus, hanem inkább az olyan dolgokat, amik az adott fejlesztőkörnyezet sajátosságai, mint pl. hogy C#-ban hol kell elhelyezni a globális változókat a kódban vagy hogy bizonyos deklarálásokat milyen formában kell megadni.
Lehet, hogy velem van a hiba, hogy szájbarágósan és nem bikkfanyelven várom el a szakkönyvektől is a magyarázatokat, dehát ez van.
Az OOP lényegét is úgy mondanám el, hogy tagolva vannak benne a dolgok, az események csak azok szükségessége esetén hajtódnak végre, és nem folyamatosan, ciklikusan figyeli a program az összes tennivalót. -
martonx
veterán
Szia, így kell .net core-t service-ként linuxon futtatni: https://swimburger.net/blog/dotnet/how-to-run-a-dotnet-core-console-app-as-a-service-using-systemd-on-linux
-
joysefke
veterán
Net api analyzer. Keress rá, rakd fel a VSre és futtasd le mindenféle net standard és net core targetekre, compatibility pack opcióval és anélkül.
Egyébként mit csináltál? Átraktad a target frameworkot 4.5 ről netcore 3.1 re és most futási időben kapsz hibát? Hogyan futtattad ezt eddig linuxon?
Amikor átállítottad a target frameworkot, akkor kellett compatibilitás csomagot feltenni?
-
Alexios
veterán
Hát, elég egyértelmű az exception
.NET Core 3-al bekerültek olyan api-k is, amik nem platformfüggetlenek. Pl. WPF kódot lehet .NET Core 3-al írni, de ettől még nem fogod tudni linuxon futtatni, ha tippelnem kéne akkor a System.ServiceProcess is ilyen[link]
Szerintem ezt a linket nézd meg, itt jó eséllyel találsz megoldást -
joysefke
veterán
Mi az a fő indoka annak, hogy a(z elvileg még maintained) .Net xxx használata eretnekségnek minősül, és ami nincs Core alatt, az felejtős? Tehát mi az az ok, ami miatt a Core mindenképp használandó, más meg kerülendő?
Én inkább úgy fogalmaznék, hogy ha valami 3rd party packaget használsz, akkor ha az nincsen .Net Standard-re (lehetőleg max 2.0-ig) akkor az felejtős. Ha van, akkor az jó, mert egy esetleges net framework => net core át-targetelésnek nem fog útjában állni.Én semmilyen körülmények között nem használnék olyan 3rd party libet ahol nem látom azt, hogy az arra épülő kódomat át tudom változtatás nélkül emelni akkor is ha futtatókörnyezetet váltok alatta. (lépek frameworkről 4.X-ről Core-ra)
Ezzel párhuzamosan ha kódot írok próbálom úgy szervezni, hogy közvetlenül framework 4.x-et targetelő projekt(ekbe) minél kevesebb kerüljön és inkább átcsoportosítom olyan projektekbe amelyek netstandard2.0-át targetelnek.
-
Alexios
veterán
A .NET fw 4.8-al véget ért, security patchek érkeznek hozzá egy darabig, és kész. Idén jön a .NET 5, az már a core-ra épül, ez a jövő
Inkább pont fordítva, mi értelme .net fw-ben egy új projektet kezdeni?(főleg 4.5-ben)Ráadásul ha linuxon is akarsz .net-et futtatni, eleve nem látom értelmét mással kezdeni, mint az ott natívan támogatott .net core-al
-
martonx
veterán
Gyors Guglizás után a version keyword nem támogatott Microsoft.Data.Sqlite.Core alatt függetlenül az operációs rendszertől, más kérdés, hogy Linux alatt szerintem eleve helytelen útvonal az F:\chinook.db
Helyette Mode=ReadOnly kell a connectionstringbe? -
martonx
veterán
Ne mondd már: https://www.nuget.org/packages/Microsoft.Data.Sqlite.Core/3.1.8
Talán 2-3 évvel ezelőtt ez igaz is lehetett, manapság ami nincs .Net Core-hoz, azzal nem is érdemes foglalkozni. -
joysefke
veterán
A Task-on már én is agyaltam, de amikor próbálkoztam, valahogy nem jött össze.
Tessék, ez így működik, gyakorlatilag semmit sem változtattam azon amit bemásoltál. (net framework 4.7.2 + ASP net core 2.1)
A Console.Readkey(). tartja életben a main thredet, az pedig közvetve a webservice-t. élesben nyilván a console.Readkey helyett valami olyan szerver metódusod lesz, ami sosem ér véget, ezáltal a backgroundban futó futó webservice is életben marad.
szerk (ne az IIS profillal futtasd)
public class Program
{
static Task _webService;
public static async Task Main(string[] args)
{
Debug.WriteLine("WebGUI Teszt");
_webService = StartWebGui();
Console.ReadKey();
}
static async Task StartWebGui()
{
var hostBuilder = new WebHostBuilder()
.UseKestrel()
.UseStartup<Startup>()
.UseUrls("http://localhost:808/")
.Build();
await hostBuilder.RunAsync();
}
}
-
joysefke
veterán
https://www.nuget.org/packages/System.Data.SQLite/
Itt at írják, hogy elég nek a netstandard 2.0
-
joysefke
veterán
Mi lenne a proper way helyette?
Nem vagyok biztos benne (*).
De első körben én megnézném, hogy Program.cs.Main()-ben egy új meztelen Thread-et létrehozva és azon indítva a WebHost-ot, hogyan viselkedik a webserver. De én a Thredeket sem szeretem* Ami miatt bizonytalan vagyok, az az, hogy hogyan akarjuk/tudjuk kezelni a webservice esetleges chrashét. (egyáltalán akarsz-e ezzel foglalkozni):
Ha a background thread (ami a webservert futtatja) crashel (kezeletlen exception jön belőle) akkor érdemes lenne ezt az exceptiont valamilyen szinten elkapni, loggolni és vagy újraindítani a szervert vagy inkább az egész alkalmazást leállítani. Ez az egész opcionális, de alapvetően nem egészséges megadni az esélyét hogy egy bármilyen threadben kezeletlen exception ragadjon.
Ahogy nézem a BackgroundWorkeren van egy erre használható event: "RunWorkerCompleted" , az eventargs pedig: "RunWorkerCompletedEventArgs" ennek pedig van egy Error propertyje ami az esetlegesen elkapott exceptiont tartalmazza...
Ha Threadben gondolkodsz akkor jó pár alternatív opciód van amit mérlegelhetsz.
De én valószínűleg Task-ként futtatnám a webservert. A te esetedben nyilván az volt a "baj", hogy a WebHost.RunAsync() metódus által visszaadott Task-ot azonnal awaitelni akartad a fő száladon, így a fő programszál nekiállt async várakozni a Task elkészültére, ami ugye egy szervernél amíg le nem állítják nem fog megtörténni.
Ha a fő programszálad amúgy sem lép ki magától akkor szerintem a a WebHost.RunAsync() által visszaadott Task-ot sem kell nekiállnod awaitelni benne (ha tudod, hogy exception történt akkor érdemes) ettől függetlenül a viszakapott Task refernciáját nyilván elmented, hiszen ezen keresztül mindig tudod ellenőrizni az állapotát és szükség szerint awaitelve ki is tudod belőle szedni az esetleges exceptiont.
A fenti példában például a Console.ReadKey() blokkolja a fő szálat. Amíg a fő szál nem ért véget, addig a background threadeket (beleértve amelyek Task-ba vannak csomagolva) a runtime nem zárja be addiíg amíg azok nem fejezik be maguktól a futást.
-
joysefke
veterán
és ezek a sriptek amelyek átmennek ezen a security checken, ezek digitálisan alá vannak írva és a futtatókörnyezet meg is tíltja a nem aláírt scriptek futtatását, vagy a managerek szerint minden ami sript az biztonságos, minden ami bináris az nem (akkor is ha a saját tool- fejlesztőik írták)?
-
Alexios
veterán
Új hozzászólás Aktív témák
Hirdetés
● ha kódot szúrsz be, használd a PROGRAMKÓD formázási funkciót!
- Samsung Galaxy S23 Ultra - non plus ultra
- Spórolós topik
- Macron betiltatná az EU-ban a közösségi médiát a 15 év alattiaknak
- Max
- Debrecen és környéke adok-veszek-beszélgetek
- Google Pixel topik
- sziku69: Szólánc.
- Luck Dragon: Asszociációs játék. :)
- sziku69: Fűzzük össze a szavakat :)
- HiFi műszaki szemmel - sztereó hangrendszerek
- További aktív témák...
- BESZÁMÍTÁS! ASUS ROG Zephyrus GA403UV Gamer notebook - R9 8945HS 16GB RAM 1TB SSD RTX 4060 8GB WIN11
- Csere-Beszámítás! RTX Gamer Számítógép PC Játékra! I5 12400F / RTX 3070 / 32GB DDR4 / 1TB SSD
- Bomba ár! Lenovo ThinkPad T15 G1 - i5-10GEN I 16GB I 256GB SSD I 15,6" FHD Touch I Cam I W11 I Gari!
- ÁRGARANCIA! Épített KomPhone Ryzen 7 5800X 16/32/64GB RAM RTX 5070 12GB GAMER PC termékbeszámítással
- HPE Apollo 4200 Gen9 2U rack szerver, 1x E5-2620v4, 64GB RAM, 24x3.5" 2U-ban! ÁFA-s számla, garancia
Állásajánlatok
Cég: CAMERA-PRO Hungary Kft
Város: Budapest
Cég: PC Trade Systems Kft.
Város: Szeged