Pieniä kysymyksiä ohjelmoinnista

Liittynyt
16.09.2017
Viestejä
9
Onko 4 merkkiä pitkä, base62 enkoodattu merkkijono (jokainen merkki aakkosista 0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz) 32-bittinen? Siis kun UUIDv6 on 128-bittinen, kun siinä on 36 heksadesimaalilukua, ja yksi heksadesimaali vie 4 bittiä (32 * 1 * 4), mutta base62-kirjain vie 2 heksadesimaalia, jolloin 4 * 2 * 4 -> 32?
 

kolistelija

Make ATK Great Again
Liittynyt
17.02.2018
Viestejä
1 025
Onko 4 merkkiä pitkä, base62 enkoodattu merkkijono (jokainen merkki aakkosista 0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz) 32-bittinen? Siis kun UUIDv6 on 128-bittinen, kun siinä on 36 heksadesimaalilukua, ja yksi heksadesimaali vie 4 bittiä (32 * 1 * 4), mutta base62-kirjain vie 2 heksadesimaalia, jolloin 4 * 2 * 4 -> 32?
Wikipedia näyttää että base62 olisi kuusi bittiä per merkki (ei suoraa speksiä, mutta listauksessa on kuusi bittiä per merkki), eli 1,5 hexaa tai 0,75 tavua. Käy järkeen koska muuten siinä olisi hukkatilaa.

Eli neljä merkkiä olisi 3 tavua tai 24 bittiä (4*6).

Edit:
Sekoilua

Edit2:
En saanut otetta miten uuid v6 liittyy tähän. Se on 128 bittinen arvo, joka heksoina esitettynä sisältää 32 merkkiä. base62 enkoodattuna se olisi laskelmieni mukaan 21,5 merkkiä pitkä.

Edit3:
Koska base62 sisältää 62 verran tietoa kuudessa bitissä (64) jää vähän informaatiota yli, jolloin se tekee muunnoksista hankalampia mikäli käytetään myös nuo tuo yli jäänyt data.
 
Viimeksi muokattu:
Liittynyt
16.09.2017
Viestejä
9
Wikipedia näyttää että base62 olisi kuusi bittiä per merkki (ei suoraa speksiä, mutta listauksessa on kuusi bittiä per merkki), eli 1,5 hexaa tai 0,75 tavua. Käy järkeen koska muuten siinä olisi hukkatilaa.

Eli neljä merkkiä olisi 3 tavua tai 24 bittiä (4*6).

Edit:
Sekoilua

Edit2:
En saanut otetta miten uuid v6 liittyy tähän. Se on 128 bittinen arvo, joka heksoina esitettynä sisältää 32 merkkiä. base62 enkoodattuna se olisi laskelmieni mukaan 21,5 merkkiä pitkä.

Edit3:
Koska base62 sisältää 62 verran tietoa kuudessa bitissä (64) jää vähän informaatiota yli, jolloin se tekee muunnoksista hankalampia mikäli käytetään myös nuo tuo yli jäänyt data.
UUID:n otin esille varmaan sillä, että siinä voi päätellä bittimäärän perusteella todennäköisyyden että se generoi duplikaatin, ja tässä yritän pienessä päässäni järkeillä että jos otan randomisti base62 -taulukosta merkkejä (chars[rand(0, 61)]), ja laitan niitä peräkkäin, niin kuinka monta niitä pitää olla että siinä on vähintään vaikkapa 24 tai 32bittiä (ja näin laskea myös sen collisio-todennäköisyyden)?
 

kolistelija

Make ATK Great Again
Liittynyt
17.02.2018
Viestejä
1 025
UUID:n otin esille varmaan sillä, että siinä voi päätellä bittimäärän perusteella todennäköisyyden että se generoi duplikaatin, ja tässä yritän pienessä päässäni järkeillä että jos otan randomisti base62 -taulukosta merkkejä (chars[rand(0, 61)]), ja laitan niitä peräkkäin, niin kuinka monta niitä pitää olla että siinä on vähintään vaikkapa 24 tai 32bittiä (ja näin laskea myös sen collisio-todennäköisyyden)?
Tarkoitatko siis että jos sinulla on 128 bittinen arvo, niin haet sitä että kuinka suurella todennäköisyydellä saat saman arvon jos rakennat arvon jonosta arvoja välillä 0-61? Se riippuu allokoitko jokaiselle arvolle täydet 6 bittiä vai sallitko kuuteen bittiin mahtuvan ylijäämän kierrättämisen eteenpäin kokonaisarvoon, jolloin saat useamman arvon mahtumaan tuohon 128 bittiin.

Jos sisällytät 6 tavun ylijäämät base62:sta menee laskenta nopeasti katsottuna jotakuinkin tämän mukaan: What is Base62 Conversion?
Jos taas käytät kuusi tavua per merkki jätät tuosta 128 tavun arvosta osan käyttämättä koska se ei ole kuudella jaollinen tai vaihtoehtoisesti otat vain kahden tavun arvoisen merkin loppuun. Onko peräkkäin laittaminen tavoitteen mukaista?

Base62 arvo ei ole jaollinen 24 tai 32 bitin maksimiarvon kanssa. Jos haluat tietää kuinka monta base62 merkkiä on arvoltaan vähintään 24 bittiä, on vastaus viisi. Kysymys ei kuitenkaan ole niin yksinkertainen, sillä neljä base62 merkkiä on arvoltaan 14 776 336, kun taas 24 bittiä on arvoltaan 16 777 216. Viisi base62 merkkiä meneekin pitkälle yli. Jos nuo noin kaksi miljoonaa väliin jäävää arvoa vielä jaetaan base62 merkeistä koostuvalle merkkijonolle saadaan huomattavasti enemmän mahdollisuuksia kuin mihin neljällä merkillä päästään. Onko tämän taustalla koulutehtävä jonka tarkoituksena on ymmärtää binääriarvoja?
 
Liittynyt
15.10.2021
Viestejä
17
UUID:n otin esille varmaan sillä, että siinä voi päätellä bittimäärän perusteella todennäköisyyden että se generoi duplikaatin, ja tässä yritän pienessä päässäni järkeillä että jos otan randomisti base62 -taulukosta merkkejä (chars[rand(0, 61)]), ja laitan niitä peräkkäin, niin kuinka monta niitä pitää olla että siinä on vähintään vaikkapa 24 tai 32bittiä (ja näin laskea myös sen collisio-todennäköisyyden)?
Jos kiinnostava asia on tuo lopussa suluissa oleva todennäköisyys sille että kaksi satunnaista base62 merkkijonoa ovat samat, niin eikö sen voi laskea ihan tavanomaisella todennäköisyyslaskennalla? Yhden saman merkin todennäköisyys on silloin 1/62 ja saman N merkkiä pitkän merkkijonon (1/62)^N. Tuotahan voi sitten verrata halutessa vastaavaan bittijonon todennäköisyyteen jossa yhden saman bitin todennäköisyys on 1/2. Tuosta laskimella 32 bittisten bittijonojen samanlaisuuden todennäköisyys (1/2)^32 = 2,328e-10. Sitten kokeilemalla vähintään yhtä epätodennäköinen base62 merkkijono: (1/62)^6 = 1.761e-11. Eli jo 6 base62 merkkiä pitkien merkkijonojen "yhteentörmäyksen" todennäköisyys on pienempi kuin 32 bittisten bittijonojen.
 
Liittynyt
16.09.2017
Viestejä
9
Jos kiinnostava asia on tuo lopussa suluissa oleva todennäköisyys sille että kaksi satunnaista base62 merkkijonoa ovat samat, niin eikö sen voi laskea ihan tavanomaisella todennäköisyyslaskennalla? Yhden saman merkin todennäköisyys on silloin 1/62 ja saman N merkkiä pitkän merkkijonon (1/62)^N. Tuotahan voi sitten verrata halutessa vastaavaan bittijonon todennäköisyyteen jossa yhden saman bitin todennäköisyys on 1/2. Tuosta laskimella 32 bittisten bittijonojen samanlaisuuden todennäköisyys (1/2)^32 = 2,328e-10. Sitten kokeilemalla vähintään yhtä epätodennäköinen base62 merkkijono: (1/62)^6 = 1.761e-11. Eli jo 6 base62 merkkiä pitkien merkkijonojen "yhteentörmäyksen" todennäköisyys on pienempi kuin 32 bittisten bittijonojen.
No sehän tässä on ongelma, etten ymmärrä mistä se bittisyys tässä tulee. Jos generoin randomisti 4 tavua (esim. js:llä window.crypto.getRandomValues(new Uint8Array(4)), saan 32 bittiä informaatiota, ja lopuksi konvertoin sen base62-merkkijonoksi, se sisältää edelleen 32 bittiä informaatiota, ja on joka kerta täsmälleen 4 merkkiä pitkä. Siis miten on mahdollista, että neljän base62 -merkin laittaminen peräkkäin eri menetelmällä yhtäkkiä onkin vain 24-bittinen? Se on tällaista kun ei ole teoriataustaa, ja järkikin juoksee välillä melkein takaperin :D
 

kolistelija

Make ATK Great Again
Liittynyt
17.02.2018
Viestejä
1 025
No sehän tässä on ongelma, etten ymmärrä mistä se bittisyys tässä tulee. Jos generoin randomisti 4 tavua (esim. js:llä window.crypto.getRandomValues(new Uint8Array(4)), saan 32 bittiä informaatiota, ja lopuksi konvertoin sen base62-merkkijonoksi, se sisältää edelleen 32 bittiä informaatiota, ja on joka kerta täsmälleen 4 merkkiä pitkä. Siis miten on mahdollista, että neljän base62 -merkin laittaminen peräkkäin eri menetelmällä yhtäkkiä onkin vain 24-bittinen? Se on tällaista kun ei ole teoriataustaa, ja järkikin juoksee välillä melkein takaperin :D
Tuo luo neljä 8 bittistä satunnaisarvoa. Jos muunnat ne base62 merkeiksi ja saat vain neljä merkkiä, tarkoittaa se että muunnos on häviöllinen. Kahdeksan bittinen (1 tavu) arvo on välillä 0-255 ja base62 on 0-61. Esim. arvo 128 kääntyisi häviöttömästi base62 merkeiksi "24" (jos nopeasti laskin oikein). Nelitavuinen arvo sitten on jo jotain aivan muuta base62:ksi käännettynä. Häviöllinen muunnos riippuu millä tavalla se on tehty.

Jos saat neljä kirjainta, voi olla että ne ovat esim. iso 8859 tai extended ASCII muodossa ja siksi vievät 8 bittiä per merkki. Uint8 kääntyykin näppärästi suoraan tuohon muotoon ilman ongelmia. Tietämättä sen tarkemmin millä tuon käännöksen teet on vaikea asiaa analysoida enempää.

EDIT:
Laskin uusiksi...
 
Viimeksi muokattu:
Liittynyt
16.09.2017
Viestejä
9
... tarkoittaa se että muunnos on häviöllinen...
Oikeassa olet, törmäsin tähän itsekin kun aloin miettimään miten sen merkkijonon voi dekoodata (vastaus: ei voi, koska informaatiota häviää). Sain kuitenkin ongelmaani ratkaisun (joka siis oli että kuinka monta merkkiä tarvitsee, että todennäköisyys että saa kaksi samaa on "tarpeeksi pieni" (<0.2%)) – päädyin siihen että 4 merkkiä riittää, bittimäärä oli tässä oikeastaan vain sivuseikka. Kiitos vastaajille. PS. käytin Collision Calculator -sivun laskinta todennäköisyyden laskemiseen, vaikutti se että se osasi hommansa, ja lähdekoodin silmäilyn mukaan ottaa huomioon myös syntymäpäiväongelman.
 
Liittynyt
15.10.2021
Viestejä
17
No sehän tässä on ongelma, etten ymmärrä mistä se bittisyys tässä tulee. Jos generoin randomisti 4 tavua (esim. js:llä window.crypto.getRandomValues(new Uint8Array(4)), saan 32 bittiä informaatiota, ja lopuksi konvertoin sen base62-merkkijonoksi, se sisältää edelleen 32 bittiä informaatiota, ja on joka kerta täsmälleen 4 merkkiä pitkä. Siis miten on mahdollista, että neljän base62 -merkin laittaminen peräkkäin eri menetelmällä yhtäkkiä onkin vain 24-bittinen? Se on tällaista kun ei ole teoriataustaa, ja järkikin juoksee välillä melkein takaperin :D
En ole hirveästi javascriptiä tai htmlää kirjoittanut mutta tein What is Base62 Conversion? ohjeilla yksinkertaisen muuntimen:
HTML:
<!DOCTYPE html>
<html>
<body>
<p id="demo"></p>
<script>
merkit = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz";
numero = self.crypto.getRandomValues(new Uint32Array(1))[0];
base62 = "";

x = numero;
while (x > 0) {
    base62 += merkit[x % 62];
    x -= x % 62;
    x /= 62;
}
base62 = base62.split('').reverse().join('');

document.getElementById("demo").innerHTML = numero + " = " + base62;
</script>
</body>
</html>
Tuolla saan kyllä 6 merkkisiä arvoja tuosta 32 bittisestä (Uint32) numerosta. Esimerkki tulos:
3581715481 = 3uOVoX
Teet ilmeisesti jokaiselle 4 lle tavulle erikseen base62 muunnoksen? Tästähän tulee eri arvo kuin jos nuo neljä tavua tulkittaisiin 32 bittisenä lukuna. Yhden tavun muunnoksesta tulee 1 tai 2 merkkiä tulokseksi eli jos nuo lyöt yhteen siitä tulee 4-8 merkkiä yhteensä. Onko mahdollista että otat jokaisesta muunnoksesta vahingossa vain yhden merkin mukaan tulokseen?
 

Yeenoghu

Neighbour of the beast
Liittynyt
07.11.2016
Viestejä
1 273
Toivottavasti tänne mahtuu yksi simppeli skriptaamiseen liittyvä avunpyyntö.

Windows command promptiin tarvitsen tiedostojen massauudelleennimeämiseen skriptin, jonka pitäisi suoriutua seuraavasta tempusta:

Nykyinen:

y:\kansio\tiedosto.iso
y:\toinen kansio\toinen tiedosto.iso
jne.

Tavoite olisi:
y:\kansio\kansio.iso
y:\toinen kansio\toinen kansio.iso
jne.

Toisin sanoen iso-tiedostot pitäisi saada uudelleennimettyä kunkin isäntäkansion nimen mukaiseksi. Kussakin kansiossa on vain yksi tiedosto.

Vinkkejä otetaan vastaan.
 
Liittynyt
18.10.2016
Viestejä
524
Powershelliä onnistuis että looppaa kansiot läpi ja lukee kansion nimen ja sillä uudelleen nimeää filun
 
Liittynyt
17.10.2016
Viestejä
4 117
Toimisiko


Get-ChildItem -Directory | ForEach-Object {
$newName = (Get-ChildItem $_.FullName | Where-Object { $_.Extension -eq '.iso' }).BaseName
Rename-Item $_.FullName -NewName $newName
}

Toki kokeile ensin joillain dummy fileillä :)


edit: jaa, juuri päinvastoin..


Get-ChildItem -File -Filter *.iso | ForEach-Object {
$folderName = $_.Directory.Name
$newName = $folderName + $_.Extension
Rename-Item $_.FullName -NewName $newName
}
 
Viimeksi muokattu:
Liittynyt
07.01.2021
Viestejä
687
Osaako joku selittää tai ohjata sopivaan matskuun, että miten NextJS:n ISG (Incremental Site Generation) toimii? NextJS:n omat sivut selittävät miten yksi sivu koodataan niin että se päivittyy, mutta miten jos tehdään muutos, jonka pitäisi vaikuttaa isoon määrään sivuja.

Esimerkki: muokkaan sivustollani teosta. Muokkauksista riippuen tämä voi vaikuttaa yhteen tai useampaan henkilösivuun, asiasanasivuun, kirjasarja-sivuun (vaihdan kirjasarjan toiseksi -> kaksi sarjasivua muuttuu) jne.

Tuo sivustoni kun on sellainen, että yksittäiset sivut päivittyvät hyvin harvoin, mutta sivuja alkaa olla luokkaa 10,000, ja jotain sivuja päivitetään käytännössä päivittäin, joten kokoaan staattista sivustosta ei kannata tehdä - koko sivuston buildaaminen jokaisesta muutoksesta olisi ihan liian raskasta.

Ja löytyykö jostain jotain hyvää selitystä miten sivusto ylipäätään pitäisi suunnitella jos haluaa käyttää SSR:ää? Miten ne interaktiiviset osat erotetaan staattisesta sisällöstä? Riittäkö jos ne on omissa komponenteissaan?
 
Liittynyt
07.01.2021
Viestejä
687
Ja siis unohtui mainita tuo revalidate, joka on tulossa seuraavaan versioon, ilmeisesti jos rakentaa jonkunlaisen häkkyrän, joka tunnistaa mitkä muut sivut pitää revalidoida, niin se ratkaisisi tuon ongelman?
 

Yeenoghu

Neighbour of the beast
Liittynyt
07.11.2016
Viestejä
1 273
Oli mennyt ihan kokonaan ohi @Nasty76 ja @juhaa vastaukset - myöhästyneet kiitokset vaivannäöstä.

Minä huijasin ja laitoin Autopilotin asialle, joka loihti minulle toimivan skriptin:

Koodi:
@echo off
setlocal enabledelayedexpansion
for /D %%d in (*) do (
    for %%f in ("%%d\*.iso") do (
        ren "%%f" "%%~nd%%~xf"
    )
)
endlocal
 
Liittynyt
01.10.2020
Viestejä
51
Hei. Kysymys liittyen c++:saan. Mouse_event functioni ei toimi kunnolla ilman ylimääräistä overheadia, joka on tässä:
Koodi:
std::cout << "Printing x and y cordinates: " << x << ", " << y << "\n";
Tuon kyseisen std::cout overheadin avulla hiiren liike on sulavaa ja jos taas en käytä tuota koodinpätkää niin hiiren liike on pätkivää. Sleep_for:in käyttö auttaa jokseenkin asiaa, mutta se ei ole siltikään yhtä sulavaa kuin std::coutin käyttö. Miten saisin tuon saman sulavuuden ilman, että consolini täyttyy turhasta tekstistä? Löytyykö esim. c++:ssan standard librarystä jotain, jolla voisin tuottaa ylimääräistä overheadia tuohon kyseiseen functioon?
 
Liittynyt
07.01.2021
Viestejä
687
Hm, kokeilepa std::cout << std::flush();

Vaikuttaa enemmänkin siltä, että hiiren sijainti ei välity heti ja cout pakottaa sen. Eli oikea ratkaisu on tietysti keksiä mistä vika johtuu eikä tehdä tällaisia hackeja.
 
Liittynyt
01.10.2020
Viestejä
51
Hm, kokeilepa std::cout << std::flush();

Vaikuttaa enemmänkin siltä, että hiiren sijainti ei välity heti ja cout pakottaa sen. Eli oikea ratkaisu on tietysti keksiä mistä vika johtuu eikä tehdä tällaisia hackeja.
Tuon std::coutin bufferin flushaus ei auta tuohon hiiren pätkimiseen. Itselläni on sellainen teoria, että tuo mouse_event ei vain kirjaimellisesti pysy tuon funktion mukana. Lopulta se johtaa siihen, että mouse_event täyttyy edellisistä call:eista ja hiiren liike muuttuu pätkiväksi. En itse keksi mitään muuta tapaa kuin vain epäoptimisoida esim. lisätä turhia laskuja tuon funktion loppuun. Voisin myös testata tuota SendInput:ia, koska mouse_event on ”vanhentunut/syrjäytetty” winuser funktio.
 
Viimeksi muokattu:
Liittynyt
17.01.2018
Viestejä
2 078
Tuon std::coutin bufferin flushaus ei auta tuohon hiiren pätkimiseen. Itselläni on sellainen teoria, että tuo mouse_event ei vain kirjaimellisesti pysy tuon funktion mukana. Lopulta se johtaa siihen, että mouse_event täyttyy edellisistä call:eista ja hiiren liike muuttuu pätkiväksi. En itse keksi mitään muuta tapaa kuin vain epäoptimisoida esim. lisätä turhia laskuja tuon funktion loppuun. Voisin myös testata tuota SendInput:ia, koska mouse_event on ”vanhentunut/syrjäytetty” winuser funktio.
Arvaan että jos johtuu liian nopeasta päivityksestä niin sama toistuu sendinputilla. Kumpikin vaan lisää eventtejä jonoon.

Eli varsinainen ongelma voisikin olla siinä että jostain syystä lähetät liikaa mouse eventtejä vaikka ei tarvitsisikaan ?
Tyyliin lähetetään paikka vain jos on muuttunut (tarpeeksi ?), samoin napit ?
 
Liittynyt
31.10.2018
Viestejä
374
Vähän samoilla linjoilla tuohon mouse eventtiin eli päivityksiä tulee liikaa ja / tai niitä ei ehditä käsitellä. Eikai mouse event funktiossa kutsuta jotain draw metodia tai muuta ruudun päivitystä tai logiikkaa? Se (liian raskas funktio) voisi aiheuttaa jotain tuollaista pätkimistä.

Hiiren käsittelyyn vain se mitä tarvitaan ja ruudun päivitys ja muu logiikka hoidetaan muualla.
 
Liittynyt
17.01.2018
Viestejä
2 078
Vähän samoilla linjoilla tuohon mouse eventtiin eli päivityksiä tulee liikaa ja / tai niitä ei ehditä käsitellä. Eikai mouse event funktiossa kutsuta jotain draw metodia tai muuta ruudun päivitystä tai logiikkaa? Se (liian raskas funktio) voisi aiheuttaa jotain tuollaista pätkimistä.

Hiiren käsittelyyn vain se mitä tarvitaan ja ruudun päivitys ja muu logiikka hoidetaan muualla.
Ms dokumentaatiosta: "The mouse_event function synthesizes mouse motion and button clicks."

Tuolla ei siis kuulu vastaanottaa inputtia vaan tungetaan eventtejä jonoon.
Kysyjä ei kyllä kertonut mitä on oikeasti tekemässä mutta normaalisti hiiren liike ohjelmalle tulee wm_mousexxx viesteinä jolloin pitää piirtää tai antaa piirto toiselle threadille.

Voin tietysti olla väärässäkin pikalukemisella mutta noin se ainakin ennen on mennyt.
Ei myöskään tiedetä onko vain konsoliohjelma jolla halutaan hiiri haltuun vai ikkunoitu joka kirjoittaa lokia/tms konsoliin...
 
Liittynyt
01.10.2020
Viestejä
51
Ms dokumentaatiosta: "The mouse_event function synthesizes mouse motion and button clicks."

Tuolla ei siis kuulu vastaanottaa inputtia vaan tungetaan eventtejä jonoon.
Kysyjä ei kyllä kertonut mitä on oikeasti tekemässä mutta normaalisti hiiren liike ohjelmalle tulee wm_mousexxx viesteinä jolloin pitää piirtää tai antaa piirto toiselle threadille.

Voin tietysti olla väärässäkin pikalukemisella mutta noin se ainakin ennen on mennyt.
Ei myöskään tiedetä onko vain konsoliohjelma jolla halutaan hiiri haltuun vai ikkunoitu joka kirjoittaa lokia/tms konsoliin...
Anna hieman kontekstia tuosta ohjelmasta. Eli kyseessä on siis konsoliohjelma joka liikuttaa hiirtä x ja y tasoihin nähden haluttuun pisteeseen asti. Esim. haluan, että hiiri liikkuu 200 pikseliä positiiviseen suuntaan molemmissa tasoissa jolloin koodi näyttää tältä:
Koodi:
mouse_event(MOUSEEVENTF_MOVE, (DWORD)200, (DWORD)200, NULL, NULL).
En kuitenkaan halua, että liike on suoraan 200 pikseliä, koska tuolloin liike olisi todella nopeaa. Haluan siis, että liike on hitaampaa, jolloin teen liikkeen esim. kymmenessä eri mouse_event call:issa:
Koodi:
mouse_event(MOUSEEVENTF_MOVE, (DWORD)20, (DWORD)20, NULL, NULL)
Oma funktioni osaa siis laskea halutun pisteen ja hiiren tämän hetkisen pisteen eron, joten kyseinen funktio toistuu niin monta kertaa kunnes haluttuun pisteeseen on päädytty. Voin itse muuttaa tuon "smoothing" factorin lineaarisesta funktiosta esim. exponentiaaliseen- tai logaritmiseen funktioon, jolloin mouse_event call:eja tulee vielä enemmän.

Tein väliaikaisena ratkaisuna sen, että laitoin tuon funktion loppuun sortaus algoritmin, joka sorttaa vectorin kaikki numerot järjestykseen. Tuolla tavalla consolini ei täyty turhasta tekstistä ja itse mouse_event ei aiheuta pätkivää liikettä. Tietenkin tuo on ongelman kiertämistä eikä sen korjaamista, mutta en tällä hetkellä keksi muuta tapaa korjata tuota ongelmaa.
 
Liittynyt
17.01.2018
Viestejä
2 078
Anna hieman kontekstia tuosta ohjelmasta. Eli kyseessä on siis konsoliohjelma joka liikuttaa hiirtä x ja y tasoihin nähden haluttuun pisteeseen asti. Esim. haluan, että hiiri liikkuu 200 pikseliä positiiviseen suuntaan molemmissa tasoissa jolloin koodi näyttää tältä:
Koodi:
mouse_event(MOUSEEVENTF_MOVE, (DWORD)200, (DWORD)200, NULL, NULL).
En kuitenkaan halua, että liike on suoraan 200 pikseliä, koska tuolloin liike olisi todella nopeaa. Haluan siis, että liike on hitaampaa, jolloin teen liikkeen esim. kymmenessä eri mouse_event call:issa:
Koodi:
mouse_event(MOUSEEVENTF_MOVE, (DWORD)20, (DWORD)20, NULL, NULL)
Oma funktioni osaa siis laskea halutun pisteen ja hiiren tämän hetkisen pisteen eron, joten kyseinen funktio toistuu niin monta kertaa kunnes haluttuun pisteeseen on päädytty. Voin itse muuttaa tuon "smoothing" factorin lineaarisesta funktiosta esim. exponentiaaliseen- tai logaritmiseen funktioon, jolloin mouse_event call:eja tulee vielä enemmän.

Tein väliaikaisena ratkaisuna sen, että laitoin tuon funktion loppuun sortaus algoritmin, joka sorttaa vectorin kaikki numerot järjestykseen. Tuolla tavalla consolini ei täyty turhasta tekstistä ja itse mouse_event ei aiheuta pätkivää liikettä. Tietenkin tuo on ongelman kiertämistä eikä sen korjaamista, mutta en tällä hetkellä keksi muuta tapaa korjata tuota ongelmaa.
Jos hiiren siirto tökkii ja viivettä lisäämällä toimii niin silloin ongelma on yleensä ajastuksessa. Eventit lähtee siis liian nopeasti, oikeastihan koneen kannalta hiiri on todella hidas.
Ramppi tiwtyin askeiln vaatii aina sopivan odotuksen askelten väliin. Odotuksrn laskenta sen mukaan kuinka kauan siirtymän pitäisi kestää.
Sopiva odotus on yleensä "parempi" kuin sort/vastaava koska odotus ei syö cpu aikaa muilta.
 

pAy

Liittynyt
15.08.2020
Viestejä
78
Tietääkö kukaan onko mitenkään mahdollista hakea pörssisähkön tuntihintoja google sheets taulukkoon ja jos on niin löytyykö jotain esimerkki koodia? Googlailu ei ole tuottanut tulosta.

Sähköauton tuntikohtaiset latausmäärät jo taulukkoon menee niin saisi suoraan laskettua lataushinnan euroina.
 
Liittynyt
18.10.2016
Viestejä
1 360
Tietääkö kukaan onko mitenkään mahdollista hakea pörssisähkön tuntihintoja google sheets taulukkoon ja jos on niin löytyykö jotain esimerkki koodia? Googlailu ei ole tuottanut tulosta.

Sähköauton tuntikohtaiset latausmäärät jo taulukkoon menee niin saisi suoraan laskettua lataushinnan euroina.

Saisko tämän palvelun avulla jotenkin?
 
Liittynyt
16.11.2020
Viestejä
2 588
Tietääkö kukaan onko mitenkään mahdollista hakea pörssisähkön tuntihintoja google sheets taulukkoon ja jos on niin löytyykö jotain esimerkki koodia? Googlailu ei ole tuottanut tulosta.

Sähköauton tuntikohtaiset latausmäärät jo taulukkoon menee niin saisi suoraan laskettua lataushinnan euroina.
No siis Sheets tarjoaa näemmä mahdollisuuden hakea taulukkoon joko CSV-muotoista, XML-muotoista tai HTML-taulukkomuotoista kamaa simppelillä funktiolla. Ks. linkki

Jos tarvii tehdä jotain monimutkaisempaa, niin ilmeisesti Apps Script palvelun avulla pystyy tekemään kaikenlaista näiden ulkoisten kutsujen lisäksi. Varmaan tulee kyseeseen, jos rajapinta palauttaa JSON:ia ja se pitäs saada johonkin mukavaan taulukkomuotoon. Ks. linkki

Mut varmaan ensimmäinen on katsoa rajapinta, joka palauttaa jossain muodossa halutun datan ja sen jälkeen ruveta katsomaan noita edellisiä, että millä datan saa haluamassaan muodossa taulukkoon.
 
Liittynyt
16.11.2020
Viestejä
2 588
No tämä näyttäs kaikista helpoimmalta: Hinta nyt | Porssisahko.net

Jotain simppeliä Node-esimerkkiäkin on. Hakee tietonsa ilmeisesti Nord Poolin rajapinnoista, jotka taas näyttäs vaativan vähän perehtymistä, jos niitä haluais ite suoraan hyödyntää. Tällai siis kahden minuutin vilkaisulla.

Sieltä vaan kokeilemaan. Eka, että saat tulemaan ylipäänsä jotain dataa taulukkoon tuolta. Sen jälkeen miettimään, millaisen konversion tarviit, että saat tuon kaman siististi taulukkoon.
 
Liittynyt
27.10.2017
Viestejä
1 852
ENTSO-E tarjoaa ilmaisen rajapinnan kun pyytää siihen avaimen. Sitä pystyisi varmaankin käyttämään tuossa, ja tekoälyhän avustaa sujuvasti koodin vääntämisessä jos kaikki asiat ei ole tuttuja.
 
Liittynyt
31.12.2019
Viestejä
22
Päivittäin tulee seurailtua pörssikursseja Nordnetin sivuilta mutta tuolla muutama asia on kuitenkin alkanut tökkiä lievästi vastaan. Kun menee katsomaan jonkin osakkeen kurssia (esimerkkinä Sampo), niin eteen tuleva näkymä on lievästi kökkö: graafin tyyppi on viiva ja aikavälinä on 1 päivä (kuva ennen).
Screenshot_2024-04-10_180905.png

Jos haluaa vähänkään informatiivisempaa näyttöä, niin aikaväliksi pitäisi laittaa 12 kk ja asetuksista saa aina hakata päälle kynttilät, ruudukon, SMA:t, EMAn, yms. indikaattorit (kuva jälkeen).
Screenshot_2024-04-10_181113.png

Löytyykö mitään vinkkejä, että mitenkähän tuota saisi automatisoitua niin, että nuo haluamansa asetukset saisi päälle helposti esim. yhdellä napin painalluksella ilman, että tarvitsee aina hakata noita samoja asetuksia päälle tuolta kukkuu-valikosta silloin, kun sivulla vierailee? Ohjelmoitua on tullut jonkin verran mutta mitään nettisivujen käpistelyä javascriptillä tai vastaavaa ei ole tullut milloinkaan harrastettua, niin olen aika käsi tässä asiassa.
 
Liittynyt
19.10.2016
Viestejä
1 562
Päivittäin tulee seurailtua pörssikursseja Nordnetin sivuilta mutta tuolla muutama asia on kuitenkin alkanut tökkiä lievästi vastaan. Kun menee katsomaan jonkin osakkeen kurssia (esimerkkinä Sampo), niin eteen tuleva näkymä on lievästi kökkö: graafin tyyppi on viiva ja aikavälinä on 1 päivä (kuva ennen).

Jos haluaa vähänkään informatiivisempaa näyttöä, niin aikaväliksi pitäisi laittaa 12 kk ja asetuksista saa aina hakata päälle kynttilät, ruudukon, SMA:t, EMAn, yms. indikaattorit (kuva jälkeen).

Löytyykö mitään vinkkejä, että mitenkähän tuota saisi automatisoitua niin, että nuo haluamansa asetukset saisi päälle helposti esim. yhdellä napin painalluksella ilman, että tarvitsee aina hakata noita samoja asetuksia päälle tuolta kukkuu-valikosta silloin, kun sivulla vierailee? Ohjelmoitua on tullut jonkin verran mutta mitään nettisivujen käpistelyä javascriptillä tai vastaavaa ei ole tullut milloinkaan harrastettua, niin olen aika käsi tässä asiassa.
Asenna selaimeen userscript-laajennus (esim. Chromessa Tampermonkey näyttäisi olevan suosittu), johon voit sitten luoda esim. sivukohtaisia skriptejä, jotka ajetaan sivun latauksen yhteydessä. Sen jälkeen riippuukin sitten sivusta ja omista tarpeista, miten helposti skripteillä saa tehtyä haluamansa. JavaScriptillä homma joka tapauksessa toimii. Käytännössä saatat haluta esim. lisätä skriptillä painikkeen ja lisätä painikkeelle click-tapahtumakäsitteljän, joka tekee haluamasi temput. Kaikessa tässä on olennaista, että pystyy valitsemaan haluamansa elementit nettisivulta: paikka, johon painike lisätään, sekä mahdollisesti vivuat ja painikkeet, joita painiketta klikkaamalla halutaan ohjelmallisesti "klikata" (voi kenties myös kutsua sivulla olevaa koodia vähän koodista riippuen, mutta "klikkailu" saattaa toimia luotettavammin silloin, kun se ylipäänsä onnistuu).

Elementtien valinta on varmaan se isoin kysymysmerkki, sillä osalla nettisivuista valintaan käytettävissä olevat tunnisteet saattavat olla satunnaista kuraa, joka muistaakseni pahimmillaan vaihtuu jopa joka sivulatauksella. Usein toki nämä ovat myös varsin järkeviä, joten valinnan helppous selviää lähinnä tutkimalla. Toki kerran kirjoitetun koodin lahoamisvaara sivun päivitysten yhteydessä on ilmeinen...
 
Liittynyt
31.12.2019
Viestejä
22
Rakenteeltaan yksinkertaisilla sivuilla tuo saattaisi toimia, mutta mitä tutkailin Nordnetin nettisivujen rakennetta, niin oli kyllä sellaista ripulia, että sieltä ei minun taidoilla "klikkailla" skripteillä yhtään mitään nappeja. :rolleyes:
 
Liittynyt
17.10.2016
Viestejä
5 395
Rakenteeltaan yksinkertaisilla sivuilla tuo saattaisi toimia, mutta mitä tutkailin Nordnetin nettisivujen rakennetta, niin oli kyllä sellaista ripulia, että sieltä ei minun taidoilla "klikkailla" skripteillä yhtään mitään nappeja. :rolleyes:
Piti oikein käydä kurkkaamassa ja ainakin itselläni nuo asetukset säilyivät kun sulki välilehden tai sammutti selaimen. Kun meni uudestaan samalle sivulle niin kynttilät sun muut oli edelleen päällä. Eli ilmeisesti nuo asetukset tallentuvat johonkin cookieen tai vastaavaan ainakin joksikin aikaa.
 
Liittynyt
17.10.2016
Viestejä
14 664
Minulla nollautuu asetukset, kun koneen (tai selaimen) lyö kiinni ja avaa uudelleen.
Kyllä se sen tiedon näköjään tallentaan local storageen avaimeen "indicator/GRAPH_USER_PERIOD". Eli jos et erikseen tuota pyyhi (tai et käytä siis jotain selainta tai selainlaajennosta joka sen tekee), niin kyllä sen pitäisi se muistaa. Mitä selainta käytät ja onko käytössä jotain yksityisyyshimmeleitä?
 
Liittynyt
31.12.2019
Viestejä
22
Mitä selainta käytät ja onko käytössä jotain yksityisyyshimmeleitä?
Firefoxi käytössä, tiedä sitten onko alla näkyvillä säädöillä mitään vaikutusta.
Capture.PNG

Mitää yksityisyyttä suojelevia laajennoksia ei ole. Kokeilin myös ihan perusasetuksilla olevalla Edgellä, niin tämäkin hävitti asetukset selaimen uudelleenkäynnistyksen jälkeen.
 
Liittynyt
17.10.2016
Viestejä
14 664
Firefoxi käytössä, tiedä sitten onko alla näkyvillä säädöillä mitään vaikutusta.
Mielenkiintoista. Testasin Firefoxilla (macOS) ja täällä toimii kuten pitää. Jopa noilla tiukemmilla asetuksilla, jotka pastesit. Eli:

1. Avaa firefox.
2. Avaa Helsingin pörssi tänään - OMXH markkinakatsaus
3. Paina kuvaajan alta "6 kk"
4. Sulje selain ja avaa uudestaan.
5. Avaa Helsingin pörssi tänään - OMXH markkinakatsaus

Mulla näkyy yhä valittuna 6 kk. Ja käytössä ei siis mitään incognito/private-ikkunaa vaan ihan normi.

Se mihin tuon pitäisi tallentua löytyy näin:

1. Mene tuolle sivulle.
2. Avaa valikosta Tools -> Browser tools -> Web Developer tools
3. Avaa välilehti Storage
4. Avaa vasemmalta Local storage -> Sijoittaminen ja säästäminen
5. Tuolla valinta on tosiaan tallennettu avaimeen indicator/GRAPH_USER_PERIOD. Sinne esim. jos käsin kirjoittaa arvoksi "YTD" ja uudelleenlataa sivun, tulee valinnaksi YTD graafiin.

Joku sun FF:ssä nyt sitten pyyhkii tuon local storagen tai ei edes talleta sinne mitään. En osaa tarkemmin sanoa syytä.
 
Liittynyt
31.12.2019
Viestejä
22
Kun kävi tuota local storagea katsomassa, niin siellä ne avaimet arvoineen näytti napottavan, kun laittoi ne haluamansa asetukset päälle. Minulla tuo Firefox on mallia portable (ja käyttöjärjestelmä Win10), niin tiedä sitten johtuuko tuosta, että arvot eivät jää local storageen. Toisaalta katsoin myös Edgellä, joka ei ole portable, niin sielläkin arvot näkyvät local storagessa mutta eivät ole enää sitten, kun selaimen on käynnistänyt uudelleen. Jostain myös luin, että selaimen välimuistin tyhjentäminen tyhjentäisi tuon local storagen ja se tyhjennys olikin FF:ssa päällä, kun selain sulkeutuu. Otin tuon pois päältä mutta silti sama meno jatkuu.

Kun erehdyin katsomaan selaimen konsolia sivua ladattaessa ensimmäisellä kerralla, niin local storageen liittyvää erskaa näyttää pukkaavan.
Capture.PNG


Mystistä... :hmm:
 
Liittynyt
19.10.2016
Viestejä
1 562
^Tekisi mieli arvata, että koneella on jotakin useampaankin selaimeen vaikuttavaa, esim. virustentorjunta, joka aiheuttaa tuollaista, mutta onhan tuo aika erikoisen kuuloinen tapaus... Voisiko jokin jossakin estää esim. jonkin tietyn skriptin latauksen/suorituksen kaikissa selaimissa?
 
Liittynyt
31.12.2019
Viestejä
22
Räpläsin aikaisemmin joitakin asetuksia ja nyt se näyttää toimivan. Samalla hävisi yhdellä toisellakin sivulla ollut "asetusongelma". Nyt kun vielä tietäisi, että mikä asetus se lopulta tuon teki... :facepalm:
 
Toggle Sidebar

Statistiikka

Viestiketjut
239 554
Viestejä
4 190 497
Jäsenet
70 766
Uusin jäsen
Kotitie

Hinta.fi

Ylös Bottom