Pieniä kysymyksiä ohjelmoinnista

sed ei osaa \d, käytä [[:digit:]], tai [0-9]

Koodi:
$ sed -E 's/.*\((.*)\,.*([[:digit:]]{4})\)/\1 (\2)/' <<< "Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. (Kissakala seikkailee jälleen, Foobar 2023)"
Kissakala seikkailee jälleen (2023)
Tuo on sellainen miina mihin itsekin on tullut monesti astuttua. noita \d ja vastaavia ei välttämättä hirveästi kannata käyttää ellei ole ihan varma että kyseinen regex kyseisen osaa. Itse olen jokusen kerran samaan miinaan polkaissut ja sitten esim [0-9] muuttamalla on lähtenyt toimimaan. Itse olen todennut että noita lyhimpiä muotoja ei kannata käyttää kuin regex-golfissa.
 
sed ei osaa \d, käytä [[:digit:]], tai [0-9]

Koodi:
$ sed -E 's/.*\((.*)\,.*([[:digit:]]{4})\)/\1 (\2)/' <<< "Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. (Kissakala seikkailee jälleen, Foobar 2023)"
Kissakala seikkailee jälleen (2023)
Kiitoksia. Ois saattanut omin avuin mennä tovi, kas kun ei googletellessa tullut vastaan.
 
Kiitoksia. Ois saattanut omin avuin mennä tovi, kas kun ei googletellessa tullut vastaan.

GNU sed ja POSIX regexpit ovat tosiaan aika pylleröstä, heitämpä täältä sivusta toisen vaihtoehdon mitä itse käytän kun tarvitsen jotakin sedin kaltaista mutta vaadittava regexp ei ole mallia käpylehmä:
Koodi:
perl -pe "s/.*\((.*)\,.*(\d{4})\)/\1 (\2)/" <<< "Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. (Kissakala seikkailee jälleen, Foobar 2023)"

E: Vaatii luonnollisesti perlin mutta en muista edes milloin olisi tullut vastaan ympäristö josta löytyy sed mutta ei perliä...
 
1. Teettekö te "hamburger menu"n fixed vai absolute sijoituksella? fixed vaikutti ihan hyvältä vaihtoehdolta, kun tein samanlaisen kuin io techissa että se tulee tuolta sivulta.

2. Kannattaako menu tehdä niin kuin sivun ulkopuolelle, vai lisätä uusi dom node kun menu avataan ja poistaa kun suljetaan?

3. Laitoin vielä niin että menun voi sulkea takaisin navigoinnilla sekä tietty sulkemis napista tai ohi klikkaamalla. Takaisin navigointi sulkeminen on tehty query parametreillä. Onko tuosta ominaisuudesta mitään haittaa? Käytännössä mikään saitti ei toimi samalla tavalla menun osalta. Minusta se on ainakin ihan kätevä kun androidilla sulkee kaiken muutenkin takaisin gesturella.
 
Mitenkäs te pro-koodarit teette nykyiaikaisen many-to-many relaation ?

Aiemminhan se meni mysql-tietokantaan omana taulunaan ja muoto oli esim parts_machines (part_id, machine_id)
Mutta nykyiset web-sovellukset frontissa käsittelee dataa objekteina. Eli bäckendille lähtee data jsonina.
Pitäisikö relaatiot tallentaa nykyisin sovellukseen suoraan json-tekstinä. Jos taas näin on, niin eikö se vaikeuta yksinkertaisten hakujen tekemistä huomattavasti kun join täytyy tehdä jsonia parsettamalla.
Muistaakseni mariadb/mysql ei aiemmin osannut tuota tehdä helposti...
 
Mitenkäs te pro-koodarit teette nykyiaikaisen many-to-many relaation ?

Aiemminhan se meni mysql-tietokantaan omana taulunaan ja muoto oli esim parts_machines (part_id, machine_id)
Mutta nykyiset web-sovellukset frontissa käsittelee dataa objekteina. Eli bäckendille lähtee data jsonina.
Pitäisikö relaatiot tallentaa nykyisin sovellukseen suoraan json-tekstinä. Jos taas näin on, niin eikö se vaikeuta yksinkertaisten hakujen tekemistä huomattavasti kun join täytyy tehdä jsonia parsettamalla.
Muistaakseni mariadb/mysql ei aiemmin osannut tuota tehdä helposti...

Yksi mahdollinen lähestymistapa asiaan on käyttää perinteisen SQL-relaatiotietokannan sijaan jotain modernimpaa NoSQL "document oriented" tietokantaa, kuten vaikka MongoDB, johon voi puskea objektit suoraan JSON:ina ja jossa one-to-many tai many-to-many -relaatiot onnistuvat suoraan ilman ylimääräistä "välitaulua".

Esim. tuolta löytyy esimerkkiä: Many-to-Many Relationship in MongoDB - Model Intricate Data
 
Aiemminhan se meni mysql-tietokantaan omana taulunaan ja muoto oli esim parts_machines (part_id, machine_id)
Mutta nykyiset web-sovellukset frontissa käsittelee dataa objekteina. Eli bäckendille lähtee data jsonina.

Se, miten se data palautetaan clientille ei tarvitse suoraan vastata sitä, miten se data on siellä kannassa. Eli kun frontti tekee pyynnön, niin bäkkäri voi hakea relevantin datan kannasta, mankeloida sen juuri sellaiseen muotoon joka on frontin toiminnan kannalta järkevintä ja frontti sitten käsittelee vain sitä mankeloitua versiota tietämättä mitään siitä, miten se on kantaan tallennettu. Mutta olisiko sulla joku yksinkertainen esimerkki, niin voisi ehkä paremmin miettiä, mitä eri tapoja sen toteuttamiseen on?

Dataa voi ehdottomasti tallentaa jsonina kantaan, mutta siinä on aina myös huonot puolensa.
 
En ole pro koodari, mutta ainakin olen tuollaiset query builderilla www.kysely.dev kirjastolla. Frontista tulevan json voi tallentaa tuolla esim. Etsimällä ensin nimen perusteella parts_idn ja machine_idn ja tallentamalla ne js objektina jolloin esim {part_id: 23, machine-id: 16} menee parts_machine tauluun, 23 part_id sarakkeelle jne. Ulos ne saa sitten joinaamalla josta tulee js objekti tai rivi objekteja.
 
ORM on tuohon hyvä. Esimerkiksi Pythonissa SQLAlchemy. Siinä siis määritellään skeema, joka mäppäytyy tietokantaan. Mutta siinä voi määritellä myös relaatioita, esimerkiksi Kirja-taulussa voi olla relaatio Henkilö-tauluun jolloin relaatio sisältää kaikki henkilöt, jotka linkittyvät kyseiseen kirjaan. Tuo on m:n -yhteys, koska kirjalla voi olla useita kirjoittajia / kirjoittajalla voi olla useita kirjoja.

Sitten kun tuollaisen taulun sisällön dumppaa vaikka JSON:ksi, niin siellä on kiltisti kentän sisällä lista. JavaScriptille näyttää löytyvän useampia vaihtoehtoja, Sequelize, Prisma ym.
 
Jos haluaa tehdä fullstackia Reactilla, niin Next.js vai Remix? Onko kenelläkään kokemuksia molemmista? Onko jälkimmäinen tarpeeksi kypsä?
 
No siis en minä noita tarvitse jos teen Reactilla pelkän frontin, kuten olen tähän asti tehnyt. Nyt olisi ehkä toinen, pienempi projekti tiedossa, jossa minusta bäkkärin tekeminen jollain erillisillä ympäristöllä tuntuisi aika overkilliltä.

Eli siis bäkkäriin tarvitaan mm. autentikaatio ja tietokannan käsittely ja mahdollisesti muutama ulkoinen API-kutsu.
 
No siis en minä noita tarvitse jos teen Reactilla pelkän frontin, kuten olen tähän asti tehnyt. Nyt olisi ehkä toinen, pienempi projekti tiedossa, jossa minusta bäkkärin tekeminen jollain erillisillä ympäristöllä tuntuisi aika overkilliltä.

Eli siis bäkkäriin tarvitaan mm. autentikaatio ja tietokannan käsittely ja mahdollisesti muutama ulkoinen API-kutsu.
Ok. Ehkä minulta on mennyt ohi kun elin siinä luulossa että nämä eivät tee mitään muuta kuin fronttia (olen itse töissä tehnyt pari projektia Nextillä ja siinä se on kyllä ihan puhtaasti fronttina ollut).
 
Okei, ehkä sitten olen ymmärtänyt jotain väärin. On siis mahdollista tehdä Next:llä tuollainen appis, mutta ilmeisesti yleensä tuohon sekaan tungetaan Expressiä tai vastaavaa.

Mikä olisi nopein tapa tehdä simppeli appi (kourallinen näkymiä, muutamia ylläpitotoimintoja), jossa React on fronttina ja vaatimuksena LDAP ja SQL-tietokantaan pääsy? Tuo Prisma vaikuttaa hyvältä ratkaisulta tietokantaan yhteyden ottamiseksi, ja kun Nextistä löytyy routing, niin mitä tarkalleen joku Express tähän tuo?
 
Okei, ehkä sitten olen ymmärtänyt jotain väärin. On siis mahdollista tehdä Next:llä tuollainen appis, mutta ilmeisesti yleensä tuohon sekaan tungetaan Expressiä tai vastaavaa.

Mikä olisi nopein tapa tehdä simppeli appi (kourallinen näkymiä, muutamia ylläpitotoimintoja), jossa React on fronttina ja vaatimuksena LDAP ja SQL-tietokantaan pääsy? Tuo Prisma vaikuttaa hyvältä ratkaisulta tietokantaan yhteyden ottamiseksi, ja kun Nextistä löytyy routing, niin mitä tarkalleen joku Express tähän tuo?
Minun käsitykseni on että nextjs on vain serverless framework eli tietokannat pitää olla muualla. Eli joko prisma+supabase tai joku muu pilvitietokanta. Expressin kun laittaa nextjs kylkeen niin voi tietty itse hostata tietokannan.

Prisma toimii serverlessissä kai hieman hitaammin kuin noi query builderit kuten kysely.dev, on myös mahdollisuus näiden pilvitietokantojen kanssa. Expresillä tätä serverless hidastumista ei ole prisman kanssa.
 
Tässä sekoittuu nyt kaksi asiaa: backend ja frontend. Next kun voi renderöidä serverillä, ei varsinaisesti tarvitse erillistä backendiä vaan se voi toimia monoliittina. Sen vahvimpia puolia on kuitenkin että se voi toimia hybridinä joka renderöi fronttipalvelimella saitin nopeasti ja samalla osaa hakea dataa joustavasti serverikutsuilla taustapalvelimilta. Next ei kuitenkaan itse sitä tietokanta- ja autentikaatiopuolta hoida.

En tiedä onko tuohon mitään helppa hopealuotia, kun ldap autentikaatio ei ole ihan yleisimpiä use caseja esim. blogaajille. Ehkä joku Gatsby starter löytyisi suht valmiina tmv.
 
Next.js ei ole tuttu, mutta tämä "Api routes" kuulostaa siltä että sillä voi toteuttaa backendiin frontin tarvitsemat api-endpointit:

Eli jos tuo täyttää omat vaatimukset niin ei ole tarvetta Expressille tai muulle erilliselle http-serverille.
 
En tiedä kuuluuko tännä, mutta olettaisin täälä olevan asiasta tietäviä. Eli voinko lähettää Nodemcu 3V kortilta dataa (tx) sarjaportissa 5V arduino megalle (rx) suoraan vai pitäisikö välissä tehdä jotenkin jännitteen nosto?
 
En tiedä kuuluuko tännä, mutta olettaisin täälä olevan asiasta tietäviä. Eli voinko lähettää Nodemcu 3V kortilta dataa (tx) sarjaportissa 5V arduino megalle (rx) suoraan vai pitäisikö välissä tehdä jotenkin jännitteen nosto?
Kysymys varmaan soveltuisi paremmin elektroniikka-alueelle.

Voit lähettää suoraan, 5V sarjaportit toimivat kyllä 3.3V sarjaportin signaalitasoilla. Toiseen suuntaan sitten pitääkin tehdä jännitteenmuunnos koska 3V sarjaportit eivät yleensä tykkää 5V signaalitasosta mutta tuo muunnos on sentään helppo tehdä parilla vastuksella.
 
Nodemcu lähettää tämän sarjaportissa, alempi koodi Arduino mega vastaan ottaa toisen sarjan RX0 portissa ja toisen RX1 portissa, miksi saan sarjamonitorissa testi1=4 ja testi2=4 ja väillä taas kumpikin on 7?


C++:
#include <EasyTransfer.h>
EasyTransfer ET1, ET2;

float testi1;
float testi2;

struct SEND_DATA_STRUCTURE1{
float testi1;
};
SEND_DATA_STRUCTURE1 mydata1;

struct SEND_DATA_STRUCTURE2{
float testi2;
};
SEND_DATA_STRUCTURE2 mydata2;

void setup(){
  Serial.begin(9600);

ET1.begin(details(mydata1), &Serial);
ET2.begin(details(mydata2), &Serial);

  testi1 = 4;
  testi2 = 7;
}

void loop(){

  mydata1.testi1 = testi1;
  mydata2.testi2 = testi2;

  ET1.sendData();
   delay(100);
  ET2.sendData();
   delay(100);
}

C++:
#include <EasyTransfer.h>
EasyTransfer ET1, ET2;

float testi1;
float testi2;

struct RECEIVE_DATA_STRUCTURE1{
float testi1;
};

RECEIVE_DATA_STRUCTURE1 mydata1;

struct RECEIVE_DATA_STRUCTURE2{
float testi2;
};

RECEIVE_DATA_STRUCTURE2 mydata2;

void setup(){
  Serial.begin(9600);
  Serial1.begin(9600);

  ET1.begin(details(mydata1), &Serial);
  ET2.begin(details(mydata2), &Serial1);
  }
void loop(){

   if(ET1.receiveData())
 {
    Serial.print("testi1: ");
    Serial.println(mydata1.testi1); 
 delay(250);
 }

 if(ET2.receiveData())
 {
    Serial.print("testi2: ");
    Serial.println(mydata2.testi2); 
 }

    delay(200);
}
}
 
Viimeksi muokattu:
Nodemcu lähettää tämän sarjaportissa, alempi koodi Arduino mega vastaan ottaa toisen sarjan RX0 portissa ja toisen RX1 portissa, miksi saan sarjamonitorissa testi1=4 ja testi2=4 ja väillä taas kumpikin on 7?


C++:
#include <EasyTransfer.h>
EasyTransfer ET1, ET2;

float testi1;
float testi2;

struct SEND_DATA_STRUCTURE1{
float testi1;
};
SEND_DATA_STRUCTURE1 mydata1;

struct SEND_DATA_STRUCTURE2{
float testi2;
};
SEND_DATA_STRUCTURE2 mydata2;

void setup(){
  Serial.begin(9600);

ET1.begin(details(mydata1), &Serial);
ET2.begin(details(mydata2), &Serial);

  testi1 = 4;
  testi2 = 7;
}

void loop(){

  mydata1.testi1 = testi1;
  mydata2.testi2 = testi2;

  ET1.sendData();
   delay(100);
  ET2.sendData();
   delay(100);
}

C++:
#include <EasyTransfer.h>
EasyTransfer ET1, ET2;

float testi1;
float testi2;

struct RECEIVE_DATA_STRUCTURE1{
float testi1;
};

RECEIVE_DATA_STRUCTURE1 mydata1;

struct RECEIVE_DATA_STRUCTURE2{
float testi2;
};

RECEIVE_DATA_STRUCTURE2 mydata2;

void setup(){
  Serial.begin(9600);
  Serial1.begin(9600);

  ET1.begin(details(mydata1), &Serial);
  ET2.begin(details(mydata2), &Serial1);
  }
void loop(){

   if(ET1.receiveData())
{
    Serial.print("testi1: ");
    Serial.println(mydata1.testi1);
delay(250);
}

if(ET2.receiveData())
{
    Serial.print("testi2: ");
    Serial.println(mydata2.testi2);
}

    delay(200);
}
}

Tuossa ylemmässä molemmissa on sama sarjaportti, onko tarkoituksella ?
Easytransfer ei ole tuttu mutta jos ensimmäinen lähettää samalla portilla 2 eri arvoa ja vastaanottaja lukee eri porteista niin ei kuulosta ihan oikealta.
Normaali sarjaporttihan on 1-1 eli myös lähettävässä pitäisi olla 2 porttia. No joo, saman lähetyksen voi kyllä laittaa kahdelle vastaanottajalle kunhan kytkee vain tx -> 2x rx mutta en kyllä näe siinä mitään hyötyä.
 
Tuossa ylemmässä molemmissa on sama sarjaportti, onko tarkoituksella ?
Easytransfer ei ole tuttu mutta jos ensimmäinen lähettää samalla portilla 2 eri arvoa ja vastaanottaja lukee eri porteista niin ei kuulosta ihan oikealta.
Normaali sarjaporttihan on 1-1 eli myös lähettävässä pitäisi olla 2 porttia. No joo, saman lähetyksen voi kyllä laittaa kahdelle vastaanottajalle kunhan kytkee vain tx -> 2x rx mutta en kyllä näe siinä mitään hyötyä.
Nodemcu:ssa on vain yksi sarjaportti, tuo on vain testailu toista koodia varten, mutta ihmettelin vain miksi kumpikin muuttuja saa saman arvon.
 
Voi olla sitten, että ei voikkkaan toimia noin, oletin että megan RX0 portissa otetaan vastaan vain paketti mydata1 ja muuttujan testi1 arvo, RX1 portissa taas paketti mydata2 ja muuttujan testi2 arvo.
 
Voi olla sitten, että ei voikkkaan toimia noin, oletin että megan RX0 portissa otetaan vastaan vain paketti mydata1 ja muuttujan testi1 arvo, RX1 portissa taas paketti mydata2 ja muuttujan testi2 arvo.
Siellä sarjaportissa kulkee tuossa esimerkissäsi vain nuo numerot 4 ja 7 eli siinä ei kulje mitään tietoa mukana mikä muuttuja se on, sen takia nuo tulevat sikinsokinsekaisin.
 
Siellä sarjaportissa kulkee tuossa esimerkissäsi vain nuo numerot 4 ja 7 eli siinä ei kulje mitään tietoa mukana mikä muuttuja se on, sen takia nuo tulevat sikinsokinsekaisin.
Mutta kuitenkin muuttujien nimet täytyy olla kummassakin täysin samat tuosa Easytensferissa, jos toisessa on esim. test1, test2 ja test3 ja toisessa vain test1 ja test2 niin mitään ei mene perille. Käytössä myös sääasema, jossa lähetän lämpötiloja yli 10kpl ja oikeat lämpötilat menevät oikeille muuttujille.
 
Mutta kuitenkin muuttujien nimet täytyy olla kummassakin täysin samat tuosa Easytensferissa, jos toisessa on esim. test1, test2 ja test3 ja toisessa vain test1 ja test2 niin mitään ei mene perille. Käytössä myös sääasema, jossa lähetän lämpötiloja yli 10kpl ja oikeat lämpötilat menevät oikeille muuttujille.
Kävin kurkkaamassa tuota EasyTransferin koodia enkä nähnyt siinä kyllä missään mitään mikä identifioisi tuon datan. Eli tuon pitäisi toimia ihan hyvin jos toisessa päässä on test1 ja test2, vastaavasti toisessa päässä testikukko ja testikana. Tuo siis lähettää vaan tuon structin koon ja sisällön binäärisenä sarjaporttia pitkin, laskee sille tarkistussumman ja lähettää tarkistussumman että toisessa päässä voi tarkistaa menikö paketti ehjänä perille.
 
Kävin kurkkaamassa tuota EasyTransferin koodia enkä nähnyt siinä kyllä missään mitään mikä identifioisi tuon datan. Eli tuon pitäisi toimia ihan hyvin jos toisessa päässä on test1 ja test2, vastaavasti toisessa päässä testikukko ja testikana. Tuo siis lähettää vaan tuon structin koon ja sisällön binäärisenä sarjaporttia pitkin, laskee sille tarkistussumman ja lähettää tarkistussumman että toisessa päässä voi tarkistaa menikö paketti ehjänä perille.
Tuon kanssa olen paljon tehnyt kaikenlaista ja käynyt useasti niin, että jäänyt yksi muuttuja pois toisesta päästä tai jossain yhden merkin virhe niin ei toimi, esimerkki koodissa lukee myös "put your variable definitions here for the data you want to receive, THIS MUST BE EXACTLY THE SAME ON THE OTHER ARDUINO"

Toimii myös niin että yksi arduino lähettää kaksi eri pakettia samassa sarjapotissa, eli johdotettu TX -> RX ->RX ja osaavat mennä oikeaan arduinoon, siksi ihmettelinkin miksi ei toiminut Megassa kun lähetti sen kahteen eri sarjoporttiin.
 
Python, Numpy, miten tämän saisi helpoimmin? Tämä on pienennetty esimerkki jotta mahtuu ruudulle mukavasti. Oikeassa on suuremmat arrayt ..

Pitäisi määritellä funktio, joka ottaa arrayn, "rullaa" keskimmäistä saraketta ja palauttaa koko arrayn jossa on tuo rullaus tehty.

Miten tuon saisi jotenkin helposti tehtyä, kun ei nyt oikein keksi .. Tuo 3x5 olisi vaikka se input array ja alemmassa on sen keskisarakkeen rullaus ..

Pitäisi saada ulos 1,2,13,4,5,6,7,3,9,10,11,12,8,14,15 array ..

Koodi:
>>> import numpy as np

>>> np.array([1,2,3,4,5,6,7,8,9,10,11,12,13,14,15]).reshape(3,5)
array([[ 1,  2,  3,  4,  5],
       [ 6,  7,  8,  9, 10],
       [11, 12, 13, 14, 15]])

>>> np.roll([3,8,13],1).reshape(3,1)
array([[13],
       [ 3],
       [ 8]])
 
Python, Numpy, miten tämän saisi helpoimmin? Tämä on pienennetty esimerkki jotta mahtuu ruudulle mukavasti. Oikeassa on suuremmat arrayt ..

Pitäisi määritellä funktio, joka ottaa arrayn, "rullaa" keskimmäistä saraketta ja palauttaa koko arrayn jossa on tuo rullaus tehty.

Miten tuon saisi jotenkin helposti tehtyä, kun ei nyt oikein keksi .. Tuo 3x5 olisi vaikka se input array ja alemmassa on sen keskisarakkeen rullaus ..

Pitäisi saada ulos 1,2,13,4,5,6,7,3,9,10,11,12,8,14,15 array ..

Koodi:
>>> import numpy as np

>>> np.array([1,2,3,4,5,6,7,8,9,10,11,12,13,14,15]).reshape(3,5)
array([[ 1,  2,  3,  4,  5],
       [ 6,  7,  8,  9, 10],
       [11, 12, 13, 14, 15]])

>>> np.roll([3,8,13],1).reshape(3,1)
array([[13],
       [ 3],
       [ 8]])

Sun pitää operoida sillä rollilla vain keskisaraketta ja sijoittaa se takaisin sinne. Esim. näin:
Python:
import numpy as np

>>> arr = np.array([1,2,3,4,5,6,7,8,9,10,11,12,13,14,15]).reshape(3,5)
>>> arr
array([[ 1,  2,  3,  4,  5],
       [ 6,  7,  8,  9, 10],
       [11, 12, 13, 14, 15]])

>>> arr[:,2] = np.roll(arr[:,2], 1)
>>> arr
array([[ 1,  2,  8,  4,  5],
       [ 6,  7, 13,  9, 10],
       [11, 12,  3, 14, 15]])

Ja voit tietty sitten reshapella tai flattenilla tms. muokata haluamaasi muotoon, esim. 1D:ksi:
Python:
>>> arr.flatten()
array([ 1,  2,  8,  4,  5,  6,  7, 13,  9, 10, 11, 12,  3, 14, 15])
 
>>> arr[:,2] = np.roll(arr[:,2], 1)

Kiitos juuri tuota ihmettelin, että miten se rullataan jotenkin paikallaan. Ajattelin että mun pitäisi jotenkin slice-asioilla purkaa koko juttu paloiksi ja koota uudelleen ja oli jotenkin ajatus, että tämän voi tehdä kyllä varmaan helpomminkin ..
 
Oma osaaminen jämähti asp.net ja MVC-tasolle. Nyt tarkoitus päivittää osaamista Reactiin, NET7:aan ja vastaaviin. Kehitysvälineinä Microsoftin tuotteet ja kielenä C#. Onko vinkkejä sivustoista joissa käytäisiin viimeisimpiä selainpohjaisia sovelluskehitystekniikoita havainnollisesti läpi ja sisältäisi ehkä jopa harjoitustehtäviä/esimerkkejä. Tiedän että googlella löytyy - mutta löytyy paljon myös sekavia ja huonoja sivustoja.
 
Oma osaaminen jämähti asp.net ja MVC-tasolle. Nyt tarkoitus päivittää osaamista Reactiin, NET7:aan ja vastaaviin. Kehitysvälineinä Microsoftin tuotteet ja kielenä C#. Onko vinkkejä sivustoista joissa käytäisiin viimeisimpiä selainpohjaisia sovelluskehitystekniikoita havainnollisesti läpi ja sisältäisi ehkä jopa harjoitustehtäviä/esimerkkejä. Tiedän että googlella löytyy - mutta löytyy paljon myös sekavia ja huonoja sivustoja.
Tästä voi vaikka aloitella: Full stack open
 
Aloittelijan kysymys c#. Kuinka saisin nuo numerot tuohon ”arvosana” sarakkeen alle niinkuin nimetkin on.
 

Liitteet

  • IMG_3682.jpeg
    IMG_3682.jpeg
    301,4 KB · Luettu: 185
Aloittelijan kysymys c#. Kuinka saisin nuo numerot tuohon ”arvosana” sarakkeen alle nimien viereen?

Console.WriteLine("{0} {1}", oppilas[ i ], arvosana[ i ]);

tai

Console.WriteLine(oppilas[ i ]+ " " + arvosana[ i ]);

Parempi kyllä käyttää \t kuin välimerkkejä.
 
Ja yhteistähän ylläolevilla on että luodaan yksi merkkijono joka annetaan ensimmäisenä parameteinä WriteLine metodille, koska se ei ymmärrä useampaa merkkijonoa parametrina.
 
Aloittelijan kysymys c#. Kuinka saisin nuo numerot tuohon ”arvosana” sarakkeen alle niinkuin nimetkin on.
Kantsii sensuroida kuvasta oma nimi ja koulu pois. Muutenki kätsympää, jos ihan tekstinä (code-tageissa) kuvan sijasta ilmaisee ongelman. Lisäksi tulevaisuuden varalle; täällä ei ruukata koulutehtävissä antaa valmiita vastauksia, mut toki autetaan. Sullakin oli vain syntaksi-ongelma nii pikku tönäisy riitti.
 
Kantsii sensuroida kuvasta oma nimi ja koulu pois. Muutenki kätsympää, jos ihan tekstinä (code-tageissa) kuvan sijasta ilmaisee ongelman. Lisäksi tulevaisuuden varalle; täällä ei ruukata koulutehtävissä antaa valmiita vastauksia, mut toki autetaan. Sullakin oli vain syntaksi-ongelma nii pikku tönäisy riitti.
Juu hyvä pointti. Tosiaan tuota syntaksia vain hain.
 
Viimeksi muokattu:
Miten te olette deplannu webbi apit?

Tein deploy.yml github actionin joka rakentaa dockerfilesta imagen ja työntää sen docker hubbiin. Itse vpsllä on ajettu docker compose joka lataa tuon imagen, lisää envit ja tietokannan. Watchtower seuraa tuota imagea.

Onko tämä ihan hyvä tapa deplata? Onko tuo actionien free tier kovin iso ja onko docker hubissa mitää rajoituksia kaistan suhteen?
 
SQL kyssäri. En osaa muotoilla tätä että saisin StackOverflow:sta vastauksen.
Esimerkiksi asiakastietokanta. Se kytketään toiseen tauluun useisiin rooleihin. Miten saan tehtyä kyselyn, jossa näen asiakkaat jotka ovat kytketty johonkin rooliin? Esimerkki:

Asiakastietokanta
AsiakasID Nimi
1Pentti
2Jorma
3Mikael
4Jonna

Tilaukset
TilausTilaajaID MaksajaID
X11
Y12
C31


Tarvitsisin siis kyselyn, jonka tuloksena olisi että AsiakasID:t 1,2 ja 3 ovat käytössä.
 
Tarvitsisin siis kyselyn, jonka tuloksena olisi että AsiakasID:t 1,2 ja 3 ovat käytössä.

Ymmärsinkö oikein, että haluat suunnilleen tämän:


Eli teet vain distinctin noille kahdelle ID-kolumnille ja otat niiden unionin? Ja Tuolla ekalla kannalla ei ole mitään tekemistä tämän kysymyksen kanssa, ellet halua yhdistää nimiä noihin ID:ihin.
 
Ymmärsinkö oikein, että haluat suunnilleen tämän:


Eli teet vain distinctin noille kahdelle ID-kolumnille ja otat niiden unionin? Ja Tuolla ekalla kannalla ei ole mitään tekemistä tämän kysymyksen kanssa, ellet halua yhdistää nimiä noihin ID:ihin.
Just näin! Joskus tulee ajateltua liian monimutkaisesti! Kiitos paljon!
 
Päivitin tuossa heidisql:llä tietokantaa jonka koko n. 30mt, kymmeniätuhansia rivejä.
Lisäsin siihen ainoastaan yhteen tauluun sarakkeen. Muutoksen suorituksessa tuli virhe että yhdessä rivissä float value on "Out of range" ja toisessa sama vika mutta eri float-sarakkeessa.
Kun hain rivit heidisql:llä niin näytti olevan ihan ok luku molemmissa ja frontissakin tuoterivit latautui hyvin.

mitähän tämä meinaa...?
 
Kokeillaas täällä.
Nettisivu Apachella ja WAR java juttu Tomcatissä samalla serverillä ja CORS aiheuttaa tämän ongelman, kun nettisivu yrittää sitä kutsua. Mitä pitää muuttaa ja mistä? Onko vain joku triviaali juttu?

IMG_0235.png
 
Kokeillaas täällä.
Nettisivu Apachella ja WAR java juttu Tomcatissä samalla serverillä ja CORS aiheuttaa tämän ongelman, kun nettisivu yrittää sitä kutsua. Mitä pitää muuttaa ja mistä? Onko vain joku triviaali juttu?

IMG_0235.png

Kaksi vaihtoehtoa:

1) Laita se kutsuttava API vastaamaan samaan osoitteeseen kuin missä sitä kutsuva sivusto asuu. Niin ettei sen kutsumisesta synny "cross-domain request" selaimen perspektiivistä. Nyt selvästi osoitteet eivät täsmää. Jos Tomcat kuuntelee nykyisellään suoraan maailmalle avoimena jossain portissa, niin konffaa mieluummin niin, että sivustoa hostaava Apache toimii myös reverse proxynä Tomcatille, jolloin kummatkin ovat saavutettavissa saman osoitteen kautta. Tomcattia ei yleensä ole tapana tarjoilla suoraan maailmalle (tai ehkä jossain on, mutta se on esim. tietoturvamielessä kyseenalaista).

2) Konffaa API:a tarjoilevaan serveriin (Tomcat?) CORS:iin liittyvät headerit ja CORS:in preflight-OPTIONS-kyselyyn vastaaminen kuntoon. Lisätietoja vaikka: Cross-origin resource sharing - Wikipedia
 
Iso kiitos! Pitääpä tarkistella noita.
Molemmat ihan vain sisäverkossa ja eri porteissa. Suoraan selaimella pääsen kiinni molempiin, mutta apachen sivua käyttämällä ei tuohon tomcatin juttuun.
 
joudun lataamaan eräälle web sivustolle töissä paljon materiaalia, kuvia ja tekstiä tekstikenttiin, yleensä olen kirjoitellut google taulukkoon tekstit valmiiksi ja jakanut kuvat alihakemistoihin 1 ja 2 jne. Taulukossa kohdat samalla tavalla, teksti kohde 1 ja 2 jne. Mietin, voisiko luoda jonkin botin tai scriptin joka tekisi tuon puuduttavan toistuvan työn automaattisesti?
 

Statistiikka

Viestiketjut
253 843
Viestejä
4 411 313
Jäsenet
73 261
Uusin jäsen
Havihazard

Hinta.fi

Back
Ylös Bottom