SweClockers drop!

Inlägg

Inlägg som SanguinSE har skrivit i forumet
Av SanguinSE

Tjena,

Har ett MSI 1060 6GB kort du kan få för 1500:-
https://www.msi.com/Graphics-Card/GeForce-GTX-1060-6G-OC
Finns i centrala Göteborg

Av SanguinSE
Skrivet av Durkadur:

Sen release i april förra året är det nånstans mellan 35-40 spel som har DLSS 2.0. För tillfället är det 7 spel som har FSR. Det får man ju säga är en ganska liten andel av alla spel som släpps. Det ska bli intressant att se dels hur de båda teknikerna utvecklas men också hur många spel som kommer med stöd.

Man kan ju hoppas att FSR följer samma utveckling som Freesync. Även om det var lite rörigt i början som det ofta kan vara med en ny öppen standard, så idag är det ingen skillnad i funktionalitet mellan en Gsync-skärm och en Freesync Premium. Den största skillnaden är att Gsync generellt är dyrare och endast kan användas med Nvidia, medans köper du Freesync kan det användas till både Nvidia och AMD. Det är spännande att Intel har uttalat sig positivt om både Freesync och FSR.

Om du har en G-Sync-modul i skärmen får du även variable overdrive, alltså att skärmen anpassar nivån på overdrive med uppdateringsfrekvensen vilket reducerar ghosting/overshoot. Detta saknas på skärmar med bara Freesync (eller "G-Sync compatible").

Av SanguinSE

Jag kan hålla med alla andra i tråden angående ålder etc. - Inga problem.
Om du väljer mellan frontend och backend skulle jag säga att backend skulle passa dig bäst om du är mer "konservativt" lagd. De projekten lever längre och har inte samma, korta cykel som frontend när det gäller nya tekniker. Det mesta är redan optimerat och det finns guidelines för hur man gör saker på bästa sätt. Att kunna SQL är i så fall meriterande då det alltid ligger en databas i botten oavsett vilket programmeringsspråk som används.

Av SanguinSE
Skrivet av Thomas:

Man kan deklarera en variabel "inline" med out genom att använda var out. Alltså

int.TryParse(Console.ReadLine(), var out användarensSvar);

... så behöver inte "användarensSvar" finnas innan den raden.

Du råkade visst byta plats på out och var där
Men, ja, så kan man göra. Jag vet dock inte hur detta hanteras i en loop, om man då skapar en ny variabel i varje iteration som GCn sedan behöver ta hand om.

Efter lite googlande; nej, det skapas tydligen inga onödiga, kortlivade variabler på det sättet, det blir samma resultat i IL. Där lärde man sig något nytt

Edit: Råkade använda code istället för cmd...
Edit2: Man kan väl säga att det är snäppet bättre att deklarera variabeln på det sätt som Thomas visade då man i så fall indikerar i vilket scope den används.

Av SanguinSE
Skrivet av KodarPolle:

"Ni ska nu kontrollera så att användaren bara skriver in ett tal mellan 1 och 25.
Detta lösas enklast genom att man styr inmatning till respektive position i vektorn med en for-loop. I
for-loopen finns en variabel (förändring, exempelvis i) som kontrollerar vilken position man för
närvarande ”pekar på” i vektorn.
Om talet som användaren skriver in är under 1 eller över 25 kan man minska värdet i variabeln (i) som
styr positionen med ett (1) enligt figuren nedan. Då ”backar” vi ett steg i vektorn.
Alltså – för varje varv som for-loopen itererar så kommer värdet på variabeln som styr förändring att
öka med ett (1). Men om vi skriver in ett ”olämpligt” värde så kommer värdet att minska med ett (1) i
koden inuti loopen.
Alternativet är att ni sparar det inmatade talet i en temporär variabel och lagrar det i vektorn om det
uppnår kraven (det vill säga är mellan ett och tjugofem)."

Så den säger väl inget om tryParse eller try-catch egentligen. Så om jag ska köra tryParse istället, måste jag då deklarera en variabel? tex användarensSvar? Eller kan man göra det utan att behöva deklarera ny variabel? Försökte utan men gick inge vidare ..

Man kan plocka bort användarSvar-variabeln och göra så här istället

for (int i = 0; i < lottoBoll.Length; i++) { Console.Write($"Spela på nummer {i + 1}: "); int.TryParse(Console.ReadLine(), out lottoBoll[i]); if (lottoBoll[i] < 1 || lottoBoll[i] > 25) { Console.WriteLine("Vänligen ange ett heltal mellan 1 och 25"); i--; } }

Men som jag skrev i ett annat svar är inte detta en lösning jag personligen skulle föredra då man i det här fallet använder arrayen för flera ändamål vilket gör det stökigt att felsöka och svårare för någon annan att följa. Läraren borde inte ha föreslagit det som en primär lösning. Visst, man ska inte deklarera massa variabler i onödan, man kan ofta komprimera ihop flera kodrader till en istället för att mellanlagra värden i variabler, men om någon annan (eller du själv om några år) ska läsa koden blir det då mycket svårare att förstå vad som händer. Det är en avvägning man lär sig med tiden, efter att man sett sin egen, bortglömda, kod ett antal gånger Men att använda samma variabel (eller array) för flera ändamål, som läraren föreslår här, är definitivt en dålig idé. Undantaget skulle vara om man kodar något extremt CPU-intensivt, t.ex. en 3D-motor, där varje operation man kan undvika resulterar i bättre prestanda, men sådant kodar man knappast i C#. För vanliga affärsapplikationer / websidor är läsbar kod a och o.

Av SanguinSE
Skrivet av perost:

Jag antar att out kräver att namnet som används är en variabel, och t.ex. lottoBoll[i] är inte en variabel utan ett uttryck. Så troligtvis behöver du en variabel för att lagra inmatningen innan du lägger in den i arrayen. Jag kan egentligen inte C#, så något får gärna rätta mig om jag har fel.

Men om du väljer den vägen så kan du även försöka implementera alternativet som den sista meningen i uppgiften nämner. D.v.s. istället för att alltid köra i++ i for-satsen och behöva köra i-- när något går fel så kan du välja att köra i++ endast när du lagt in ett giltigt värde i arrayen (om du inte redan har koll på det så är delarna i for-satsen valfria, for(;;) är t.ex. en giltig for-loop). Koden blir lite mer robust om man gör så, eftersom du då kan lägga till mer felhantering senare utan att behöva kopiera i---raden överallt.

Nejdå, du kan använda lottoBoll[i] istället för variabeln användarensSvar i TryParse, det var nog bara jag som misstolkade frågan. Då kan man helt plocka bort både den variabeln och else-satsen i if:en, men jag skulle personligen inte gjort så. Det blir bara krångligare att läsa koden då när man använder arrayen för att både spara korrekta värden plus det senast inmatade värdet som behöver kontrolleras. När man kommer tillbaka till sin kod 10 år senare upptäcker man att lättläst kod är en miljon gånger bättre än kod där man sparat ett par rader bara för att det gick.

Av SanguinSE
Skrivet av KodarPolle:

Om jag ska använda mig av int.TryParse så måste jag alltså deklarera en variabel? Tex int användarensSvar; ? Eller kan jag lösa det utan att deklarera en variabel? ..

Testade din kod nyss. Alltså säger den ifrån allt som skrivs så länge det inte är mellan tal 1-25. På så sätt slipper man ha en try-catch för både "vänligen ange heltal" och "För högt/lågt tal" eller hur?

Så jag bör använda mig av tryParse om det handlar om sådana här saker istället?

Nej, du måste deklarera en variabel om du vill använda TryParse. Om du kikar på raden

int.TryParse(Console.ReadLine(), out användarensSvar);

så ser du att det står "out" innan variabelnamnet. Det innebär att funktionen placerar ett värde i variabeln du skickar in, du måste alltså "ta emot" det värdet med en tidigare deklarerad int-variabel. Detta är rätt ovanligt sätt att skicka runt värden på, i princip är detta det enda stället jag generellt använder den metoden. Anledningen till att det görs på det sättet här är att funktionen i sig, int.TryParse, returnerar en bool som indikerar om den lyckades konvertera indatasträngen, här console.ReadLine(), till en int eller inte. Jag ignorerar dock det värdet då returvärdet i användarensSvar ändå sätts till 0 om den misslyckas med att parsa strängen, vilket kontrolleras efteråt. Vill man att användaren ska kunna skriva värdet 0 måste man dock se om funktionen lyckades eller inte, typ

if (int.TryParse(console.ReadLine(), out användarensSvar)) ...

Citat:

Testade din kod nyss. Alltså säger den ifrån allt som skrivs så länge det inte är mellan tal 1-25. På så sätt slipper man ha en try-catch för både "vänligen ange heltal" och "För högt/lågt tal" eller hur?

Ungefär så. Man slipper try-catch för att man använder TryParse istället för Parse, sedan utnyttjar jag det faktum att TryParse returnerar 0 om den misslyckas, alltså ett värde utanför det godkända intervallet 1-25, för att kontrollera om man skrivit ett giltigt tal. På det sättet behöver man inte både verifiera att det är ett tal och att talet är mellan 1 och 25, utan man kan göra det i ett steg.

Det är alltid bra att veta vad funktioner returnerar, inte både när den lyckas/misslyckas, men även om den kan kasta ett exception eller inte. Parse kastar exception medan TryParse inte gör det.

Citat:

Så jag bör använda mig av tryParse om det handlar om sådana här saker istället?

Hehe... ja... i princip... Men det är inte så att Parse är en meningslös funktion. Det är betydligt bättre prestanda i Parse-funktionen, så om jag t.ex. skulle läsa in en stor textfil där jag behövde konvertera massa värden till int och jag var relativt säker på att den var i rätt format så skulle jag använda Parse med en try-catch. Ska man bara ta emot data inskriven av en användare är TryParse rätt val.

Av SanguinSE

Jag skulle rekommendera att du använder int.TryParse istället för att använda int.Parse då det medför att du måste hantera eventuella fel med try catch. Exceptions ska inte användas som ett normalt programflöde, utan när oväntade fel uppstår, t.ex. om man plötsligt tappar nätverksanslutning.

Det verkar som om du faktiskt vill lära dig, inte bara kopiera en färdig lösning, så här kommer en lösning du kanske vill kika på

static void Main(string[] args) { var lottoBoll = new int[10]; int användarensSvar; Console.WriteLine($"Hej och välkommen till Lotto, låt oss spela!\nVälj {lottoBoll.Length}st nummer mellan 1-25\n"); for (int i = 0; i < lottoBoll.Length; i++) { Console.Write($"Spela på nummer {i + 1}: "); int.TryParse(Console.ReadLine(), out användarensSvar); if (användarensSvar < 1 || användarensSvar > 25) { Console.WriteLine("Vänligen ange ett heltal mellan 1 och 25"); i--; } else { lottoBoll[i] = användarensSvar; } } int slumptal = new Random().Next(1, 26); bool spelarenVann = false; for (int i = 0; i < lottoBoll.Length; i++) { if (lottoBoll[i] == slumptal) { spelarenVann = true; break; } } if (spelarenVann) { Console.WriteLine($"\nBINGO! Det rätta talet var {slumptal}"); } else { Console.WriteLine($"\nIngen bingo denna gång, det slumpade talet var {slumptal}!"); } Console.WriteLine("\nSpelet är slut, välkommen åter!"); Console.ReadKey(); }

Här använder jag int.TryParse för att få tag på värdet användaren skriver in och break för att sluta leta efter träffar om man gissat rätt siffra. Det är kanske inte exakt så här jag skulle löst det själv, men jag försökte hålla mig så nära din kod som möjligt, samma variabelnamn och struktur.

Av SanguinSE

Enklast är ju att installera MSI Afterburner tillsammans med Riva TunerStatisticsServer och aktivera OSD med CPU och GPU-belastning. Då kan du i realtid se om CPUn håller tillbaka grafikkortet medan du spelar. Om det är hög FPS i 1080p du är ute efter är det dock sannolikt att det är just den gamla processorn som är problemet.

Av SanguinSE
Skrivet av Zemlan:

Lär inte bli en uppföljare till Andromeda tyvärr med tanke på att alla DLC planer lades ner och de lade hela ME på is efter Andromeda. Nu vet vi att ett nytt ME är på G men det utspelar sig efter ME3 i vintergatan snarare än Andromeda eftersom Andromeda verkar helt övergivet för tillfället.

Detta tack vare allt hat, alla memes och youtubers hänsynslösa täckande av varenda litet problem med spelet som folk vände till att spelet var uruselt på alla punkter på något vis, så EA drog ur kontakten. Fel väg att gå vilket de nog lärt sig nu hoppas jag.

Spelet hade sina problem men de patchade det värsta ganska snabbt men folk bara fortsatte med hattåget. Man hade bestämt sig att Andromeda skulle sänkas helt enkelt. Och man lyckades...

Som Mass Effect fan har jag hatat alla hattåg med folk som inte kan bilda sig en egen uppfattning ännu mer sedan dess. Kan inte med dessa viktigpettrar som bara glider med flocken i såna här situationer och sen utan att själva ha spelat spelet sprider skiten vidare! Så desperata att vara del av något i sina sorgliga liv att de lever för dessa drev som kommer och går antar jag. Jag fattar allvarligt talat inte mig på beteendet.

Nu senast var det Cyberpunk men det har ju lagt sig nu så man är nog på jakt efter något nytt som är coolt att hata snart. Bara vänta och se. Det är på riktigt patetiskt och extremt förutsägbart hur många beter sig.

Nåväl. Andromeda i sig efter patcherna var helt okej faktiskt. Jag insåg att det var problem så jag avvaktade lite, som en normalt funtad person borde reagera, precis som jag gör med Cyberpunk, det räcker gott utan ett jävla drev mot spelet och utvecklarna....Det är förstås inget ME1-3 men det är ändå helt okej, en stadig grund att bygga vidare på enligt mig! Tycker de flesta jag läser som faktiskt spelat Andromeda säga som jag faktiskt. Det är få som faktiskt spelat det som med passion hatar det vad jag sett.

"My face is tired"-memen var välförtjänt, men jag tycker heller inte spelet var dåligt på något sätt. Såg allt hat mot det efter att jag spelat igenom det och förstod inte alls var det kom ifrån. Det enda som direkt störde mig var craftingsystemet som var helt horribelt, men story och gameplay tycker jag inte det var några större fel på.

Rörande Cyberpunk kan jag mer förstå varför folk blev förbannade. CDPR sade så mycket innan om hur de var klara med storyn och bara filade till kanterna och att det skulle släppas när det var klart, men när man väl fick spela det var det långt därifrån. När man trissar upp förväntningarna på det sättet och sedan inte levererar blir påföljden därefter. Hype train förvandlas till Hate train.

Hur som helst ser jag fram emot den omgjorda trilogin, även om jag inte kommer ihåg så mycket från originalen, minns jag att jag tyckte om dem. Det som stod ut mest var att Martin Sheen spelade the elusive man i ME:3, vilket höjde det spelet till skyarna för min del

Av SanguinSE
Skrivet av ZalZeRoz:

Jo lite som du säger, förstår inte dreven. Visst man lägger x antal hundra kronor på ett spel och man har väl en viss förväntan. Men utvecklarna blev ju tvingade till att använda Frostbite motorn av EA vilket var en av grundorsakerna till att det blev som det blev. Apex Legends är ju ytterligare ett exempel på när EA tvingat in Frostbite och resultatet blev därefter.

Jag tycker personligen storyn i Andromeda är guld och vill verkligen att det byggs vidare på den. Hoppas att det händer och sker.

Du tänker nog på något annat spel än Apex Legends, det använder Valves Source Engine, inte Frostbite. Du menar kanske Anthem?

Av SanguinSE

Om du vill spela i 1440p och siktar på 144Hz kommer grafikkortet vara den viktigaste komponenten, det är bättre att lägga krutet där än att köpa den snabbaste CPUn eller minne med högre hastighet. Det beror lite på vilket spel du tänker på, e-sporttitlar så som CS:GO, Overwatch etc behöver inte det snabbaste grafikkortet, men om du vill spela annat, t.ex. CP2077 eller AC:Valhalla kommer du märka mycket större skillnad med den senaste generationens kort.

Själv sitter jag med en R7 2700 och ett 3080 och jag är inte i närheten av CPUn begränsar min FPS i spelen jag spelar. CP2077 rullar fint med RT i 1440x3440

Av SanguinSE

Vad ska du använda datorn till? Om det är spel; vilken upplösning är ditt mål, alltså vilken skärm tänker du använda?

Du lägger väldigt mycket krut på CPU och SSD, jag skulle istället lagt mer på grafikkortet. Både nVidia och AMD lanserade nya grafikkort (RTX 3000-serien och Radeon 6000-serien) under hösten och jag skulle helt klart rekommendera att köpa någon av dessa (när de finns i lager igen). Jag skulle också väntat på att AMDs nya CPUer finns i lager igen (5000-serien), de är ett bra kliv upp från föregående generation.

Köp minne som minst går i 3200MHz, men gärna 3600MHz.

Av SanguinSE

Chipsetet på moderkortet, Z170, stöder bara 5e och 6e generationen Intel CPUer. Här är en komplett lista:
https://www.msi.com/Motherboard/support/Z170A-KRAIT-GAMING.ht...

Av SanguinSE

5 500 och 4 400? Var kommer de där Playstation 5 priserna från?
Vad jag kan se ligger de på 5 990 för den vanliga och 4 990 för digital edition i alla svenska butiker.

Av SanguinSE
Skrivet av fesoj:

På Swec hade jag provat budgivning med start på 7000kr, på blocket hade jag testat 9000 och varit beredd att släppa för något mindre. Jag hade också övervägt att strippa den på vattenkylningen och spara delarna och fläktarna till ett andra bygge, för customkylning förlorar väldigt mycket att sitt värde snabbt. Lycka till!

Hade det varit ett annat moderkort hade man kanske kunnat få lite mer för den, men B360? Du kan inte överklocka CPUn om man skulle trycka in en 9600K, 9700K eller 9900K och det där 3200MHz minnet gör ju ingen nytta då det inte heller går att överklocka, så det ligger och puttrar i 2666MHz. Att byta MB skulle vara en mardröm i den där trånga lådan med all vattenkylning och då vet man inte om man kan få CPU-blocket på plats efteråt då det är hard line.

7 000 kronor i kylning till komponenter för 11 000? Helt galet. Jag hade varit i extas om jag lyckats sälja den där burken för 7000.

Det är härligt att du gillar vattenkylning, men det är tyvärr alltid en tokig förlustaffär. Det är inte pengar man kan få tillbaka.

Av SanguinSE
Skrivet av Schiznit:

Sked. Kör sked med ostbollar om det sker samtidigt som spel och det är en gamechanger. Chips är lite knepigare dock men borde gå.

Sugrör. Mal ner innehållet i chipspåsen till en fint pulver så kan du suga i dig det utan att du ens behöver släppa musen.

Av SanguinSE
Skrivet av tBiorrith:

Eftersom att du har din dator så länge åt gången kan det vara värt att satsa på X570 som har stöd för PCIe 4.0.

B550 har också stöd för PCIe 4.0, du kan visserligen använda fler lanes på X570, men för normal användning ser jag inte nyttan med att slänga extra pengar på det dyrare chipsetet.

Av SanguinSE
Skrivet av Bea:

Jo, det svåra tycker jag är också om det är en avsevärd/märkbar skillnad eller ej. +- 6% kommer jag aldrig märka då jag sitter där utan möjlighet att jämföra när jag väl har köpt något.

Ja, nvidiakorten är helt annan historia. Jag får hoppas att jag är tillräckligt snabb med köpfingret helt enkelt. Måste ändå utgå från att jag lyckas, så jag kan bli rejält besviken sedan

I vanlig användning kommer du inte märka någon skillnad på dessa CPUer. Om du inte tänkt spela eSport-titlar i 1080p blir det kanske några procents skillnad i spel beroende på vilka inställningar du använder. Tycker du att det är värt att lägga några tusen extra på det, så gör det, men det kommer inte bli ett bra pris/prestanda-förhållande. Men alla är inte heller ute efter det... Ska du spela i 1440p eller högre kommer det vara mer värt att lägga pengarna på ett bättre grafikkort.

Glöm inte att kolla vad AMD har att erbjuda med RDNA2 när det presenteras den 28e oktober. Jag vet inte hur tillgången på deras grafikkort kommer se ut när de släpps, men jag har svårt att tro att de sköter det lika dåligt som nVidia. Inte för att jag själv skulle föredra ett AMD-kort, men ibland får man ta vad som finns...

Av SanguinSE

Jag skulle tro att du kommer ha mer nytta av den högre IPCn på 5600X än de fler kärnorna på 3700X. Det finns fortfarande mycket som är beroende av single threaded prestanda och då har multi core processorer har varit standard i över ett decennium. Om du inte ska köra program som specifikt drar nytta av fler kärnor finns det väldigt lite anledning att lägga pengar på det.

Det borde inte vara så svårt att få tag på en 5600X när den släpps, men 3070 kommer vara helt hopplös som det ser ut nu. Nvidia försenade inte bara releasen för att jäklas med AMD, de har seriösa problem med tillgången på chip. Det kommer dröja länge innan det finns 30X0-kort till alla som vill ha.