Inlägg

Inlägg som Olle3 har skrivit i forumet
Av Olle3
Skrivet av wowtip:

Frågan är ens om det går att lönsamt driva den typen av site, där konsumenternas intresse lite går mot annonsörernas?

Jodå man kan skapa lönsamhet. Men den som ska ge sig in i det har ett enormt underläge mot gamla prisjakt, Pricerunner, komponentkoll mm. Lönsamma affärsmodeller finns men de andra pitchar direkt när man drar åt det hållet. Strategimässigt svårt men kanske inte omöjligt. Någon kan absolut bli väldigt rik på det här.

Av Olle3
Skrivet av medbor:

https://fortune.com/2013/04/30/sony-patent-is-hilarious-terri...

Det är från en nu 10 år gammal artikel om några patent från Sony

Detta skulle alltså redan nu kunna bli verklighet (jag tänker då på streamingtjänster med reklam inbakat till exempel)

Många företag har patent trolling i strategin. Anställda uppmanas patentera all möjlig skit, användbar eller inte, bara så att det ska ackumuleras ett stort antal patent som man i framtiden kan gräva runt i för att underminera konkurrensen. Eller för att man ska kunna skryta om hur ”innovativ” man är. Förekomsten av patent är totalt frånkopplat från faktiska mål med verksamheten, ofta vill man tvärtom inte patentera saker man faktiskt planerar utföra, eftersom man då berättar om sin idé för konkurrensen. Och att ha många patent indikerar bara att de anställda inte har något vettigare att hålla på med än att tröska igenom patentideer i den interna byråkratin.

Blir jag ägare till en produkt där ovan idé är implementerad kör jag den omedelbart till tippen. Vilket författaren till patentet så klart fattade redan från början. Men han fick väl 2000$ i bonus eller något, gratulerar 👍

Av Olle3
Skrivet av cyklonen:

Vad jag läst mig till använder random-funktionen i java systemtiden i millisekunder som default-seed, så det ska nog väldigt mycket till att det råkar vara samma som nån annan...

Ja det är väl ett större problem om man skulle jobba med något språk/bibliotek som sätter en konstant seed som default.

Av Olle3
Skrivet av cyklonen:

Jag använder egengenererade lösenord (skrivit en bit kod som gör det med 93 tecken att välja mellan per position) av den här typen (just dessa är så klart inga jag använder):

n44WYe!.A<b8;tGJiM32N]V0_y+(FyJ)

70<s1MKr2<?;6=&C+'jf1)8u0(QyniND

Känner mig trygg med att de är oknäckbara i sig själva. Sen kan ju lösenord lagras dåligt, i klartext, men det kan jag som användare inte riktigt gardera mig mot.

Så även för "skräpkonton" på sidor som tvingar mig att skapa konton använder jag lösenord av hög kvalitet.

Hehe, jo visst, det kan man ju göra. Var lite försiktig med hur du seedar slumpgeneratorn bara, så du inte delar lösenord med 100 000 andra hemmafixare...

Av Olle3

Deepfakes, LLM-genererad text och liknande kommer inte bli sämre. Beräkningskraft kommer inte minska. Det kommer inom en snar framtid bli omöjligt att avgöra vad som skrivits av människor eller datorer, vilka videor som är från verkligheten eller inte och liknande baserat på innehållet.

Om jag drev ett företag och EU försökte tvinga mig att lösa ett problem som jag visste kommer bli olösbart inom en snar framtid så hade jag dragit mig ur EU, det är väl inga större konstigheter. Kanske låter drastiskt men är väl bara rationellt. Vi gör alla klokt i att reflektera över vad dessa förändringar kommer innebära.

Av Olle3

Haft lite snack med discord-gänget, vi som skulle bygga ett nytt prisjakt. Kikade bland annat på https://komponentkoll.se/, som för mig i alla fall ser ut att göra rätt mycket av vad jag brukade använda prisjakt för.

Saknar vi någonting i komponentkoll?

Av Olle3
Skrivet av Aloysius:

Är inte det enklaste att du gör det själv? Det är ju så enkelt att du redan vet exakt vad som ska göras och det tar en vecka?

Det bästa för alla vore så klart om Prisjakt själva kunde återställa prisjakt classic. Vi gör ju det här för att vi har uppskattat prisjakt och sett ett stort värde i tjänsten. Tjänsten som ju redan finns, men utom vårt räckhåll.

Men om nu inte ursprungliga prisjakt vill fortsätta att leverera det värdet så ser jag inte att det är oöverstigligt svårt att bygga en liknande tjänst som levererar den grundläggande funktionaliteten att snabbt kunna överblicka priserna på samma produkt hos olika återförsäljare, nej.

Av Olle3
Skrivet av Olle3:

Kan väl inte vara så svårt att bygga en prisjaktreplica, egentligen. Jag kan lägga upp ett git-repo. Utvecklare hör av er så kör vi.

Att göra:

  • Manuell whitelist av seriösa återförsäljare

  • Definiera vad för metadata man ska spara, vilka produktkategorier som finns. Bygg en databas på det. Det här är nog mycket jobb.

  • Scrapea deras hemsidor för precis allt de säljer. Man får deploya en jenkins eller liknande och scrapea om med jämna mellanrum. Nog inga större problem. Om manuell kategorisering är svår så finns gpt3.5 apiet men då börjar det krävas en intäkt av något slag.

  • Skapa någon sorts basic frontend/backend-sida. Kan säkert göras av två pers på en vecka med lite assistans från ChatGPT.

  • Lägg in lite Google annonser för att skapa någon form av intäkter så inte projektet bara blir ett ekonomiskt slukhål

Fick mycket positiv respons på det här så jag har startet en en discordserver för projektet här (invite som expirar om 7 dagar, skicka ett PM eller något efter det): https://discord.gg/5QA8AQcS
Samt ett git-repo här: https://github.com/OlleLindgren/open-prisjakt

Alla är välkomna att delta! Jag har börjat skapa några issues med ungefär vad som behöver göras i stora drag, men skapa gärna fler, kritisera mina idéer osv: https://github.com/OlleLindgren/open-prisjakt/issues

Av Olle3

Kan väl inte vara så svårt att bygga en prisjaktreplica, egentligen. Jag kan lägga upp ett git-repo. Utvecklare hör av er så kör vi.

Att göra:

  • Manuell whitelist av seriösa återförsäljare

  • Definiera vad för metadata man ska spara, vilka produktkategorier som finns. Bygg en databas på det. Det här är nog mycket jobb.

  • Scrapea deras hemsidor för precis allt de säljer. Man får deploya en jenkins eller liknande och scrapea om med jämna mellanrum. Nog inga större problem. Om manuell kategorisering är svår så finns gpt3.5 apiet men då börjar det krävas en intäkt av något slag.

  • Skapa någon sorts basic frontend/backend-sida. Kan säkert göras av två pers på en vecka med lite assistans från ChatGPT.

  • Lägg in lite Google annonser för att skapa någon form av intäkter så inte projektet bara blir ett ekonomiskt slukhål

Av Olle3
Skrivet av jarker:

Har du förslag på någon sida som kan förklara vad alla olika ord betyder, känns ju rätt övermäktigt att gissa sig fram när man inte har en susning om
vad allt betyder.

ChatGPT

Av Olle3
Skrivet av jarker:

Jo, alltså jag har redan en singeltrådad variant, bara det att den tar nästan 3 timmar att köra igenom de 13 miljarder rader som det är, därför skrev han denna som nästan går 10 gånger snabbare men att det är något i den som gör att jag inte kan få igång den, men lyckas inte klura ut vad.

Vad bra, gör övriga steg på den singeltrådade varianten då, och sen starta den, vänta 10 sekunder, tryck ctrl+c och se på stack tracet vad den håller på med. Eftersom den vid det laget borde ha börjat med sin megauppgift (möjligen en av flera…) kommer vi då se vad som tar så lång tid och kunna skriva om det till något snabbare.

Skriv resultatet i tråden så hjälper vi dig göra den snabbare

Av Olle3
Skrivet av jarker:

Åh tack för länken, då gör vi ett nytt försök, vore intressant att höra vad som kan vara fel, jag har andra koder som fungerar men just denna skapar ingen fil, och följande värden ska anges:

När det körs ange följande input:
Spelform? 1= Stryktipset 2= Europatipset 3= Fullträff 3
Önskad summa (t.ex. 200.0) ? 200
Tolerabel +/- avvikelse decimaltal (t.ex. 0.05)? 0.01
Tryck 1 för text-fil och 2 för CSV-fil: 1

import requests import re import json import itertools from concurrent.futures import ProcessPoolExecutor from pprint import pprint def process_chunk(start, end, rowlist, pmin, pmax): sub_gen = itertools.islice(itertools.product(*[enumerate(row) for row in rowlist]), start, end) valid_combinations = [] tss = 0 for comb in sub_gen: tss += 1 indices, values = zip(*comb) s = sum(values) if pmin <= s <= pmax: valid_combinations.append(indices + (s,)) return valid_combinations, tss def main(): gamemode = int(input("Spelform? 1= Stryktipset 2= Europatipset 3= Fullträff ")) if not gamemode in [1,2,3]: print("Endast 1-2 möjliga val. Avbryter.") quit() pgoal = float(input("Önskad summa (t.ex. 200.0) ? ")) pdev = float(input("Tolerabel +/- avvikelse decimaltal (t.ex. 0.05)? ")) pmin = pgoal - pdev pmax = pgoal + pdev mde = int(input("Tryck 1 för text-fil och 2 för CSV-fil: ")) if not mde in [1,2]: print("Endast 1 eller 2 möjliga val. Avbryter.") quit() urls = ["", "https://spela.svenskaspel.se/stryktipset" , "https://spela.svenskaspel.se/europatipset", "https://spela.svenskaspel.se/fulltraff"] url = urls[gamemode] outfiles = ["", "tips.txt", "tips.csv"] outfile = outfiles[mde] try: response = requests.get(url) html_content = response.text except: print(f"Kan inte komma hämta data från: {url}. Avbryter.") quit() pattern = r'_svs\.tipsen\.data\.preloadedState\s*=\s*(\{.*\});' try: match = re.search(pattern, html_content) json_str = match.group(1) json_obj = json.loads(json_str) gameDict = json_obj["EventTypeStatistic"] gameKeys = list(dict.keys(gameDict)) except: print(f"Kunde inte extrahera data") quit() signlists = [] rowlist = [] if gamemode == 3: # om fullträff, sätt upp lista utifrån 13 rader draws=json_obj["Draws"]["entities"] try: drawsKey = list(dict.keys(draws))[0] except IndexError: print("Inte möjligt att hämta Fullträff-omgång. Avbryter.") quit() omg=draws[drawsKey]["drawNumber"] # hämta omgångsnr print(f"Fullträff omgång {omg}:") else: # annars sätt upp lista utifrån 3 tecken for _ in range(0,3): signlists.append([]) for gameKey in gameKeys: # iterera över alla 13 matcher numAlts=3 if gamemode==3: # Fullträff numAlts=6 game = gameDict[gameKey]["odds"]["current"]["value"] # hämtar odds-värden från Fullträff-sidan gamesum = 0.0 floats = [] fgame = [] for i in range(0,numAlts): if game[i] == None: print ("None-error",gameDict[gameKey]) quit() f = 100.0/float(game[i]) # konvertera oddset 100/o floats.append(f) gamesum = sum(floats) for ix,o in enumerate(floats): newo = 100.0 * o / gamesum # normalfördela fullträff-oddsen så att summan blir 100.0 if ix<numAlts: fgame.append(newo) if gamemode==3: rowlist.append(fgame) else: for ix,perc in enumerate(fgame): signlists[ix].append(perc) if gamemode<3: P = { "1": signlists[0], "X": signlists[1], "2": signlists[2] } rows = itertools.product(*(['1X2'] * 13)) cn = 0 with open(outfile, 'w') as f: for row in rows: percentage = sum(P[result][n] for (n, result) in enumerate(row)) if pmin <= percentage <= pmax: cn += 1 if mde==1: f.write("E,"+','.join(row)+"\n") if mde==2: f.write(','.join(row + (str(percentage),))+"\n") else: maxcoupons = 10000 cn = 0 tsts = 0 valid_combinations = [] chunk_size = 100000 # You can adjust the chunk size total_size = 6 ** 13 # 6^13 combinations chunks = [(i, min(i + chunk_size, total_size)) for i in range(0, total_size, chunk_size)] print ("Lengt of chunks",len(chunks)) with ProcessPoolExecutor() as executor: for chunk_result, chunk_tsts in executor.map(process_chunk, [start for start, end in chunks], [end for start, end in chunks], itertools.repeat(rowlist), itertools.repeat(pmin), itertools.repeat(pmax)): tsts += chunk_tsts valid_combinations.extend(chunk_result) cn += len(chunk_result) if tsts % 1000000 == 0: print(int(tsts / 1000000), "million iterations,", cn, "rows found") if cn >= maxcoupons: break with open(outfile, 'w') as f: f.write(f"Fulltraff,Omg={omg}\n") # första raden for ix,comb in enumerate(valid_combinations): if mde == 1 and ix<maxcoupons: # TXT-läge comb=list(comb) comb.pop() # ta bort summa som inte används i TXT-läge f.write("E,"+','.join(str(nm) for nm in comb)+"\n") elif mde == 2 and ix<maxcoupons: # CSV-läge f.write(','.join(str(nm) for nm in comb)+"\n") cn=min(cn,maxcoupons) print(f"{outfile} skapad med {cn} rader!") if __name__ == '__main__': main()

Hade gjort följande:

  1. Skapa funktioner åt alla dina gamemodes.

  2. Ändra alla namn på allting till snake_case och utan förkortningar. Detta gör programmet mer läsbart. Dvs ändra comb till combinations, gameKey till game_key, outfile till output_file.

  3. Ta bort alla try/except och lös vad det nu är för problem som har gjort att dessa behövdes. Om du prompt måste ha try/except av någon anledning så specificera vilken typ av exception du försöker fånga och lägg bara en rad kod i try-blocket. Annars kan det hända att du fångar andra exceptions än vad du hade tänkt dig. Specificera alltid en exception-typ (dvs använd aldrig bara except:), annars fångar du t.ex KeyboardInterrupt, MemoryError, SystemExit och diverse annat.

  4. Gör programmet singeltrådat.

  5. Skriv om allt itertools-tjafs till något mer läsbart, 99 gånger av 100 går detta att göra med t.ex vanliga for-loopar, list comprehensions etc.

Av Olle3

Har ett par skärmar jag kan erbjuda i utbyte, två stycken 32” AOC 1440p curved (1500r) gamingskärmar och stativ man sätter fast i skrivbordet. Funkar bra som både kontor och gamingsetup.
AOC QC32G1 (144Hz) och QC32G2 (165Hz)
Stativet är typ en sån här, fast vit https://www.webhallen.com/se/product/330907-iiglo-Skarmfaste-...

Det blir så klart lite pengar mellan till dig också. Kartonger finns, kan mötas fysiskt och överlämna.

Av Olle3

Fallout 76+1 100kr

Av Olle3
Skrivet av aragon:

Jag vet det är skumt, minns jag rätt försvann körkortskravet i samband med att datorer blev mer integrerat i bilarna, dvs det är ju lite skumt för det bör ju räcka att ge personnummer som du säger.

Mm, man tycker det. Kanske handlar det om redundans? Om bilen tappar internetuppkoppling, systemet går ner eller liknande? Eller av praktiska skäl, att det tar tid att gå till datorn i bilen för att söka, så man vill att människor ska ha sina körkort med sig?

Kanske kan se ett par tänkbara förklaringar ändå...

Av Olle3
Skrivet av aragon:

man måste inte ha körkort med sig om du kan identifieras på annat sätt.
https://konsumentenheten.se/2023/06/26/maste-man-ha-korkortet...

Jag förmodar att detta stämmer, men bestämmelserna känns inte helt logiska.

Om målet är att fastställa min identitet så borde det väl räcka med att jag säger mitt namn eller personnummer och att polisen gör en sökning på det? Jag antar att de då kan få upp all information som finns på alla mina olika identitetshandlingar och mer därtill, så varför ska jag behöva ha dem med mig? Vilket jag ju ändå måste, låter det som.

Är det gamla regler från en tid när polisen inte hade datorer och behövde ringa någonstans för att kontrollera muntligt över telefon, eller något sånt?

Av Olle3
Skrivet av Unpoor:

Vad bygger du det på?

En HTPC vore helt onödig, således vore även teoretiska ingredienser i en HTPC lika onödiga.

Av Olle3
Skrivet av Sinery:

Typ att om man ändrar en variabel och sedan använder den så innehåller den inte det nya värdet och liknande udda beteenden från tolkade språk.

Skrivet av martengooz:

Gissar att du bara hittade på det exemplet, för kan inte komma på ett enda skript-språk där detta händer.

Inget är omöjligt i Python

>>> class Foo: ... def __init__(self, bar): ... self._bar = bar ... @property ... def bar(self): ... return self._bar ... @bar.setter ... def bar(self, _): ... self._bar += 1 ... >>> foo = Foo(1) >>> foo.bar 1 >>> foo.bar = 2 >>> foo.bar 2 >>> foo.bar = 9 >>> foo.bar 3 >>> foo.bar = 1001 >>> foo.bar 4 >>> import os, sys >>> sys.modules["sys"] = os >>> import sys >>> sys.getcwd() '/Users/olle' >>> sys is os True

Av Olle3
Skrivet av Chromatic:

Varför skulle en AI ha några som helst motiveringar eller självbevarelsedrift?
Jag tror många får för sig att en AI hade haft samma grundläggande instinkter som finns inrotat i levande ting.

En bra fråga som säkert många delar. Ska försöka ge min syn:

Varför den skulle ha mål är för att vi skulle ge den mål. Det gör vi redan idag efter bästa förmåga med nuvarande LLMer och andra AI-system. Såklart inte explicit ondskefulla (eller?) mål, men det är ett öppet forskningsproblem hur man ska kunna träna in rätt typ av mål i den här typen av avancerade AI-system, eftersom vi idag bara kan träna in det vi också kan verifiera. Detta är särskilt svårt med komplicerade mål eftersom de ofta kan ha massa delmål, kräva autonom planering och uppnås på olika sätt.

Gällande självbevarelsedrift och maktsökande är dessa bra instrumentella mål nästan oavsett vad man egentligen vill uppnå, bara se på dina egna mål som människa. Visst blir det svårare om du är död och enklare om du är rik? En superintelligent AI är smart nog att förstå detta, annars är den inte superintelligent. Och den är också smart nog att inte ge sken av att ha dessa mål, för då riskerar den ju att bli stoppad, så det är fundamentalt svårverifierat att den inte har dessa drag.

Vad som potentiellt skulle kunna övertyga mig, och säkert många andra, om att det inte fanns något att oroa sig över, vore om någon kunde ge ett bra svar på ens en av dessa tre frågor:

  • Finns det något tankefel i singularitetshypotesen?

  • Har vi skäl att tro att singulariteten aldrig kan börja, eller att den är hundratals år bort?

  • Kan vi se en lösning på AI alignment?

Technological singularity
Alignment research landscape

Av Olle3
Skrivet av JoOngle:

...

ChatGPT och liknande A.I. verktyg är tränat via en språkmodell. En språkmodell är en sannolikhetsfördelning för sekvenser av ord.

En språkmodell tränas på en databas bestående av mängder med text för att "lära sig" sannolikheter för olika ord i olika språkkontext, exempelvis olika typer av dokument, eller vad som är trovärdiga svar på av användaren ställda, skriftliga frågor.

På vilka grunder tror du att du och dina tankar (eller jag) är särskilt mycket mer än en sannolikhetsfördelning över evolutionärt adaptivt beteende? Och på vilket sätt är det relevant för diskussionsämnet om du tycker att ChatGPT är användbar eller har ett medvetande eller inte?

Jag har en egen instans av StableVicuna13B (de bästa modellerna kräver mer minne än jag har, men den är ganska bra) på datorn här som jag frågar om allt och inget, och jag prenumererar också på GPT-4 (och copilot, som väl är GPT3.5(?)), men likväl håller jag helt med Max i sina uttalanden.