Pieniä kysymyksiä ohjelmoinnista

Liittynyt
18.10.2016
Viestejä
272
JavaScript:
const queryParams = (params: Record<string, unknown>, prefix = "") => {
luulisi ainakin toimivan? Itse käytän tuota välttääkseni implicit anyn. Yleensä riittää
 
Liittynyt
07.01.2021
Viestejä
687
Heh, ei käynyt edes mielessä, että tuo valitus loppuu kun antaa tyypiksi any. Minä ajattelin, että tuo tarkoitti että se ei pysty päättelemään että käytetäänkö parametriä oikein, mutta ei näköjään.
 
Liittynyt
06.11.2016
Viestejä
1 793
Välillä jotain muuta kuin JavaScriptiä.

Kielenä Java ja ongelmana seuraava. Kyseisistä oliosta pitäisi rakentaa hierarkinen puu. Jokaisella oliolla on ylemmän tason organisaation id tiedossa.
Organisaatiorakenne on tässä esimerkissä seuraavanlainen
Koodi:
    [1]

[2] [3] [4]

[5] [6] [7]
Itse organisaatio-luokka näyttää tältä:
Java:
public class Organisation {

    Long id;
    String organisation_name;
    Long parent_organisation_id;

    public Organisation(Long id, String organisation_name, Long parent_organisation_id) {
        this.id = id;
        this.organisation_name = organisation_name;
        this.parent_organisation_id = parent_organisation_id;
    }

    public Long getId() {
        return id;
    }

    public void setId(Long id) {
        this.id = id;
    }

    public String getOrganisation_name() {
        return organisation_name;
    }

    public void setOrganisation_name(String organisation_name) {
        this.organisation_name = organisation_name;
    }

    public Long getParent_organisation_id() {
        return parent_organisation_id;
    }

    public void setParent_organisation_id(Long parent_organisation_id) {
        this.parent_organisation_id = parent_organisation_id;
    }

    @Override
    public String toString() {
        return "Organisation{" +
                "id=" + id +
                ", organisation_name='" + organisation_name + '\'' +
                ", parent_organisation_id=" + parent_organisation_id +
                '}';
    }
}

Muutama olio luotuna:
Java:
Organisation organisation1 = new Organisation(1L, "A", null);
Organisation organisation2 = new Organisation(2L, "B", 1L);
Organisation organisation3 = new Organisation(3L, "C", 1L);
Organisation organisation4 = new Organisation(4L, "D", 1L);
Organisation organisation5 = new Organisation(5L, "E", 2L);
Organisation organisation6 = new Organisation(6L, "F", 3L);
Organisation organisation7 = new Organisation(7L, "G", 4L);

List<Organisation> orgs = Arrays.asList(organisation1, organisation2, organisation3, organisation4, organisation5, organisation6, organisation7);

Kokeilin hieman Javan Stream API:a, muttei tuo ole ihan sitä mitä haetaan.
Java:
orgs.stream().collect(groupingBy(o -> o.getParent_organisation_id() != null ? o.getParent_organisation_id() : o.getId()));
Tulos:
JSON:
{
    "1": [
        {
            "id": 1,
            "organisation_name": "A",
            "parent_organisation_id": null
        },
        {
            "id": 2,
            "organisation_name": "B",
            "parent_organisation_id": 1
        },
        {
            "id": 3,
            "organisation_name": "C",
            "parent_organisation_id": 1
        },
        {
            "id": 4,
            "organisation_name": "D",
            "parent_organisation_id": 1
        }
    ],
    "2": [
        {
            "id": 5,
            "organisation_name": "E",
            "parent_organisation_id": 2
        }
    ],
    "3": [
        {
            "id": 6,
            "organisation_name": "F",
            "parent_organisation_id": 3
        }
    ],
    "4": [
        {
            "id": 7,
            "organisation_name": "G",
            "parent_organisation_id": 4
        }
    ]
}

Lopputuloksen olisi tarkoitus olla kuitenkin jotain vastaavaa:
JSON:
[
  {
    id: 1,
    organisation_name: "A",
    child: [
      {
        id: 2,
        organisation_name: "B",
        child: [
          {
            id: 5,
            organisation_name: "E"
          }
        ]
      },
      {
        id: 3,
        organisation_name: "C",
        child: [
          {
            id: 6,
            organisation_name: "F"
          }
        ]
      },
      {
        id: 4,
        organisation_name: "D",
        child: [
          {
            id: 7,
            organisation_name: "G"
          }
        ]
      }
    ]
  }
];

Onko tuota edes mahdollista parsia Stream API:n avulla tuollaiseksi hierarkiseksi puuksi vai vaatiiko tämä muutoksia tuohon itse organisaatio-luokkaan?
 
Liittynyt
27.04.2017
Viestejä
32
Välillä jotain muuta kuin JavaScriptiä.

Kielenä Java ja ongelmana seuraava. Kyseisistä oliosta pitäisi rakentaa hierarkinen puu. Jokaisella oliolla on ylemmän tason organisaation id tiedossa.
Organisaatiorakenne on tässä esimerkissä seuraavanlainen
Koodi:
    [1]

[2] [3] [4]

[5] [6] [7]
Itse organisaatio-luokka näyttää tältä:
Java:
public class Organisation {

    Long id;
    String organisation_name;
    Long parent_organisation_id;

    public Organisation(Long id, String organisation_name, Long parent_organisation_id) {
        this.id = id;
        this.organisation_name = organisation_name;
        this.parent_organisation_id = parent_organisation_id;
    }

    public Long getId() {
        return id;
    }

    public void setId(Long id) {
        this.id = id;
    }

    public String getOrganisation_name() {
        return organisation_name;
    }

    public void setOrganisation_name(String organisation_name) {
        this.organisation_name = organisation_name;
    }

    public Long getParent_organisation_id() {
        return parent_organisation_id;
    }

    public void setParent_organisation_id(Long parent_organisation_id) {
        this.parent_organisation_id = parent_organisation_id;
    }

    @Override
    public String toString() {
        return "Organisation{" +
                "id=" + id +
                ", organisation_name='" + organisation_name + '\'' +
                ", parent_organisation_id=" + parent_organisation_id +
                '}';
    }
}

Muutama olio luotuna:
Java:
Organisation organisation1 = new Organisation(1L, "A", null);
Organisation organisation2 = new Organisation(2L, "B", 1L);
Organisation organisation3 = new Organisation(3L, "C", 1L);
Organisation organisation4 = new Organisation(4L, "D", 1L);
Organisation organisation5 = new Organisation(5L, "E", 2L);
Organisation organisation6 = new Organisation(6L, "F", 3L);
Organisation organisation7 = new Organisation(7L, "G", 4L);

List<Organisation> orgs = Arrays.asList(organisation1, organisation2, organisation3, organisation4, organisation5, organisation6, organisation7);

Kokeilin hieman Javan Stream API:a, muttei tuo ole ihan sitä mitä haetaan.
Java:
orgs.stream().collect(groupingBy(o -> o.getParent_organisation_id() != null ? o.getParent_organisation_id() : o.getId()));
Tulos:
JSON:
{
    "1": [
        {
            "id": 1,
            "organisation_name": "A",
            "parent_organisation_id": null
        },
        {
            "id": 2,
            "organisation_name": "B",
            "parent_organisation_id": 1
        },
        {
            "id": 3,
            "organisation_name": "C",
            "parent_organisation_id": 1
        },
        {
            "id": 4,
            "organisation_name": "D",
            "parent_organisation_id": 1
        }
    ],
    "2": [
        {
            "id": 5,
            "organisation_name": "E",
            "parent_organisation_id": 2
        }
    ],
    "3": [
        {
            "id": 6,
            "organisation_name": "F",
            "parent_organisation_id": 3
        }
    ],
    "4": [
        {
            "id": 7,
            "organisation_name": "G",
            "parent_organisation_id": 4
        }
    ]
}

Lopputuloksen olisi tarkoitus olla kuitenkin jotain vastaavaa:
JSON:
[
  {
    id: 1,
    organisation_name: "A",
    child: [
      {
        id: 2,
        organisation_name: "B",
        child: [
          {
            id: 5,
            organisation_name: "E"
          }
        ]
      },
      {
        id: 3,
        organisation_name: "C",
        child: [
          {
            id: 6,
            organisation_name: "F"
          }
        ]
      },
      {
        id: 4,
        organisation_name: "D",
        child: [
          {
            id: 7,
            organisation_name: "G"
          }
        ]
      }
    ]
  }
];

Onko tuota edes mahdollista parsia Stream API:n avulla tuollaiseksi hierarkiseksi puuksi vai vaatiiko tämä muutoksia tuohon itse organisaatio-luokkaan?
Javan kirjastot ei ole tuttuja, mutta jos tavoitteena on rekursiivinen lista niin olettaisin, että myös tietomallin olisi hyvä olla rekursiivinen.

Olisiko siitä mitään apua, jos pelkän parentin idn sijaan lisäät organisaatiolle viittauksen parentin organisaatioinstanssiin. Tai toisinpäin lisäät organisaatioluokalle listan kaikista sen aliorganisaatioista. Sitten kun luot organisaatioita niin linkität ne keskenään tyyliin organisaatio1.addChild(organisaatio2);

Kun linkitykset on saatu kohdilleen niin pitäisi olla triviaalia tulostaa ne halutussa muodossa.
 
Liittynyt
06.11.2016
Viestejä
1 793
Javan kirjastot ei ole tuttuja, mutta jos tavoitteena on rekursiivinen lista niin olettaisin, että myös tietomallin olisi hyvä olla rekursiivinen.

Olisiko siitä mitään apua, jos pelkän parentin idn sijaan lisäät organisaatiolle viittauksen parentin organisaatioinstanssiin. Tai toisinpäin lisäät organisaatioluokalle listan kaikista sen aliorganisaatioista. Sitten kun luot organisaatioita niin linkität ne keskenään tyyliin organisaatio1.addChild(organisaatio2);

Kun linkitykset on saatu kohdilleen niin pitäisi olla triviaalia tulostaa ne halutussa muodossa.
Itse asiassa noin sen lopulta tein.
 
Liittynyt
31.01.2022
Viestejä
14
Python:
def my_split(s):
    lista = []
    for lause in sentence:
        sana = ''
        for ch in lause:
            if ch == ' ' and sana != '':
                lista.append(sana)
                sana = ''
            else:
                sana += ch
        if sana != '':
            lista.append(sana)
    return lista

def my_join(lista):
    vastaus = ''
    for sana in lista:
        vastaus += sana
    return vastaus

#===========================================

sentence = str(input("kirjoita lause:"))
print(my_join(my_split(sentence,' '),','))
print(my_join(my_split(sentence,' '),'\n'))
Osaako kukaan sanoa miten saa toimivaksi ilman että kajoaa alaosaan?
 
Liittynyt
17.10.2016
Viestejä
5 407
Python:
def my_split(s):
    lista = []
    for lause in sentence:
        sana = ''
        for ch in lause:
            if ch == ' ' and sana != '':
                lista.append(sana)
                sana = ''
            else:
                sana += ch
        if sana != '':
            lista.append(sana)
    return lista

def my_join(lista):
    vastaus = ''
    for sana in lista:
        vastaus += sana
    return vastaus

#===========================================

sentence = str(input("kirjoita lause:"))
print(my_join(my_split(sentence,' '),','))
print(my_join(my_split(sentence,' '),'\n'))
Osaako kukaan sanoa miten saa toimivaksi ilman että kajoaa alaosaan?
Aluksi voisit kertoa mitä tuon pitäisi tehdä ja miten se ei toimi.
 
Liittynyt
17.10.2016
Viestejä
1 123
Python:
def my_split(s):
    lista = []
    for lause in sentence:
        sana = ''
        for ch in lause:
            if ch == ' ' and sana != '':
                lista.append(sana)
                sana = ''
            else:
                sana += ch
        if sana != '':
            lista.append(sana)
    return lista

def my_join(lista):
    vastaus = ''
    for sana in lista:
        vastaus += sana
    return vastaus

#===========================================

sentence = str(input("kirjoita lause:"))
print(my_join(my_split(sentence,' '),','))
print(my_join(my_split(sentence,' '),'\n'))
Osaako kukaan sanoa miten saa toimivaksi ilman että kajoaa alaosaan?
Varmaankin kannattaisi määritellä nuo funktiot sellaisiksi että ne ottavat oikeasti nuo parametrit mitä niille alempana tarjotaan. Ja ehkä tehdäkin niillä parametreillä jotakin.
 
Liittynyt
31.01.2022
Viestejä
14
Aluksi voisit kertoa mitä tuon pitäisi tehdä ja miten se ei toimi.
  • my_split: joka jakaa ensimmäisenä parametrina annetun lauseen toisena parametrina annetun erotinmerkin erottelemiin listan alkioihin, funktio palauttaa tuloksena listan.
  • my_join: joka liittää ensimmäisenä parametrina annetun listan alkiot merkkijonoksi, jossa alkioiden väliin on lisätty toisena parametrina annettava merkki, fuktio palauttaa merkkijonon.
elikkäs esimerkki tulostus:
Kirjoita lause: Tämä on lyhyt lause
Tämä,on,lyhyt,lause
Tämä
on
lyhyt
lause

ja tämmöistä virhettä herjaa:
print(my_join(my_split("sentence is not working",' '),','))
TypeError: my_split() takes 1 positional argument but 2 were given

eli ilmeisesti funktiosta puuttuu jotain pientä
 
Liittynyt
06.11.2016
Viestejä
1 793
  • my_split: joka jakaa ensimmäisenä parametrina annetun lauseen toisena parametrina annetun erotinmerkin erottelemiin listan alkioihin, funktio palauttaa tuloksena listan.
  • my_join: joka liittää ensimmäisenä parametrina annetun listan alkiot merkkijonoksi, jossa alkioiden väliin on lisätty toisena parametrina annettava merkki, fuktio palauttaa merkkijonon.
elikkäs esimerkki tulostus:
Kirjoita lause: Tämä on lyhyt lause
Tämä,on,lyhyt,lause
Tämä
on
lyhyt
lause

ja tämmöistä virhettä herjaa:
print(my_join(my_split("sentence is not working",' '),','))
TypeError: my_split() takes 1 positional argument but 2 were given

eli ilmeisesti funktiosta puuttuu jotain pientä

Python:
def my_split(sentence, delimiter):
    return sentence.split(delimiter)

def my_join(lista, delimiter):
    return delimiter.join(lista)

#===========================================

print(my_join(my_split('hei maailma', ' '), '\n'))
:confused:
 
Liittynyt
31.01.2022
Viestejä
14
Python:
def my_split(sentence, delimiter):
    return sentence.split(delimiter)

def my_join(lista, delimiter):
    return delimiter.join(lista)

#===========================================

print(my_join(my_split('hei maailma', ' '), '\n'))
:confused:
Ideana on ettei käytä Pythonin valmiita split- ja join-funktioita
 

Starglazer

Tukijäsen
Liittynyt
17.10.2016
Viestejä
3 102
  • my_split: joka jakaa ensimmäisenä parametrina annetun lauseen toisena parametrina annetun erotinmerkin erottelemiin listan alkioihin, funktio palauttaa tuloksena listan.
  • my_join: joka liittää ensimmäisenä parametrina annetun listan alkiot merkkijonoksi, jossa alkioiden väliin on lisätty toisena parametrina annettava merkki, fuktio palauttaa merkkijonon.
elikkäs esimerkki tulostus:
Kirjoita lause: Tämä on lyhyt lause
Tämä,on,lyhyt,lause
Tämä
on
lyhyt
lause

ja tämmöistä virhettä herjaa:
print(my_join(my_split("sentence is not working",' '),','))
TypeError: my_split() takes 1 positional argument but 2 were given

eli ilmeisesti funktiosta puuttuu jotain pientä
Riviäkään pyyttonia en ole koodannut, mutta annatko(?) tässä my_split funktiolle kaksi parametria:
Koodi:
print(my_join(my_split(sentence,' '),','))
kun funktio syö yhden:
Koodi:
def my_split(s):
 
Liittynyt
17.10.2016
Viestejä
5 407
Juu, ainakin nuo alimmat rivit yrittävät antaa kahta parametria funktioille vaikka funktiot haluavat nykyisellään vain yhden. Toinen on että funktion my_split ottama parametri otetaan muuttujaan s mutta sitä ei käytetä missään. Noiden korjaaminen auttaa jo paljon.
 
Liittynyt
17.10.2016
Viestejä
14 697
TypeError: my_split() takes 1 positional argument but 2 were given
Virheet kannattaa lukea ajatuksella. Eli tuossa sanotaan että funktio my_split() haluaa vain yhden parametrin mutta sille annettiin kaksi parametria. Jos funktio on määritelty def my_split(s), niin sä et voi kutsua sitä näin: my_split(eka, toka). Kääntäjä huomaa, että tunget sinne liikaa niitä parametreja, eli pilkulla erotettuja muuttujia tai arvoja.
 
Liittynyt
31.01.2022
Viestejä
14
Virheet kannattaa lukea ajatuksella. Eli tuossa sanotaan että funktio my_split() haluaa vain yhden parametrin mutta sille annettiin kaksi parametria. Jos funktio on määritelty def my_split(s), niin sä et voi kutsua sitä näin: my_split(eka, toka). Kääntäjä huomaa, että tunget sinne liikaa niitä parametreja, eli pilkulla erotettuja muuttujia tai arvoja.
Juu, mutta en kyllä millään tiiä mitkä parametrit. vaikka mitä 1X2 yrittää
 
Liittynyt
06.11.2016
Viestejä
1 793
Juu, mutta en kyllä millään tiiä mitkä parametrit. vaikka mitä 1X2 yrittää
Kutsut funktioita my_split() sekä my_join() syöttäen niille kaksi parametriä vaikka molemmat odottavat saavansa vain yhden.

Esim. funktio my_split() pitäisi muuttaa muotoon my_split(s, d), jolloin se odottaa saavansa kaksi parametria. Nämä parametrithan ovat:
  • my_split: joka jakaa ensimmäisenä parametrina annetun lauseen(s = lause) toisena parametrina annetun erotinmerkin(d = erotinmerkki) erottelemiin listan alkioihin, funktio palauttaa tuloksena listan.
 
Liittynyt
31.01.2022
Viestejä
14
Kutsut funktioita my_split() sekä my_join() syöttäen niille kaksi parametriä vaikka molemmat odottavat saavansa vain yhden.

Esim. funktio my_split() pitäisi muuttaa muotoon my_split(s, d), jolloin se odottaa saavansa kaksi parametria. Nämä parametrithan ovat:
  • my_split: joka jakaa ensimmäisenä parametrina annetun lauseen(s = lause) toisena parametrina annetun erotinmerkin(d = erotinmerkki) erottelemiin listan alkioihin, funktio palauttaa tuloksena listan.
joo tommoinkin oon koittanut mutta ei lähe toimimaan
 
Liittynyt
07.01.2021
Viestejä
687
Haluatko tosiaan tulostaa viimeisen sanan kahdesti? Tuossa on muuten tuo toinen append() väärin.

Mitä tulee ongelmiisi, niin mietipä, että miksi annat my_split:lle parametriksi välilyönnin ja my_join:lle pilkun ja rivinvaihdon? Sellaiset lähetät noille funktioille, mutta mitä varten? (Oikeasti siis et lähetä, kun nuo funktiot ei ota niitä vastaan, mutta yrität lähettää.)
 
Liittynyt
31.01.2022
Viestejä
14
Haluatko tosiaan tulostaa viimeisen sanan kahdesti? Tuossa on muuten tuo toinen append() väärin.

Mitä tulee ongelmiisi, niin mietipä, että miksi annat my_split:lle parametriksi välilyönnin ja my_join:lle pilkun ja rivinvaihdon? Sellaiset lähetät noille funktioille, mutta mitä varten? (Oikeasti siis et lähetä, kun nuo funktiot ei ota niitä vastaan, mutta yrität lähettää.)
pystytkö selittämään ELI5? muutaman kk vasta näitä pyöritellyt niin ei ihan vielä ole selkärangassa
 
Liittynyt
17.10.2016
Viestejä
5 407
Näitä rivejä voisi ensimmäiseksi koittaa miettiä ja korjailla:
Koodi:
def my_split(s):

if ch == ' ' and sana != '':

def my_join(lista):
Ensimmäiseen se toinen muuttuja mukaan ja toiseen se välimerkin tunnistus. Kolmanteen se toinen muuttuja kanssa mukaan ja sitten tuohon funktioon vielä että se lisää sen halutun välimerkin.
 
Liittynyt
21.10.2016
Viestejä
9 246
pystytkö selittämään ELI5? muutaman kk vasta näitä pyöritellyt niin ei ihan vielä ole selkärangassa
Ettet nyt vain ole koittanu kopsata koulutehtävään jostain koodeja, kun ei tunnu pienintäkään ymmärrystä olevan omasta koodista... :) Aika selkeesti on moneen kertaan kerrottu ongelman syy (joka ilmenee jo siitä kääntäjän virheilmoituksestakin).
 
Liittynyt
31.01.2022
Viestejä
14
Ettet nyt vain ole koittanu kopsata koulutehtävään jostain koodeja, kun ei tunnu pienintäkään ymmärrystä olevan omasta koodista... :) Aika selkeesti on moneen kertaan kerrottu ongelman syy (joka ilmenee jo siitä kääntäjän virheilmoituksestakin).
Kyllä kopsasin osittain. Tosin ajattelin opetella näitä pythonin alkeita ennen kuin kouluun haen. Ymmärsin kyllä virheen syyn mutta en saa sitä korjattua
 
Viimeksi muokattu:
Liittynyt
21.10.2016
Viestejä
9 246
Kyllä kopsasin. Tosin ajattelin opetella näitä pythonin alkeita ennen kuin kouluun haen. Ymmärsin kyllä virheen syyn mutta en saa sitä korjattua
Tuossa on se ongelma, että et opi koodaan copypastella. Ohjelmointikieli on vain työkalu. Pistä editori tyhjäksi ja aloita alusta. Ratkaise ongelma itse. Jos on liian vaikea, niin ratkaise ensin helpompia tehtäviä.

edit: kyseessä kun ei ole python-ongelma, vaan ohjelmointi-ongelma(t) ihan yleisellä tasolla, johon törmäisit kaikilla kielillä.
 
Viimeksi muokattu:
Liittynyt
07.01.2021
Viestejä
687
Ensimmäinen ongelma tuossa on tuo ensimmäinen for-luuppi. Jos käyt merkkijonoa läpi for-luupissa, niin se käy merkkijonon läpi merkki kerrallaan. En tiedä, mitä tuon ekan for-luupin on edes tarkoitus tehdä.

Toinen ongelma on se, että mistä tuo sentence edes tulee? Ei tuo funktio sitä näe tuolta toisesta paikasta.

Kolmanneksi tosiaan annat useamman parametrin kun funktiot odottavat yhtä. Kannattaa ottaa Python-opas käteen ja lukea, miten funktiot toimivat. Aloita vaikka tästä: Python Functions
 
Liittynyt
31.01.2022
Viestejä
14
Tuossa on se ongelma, että et opi koodaan copypastella. Ohjelmointikieli on vain työkalu. Pistä editori tyhjäksi ja aloita alusta. Ratkaise ongelma itse. Jos on liian vaikea, niin ratkaise ensin helpompia tehtäviä.
joskus tulee näitä mitkä vaatii multa 10x enemmin pyörittelyä kuin muut ennen kuin tulee se ahaa efekti ja kaikki loksahtaa paikalleen nupissa. Tuntuu että tämä vaati enemmän
Kolmanneksi tosiaan annat useamman parametrin kun funktiot odottavat yhtä. Kannattaa ottaa Python-opas käteen ja lukea, miten funktiot toimivat. Aloita vaikka tästä: Python Functions
Pitääkin tuo lukassa ennen kuin jatkan pään takomista seinään
 
Liittynyt
17.10.2016
Viestejä
5 712
Toinen ongelma on se, että mistä tuo sentence edes tulee? Ei tuo funktio sitä näe tuolta toisesta paikasta.
Itseasiassa se funktio kyllä jopa näkee tuon "sentence"-muuttujan, ja pystyy kyllä iteroimaan sen läpi. Mutta tuo on käyttötarkoitukseen nähden täysin väärä toteutus, ja se sentence olisi syytä ottaa funktioparametrina sisään.

Mutta suurin ongelmahan tässä nyt näyttää olevan se, että ei ymmärretä ollenkaan sitä, mitä ne funktioparametrit on ja miten niitä käytetään. Eli esim tämä:
Python:
def my_split(s):
määrittää että funktio ottaa sisään yhden parametrin, nimeltään "s". Nyt sitä kyseistä parametria ei edes käytetä missään (funktion sisällä ei ole ainuttakaan viittausta muuttujaan s), vaan luetaan ulommasta scopesta suoraan muuttuja nimeltä sentence. Järkevää olisi muuttaa tuo niin, että tuo funktiossa tehtävä asia käyttäisi sitä parametria, mikä sille syötetään. Sen lisäksi sinne nyt koitetaan tunkea sitä toista parametria, jonka arvo tässä on ' '. Funktiomäärittelyssä ei kuitenkaan ole määritelty kuin se yksi parametri s, eli siihen määrittelyyn pitää lisätä toinen parametri, ja sen nimen saa ihan vapaasti itse päättää, mutta sillä nimellä se sitten funktion sisältä löytyy.
 
Liittynyt
06.11.2016
Viestejä
1 793
Mitenköhän Reactissa hoidetaan tilanhallinta(state) rekursiivisessa komponentissa?
Ongelmana lähinnä se, että alempien tasojen tilat katoaa kun ylempi taso suljetaan. Tilaan tallennetaan tieto siitä onko kyseinen kerros avattu vai ei.

codesandbox esimerkki
 
Viimeksi muokattu:
Liittynyt
03.03.2018
Viestejä
1 209
Mitenköhän Reactissa hoidetaan tilanhallinta(state) rekursiivisessa komponentissa?
Ongelmana lähinnä se, että alempien tasojen tilat katoaa kun ylempi taso suljetaan. Tilaan tallennetaan tieto siitä onko kyseinen kerros avattu vai ei.

codesandbox esimerkki
Yksi keino on ainakin ottaa tuo sun state talteen sinne app.js tiedostoon ja viedä propsina komponentteihin (App.js puolelta ja myös itse RecursiveTreestä). Silloin se "pää state" on tallessa tuolla ylimmällä tasolla.

muokattu esimerkki
 
Liittynyt
06.11.2016
Viestejä
1 793
Yksi keino on ainakin ottaa tuo sun state talteen sinne app.js tiedostoon ja viedä propsina komponentteihin (App.js puolelta ja myös itse RecursiveTreestä). Silloin se "pää state" on tallessa tuolla ylimmällä tasolla.

muokattu esimerkki
Käsittääkseni kokeilin tuota samaa aiemmin, mutta se ei toiminut yhtään sen paremmin. Ehkä missasin kuitenkin jonkin stepin.
Anyway, nyt toimii. Kiitos!
 
Liittynyt
17.10.2016
Viestejä
14 697
Mitenköhän Reactissa hoidetaan tilanhallinta(state) rekursiivisessa komponentissa?
Ongelmana lähinnä se, että alempien tasojen tilat katoaa kun ylempi taso suljetaan. Tilaan tallennetaan tieto siitä onko kyseinen kerros avattu vai ei.

codesandbox esimerkki
Se ongelma on se, että komponentin state katoaa kun se unmountataan. Eli kun et enää rendaa ali-RecursiveTree:tä. Tossa varmaan järkevintä on juurikin pitää se state rekursiivisen puun juuressa tai ylempänä jossain päästoressa. Tai jossain tilanteissa voit myös pitää kaikki alikomponentit mountattuina ja ne sitten osaavat olla piirtämättä mitään. Tällöin komponentin oma state säilyy. (Sillä et unmounttaa mitään.)
 
Liittynyt
01.01.2018
Viestejä
1 132
JavaScript:
interface Props extends React.HTMLAttributes<HTMLButtonElement> {
  className?: string;
  type?: "button" | "submit" | "reset";
  children: string;
}


const CustomButton = ({ className, children, type, ...rest }: Props) => {
 
  return (
    <button
      type={type === undefined ? "button" : type}
      {...rest}
      className={`${className} bg-sky-600 hover:bg-sky-700 transition-colors
       text-white rounded-full shadow-md shadow-sky-600 font-semibold hover:scale-110`}
    >
      {children}
    </button>
  );
};

export default CustomButton;
Miksi tuo koodi esim. <CustomButton form="blaa" /> valittaa että Property 'form' does not exist on type 'IntrinsicAttributes & Props' , vaikka button tagilla pitäisi olla form attribuutti? Jouduin just ton typescriptin valituksen takia lisäämään ton type attribuutin manuaalisesti tuohon Props interfaciin, koodi kyllä toimii ilmankin, mutta typescript valittaa. Myös tuon type={type === undefined ? "button" : type} jouduin lisäämään ainakin tässä vaiheessa kun joskus type oli tyyppiä "submit" vaikka sellaista en ollut laittanut itse <CustomButton />.
 

Zigh

Tittelitön
Liittynyt
17.10.2016
Viestejä
4 652
JavaScript:
interface Props extends React.HTMLAttributes<HTMLButtonElement> {
  className?: string;
  type?: "button" | "submit" | "reset";
  children: string;
}


const CustomButton = ({ className, children, type, ...rest }: Props) => {

  return (
    <button
      type={type === undefined ? "button" : type}
      {...rest}
      className={`${className} bg-sky-600 hover:bg-sky-700 transition-colors
       text-white rounded-full shadow-md shadow-sky-600 font-semibold hover:scale-110`}
    >
      {children}
    </button>
  );
};

export default CustomButton;
Miksi tuo koodi esim. <CustomButton form="blaa" /> valittaa että Property 'form' does not exist on type 'IntrinsicAttributes & Props' , vaikka button tagilla pitäisi olla form attribuutti? Jouduin just ton typescriptin valituksen takia lisäämään ton type attribuutin manuaalisesti tuohon Props interfaciin, koodi kyllä toimii ilmankin, mutta typescript valittaa. Myös tuon type={type === undefined ? "button" : type} jouduin lisäämään ainakin tässä vaiheessa kun joskus type oli tyyppiä "submit" vaikka sellaista en ollut laittanut itse <CustomButton />.
Olisiko ongelma siinä, että tuo interface perii attribuutit HTMLAttributes-rajapinnalta eikä ButtonHTMLAttributes -rajapinnalta?
 
Liittynyt
01.04.2018
Viestejä
156
Ongelma liittyy myös logiikkaohjelmointiin, mutta helposti yleitettävissä tännekin. Elikkäns:
Mulla logiikka kirjoittaa lokitietedostoa pariin csv-filuun. Sitten on yksi erikseen muotoiltu graafinenkin excel-file joka kerää datan näistä kahdesta csv-fileistä ja kaikki toimii kuin unelma.

Ongelma on kun haluan näyttää tätä exceliä logiikan käyttöliittymässä, joka on siis läjätty ihan perus HTML/javaScriptillä, kuten webbisivut.

Kysymys kuuluukin: Miten saisin tämän paikallisen excelin näytettyä HTML:n kanssa esim. jossain framessa? Ikään kuin haluaisin näyttää upotetun excelin perusnettisivulla.
Excelin tallentaminen HTML-muotoon toimii kaikkien muiden osalta, paitsi tuolloin datan vetäminen csv-lähteistä loppuu.

Tuntuu järjettömältä kui tää voi olla näin vaikeaa :notworthy:
 
Liittynyt
06.11.2016
Viestejä
1 793
Ongelma liittyy myös logiikkaohjelmointiin, mutta helposti yleitettävissä tännekin. Elikkäns:
Mulla logiikka kirjoittaa lokitietedostoa pariin csv-filuun. Sitten on yksi erikseen muotoiltu graafinenkin excel-file joka kerää datan näistä kahdesta csv-fileistä ja kaikki toimii kuin unelma.

Ongelma on kun haluan näyttää tätä exceliä logiikan käyttöliittymässä, joka on siis läjätty ihan perus HTML/javaScriptillä, kuten webbisivut.

Kysymys kuuluukin: Miten saisin tämän paikallisen excelin näytettyä HTML:n kanssa esim. jossain framessa? Ikään kuin haluaisin näyttää upotetun excelin perusnettisivulla.
Excelin tallentaminen HTML-muotoon toimii kaikkien muiden osalta, paitsi tuolloin datan vetäminen csv-lähteistä loppuu.

Tuntuu järjettömältä kui tää voi olla näin vaikeaa :notworthy:
Käviskö joku tuollainen? GitHub - derekeder/csv-to-html-table: Display any CSV (comma separated values) file as a searchable, filterable, pretty HTML table
 
Liittynyt
16.11.2020
Viestejä
2 588
Tääkin on kyl erittäin kätsy, mutta ei oikein käy tämän hetken tilanteeseen.
Toimiikohan tää, mikä tuossa on ensimmäisenä, en jaksa ruveta testailemaan:


Jos sulla on siis se muotoiltu excel saatavissa lokaalilta levyltä. Tuo src-attribuuttikin näkyy huolivan lokaalin filen.

Oli kyllä niin helppo googlattava, että epäilen, että tää ois jo löytynyt, jos kelpais, eikä oo kyllä meikäläisen alaa tämmönen :D
 
Liittynyt
01.04.2018
Viestejä
156
Toimiikohan tää, mikä tuossa on ensimmäisenä, en jaksa ruveta testailemaan:


Jos sulla on siis se muotoiltu excel saatavissa lokaalilta levyltä. Tuo src-attribuuttikin näkyy huolivan lokaalin filen.

Oli kyllä niin helppo googlattava, että epäilen, että tää ois jo löytynyt, jos kelpais, eikä oo kyllä meikäläisen alaa tämmönen :D
Joo kiitti vaan
Toi toimii one driveen tallennetuille exceleille, eli filun pitää olla online. Ei toimi paikallisille valitettavasti
 
Liittynyt
16.11.2020
Viestejä
2 588
Joo kiitti vaan
Toi toimii one driveen tallennetuille exceleille, eli filun pitää olla online. Ei toimi paikallisille valitettavasti
Joo, näköjään se noin on (että lähdetiedosto pitäs olla OneDrivessä).

Tuossa ei tainnu olla puhetta siitä, miten se muotoiltu taulukko generoidaan ja minkälaisia vaatimuksia homman dynaamisuudelle on, mutta Excel-taulukon saa exportattua sekä PDF:ksi että HTML:ksi, jotka pystyy kummatkin näyttämään verkkosivulla. En tiedä auttaako tuokaan mitään.

Muuten sitten alkaa näyttämään minusta siltä, että menee askarteluksi siitä CSV-datasta.
 
Liittynyt
01.04.2018
Viestejä
156
Joo, näköjään se noin on (että lähdetiedosto pitäs olla OneDrivessä).

Tuossa ei tainnu olla puhetta siitä, miten se muotoiltu taulukko generoidaan ja minkälaisia vaatimuksia homman dynaamisuudelle on, mutta Excel-taulukon saa exportattua sekä PDF:ksi että HTML:ksi, jotka pystyy kummatkin näyttämään verkkosivulla. En tiedä auttaako tuokaan mitään.

Muuten sitten alkaa näyttämään minusta siltä, että menee askarteluksi siitä CSV-datasta.
Jep. Olen siis juurikin askarrellut yhden .xlsx filen, joka importtaa kahdesta csv:stä dataa ja parsii erilaisten funktioiden kautta sitä siistimmäksi ja käytettäväksi. Se myös päivittelee ajankohtaiset kellonajat yms. piirtää graafit datasta.
Tämän excelin haluaisin siis HTML:n 'pollaavan' aina kun se avataan selaimella. Mut tää ei kyllä näytä tälläisenä toimivan, vaan menee todellakin askarteluksi noista csv:stä :beye:
 
Liittynyt
08.02.2019
Viestejä
1 316
Jep. Olen siis juurikin askarrellut yhden .xlsx filen, joka importtaa kahdesta csv:stä dataa ja parsii erilaisten funktioiden kautta sitä siistimmäksi ja käytettäväksi. Se myös päivittelee ajankohtaiset kellonajat yms. piirtää graafit datasta.
Tämän excelin haluaisin siis HTML:n 'pollaavan' aina kun se avataan selaimella. Mut tää ei kyllä näytä tälläisenä toimivan, vaan menee todellakin askarteluksi noista csv:stä :beye:
Onko joku todella monimutkainen Excel kyseessä?

Lähinnä vaan mietin, että eikö toi kannata toteuttaa, vaikka chartjs:llä suoraan siitä datasta. Uskon, että tollanen Excel virittely aiheuttaa myös todella paljon riippuvuuksia/vaatimuksia käyttäjän koneelle, vai onko käyttäjät pakotettuja johonkin Mikkiksen systeemiin?
 
Liittynyt
05.11.2016
Viestejä
327
Harjoittelen pythonia ajankulukseni ja ongelma johon en keksi ratkaisua.

Alla oleva koodi toimii haluamallani tavalla.
Koodi:
nimi = input("Anna nimesi:")
if nimi == "Tupu":
    print("Olet luultavasti Aku Ankan veljenpoika.")
else:
    print("Et ole kenenkään tuntemani hahmon veljenpoika.")
Tähän taas voi syöttää minkä tahansa nimeksi niin aina tulostuu "Olet luultavasti Aku Ankan veljenpoika."
Koodi:
nimi = input("Anna nimesi:")
if nimi == "Tupu" or "Hupu" or "Lupu":
    print("Olet luultavasti Aku Ankan veljenpoika.")
else:
    print("Et ole kenenkään tuntemani hahmon veljenpoika.")
Missä vika?
 
Liittynyt
21.10.2016
Viestejä
9 246
Harjoittelen pythonia ajankulukseni ja ongelma johon en keksi ratkaisua.

Alla oleva koodi toimii haluamallani tavalla.
Koodi:
nimi = input("Anna nimesi:")
if nimi == "Tupu":
    print("Olet luultavasti Aku Ankan veljenpoika.")
else:
    print("Et ole kenenkään tuntemani hahmon veljenpoika.")
Tähän taas voi syöttää minkä tahansa nimeksi niin aina tulostuu "Olet luultavasti Aku Ankan veljenpoika."
Koodi:
nimi = input("Anna nimesi:")
if nimi == "Tupu" or "Hupu" or "Lupu":
    print("Olet luultavasti Aku Ankan veljenpoika.")
else:
    print("Et ole kenenkään tuntemani hahmon veljenpoika.")
Missä vika?
if lauseesi mätsää "Hupu" eli truthy. Ts. testaat, että onko nimi yhtäkuin Tupu, jos ei, niin sit onko "Hupu" true ja onhan se.

edit: Hyrava selittiki paremmin :)

eli näin mielummin:
Koodi:
if nimi == "Tupu" or nimi == "Hupu" or nimi == "Lupu":
 
Viimeksi muokattu:
Liittynyt
17.10.2016
Viestejä
5 407
Harjoittelen pythonia ajankulukseni ja ongelma johon en keksi ratkaisua.

Alla oleva koodi toimii haluamallani tavalla.
Koodi:
nimi = input("Anna nimesi:")
if nimi == "Tupu":
    print("Olet luultavasti Aku Ankan veljenpoika.")
else:
    print("Et ole kenenkään tuntemani hahmon veljenpoika.")
Tähän taas voi syöttää minkä tahansa nimeksi niin aina tulostuu "Olet luultavasti Aku Ankan veljenpoika."
Koodi:
nimi = input("Anna nimesi:")
if nimi == "Tupu" or "Hupu" or "Lupu":
    print("Olet luultavasti Aku Ankan veljenpoika.")
else:
    print("Et ole kenenkään tuntemani hahmon veljenpoika.")
Missä vika?
Tuossa sinulla vertaillaan onko seuraavat asiat tosia:
nimi == "Tupu" on tosi
tai
"Hupu" on tosi
tai
"Lupu" on tosi

eli tuo or ei vertaa noita tuon nimi-muuttujan kanssa.

Itse tekisin varmaan näin:
Koodi:
if nimi in ["Tupu", "Hupu", "Lupu"]:
 
Liittynyt
05.11.2016
Viestejä
327
Koodi:
if nimi == "Tupu" or nimi == "Hupu" or nimi == "Lupu":
Koodi:
if nimi in ["Tupu", "Hupu", "Lupu"]:
Nämä toimi molemmat. Kiitos
 
Liittynyt
06.11.2016
Viestejä
1 793
Yritän importata Angularin komponenttiin css-tyylitiedoston node_modules kansiosta, mutta tulee seuraavanlainen virhe:
Koodi:
ERROR in ./node_modules/bootstrap-material-design/dist/css/bootstrap-material-design.min.css 1:0
Module parse failed: Unexpected token (1:0)
You may need an appropriate loader to handle this file type, currently no loaders are configured to process this file. See https://webpack.js.org/concepts#loaders
> .card{font-size:.875rem;font-weight:400}
|
| /*!
i 「wdm」: Failed to compile.
Liittyyköhän tämä nyt jollainlailla webpackiin tai sen asetuksiin? Saan tuon css:n importattua suoraan vendor.scss tiedoston kautta, mutta sitten se sotkee huolella muuta, joten ajattelin importata sen vain suoraan sitä tarvitsevalle komponentille.
Kyseessä on SurveyJS mihin yritän saada bootstrap material-teeman toimimaan. Tuolta löytyy CodeSandbox esimerkki missä se kyllä toimii, muttei omassa ympäristössäni.
 
Liittynyt
20.10.2016
Viestejä
791
Muualta ottamassani koodinpätkässä, jota olen hieman muutellut tarpeita varten, on kolme sisäkkäistä for-silmukkaa, sitten tehdään pari laskutoimitusta ja tulostetaan jos tulos on sopivanlainen ... Voisiko joku näyttää miten tämän saisi muutettua sellaiseksi, että voin ajaa sen siten että numerot tulevat komentoriviltä? Yritin niitä int argc, char *argv[] asioita tuonne mutta saan vain suuria määriä virheilmoituksia kääntäessä ...

./binääri a b c d nmax

./binääri 2 3 4 5 700


Koodi:
#include <complex.h>
#include <math.h>
#include <stdio.h>
#include <stdlib.h>

static void run(const int nmax) {
   double imin = 2;
         a = 2;
         for (int b = 2; b <= nmax; b++) {
               for (int c = 2; c <= nmax; c++)
                     for (int d = 2; d <= nmax; d++) {
                        const double complex x = a + I * b;
                        const double complex y = c + I * d;
                        ... rivejä deletoitu ...
                     }
            }
}

int main() {
   run(700);
   return EXIT_SUCCESS;
 
Liittynyt
17.10.2016
Viestejä
14 697
Yritin niitä int argc, char *argv[]
Kerrotko, miten tarkalleen yritit ja millaisia virheitä sait? Täällä yksinkertainen esimerkki:

 
Liittynyt
20.10.2016
Viestejä
791
Kerrotko, miten tarkalleen yritit ja millaisia virheitä sait? Täällä yksinkertainen esimerkki:
En tallettanut niitä epäonnistuneita. Olen liian kehno tässä, että saisin sovellettua edes yksinkertaista esimerkkiä .. esim

static void run(const int nmax) {

- miten tuohon lisätään mukaan nuo argc argv asiat? Olen pihalla jo tässä kohdassa ...
- laitanko tuonne loppuun run(atoi(argv[4])) vai miten
 
Liittynyt
17.10.2016
Viestejä
14 697
- miten tuohon lisätään mukaan nuo argc argv asiat? Olen pihalla jo tässä kohdassa ...
- laitanko tuonne loppuun run(atoi(argv[4])) vai miten
Tee pieni osa kerrallaan. Unohda aluksi se run() ja koeta saada mainiin niitä argumentteja. Kokeile aluksi tulostaa sieltä vain argumenttien lukumäärä. Sitten laita tsekki, että niitä argumentteja tulee oikea lukumäärä. (Nämä onnistuvat antamallani linkillä). Sitten sun pitää muuntaa se argumenttina tuleva merkkijono luvuksi. Sitten sä voit työntää sen luvun run-funktiolle parametriksi.

Mutta tee vain yksi asia kerrallaan ja etene vasta kun toimii.
 
Toggle Sidebar

Statistiikka

Viestiketjut
240 206
Viestejä
4 194 564
Jäsenet
70 871
Uusin jäsen
Hedelma

Hinta.fi

Ylös Bottom