Pieniä kysymyksiä ohjelmoinnista

Viestiketju alueella 'Ohjelmointi, pelikehitys ja muu sovelluskehitys' , aloittaja Kautium, 17.10.2016.

  1. nnaku

    nnaku I'm object-oriented! Tukijäsen

    Viestejä:
    749
    Rekisteröitynyt:
    28.11.2016
    Array filtteria ja includes käyttämällä. Eipä se oikeen muuta kun lisää vaan ehtoja sinne ja tänne.

    usean checkboxin tilan voit viedä arraylle tai map ihan kummin haluat ja useReducer hookilla tietinkin väännät jo vaikka mikälaisen tilan komponentille.

    holy-silence-mqn0z - CodeSandbox mitenkään ajatuksella en tätä tehnyt, mutta nopeesti vääntämällä tälläkertaa tuli tällänen. :joy:
     
    Zvona ja null tykkäävät tästä.
  2. null

    null

    Viestejä:
    588
    Rekisteröitynyt:
    06.11.2016
    Näyttäis pelaavan hienostin, minä kiitän!
    Pitääpä hivenen tutustua tähän luomukseen.
     
  3. null

    null

    Viestejä:
    588
    Rekisteröitynyt:
    06.11.2016
    En vain käsitä miten tuo filtteröinti toimii tuossa sun esimerkissä.
    Yritin muokata tuota esimerkkiäsi niin, että pystyisin suodattamaan useammasta sarakkeesta, mutta se meni aika sotkuksi.

    Olisin kiitollinen jos viitsisit lisätä muutaman kommentin tohon :)
     
  4. nnaku

    nnaku I'm object-oriented! Tukijäsen

    Viestejä:
    749
    Rekisteröitynyt:
    28.11.2016

    Koodi:
    const userMatch = userFilter.length ? userFilter.includes(elem.userId) : true;
    jos userFilter on tyhjä TAI pitää sisällään ko elementin userid palautuu true

    Koodi:
    const titleMatch = titleInput.value ? elem.title.includes(titleInput.value) : true;
    jos titleInput on tyhjä TAI ko. elementin title sisältää inputin arvon substriginä palautuu true.

    Koodi:
    const bodyMatch = bodyInput.value ? elem.body.includes(bodyInput.value) : true;
    jos bodyInput on tyhjä TAI ko. elementin body sisältää inputin arvon substriginä palautuu true.

    Koodi:
    return userMatch && titleMatch && bodyMatch;
    jos kaikki kolme testiä ovat tosia, palautetaan true. eli ko. elementti läpäisee filterin ja päätyy taulukkoon näkyville.

    Eli sun täytyy hakuehdon lisäksi tarkastaa onko ko. hakuehto käytössä jos ei ole, palautetaan oletuksena true koska ko. suodatusta ei haluta suorittaa.

    edit:

    olisiko tää helpompi sisäistää?
    Koodi:
      const dataFilter = elem => {
        const userMatch = !userFilter.length || userFilter.includes(elem.userId);
        const titleMatch = !titleInput.value || elem.title.includes(titleInput.value);
        const bodyMatch = !bodyInput.value || elem.body.includes(bodyInput.value);
        return userMatch && titleMatch && bodyMatch;
      };
     
    Viimeksi muokattu: 19.11.2019
    Kaitzschu ja null tykkäävät tästä.
  5. Noz

    Noz

    Viestejä:
    112
    Rekisteröitynyt:
    17.10.2016
    Nodella ja csv-parserilla muunsin csv-tiedoston array[Object]-muotoon.

    Miksi jokaisen objektin KUNTANRO-avaimen arvon tyyppi on 'undefined'?

    Koodi:
    console.log(data[1]);
    console.log('***');
    console.log(typeof data[1].KUNTANRO);
    console.log(typeof data[1].MAISTRAATTINRO);
    console.log('***');
    console.log(data[1].KUNTANRO);
    console.log(data[1].MAISTRAATTINRO);
    
    Koodi:
    { 'KUNTANRO': '9',
      KUNTANIMIFI: 'Alavieska',
      KUNTANIMISV: 'Alavieska',
      KUNTAMUOTO: 'Kunta',
      KIELISYYS: 'suomi',
      VAALIPIIRINRO: '12',
      VAALIPIIRIFI: 'Oulun vaalipiiri',
      VAALIPIIRISV: 'Uleåborgs valkrets',
      MAISTRAATTINRO: '796',
      MAISTRAATTINIMIFI: 'Pohjois-Suomen maistraatti',
      MAISTRAATTINIMISV: 'Magistraten i Norra Finland',
      'PALVELUYKSIKKÖNRO': '130',
      'PALVELUYKSIKKÖFI': ' Ylivieskan yksikkö',
      'PALVELUYKSIKKÖSV': ' Enheten i Ylivieska',
      MAAKUNTANRO: '16',
      MAAKUNTANIMIFI: 'Pohjois-Pohjanmaa',
      MAAKUNTANIMISV: 'Norra Österbotten' }
    ***
    undefined
    string
    ***
    undefined
    796
    
     
  6. ontelo

    ontelo

    Viestejä:
    409
    Rekisteröitynyt:
    17.10.2016
    Huomaatko kuntanro:ssa nuo '' ympärillä.
     
    Viimeksi muokattu: 20.11.2019
  7. nnaku

    nnaku I'm object-oriented! Tukijäsen

    Viestejä:
    749
    Rekisteröitynyt:
    28.11.2016

    Onko avaimessa jotain ihme merkkejä vai miksi se on kääritty lainauksiin?

    Koita myös data[1]['KUNTANRO']
     
  8. Make

    Make Tekee järkeä. Tukijäsen

    Viestejä:
    585
    Rekisteröitynyt:
    16.10.2016
    Mitä cloud palvelua voi opiskella ilman että maksaa kuukausimaksua siitä. Tai jollain kokeiluversiolla. Azure, AWS? Tarkoituksena olisi saada laitettua oma projekti sinne pyörimään.
     
  9. arcane

    arcane

    Viestejä:
    818
    Rekisteröitynyt:
    23.10.2016
    Koska objektin avain ei ole KUNTANRO vaan 'KUNTANRO'. Nämä kaksi ovat eri tilanteita:

    Koodi:
    // Olettamasi tilanne
    const wishfulThinking = {
      'KUNTANRO': 9
      kuntanimi: 'Alavieska'
    }
    
    // Todellinen tilanne
    const reality = {
       "'KUNTANRO'": 9,
       kuntanimi: 'Alavieska'
    }
    
    Todennäköisesti nämä heittomerkit ovat osa lähdetiedostoa.
     
  10. Nigel

    Nigel

    Viestejä:
    373
    Rekisteröitynyt:
    23.10.2016
    Heroku on ilmainen yhdellä prosessilla. Servu menee tosin sleep-tilaan 30 minuutin idlauksen jälkeen ja tällöin tunnit ei kulu.
     
  11. ojisama

    ojisama

    Viestejä:
    383
    Rekisteröitynyt:
    19.10.2016
    Ensimmäisen vuoden ajalle AWS, Azure ja Google Cloud sisältää ilmaiseksi käytettäviä palveluja ja/tai credittejä. Muistaakseni kaikissa noissa tarkempiin tietoihin pääsee ihan etusivun / signupin kautta, eikä vaadi mitään temppuja (luottokortin todennäköisesti). Noissa myös aika hyvin 'näin teet tällaista' esimerkkejä.
     
    ©©© tykkää tästä.
  12. Noz

    Noz

    Viestejä:
    112
    Rekisteröitynyt:
    17.10.2016
    Kokeiltu data[1]['KUNTANRO'] ja data[1]["'KUNTANRO'"] yhtä huonolla menestyksellä. Lähdetiedosto: Kunnat - Voimassa olevat Suomen kunnat 1.1.2018 - Avoindata.fi
     
  13. Zigh

    Zigh

    Viestejä:
    1 200
    Rekisteröitynyt:
    17.10.2016
    Puhdista lähdedata heti ensimmäisenä ennen kuin tuuppaat sen jsoniin niin ei tarvitse kikkailla.
     
    Noz tykkää tästä.
  14. Noz

    Noz

    Viestejä:
    112
    Rekisteröitynyt:
    17.10.2016
    Tuolla lähti toimiman: awk '{if(NR==1)sub(/^\xef\xbb\xbf/,"");print}' kuntaluettelo-laajat-tiedot-2018-01-01.csv > kuntaluettelo-laajat-tiedot-2018-01-01.csv.nobom

    Tiedoston alussa oleva 'UTF-8 byte order mark' (/357 / 273 /277) oli varmaankin syynä. Se tarttui ensimmäiseen avaimeen näkymättömäksi merkiksi.
     
    Viimeksi muokattu: 21.11.2019
    arcane tykkää tästä.
  15. Tinke-80

    Tinke-80

    Viestejä:
    395
    Rekisteröitynyt:
    18.10.2016
    Oma kirjoittamani (toki lähteenä on käytetty "jonkin" verran nettiä") Powershell script joka kirjoittaa logitiedostoon login päivämäärän ja kellonajan, Windows käyttäjänimen, Windows profiilin sijainnin ja tämän profiilin koko niin gigatavuina kuin megatavuina.

    Koodi:
    $Date = Get-Date -Format yyyy.MM.dd_HH.mm.ss
    $LOGFILE = "User folder size " + $Date + ".txt"
    $Size = (Get-ChildItem $env:userprofile -Recurse | Measure-Object -Property Length -Sum).sum
    Write-Output ("Log Date and Time: " + $Date) >> $LOGFILE
    Write-Output ("Username: " + $env:USERNAME) >> $LOGFILE
    Write-Output ("Profile Location: " + $env:USERPROFILE) >> $LOGFILE
    Write-Output ("Profile size in: " + "{0:N2}" -f ($Size/1MB) + " MB") >> $LOGFILE
    Write-Output ("Profile size in: " + "{0:N2}" -f ($Size/1GB) + " GB") >> $LOGFILE
    Start $LOGFILE
    Powershell scriptiä kirjoitan omaksi huvikseni omaan käyttöön ja oppiakseni powershell scriptausta. En ole ikinä koodausta tai scriptausta muutenkuin omaksi huvikseni ja omin päin opiskellut joten kaikki palaute on hyväksi. Eli mikä pistää silmään, mikä on tehty hyvin ja mikä huonosti? Ja mitä parannettavaa tuossa ois?
     
    Nigel tykkää tästä.
  16. ©©©

    ©©©

    Viestejä:
    329
    Rekisteröitynyt:
    16.10.2016
    Ainakin noi stringien ynnäykset ovat aika karseita, ihan kielestä riippumatta. Oma versio:

    Koodi:
    $Date = Get-Date -Format yyyy.MM.dd_HH.mm.ss
    $logFileName = "User folder size $($Date).txt"
    $Size = Get-ChildItem $env:userprofile -Recurse | Measure-Object -Property Length -Sum | Select-Object -ExpandProperty Sum
    
    @"
    Log Date and Time: $Date
    Username: $($env:USERNAME)
    Profile Location: $($env:USERPROFILE)
    Profile size in: {0:N2} MB
    Profile size in: {1:N2} GB
    "@ -f ($Size / 1MB), ($Size / 1GB) | Set-Content -Path $logFileName
    
    Start-Process $logFileName
    
     
    Viimeksi muokattu: 28.11.2019
    Tinke-80 tykkää tästä.
  17. Tinke-80

    Tinke-80

    Viestejä:
    395
    Rekisteröitynyt:
    18.10.2016
    Korjailtu ja lisätty vähän tavaraa. Ja kyllä, olen hankkimassa kirjaa tähän hommaan. Ihan mielenkiintoinen homma näin innokkaan harrastelijan silmin:

    Koodi:
    $Date = Get-Date -Format yyyy.MM.dd_HH.mm.ss
    $LogFileName = "PC log $($Date).txt"
    $Size = Get-ChildItem $env:userprofile -Recurse | Measure-Object -Property Length -Sum | Select-Object -ExpandProperty Sum
    $SizeMB = "{0:N2}" -f ($Size / 1MB)
    $SizeGB = "{0:N2}" -f ($Size / 1GB)
    $Mem = Get-CimInstance -className Win32_PhysicalMemory | Measure-Object capacity -Sum | % {[Math]::Round(($_.sum / 1GB),2)}
    $CPU = (Get-CimInstance -ClassName Win32_Processor | select Name | out-string).Trim()
    $GPU = (Get-CimInstance -className Win32_VideoController | select Name | out-string).Trim()
    $PC_info = Get-CimInstance -ClassName Win32_ComputerSystem | select -property Name, PrimaryOwnername, Domain, Model, Manufacturer | out-string
    
    @"
    Log Date and Time: $Date
    Profilename: $env:USERNAME
    Profile size in: $SizeMB MB
    Profile size in: $SizeGB GB
    
    Processor:
    $CPU
    
    Memory size: $Mem GB
    
    Videocard(s):
    $GPU
    
    Windows info: $PC_info
    "@ | Set-Content -Path $LogFileName
    
    Start-Process $LogFileName
     
  18. nisuzx

    nisuzx

    Viestejä:
    11
    Rekisteröitynyt:
    10.08.2017
    Eräässä open source c# palikassa on kirjoitettu integeri byteiksi näin:
    Koodi:
                WriteByte((byte)(val & 0xFF));
                WriteByte((byte)((val >> 8) & 0xFF));
                WriteByte((byte)((val >> 16) & 0xFF));
                WriteByte((byte)((val >> 24) & 0xFF));
    Eikö nuo and operaatiot ole tuossa tarpeettomia? Tämänhän pitäisi tuottaa sama lopputulos:
    Koodi:
                WriteByte((byte)val);
                WriteByte((byte)(val >> 8));
                WriteByte((byte)(val >> 16));
                WriteByte((byte)(val >> 24));
    Vai olenko missannut jotain oleellista noihin casteihin liittyen?
     
  19. Xiyng

    Xiyng

    Viestejä:
    1 116
    Rekisteröitynyt:
    19.10.2016
    Tuo jälkimmäinen taitaa pystyä heittämään OverflowExceptionin.
     
  20. J45U

    J45U

    Viestejä:
    427
    Rekisteröitynyt:
    20.04.2017
    Onko kukaan oikeasti törmännyt laadukkaaseen avoimeen lähdekoodiin?
    Tai sellaiseen, joka lunastaa ne lupaukset modular, extendable ja developer friendly?

    Esim. joku verkkokauppakehys - eikö sellaisen ominaispiirteeksi pitäisi kuulua erityisesti tuotteiden, tilausten ja asiakastietojen hallinta sekä muokattavuus?
    Esim. kentän lisääminen tuotteelle ei pitäisi vaatia ensinnäkään dokumentaation ulkopuolista tiedonhakua ts. joltain foorumilta pitää etsiä "issue", jossa joku ratkaisee asian ja käyttää siihen noin 200 riviä koodia.
    Mun mielestä tuossa ei ole mitään järkeä.

    Rakenteita on toki monenlaisia, mutta eikö tuo nyt pitäisi olla lähinnä tuoteluokan perintä ja uusien "kenttien" lisäys?
    Tai jopa ihan GUIhin asti toteutettu ratkaisu, jossa voi vain drag'n'drop uusia kenttiä?
     
  21. t-ph

    t-ph

    Viestejä:
    33
    Rekisteröitynyt:
    20.10.2016
    Hyvin yksinkertainen ongelma: miten saan testattua javassa, onko taulukko määritelty 0-alkioiseksi?

    eli tilanne on siis se, että taulukko voi olla
    char [][] taulu = new char {{}};
    System.out.println(taulu.length); // 1

    Tuohan ei siis ole null ja pituuskin on 1

    Mutta ongelman luo se, että myös
    char [][] taulu = new char {{'1'}};
    System.out.println(taulu.length); // 1
    Tuon taulun pituus on 1.

    Eli mitä ihmettä? Miten saan poimittua tiedon siitä, koska syötetaulu on vailla alkioita, mutta kuitenkin esitelty?
     
  22. oselotti

    oselotti

    Viestejä:
    386
    Rekisteröitynyt:
    02.11.2016
    Sinulla on kaksiulotteinen taulukko ja testaat ulomman taulukon pituutta. Kokeilehan testata sen sisemmän taulukon pituutta.

    Koodi:
    char[][] taulu1 = {{}};
    System.out.println(taulu1.length + "\n" + taulu1[0].length);
    
    char[][] taulu2 = {{'1'}};
    System.out.println(taulu2.length + "\n" + taulu2[0].length);
     
    Kaitzschu, Xiyng ja t-ph tykkäävät tästä.
  23. null

    null

    Viestejä:
    588
    Rekisteröitynyt:
    06.11.2016
    Miten pystyn exporttaaman komponentista funktioita niiden testaamista varten?
    Koodi:
    export default MyComponent;
    export add;
    
    Lykkää virheen
    Koodi:
    Support for the experimental syntax 'exportDefaultFrom' isn't currently enabled
    Taitaa syntaksissakin olla sanomista.

    Linkki codesandbox rävellykseen --> intelligent-lake-knsuz - CodeSandbox