- Hamarosan megkezdődik a nubia 2,8K-s táblagépének szállítása
- Barátokká váltak az eddig rivális AI-óriások
- ASUS blog: Ideális olcsó utazós gép lett az új Vivobook S14
- Az Aura Displays hordozható monitorhármasa jól felturbózhatja a produktivitást
- Dual Mode-os IPS monitorral adott magáról életjelet a Gigabyte
- Házi hangfal építés
- Nvidia GPU-k jövője - amit tudni vélünk
- ASUS blog: Ideális olcsó utazós gép lett az új Vivobook S14
- AI-ra, játékra, mindenre kiváló lehet a Gigabyte új PC-je
- TCL LCD és LED TV-k
- AMD K6-III, és minden ami RETRO - Oldschool tuning
- Vezetékes FEJhallgatók
- Fujifilm X
- ASUS notebook topic
- SSD kibeszélő
Új hozzászólás Aktív témák
-
Keem1
veterán
válasz
martonx #10190 üzenetére
Végül rájöttem a megoldásra...
Itt találtam a következőt, ez oldotta meg nálam is a problémát.
services.AddSession(options => {
options.IdleTimeout = TimeSpan.FromHours(12);
options.Cookie.Name = ".yourApp.Session"; // <--- Add line
options.Cookie.IsEssential = true;
});Az "add this line" bekerülésével, majd cookie törlésével helyreállt a rend és működik minden.
-
Keem1
veterán
válasz
martonx #10161 üzenetére
&& Alexios
A redundanciát a következőre értem, illetve amit én szeretnék (egyszerűsíteni):
userdata jön az API response-ból, mivel ez egy API (abból is a Spotify-nál beloggolt user), így nekem kell eldönteni, hogy saját DB-mben létezik-e már.
Bárhogy is legyen, a userdata ojjektum adott, a friss, ropogós, API-ból érkező aktuális adat.
Ha létezik, ezt csak update-elni akarom a saját kópiámban, ha még nem, értelemszerűen létrehozni.Sematikusan valahogy így:
// userdata a method paraméterében
var existing = db.SpotifyUsers.Where(x => x.Username == userdata.Id); // Ezt még módosítom ahogy javasoltátok
if (existing != null && existing.Count()>0) db.SpotifyUsers.Update(userdata); //De ez nem megy, pedig jó lenne
else db.SpotifyUsers.Add(userdata);Tehát kvázi mindegy, hogy új adat-e vagy sem, nem kell új vagy update esetén sem újra értéket adnom ugyanannak a propertynek. Ha új data, akkor a teljes object az API returnból jön (userdata), ha létező, akkor pedig a kiindulási állapot a DB-ból lekért adat, és a különbséget (a userdata-hoz képest értve) tárolom le.
Ehelyett valami ezeréves szar trükközéssel próbálkoztál
Ez alatt amúgy mit értettél egészen pontosan? -
Keem1
veterán
válasz
martonx #10158 üzenetére
Van egy Spotify playlist automatizált motyóm, ami a Spotify API-val dolgozik.
Bár az elv több része is hasonlóan fog működni, most még a loggolt user (ketten csináljuk) DB-be letárolása megy, de a playlisteké is ugyanezen elv mentén fog.EF vagy EF Core?
EF Core 8Sajnos terjedelmi és egyéb okok miatt nem tudom bemásolni, de a logic a következő:
Van egy metódus: SpotifyLogin(SpotifyUser user)public DbSet<SpotifyUser>SpotifyUsers {get;set;}
[Table("spotifyusers")]
public class SpotifyUser()
{
[Key, Column("id")]
public int Id { get; set; }
[Column("tstamp")]
public DateTime? TimeStamp { get; set; } = DateTime.Now;
[Column("username")]
public string? Username { get; set; }
[Column("displayname")]
public string? Name { get; set; }
[Column("email")]
public string? Email { get; set; }
[Column("accesstoken")]
public string? AccessToken { get; set; }
[Column("followers")]
public int Followers { get; set; } = 0;
[Column("image")]
public string? Image { get; set; }
[Column("profileurl")]
public string? ProfileUrl { get; set; }
[Column("lastlogin")]
public DateTime? LastLogin { get; set; } = DateTime.Now;
}Ha az API-val sikerült beloggolnia (ennek a mikéntje jelenleg mindegy is), akkor lesz egy objektumunk, kb. ilyen:
var user = new SpotifyUser()
{
//itt az API által átadott adatok
}és ezután kerülünk abba a metódusba, ahonnan idéztem is már: SpotifyLogin(SpotifyUser user)
Éééés itt pedig ketté ágazik a dolog, de mint mindent, ezt is próbálom minél egyszerűbbre, univerzálisabbra, és ha lehet, a legkevésbé redundánsra csinálni.
Szóval letároljuk a usert DB-be, van egy user objectünk, amiről még nem tudjuk, hogy új-e vagy régi.
Ha új, egy új entry lesz a DB-ben, ha régi, akkor aktualizáljuk, de az ID-ja az változatlan marad.Innen már ismerős:
using (var db = new MySqlContext())
{
var existing = db.SpotifyUsers.Where(x => x.Username == userdata.Id);
if (existing != null && existing.Count()>0)
{
// Ez a bajos, ha létezik a user
// Ide valami olyan lenne jó, hogy:
// db.SpotifyUsers.Update(userdata);
// De erre csak egy új entry-t hoz létre a DB-ben
}
else
{
//Ez működik, ha még nincs ilyen user
db.SpotifyUsers.Add(userdata);
return (db.SaveChanges()>0? true : false);
}
}Szóval eddig jutottam, és a playlistek kezelése is kb ugyanígy fog kinézni, ha már létezik, akkor csak updateljük a followereket, a trackek számát, stb. Ha még nincs ilyen a DB-ben, akkor meg újként elmentjük teljes egészében.
Az update amúgy működne úgy, hogy igazából lekérem a létező usert, és soronként/propertynként "lemásolom" a datát, és úgy egy Update, de nem akarok ennyi redundanciát.
Ja, és meghagynám annyira univerzálisnak, hogy jelenleg működik MySQL és Sqlite DB-vel is, ami maradna, MySQL a fő cél, de backupnak meghagynám az SQLite-ot is.
Érthető valamennyire?
-
ReSeTer
senior tag
válasz
martonx #10138 üzenetére
Írtam már normálisan futó programot, class library-t most csinálnék először és gondoltam van valami módszer a debugolásra anélkül, hogy csinálni kellene egy külön konzol programot csak ezért.
Nem használhatok VS community editiont, mert az egyik ingyenességnek feltételét kimerítjük (túl nagy létszám).
Ok, köszönöm, akkor csinálok csak debugolásra egy külön programot.
-
pmonitor
aktív tag
válasz
martonx #10131 üzenetére
1 troll ilyeneket ír??? Azóta sem kaptam rá választ. Sztem. pedig ennek a nézetnek alapnak kellett volna lennie a C#-ban. Csak hát ehhez programozni kellene... Sokat...
A többire meg: No komment.. -
válasz
martonx #10125 üzenetére
Olvas(gat)om, de még az angolt is töröm, nem hogy érteném, hát még amit próbál elmesélni. Biztos jó, meg okos dolog, de most csak azt látom, hogy feleslegesen túlbonyolítja. Nézegetem a Graph Explorer-t, de így sem értem. Már a nevével is problémáim vannak. Miért grafikon?
Nekem nincs cégem, előfizetésem, azúrom, se semmim. Egy mezei ingyenes MS fiókom van. Ráadásul a OneDrive sem szinkronizálja le, a helyi meghajtóra, mert egy másik fiókban van az eredeti fájl, velem csak meg van osztva.Azért köszi, hogy próbálsz irányba állítani. Majd még olvasgatok. Meg a githubon is találtam egy Onedrive samples példakód gyűjtemény, hátha tanulok belőle valamit.
-
-
pmonitor
aktív tag
válasz
martonx #10097 üzenetére
Ez éppen egy nagyon jó példa arra, hogy még Asp.Net-en belül is annyiféle megoldás van, annyira szerteágazó, hogy rohadtul nem az a kérdés, hogy a byte array hány byte-on tárolódik, hanem lásd a fenti kérdést.
Amire még én, mint Asp.Net fejlesztő se tudok csukott szemmel válaszolni,Sztem. egyébként inkább olyanok végeznek programozási munkát, akik megírták az a programot, amit még te sem tudsz megválaszolni.
----------------------------------------------------------------------------------------------------------------------
Egyébként most pont 1 RPN-t próbálok készíteni/találni. Igazából ezeket az oldalakat találtam hozzá:
[link]
[link]
[link]Ezek egyike sem hibátlan, vagy csak az egyik rész van implementálva. Ráadásul az egyik Java-ban is van, amihez a tudásom gyakorlatilag nulla. Sztem azért ez is programozás. De láthatod, hogy mintakód legalább mindegyikben van.
Na meg a szakkönyveket is ha nézed, azokban is vannak példa/minta kódok.
Csak az a probléma, hogy a nagyon erős fáradékonyságom miatt értelmes munkát(akár fizikai, akár szellemi) csak igen keveset tudok időt szakítani. De mondjuk én nem igazán sietek sehová... -
joysefke
veterán
válasz
martonx #10100 üzenetére
Remélhetőleg valahol látszódni fog a useren, hogy min keresztül lépett be.
Erre a ClaimsPrincipal-on egészen biztosan lesz egy claim amit a HasClaim(claimType)-pal vagy valami hasonlóval lehet ellenőrizni.
Elsőre elég lehet egy if az onGetAccountban,
Azért érdemes a framework által biztosított auth check módszert használni, mert ha nem teljesül a policy, akkor a pipelineban a végrehajtás el sem jut addig hogy meghívódjon a Controller action method (gondolom Razornél is valami hasonló van annotálva), így hibázni sem tudsz és nem is kell a hiba kezelésével (redirect vagy error code) foglalkoznod.
-
pmonitor
aktív tag
válasz
martonx #10097 üzenetére
Nyilván fingom sincs fejből, hogy mi lehet az OnGetAccount-ban, mire lát rá, mit kellene pluszban behúzni ahhoz, hogy megjelenjen a User.
Akkor csak kényszerből válaszoltál? (bár lehet, hogy téged fizetnek, ezért válaszkényszerben vagy...) Mert csak úgy ex-has válaszolni..??
rohadtul nem az a kérdés, hogy a byte array hány byte-on tárolódik,
Hát hálózati/web programozásnál meg adatbázisok esetén tényleg nem. De desktopon annál inkább.
Ha annyira összetett a kérdés, akkor meg egyébként tényleg semmi értelme rizsázni róla írogatni(akár kérdezni, akár válaszolni). Sztem. Bár ahogy látom, itt inkább a "régi motorosok" írogatnak egymás között. Itt is a kérdező is, meg ti is régi motorosok vagytok. De látszik nagyon sok területre igaz az, hogy nincs rá régi motoros szaki.
Véleményem szerint az én példámból kiindulva. Mert ugye az adatbiztonság a béka hátsója alatt van. Engem pl. a fél ország lát, hogy mit csinálok. És akkor is meg tudták volna az adataim, ha nem adom meg. És a dolog érdekessége, hogy olyanok élhetnek vissza az adatokkal, ahová regisztrál az ember. Na de hát a velem történteket is látják az esetleges kezdők. Úgyhogy én ezért nem csodálkozom, hogy gyakorlatilag nincse friss újonc, meg ilyesmi. Nekem legalábbis ez a véleményem. De mondjuk ez nem az én bajom. Bocs az off-ért, de én így látom. Meg azt, hogy Magyar fórumokon legfeljebb recepteket érdemes keresgélni. Programozás témakörben nem
-
joysefke
veterán
válasz
martonx #10097 üzenetére
Én sem ismerem, hogy Razor-ban ez hogy van (vagy úgy általában a Razort), de feltételezem, hogy "claim" alapon könnyen megvalósítható az authorizáció, ahol végül [Authorize(Policy = "policyName")] attribútummal lenne dekorálva a top level Razor metódus.
A "policyName" policy pedig az ASP NET Core "User" claimjeit ellenőrzi. Az adott Identity Provider (Spotify) által történt azonosításra nyilván a Useren (ClaimsPrincipal-on) belül fog utalni egy claim érték, amit az adott policy ellenőrizni tud.
https://learn.microsoft.com/en-us/aspnet/core/security/authorization/claims?view=aspnetcore-8.0
-
petyus_
senior tag
válasz
martonx #9980 üzenetére
Köszi, végül megoldódott a dolog. Kipróbáltam a fontot chrome-ban, és nem működött. Kiderült, hogy a chromium nem támogatja az SVG fontot (van egy 10 éves bug
), Firefox amúgy tudja. Viszont támogatja a COLR táblás fontokat, megcsináltam így a fontot, és így már megjelenítette. De közben a bugból megtudtam, hogy a chromium Skia-t használ a rendeleréshez, úgyhogy kipróbáltam a rajzolós appomat, és az is müködik vele. Úgyhogy egyelőre maradok ennél a változatnál.
Köszi az inputot, előtte napokig nem tudtam rájönni mi lehet a megoldás
-
Keem1
veterán
válasz
martonx #9973 üzenetére
@martonx és @joysefke
Ahogy látom, mindketten átszervezést javasoltok. Úgyhogy akkor ebbe az irányba kell elindulnom.A logger azért pihent itt. hogy az egész webapp során egyszer kelljen felparamétereznem és könnyebben használhassam.
Az SQLite dettó, a db file természetesen configból jön, igen, nincs hardcodeolva.
Köszi srácok, akkor kicsit átalakítom a kódot.
-
-
Keem1
veterán
válasz
martonx #9941 üzenetére
Igen, vmi ilyesmi (leegyszerűsítve).
Az ASP.Net-et még csak most kezdtem el behatóan tanulmányozni, mivel az előző melóhely óta (idestova 4 éve) nincs szükségem igazán PHP-re, C#-ra viszont igen, így arra gondoltam, a webes tudásomat is .NET alapokon kamatoztatom, tekintve hogy a .NET 6 + ASP.Net Razor már frankón megy linuxon is (Apache mögött), így megvan minden téren az érdeklődés.namespace LearnASPNETCoreRazorPagesWithRealApps.Pages { public class IndexModel : PageModel { [BindProperty] public string Username { get; set; } [BindProperty] public string Password { get; set; } public string Msg { get; set; } public void OnGet() { } public IActionResult OnPost() { if (Username.Equals("abc") && Password.Equals("123")) { HttpContext.Session.SetString("username", Username); return RedirectToPage("Welcome"); } else { Msg = "Invalid"; return Page(); } } } }
-
Keem1
veterán
válasz
martonx #9937 üzenetére
Deee, az.
Még nem jöttem rá a megoldásra, de keresem..
Kicsit más: hogy tudok egy foldert buildeléskor az exe mellé tenni? Van egy www nevű folder, pár HTML template-tel, és azt is be kéne tennie fordításkor/publishkor oda, ahova a többi file megy.
Túrom a StackOverflow-t, de még nem találtam rá megoldást.
Ja, ez már nem ASP.Net, hanem Net 6.0 service -
CPT.Pirk
Jómunkásember
válasz
martonx #9918 üzenetére
Zsír, megnézem majd ha "kapok időt" ezzel foglalkozni a melóban. Azon kívül, hogy lesz TryPop(), jelent nekem valami előnyt az újabb .Net-re átváltás? Mert ha nem, akkor nem biztos, hogy érdemes.
Én egyébként leginkább Lazarushoz vagyok szokva, ott bonyolultabb GUI-s appokat is csináltam de ilyennel nem kellett foglalkozni, viszont mégis csak pár megás binárisokat fordított maximum, ráadásul ezt multiplatform tudta, azonnal tudtam Linuxra is fordítani ugyanazt a kódot.
-
Alcsi69
senior tag
válasz
martonx #9865 üzenetére
Igen, nekem is szimpatikusabb a C# mint a JS (legalabbis volt, mostanaban mar kezdek ezzel is megbaratkozni, csak hozza kell szokni hogy, hat nem is tudom hogyan fogalmazzam meg, nagyon strukturalatlan ossze-visszasagnak tunik), foleg mivel eddig csak C/C++ nyelvekkel foglalkoztam.
Igazabol nem is fog kelleni sok funkcionalitas majd ehhez a webapphoz.
C# jelenleg leginkabb backend fejlesztesre alkalmazzak ugye? Persze Unity-s dolgokon kivul.
-
válasz
martonx #9861 üzenetére
Eléggé háttérbe van szorítva most ez a projekt a cégnél, de amennyit eddig foglalkoztam a MAUI-val nekem nem tűnt rossznak. Jó, ha nem szereted a xaml-t az egy dolog, nekem se volt trivi első körben sok minden, de amúgy a Xamarin.Android-nál szerintem sokkal kényelmesebben használható. (Xamarin Forms-ot nem próbáltam)
-
Alexios
veterán
válasz
martonx #9855 üzenetére
Nincs túl nagy react native tapasztalatom, viszont Microsoft xaml frameworkökkel van elég sok ahhoz hogy ne akarjak új projektet kezdeni rajta, főleg mikor vannak más alternatívák amiket nem fognak holnap kukázni a következő 70%ban hasonló dologért, inkább csak ezért a kérdésem
vagy ha legalább a Microsoft átírná valami saját alkalmazását maui-ra hogy kicsit komolyabban vehető legyen hogy ezt már tuti komolyan veszik
-
bandi0000
nagyúr
válasz
martonx #9837 üzenetére
Igen, kb 30-70 arányban teszi ki az időm a .net, persze ettől tudhatnám, mármint csak a verziót nem tudom, magát a fogalmakat nem keverem azért
Amúgy igen, tegnap kipróbáltam, átraktam a tároltat abba az adatbázisba, ahol dolgozik, és úgy vissza is vonta. Nem én csinálom azt a részét, csak használom, de mint mondtam, nem marad így, .net be nem nyitok tranzakciót , nincs értelme, csak kívàncsi voltam, hogy kellene működnie
-
leslie23
tag
válasz
martonx #9788 üzenetére
Köszi, pont erre gondolok, csak nem tudom összehozni...
Egyszerűség kedvéért a GetInfo endpointot górcső alá véve, így néz ki a kód web reference használatával:MNBWebservice.MNBArfolyamServiceSoapClient Client = new MNBWebservice.MNBArfolyamServiceSoapClient();
MNBWebservice.GetInfoRequestBody b = new MNBWebservice.GetInfoRequestBody();
MNBWebservice.GetInfoRequest r = new MNBWebservice.GetInfoRequest(b);
MNBWebservice.GetInfoResponseBody re = Client.GetInfo(b);
és ennek kiváltását így próbálom összehozni:
string soapXML =
"<soapenv:Envelope xmlns:soapenv=\"http://schemas.xmlsoap.org/soap/envelope/\" xmlns:web=\"http://www.mnb.hu/webservices/\">" +
"<soapenv:Header/>" +
"<soapenv:Body>" +
"<web:GetInfoRequest/>" +
"</soapenv:Body>" +
"</soapenv:Envelope>";
using (WebClient client = new WebClient())
{
client.Encoding = Encoding.UTF8;
string uploadString = client.UploadString("http://www.mnb.hu/webservices/MNBArfolyamServiceSoap/", soapXML);
XmlDocument xmlDoc = new XmlDocument();
xmlDoc.LoadXml(uploadString);
}
Bizonyára triviális a dolog, de nem értem hogy pontosan melyik URI-t kellene céloznom...
Az endpointot? Az ASMX-et? Mindenre 404-et kapok...
-
joysefke
veterán
válasz
martonx #9772 üzenetére
Kérdése alapján már a táblákban kódolva van a struktúra (ki-kinek gyermeke) ezt kéne dekódolni és meghatározni, hogy a gráf csúcsai hogyan nézzenek ki kódba öntve, illetve hogyan tárolják a köztük lévő relációkat.
A kérdés nekem arra utal, hogy nem tudja, hogy a "normál" tömbökön túl van még dinamikusan bővíthető tömb, több dimentiós tömb illetve más ravaszabb struktúrák. Tapogatózik, hogy hogyan lehetne sok relációt flexibilisen tárolni, felépíteni.
Sokimm
Én azzal kezdeném, hogy
-(1)
körbenéznék, hogy milyen az általad használt UI-keretrendszerben támogatott gráf-megjelenító komponens van és melyiket szeretnéd viszont látni.-(2)
Megnézném, hogy annak mi a publikus interfésze, milyen formában várja a gráfot. Valószínűleg előírja a csúcsok és esetleg élek osztály-formátumát. Neked ehhez kell alkalmazkodni, ebben a struktúrában kell felépítened az adatbázis alapján a gráfot. Feltéve, ha nem akarsz saját UI- komponenst gyárani-(3)
Megnézném, hogy az adatbázis által kódolt gráf-csúcs szomszédossági információt hogyan tudom dekódolni és ebből előállítani azt a runtime-struktúrát ami a UI-komponensnek kell.Minnél közelebb van az adatbázis által kódolt struktúra ahhoz ahogyan a UI komponens várja annál inkább jobb pozícióban vagy. Minnél távolabb, annál rosszabb.
-(4)
Lehet hogy kell egy C# és/vagy gráfalgoritmus gyorstalpaló. Kérdésed alapján csak az egydimenziós tömböket ismered. Jó lesz ha képbe kerülsz a List<>, Queue<>, Stack<>, Dictionary<,>, HashSet<>, LinkedList<> típusokkal C# oldalon, ha csinálni is kell valamit a gráfokkal. Ugyanez vonatkozik a gráfalgoritmusokra. Feljebb volt is egy olvasós link #9770. -
Alexios
veterán
válasz
martonx #9716 üzenetére
Biztos mennie kell macen is, eleve a Xamarin Studiot nevezték át anno vs for mac-re, ios fejlesztésnél kell mac eleve hozzá a buildhez, bár hobbi projekthez én is vagy maui-t(mondjuk ebből még mindig csak previewk vannak..) vagy react nativeot kezdenék inkább tanulgatni már.
Hogy a témához is hozzászóljak, milyen macről van szó?
[link] Itt ugyan erről a hibáról írnak, esetleg erre rá lehet nézni -
bandi0000
nagyúr
válasz
martonx #9670 üzenetére
Hàt kvàzi ez egy 4-5 éves projekt, én csak belekontárkodok néha, igazàból az lenne a terv, hogy egy új igény esetén már csinàlnànk egy új service-t csakhàt mint minden cêgnél itt is az van ha a rêgibe mrgcsináljuk x óra, újat csinálunk akkor x+y óra ami mindenképp több :D
Akkor viszont megvan, ami deadlockot dob, az egy error log beküldés, úgy van megírva, hogy ha hiba keletkezik kliens oldalon, akkor küldi be, na mármost àltalában ha hiba van, akkor N ügyfélnél is van, szóval mimd bombàzza ezt az endpointot :D Amúgy is a kliens oldalt refactorálom, szóval ezt is átvarriálom akkor
Más csak elméleti síkon érdekel, nem nagyon találtam rá megoldást, meg nem is annyira kell, csak szebb lenne
Nàlunk elég szar az adatbázis struktúrája, és kvàzi úgy néz ki, hogy van hogy cégenként kicsit eltérnek a táblák, ami egy EF esetében gàz, mert lekérdezésnél rögtön kiakad, ha nincs olyan mező, erre van megoldás, vagy inkább szar az egész dolog amiatt mert ugyanazon adatbázisban eltérhetnek a táblák cégenként
-
coco2
őstag
válasz
martonx #9596 üzenetére
6-7 éves vagy sem, a compatibility page-en az van, windows 10 targeted, szerintem elvárhatnám, hogy aktív támogatása legyen. Vagy akkor írnák, how win10 1704-es verzióig támogatott vagy valami, és 19xx-el már ne próbálkozzon senki mint ahogy 2xxx-el sem. Akkor tudnám, mi újság. De semmi olyan verzió információ nincs ott, csak egészben windows 10. Szóval nem szép, amit művelnek.
@dqdb: Igen onnét szedtem a fail 2015-ös installokat. Most nézem hamarosan a menet közben leérkezett "vs2015.3.com_enu.iso"-t (7439K) amit @fatal linkelt.
-
Keem1
veterán
válasz
martonx #9564 üzenetére
Hátöö...
1.)
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).
Szóval eddig többnyire a .Net Framework 4.6, újabban 4.8-at használtam, mert ami nekem kellett, vagy kényelmesebben lehetett megoldani ebben (lásd a kókányolásnak nevezett console+window egy időben), vagy valami hibára futottam a Core 3.1-gyel, és miután sokadjára se sikerült megoldanom, visszaváltottam 4.8-ra, ahol az előbbi hibakeresés idejének egytizede alatt megoldottam.
2.)
Lehet hogy te kókányolásnak nevezed, én rugalmatlanságnak. Nem értem, mi a probléma egy hibrid programmal, ahol van konzolod és ablakod is. De ha elmagyarázod nekem, hogy mi ebben a kókányolás, akkor elfogadom. Például a goto-t kókányolásnak gondolom én is, hisz a kód átláthatatlan, a program működése meg kiszámíthatatlan lesz tőle.Nálunk amúgy aki még konyít a fejlesztéshez (értsd: cloudos, de tud programozni, viszont nem hivatásos programozó), az Pythonban csinálja ugyanezt. Én a Pythont nem ismerem, biztos jó, de én nem ismerem. Ott abszolút elfogadott ez a hibrid megoldás is. Ha kell, a console kikapcsolható, marad az ablak. De a console is hasznos néha.
-
vlevi
nagyúr
válasz
martonx #9555 üzenetére
"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ő."
Ha így nézzük, akkor pont, hogy zavaró. Aki járatlan a témában, azt hiheti, hogy az a 4.6 továbbfejlesztése...Én egyébként pont a napokban frissítettem otthon a VS2019-et, és abban Asp.Net Core-nek hívják, és külön van a .Net Framework.
De a framework kiválasztásánál már valóban úgy van, ahogy mondot, lehet választani, de az 5-s nek a nevében nincs benne a core. -
Keem1
veterán
válasz
martonx #9552 üzenetére
"A .Net 5.0 az a .Net Core-ra épül, viszont több mindent átemeltek a régi .Net Frameworkből, vehetjük úgy, hogy összeolvadtak."
Tehát vehetjük úgy, hogy a jövőben a .NET és a Core összeolvadva akármilyen néven (felőlem maradhat .NET, Core vagy Jóskapista is) fog folytatódni úgy, hogy az új framework tartalmazza mindkettő korábbi platform motyóit?
Ilyen jó hírt is régen hallottam... ha igaz.Egyébként a Core valaha része lesz a Win10-nek, mint most a .NETFW? Írnék én Core toolokat, ha rajtam kívül senki nem tudja futtatni. Telepíteni bármit csak ezért senki nem fog, akkor keresnek más megoldást. Ilyenek az emberek. Ráadásul a Mono miatt a régi FW-s cuccok még egy kaputelefonon is elfutnak. A Core meg nagyon válogat az eszközök között (ARM procira gondolok).
-
leslie23
tag
válasz
martonx #9524 üzenetére
Szia! Köszi, async-await lesz mindenképp. Viszont ha jól értelmezem, akkor az await ellenére másik gombra még rá tud kattintani a user, és le is fog futni mögöttes logika. Én lényegében ezt szeretném megakadályozni. Vagyis elkerülni azt, hogy ténylegesen fagyjon az UI, de nem engedni olyan műveleteket meghívni, amelyek csak úgy értelmezhetőek, ha a DataGridView már teljesen készen van.
-
pmonitor
aktív tag
válasz
martonx #9482 üzenetére
a *.designer.cs fileokat nem szabadna módosítani.
Dehogynem szabad. Pl. itt a microsoft hivatalos oldalán sincs külön .designer file.
Úgyhogy nyugodtan lehet. Csak tudni kell, hogy mit csinál az ember fia. -
joysefke
veterán
válasz
martonx #9434 üzenetére
Hmm nekem egy i7 9850H -val szerelt 15"-os "business" Dell noti van. Nem az én ötletem volt a régit erre cserélni.
A legkisebb terhelésre is behangosodik, ha pedig komoly terhelés van (nagy repo+ VS-E + debuggolás), akkor olyan mintha flexelnének mellettem. Az órajeleket egy pillanat alatt visszaveszi 2.6GHz-ra -lehet hogy az alá is-, aztán még a MS Teams is akad rajta. Miközben órákon keresztül úgy üvölt hogy a saját gondolataimat sem hallom...
Valószínűnek tartom, hogy ha kipróbálom, a PC-mben lévő RyZEN 3100 is tényleges munka alatt agyonveri ezt a mobil i7-et. Biztosan nem fog sem üvölteni vagy 3.9GHz alá visszevenni az órejelét.
Mindenki számára intő példa legyen, aki azt hiszi hogy ezek a "business" laptopok bírják a terhelést...
-
Keem1
veterán
válasz
martonx #9409 üzenetére
Persze, de a kollégákban nem ébresztene bizalmat, hogy az SSO-jukat elkéri a programom, ami aztán bármit kezdhet vele, akár tárolhatja is.
Nyilván ha akarnék, ezzel a módszerrel is vissza tudnék élni, de egy fokkal bizalomgerjesztőbb, hogy a szokásos login page jön be, jobbklikk-properties és látják a megszokott https://blablabla.com/login.jsp-t.
Ezért az ötlet az OAUTH2-féle login, ahol csak az access tokent (jelen esetben a cookie-ból) megkapva mehet minden tovább. -
Keem1
veterán
válasz
martonx #9406 üzenetére
Az ám, csak kell a login page, és utána a kapott cookie. A logina adataimat meg be kéne írni a webes login oldalon.
Nem elegáns, de a jobb megoldás megtalálásáig olyat csináltam, hogy a registryben egy dword-öt átírtam, így most IE 11 az emulált browser. A script hibák már elmentek.Amúgy nekem az az érzésem, hogy ez a WebBrowser control igazából legacy. Ami azért érdekes, mivel szerintem ilyenre sok esetben lehet szükség. Az Android erre kiváló példa: korábban ott is custom WebViewer volt, ami merőben más volt mint az általad böngészésre használt bármelyik webböngésző. Aztán ugye a WebKit alapú lett, amivel már gyakorlatilag bármelyik weboldal ugyanúgy működik, mintha a Chrome-ot használnád.
Az Androidos appok jelentős része használja 3rd party loginhoz. Pl. én se szívesen adom meg a Google accom adatait egy custom űrlapon, hanem teszem inkább a Google-nek, aki majd tájékoztatja a hívó weboldalt/applikációt arról, hogy sikerült-e a login, és amilyen adatokra neki szüksége van.
Nyilván egy ilyen embedded browserrel nem szörfölni akarok a neten, hanem ugyanilyen loginhoz akarom felhasználni. Ez szerintem fontos és nem hinném, hogy csak én hiányolom.
Most hogy megvan a cookie, már megy minden, a httpclientet simán felparaméterezem, még a user agentet is testre szabom. Cookie élettartam, stb. Ha a webbrowser is ugyanazt tudná, mint a httpclient (csak nyilván vizuális felülettel együtt), akkor nem lenne itt semmi gond.
-
Keem1
veterán
válasz
martonx #9306 üzenetére
Nem, Linuxon nem ezt a path-t használtam
Viszont megvan a hiba, nem a Microsoft.Data.Sqlite.Core kell, hanem a Microsoft.Data.Sqlite. Úgy műxik.
Vannak névkonvencióbeli eltérések a hivatalos verzió és a Microsoft sajátja között, azt már észrevettem. Na de ez a hülyeség, hogy nem mondhatom meg, hogy a DB-m milyen verziójú, ez nonszenszDe úgy tűnik, ezzel tényleg működik ARM alatt.
No offense, de ha már itt tartunk. 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 úgy tudtam, az adott programnyelv, környezet csak egy eszköz, semmiképp sem határozza meg a végtermék minőségét. Akár lyukkártyával is megoldhatnám az adott feladatot - más kérdés, hogy meg tudom-eIgen, tudom, a Core eleve opensource-nak, végre platformfüggetlennek készült (más kérdés, hogy eredetileg a .Net is, a Java babérjaira akart törni a 2000-es évek elején), de miért gáz jelenleg .Net-et használni helyette, ha egyébként tökéletesen működik és fejlesztik is?
-
Keem1
veterán
válasz
martonx #9297 üzenetére
Ezen már sokat gondolkodtam, de sok Nugetes motyóm nem kompatibilis vele. Pl. az SQLite (System.Data.Sqlite) sem, ARM-re nem volt 4.5-re sem, de oda simán fordítottam egyet az eszközön forráskódból. .Net Core-ra viszont eddig még nem sikerült.
(#9298) joysefke:
A Task-on már én is agyaltam, de amikor próbálkoztam, valahogy nem jött össze. Már nem emlékszem, hogy egy statikus metódussal gyűlt-e meg a baja, vagy azon aztán átlendültem és máshol akadtam el. Aztán végül a Bgwk lett az első, ami működött.Sajnos nem vagyok programozó, csak egy lelkes amatőr, így ha valahol elakadok, hajlamos vagyok rövidebb utat választani
Viszont a C#-ot szeretem, így néha olyan célra is ezt választom, ami szkriptnyelvből, Powershellből is megoldható lenne (melyekhez még a C#-hoz képest is kevésbé mozgok otthonosan).
-
fatal`
titán
válasz
martonx #9289 üzenetére
Mondjuk, amihez scala.js-t használtunk az bőven 10k+ sor és egy igen bonyolult űrlap több száz, adott esetben többezer mezővel, amik között rengeteg validáció és kapcsolat van. A backend meg ASP.NET MVC razorral (2015-ös projekt), szerintem indokolt volt.
Egyébként már az, hogy típusos a frontend szerintem életmentő, emiatt akár pársoros js esetén is indokolt lehet a ts. Persze angular meg egyebek sok esetben felesleges.
(#9291) harylmu: Én láttam már apró weboldalt is angularral, ami szerintem is overkill.
-
Keem1
veterán
válasz
martonx #9278 üzenetére
Nyilván az is a nagy előnye, hogy baromi elterjedt. Szerintem Windowson kívül ott van minden rendszeren preinstalled. Pl. a Pi-hez "tartozó" Raspbianon is out-of-the box ott volt a Python.
Ugyan Pi-re simán feldobtam a Mono-t, még package managerrel is simán megy a saját appom, de én informatikus vagyok, nem hiszem hogy egy mezei usernek ez menne bármilyen Linuxon.
Uppsz, sorry, ez nem válasz akart lenni
-
zsolti_20
senior tag
válasz
martonx #9258 üzenetére
Hmm ez eleg jo megoldasnak tunik. Szuksegem van egy c# programra ami kikuldi soros porton a cella tartalmat, mert az excel vba minden kuldesnel felepiti a sorosport kapcsolatot ami kb 1mp-et vesz igenybe.
Viszont nyitva tudom tartani vele a portot a c# szamara ami remephetoleg nem kivanja megnyitni ujra a kapcsolatot igy lentebb tudom tolni kicsit ezt a kesleltetest. -
zsolti_20
senior tag
válasz
martonx #9251 üzenetére
Sajnos nem találtam még most sem megoldást hogy tudnám kiolvasni a cella tartalmát mentés nélkül. A gond az, hogy ez változik minden 0.5mp-ben. Így ha a mentést még bele rakom VBA scriptben akkor pár érték kimarad.
Az excelre viszont szükségem van, mert csak ezzel tud kommunikálni egy másik script. -
joysefke
veterán
válasz
martonx #9248 üzenetére
Hát én a helyedben Asp.Net Core 2.1-el állnék neki
Végül az lesz.
Ugyanakkor nem értem, hogy miért erőlteted a netstandard2.0-át. .Net 4.7.2 netstandard 1.x-ig jó, én a meglévő komponensek esetében megelégednék netstandard 1.x-el, amit viszont zokszó nélkül tud használni a .Net Core 3.1 is.
A netstandard2.0-t a Core 3.1 és a net472 is ,egvalósítja. Semmit nem nyernénk, ha 2.0 alatti standardot próbálnánk targetelni, csak saját dolgunkat nehezítenénk meg.
A konvertálás úgy fog zajlani, hogy projektről projektre (levelekkel kezdve amelyeknek nincs dependenciája másik saját prokjekt felé) egyenként át lesz állítva a csproj formátum modernre (SDK style és package reference) a <TargetFramework> property pedig net472-től netstandard2.0-ra. Mivel a netstandard2.0 API szűkebb API mint a net472 ezért lesznek olyan hívások amit ki kell szervezni vagy ki kell vágni vagy helyettesíteni kell mással, mert nincsen standardes megfelelője. Minnél alacsonyabb standardet próbálnánk targetelni, annál nehezebb dolgunk lenne, mert annál több frameworkos API-nak nem lenne standarden megfelelője. Így is nehéz dolga lesz annak aki csinálni fogja, már volt egy nekifutás...
A saját új class library projekteknél pedig azért nincsen értelme netstandard2.0 alá targetelni, mert az összes futtatókörnyezet ami képben van (jelenleg a net472 és később meg valami core-latest) megvalósítja a standard2.0-t.
-
-
boorit
csendes tag
válasz
martonx #9138 üzenetére
Nem tudom mire gondolsz
. Van egy oldal, ahol egy táblázatom, amiben szerepelnek objektumok. Mellette pedig van egy form, amivel újat lehet létrehozni. Létrehozok egy újat, akkor meghívom a GETet, hogy frissüljön a táblázat (erre szeretném használni a signalR-t). Ez szerinted rossz pattern?
Egyébként pedig van egy global gomb az appban, amire kattintva feljön egy dialog, és innen is lehet létrehozni új objektumot, viszont mivel ez bárhonnan elérhető, ezért itt felesleges lehet a GET hívás, ha nem is látszik az adott táblázat. Persze lehetne erre is egy logika, hogy mikor hívja meg a GETet, más megoldást nem jut rá eszembe.
-
coco2
őstag
válasz
martonx #9118 üzenetére
WCF-re rákerestem, és ilyesmit találtam: [link]
Then came .NET Core and the story changed: WCF was not here, or, to be precise, there was no server-side WCF, only client-side, meaning, you could write a WCF proxy to access aSOAP or REST web services, but you could not implement one.
Nekem szerver komponens is kell
-
-
joysefke
veterán
válasz
martonx #9104 üzenetére
Mert nem tudom, hogyan/milyen alapon oldjam meg az inter-processz kommunikációt ha a REST-szervíz külön processzbe kerülne. A REST szerviz nem írhatja/olvashatja közvetlenül az adatbázist/adatbázisokat az összes hozzáférésnek mindenképpen keresztül kell mennie a jelenlegi alkalmazás logikán, ez elvárás.
Illetve akárhogy is lenne ez, ehhez mindenképpen hozzá kell nyúlni az apphoz (mivel a legacy interfészt nem használhatom), ezért gondoltam, hogy ennyi erővel akár egyből az applikációba bele lehetne rakni a REST szervízt.
Egyébként nem hiszem, hogy késleltetés/throughput szempontjából a kommunikáció túlságosan kritikus lenne (ha az lenne, akkor már a külső REST interfész is problémás lenne).
Tehát ha útba tudsz igazítani, hogyan oldjam meg minimális invázióval, hogy az applikáció a külön processzben futó REST-szervizzel tudjon kommunikálni, annak örülnék
Meg minden ötletnek ami jobb mint a jelenlegi.
-
-
bandi0000
nagyúr
válasz
martonx #8975 üzenetére
igazából ugyan az
Migrációban le van írva, hogy mi mit váltott
De a működése úgy volt a 2.2-ben, hogyha csak az app.UseMvc() volt meghívva, útvonal infók nélkül, akkor nem lehetett elérni "manuálisan" a végpontokat, csak ha az egyes controllerek, és metódusaik fel voltak paraméterezve attribútummal, viszont ha így lett megadva:
app.UseMvc(routes =>
{
routes.MapRoute("default","{Controller="Home"}/{action = index}/{id}");}
);
Akkor innentől kezdve működött a controllerName/methodName a böngészőben ,és attributum nélkül elérhetőek voltak a függvények
Az új verzióba csak ez a változat van :
/*app.UseEndpoints(endpoints =>
{
endpoints.MapControllerRoute(
name: "default",
pattern: "{controller=Home}/{action=index}/{id?}");
});*/
Most találtam egy olyat, hogy lehet használni a UseMvc()-t, ha a configService-ben kikapcsolom a routingját
services.AddMvc(option => option.EnableEndpointRouting = false);
De ez olyan toldozgatás foltozgatásnak tűnik, egy olyan egyszerű dolognál, hogy csak az attributumokat használhassam
Bocs lehet én agyalom túl ezt a kérdést, sőt biztos is, csupán érdekelne hogy miért csinálták így
-
bandi0000
nagyúr
válasz
martonx #8971 üzenetére
igen ezt néztem én is, enyém is most per pill ilyen
Elvileg úgy érném el az adott Controllert, hogy localhost.../ControllerName/MethodName nem?
Most létrehoztam egy MVC projektet, abba services.AddControllersWithViews(); ezt haszálja és így hívja
app.UseEndpoints(endpoints =>
{
endpoints.MapControllerRoute(
name: "default",
pattern: "{controller=Home}/{action=Index}/{id?}");
});
Lehet akkor ezzel lehet csak hívni, ha tartozik hozzá View is, mindenesetre ránézek akkor hátha
petyus_: Köszi, közben rájöttem... lesz itt még szenvedés úgy érzem
-
joysefke
veterán
válasz
martonx #8895 üzenetére
Úgy hogy már mindenki a böngészőből elérhető adatokhoz -kivéve office- szokott, kissé ósdinak tűnik egy weblink helyett egy file store elérést megosztani egy futtathatóhoz, ami nyilván minden alkalommal szépen letöltődik a user gépére hogy azon elinduljon.
Ha ezen túllépünk, akkor most hogy a Core framework új 3. verziójával elérhető lesz a self contained opció illetve jelentősen visszanyesik a self contained package méretét illetve a Core 3 már támogatni fogja a Windows desktop appokat, végül is nem olyan elvetemült opció ez:
Egy pár 10MB-os self contained app aminek nincsen dependenciája a futtató gépre installált .NET környezet felé az kb nem romlik el míg világ a világ, míg a másik oldalon a böngészők is változnak ez pedig elronthatja a felhasználói élményt.
Ú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!
- LG 55G3 - 55" OLED evo - 4K 120Hz 0.1ms - MLA - 2000 Nits - NVIDIA G-Sync - AMD FreeSync - HDMI 2.1
- BESZÁMÍTÁS! Samsung Galaxy A34 5G 128GB mobiltelefon garanciával hibátlan működéssel
- ÁRGARANCIA!Épített KomPhone Ryzen 7 7700X 32/64GB RAM RX 9070 16GB GAMER PC termékbeszámítással
- BESZÁMÍTÁS! 16GB (2x8) G.Skill Trident Z RGB 4266MHz DDR4 memória garanciával hibátlan működéssel
- BESZÁMÍTÁS! ASUS STRIX B650E-E R7 7700 64GB DDR5 1TB SSD RTX 3080 10GB Thermaltake Ceres 500 850W
Állásajánlatok
Cég: CAMERA-PRO Hungary Kft
Város: Budapest
Cég: Liszt Ferenc Zeneművészeti Egyetem
Város: Budapest