Pieniä kysymyksiä ohjelmoinnista

Brace Expansion (Bash Reference Manual)
Lähinnä vähän yllättää että tuo toimii odotetulla tavalla declaren yhteydessä.
Joo, itsekin yllätyin kun leikin ja kokeilin eri jippoja saada toimimaan. Jos muistan oikein, sävelsin tuon "oman versioni" kutakuinkin tämänlaisesta koodinpätkästä jonka luin varmaan stackexchangesta (en muista enää tarkasti ja voi olla virheitä):
Koodi:
export var{1,2,3}="jotain"
 
JavaScript(React) ja esteettömyys(accessibility). Miten saan mahdollisimman vähällä vaivalla reunuksen(outline) päälle, jos käyttäjä on painanut tabulaattoria, muutoin pois?

Koodi:
*:focus {
  outline: none;
}
 
JavaScript(React) ja esteettömyys(accessibility). Miten saan mahdollisimman vähällä vaivalla reunuksen(outline) päälle, jos käyttäjä on painanut tabulaattoria, muutoin pois?

Koodi:
*:focus {
  outline: none;
}
En tarkkaan tiedä, että mitä varsinaisesti haluat (ehkäistä focus-renkulan painaessa?), mutta jokin tällainen saattaisi toimia: https://codepen.io/zvona/pen/xxbyyjJ (ei ota kiinni `event.shiftKey`:ta, joten taaksepäin navigoimisen focus ei toimi :( )
 
Viimeksi muokattu:
Viimeksi muokattu:
Haluaisin tehdä React-sovellukselleni erillisen landing pagen. Mites tällaisen tekeminen käytännössä menee? Helpoin tapa olisi vaan luoda React Routerilla url landing pagelle, mutta haluaisin välttää tätä tapaa, koska sovelluksen avautuessa tietokantakyselyjä, joiden latautumiseen menee hieman aikaa. Landing pagen ei tarvitsisi olla kuin pelkkä staattinen sivu, jossa kerrotaan vähän tietoja sovelluksesta ja se sisältäisi varsinaisen linkin sovellukseen, joten tuollainen yksistään latautuisi millisekunneissa.

Sovellus on hostattu Digital Oceanissa dokkun avulla. Dokkussa on mahdollista ajaa useampia sovelluksia samasta containerista, mutta silloin vissiin täytyy jokaisella sovelluksella olla oma domain prefix tyyliin app1.sovellus.com ja app2.sovellus.com. Haluaisin kuitenkin käyttää samaa domainia eli esim. minun tapauksessa www.player.fan olisi itse sovellus ja www.player.fan/landing-page olisi se landing page. Onko tämä jotenkin mahdollista toteuttaa?

Idea on käyttää tuota landing pagea mainostukseen.
 
Sovellus on hostattu Digital Oceanissa dokkun avulla. Dokkussa on mahdollista ajaa useampia sovelluksia samasta containerista, mutta silloin vissiin täytyy jokaisella sovelluksella olla oma domain prefix tyyliin app1.sovellus.com ja app2.sovellus.com. Haluaisin kuitenkin käyttää samaa domainia eli esim. minun tapauksessa www.player.fan olisi itse sovellus ja www.player.fan/landing-page olisi se landing page. Onko tämä jotenkin mahdollista toteuttaa?

Idea on käyttää tuota landing pagea mainostukseen.

Todella usein näkee kyllä juuri sitä, että länderi on player.fan ja äppi subdomainissa app.player.fan. Tämähän tosiaan menisi ihan kivasti tuolla Dokkulla, oletan.
 
Todella usein näkee kyllä juuri sitä, että länderi on player.fan ja äppi subdomainissa app.player.fan. Tämähän tosiaan menisi ihan kivasti tuolla Dokkulla, oletan.
Joo tuolla tavalla varmaan onnistuisi Dokkussa, mutta haluaisin, että app on päädomaini ja landing page vaan se alla oleva route. Tämäkin ilmeisesti on mahdollista Stack Overflown mukaan. Kattelin vähän nyt tota Dokkun nginx-dokumentaatiota, mutta en siitä kyllä noviisina paljon ymmärtänyt. Varmaan tälle tiedostolle täytyy tehdä jotain. :)
 
Poika on hieman osoittanut kiinnostusta ohjelmoinnin alkeisiin ja löysin sille jokin aika sitten hyvän kotimaista tuotantoa olevan sivuston, missä tehtiin Javascriptillä ihan ruohonjuuritasolta lähtien pienissä erissä joku yksinkertainen peli. Opasta pystyi suorittamaan haluamassaan järjestyksessä ja jokaisen vaiheen yhteydessä oli upotettu emulaattori, johon esimerkkitehtävä piti kirjoittaa. Saattoi olla jonkin oppilaitoksen tuottama, mutta en ole varma. Kirjautumista ei kuitenkaan vaadittu.

Nyt on vaan ongelmana, että en muista mikä se sivu oli, ei vinkkejä kaivataan. Toivottavasti täältä joku tietää mistä on kyse.
 
Poika on hieman osoittanut kiinnostusta ohjelmoinnin alkeisiin ja löysin sille jokin aika sitten hyvän kotimaista tuotantoa olevan sivuston, missä tehtiin Javascriptillä ihan ruohonjuuritasolta lähtien pienissä erissä joku yksinkertainen peli. Opasta pystyi suorittamaan haluamassaan järjestyksessä ja jokaisen vaiheen yhteydessä oli upotettu emulaattori, johon esimerkkitehtävä piti kirjoittaa. Saattoi olla jonkin oppilaitoksen tuottama, mutta en ole varma. Kirjautumista ei kuitenkaan vaadittu.

Nyt on vaan ongelmana, että en muista mikä se sivu oli, ei vinkkejä kaivataan. Toivottavasti täältä joku tietää mistä on kyse.

Olisiko tämä?

Kurssista
Ohjelmointikurssi on verkkokurssi, jolla opetellaan ohjelmoinnin alkeita. Se on tarkoitettu peruskouluikäiselle ja ei vaadi yhtään esitietoja ohjelmoinnista. Tavoitteena on oppia tekemään yksinkertainen peli Javascript-ohjelmointikielellä. Kurssi alkaa ohjelmoinnin perusasioilla ja jatkuu yksinkertaisen pelin toiminnan toteuttamiseen.

Ohjelmointikurssi
 
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?

En nopealla silmäyksellä löytänyt vastausta tähän joten vastailempa itse.

Kysyt molemmissa keissiessä taulun ensimmäisen dimension koon vaikka ilmeisesti tarkoitat ensimmäisen dimension ensimmäisen solun(taulukon) pituutta.
Eli taulu.length == 1 koska alustat taulun [0]:n yhdeksi ( sisempi {} ). Jos olisit alustanut taulun {{},{}} niin .length on 2.

Jos haluat tietää jonkun tietyn alitaulukon koon, täytyy sinun eksplisiittisesti sitä kysyä. Esim taulu[0].length ensimmäisessä esimerkikssäsi on 0, ja jälkimmäisessä 1.
Javassahan nuo ovat siis sisäkkäisiä taulukkoja, ts. voisit luoda sen saman:
char[][] taulu = new char[1][];
taulu[0] = new char[] {'1'};

Toivottavasti tämä selvensi Javan moniulotteisten taulukkojen sielunmaisemaa.
Ohessa vielä pieni esimerkki:
upload_2020-1-23_12-23-48.png
 
Etsiskelin aiemmin tapaa luoda fade out -animaatio komponentille reactissa ennen unmount -vaihetta ja löysinkin yhden toimivan esimerkin, mutta jostain syystä animaatio pätkäisee välillä Safarin mobiili selaimella. Kaikilla muilla kokeilemillani selaimilla (edge, chrome, firefox) toimii oikein, nämä siis iPhonessa.

Mitään ideaa mistä mahtaa johtua?

Linkki esimerkkiin sekä videoon ongelmasta.

react-easy-animation - CodeSandbox
https://1drv.ms/v/s!AnYs5gefgKXJzZIrJMArMKMs0cxKGQ?e=SPACzn

edit: Vika korjaatui seuraavalla css rimpsulla.
Koodi:
    animation-fill-mode: forwards;
 
Viimeksi muokattu:
Miksei Wordpress-teeman css-tiedostoon tehdyt muutokset päivity? Teen muutoksen, minifioin tiedoston ja lataan sen palvelimelle. Mitään ei tapahdu.

Ratkaisin ongelman jo kertaalleen pari viikkoa sitten, mutta nyt en enää millään muista mitä tein enkä löydä netistäkään vastausta.
 
Miksei Wordpress-teeman css-tiedostoon tehdyt muutokset päivity? Teen muutoksen, minifioin tiedoston ja lataan sen palvelimelle. Mitään ei tapahdu.

Ratkaisin ongelman jo kertaalleen pari viikkoa sitten, mutta nyt en enää millään muista mitä tein enkä löydä netistäkään vastausta.
En tiedä Wordpressistä, mutta vanha CSS-tiedosto voi olla välimuistissa. Latasitko ohittaen sivun välimuistin, varmaan ctrl + shift + R.
 
Kun CSS:ssä asettaa marginit sivuilla auto:ksi, niin onko marginit ylhäällä ja alhaalla mahdollista saada yhtä suuriksi kuin sivujen marginit asettuvat?
 
VSCodessa tulee tällaisesta tilanteesta linter-varoitus:

1582305658261.png


Varoitus:

1582305686023.png


Miten saan tuon korjattua? Mielestäni noi sisennykset menee ihan oikein.

Mulla on Prettier-plugin käytössä, joka siis automaattisesti formatoi koodin tuohon muotoon.
 
Miten saan tuon korjattua?

Yleisohje: asenna Prettier ja korjaa lintteri niin ettei varoita mistään. Prettier on jumalan lahja JS/TS-devaajille. Saat keskittyä muuhun kuin koodin muotoiluun.

Mutta siis, näköjään eslint laskee sen sisennyksen noista ternary-operaattoreista, eikä objektiliteraalin sulkeista. Eli: joko korjaat sisennykset kuten tuossa kerrotaan, tai sitten koetat puukottaa eslintin säännöt haluamaksesi - ei välttämättä mahdollista.
 
Taas pieni kysymysmerkki tuli bash-ohjelmoinnista. Ymmärtääkö joku miksi seuraavan skriptin ajo antaa return koodiksi 1:sen?
Bash:
#!/bin/bash

VAR=0

[[ "$VAR" == "1" ]] && echo "test"

Skriptin ajo terminaalista:
Koodi:
user@****:/$ ./test.bash; echo "\$?: $?"
$?: 1

Jos koodi on näin niin skripti exitoituu 0:lla kuten pitääkin:
Bash:
#!/bin/bash

VAR=0

if [[ "$VAR" == "1" ]]; then
    echo "test"
fi
 
Jos tekee näin:

Bash:
[[ "$VAR" == "1" ]] && echo "test" || :

eli lisää OR-operaattorin ja sen jälkeen "do nothing" komennon niin exit koodi on 0.

Olen ollut siinä käsityksessä, että molempia operaattoreita ei tarvittaisi.
 
Jos tekee näin:

Bash:
[[ "$VAR" == "1" ]] && echo "test" || :

eli lisää OR-operaattorin ja sen jälkeen "do nothing" komennon niin exit koodi on 0.

Olen ollut siinä käsityksessä, että molempia operaattoreita ei tarvittaisi.
Jos käytät && niin seuraava osa ajetaan vain jos edellinen onnistuu (eli palautuskoodi on 0). Kun vertaat 0==1 niin vastaushan on 1, siinä vika.
 
Yleisohje: asenna Prettier ja korjaa lintteri niin ettei varoita mistään. Prettier on jumalan lahja JS/TS-devaajille. Saat keskittyä muuhun kuin koodin muotoiluun.

Mutta siis, näköjään eslint laskee sen sisennyksen noista ternary-operaattoreista, eikä objektiliteraalin sulkeista. Eli: joko korjaat sisennykset kuten tuossa kerrotaan, tai sitten koetat puukottaa eslintin säännöt haluamaksesi - ei välttämättä mahdollista.
Joo otin nuo linter-varoituksen kokonaan pois. Prettier on tosiaan ihan välttämätön plugin. Ilman sitä ei pärjää.
 
Jos käytät && niin seuraava osa ajetaan vain jos edellinen onnistuu (eli palautuskoodi on 0). Kun vertaat 0==1 niin vastaushan on 1, siinä vika.
No niin just! Liian pitkä sessio skriptin viimeistelyä & testaamista otti veronsa näköjään. Tattis, ja sori. :)
 
Nyt on sellainen aihe josta ei paljoa ole kokemusta, mutta miten saisin näppärästin JSONL -muodossa olevaa JSONia SQL -kantaan käyttäen Microsoftin SQL Server Management Studiota?
Vähän huonosti löytyi aiheeseen liittyen juttua googlella.

JSONL on siis validia JSONia, mutta jokainen objekti on erotettu rivinvaihdolla, eikä pilkulla.
Koodi:
{"firstname": "John", "lastname": "Doe"}
{"firstname": "James ", "lastname":"Smith"}
 
Nyt on sellainen aihe josta ei paljoa ole kokemusta, mutta miten saisin näppärästin JSONL -muodossa olevaa JSONia SQL -kantaan käyttäen Microsoftin SQL Server Management Studiota?
Vähän huonosti löytyi aiheeseen liittyen juttua googlella.

JSONL on siis validia JSONia, mutta jokainen objekti on erotettu rivinvaihdolla, eikä pilkulla.
Koodi:
{"firstname": "John", "lastname": "Doe"}
{"firstname": "James ", "lastname":"Smith"}
Muutat datat nodella tai Pythonilla sellaiseen muotoon jonka voit syöttää tietokantaan joko käsin esim. csv-tiedostona tai sitten asennat kirjaston jolla hoidat myös tietokantaan syötön koneellisesti. Ei varmaan mitään ihan hirveen näppärää keinoa ole jos MS SQL ei syö JSONL-muotoa. Powershellille löytyy mm. hyvä Microsoftin SQL moduuli jolla voi syöttää dataa tietokantaan.
 
Muutat datat nodella tai Pythonilla sellaiseen muotoon jonka voit syöttää tietokantaan joko käsin esim. csv-tiedostona tai sitten asennat kirjaston jolla hoidat myös tietokantaan syötön koneellisesti. Ei varmaan mitään ihan hirveen näppärää keinoa ole jos MS SQL ei syö JSONL-muotoa. Powershellille löytyy mm. hyvä Microsoftin SQL moduuli jolla voi syöttää dataa tietokantaan.

Aika oleellinen seikka jäi kertomatta ja se on se, että osassa dataa on taulukoita joiden sisällä on objekteja.
Koodi:
"disks": [
         {
            "name": "C",
            "read": 234313,
            "write": 294809
         },
         {
            "name": "D",
            ....
         }
      ]

Ymmärsin niin, että csv ei osaa käsitellä tuollaista oikein tai ainakin lopputulos on vähän oudon näköistä.

Konversioon käytin noden pakettia nimeltään ndjson-to-csv
 
Sulla varmaan on tiedossa sun SQL schema ja tiedät miten datat pitäisi sinne syöttää joten ei muuta kuin muokkaamaan input data sopivaan muotoon ja lisäät ne koneellisesti sinne tietokantaan jonkun sql kirjaston avulla. Eli datat muutetaan ensiksi ohjelmointikielen objekteiksi ja sitten vaan insert siinä muodossa kuin haluat.
 
Millä tapaa JavaScriptillä pystyy tarkastamaan onko jokin päivämäärä olemassa? esim 30.2.2020 epäonnistuisi, koska sellaista ei ole.
Olisi kiva saada vielä lähin mahdollinen päivämäärä, jos ylläoleva epäonnistuu.

Käyttökohteena Node.js. Joten jos on joku valmis paketti,niin sellainen kelpaa.
 
Millä tapaa JavaScriptillä pystyy tarkastamaan onko jokin päivämäärä olemassa? esim 30.2.2020 epäonnistuisi, koska sellaista ei ole.
Olisi kiva saada vielä lähin mahdollinen päivämäärä, jos ylläoleva epäonnistuu.

Käyttökohteena Node.js. Joten jos on joku valmis paketti,niin sellainen kelpaa.


Muistaakseni tämä hoitaa haluamasi asian:
JavaScript:
const moment = require("moment");

const date = moment("2020-02-30", "yyyy-mm-dd");
if (!date.isValid()) {
  console.log(date.invalidAt())  // Printtaa 2, eli päivien osalta ei kelpaa
}

Moment.js on käytössä ollut käytännössä kaikissa työprojekteissa, jossa olen jollain tavalla pyöritellyt päivämääriä.... eli kaikissa.
 
Viimeksi muokattu:
Millä tapaa JavaScriptillä pystyy tarkastamaan onko jokin päivämäärä olemassa? esim 30.2.2020 epäonnistuisi, koska sellaista ei ole.
Olisi kiva saada vielä lähin mahdollinen päivämäärä, jos ylläoleva epäonnistuu.

Käyttökohteena Node.js. Joten jos on joku valmis paketti,niin sellainen kelpaa.
Kirjasto on varmaan hyvä, jos tarvitsee tehdä enemmänkin, mutta tähän kyseiseen tarkoitukseen riittää ainakin selaimessa Date.parse:
JavaScript:
Date.parse('2020-02-30');
NaN
 
kyseiseen tarkoitukseen riittää ainakin selaimessa Date.parse:


Vahvasti välttäisin ihan pelkän vanilla JS Daten pyörittelemistä oikeastaan missään, jos ei ole hankaluutta sisällyttää momentjs. Ei myöskään kauhean kätevää, että parse antaa vastauksena joko millisekunteja (unix epoch?) tai NaN...

Muokkasin omaan vastaukseeni vielä momentin tarjomaan invalidAt() funktion, joka auttaa ainakin osittain tuohon lisätarpeeseen löytääkseen lähimmän sopivan päivän.
 
Momentin ongelma on aika suolainen bundle-koko. Jos ilman pärjää, niin itse jättäisin väliin. Localet saa WebPackillä hiiteen, mutta esim. date-fns voi olla hiukan kevyempi vaihtoehto. Jos tarvitsee kirjaston.
 
Tuolla JavaScriptin Date oliollahan tämä ratkeaa.
En todellakaan tiennyt, että jos tuolle Date oliolle syöttää vuoden sekä kuukauden, mutta asettaa päivän arvoon nolla, palauttaa se kyseisen kuukauden päivien lukumäärän tuolla getDate() -metodilla.

JavaScript:
new Date(2020, 02, 0).getDate();
29
 
Tuolla JavaScriptin Date oliollahan tämä ratkeaa.

JavaScript:
new Date(2020, 02, 0).getDate();
29

Väärin.

0 antaa tässä tapauksessa edellisen kuun viimeisen päivän. 02 on tässä tapauksessa maaliskuu, koska Javascript aloittaa kuukaudet nollasta (koska logiikka).

Koodi:
// "anna minulle helmikuun 50. päivä"
new Date(2020, 1, 50)
// Sat Mar 21 2020 00:00:00 GMT+0200 (Itä-Euroopan normaaliaika)

// koska 50 päivää - helmikuun 29 päivää = 21 päivää  -> Saadaan maaliskuun 21. päivä

new Date(2020, 1, -5)
// Sun Jan 26 2020 00:00:00 GMT+0200 (Itä-Euroopan normaaliaika), koska ilmeisesti tämä on sama kuin "anna 6 päivää taaksepäin Helmikuun alusta" -_-

...ja juuri tällaisten tapausten vuoksi siirtyisin heti siihen momentin käyttöön, koska Daten käyttäytyminen on melko arvaamatonta.

Jos nämä päivät jota haluat antaa tulevat käyttäjältä, ne voisi syöttää jollain kalenteripalikalla ja validoida frontin ja backendin päässä, että tulee varmasti joku oikeasti kelpaava päivämäärä, ja kylmästi hylätä vialliset. Jonkun oikean päivämäärän arvaaminen epävalidista päivimääristä kuulostaa melko syvältä suolta.
 
Viimeksi muokattu:
Väärin.

0 antaa tässä tapauksessa edellisen kuun viimeisen päivän. 02 on tässä tapauksessa maaliskuu, koska Javascript aloittaa kuukaudet nollasta (koska logiikka).

Koodi:
// "anna minulle helmikuun 50. päivä"
new Date(2020, 1, 50)
// Sat Mar 21 2020 00:00:00 GMT+0200 (Itä-Euroopan normaaliaika)

// koska 50 päivää - helmikuun 29 päivää = 21 päivää  -> Saadaan maaliskuun 21. päivä

new Date(2020, 1, -5)
// Sun Jan 26 2020 00:00:00 GMT+0200 (Itä-Euroopan normaaliaika) o_O

...ja juuri tällaisten tapausten vuoksi siirtyisin heti siihen momentin käyttöön, koska Daten käyttäytyminen on melko arvaamatonta.

Tästä olikin jotain juttua stackoverflowssa, mutten uskonut. Kerkesin tosiaan jo innostua tästä näppärästä keinosta.
 
Viimeksi muokattu:
Hei, bash-skriptailija täällä taas. Miten voi jakaa useammalle riville pitkän regex patternin? Tarkoitus olisi välttää tekemästä yli 80 merkin rivejä, EDIT: ja tehdä IF-lauseita luettavammaksi.

Näin se onnistuu konkatenoimalla mutta onko mitään kätevämpää/toista tapaa?

Bash:
strREGEX='^[[:blank:]]*'
strREGEX+='agsdljkgdslgasdlkgalkgasdlkjgasdlkagsdlkgasdlkgsadlkgsadsahgasdfss'
strREGEX+='[[:blank:]]*$'

Tuota sitten helpompi käyttää jossain IF-lauseessa jossa muutenkin merkkejä on jo jonnin verran.

Yritin backslasheilla jakaa patternia mutta en onnistunut ollenkaan. Kokeilin myös tallentamista arrayhyn (indeksit jaettu backslashillä eri riveille) ja printtaamalla arrayn jokaisen indeksin putkeen mutta aina eri indeksien väliin tuli yksi tyhjä välimerkki.
 
Viimeksi muokattu:
Hei, bash-skriptailija täällä taas. Miten voi jakaa useammalle riville pitkän regex patternin? Tarkoitus olisi välttää tekemästä yli 80 merkin rivejä, EDIT: ja tehdä IF-lauseita luettavammaksi.

Näin se onnistuu konkatenoimalla mutta onko mitään kätevämpää/toista tapaa?

Bash:
strREGEX='^[[:blank:]]*'
strREGEX+='agsdljkgdslgasdlkgalkgasdlkjgasdlkagsdlkgasdlkgsadlkgsadsahgasdfss'
strREGEX+='[[:blank:]]*$'

Tuota sitten helpompi käyttää jossain IF-lauseessa jossa muutenkin merkkejä on jo jonnin verran.

Yritin backslasheilla jakaa patternia mutta en onnistunut ollenkaan. Kokeilin myös tallentamista arrayhyn (indeksit jaettu backslashillä eri riveille) ja printtaamalla arrayn jokaisen indeksin putkeen mutta aina eri indeksien väliin tuli yksi tyhjä välimerkki.

Tämäkö ei toimi?
Bash:
strREGEX='^[[:blank:]]*'\
'agsdljkgdslgasdlkgalkgasdlkjgasdlkagsdlkgasdlkgsadlkgsadsahgasdfss'\
'[[:blank:]]*$'

Huomaa että jatkorivejä ei saa sisentää.
 
Tämäkö ei toimi?
Bash:
strREGEX='^[[:blank:]]*'\
'agsdljkgdslgasdlkgalkgasdlkjgasdlkagsdlkgasdlkgsadlkgsadsahgasdfss'\
'[[:blank:]]*$'

Huomaa että jatkorivejä ei saa sisentää.
Just, tuosta se sitten varmaan oli, eli ei saa sisentää kuten heredoc:ien kanssa. Luettavuuden kannalta parempi käyttää tuota aiempaa konkatenointia.
 
Rajapinta palauttaa datetimen stringinä muun datan seassa muodossa
"DateTime": "2015-11-02T17:00:00",
tarkemmin sanottuna:
(
[dateTime] => 2020-01-17T10:30:00.0000000
[timeZone] => UTC
)

Nyt pitäisi tuota jotenkin järkeistää javascriptiä käyttäen niin että voin verrata että onko javascriptissä asetettu aika kahden rajapinnasta tulevan ajan välissä.
1. Mikä on tuon ajan esitystavan nimitys ?
2. Miten saan tuon javascriptillä siihen muotoon että javascript osaa sitä lukea datetimenä ? ja verrattua muihin aikoihin ?

Yleensä olen koodanut mysql/php:ssa jossa aikamuoto on paljon selkeämpi eikä mitään objekteja tarvita..
 
Rajapinta palauttaa datetimen stringinä muun datan seassa muodossa
"DateTime": "2015-11-02T17:00:00",
tarkemmin sanottuna:
(
[dateTime] => 2020-01-17T10:30:00.0000000
[timeZone] => UTC
)

Nyt pitäisi tuota jotenkin järkeistää javascriptiä käyttäen niin että voin verrata että onko javascriptissä asetettu aika kahden rajapinnasta tulevan ajan välissä.
1. Mikä on tuon ajan esitystavan nimitys ?
2. Miten saan tuon javascriptillä siihen muotoon että javascript osaa sitä lukea datetimenä ? ja verrattua muihin aikoihin ?

Yleensä olen koodanut mysql/php:ssa jossa aikamuoto on paljon selkeämpi eikä mitään objekteja tarvita..

JavaScript osaa vertailla aikoja suoraan stringeinä.
JavaScript:
"2015-11-02T17:00:00" < "2015-12-02T17:00:00" 
true
 
Rajapinta palauttaa datetimen stringinä muun datan seassa muodossa
"DateTime": "2015-11-02T17:00:00",
tarkemmin sanottuna:
(
[dateTime] => 2020-01-17T10:30:00.0000000
[timeZone] => UTC
)

Nyt pitäisi tuota jotenkin järkeistää javascriptiä käyttäen niin että voin verrata että onko javascriptissä asetettu aika kahden rajapinnasta tulevan ajan välissä.
1. Mikä on tuon ajan esitystavan nimitys ?
2. Miten saan tuon javascriptillä siihen muotoon että javascript osaa sitä lukea datetimenä ? ja verrattua muihin aikoihin ?

Yleensä olen koodanut mysql/php:ssa jossa aikamuoto on paljon selkeämpi eikä mitään objekteja tarvita..
Formaatti on ISO 8601 ja Date-objektin saat siitä aikaan suoraan rakentajalla: Date() constructor

Kuten mainittua, tuon muotoisia aikaleimoja voi verrata onnistuneesti myös suoraan merkkijonoina.
 
Miten Google Sheetsissä voi laskea kuluneen ajan?
Jos kuvitellaan tilanne, että solussa A1 on aika 8:00 ja solussa B1 aika 11:00. Miten soluun C1 voi laskea kuluneen ajan?
Kaikkialla ohjeistetaan, että A1 ja B1 solujen muodoksi pitää valita aika ja solun C1 muodoksi kesto. Kaavaksi soluun C1: =B1-A1.
Mutta ei toimi. Soluun C1 tulee VALUE error, jossa kerrotaan, että 11:00 on tekstimuotoa eikä sitä voida muuntaa numeroksi.
 
Miten Google Sheetsissä voi laskea kuluneen ajan?
Jos kuvitellaan tilanne, että solussa A1 on aika 8:00 ja solussa B1 aika 11:00. Miten soluun C1 voi laskea kuluneen ajan?
Kaikkialla ohjeistetaan, että A1 ja B1 solujen muodoksi pitää valita aika ja solun C1 muodoksi kesto. Kaavaksi soluun C1: =B1-A1.
Mutta ei toimi. Soluun C1 tulee VALUE error, jossa kerrotaan, että 11:00 on tekstimuotoa eikä sitä voida muuntaa numeroksi.

Luonnollisesti sun pitää ensin laittaa se aika sinne aikamuotoon eikä tekstiksi. Vaihda ensin locale Suomeksi. File -> Spreadsheet settings. Sitten voit laittaa päivämäärät muodossa "1.1.2020". Pitäisi toimia erotus.
 
Luonnollisesti sun pitää ensin laittaa se aika sinne aikamuotoon eikä tekstiksi. Vaihda ensin locale Suomeksi. File -> Spreadsheet settings. Sitten voit laittaa päivämäärät muodossa "1.1.2020". Pitäisi toimia erotus.
Laitettu aikamuotoon ja locale on suomi. Mutta ei vaan toimi.
 
Laitettu aikamuotoon ja locale on suomi. Mutta ei vaan toimi.

Hmm, täällä toimii hyvin tuo muoto kun Format on Auto, Locale Suomi. Katso vielä, ettei solun format ole vahingossa joku väärä. Ja kokeile varuiksi uudella sheetillä.
 
Miten Google Sheetsissä voi laskea kuluneen ajan?

Jos kuvitellaan tilanne, että solussa A1 on aika 8:00 ja solussa B1 aika 11:00. Miten soluun C1 voi laskea kuluneen ajan?

Kaikkialla ohjeistetaan, että A1 ja B1 solujen muodoksi pitää valita aika ja solun C1 muodoksi kesto. Kaavaksi soluun C1: =B1-A1.

Mutta ei toimi. Soluun C1 tulee VALUE error, jossa kerrotaan, että 11:00 on tekstimuotoa eikä sitä voida muuntaa numeroksi.

Laitettu aikamuotoon ja locale on suomi. Mutta ei vaan toimi.

Ja heti toimii kun vaihton localen saksaksi. Kiitos!

Se Suomen aikalokaalisaatio Sheetsissä aika kömpelö ja vaatii ajan oletuksena muodossa "klo 13.00.00", mutta sinne voi onneksi myös määrittää ajan formatoinnin itse, vaikka "13.00" tai "13:00" muodossa. (Muoto -> Luku -> Lisää muotoja -> Lisää päivämäärän ja ajan muotoja.) Ei tarvitse vaihtaa koko sovelluksen lokalisaatiota.

scr.png
 
Löytyiskö täältä apua, ei jaksais enää hakata päätä seinään tämän kanssa, C++ pointterit ilmeisesti ongelmana.

Käytettävä metodi menee näin:
int wiringPiISR (int pin, int edgeType, void (*function)(void)) ;

Tarkoitus olisi kutsua tuota luokan konstruktorissa, viimeiseksi parametriksi pitäisi saada luokan oma metodi.


C++:
class A {
    public:
        A() {
            wiringPiISR(1, EDGE, ???);
        }
    
    void kutsuttavaFunktio() {
        
    }
};
 
Löytyiskö täältä apua, ei jaksais enää hakata päätä seinään tämän kanssa, C++ pointterit ilmeisesti ongelmana.

Käytettävä metodi menee näin:
int wiringPiISR (int pin, int edgeType, void (*function)(void)) ;

Tarkoitus olisi kutsua tuota luokan konstruktorissa, viimeiseksi parametriksi pitäisi saada luokan oma metodi.


C++:
class A {
    public:
        A() {
            wiringPiISR(1, EDGE, ???);
        }
   
    void kutsuttavaFunktio() {
       
    }
};

Metodi pitää olla static jotta sen voi antaa parametrina.
 

Statistiikka

Viestiketjuista
261 694
Viestejä
4 537 134
Jäsenet
74 864
Uusin jäsen
Eetu M

Hinta.fi

Back
Ylös Bottom