Pieniä kysymyksiä ohjelmoinnista

Liittynyt
05.01.2017
Viestejä
335
Minulle on päässyt kertymään muutamia kymmeniä Powershell-scriptejä. Suurin osa niistä tekee jotain hyödyllistä ja muutamat ovat vain lyhyitä pätkiä "muistiinpanoja", joita käytän kun teen scriptejä.

Juuri nyt niitä ei käytä kukaan muu kuin minä. Ainakin osan olisi silti hyvä olla myös muiden saatavissa (esim. Intunessa käytettävät.)

Säilytän niitä vain .ps1 -tiedostoina verkkolevyllä. Tähän olisi varmaan jotain kätevämpiäkin tapoja tai työkaluja. Ehdotuksia?
 
Liittynyt
17.10.2016
Viestejä
5 712
Minulle on päässyt kertymään muutamia kymmeniä Powershell-scriptejä. Suurin osa niistä tekee jotain hyödyllistä ja muutamat ovat vain lyhyitä pätkiä "muistiinpanoja", joita käytän kun teen scriptejä.

Juuri nyt niitä ei käytä kukaan muu kuin minä. Ainakin osan olisi silti hyvä olla myös muiden saatavissa (esim. Intunessa käytettävät.)

Säilytän niitä vain .ps1 -tiedostoina verkkolevyllä. Tähän olisi varmaan jotain kätevämpiäkin tapoja tai työkaluja. Ehdotuksia?
Tee vaikka GitHubiin joku repo, minne sitten annat käyttöoikeudet muille tarvittaessa? Tai jos on yleisluontoisia skriptejä mitä voi jakaa julkisesti, niin laita vaikka koko repo julkiseksi.
 
Liittynyt
21.10.2016
Viestejä
9 246
Tee vaikka GitHubiin joku repo, minne sitten annat käyttöoikeudet muille tarvittaessa? Tai jos on yleisluontoisia skriptejä mitä voi jakaa julkisesti, niin laita vaikka koko repo julkiseksi.
Juurikin tätä olin itse ehdottamassa. Samalla voi saada jopa parannusehdotuksiakin hyvän karman lisäksi. Aiheittain, yksittäin tai kaikki samaan repoon. Nykyää (ollu jo hyvän aikaa microsoftin ostettua palvelun) githubissa privaatti-repotki ilmaisia ilman ehtoja, jos menny ohi.
 
Viimeksi muokattu:
Liittynyt
05.01.2017
Viestejä
335
Pitää harkita tuota GitHubia ainakin kokonaisille scripteille.

Mites ne "muistiinpanot", jotka ovat siis lyhyitä pätkiä, joita copy & pastetan scriptiä tehdessä. GitHubiin vain nekin vai onko parempia työkaluja niille?
 
Liittynyt
17.10.2016
Viestejä
5 712
Pitää harkita tuota GitHubia ainakin kokonaisille scripteille.

Mites ne "muistiinpanot", jotka ovat siis lyhyitä pätkiä, joita copy & pastetan scriptiä tehdessä. GitHubiin vain nekin vai onko parempia työkaluja niille?
No siis jos ne on jotain käyttöohjeita tms. niille skripteille, niin laita ne sinne samaan repoon README.md:nä, ja muotoile haluamaasi muotoon markdownilla. Tai tunge kommenttiriveiksi skriptien sisään.

Jos ne taas on jotain monessa paikkaa käytettäviä toistuvia koodinpätkiä, niin fiksuinta olisi paketoida ne funktioiksi ja käyttää niitä sellaisenaan importtaamalla ne niihin muihin skripteihin, ilman että niitä tarvitsee jatkuvasti copy-pasteta kaikkialle.

Vai mihin käyttöön ne muistiinpanot siis on, etenkin kun ne nyt on heittomerkeillä "muistiinpanoja"?
 
Liittynyt
21.10.2016
Viestejä
9 246
Pitää harkita tuota GitHubia ainakin kokonaisille scripteille.

Mites ne "muistiinpanot", jotka ovat siis lyhyitä pätkiä, joita copy & pastetan scriptiä tehdessä. GitHubiin vain nekin vai onko parempia työkaluja niille?
Ihan hyvin menee sinne. Löytyy tuolta ihan yhdenki rivin ja parin komennon lyhyitä juttuja tai iha parin rivin conffejaki. Miksi ei, ei maksa mitää.
 
Liittynyt
07.01.2021
Viestejä
687
Minulla on lyhyitä juttuja tallessa gisteinä Githubissa. Harmi että käyttöliittymä ei ole parantunut , joten en tiedä voiko tuota menetelmää suositella.
 
Liittynyt
31.12.2022
Viestejä
251
Koska sulariohjelmoijan elämä on kuin trapetsitaiteilu veitsen terällä ja tasapainona toimii kauhu muisti- ja virranhallintavuotojen välimaastossa, niin tarjoaako Rust tähän ongelmaan ratkaisuja? Onko Rust = C 2.0?

Tuntuu hullulta, että vuonna 2023 edes betajulkaisu voi mennä niin pieleen, että laitteen akkukesto romuttuu. Nothing Phonen betajulkaisussa kävi näin:
(Edit. Ketjun kaksi viimeistä viestiä)

En itse osaa ohjelmoida mitään. Rust tuntuu olevan kovassa nosteessa tällä hetkellä C-piireissä. Sen jälkeen, kun M1 Macin Linux-näytönohjainajuri uudelleenkirjoitettiin Rustilla ja 3D-grafiikan piirtäminen onnistui niinsanotusti heti, on Rust saanut jonkinlaisia hypetyksen piirteitä. Onko Rust hypetyksen arvoinen?
 
Liittynyt
27.10.2017
Viestejä
1 854
Tuntuu hullulta, että vuonna 2023 edes betajulkaisu voi mennä niin pieleen, että laitteen akkukesto romuttuu.
No, Googlekin sössi jotain Android 13:ssa, koska Pixeleissä oli alkuun paljon akunkestoon liittyviä ongelmia ja Samsungeissa edelleen :confused2:
 
Liittynyt
07.01.2021
Viestejä
687
Eihän se vaadi kuin sen, että jokin estää laitetta menemästä deep sleepiin.
 
Liittynyt
27.10.2017
Viestejä
1 854
Eihän se vaadi kuin sen, että jokin estää laitetta menemästä deep sleepiin.
Niinpä. Näyttää vaan ongelma olevan edelleen Pixeleissäkin olemassa, eli ei olekaan mikään yksinkertainen ratkaista. Itse kun vaihdoin Samsungissa A12 -> A13, alkoi järjetön virrankulutus.
 
Liittynyt
17.10.2016
Viestejä
5 407
Niinpä. Näyttää vaan ongelma olevan edelleen Pixeleissäkin olemassa, eli ei olekaan mikään yksinkertainen ratkaista. Itse kun vaihdoin Samsungissa A12 -> A13, alkoi järjetön virrankulutus.
Jaa, tuo selittääkin sitä kun nykyään tuntuu omassa Samsungissa akku kuluvan aiempaa nopeammin. Ajattelin että johtuu vaan siitä että alkaa olla aika vanha puhelin ja akku ehtoopuolella mutta tosiaan tuo ilmiö alkoi samoihin aikoihin kun jonkun käyttispäivityksen asensin siihen, taisi olla juurikin Android 12 -> 13.
 

hrk

Liittynyt
23.07.2017
Viestejä
1 738
Nonih, apua taas kaipaillaan ja tämä ketju ei ole ikinä tuottanut pettymystä. Eventghostilla yritän lähettää https-urlia ajaakseni automaatiota, mutta en tiedä mitä Eventghostin python script komennoksi pitää kirjottaa.

jos url on vaikkapa https://kylonkivaa.com , niin mitä tuohon ruutuun pitää naputella.


Tätä jo yritin kun kaivoin eventghostin hajonneelta foorumilta välimuistista keskusteluja:

import urllib; urllib.urlopen('https jotain jotain jotain')

Mutta ei toimi.
Et sitten raaskinut yhtään kertoa mitä olet tekemässä.

EventGhost -niminen tuote löytyy kyllä githubista, mutta projekti vaikuttaa kuolleelta.
 
Liittynyt
07.01.2021
Viestejä
687
Onko jollain ollut vastaavaa ongelmaa Linuxin socketien kanssa?

Minulla on softa, joka kuuntelee n:ää porttia selectillä ja kirjoittaa yhteen porttiin. Lisäksi on simppelit testisoftat, joista toinen kirjoittaa yhteen noista porteista ja toinen kuuntelee tuota porttia, johon tuo softa kirjoittaa. Softa tällä hetkellä forwardoi vain viestit noiden välillä. Kyse on siis seqpacket-tyypisestä lokaalisoketista (kokeilin myös stream-tyyppistä), jossa ei pitäisi olla mitään kummallista. Kaikki pyörivät samassa threadissa, koska sen pitäisi riittää.

Ongelma on siinä, että socketeihin lähetetyt viestit menevät perille vasta kun sovelluksen sammuttaa. Tuo testilähettäjä toimii, koska se lopettaa heti kun on viestin lähettänyt. Tuo varsinainen softa taas ei noin voi toimia. Olen kokeillut jo yhtä sun toista, socketin sulkemista (shutdown/close), mikä lähettää kyllä ekan viestin, mutta sitten loppuu viesittely siihen asti että taas käynnistän softan uudestaan. Ja olen kyllä tuijottanut silmät kipeäksi, että mitä muka jää uudelleenavauksessa tekemättä vrt. koko softan käynnistys... kokeilin myös SO_REUSEADDR:ia, vaikka se on kai tarkoitettu vain TCP-socketeille. No, ei vaikuttanut asiaan.

recv:llä tehdyt on ainakin tähän asti toimineet oikein, mutta nyt tuo ei ole oikein vaihtoehto.
 
Liittynyt
19.10.2016
Viestejä
1 932
Et sitten raaskinut yhtään kertoa mitä olet tekemässä.

EventGhost -niminen tuote löytyy kyllä githubista, mutta projekti vaikuttaa kuolleelta.
öö...en ymmärtänyt, että tässä olisi tarve itse automaatiota avata sen enempää, vai mitä tarkoitit? Kysymys siis kuului, että millä python scriptillä voi lähettää POST:n, mutta taklasin tämän toista reittiä jo. EventGhostin oletin (ei pitäisi) monelle olevan tuttu ja kun sillä ei sinällään ole merkitystä, että tekeekö tässä POST:n nyt EventGhostin kautta vai jollakin muulla Pythonia puhuvalla kikkareella.
 

hrk

Liittynyt
23.07.2017
Viestejä
1 738
öö...en ymmärtänyt, että tässä olisi tarve itse automaatiota avata sen enempää, vai mitä tarkoitit? Kysymys siis kuului, että millä python scriptillä voi lähettää POST:n, mutta taklasin tämän toista reittiä jo. EventGhostin oletin (ei pitäisi) monelle olevan tuttu ja kun sillä ei sinällään ole merkitystä, että tekeekö tässä POST:n nyt EventGhostin kautta vai jollakin muulla Pythonia puhuvalla kikkareella.
Luonnollisesti tarkoitin, että et kerro mitä sillä python-lauseella pitäisi saada aikaan, noin pääpiiorteissään. Siitä nimittäin riippuu sen lauseen sisältö, jota kai kysyit. Mutta kun ei eventghost ole enää edes sen verran olemassa, että dokumentaatiota löytyisi jostain, niin antaapa olla.
 
Liittynyt
17.10.2016
Viestejä
14 697
öö...en ymmärtänyt, että tässä olisi tarve itse automaatiota avata sen enempää, vai mitä tarkoitit? Kysymys siis kuului, että millä python scriptillä voi lähettää POST:n, mutta taklasin tämän toista reittiä jo. EventGhostin oletin (ei pitäisi) monelle olevan tuttu ja kun sillä ei sinällään ole merkitystä, että tekeekö tässä POST:n nyt EventGhostin kautta vai jollakin muulla Pythonia puhuvalla kikkareella.
Aina silloin tällöin kysytään ns. X Y -kysymys. Eli halutaan kysymyksen perusteella tehdä X, mutta oikeasti halutaankin tehdä Y, joka olisi kaikella tavalla parempi tehdä toisella tavalla kuin X. Ja vaikka ei olisi, niin se voi silti vaikuttaa siihen X:ään. Eli siksi voisi olla yleensä hyvä kertoa se lopullinen asia, jota ollaan tekemässä.

Mä en esim. ymmärrä, mitä tarkoittaa "yritän lähettää https-urlia". Lähettää millä ja minne? Vai pitikö tehdä HTTP-request tuohon urliin Pythonilla? Ja kun puhutaan Pythonista, niin Pythonin versio voi myös vaikuttaa vastaukseen ja se, mitä paketteja on käytettävissä.

Lisäksi, jos joku "ei toimi", niin kannattaa kertoa miten se ei toimi. Tulee virhe, mikä virhe, kaatuu, tekee jotain mutta ei sitä mitä halutaan jne.
 
Liittynyt
19.10.2016
Viestejä
1 932
Okei, kiitos selvennyksestä. On olemassa eräs webcore kotiautomaatiosäännöstö, jossa ajetaan kotiautomaatioon liittyviä sääntöjä. Jos automaatiosäännössä ei ole triggeriä, niin sääntöä voi kutsua myös pilvipalvelun yli automaation internetissä olevalla url-osoitteella. Kun url kirjoitetaan selaimeen, niin automaatio ajetaan.
Nyt yritin siis Evenghostiin määritellä sääntöä, kun tietokone herää suspend tilasta, niin 10 sekuntia heräämisen jälkeen eventghostissa ajetaan python komento joka kutsuu kyseistä internetissä olevaa urlia. Automaation url on https://lässytilää.com. Ja automaatio itsessään power switchaa pistoketta, jotta Dellin näyttö herää hdmi-signaaliin. Siinä siis tietoa jota olitte vailla :)
Joka tapauksessa ja kuten sanoin, sain asian hoidettua Eventghostilla joka avaa selaimeen urlin ja sulkee sen parin sekunnin päästä pois.
Jos nyt tällä perusteella joku osaa kertoa mitä python-kielellä/komentona pitää kirjoittaa, niin mielelläni kuulisin ja oppisin.
 
Liittynyt
19.10.2016
Viestejä
1 932
Luonnollisesti tarkoitin, että et kerro mitä sillä python-lauseella pitäisi saada aikaan, noin pääpiiorteissään. Siitä nimittäin riippuu sen lauseen sisältö, jota kai kysyit. Mutta kun ei eventghost ole enää edes sen verran olemassa, että dokumentaatiota löytyisi jostain, niin antaapa olla.
Kyllä tuo eventghost pitäisi olla olemassa, mutta vuoden loppupuolella on tapahtunut jotain ja webbisivut katosivat tuhkana tuuleen. On vahvasti käytössä "piireissä" ja on vakiintunut välineeksi, jonka avulla mm. kotiautomaatio voi keskustella vaikkapa hikisen läppärin kanssa.
 
Liittynyt
02.11.2016
Viestejä
1 177
Okei, kiitos selvennyksestä. On olemassa eräs webcore kotiautomaatiosäännöstö, jossa ajetaan kotiautomaatioon liittyviä sääntöjä. Jos automaatiosäännössä ei ole triggeriä, niin sääntöä voi kutsua myös pilvipalvelun yli automaation internetissä olevalla url-osoitteella. Kun url kirjoitetaan selaimeen, niin automaatio ajetaan.
Nyt yritin siis Evenghostiin määritellä sääntöä, kun tietokone herää suspend tilasta, niin 10 sekuntia heräämisen jälkeen eventghostissa ajetaan python komento joka kutsuu kyseistä internetissä olevaa urlia. Automaation url on https://lässytilää.com. Ja automaatio itsessään power switchaa pistoketta, jotta Dellin näyttö herää hdmi-signaaliin. Siinä siis tietoa jota olitte vailla :)
Joka tapauksessa ja kuten sanoin, sain asian hoidettua Eventghostilla joka avaa selaimeen urlin ja sulkee sen parin sekunnin päästä pois.
Jos nyt tällä perusteella joku osaa kertoa mitä python-kielellä/komentona pitää kirjoittaa, niin mielelläni kuulisin ja oppisin.
Python:
import urllib2

urllib2.urlopen('https://lässytinlää.com')
Mutta en usko, että onnistuu ihan näin helpolla, vaan jotenkin pitää varmaan sinne sivulle tunnistautuakin? Kaikki muu kannattaa tehdä käyttöjärjestelmän säädöillä.
 
Liittynyt
19.10.2016
Viestejä
1 932
Python:
import urllib2

urllib2.urlopen('https://lässytinlää.com')
Mutta en usko, että onnistuu ihan näin helpolla, vaan jotenkin pitää varmaan sinne sivulle tunnistautuakin? Kaikki muu kannattaa tehdä käyttöjärjestelmän säädöillä.
Joo tuota mä kokeilin jo kun googlettelin apuja. En saanut tuolla toimimaan. Eventghostin loki kertoo "wrong protocol". Jotenkin tuli mieleen, että onkohan https jotenkin urllibille ongelma.
 
Liittynyt
02.11.2016
Viestejä
1 177
Joo tuota mä kokeilin jo kun googlettelin apuja. En saanut tuolla toimimaan. Eventghostin loki kertoo "wrong protocol". Jotenkin tuli mieleen, että onkohan https jotenkin urllibille ongelma.
Voi olla, että se sivu toimii JavaScriptilla ja se käyttää jotain protokollaa, mikä onnistuu JS:lla. WebSocket jne., mitä näitä kaikkia on.

E: selvinnee, jos avaat selaimesta developer toolsit (F12), sitten menet Network-välilehdelle ja suoritat kutsun selaimella. Tai en ole 100% varma näkyykö se tuolla jos on WebSocket.
 
Liittynyt
19.10.2016
Viestejä
1 563
Koska sulariohjelmoijan elämä on kuin trapetsitaiteilu veitsen terällä ja tasapainona toimii kauhu muisti- ja virranhallintavuotojen välimaastossa, niin tarjoaako Rust tähän ongelmaan ratkaisuja? Onko Rust = C 2.0?
Rust tarjoaa ratkaisun turvalliseen ja suorituskykyiseen muistinkäyttöön. Muistivuotoihin ja virranhallintaan siinä ei sinänsä ole mitään erityisempää, mutta toki sen vahva tyyppijärjestelmä ja kääntäjä antavat eväitä erilaisten ongelmien varmatoimisiin ratkaisuihin. Usein Rustia verrataan pikemminkin C++:an kuin C:hen, joten siinä mielessä C++ 2.0 olisi varmaan lähempänä totuutta kuin C. Tosin se eroaa molemmista huomattavasti, joten Rustin kutsuminen kummankaan 2.0-versioksi voi varmaankin perustellustikin herättää vastalauseita.

Onko Rust hypetyksen arvoinen?
Riippuu varmastikin siitä, miten haluaa tehdä asioita ja millaisia asioita arvostaa ohjelmistokehityksessä. Muistiturvallisiin ja suorituskykyisiin tarkoituksiin Rust on varmastikin erittäin mainio kieli, mutta harvempi tahtoisi esim. kirjoittaa juurikaan minkäänlaisia prototyyppejä Rustilla. Myös vahva tyyppijärjestelmä ja kääntäjä jakavat varmasti mielipiteitä kenties ennen kaikkea siksi, että ne rajoittavat kovalla kädellä huonojen suunnitteluratkaisujen tekemistä (mutteivat toki voi estää kaikkia huonoja ratkaisuja). Tavallaan yllättävänkin usein näkee myös mainittavan, että homma jotakuinkin toimii, kun ohjelman saa kääntymään. Kovin monesta kielestä ei voi laajemmin samaa sanoa. Moniin tarpeisiin Rust on varmastikin erinomainen ratkaisu, mutta joihinkin muihin tarkoituksiin voi löytyä parempiakin työkaluja.
 
Liittynyt
17.10.2016
Viestejä
5 407
Voi olla, että se sivu toimii JavaScriptilla ja se käyttää jotain protokollaa, mikä onnistuu JS:lla. WebSocket jne., mitä näitä kaikkia on.

E: selvinnee, jos avaat selaimesta developer toolsit (F12), sitten menet Network-välilehdelle ja suoritat kutsun selaimella. Tai en ole 100% varma näkyykö se tuolla jos on WebSocket.
Haiskahtaa siltä että "wrong protocol" kertoo että tuo osaa lähettää nykyisellään vain HTTP:llä ja HTTPS vaatii jotain lisää tuohon. Urlllib (ja muutkin python-kirjastot) tuntuvat välillä antavan todella epäselviä virheilmoituksia joten menee aikalailla arpomiseksi tuon kanssa.
 
Liittynyt
02.11.2016
Viestejä
1 177
Haiskahtaa siltä että "wrong protocol" kertoo että tuo osaa lähettää nykyisellään vain HTTP:llä ja HTTPS vaatii jotain lisää tuohon. Urlllib (ja muutkin python-kirjastot) tuntuvat välillä antavan todella epäselviä virheilmoituksia joten menee aikalailla arpomiseksi tuon kanssa.
Jos palvelu tarjoaa vain HTTP:ää, eikä HTTPS:ää, niin sitten kyllä urllibin vastaus on kyllä tosi paska. Olisi paikallaan lähettää PR.
 
Liittynyt
02.11.2016
Viestejä
1 177
Haiskahtaa siltä että "wrong protocol" kertoo että tuo osaa lähettää nykyisellään vain HTTP:llä ja HTTPS vaatii jotain lisää tuohon. Urlllib (ja muutkin python-kirjastot) tuntuvat välillä antavan todella epäselviä virheilmoituksia joten menee aikalailla arpomiseksi tuon kanssa.
Laitoin hakuun ws:// GitHubista ja jotain löytyi tuolta, niin voisi olla WebSocket kyseessä sen perusteella. En etsinyt sen enempää.
 
Liittynyt
18.10.2016
Viestejä
527
ei saatana ton pythonin kanssa mitähän teen väärin kun taas löysin ihme bugin pythonista ja en vain itse tajua perkele
koodin pitäis tulostaa numerot järjestyksessä että 2,1,4,3jne eli parillinen tulee ennen paritonta ja kyllä tämäkin on harjoitustehtävä joka periaatteessa toimii.
alustana windows 10 , python 3 ja vscodium
Koodi:
uinput = 11# int(input("give number:"))
run = 2




while run<=uinput:
    print(run)
    run-=1
    print(run)
    run+=3
    if run>uinput:
        if (uinput %2) == 0:
            pass
        else:
            print(uinput)
tämä toimii oikein eli numerot tulostuu kuten pitää. jos uinput on 10 toimii jne ainakin en ole huomannut virhettä mutta hauskuu tulee kun uinput on 12 koko paska räjähtää ja antaa vastaukseksi:
1
4
3
6
5
8
7
10
9
12
11
tosin jos tuonne run+=3 jälkeen laittaa input() niin sitten se tulostaa kyllä oikein eli:
2
1

4
3

6
5

8
7

10
9

12
11

elikkä mitähän vittua en taas ymmärrä pythonista =)
editoidaan sen verran että jos teen test.py filun ja ajan suoraan python test.py koodi ajautuu oikein eli vika ilmeisesti jää vscodiumiin :)
 
Viimeksi muokattu:
Liittynyt
31.12.2016
Viestejä
443
Jos run parillinen tulosta run ja alle run -1, muuten tulosta tyhjä rivi.
Yläpuolelle looppi run arvo 2, aja kunnes run = uinput + 1, kasvata run + 1.
Koodi:
if (run % 2) == 0:
          print run
          print run - 1
        else:
             print("")
 
Liittynyt
07.01.2021
Viestejä
687
Ihan turha tuota jakojäännöstä on käyttää. Lisää tuota run:ia aina kahdella vaan. Siis
Koodi:
run = 2
while run <= uinput:
  print(run)
  print(run -1)
  run += 2
 
Liittynyt
18.10.2016
Viestejä
527
Tuo jakojäännös on se takia että sinne voi käyttäjä antaa minkä tahansa numeron ja jos numero on pariton se ei toimi ilman jakojäännöstä. Ja siis tuo koodi toimii paitsi uinput 12
 
Liittynyt
10.07.2019
Viestejä
55
Jos on seuraavanlaiset Java-luokat:
Koodi:
public class Product {
    private Long id;
    private String productName;
    private Company company;
}
Koodi:
public class Company {
    private Long id;
    private String companyName;
    private List<Products> products;
}

Ja halutaan clientistä tehdä POST-pyyntö uuden Product-tietueen lisäämistä varten, niin kumpiko on parempi tapa viitata tietokannassa olevaan Company-tietoon?

JavaScript:
{
  "productName": "tuote1",
  "companyId": 1
}
JavaScript:
{
  "productName": "tuote1",
  "companyName": "Oy Yritys AB"
}
Sekä nimi että id ovat molemmat tietokannassa uniikkeja, joten se ei tuota ongelmia.

EDIT: Rest API Design - Work with IDs or Literal Strings?
Tämän mukaan noista vaihtoehdoista parempi on tuo tekstimuotoinen viittaus, joten sillä mennään.
 
Viimeksi muokattu:
Liittynyt
17.01.2018
Viestejä
2 089
Jos on seuraavanlaiset Java-luokat:
Koodi:
public class Product {
    private Long id;
    private String productName;
    private Company company;
}
Koodi:
public class Company {
    private Long id;
    private String companyName;
    private List<Products> products;
}

Ja halutaan clientistä tehdä POST-pyyntö uuden Product-tietueen lisäämistä varten, niin kumpiko on parempi tapa viitata tietokannassa olevaan Company-tietoon?

JavaScript:
{
  "productName": "tuote1",
  "companyId": 1
}
JavaScript:
{
  "productName": "tuote1",
  "companyName": "Oy Yritys AB"
}
Sekä nimi että id ovat molemmat tietokannassa uniikkeja, joten se ei tuota ongelmia.

EDIT: Rest API Design - Work with IDs or Literal Strings?
Tämän mukaan noista vaihtoehdoista parempi on tuo tekstimuotoinen viittaus, joten sillä mennään.
Ensin pitää määritellä minkä suhteen parempi.

Yleisesti jos dataa on paljon käytetyn avaimen pituuden kasvattaminen hidastaa, samoin numerot ovat nopeampia kuin merkkijonot koska vertailuja tarvitaan vähemmän.

Vaikuttaa myös käytetty kanta (relaatio/nosql/...) ja mitä se tukee ja/tai tekee paremmin/huonommin.
 
Liittynyt
12.12.2018
Viestejä
43
Meillä on csv-tiedostossa 500 riviä ja 4 saraketta. Nämä tiedot pitäisi kovakoodata ohjelmaan sisälle, jotta csv-tiedosta ei tarvitsisi laittaa ohjelman mukana. Onko tähän jokin järkevämpi tapa, kuin kovakoodata rivit omaksi luokaksi sovelluslaajennuksen sisälle? Lähinnä ylläpitoa ajattelen. Jos csv-tiedostoon tulee lisää rivejä, uudelleen pakkaus ei ole ongelma, mutta rivien kovakoodaus esim. skriptillä tuntuu vähän purkkaviritykseltä. "Supersalaisena" tietona noita rivejä ei haluta toimittaa tekstieditorilla avattavassa muodossa. Jos rivejä tulee lisää, tulee uusi csv-tiedosto. Salattu tietokanta tuntuu aika yliampuvalta näin pieneen hommaan.
 
Liittynyt
16.11.2020
Viestejä
2 588
Meillä on csv-tiedostossa 500 riviä ja 4 saraketta. Nämä tiedot pitäisi kovakoodata ohjelmaan sisälle, jotta csv-tiedosta ei tarvitsisi laittaa ohjelman mukana. Onko tähän jokin järkevämpi tapa, kuin kovakoodata rivit omaksi luokaksi sovelluslaajennuksen sisälle? Lähinnä ylläpitoa ajattelen. Jos csv-tiedostoon tulee lisää rivejä, uudelleen pakkaus ei ole ongelma, mutta rivien kovakoodaus esim. skriptillä tuntuu vähän purkkaviritykseltä. "Supersalaisena" tietona noita rivejä ei haluta toimittaa tekstieditorilla avattavassa muodossa. Jos rivejä tulee lisää, tulee uusi csv-tiedosto. Salattu tietokanta tuntuu aika yliampuvalta näin pieneen hommaan.
En tiedä voiko tuohon vastata oikein mitään järkevää tietämättä tarkemmin, että mikä homma tuo on, miten sovellus buildataan ja julkaistaan, missä tuota ajetaan jne., mutta jos sitä tiedostoa ei voi paketoida sovelluksen matkaan, niin voiko se softa käydä lukemassa sen tiedoston jostain käynnistyessään? Joku julkisen pilven object storage, levypinta tai mikä tahansa paikka, joka ois käytettävissä ja jonne tuolla softalla on vaan pääsy. Tuolloin ylläpito on sitä, että käyt tyrkkään vaan uuden tiedoston tarjolle ja julkaiset tai käynnistät vaan sovelluksen uudestaan.

muoks. tuollainenkin härveli on ollut jossain käytössä, itellä tosin hyvin minimaalisesti oikeaa käyttökokemusta. En osaa arvata, onko mitään iloa tähän keissiin, mutta ei liene haittaa vilkaista: A Comprehensive Guide to SOPS: Managing Your Secrets Like A Visionary, Not a Functionary
 
Viimeksi muokattu:
Liittynyt
03.07.2018
Viestejä
347
Vue 2 ->3 muuttui koodaus niin että ei enää laiteta muuttujia dataan vaan setuppiin ja sielä ne on reffinä.
No chromen inspectori ei enää näköjään näytä muuttujien arvoa kun laittaa breakpointin. Aiemmin tuli edellisten rivien muuttujien arvot myös näkyviin mutta ei enää. Ilmeisesti koska muuttuja on ref-tyyppinen.
Mitä #&#¤#% millä tuon saisi nyt helpommaksi takaisin että näkee mitä sielä this.xxx.sss on ?
 
Liittynyt
10.07.2019
Viestejä
55
Täytyy heti alkuun myöntää että en ole Vuella mitään ikinä tehnyt, mutta veikkaisin että tarvitset Chromeen Vuen devtools lisäosan: Vue.js devtools
Ainakin Reactin vastaava lisäosa helpottaa debuggaamista huomattavasti
 
Liittynyt
10.01.2017
Viestejä
132
Meillä on csv-tiedostossa 500 riviä ja 4 saraketta. Nämä tiedot pitäisi kovakoodata ohjelmaan sisälle, jotta csv-tiedosta ei tarvitsisi laittaa ohjelman mukana. Onko tähän jokin järkevämpi tapa, kuin kovakoodata rivit omaksi luokaksi sovelluslaajennuksen sisälle? Lähinnä ylläpitoa ajattelen. Jos csv-tiedostoon tulee lisää rivejä, uudelleen pakkaus ei ole ongelma, mutta rivien kovakoodaus esim. skriptillä tuntuu vähän purkkaviritykseltä. "Supersalaisena" tietona noita rivejä ei haluta toimittaa tekstieditorilla avattavassa muodossa. Jos rivejä tulee lisää, tulee uusi csv-tiedosto. Salattu tietokanta tuntuu aika yliampuvalta näin pieneen hommaan.
Mites vaikka triviaali 'salaus' csv tiedostoon, vaikka yksinkertainen xor tai TEA? Jakeluvaiheessa sitten jollain vartavasten tehdyllä simpplelillä kikkareella 'salataan' tuo csv, ja ohjelmassa olisi sisäänrakennettuna vastaava mekanismi tiedoston avaamiseen käynnistysvaiheessa? Mulla oli täsmälleen vastaava juttu firman sisäiseen käyttöön tehdyssä ohjelmassa, ja ratkaisin asian näin (käytin TEA-salausta). Toimi.
 
Liittynyt
16.11.2020
Viestejä
2 588
Mites vaikka triviaali 'salaus' csv tiedostoon, vaikka yksinkertainen xor tai TEA? Jakeluvaiheessa sitten jollain vartavasten tehdyllä simpplelillä kikkareella 'salataan' tuo csv, ja ohjelmassa olisi sisäänrakennettuna vastaava mekanismi tiedoston avaamiseen käynnistysvaiheessa? Mulla oli täsmälleen vastaava juttu firman sisäiseen käyttöön tehdyssä ohjelmassa, ja ratkaisin asian näin (käytin TEA-salausta). Toimi.
Niin tässä mallissako tuo ite tiedosto eläis versionhallinnassa selkokielisenä?
 
Liittynyt
07.01.2021
Viestejä
687
Tuossa pitäisi ensin määritellä tarvittava taso.

Yhdessä kikkareessa oli määritelty pitkähkö randomi avain (olikohan 512 tavua), jolla data xoratiin. Tuonkin saa tietysti selvitettyä avaamalla binääri heksaeditorissa. Itse tiedostosta avaimen selvittäminen olisi ollut jokseenkin toivotanta, kun tiedosto ei sisältänyt minkäänlaisia metatietoja tai headereita, ainoastaan mittausdataa. Ei mahdotonta, mutta ei tuota kukaan huvikseen pura, eikä kyse ollut niin tärkestä datasta että kukaan olisi tuollaista vaivaa nähnyt.

Tekisin varmaan samalla tavalla, jos kyse ei ole mistään elämää suuremmasta datasta, jonka leviäminen aiheuttaa miljoonatappiot.
 
Liittynyt
20.10.2016
Viestejä
480
En tiedä pystyykö tähän vastaamaan lähtötiedoillani, mutta kokeillaan. En ole koodari tai varsinaisesti osaa koodata, mutta erääseen järjestelmään on välillä tarve tehdä tietynlaisia laskentoja. Se käyttää ymmärtääkseni NCalcia, mikä lie se tarkemmin onkaan.

Olen tehnyt laskentakaavan if ( A == 1 || A == 2 && B == 3, 'X', 'Y'), mutta se tulostaa aina X, mikäli ensimmäinen ehto täyttyy (A == 1) riippumatta mikä B on. Mikäli ensimmäinen vertailu on false eli tosiasiassa A = 2 tai jokin muu, silloin kaava toimii oikein ja myös B huomioidaan. Samoin jos muokkaan kaavaa niin, että on pelkästään yksi A:n vertailu ja lisäksi tuo B:n vertailu, se toimii oikein.

Onko minulla joku perustavanlaatuinen ajatusvirhe miten tällaiset kaavat yleensä toimivat? Kuvittelin, että toimisi noin eli jos A on 1 TAI 2 JA sen lisäksi B on 3, palautetaan X, muuten Y.
 
Liittynyt
17.10.2016
Viestejä
14 697
Olen tehnyt laskentakaavan if ( A == 1 || A == 2 && B == 3, 'X', 'Y'), mutta se tulostaa aina X, mikäli ensimmäinen ehto täyttyy (A == 1) riippumatta mikä B on. Mikäli ensimmäinen vertailu on false eli tosiasiassa A = 2 tai jokin muu, silloin kaava toimii oikein ja myös B huomioidaan. Samoin jos muokkaan kaavaa niin, että on pelkästään yksi A:n vertailu ja lisäksi tuo B:n vertailu, se toimii oikein.
Lisää sulkeet. Eli if ( ( A == 1 || A == 2) && B == 3...). Silloin vaaditaan, että B on 3, ja lisäksi A:n oltava 1 tai 2. Kannattaa katsoa ohjelmointikielen syntaksista, miten nuo evaluoidaan eli missä järjestyksessä tuo puretaan.
 
Liittynyt
16.11.2020
Viestejä
2 588
Kyllä, ja sitten paketointi/jakeluvaiheessa csv kryptataan.
Jees.

Minun makuuni versionhallinta ei ole paikka, jossa pitäs säilyttää luottamuksellista tietoa selkokielisenä ja oon tottunut käytäntöön, että salaisuudet yms. luottamuksellinen kama populoidaan sovellukselle ajonaikaisesti jostain ulkoisesta palvelusta.

Tolla SOPSilla muistan hanskatun esim. tunnareita sisältäviä Helm charteja, joilla on julkaistu konttikokonaisuuksia Kubernetekseen, jolloin ite tunnarit ei ole kaikkien klusterin käyttäjien katseltavissa selkokielisenä, mutta tarvitseva sovellus saa ne purettuna. Jotain avainjumppaa tuo tais kyllä poikia.. En valitettavasti muista tän yksityiskohtaisemmin tuota, enkä tiedä kiinnostaakokaan ketään :D
 
Liittynyt
20.10.2016
Viestejä
480
Lisää sulkeet. Eli if ( ( A == 1 || A == 2) && B == 3...). Silloin vaaditaan, että B on 3, ja lisäksi A:n oltava 1 tai 2. Kannattaa katsoa ohjelmointikielen syntaksista, miten nuo evaluoidaan eli missä järjestyksessä tuo puretaan.
No näin! Nuo sulkeethan saivat kaavan heti toimimaan, ja nyt jälkikäteen mietittynä asia on tietysti looginen. Koitin tuon kielen syntaksia netistä etsiä, mutta en löytänyt. Kiitos avusta!
 
Liittynyt
17.10.2016
Viestejä
14 697
No näin! Nuo sulkeethan saivat kaavan heti toimimaan, ja nyt jälkikäteen mietittynä asia on tietysti looginen. Koitin tuon kielen syntaksia netistä etsiä, mutta en löytänyt. Kiitos avusta!
Esim. C++:ssa ja Javassa evaluoidaan ensin yhtäsuuruus, sitten && ja lopuksi ||. Eli sun ekassa "A == 1 || A == 2 && B == 3" jos A on 1 ja B on 55, niin tuosta tulee "true || false && false" -> "true || false" ->> "true". Mutta sulkeiden kanssa: "(A == 1 || A == 2) && B ==. 3" -> "(true || false) && false" -> "(true) && false" -> "false".

Mutta et tainnut vieläkään kertoa, mistä kielestä kyse, joten en osaa tarkemmin sanoa.
 
Liittynyt
20.10.2016
Viestejä
480
Esim. C++:ssa ja Javassa evaluoidaan ensin yhtäsuuruus, sitten && ja lopuksi ||. Eli sun ekassa "A == 1 || A == 2 && B == 3" jos A on 1 ja B on 55, niin tuosta tulee "true || false && false" -> "true || false" ->> "true". Mutta sulkeiden kanssa: "(A == 1 || A == 2) && B ==. 3" -> "(true || false) && false" -> "(true) && false" -> "false".

Mutta et tainnut vieläkään kertoa, mistä kielestä kyse, joten en osaa tarkemmin sanoa.
En tosiaan tiedä varsinaisesti mitä kieltä tuo edes on. Kirjoitin siinä ekassa viestissä, että käyttää NCalcia (GitHub - ncalc/ncalc: Mathematical Expressions Evaluator for .NET), tuon verran lukee ohjeissa. Tämä on eräs täysin ohjelmointiin tai mihinkään tietotekniikkaan liittymätön muu järjestelmä, johon pystyn meidän ympäristöön tekemään tällaisia yksinkertaisia laskentakaavoja eri kenttien sisältöjen vertailuun jne. Mutta ainakin noissa sulkeilla tosiaan toimii kuten vinkkasit.
 
Liittynyt
17.10.2016
Viestejä
14 697
En tosiaan tiedä varsinaisesti mitä kieltä tuo edes on. Kirjoitin siinä ekassa viestissä, että käyttää NCalcia (GitHub - ncalc/ncalc: Mathematical Expressions Evaluator for .NET), tuon verran lukee ohjeissa. Tämä on eräs täysin ohjelmointiin tai mihinkään tietotekniikkaan liittymätön muu järjestelmä, johon pystyn meidän ympäristöön tekemään tällaisia yksinkertaisia laskentakaavoja eri kenttien sisältöjen vertailuun jne. Mutta ainakin noissa sulkeilla tosiaan toimii kuten vinkkasit.
Aa, my bad, niinpä mainitsit. Siellä lukeekin "The and operator has more priority than the or...". Ja luultavasti == lasketaan ennen noita. Eli menee juuri kuten tuossa oletinkin.
 
Toggle Sidebar

Statistiikka

Viestiketjut
240 201
Viestejä
4 194 520
Jäsenet
70 871
Uusin jäsen
Hedelma

Hinta.fi

Ylös Bottom