Pieniä kysymyksiä ohjelmoinnista

Liittynyt
20.10.2016
Viestejä
778
Olisiko jotakin paksumpaa rautalankaa, kun ei tämä oikein tästä ... vaikea korjata kun ei tajua miten ja miksi ja mitä se valittaa ...

Koodi:
$ cat positive.c
#include <complex.h>
#include <math.h>
#include <stdio.h>
#include <stdlib.h>

static void run(int argc, char *argv[]) {
   double imin = 2;
   int aaa = atoi(argv[1]);
   int bbb = atoi(argv[2]);
   int ccc = atoi(argv[3]);
   int ddd = atoi(argv[4]);
   int nnn = atoi(argv[5]);
   int a = aaa;
   for (int b = bbb; b <= nmax; b++) {
         for (int c = ccc; c <= nmax; c++)
               for (int d = ddd; d <= nmax; d++) {
                  const double complex x = a + I * b;
                  const double complex y = c + I * d;
                     printf( ... poistettu
                  }
               }
      }
}

int main() {
   run(nnn);
   return EXIT_SUCCESS;
}

$ gcc -o fuck positive.c
positive.c: In function ‘run’:
positive.c:14:27: error: ‘nmax’ undeclared (first use in this function); did you mean ‘fma
’?
   14 |    for (int b = bbb; b <= nmax; b++) {
      |                           ^~~~
      |                           fmax
positive.c:14:27: note: each undeclared identifier is reported only once for each function it appears in
positive.c: In function ‘main’:
positive.c:30:8: error: ‘nnn’ undeclared (first use in this function); did you mean ‘nan’?
   30 |    run(nnn);
      |        ^~~
      |        nan
positive.c:30:4: error: too few arguments to function ‘run’
   30 |    run(nnn);
      |    ^~~
positive.c:6:13: note: declared here
    6 | static void run(int argc, char *argv[]) {
      |             ^~~
 
Liittynyt
17.10.2016
Viestejä
14 550
vaikea korjata kun ei tajua miten ja miksi ja mitä se valittaa ...
Kuten sanoin, unohda se run. Älä koske run()-funktioon lainkaan. Nuo parametrit argc ja argv tulevat mainille, kuten esimerkissä todettiin. Eli palauta se run siihen muotoon kuin se aiemmin oli. Ja koske vain main()-funktioon.

Saat virheitä, sillä noita muuttujia ei ole esitelty/alustettu missään, sillä muokkasit run-funktion parametreja. Saat myös virheen sillä yrität kutsua run-funktiota yhdellä parametrilla, vaikka se haluaa nyt kaksi, koska muokkasit sitä. Älä muokkaa sitä, palaute se mikä se oli aiemmin.
 
Liittynyt
07.01.2021
Viestejä
678
argv ja argc annetaan main()-funktiolle. Se on se funktio, jota kutsutaan ensimmäisenä ja siksi ne annetaan sille. Ota ne talteen siinä funktiossa ja välitä tuolle run()-funktiolle.
 
Liittynyt
20.10.2016
Viestejä
778
Ok, tässä on nyt modifioitua main() juttua ... en tiedä miten tämä tästä jatkuu ... run(nmax) olisi se mitä arvailen ...

Koodi:
int main(int argc, char *argv[]) {
   if(argc != 5) {
      printf("Anna 5 argumenttia, uuno\n");
   }
   int aaa = atoi(argv[1]);
   int bbb = atoi(argv[2]);
   int ccc = atoi(argv[3]);
   int ddd = atoi(argv[4]);
   int nmax = atoi(argv[5]);

   run(700);
   return EXIT_SUCCESS;
}
 
Liittynyt
17.10.2016
Viestejä
14 550
Ok, tässä on nyt modifioitua main() juttua ... en tiedä miten tämä tästä jatkuu ... run(nmax) olisi se mitä arvailen ...
Hyvä edistyy edistyy! Tärkeä knoppi: argc:ssä on mukana myös se ohjelman nimi. Eli jos kirjoitat "./binääri 2 3 4 5 700", niin argc on 6, eikä 5. Ali argv[0] on aina sen ohjelman nimi. Sulla on tuo if siis väärin, haluat että sieltä tulee 6 argumenttia, joista argv[1] on ensimmäinen joka sua kiinnostaa. argv[0] on siis vain se ohjelman nimi.

run ottaa nyt vain yhden parametrin, nmax:in. Jos sun pitää saada myös nuo muut komentoriviparametrit myös käyttöön run:ssa, sun pitää muuttaa sen määritelmää niin, että se ottaa kaikki 5 parametria. Eli laitata pilkulla erotellen sille lisää parametrejä sekä siellä run:n määrittelyssä, että main:issa kun kutsut sitä.
 
Liittynyt
20.10.2016
Viestejä
778
Höh?! Nyt se alkoi toimimaan, mitä hittoa, en edes uskonut että onnistuisi ...

Run-riville tuli

Koodi:
run(aaa,bbb,ccc,ddd,nmax);
ja sinne static void riville

Koodi:
static void run(const int aaa, const int bbb, const int ccc, const int ddd, const int nmax) {
ja korjasin sen argc != 6 :ksi

Kiitos?!
 
Liittynyt
20.10.2016
Viestejä
778
Pakko sanoa vielä, että c-koodaus on kyllä mielestäni yhtä mukavaa kuin yhtäaikainen juurihoito, paksusuolen tähystys ja sisäänkasvaneen varpaankynnen operointi, ulkona räntäsateessa! Hatunnosto heille jotka sitä tekevät.
 
Liittynyt
07.01.2021
Viestejä
678
C:ssä on alussa kynnys mutta se on loppujen lopuksi suhteellisen yksinkertainen kieli kun sen oppii. Sitten kun mennään todella syvälle niin löytyy kaikkea omituista, mutta useimmat koodarit ei niihin törmää.
 
Liittynyt
17.01.2018
Viestejä
1 997
Aika monessa muussakin kielessä komentorivin joutuu parsimaan aika samalla tyylillä.
 
Liittynyt
16.11.2020
Viestejä
2 565
Onko kokemuksia WSL2:n (windows subsystem for linux) päällä devaamisesta? Hitti vai Huti?

Aikaisemmissa hommissa devailin aika pitkälti pelkästään VirtualBoxin sisällä olevassa Ubuntu-koneessa, mutta sen kanssa oli omat kömpelyytensä ja esim. pasteeminen windowsin ja virtuaalikoneen välillä ei tuntunut koskaan toimivan niin kuin pitää, virtuaalikoneen ikkunan venyttäminen toimi vähän miten sattuu jne. Joten meinasin testata hommien ja duunikoneen vaihduttua WSL:n päällä devaamista. (Mietin duunikoneeksi Macia, mutta niiden saatavuus oli pakolliselta toimittajalta vähän heikkoa ja en nyt sit tullu valinneeksi käyttikseksi suoraan Linuxia, koska tottumus.)

Mulla on nyt IntelliJ (ultimate) asennettuna Windowsiin (11) ja kaikki projektifilut meinasin pitää WSL:ssä (eli Ubuntu-virtuaalikoneessa). Lähinnä jotain pientä häikkää tuntuu olevan sen kanssa, että tunnistaako IntelliJ projektit oikein, hakeeko se Javan / JDK:n Windowsista vai virtuaalikoneesta ja tunnistaako IntelliJ:n terminaali ylipäätään oikein, että ollaanko Windowsissa vai Linuxissa. Ainakin sotkua tulee siitä, jos käynnistää projektin Windowsista hiiren oikealla ("avaa kansio IntelliJ Idea projektina").

Java-kehitystä siis teen pääasiassa. Saattaa tulla jotain pientä React / TypeScript tehtävää kanssa, mihin vois asennella ehkä erikseen VSCoden..
 
Liittynyt
17.10.2016
Viestejä
5 658
Onko kokemuksia WSL2:n (windows subsystem for linux) päällä devaamisesta? Hitti vai Huti?

Aikaisemmissa hommissa devailin aika pitkälti pelkästään VirtualBoxin sisällä olevassa Ubuntu-koneessa, mutta sen kanssa oli omat kömpelyytensä ja esim. pasteeminen windowsin ja virtuaalikoneen välillä ei tuntunut koskaan toimivan niin kuin pitää, virtuaalikoneen ikkunan venyttäminen toimi vähän miten sattuu jne. Joten meinasin testata hommien ja duunikoneen vaihduttua WSL:n päällä devaamista. (Mietin duunikoneeksi Macia, mutta niiden saatavuus oli pakolliselta toimittajalta vähän heikkoa ja en nyt sit tullu valinneeksi käyttikseksi suoraan Linuxia, koska tottumus.)

Mulla on nyt IntelliJ (ultimate) asennettuna Windowsiin (11) ja kaikki projektifilut meinasin pitää WSL:ssä (eli Ubuntu-virtuaalikoneessa). Lähinnä jotain pientä häikkää tuntuu olevan sen kanssa, että tunnistaako IntelliJ projektit oikein, hakeeko se Javan Windowsista vai virtuaalikoneesta ja tunnistaako IntelliJ:n terminaali ylipäätään, että ollaanko Windowsissa vai Linuxissa. Java-kehitystä teen pääasiassa. Saattaa tulla jotain pientä React / TypeScript tehtävää kanssa, mihin vois asennella ehkä erikseen VSCoden.
Aiemmin tullut itse vaihdeltua myös Windows/Ubuntu välillä, niin erillisillä koneilla, dualbootilla, kuin virtualboxillakin. Mutta nykyään WSL2 Ubuntun päällä kaikki. Integraatio VSCoden ja Docker Desktopin kanssa toimii mainiosti ja voin lämpimästi suositella. Ainoa suora miinus tulee siitä, että välillä jostain mystisestä syystä WSL:n kautta olevat latausnopeudet netistä on todella tahmaisia. Erilaisia korjauskikkoja on testailtu, mutta mitään lopullista ratkaisua ei ole löytynyt. Ongelma tosin esiintyy melko harvoin, joten ei välttämättä iso juttu. Saattaa myös olla laitteisto/ajurispesifi juttu, eli ei välttämättä edes vaivaa kaikkia.
 
Liittynyt
16.11.2020
Viestejä
2 565
Aiemmin tullut itse vaihdeltua myös Windows/Ubuntu välillä, niin erillisillä koneilla, dualbootilla, kuin virtualboxillakin. Mutta nykyään WSL2 Ubuntun päällä kaikki. Integraatio VSCoden ja Docker Desktopin kanssa toimii mainiosti ja voin lämpimästi suositella. Ainoa suora miinus tulee siitä, että välillä jostain mystisestä syystä WSL:n kautta olevat latausnopeudet netistä on todella tahmaisia. Erilaisia korjauskikkoja on testailtu, mutta mitään lopullista ratkaisua ei ole löytynyt. Ongelma tosin esiintyy melko harvoin, joten ei välttämättä iso juttu. Saattaa myös olla laitteisto/ajurispesifi juttu, eli ei välttämättä edes vaivaa kaikkia.
Hyvä kuulla :thumbsup:

Jos saa vielä udella, niin onkos sulla X-server asennettuna tuonne Ubuntuun, ts. ajatko graafisia sovelluksia suoraan sieltä Ubuntusta vai miten? Vai siis sullakin nuo duunisoftat Windowsissa ja työskentely tapahtuu muuten tuolla virtuaalikoneessa?

Kävin latailemassa jo jotkut NVidian ajurit graafisten sovellusten ajamiseksi WSL:ssä ja saan esim. tuon Idean käynnistymään suoraan WSL:stä, mutta vähän kökköä, kun pitäs starttailla se prosessi taustalle ja jos epähuomiossa suljet WSL:n terminaali-ikkunan, niin sulkeutuu myös Idea jne. Eikä tuon WSL:stä startatun IDE:n ikkunan venyttely oo kovin mukavaa (eikä se tottele myöskään tota Windowsin automaattista ruutuun sovittamista).
 
Viimeksi muokattu:
Liittynyt
17.10.2016
Viestejä
5 658
Hyvä kuulla :thumbsup:

Jos saa vielä udella, niin onkos sulla X-server asennettuna tuonne Ubuntuun, ts. ajatko graafisia sovelluksia suoraan sieltä Ubuntusta vai miten? Vai siis sullakin nuo duunisoftat Windowsissa ja työskentely tapahtuu muuten tuolla virtuaalikoneessa?

Kävin latailemassa jo jotkut NVidian ajurit graafisten sovellusten ajamiseksi WSL:ssä ja saan esim. tuon Idean käynnistymään suoraan WSL:stä, mutta vähän kökköä, kun pitäs starttailla se prosessi taustalle ja jos epähuomiossa suljet WSL:n terminaali-ikkunan, niin sulkeutuu myös Idea jne. Eikä tuon WSL:stä startatun IDE:n ikkunan venyttely oo kovin mukavaa (eikä se tottele myöskään tota Windowsin automaattista ruutuun sovittamista).
En aja graafisia sovelluksia Ubuntun päällä. VSCodessa on remote-mode, mikä ottaa siis yhteyden "pellin alla" tuonne WSL:n päähän, ja itse VSCode siis pyörii natiivisti Windowsissa. Käyttökokemus IDE:n osalta on siis käytännössä identtinen sen kanssa että devaisin VSCodella Windowsin päällä. Ei siis esimerkiksi ole tarvetta erikseen avata WSL:n terminaali-ikkunaa, vaan ihan vaan käynnistän VSCoden.

Käytännössä kaikki muu sitten tapahtuukin komentoriviltä, pääasiassa käyttäen VSCoden integroitua terminaalia, mikä ajaa asiansa oikein hyvin. Mutta voisi tohon tietty erillisenkin terminaalin avata jos kokee tarpeelliseksi.
 
Liittynyt
07.01.2021
Viestejä
678
Minulla on kotiprojektissa samanlainen setuppi. Asensin myös eilen työläppäriin kun uudessa on sen verran uudempi Windows että siihen WSL2:n sai. Siinä vaan tuli ilmeisesti VPN:n kanssa ongelmia eikä esimerkiksi apt toimi ollenkaan.

Mutta minulla oli kotonakin pelkästään Linux kotikoneessa vuosia kunnes koneen päivityksen yhteydessä nakkasin siihen Windowsin ja WSL:n ja hyvin on pelannut.

Muutaman kerran on käynnistämisen jälkeen ollut Windowsin partiot hukassanä, mutta siihen auttaa WSL --shutdown ja uudelleen käynnistys.

Graafisiakin kilkkeitä saa ajettua, itse käytän gvimiä. Vaatii yhden palikan käynnistämistä tosin. Koodaaminen tosiaan remote extemsionilla.
 
Liittynyt
14.10.2017
Viestejä
620
Mä kokeilin joskus viime vuonna WSL2:ta ja löysin heti ainakin kaksi ongelmaa, jotka käytännössä estivät WSL2:n käytön omalla kohdallani.

Ensinnäkin, Windowsissa piti vaihtaa joku virtualisointiin liittyvä asetus, minkä jälkeen VirtualBox ei toiminut ollenkaan. Eli ei ollut mahdollista käyttää WSL2:ta ja VirtualBoxia samaan aikaan (tai edes eri aikaan mutta samalla käynnistyskerralla). Tämä ei tietenkään kaikille ole mikään vakava ongelma. En tiedä onko tilanne vielä sama.

Toinen ongelma oli GPU:n toimimattomuus. Jonkinlainen (experimentaalinen) tuki Nvidian laitteille ja CUDA:lle yms. oli kai olemassa, mutta tulin siihen tulokseen että ei ne toimi läheskään yhtä hyvin kuin oikeassa Linuxissa. Jossain Nvidian foorumillakin sanottiin että kaikki ei toimi WSL2:ssa vaikka ehkä periaatteessa olisi pitänyt. En tiedä tämänkään asian nykyistä asianlaitaa. Kertokaa jos teillä on tuoreempaa tietoa.
 
Liittynyt
17.10.2016
Viestejä
1 115
En tiedä tämänkään asian nykyistä asianlaitaa. Kertokaa jos teillä on tuoreempaa tietoa.
Minun ymmärtääkseni kaikkea tarvittavaa ajuria ym. toiminnallisutta ei ole vielä kelpuutettu kerneliin (ja/tai Mesaan?). En ole sen tarkemmin seurannut mutta vahva muistikuva että luin Phoronixista jotakin aiheesta tässä ~kuukauden sisään.
 
Liittynyt
16.11.2020
Viestejä
2 565
Mä kokeilin joskus viime vuonna WSL2:ta ja löysin heti ainakin kaksi ongelmaa, jotka käytännössä estivät WSL2:n käytön omalla kohdallani.

Ensinnäkin, Windowsissa piti vaihtaa joku virtualisointiin liittyvä asetus, minkä jälkeen VirtualBox ei toiminut ollenkaan. Eli ei ollut mahdollista käyttää WSL2:ta ja VirtualBoxia samaan aikaan (tai edes eri aikaan mutta samalla käynnistyskerralla). Tämä ei tietenkään kaikille ole mikään vakava ongelma. En tiedä onko tilanne vielä sama.

Toinen ongelma oli GPU:n toimimattomuus. Jonkinlainen (experimentaalinen) tuki Nvidian laitteille ja CUDA:lle yms. oli kai olemassa, mutta tulin siihen tulokseen että ei ne toimi läheskään yhtä hyvin kuin oikeassa Linuxissa. Jossain Nvidian foorumillakin sanottiin että kaikki ei toimi WSL2:ssa vaikka ehkä periaatteessa olisi pitänyt. En tiedä tämänkään asian nykyistä asianlaitaa. Kertokaa jos teillä on tuoreempaa tietoa.
Googlasin vaan pikaiseen aamulla ja jos oikeasti tarvis käyttää rinnan, niin pitäs kokeilla, mutta ilm. VirtualBoxia ja WSL2:ta pitäs pystyä ajamaan nykyisellään rinnan, kunhan on riittävän tuore VirtualBoxin versio. Jäi kyllä vähän epäselväksi, että tarviiko vai eikö tarvii jotain kikkakolmosia Windowsin buuttikonffiin.

Tuosta GPU:sta, niin latailin ite ajurit NVidian sivuilta ja testasin sen verran, että sain tuon Idean käyntiin WSL:stä, mutta sen tarkemmin en osaa tuostakaan sanoa. Aika vähän keksin duunikäytössä tarvetta sille, että pitäs saada WSL:stä käyntiin jotain sellaista graafista käyttöliittymää kaipaavaa, mitä en vois Winkkariin asentaa. Täällä NVidian dokkarit WSL-tuesta: CUDA on WSL :: CUDA Toolkit Documentation

Jos tekisin useampaa asiakkuutta, niin tykkäisin varmaan kyllä eriyttää hommat eri VirtualBox-koneille. Ja entistä enemmän, jos tarvii jotain lokaaleja AWS-, Kubernetes- yms. konffeja ympäristöihin. Niiden kanssa on turhan helppo sekoilla, jos olis kaikki samassa tiedostojärjestelmässä.
 
Liittynyt
01.01.2018
Viestejä
1 117
Miten tuon NextJS:n saa toimimaan tailwindin dark moden kanssa että se ensin lataa <html class="dark"> tagin, eikä pelkän <html> tagin, jos dark mode on päällä. _document.tsx voi laittaa ensin <html class="dark">, mutta sitten on aina dark mode aluksi päällä ennen kuin selain katsoo localstoragesta mikä pitäisi olla.
JavaScript:
useEffect(document.documentElement.classList.add("dark");)
esim. index.tsx:n sisällä toimii liian hitaasti, eli selain saa pelkän <html> tagin ensiksi ja vaihtaa sitten vasta <html class="dark">. Googlella olen toki yrittänyt etsiä miten tämä on mahdollista, mutta ei ole onnistunut.
 
Liittynyt
06.11.2016
Viestejä
1 748
Miten tuon NextJS:n saa toimimaan tailwindin dark moden kanssa että se ensin lataa <html class="dark"> tagin, eikä pelkän <html> tagin, jos dark mode on päällä. _document.tsx voi laittaa ensin <html class="dark">, mutta sitten on aina dark mode aluksi päällä ennen kuin selain katsoo localstoragesta mikä pitäisi olla.
JavaScript:
useEffect(document.documentElement.classList.add("dark");)
esim. index.tsx:n sisällä toimii liian hitaasti, eli selain saa pelkän <html> tagin ensiksi ja vaihtaa sitten vasta <html class="dark">. Googlella olen toki yrittänyt etsiä miten tämä on mahdollista, mutta ei ole onnistunut.
En edes selvinpäin ymmärtänyt riviäkään tästä, mutta koodaankin (nykyään) vain angularia :rofl2:
 
Liittynyt
18.10.2016
Viestejä
54
Miten tuon NextJS:n saa toimimaan tailwindin dark moden kanssa että se ensin lataa <html class="dark"> tagin, eikä pelkän <html> tagin, jos dark mode on päällä. _document.tsx voi laittaa ensin <html class="dark">, mutta sitten on aina dark mode aluksi päällä ennen kuin selain katsoo localstoragesta mikä pitäisi olla.
JavaScript:
useEffect(document.documentElement.classList.add("dark");)
esim. index.tsx:n sisällä toimii liian hitaasti, eli selain saa pelkän <html> tagin ensiksi ja vaihtaa sitten vasta <html class="dark">. Googlella olen toki yrittänyt etsiä miten tämä on mahdollista, mutta ei ole onnistunut.
Onko ongelma nyt se, että sun koodi ei osaa katsoa localstoragesta, että esiintyykö siellä joku arvo, ennen kuin renderöi sivuston?
 
Liittynyt
01.01.2018
Viestejä
1 117
Onko ongelma nyt se, että sun koodi ei osaa katsoa localstoragesta, että esiintyykö siellä joku arvo, ennen kuin renderöi sivuston?
Juuri näin, pitäisi saada tuo arvo localstoragesta ennen kuin alkaa selain alkaa rendaamaan. Nextjs tietty tekee ensimmäisen avattavan sivun serverin puolella niin se vaikeuttaa tätä ongelmaa.

EDIT:

Googlailin vähän laajemmin ja sain sovellettua tämmöisen koodin joka korjaa ongelman.

JavaScript:
import { Html, Head, Main, NextScript } from "next/document";

export default function Document() {
  return (
    <Html>
      <Head />
      <body className="font-sans bg-slate-100 dark:bg-gray-800 transition-colors duration-1000">
        <Main />
        <script
          dangerouslySetInnerHTML={{
            __html: `
    if (
      localStorage.theme === "dark" ||
      (!("theme" in localStorage) &&
        window.matchMedia("(prefers-color-scheme: dark)").matches)
    ) {
      document.documentElement.classList.add("dark");
    } else {
      document.documentElement.classList.remove("dark");
    }`,
          }}
        />

        <NextScript />
      </body>
    </Html>
  );
}
 
Viimeksi muokattu:
Liittynyt
14.10.2017
Viestejä
620
Käytättekö te ammattilaiset UML-kaavioita suunnittelun apuna? Jos kyllä, niin millä softalla teette UML-kaaviot? Kokeilin Umbrelloa, mutta se on aika buginen.
 
Liittynyt
21.10.2016
Viestejä
56
Käytättekö te ammattilaiset UML-kaavioita suunnittelun apuna? Jos kyllä, niin millä softalla teette UML-kaaviot? Kokeilin Umbrelloa, mutta se on aika buginen.
Kannattaa tsekata myös PlantUML. Tuolla voi kuvata erinäköisiä kaavioita tekstinä, joka helpottaa kaavioiden versionhallintaa. Esim. GitLab osaa rendata PlantUML-kaavioita, jotka on kirjoitettu suoraan Markdown-tiedostoon.
 
Liittynyt
05.11.2016
Viestejä
3 828
Kannattaa tsekata myös PlantUML. Tuolla voi kuvata erinäköisiä kaavioita tekstinä, joka helpottaa kaavioiden versionhallintaa. Esim. GitLab osaa rendata PlantUML-kaavioita, jotka on kirjoitettu suoraan Markdown-tiedostoon.
Toinen vastaava on Mermaid, joka on tuettu myös Gitlabissa, Githubissa ja Azure Devopsissa.

Hyvin harvoin tulee kyllä mitään varsinaista UML:ää tehtyä. Korkeintaan generoitua kuva ja piirrettyä yksinkertaistettu (lue: ihmisen tulkittavissa oleva) versio sen pohjalta.
 
Liittynyt
07.01.2021
Viestejä
678
Itse en koe UML:ää kovin hyödyllisenä. Tilakoneisiin käytän joskus tilasiirtymäkaaviota (STD, state transit diagram), tietorakenteen funtsimiseen entiteettirelaatiokaaviota (ER, entity relationship) ja aika usein on tarvetta vääntää sekvenssikaavio (sequence diagram).

Confluence taitaa myös tukea Mermaidia. Tekstipohjaiset ratkaisut on myös itsellä ensisijainen ratkaisu, paljon helpompi muokata. Nuo yllä mainitsemani teen usein ihan kynällä ja paperilla. Sekvenssikaavio pitää tosin aika usein laittaa dokumentaatioonkin mukaan.
 
Liittynyt
19.10.2016
Viestejä
3 411
Yksinkertaistettua UML:ää tulee käytettyä hahmottelun apuna. Ihan hyödyllisiä käsitteitä siinä on oman ajattelun tarkistamiseksi/hiomiseksi.

Työkalut tosin vähän kökköjä. Meillä vuodelta 2010 tjsp, Visio plugari, jos tarvitsee tehdä jotain vaativampaa. Aputoimintoja propsien(++) lisäämiseen, UI näytön reunassa vipujen valitsemiseen, lukumääräsuhteiden muuttamiseen yms. Ja muutokset tallentuu kantaan. Uudessa Visiossa sentään jotain noita, mutta ei sitä vieläkään mielellään käytä.
 
Liittynyt
07.01.2021
Viestejä
678
Niin, ja itse tosiaan paljon "piirtelen" Graphvizillä. Tuo on erityisen kätevä koska voin tehdä kaavion vaikka ohjelmallisesti. Olen esimerkiksi kutsupinoja dokumentoinut tällä tavalla. Koodiin vaan debuggiprinttejä, joista generoidaan Graphviz-dokumentti.
 
Liittynyt
16.11.2020
Viestejä
2 565
Lucidchartia ei oo vielä mainittu. Ilmaisversio on tarjolla, mutta taitaa olla melkoisen rajoitettu. Lucidchartilla piirreltiin arkkitehtuurikuvia (Kubernetes, AWS-pilvi) yhdessä vanhemmassa projektissa. Kuvia sai sit upotettua Confluenceen jonkun valmiin integraation kautta.

PlantUML on ollut käytössä. Sillä on tehty jotain sekvenssikaavioita, integraatiokuvauksia yms. Minä lähinnä tehnyt pieniä muokkauksia olemassa oleviin. Nämätkin olivat upotettuina Confluenceen.

Draw.io kanssa jotenkin tuttu. Silläkin olen koittanut piirrellä jotain arkkitehtuurikuvauksia. Se on ainakin tosi nopea ottaa käyttöön, jos tarvii vaan nopsaan saada jotain tehdyksi.
 
Viimeksi muokattu:
Liittynyt
14.10.2017
Viestejä
620
Miksi cmake ei anna mitään virheilmoitusta tai edes varoitusta jos typottaa build typen? Eli jos suoritan vaikka
Koodi:
cmake -DCMAKE_BUILD_TYPE=RelWithDebugInfo ..
niin kaikki näyttää toimivan ja ohjelman voi sen jälkeen kääntää, mutta oikeasti kääntäjälle ei mene mitään optimointi- tai debug-flaggeja, koska tuossa build typessä on typo (Pitäisi olla RelWithDebInfo). Teenkö mä jotain vääärin tai eri tavalla kuin muut? Luulisi, että tämä olisi yleinen ongelma. Varoitus tulee asianmukaisesti esim. silloin jos typottaa tuon muuttujan (CMAKE_BUILD_TYPE) nimen.
 
Liittynyt
17.10.2016
Viestejä
1 115
Miksi cmake ei anna mitään virheilmoitusta tai edes varoitusta jos typottaa build typen? Eli jos suoritan vaikka
Koodi:
cmake -DCMAKE_BUILD_TYPE=RelWithDebugInfo ..
niin kaikki näyttää toimivan ja ohjelman voi sen jälkeen kääntää, mutta oikeasti kääntäjälle ei mene mitään optimointi- tai debug-flaggeja, koska tuossa build typessä on typo (Pitäisi olla RelWithDebInfo). Teenkö mä jotain vääärin tai eri tavalla kuin muut? Luulisi, että tämä olisi yleinen ongelma. Varoitus tulee asianmukaisesti esim. silloin jos typottaa tuon muuttujan (CMAKE_BUILD_TYPE) nimen.
Tälle on useampi syy. Ehkäpä pääasiallinen syy on se että build typejä voi määritellä vapaasti niin paljon kuin haluaa noiden muutaman sisäänrakennetun lisäksi, periaatteessa vaikkapa lennosta komentoriviltä. Eikä niitä tarkisteta koska tämä on niitä asioita joissa ilmeisesti oletetaan että käyttäjän oli tarkoituskin tehdä niin.

Seuraa vuosia build/integration engineerinä liikaa nähneen katkera näkemys. Cum grano salis.
Mutta pohjimmiltaan syy on se että CMaken kehitys on rönsyillyt joka suuntaan kun on yritetty kattaa kaikenlaisia käyttötapauksia täysin ymmärtämättä miten se olisi kannattanut tehdä. Toiminnallisuutta on ajan mittaan muutettu osin järkevämpään suuntaan, osin vähemmän järkevään yrittäen samalla pitää taaksepäinyhteensopivuus mielessä. Kaikkia ei silti ole osattu tai pystytty ottamaan huomioon.

Lopputuloksena sekava soppa joka käyttäytyy toisinaan odottamattomilla tavoilla, dokumentointi sinne päin ja kiitos Turing-täydellisen DSL:n, sillä yritetään usein tehdä asioita typerillä tavoilla. Ja käyttää typeriin tarkoituksiin.

Mitä enemmän CMakea käyttää, sitä enemmän se ärsyttää. Silti kelvollinen tarkoitukseensa, kunhan vaan käyttäjä tietää mitä tekee eikä tupella jotakin sinne päin joka näyttää tekevän mitä halutaan.
 

finWeazel

Chief Karpfen
Liittynyt
15.12.2019
Viestejä
7 801
Miksi cmake ei anna mitään virheilmoitusta tai edes varoitusta jos typottaa build typen? Eli jos suoritan vaikka
Koodi:
cmake -DCMAKE_BUILD_TYPE=RelWithDebugInfo ..
niin kaikki näyttää toimivan ja ohjelman voi sen jälkeen kääntää, mutta oikeasti kääntäjälle ei mene mitään optimointi- tai debug-flaggeja, koska tuossa build typessä on typo (Pitäisi olla RelWithDebInfo). Teenkö mä jotain vääärin tai eri tavalla kuin muut? Luulisi, että tämä olisi yleinen ongelma. Varoitus tulee asianmukaisesti esim. silloin jos typottaa tuon muuttujan (CMAKE_BUILD_TYPE) nimen.
Moni määrittelee omia muuttujia -D vivulla, joita sitten koodissa ifdeffataan tms. CMakella ei ole mitään saumaa tietää onko käyttäjä halunnut määritellä uuden muuttujan vai typoja kyseessä.

Jos haluaa next level päänsärkyä niin cmake kuikkaan ja bazel tilalle. Siitä alkaa ... päänsärky ... joka ei lopu ennen kuin maailmassa on vain bazel jäljellä.
 
Liittynyt
20.06.2017
Viestejä
1 853
Olisi tuossa 6000+ riviä (noin 1 MB) csv-dataa josta on tarkoitus suodattaa pieni joukko rivejä ja piirtää kolmen sarakkeen arvojen perusteella allaolevan mukainen diagrammi. Ja tämä tietenkin webbisivulla. Excelissä, josta esimerkki, onnistuu hyvin pienellä vaivalla. Perinteinen ratkaisu olisi tietokanta palvelimelle ja kyselyn tuloksien piirtoon Google Charts, Chart.js, d3.js tms. Mutta tuo datamäärä on nykytekniikalle niin pieni että olisi ihan sama lukea kerralla muistiin ja hoitaa kaikki selaimen puolella. Siis Vue tms. käyttöliittymä filtteröintiin ja tulosdata piirtotyökalulle.

Olisiko tuoreita näkemyksiä em. työkalujen, tai vastaavien, sopivuudesta hommaan vai onko niin perusjuttu että kaikilla onnistuu? Data ei muutu eli sen voisi muuttaa vaikka jsoniksi jos se helpottaa.

1653323919830.png
 
Liittynyt
18.07.2020
Viestejä
91
Olisiko tuoreita näkemyksiä em. työkalujen, tai vastaavien, sopivuudesta hommaan vai onko niin perusjuttu että kaikilla onnistuu? Data ei muutu eli sen voisi muuttaa vaikka jsoniksi jos se helpottaa.
Itse tekisin juuri noin kuten mainitsit, eli tiedosto vaikkapa json muodossa palvelimelle josta sen voi lukea Jqueryn fetchillä urlin kautta (tai natiivi javascriptillä ajaxilla jos haluaa), ja sitten käyttää Chart.js:ää käyrän piirtoon. Ei tarvitse tietokantoja eikä mitään monimutkaisia js-kirjastoja/kehitysympäristöjä käyttää välttämättä. Simppeli käyttöliittymä onnistuu ihan natiivi html+css.
 
Viimeksi muokattu:
Liittynyt
07.01.2021
Viestejä
678
Tai sitten vaikka Python + matplotlib -kombolla tekee kuvan ja lisää sen sivulle.
 
Liittynyt
21.10.2016
Viestejä
9 054
Itse tekisin juuri noin kuten mainitsit, eli tiedosto vaikkapa json muodossa palvelimelle josta sen voi lukea Jqueryn fetchillä urlin kautta (tai natiivi javascriptillä ajaxilla jos haluaa), ja sitten käyttää Chart.js:ää käyrän piirtoon. Ei tarvitse tietokantoja eikä mitään isoja js-kirjastoja/kehitysympäristöjä käyttää välttämättä.
Juurikin näin, jos ei ole tarve datalle tehdä mitää muuta kuin suodattaa & esittää, javascript itsessää nykyää jo sisältää kaikennäköistä kivaa. Jos pitää vielä järjestellä ja/tai suodattaa monimutkaisemmin, nii voipi suorituskyvyssä näkyä riippuen toteutuksesta. Mut noin pienellä datamäärällä huonommallaki toteutuksella javascript selvinnee helposti.
 
Liittynyt
03.07.2018
Viestejä
347
raspberry zero w:hen pitäisi laittaa pinneihin nappi, se ei ole ongelma, mutta saako jotenkin pythonilla tehtyä ohjelman joka tuota yhtä nappia painettaessa lähettää aktiiviseen ikkunaan näppäinpainalluksen, ja eri näppäinpainalluksen jos nappia tuplakilkkaa ja sammuttaa koneen hallitusti jos nappia pitää pohjassa kolmen sekunnin ajan ?
 
Liittynyt
23.10.2016
Viestejä
658
Saako pelkällä CSS:llä tehtyä sellaista video-iframea, jonka leveys muuttuu korkeuden muuttuessa, vai vaatiiko se Javascriptiä? Korkeushan muuttuu nätisti leveyden mukaan, mutta mites toisinpäin?

Tällaista ratkaisua haen: linkki. Kun tuolla muuttaa sivun korkeutta niin video kapenee kuvan mukana.
 
Liittynyt
21.10.2016
Viestejä
9 054
Saako pelkällä CSS:llä tehtyä sellaista video-iframea, jonka leveys muuttuu korkeuden muuttuessa, vai vaatiiko se Javascriptiä? Korkeushan muuttuu nätisti leveyden mukaan, mutta mites toisinpäin?

Tällaista ratkaisua haen: linkki. Kun tuolla muuttaa sivun korkeutta niin video kapenee kuvan mukana.
Esimerkissäsi on kait 100% width&height. Ei lähtökohtaisesti vaadi javascriptiä eikä pitäiskään. Mikä on ongelma?
 
Viimeksi muokattu:
Liittynyt
21.10.2016
Viestejä
9 054
Ongelma on mulla se, että jos korkeussuunnassa muutan sivun kokoa, niin video ei pienene vaan menee alareunasta yli.
Jos voit/saat, niin laita html ja css filut tänne, nii varmaan löytyy ongelmaan (voi olla useitaki ongelmia) syy. Mieluusti toki spoiler ja kooditagien alle tai linkki itse sivustoon.
 
Liittynyt
03.03.2018
Viestejä
1 200
Ongelma on mulla se, että jos korkeussuunnassa muutan sivun kokoa, niin video ei pienene vaan menee alareunasta yli.
On tehtävissä CSS:llä. Ei tarvi erityisempiä kikkailuja tai mitään JS taustalle. Tässä linkissä esimerkiksi tuollainen tehty kuvalla.


Ongelmia yleensä videoiden kanssa tulee, kun halutaan myös samalla oikeanlainen aspect ratio säilyttää. Näissä suosittelen tekemään jonku containerin sille videolle ensin. Korkeuden voi säätää vaikka auto asetuksella, kunhan width on annettu. Seuraavassa linkissä lukuisia esimerkkejä, joilla haluttu lopputulos saatavilla. Koodia näkemättä vaikea tarkemmin ottaa kantaa. Mutta laittamassasi esimerkissäkin se on sijoitettu toisen containerin sisälle ja hyödynnetty max-width, max-height asetuksia. Eli pienellä testailulla selviää kyllä.

 
Liittynyt
23.10.2016
Viestejä
658
Jos voit/saat, niin laita html ja css filut tänne, nii varmaan löytyy ongelmaan (voi olla useitaki ongelmia) syy. Mieluusti toki spoiler ja kooditagien alle tai linkki itse sivustoon.
Omassa tilanteessa mulla on siis Youtube-tyyliin gridi täynnä thumbnaileja. Kun thumbnailia klikkaa, niin avaan modalin, jossa on sisällä iframe, joka taas pitää sen videon sisällään. Tällä hetkellä siis video skaalautuu halutusti leveyssuunnassa, mutta pystysuunnassa ei. Seuraavaksi koodi. Käytän saitilla svelteä, mutta

Modal.svelte
HTML:
<div on:click|self class="modal">
    <div class="content">
        <svelte:component this={modalContent} {modalProps} />
    </div>
</div>

<style>
    .modal {
        background-color: rgba(0, 0, 0, 0.5);
        position: absolute;
        top: 0;
        left: 0;
        width: 100%;
        height: 100%;
        display: flex;
        justify-content: center;
        align-items: center;
    }

    .content {
        background-color: var(--black1);
        border: 2px solid var(--black3);
        border-radius: 4px;
        width: 80%;
        height: 80%;
    }
</style>
ModalContent.svelte
HTML:
<div class="container">
    <div class="video-wrapper">
        <iframe
            src="https://www.vidska.com"
            frameborder="0"
            scrolling="no"
            allowfullscreen="allowfullscreen"
        />
    </div>
</div>

<style>
    .container {
        width: 100%;
        height: 100%;
    }

    .video-wrapper {
        width: 100%;
        height: 100%;
    }

    iframe {
        width: 100%;
        height: 100%;
    }
</style>
 
Liittynyt
23.10.2016
Viestejä
658
Jaa. Nyt se lähtikin toimimaan, kun laitoin .content-luokkaan korkeuden ja leveyden vh-yksikköinä prosenttien sijaan. :hmm: Miksei se prosenteilla toimi?
 
Liittynyt
03.03.2018
Viestejä
1 200
Jaa. Nyt se lähtikin toimimaan, kun laitoin .content-luokkaan korkeuden ja leveyden vh-yksikköinä prosenttien sijaan. :hmm: Miksei se prosenteilla toimi?
Luultavasti toimii prosentteina video playeri, jos jossain aiemmissa parent diveissä määrittelet tarkemmin sen containerin koon prosenttien sijaan (käyttäen esim. vh vw tai px ja erityisesti sille korkeudelle). Eli ne on aina suhteessa parent elementtiin. Height on rantumpi nuiden suhteen, sillä se katsoo enempi contenttia sen sivun varsinaisen korkeuden sijaan.

Tässä linkissä on asia aika hyvin selitetty heti solution 1 kohdassa:

"However, the height of a block element depends on its content unless you specify a specific height. So there is feedback between the parent and child where height is concerned and saying height: 50% doesn't yield a well defined value unless you break the feedback loop by giving the parent element a specific height. "

Eli tiivistettynä: Et ollut määritellyt missään, että paljonko tuo 100% korkeus on. Vh arvon käyttäminen antaa lukeman pixeleinä viewportin korkeuden mukaan, jonka vuoksi myös sisemmät containerit alkavat ymmärtämään prosenttiarvoja. Sinun antamassa esimerkissäkin videoplayerin divi pitää sisällään: max-height: 80vh.
 
Viimeksi muokattu:
Liittynyt
23.10.2016
Viestejä
658
Luultavasti toimii prosentteina video playeri, jos jossain aiemmissa parent diveissä määrittelet tarkemmin sen containerin koon prosenttien sijaan (käyttäen esim. vh vw tai px ja erityisesti sille korkeudelle). Eli ne on aina suhteessa parent elementtiin. Height on rantumpi nuiden suhteen, sillä se katsoo enempi contenttia sen sivun varsinaisen korkeuden sijaan.

Tässä linkissä on asia aika hyvin selitetty heti solution 1 kohdassa:

"However, the height of a block element depends on its content unless you specify a specific height. So there is feedback between the parent and child where height is concerned and saying height: 50% doesn't yield a well defined value unless you break the feedback loop by giving the parent element a specific height. "

Eli tiivistettynä: Et ollut määritellyt missään, että paljonko tuo 100% korkeus on. Vh arvon käyttäminen antaa lukeman pixeleinä viewportin korkeuden mukaan, jonka vuoksi myös sisemmät containerit alkavat ymmärtämään prosenttiarvoja. Sinun antamassa esimerkissäkin videoplayerin divi pitää sisällään: max-height: 80vh.
Joo, no nyt tuo tuntuu aika selvältä. Tai tuntui siihen asti kunnes huomasin, että tuossa mun .content-luokassa width pitää olla määritettynä vh-yksiköllä, jotta tämä toimii. Nyt mulla on siis height 100% ja width 100vh ja näin toimii. Jos käännän noi toisinpäin, niin sitten ei taas toimi.
 
Liittynyt
03.07.2018
Viestejä
347
Mitä backend-tekniikoita & koodikieltä kannattaisi opiskella jos haluaisi tehdä backendin jollain muulla tekniikalla kuin php&mysql ( sekä apache/nginx - perus webhotelli tai google app engine) ?
Ja miten nämä bäckend-tekniikat skaalautuu esim. tuhannen käyttäjän kokoluokkaan ja mitä ne maksaa ?
Php & mysql on ollut helppo ja halpa, mutta tuntuu että se on nykyisin halveksittu
 
Toggle Sidebar

Uusimmat viestit

Statistiikka

Viestiketjut
237 413
Viestejä
4 160 305
Jäsenet
70 408
Uusin jäsen
allun90

Hinta.fi

Ylös Bottom