Pieniä kysymyksiä ohjelmoinnista

Missäs tää Jestin konffifilu sitten löytyy, vai pitääkö se ite luoda? Oon siis aivan pihalla reactista, testaamisesta sitte puhumattakaan. Yritän noita dokumentaatioita seurata, mutta mikään ei tunnu toimivan.
Mikä paketinhallinta käytössä? Jos npm, mitä package.json sisältää?
Minkä komennon ajat kun tuo herja tulee?

Jos npm niin kokeile poistaa koko node_modules kansio ja ajaa "npm install" uusiksi.
 
Ehkä vähän esoteerinen kysymys, mutta onko kukaan käyttänyt Google Cloudin Datastorea? Tämähän on Googlen näppärä NoSQL palvelu pilvestä, johon löytyy eri kielille omat kirjastonsa. Itse olen tutustunut tähän Pythonilla ja Flaskilla. Ongelma on että miten saada näppärästi entityjen id:t dict muotoon. On todella vaivalloista aina hakea erikseen nuo id:t tuohon palautettavaan dict objektiin, varsinkin jos haetaan kaikki entityt jolloin tulos joudutaan iteroimaan ja lisäämään jokaiseen entityyn id-kenttä. Entity ID:tä tarvitaan jotta niitä voidaan käyttää kun haetaan yksittäisiä entityjä get-metodilla. Tietenkin yksi mahdollisuus olisi itse luoda uuid:t jokaiselle objektille ja antaa niille vain oma kenttä, mutta silloin kaikki haut pitäisi tehdä querylla, koska get-metodia ei voida käyttää ja tämä on aina vähän hitaampaa. Kaikki vinkit tervetulleita :)

Koodi:
from google.cloud import datastore

client = datastore.Client()
# määritellään mitä halutaan hakea
kind = 'User'
user_id = 123

# muodostetaan avain millä halutaan hakea dataa
key = client.key(kind, user_id)

# haetaan tulokset
entity = client.get(key=key)

# muutetaan entity objekti dict muotoon, jotta se voidaan palauttaa JSON muodossa web-serverillä
user = dict(entity)

# koska dict() muunnos ei palauta Entityn ID:tä/identifieria joudutaan se liittämään user dict objektiin
user['id'] = entity.id

Koodi:
# tässä entityn haku ja tulos
client.get(key=key)
<Entity('User', 5669869676658688) {'name': 'User1'}>

# tässä haetaan entity ja otetaan siitä id
client.get(key=key).id
5669869676658688

# tässä muunnetaan entity objekti dict muotoon. Huomaa, että id puuttuu... tämä on ongelma
dict(client.get(key=key))
{'name': 'User1'}
 
Viimeksi muokattu:
Missäs tää Jestin konffifilu sitten löytyy, vai pitääkö se ite luoda? Oon siis aivan pihalla reactista, testaamisesta sitte puhumattakaan. Yritän noita dokumentaatioita seurata, mutta mikään ei tunnu toimivan.

Configuring Jest · Jest

Teet sinne jonkun konffifilun (esim. jest.config.js) vaan vaikkapa package.jsonin vierelle projektin juureen. Passaat sen sit parametrina jestille ajaessa tyyliin "jest --config jest.config.js". Sinne voit määritellä setupTestFrameworkScriptFilella enzymen konffifilun sitten.
 
Mikä paketinhallinta käytössä? Jos npm, mitä package.json sisältää?
Minkä komennon ajat kun tuo herja tulee?

Jos npm niin kokeile poistaa koko node_modules kansio ja ajaa "npm install" uusiksi.

Moduulit poistettu ja asennettu muutamaankin otteeseen, kaikenlaista erroria puskee kun oon yrittäny vaikka mitä :D

Herjaa kun ajan "npm test" eli "test": "react-scripts test" package-jsonista.

depsit
Koodi:
    "axios": "^0.18.0",
    "react": "^16.8.0",
    "react-dom": "^16.8.0",
    "react-scripts": "2.1.3"

dev depsit
Koodi:
    "enzyme": "^3.8.0",
    "enzyme-adapter-react-16": "^1.9.1",
    "enzyme-to-json": "^3.3.5",
    "jest": "^24.1.0",
    "react-test-renderer": "^16.7.0"

Jos en importtaa enzymeä niin voin ajaa ton testin minkä create-react-app generoi eli
Koodi:
it('Renders without crashing', () => {
  const div = document.createElement('div');
  ReactDOM.render(<App />, div);
  ReactDOM.unmountComponentAtNode(div);
});

Kysytään näin, että mitä tarvitaan että voi tehdä testejä enzymellä, niinku ihan lähtöruudusta.
 
Minkälaiset valmiudet tuo nykyinen kurssi antaa?
Entä mitä tuo uusi versio tuo tullessaan?

Aika perus tason full stack js kurssi toi on. Ei mitää mullistavaa, mutta loistava nollatason react osaamiselle. Vaatii aijempaa ohjelmonti ja web osaamista.

Ei luultavasti mitään uutta, uusi lukukausi = uusi kurssi. Tuohan on siis avoimenyliopiston kurssi josta saa tarvittaessa tentillä lunastaa opintopisteet.
 
Viimeksi muokattu:
@qweeqwqwe

src/setupTests.js
Koodi:
import { configure } from 'enzyme';
import Adapter from 'enzyme-adapter-react-16';
configure({ adapter: new Adapter() });

Löytyykö?

Sopii olettaa että prokkis ei ole mitään supersalaista rahanteko koodia, nii gitissä vois olla helppo jakaa koko roska.
 
@qweeqwqwe

src/setupTests.js
Koodi:
import { configure } from 'enzyme';
import Adapter from 'enzyme-adapter-react-16';
configure({ adapter: new Adapter() });

Löytyykö?

Sopii olettaa että prokkis ei ole mitään supersalaista rahanteko koodia, nii gitissä vois olla helppo jakaa koko roska.

Löytyy. Sain toimimaan kun nukesin moduulikansion kolmatta kertaa ja otin jestin pois tuolta dev-depseistä. Kaippa sille on joku hyvä syy miksei toiminu :D

Tietääkö kukaan saakos tosta fullstackopenista oppareita muiltakin oppilaitoksilta vai mites toi skulaa.
 
Tietääkö kukaan saakos tosta fullstackopenista oppareita muiltakin oppilaitoksilta vai mites toi skulaa.

Kyllä ne saa sopivaan tutkintoon vietyä, oli koulu missä tahansa.

Selvitä opinto-ohjaajalta että kelpaako tutkintoon,
(kelpaa jos vähänkään ICT alaan kallellaan ja sulla ei oo jo tasan samatyyppistä kurssia jo alla)
tee kurssi, maksa tentti ja vie ahot lirpake koululle.
 
Ei luultavasti mitään uutta, uusi lukukausi = uusi kurssi. Tuohan on siis avoimenyliopiston kurssi josta saa tarvittaessa tentillä lunastaa opintopisteet.

Kyllä se aika paljon muuttuu: Home

Isoin muutos varmaan hookit. Sinne tulee ymmärtääkseni jossain vaiheessa myös Osa 8: GraphQL.
 
Onko tämä oikeasti ainoa tapa uudelleenkäyttää Djangon (admin-)lomakkeita?
Ymmärrän kyllä turvallisuus näkökulmat, mutta eikö pitäisi olla yksinkertaisempaa?
Vai voiko modeleille luoda lomakkeita jollain muulla tapaa tehokkaasti nk. CRUD sovelluksena, joka sallii muidenkin luoda sisältöä?
 
Ja mihin vedetään raja backend ja front-end tekemiselle?
Esim. proggis, jossa uusi back-end liitetään osaksi nykyistä verkkopalvelua; onko se aina niin, että fronttikoodari opastaa kädestäpitäen backend koodaria tägien ja luokkien ym. CSS:N kanssa?
Backendissä, kun luodaan kuitenkin sivupohja ja muu merkkaus...

Ja jatkokysymys: onko vue, react jne kirjastot tarkoitettu nimenomaan tällaisiin tapauksiin, jolloin backend toimisi vain datan lähteenä ja fronttikoodari voisi huolehtia lopusta ilman, että tarvitsee tuhlata kahta henkilöresurssia, joista toinen ei edes ymmärrä frontista mitään?
 
Se on just noin, eli backend on pelkkä REST API jota frontend-aplikaatio käyttää. Backend ja frontend on ikään kuin omia erillisiä sovelluksia. Tai oikeastaan nykyisin backend ei ole yksi monoliittinen sovellus vaan kokoelma useita eri mikrosovelluksia, jotka kukin tekee vain yhden toiminnon.

Esim. sulla vois olla auth-mikrosovellus joka huolehtii vain autentikaatiosta. Sitten voisi olla users-sovellus joka tarjoaa CRUD-operaatiot käyttäjäobjekteille ja sitten yksi+n dataan liittyvistä mikrosoveluksista ja 1+n tietokantamikrosovellusta. Tietty tietokanta voisi myös olla pelkkä SaaS-palvelu pilvestä. Yleensä mikroarkkitehtuuri hoidetaan Flaskillä Pythonilla, koska se on pienempi framework kuin Django.
 
Back ja front end:n raja on joskus tosi häilyvä, varsinkin jos sitä fronttitavaraa leivotaan kasaan jo "back endissä". Mikä sitten on isomorphic ja mikä ei, siitä voi väitellä. Kuitenkin se tekemisen raja noiden kahden välillä voi olla vaikea erottaa, vaikka koodissa tai arkkitehtuurissa se olisi helpompaa.
 
Back ja front end:n raja on joskus tosi häilyvä, varsinkin jos sitä fronttitavaraa leivotaan kasaan jo "back endissä". Mikä sitten on isomorphic ja mikä ei, siitä voi väitellä. Kuitenkin se tekemisen raja noiden kahden välillä voi olla vaikea erottaa, vaikka koodissa tai arkkitehtuurissa se olisi helpompaa.
Tässäpä tämä. Melkeinpä voisi käyttää termiä middle-end esim. Node/Express-middlewaren tai GraphQL:n kanssa. Eli frontti on se, mikä käyttäjälle näkyy. Middle-end taasen rajapinnat, jotka näkyvät frontendille. Ja backend on kaikki se, mikä säilöö ja pullauttaa datan middle-endin eteenpäin tarjoiltavaksi.

Toki voidaan puhua full-stack developereista, jotka hoitavat koko paletin. Harvoin vain itse olen törmännyt esim. UX-orientoituneeseen, ES6 (+ jokin framework/library) -velhoon. Joka vääntää yhtä sujuvasti possukantoja samalla huolehtien, että bäkkärin ja middle-endin tietoturva (sekä esim. kuormitus, kakutus yms.) pysyvät särmänä.
 
Harvoin vain itse olen törmännyt esim. UX-orientoituneeseen, ES6 (+ jokin framework/library) -velhoon. Joka vääntää yhtä sujuvasti possukantoja samalla huolehtien, että bäkkärin ja middle-endin tietoturva (sekä esim. kuormitus, kakutus yms.) pysyvät särmänä.

:srofl:

No tämä!
 
Tai oikeastaan nykyisin backend ei ole yksi monoliittinen sovellus vaan kokoelma useita eri mikrosovelluksia, jotka kukin tekee vain yhden toiminnon.

Jaa, on vai? En ole nähnyt vielä yhtäkään tapausta jossa microserviceistä saatua hyötyä olisi nähty niin suureksi että olisi vaivauduttu niiden kanssa puljaamiseen. Monoliiteilla menty joka kerta.
 
  • Tykkää
Reactions: hmb
Microservicet voivat toimia tilanteessa, jossa domaini on selkeä ja tarvitaan tietyn tyypistä skaalautuvuutta/perfomanssia (ääriesimerkkinä vaikka Netflix). Toisaalta taas joku vielä paikkaansa hakeva startup ampuu itseään jalkaansa, jos lähtee välittömästi pilkkomaan softaansa 50 mikropalveluun.

Nämä termit tarkoittavat tietysti eri asiaa eri ihmisille. Esim. mikropalveluarkkitehtuuriin vahvasti liitetty Docker on hyvä työkalu monenlaisiin stäkkeihin. "Monolith first" ei myöskään tarkoita, että se yksi Rails, Django tai Spring pallero on ainoa häkkyrä tuotannossa. Täysin käypä tapa onkin aloittaa monoliitilla, skaalata sitä sekä vertikaalisesti että horisontaalisti ja irrottaa vaikkapa raportointiin liittyvät tai Elastic stackiin soveltuvat palaset softaa omiksi palveluiksi monoliitin ohelle sitä mukaa kun tarpeet selkenevät.
 
Viimeksi muokattu:
Ihan ilman mitään sen kummempaa prokkissata aloin pyöritellä ajatusta "JWT rewoke:stä"

Tällähetkellä taitaa olla suosituin tapa toteuttaa vain simppeli token "blacklist" tietokanta, jota sitten puhdistellaan jossain crontabissa. Onko muita järkeviä vaihtoehtoja?

Mietin jotain secret per käyttäjä juttuja, mutta taitaa tulla ns. kallisoperaatio.
 
Kattelin tämmöstä Python opasta ja erit. tätä esimerkkiä: Python-oppimateriaali (CHEM-A2600)
Eikö tuo nyt ole hieman tyhmästi tehty ja so. kenties huono esimerkki?

Jos halutaan tarkistaa, että missä olomuodossa aine on tietyssä lämpötilassa, niin eikö sen voisi tehdä yhdellä metodilla?
Ja jos se tehtäisiin näin, niin sitten tuossa lopun ehto-lausekkeessa voitaisiin käyttää paluuarvoa eli olomuotoa.

Tuntuu siis erikoiselta, että koodi kysyy, että olenko tätä, kun se voisi kysyä, että mitä olen tässä lämpötilassa.
Vai onko tässä joku hienompi ajatus taustalla?
 
Kattelin tämmöstä Python opasta ja erit. tätä esimerkkiä: Python-oppimateriaali (CHEM-A2600)
Eikö tuo nyt ole hieman tyhmästi tehty ja so. kenties huono esimerkki?

Jos halutaan tarkistaa, että missä olomuodossa aine on tietyssä lämpötilassa, niin eikö sen voisi tehdä yhdellä metodilla?
Ja jos se tehtäisiin näin, niin sitten tuossa lopun ehto-lausekkeessa voitaisiin käyttää paluuarvoa eli olomuotoa.

Tuntuu siis erikoiselta, että koodi kysyy, että olenko tätä, kun se voisi kysyä, että mitä olen tässä lämpötilassa.
Vai onko tässä joku hienompi ajatus taustalla?
Lopussahan ollaan kiinnostuneita nimenomaan siitä, onko aine nestemuodossa vai ei. Tässä valossa on_neste-metodi on ihan perusteltu ja mahdollisesti jopa paras ratkaisu. Siinä olet toki oikeassa, että tähän käyttötarkoitukseen asian voisi tehdä myös yhdellä metodilla, mutta sepä ei välttämättä olekaan ihan niin hyvä ratkaisu kuin voisi kuvitella. Käytännössähän puhutaan varmaan metodista, jonka nimi olisi luokkaa olomuoto_merkkijonona. Yleisesti ottaen kuitenkin merkkijonoksi muuttavan metodin kannattaa tehdä mahdollisimman vähän mitään muuta, joten käytännössä tarvittaisiin ennen sitä olomuoto-niminen metodi, joka palauttaa aineen olomuodon sopivan tyyppisenä... eli käytännössä luultavasti enumina. Tarvitaan siis lisäksi olomuotoa kuvaava enum. Vaihtoehtoisesti olomuoto_merkkijonona-metodi voi kutsua nykyisiä on_*-metodeita, mikä toimii kyllä sekin mutta ei ole ainakaan minun silmääni kovin eleganttia. Joka tapauksessa lopulta olomuoto_merkkijonona-metodi kutsuu tätä olomuoto-metodia ja tekee sen perusteella mitä tekee. Toisaalta voidaan keskustella siitäkin, kannattaako luokan pystyä hoitamaan oma merkkijonoesityksensä. Koska käytännön sovelluksessa voidaan joutua huolehtimaan lisäksi esim. lokalisoinnista, vastaus saattaa hyvinkin olla ei.

Toki käytännössä yksinkertainen on yleensä kaunista ja hyvä ratkaisu, ja kaikki tämä on jotain ihan muuta kuin yksinkertaista verrattuna siihen, mitä oikeasti tarvitaan. Oikeasti tarvitaan vain on_neste-metodi, ja yksinkertaisuus huomioiden esimerkin ratkaisu on itse asiassa paras (olettaen, ettei muulle kuvaamalleni toiminnallisuudelle ole muuta tarvetta muualla ohjelmassa - oikeastihan saattaisi hyvinkin olla). Itse asiassa esimerkin kannalta tuossa on paljon muutakin turhaa, ja siitä kannattaisi karsia pois muutakin (YAGNI-periaate).
 
Lopussahan ollaan kiinnostuneita nimenomaan siitä, onko aine nestemuodossa vai ei. Tässä valossa on_neste-metodi on ihan perusteltu ja mahdollisesti jopa paras ratkaisu. Siinä olet toki oikeassa, että tähän käyttötarkoitukseen asian voisi tehdä myös yhdellä metodilla, mutta sepä ei välttämättä olekaan ihan niin hyvä ratkaisu kuin voisi kuvitella. Käytännössähän puhutaan varmaan metodista, jonka nimi olisi luokkaa olomuoto_merkkijonona. Yleisesti ottaen kuitenkin merkkijonoksi muuttavan metodin kannattaa tehdä mahdollisimman vähän mitään muuta, joten käytännössä tarvittaisiin ennen sitä olomuoto-niminen metodi, joka palauttaa aineen olomuodon sopivan tyyppisenä... eli käytännössä luultavasti enumina. Tarvitaan siis lisäksi olomuotoa kuvaava enum. Vaihtoehtoisesti olomuoto_merkkijonona-metodi voi kutsua nykyisiä on_*-metodeita, mikä toimii kyllä sekin mutta ei ole ainakaan minun silmääni kovin eleganttia. Joka tapauksessa lopulta olomuoto_merkkijonona-metodi kutsuu tätä olomuoto-metodia ja tekee sen perusteella mitä tekee. Toisaalta voidaan keskustella siitäkin, kannattaako luokan pystyä hoitamaan oma merkkijonoesityksensä. Koska käytännön sovelluksessa voidaan joutua huolehtimaan lisäksi esim. lokalisoinnista, vastaus saattaa hyvinkin olla ei.

Toki käytännössä yksinkertainen on yleensä kaunista ja hyvä ratkaisu, ja kaikki tämä on jotain ihan muuta kuin yksinkertaista verrattuna siihen, mitä oikeasti tarvitaan. Oikeasti tarvitaan vain on_neste-metodi, ja yksinkertaisuus huomioiden esimerkin ratkaisu on itse asiassa paras (olettaen, ettei muulle kuvaamalleni toiminnallisuudelle ole muuta tarvetta muualla ohjelmassa - oikeastihan saattaisi hyvinkin olla). Itse asiassa esimerkin kannalta tuossa on paljon muutakin turhaa, ja siitä kannattaisi karsia pois muutakin (YAGNI-periaate).
Jos sille olomuoto metodille välitettäisiin parametrina myös testattava olomuoto, niin sehän olisi aika toimiva?
 
Jos sille olomuoto metodille välitettäisiin parametrina myös testattava olomuoto, niin sehän olisi aika toimiva?
Oma ideani oli, että olomuoto-niminen metodi määrittäisi ja palauttaisi aineen olomuodon. Nimeämisessä voisi varmaan olla hitusen parannettavaa, jotta idea tulisi paremmin ilmi. Esim. hae_olomuoto ja maarita_olomuoto saattaisivat olla kuvaavampia (mutteivat täysin ongelmattomia nekään). Tuo kuvailemasi toiminnallisuus kuulostaa minusta ihan järkevälle sekin, mutta nähdäkseni siinäkin kannattaisi olla olomuotoa kuvaava enum-tyyppi, joka metodille annetaan parametriksi. Lisäksi kuvailemasi funktion nimen kannattaisi olla pikemminkin jotain tyyliin on_olomuodossa, jolloin tuohon olomuoto-enumiin yhdistettynä sitä kutsuttaisiin tyyliin
Koodi:
if metalli.on_olomuodossa(Olomuoto.NESTE):
    # tee jotain

Käytännössähän tuon enumin "tarve" on se, että toinen nopeasti mieleen tuleva vaihtoehto on antaa parametriksi merkkijono (if metalli.on_olomuodossa("neste")), mutta merkkijonoilla "tyypitys" ei ole hirmu häävi käytäntö syystä jos toisestakin.
 
Moi,

Löytyisikö seuraavaa asiaan vinkkiä tai jopa valmista skriptiä millä hoitaa ongelma.
Muutkin ratkaisut asian suhteen otetaan huomioon.

Olisi päivitettävä n. 800 tietyn yrityksen nimi ajan tasalle. Vanhassa järjestelmässä käytössä vanhoja tai väärin kirjoitettuja yrityksen nimiä. Käytettävissä olisi y-tunnus, jonka avulla tiedot voi hakea esim. ytj:stä. Dataa pyörittelen Excelissä tai tekstitiedossa.

Olisiko jotain skriptiä/softaa millä tuolta ytj:stä voisi kaivaa datan?
 
Moi,

Löytyisikö seuraavaa asiaan vinkkiä tai jopa valmista skriptiä millä hoitaa ongelma.
Muutkin ratkaisut asian suhteen otetaan huomioon.

Olisi päivitettävä n. 800 tietyn yrityksen nimi ajan tasalle. Vanhassa järjestelmässä käytössä vanhoja tai väärin kirjoitettuja yrityksen nimiä. Käytettävissä olisi y-tunnus, jonka avulla tiedot voi hakea esim. ytj:stä. Dataa pyörittelen Excelissä tai tekstitiedossa.

Olisiko jotain skriptiä/softaa millä tuolta ytj:stä voisi kaivaa datan?
Laita mulle YV:llä lista Y-tunnuksista niin haen sulle taulukkoon rekisteröidyt nimet.
 
  • Tykkää
Reactions: M#T
Moi,

Löytyisikö seuraavaa asiaan vinkkiä tai jopa valmista skriptiä millä hoitaa ongelma.
Muutkin ratkaisut asian suhteen otetaan huomioon.

Olisi päivitettävä n. 800 tietyn yrityksen nimi ajan tasalle. Vanhassa järjestelmässä käytössä vanhoja tai väärin kirjoitettuja yrityksen nimiä. Käytettävissä olisi y-tunnus, jonka avulla tiedot voi hakea esim. ytj:stä. Dataa pyörittelen Excelissä tai tekstitiedossa.

Olisiko jotain skriptiä/softaa millä tuolta ytj:stä voisi kaivaa datan?

avoindata-palvelusta voi hakea yrityksen tietoja y-tunnuksella. Siispä web request sinne ja bäm, tiedot on siinä.

Näissä esimerkeissä käytän Valion y-tunnusta "0116297-6". Tuon tilalle omat tunnukset mitä haluaa hakea niin saa sen tiedot.
Python:
Koodi:
import requests
requests.get('https://avoindata.prh.fi/tr/v1/0116297-6').json()['results'][0]['name']

Powershell:
Koodi:
Invoke-RestMethod -Uri "https://avoindata.prh.fi/tr/v1/0116297-6" | select -ExpandProperty results | select -ExpandProperty name
 
y-tunnukset

Koodi:
function GETNAMEBYBI(id) {
  id = id.trim()
  if (/^([\d]{6}|[\d]{7})-[\d]$/.test(id)) {
    var res = UrlFetchApp.fetch('http://avoindata.prh.fi/opendata/bis/v1/' + id)
    res = JSON.parse(res.getContentText())
    var name = res.results[0].name
    return name
  } else {
    return 'invalid input'
  }
}


eli =GETNAMEBYBI(A1)
 
Viimeksi muokattu:
Hah, aikas näppärä toi Googlen Apps Script. En olekaan tiennyt moisesta :tup:
 
Hah, aikas näppärä toi Googlen Apps Script. En olekaan tiennyt moisesta :tup:
Sattumalta sattu oleen tollanen ns. takataskussa :vihellys:

Kova jätkä olis vielä laskenu varmenteen mutta, tuo ei ottanu es6 vastaan enkä jaksanu kirjottaa uusiksi, vaan postin sen pätkän tosta. :D
 
Kiitos avusta. Powershelliä jonkun verran pyöritelleenä sain ajeltua nimet osoitetietojen kera taulukkoon.

Tuolta avoimen rajapinnan kautta tosin ei löydy kaikkia yhdistyksiä yms. vaan saatavilla vain seuraavat ytunnus tiedot: osakeyhtiö, julkinen osakeyhtiö, asunto-osakeyhtiö, osuuskunta, vakuutusyhtiö ja julkinen vakuutusyhtiö.
 
Kaipa tämä on rittävän lähellä ohjelmointia että kehtaa kysyä :)

On JavaFX-sovellus joka käännetty Oraclen JDK 8:lla. Toimii kuten pitää Oraclen JRE 8:lla. Käyttäjä jolla OpenJDK 8 (tai mahdollisesti sen runtime) ja ei admin-oikeuksia ei saa käyntiin vaan virheen "Error: Could not find or load main class..." Syy ilmeisestikin ettei JavaFX tule OpenJDK:n mukana. GitHubista löytyy valmiit OpenJFX-binäärit mutta ne on tarkoitus kopioida OpenJDK:n asennushakemistoon. OpenJFX zipin purkaminen muualle ja polun antaminen classpathissa ei toimi.

Voisiko noiden JFX-kirjastojen toimivuus edellyttää että niiden keskinäinen hakemistorakenne säilyy vai pitäisikö riittää että kaikki JAR-tiedostot löytyvät classpathista? Katsoin itse em. zippiä ja tiedostoja on parissa alihakemistossa, käsittääkseni käyttäjä pisti kaikki samaan paikkaan. Tai mikä muu voi olla rikki? Oracleen vaihtaminen ei käsittääkseni ole kovinkaan mieleinen/helppo vaihtoehto.
 
Miten nuo Djangon käännökset saa toimimaan?
Sisäänrakennettuna on jotain käännöksiä, mutta django-admin makemessages -l fi tuotetut käännöstiedostot eivätkä sisäänrakennetut näytä vaikuttavan käyttöliittymään.
 
Nyt tarvisi apua seuraavanlaisessa ongelmassa.

Tarkoituksena luoda dropdown -listoja json datasta, joilla on yhteys toisiinsa. En osaa edes selittää, mutta tuon alla olevan esimerkin mukaisestin.
Eli tuo mealsByCategory -lista pitäisi täyttää json -datalla, mieluiten ihan vanilla javascriptiä tässä vaiheessa.

Edit fiddle - JSFiddle

Olen googletellut, mutten oikein tiedä mitä pitäisi etsiä.
 
Miten nuo Djangon käännökset saa toimimaan?
Sisäänrakennettuna on jotain käännöksiä, mutta django-admin makemessages -l fi tuotetut käännöstiedostot eivätkä sisäänrakennetut näytä vaikuttavan käyttöliittymään.

Kokeile pääsetkö alkuun näillä:

settings.py tiedostoon lisäykset:
Koodi:
LANGUAGE_CODE = 'fi'
USE_I18N = True

Modeleiden kääntäminen (models.py):
Koodi:
from django.utils.translation import ugettext_lazy as _

example_field = models.TextField(_('Example field'))

Template-käännökset:
Koodi:
{% load i18n %}
<h1>{% trans "Example heading" %}</h1>

Luo käännöstiedosto:
Koodi:
django-admin makemessages -l fi

Lisää käännökset generoituihin .po -tiedostoihin.

Käännä käännöstiedosto:
Koodi:
django-admin compilemessages

Joskus nuo käännökset ovat vaatineet dev-palvelimen uudelleenkäynnistämisen.
 
Kokeile pääsetkö alkuun näillä:

settings.py tiedostoon lisäykset:
Koodi:
LANGUAGE_CODE = 'fi'
USE_I18N = True

Modeleiden kääntäminen (models.py):
Koodi:
from django.utils.translation import ugettext_lazy as _

example_field = models.TextField(_('Example field'))

Template-käännökset:
Koodi:
{% load i18n %}
<h1>{% trans "Example heading" %}</h1>

Luo käännöstiedosto:
Koodi:
django-admin makemessages -l fi

Lisää käännökset generoituihin .po -tiedostoihin.

Käännä käännöstiedosto:
Koodi:
django-admin compilemessages

Joskus nuo käännökset ovat vaatineet dev-palvelimen uudelleenkäynnistämisen.
Mites noiden 3rd party kirjastojen eli pip asennettujen kanssa menetellään?
Django osaa näemmä lukea Djangon käännökset, mutta noiden kirjastojen ei.
 
kuinkas helvetissä mongolla/mongoose väännän relaation sellasen säännön että...

collection A
A:lla lista [B1,B2,B3,B4] jossa B:n avain on uniikki

collection B
B:n avain ei ole uniikki (esim vuosi 2018 jne.)

olenko edes lähellä?

Koodi:
ASchema({
  key:{
    type:String,
    unique:true
  },
  arrB:[{type: Schema.Types.ObjectId, ref: 'B'}]
}

BSchema({
  compKey:A.key+B.key
  key:String
}




jaa eipäs mitää enään....
 
Viimeksi muokattu:
Eli tuo mealsByCategory -lista pitäisi täyttää json -datalla, mieluiten ihan vanilla javascriptiä tässä vaiheessa.

Koodi:
var mealsByCategory = {
    A: ["Soup", "Juice", "Tea", "Others"],
    B: ["Soup", "Juice", "Water", "Others"],
    C: ["Soup", "Juice", "Coffee", "Tea", "Others"]
}

./mealsByCategory.json
{
  "A": ["Soup", "Juice", "Tea", "Others"],
  "B": ["Soup", "Juice", "Water", "Others"],
  "C": ["Soup", "Juice", "Coffee", "Tea", "Others"]
}


Nyt en varmaan ihan ymmärrä missä kohtaa tarviit apua? Koska toihan on tosian on js Objekti, ja json on siitä vain stringiin väännetty Objekti :joy:
 
Nyt tarvisi apua seuraavanlaisessa ongelmassa.

Tarkoituksena luoda dropdown -listoja json datasta, joilla on yhteys toisiinsa. En osaa edes selittää, mutta tuon alla olevan esimerkin mukaisestin.
Eli tuo mealsByCategory -lista pitäisi täyttää json -datalla, mieluiten ihan vanilla javascriptiä tässä vaiheessa.

Edit fiddle - JSFiddle

Olen googletellut, mutten oikein tiedä mitä pitäisi etsiä.

En välttis tajua mitä haetaan, mutta kun looppaat niitä objektin osasia omiksi valinnoikseen (<option>) niin annat samalla valinnalle id:n/valuen niin sulla on yhteys?
 
Nyt tarvisi apua seuraavanlaisessa ongelmassa.

Tarkoituksena luoda dropdown -listoja json datasta, joilla on yhteys toisiinsa. En osaa edes selittää, mutta tuon alla olevan esimerkin mukaisestin.
Eli tuo mealsByCategory -lista pitäisi täyttää json -datalla, mieluiten ihan vanilla javascriptiä tässä vaiheessa.

Edit fiddle - JSFiddle

Olen googletellut, mutten oikein tiedä mitä pitäisi etsiä.

Tätä voisi tosiaan hiukan avata. Eli mitä yrität tehdä, millaisen pitäisi olla lopputulos ja missä tökkii?
 
  • Tykkää
Reactions: Jho
Tätä voisi tosiaan hiukan avata. Eli mitä yrität tehdä, millaisen pitäisi olla lopputulos ja missä tökkii?

Yritän parhaani mukaan selittää.
Tarkoituksena täyttää nuo alasveto valikot json -datalla.
Eli kun valitsen ensimmäisen elementin tuosta vasemman puoleisesta valikosta, listaa se seuraavaan siihen liittyvät elementit. Tuossa tapauksessa A, B, C.

Ehkä parempi esimerkki Edit fiddle - JSFiddle

Koodi:
var propertiesByCategory = {
    "Leanne Graham": ["A", "B", "C"],
    "Ervin Howell": ["D", "E"],
    "Clementine Bauch": ["F", "G"]
}

Ongelma on lähinnä se, että miten täytän tuon taulukon, joka tuossa on täytetty ihan käsin, niin json -datalla.

Linkki tuonne jsonplaceholder dataan, jota tuossa käytetään.
https://jsonplaceholder.typicode.com/users
 
Koodi:
var propertiesByCategory = {
"Leanne Graham": ["A", "B", "C"],
"Ervin Howell": ["D", "E"],
"Clementine Bauch": ["F", "G"]
}
Ongelma on lähinnä se, että miten täytän tuon taulukon, joka tuossa on täytetty ihan käsin, niin json -datalla.
Korvaat tuon muuttujan alustuksen siten, että data haetaan sieltä mistä pitää?

Purkkaesimerkki:
Koodi:
var propertiesByCategory;
fetch("https://myCategoryJson.url")
  .then(res => {
      return res.json(); 
    })
  .then(json => {
      propertiesByCategory = json;
    });
 
Korvaat tuon muuttujan alustuksen siten, että data haetaan sieltä mistä pitää?

Purkkaesimerkki:
Koodi:
var propertiesByCategory;
fetch("https://myCategoryJson.url")
  .then(res => {
      return res.json();
    })
  .then(json => {
      propertiesByCategory = json;
    });

Sain tuon nyt näkymään siinä oikean puoleisessa valikossa, mutta nyt se listaa sinne ainoastaan otsikot.

Pitäs väsätä looppi, joka hyppää suoraan tuonne address -kohtaan ja tulostaa sieltä nuo (street, suite jne.) arvot.
 
Kellään mitään hajua/kokemusta gprof:in käytöstä winkkarilla? Käytännössä saa raportit ulos mutta ihan puutaheinää (Jossain 10 metodin jälkeen alkaa näyttämään % suoritusajan kohdalla kaikille 0.00).

edit: nvm catch sotki hommia
 
Viimeksi muokattu:
Seuraan tätä opasta. Teen siis esimerkkisovellusta käyttäen Visual Studio for Macia ja Xamarin.Ios:ia.
Ongelma on, etten pysty muuttamaan joitakin käyttöliittymän elementtien ominaisuuksia. Esimerkiksi labelin teksti kyllä löytyy properties-taulukosta, mutta tekstilaatikkoon ei pysty kirjoittamaan. Siihen pystyy kyllä liittämään tekstiä o_O

Käyttääkö joku samaa ohjelmaa? Mikä voi olla vikana?
 
Mikäs olisi kätevin tapa jalostaa ts. yhtenäistää CSV tiedostoon kerättyä dataa (tekstiä)?
Data on tällä hetkellä 4 sarakkeessa, joista kukin sisältää tekstiä, jonka voisi vielä jakaa omiin sarakkeisiin.

Datassa esiintyy eri kirjoitusasulla, mutta samalla merkityksellä olevia sanoja tai lyhenteitä:
esim. vrk ja vuorokausi, turkulainen ja paikkakuntalainen (haastavampi), h ja tuntia ym.

Ajanmääreet olisi hyvä muuntaa ja yhtenäistää vaikka tunneiksi tai jopa minuuteiksi.

Kannattaako tähän edes ajatella mitään esim. pythonin nltk kirjastoa vai tekeekö itse jonkin listauksen ja spaghettikriptin, jolla putsaa?
Rivi määrä noin 1200.
 

Uusimmat viestit

Statistiikka

Viestiketjuista
261 846
Viestejä
4 549 004
Jäsenet
74 856
Uusin jäsen
Acceli

Hinta.fi

Back
Ylös Bottom