Pieniä kysymyksiä ohjelmoinnista

Muuttaisin haku sanat numeroiksi sekä indeksiksi alkuperäiseen sanaan ja sorttaisin numerot järjestykseen. Aina kun numero painetaan päivittäisin missä kohdassa ollaan sortatussa listassa. Listasta löytää helposti ja nopeasti näppäimiin sopivat sanat.
 
Toimisiko tämä, en testannut. Tämän lisäksi sitten funktio, joka etsii seuraavan sanan tiedostosta ja syöttää sen tälle funktiolle.
Suuret kiitokset! Pienillä muokkauksilla tuntuisi toimivan ja vihdoin pääsen tehtävässä eteenpäin :)
 
Ehkä tyhmä kysymys, mut kysytään kuitenki.. mikä ero datanomil ja viestintä- ja tietotekniikalla?
Kysymyksen muotoilusta 5/5, mutta koitetaannyt arvata mitä tässä haetaan.

Datanomi - Tieto- ja viestintätekniikan perustutkinto - Ammattikoulu 3v
Tradenomi - Tietojenkäsittely - AMK 3,5v
Insinööri - Tieto- ja viestintätekniikka - AMK 4v
Kandi ja Maisteri - Tietojenkäsittelytiede - YO 3+2v

Jos koulunpenkintä aikoo alalle, niin lukiosta on enemmän iloa, kun datanomin papruista.
 
Ehkä tyhmä kysymys, mut kysytään kuitenki.. mikä ero datanomil ja viestintä- ja tietotekniikalla?

Kysymyksen muotoilusta 5/5, mutta koitetaannyt arvata mitä tässä haetaan.

Datanomi - Tieto- ja viestintätekniikan perustutkinto - Ammattikoulu 3v
Tradenomi - Tietojenkäsittely - AMK 3,5v
Insinööri - Tieto- ja viestintätekniikka - AMK 4v
Kandi ja Maisteri - Tietojenkäsittelytiede - YO 3+2v

Jos koulunpenkintä aikoo alalle, niin lukiosta on enemmän iloa, kun datanomin papruista.

Melkein topicin valinnasta vielä bonuspiste.

Mutta lisäisin ehkäpä ylläolevaan tieto(liikenne)tekniikan TkK/DI:n.
 
Tuo tradenomi pitäisi heivata kokoaan pois, ellei jo ole tehty niin. Typerää pitää 2:ta eri AMK-tutkintoa, joilla ei ole käytännössä mitään tekemistä keskenään (sori vaan tradenomit mutta täysin turha taso, kun on liian monta tutkintotasoa). Amis-tutkinto (It-alalla tosin nykyään ei pitkälle pötkitä sillä enää), Insinöörin Amk-tutkinto ja lisäksi DI/maisterin pahvit, nuo koulutustasot tekisivät paremmin järkeä.

AMK:n voisi ponnistaa amiksesta, kuten tehtiin aikoinaan ennen helvetin tyhmää AMK-uudistusta, jossa piti saada lisää "korkeakoulututkinnon" omaavia. Tuntuu että jokainen ammatillinen tutkinto pitää olla nykyään AMK, vaikka ei tarvitsisi. Vanha teknillinen oppilaitos rivi-insinööreille oli järkevä koulutustaso ja harmi että se romutettiin AMK:n takia. Ennen teknikkokin oli ihan arvostettu koulutustaso, jonka olemassaolosta nykyään enää harva edes tietää.
 
Nyt meni sormi suuhun. Tarkoituksena on suodattaa OpenWeather Mapin Api datasta kolmen seuraavan päivän korkeimmat lämpötilat javascriptillä. Korkeimmat lämpötilat (sekä mahdollisestin muutakin dataa siihen liittyen) näyttävät asettuvan kello 15:00 ja tuosta datasta löytyy aikaleimat kohdasta dt_txt. Tuo data päivittyy 3 tunnin välein.

Indeksistä 0 löytyy tämän hetken sää. Seuraavassa indeksissä on aina sää kolmen tunnin kuluttua edellisestä.

Ei tässä mitään valmista koodia haeta, mutta hieman osviittaa miten tuo olisi järkevä ratkoa ja miten tuota dataa suodatetaan.

Annotation 2019-05-16 223524.png
 
Nyt meni sormi suuhun. Tarkoituksena on suodattaa OpenWeather Mapin Api datasta kolmen seuraavan päivän korkeimmat lämpötilat javascriptillä. Korkeimmat lämpötilat (sekä mahdollisestin muutakin dataa siihen liittyen) näyttävät asettuvan kello 15:00 ja tuosta datasta löytyy aikaleimat kohdasta dt_txt. Tuo data päivittyy 3 tunnin välein.

Indeksistä 0 löytyy tämän hetken sää. Seuraavassa indeksissä on aina sää kolmen tunnin kuluttua edellisestä.

Ei tässä mitään valmista koodia haeta, mutta hieman osviittaa miten tuo olisi järkevä ratkoa ja miten tuota dataa suodatetaan.

Annotation 2019-05-16 223524.png
Käy listaa läpi ja laske indeksi nykyisen päivän ja ennustepäivän välisestä erosta. Lopeta jos se on suurempi kuin kaksi, tai kolme jos haluat kuluvan päivän ja seuraavat kolme päivää. Lisää seuraava ennustelämpötila taulukkoon indeksin kohtaan, jos siinä indeksissä ei ole lämpötilaa tai nykyinen ennuste on suurempi kuin taulukossa oleva.

Edit. Indeksin voi laskea vaikka niin, että ensin tallettaa nykyisen päivän muuttujaan. Ennusteita läpi käydessä tarkistetaan onko ennusteen päivä sama kuin ennen ja jos ei ole, niin indeksiä kasvatetaan yhdellä ja päivämuuttujaan vaihdetaan uusi päivä. Päivänä siis päivä kuukaudesta, eli 1-31, ei muuta.
 
Viimeksi muokattu:
Käy listaa läpi ja laske indeksi nykyisen päivän ja ennustepäivän välisestä erosta. Lopeta jos se on suurempi kuin kaksi, tai kolme jos haluat kuluvan päivän ja seuraavat kolme päivää. Lisää seuraava ennustelämpötila taulukkoon indeksin kohtaan, jos siinä indeksissä ei ole lämpötilaa tai nykyinen ennuste on suurempi kuin taulukossa oleva.

Edit. Indeksin voi laskea vaikka niin, että ensin tallettaa nykyisen päivän muuttujaan. Ennusteita läpi käydessä tarkistetaan onko ennusteen päivä sama kuin ennen ja jos ei ole, niin indeksiä kasvatetaan yhdellä ja päivämuuttujaan vaihdetaan uusi päivä. Päivänä siis päivä kuukaudesta, eli 1-31, ei muuta.

Kiitoksia. Lähden siis ratkomaan tätä jotakuinkin noin.
 
Tein pienen Javascript-sovelluksen, joka lukee csv-tiedoston tekee siitä html-taulukon. Html-taulukon päällä on dynaaminen hakukenttä, jolla pystyy filtteröimään taulukkoa.

Ratkaisu toimii nätisti VS Coden Live Serverillä, mutta tuo tarvisi saada toimimaan jotenkin myös standalone-tilassa ilman servua ja VS Codea. Tarkoitus on, että tuotannon pojat saa offline-tilassa sen omalta koneeltaan auki.

Miten tätä kannattaa lähestyä?
 
Tein pienen Javascript-sovelluksen, joka lukee csv-tiedoston tekee siitä html-taulukon. Html-taulukon päällä on dynaaminen hakukenttä, jolla pystyy filtteröimään taulukkoa.

Ratkaisu toimii nätisti VS Coden Live Serverillä, mutta tuo tarvisi saada toimimaan jotenkin myös standalone-tilassa ilman servua ja VS Codea. Tarkoitus on, että tuotannon pojat saa offline-tilassa sen omalta koneeltaan auki.

Miten tätä kannattaa lähestyä?
Pistät filtteröintiin tarvittavan JS-koodin samaan HTML-tiedostoon niin olisi ainakin aika yksinkertainen ja pommin varma ratkaisu. Onko nyt joku erityinen ongelma miksi se ei toimi offline?
 
Pistät filtteröintiin tarvittavan JS-koodin samaan HTML-tiedostoon niin olisi ainakin aika yksinkertainen ja pommin varma ratkaisu. Onko nyt joku erityinen ongelma miksi se ei toimi offline?
Javascriptin pitää ladata samassa kansiossa oleva csv-tiedosto.
 
How to open a local disk file with JavaScript?

Mutta tuokin vaatii, että käyttäjä valitsee tiedoston. Mitää keinoa lukea JS:llä käyttäjän koneen tiedostojärjestelmää ei tietoturvasyistä ole.
Thanks. Tein nyt File API:lla tämän. Ihan riittävän hyvä.

Miksei laita server side includella sitä dataa suoraan js/html-tiedostoon?
CSV:n pitää olla helposti päivitettävissä. Nyt riittää, että exporttaa kerran viikossa tiedoston ERP:stä.
 
Osaisiko joku auttaa Laravelin kanssa ?
Olen opiskellut alkeita jo tovin, mutta silti ei taivu että miten saisin laravelin omaan vakio auth-komponenttiin ja siinä rekisteröintilomakkeeseen luotua oman pudotusvalikon joka hakee tietokannasta omasta taulustaan vaihtoehdot.
Samasta koodinpätkästä pitäisi saada komponentti? niin että pudotusvalikon saa piirrettyä myös muihin ohjelmakohtiin haluttaessa, eli se ei saisi olla koodattuna tuohon RegisterUsers:iin.

EDIT:

Nyt asia meni eteenpäin jo siten että saan missä tahansa viewissä lisättyä tuon komponentin ja sille muuttujat parametrinä, mutta missä kohtaa ja missä tiedostossa ne muuttujat pitäisi hakea ?

EDIT2:

Nyt RegisterUsers.php -tiedostossa on:

$clubs = app('club_types::class')->index();
return view('auth.register')->with('clubs', $clubs);

ja clubs-muuttuja menee kyllä oikein viewiin, mutta tuota funktiota ei löydy:
Class club_types::class does not exist


EDIT3:

Olen nyt opiskellut netistä Laraveliä muutaman kuukauden ja tietojen soveltaminen tökkii pahasti.
Löytyisikö ketään nohevaa osaajaa joka voisi opastaa minua etäyhteyden avulla puoli tuntia - tunnin ?
Kunhan hinnasta päästään sopimukseen niin maksan tästä kyllä. Laita yv:tä jos kiinnostaa ja olet laravelliä käyttänyt niin että osaat neuvoa hyvän ohjelmointitavan mukaisia ratkaisuja.
 
Viimeksi muokattu:
Hmm. yleensä jos et osaa debugata omaa koodia kun vain joku metodi puuttuu niin on yleisiä aukkoja koodin ymmärtämisessä ja lukemisessa. Suosittelen vaikka ihan vanilla PHP:n kirjoittamista ja objektiorientoitunutta koodausta yleisesti ja ihan vain alkeisiin perehtymistä pari päivää tai viikko. Miten kirjoitan luokan, miten teen oman metodin, miten käytän metodeita, jne. Auttaisiko pari Laravel videoo youtubesta:
 
Onko mahdollista ohittaa tuota parametrin maksimikokoa C#:ssa? Ohjelmassa yritetään muuttaa valittu kuva Base64 muotoon ja ja lähettää parametrina toisen ohjelman käynnistykseen.

Tulee liitteessä oleva virhe. Ilman b64, ohjelma toimii. Mitään ideoita?

toolong.png
 
Onko mahdollista ohittaa tuota parametrin maksimikokoa C#:ssa? Ohjelmassa yritetään muuttaa valittu kuva Base64 muotoon ja ja lähettää parametrina toisen ohjelman käynnistykseen.

Tulee liitteessä oleva virhe. Ilman b64, ohjelma toimii. Mitään ideoita?

toolong.png
Kuulostaa sille, ettei Windows tue noin pitkiä parametreja. C# itsessään kyllä nähtävästi osaa homman mutta Windows ei. Miksi et yksinkertaisesti tallenna kuvaa johonkin temp-hakemistoon ja lataa sitä myöhemmin sieltä? Toinen huomio on se, että tuo serverimage-parametri saattaa ihan hyvin viitata kuvan polkuun eikä mihinkään base64-koodattuun versioon kuvasta (mutta voin olla väärässäkin, kun en paremmin tiedä).
 
Kuulostaa sille, ettei Windows tue noin pitkiä parametreja. C# itsessään kyllä nähtävästi osaa homman mutta Windows ei. Miksi et yksinkertaisesti tallenna kuvaa johonkin temp-hakemistoon ja lataa sitä myöhemmin sieltä? Toinen huomio on se, että tuo serverimage-parametri saattaa ihan hyvin viitata kuvan polkuun eikä mihinkään base64-koodattuun versioon kuvasta (mutta voin olla väärässäkin, kun en paremmin tiedä).
Jep, oma valistunut arvaus on se, että yritetään antaa se Base64 encoodattu kuva komentoriviparametrina tuossa ja tuossa sitten käyttiksen rajat vastaan sen parametrin maksimipituudessa, eli luultavasti se kuva kannattaisi tallentaa johonkin temppi hakemistoon, lukea sieltä ja poistaa niin kuin Xiyng tuossa sanoikin. Joku Windows/C# guru osaa varmaan korjata jos höpisen aivan pehmeitä.
 
VSCode ja PHP CS Fixer: osaako joku neuvoa tai linkata toimivaan ohjeeseen, jolla saisi konfattua toimivan ratkaisun?
Googlettelin, asentelin eri fixer lisäosia ja konffailin ohjeiden mukaan, mutta aina tulee jokin herja tai ei vain tapahdu mitään.

Ja oletetaan, että olen asentanut phpcs:n composerilla, globaalisti versio 3.4.1 sekä friendsofphp/php-cs-fixer 2.14.2.
 
Ei mitään hajua, mutta nämä "jotkut herjat" kannattaa aina liittää mukaan spoilereihin ilman eri pyyntöä. Voi auttaa ratkaisussa.
Tarkoitin, että jos joku tietää toimivan tutoriaalin tai vastaavat ohjeet, niin voisin kokeilla.

En siis hae ratkaisua näihin herjoihin, jotka olisin kyllä liittänyt, jos olisin halunnut ryhtyä niitä käsittelmään.
 
VSCode ja PHP CS Fixer: osaako joku neuvoa tai linkata toimivaan ohjeeseen, jolla saisi konfattua toimivan ratkaisun?
Googlettelin, asentelin eri fixer lisäosia ja konffailin ohjeiden mukaan, mutta aina tulee jokin herja tai ei vain tapahdu mitään.

Ja oletetaan, että olen asentanut phpcs:n composerilla, globaalisti versio 3.4.1 sekä friendsofphp/php-cs-fixer 2.14.2.
Tarkoitin, että jos joku tietää toimivan tutoriaalin tai vastaavat ohjeet, niin voisin kokeilla.

En siis hae ratkaisua näihin herjoihin, jotka olisin kyllä liittänyt, jos olisin halunnut ryhtyä niitä käsittelmään.


vscode-php-cs-fixer - Visual Studio Marketplace

Getting Started
As long as PHP 5.6+ is installed on your system and in your PATH, the extension should work out of the box.

If you don't want to use the php-cs-fixer that's included with the extension, set the vscode-php-cs-fixer.toolPath setting to the path of php-cs-fixer.

Itselläni ainakin toimi juuri niikuin luvattiin. Lisäsin vain PATH:iin php:n asenus kansio...

avaa cmd tai run järjestelmän valvojana ja aja
Koodi:
rundll32 sysdm.cpl,EditEnvironmentVariables
tai
Ohjauspaneeli \ Järjestelmä ja suojaus \ Järjestelmä \ Järjestelmän lisäasetukset \ Ympäristömuuttujat

Ja sitten se tärkein -> Käynnistä kone uudelleen
 
Ympäristömuuttujan lisäämisen jälkeen ei tarvitse kuin komentokonsoli käynnistää uudelleen jotta php olisi toimivana siellä.
 
  • Tykkää
Reactions: hmb
Koodi:
return validateCreateDummyUser(errors, req).then(errors => {
        if(!isEmpty(errors)) {
            rerender_createDummyUsersPage(errors, req, res, next);
        } else {               
            let randomize = require('randomatic');
            var users = [];
            let myDate =  new Date().toISOString()
            ...

Mitä tuo return tekee kun kutsutaan noita promise funktioita? Onko tuo return pakollinen? Mitä jos sitä ei ole?
 
Koodi:
return validateCreateDummyUser(errors, req).then(errors => {
        if(!isEmpty(errors)) {
            rerender_createDummyUsersPage(errors, req, res, next);
        } else {             
            let randomize = require('randomatic');
            var users = [];
            let myDate =  new Date().toISOString()
            ...

Mitä tuo return tekee kun kutsutaan noita promise funktioita? Onko tuo return pakollinen? Mitä jos sitä ei ole?


No se paulattaa sen itse promisen. Jos sä et sillä mitään tee nii eise ole mitenkään pakollista. Mutta on sille promisen palautukselle hyviä usecaseja. Esim, jos sulla on monta funkkaria jotka kaikki palauttaa promisen, voit niputtaa kaikki yhteen Promise.all kutsuun. Promise.all palauttaa kaikki tai ei mitään.

Koodi:
function a(){
  return new Promise()
}

function b(){
  return new Promise()
}

function c(){
  return new Promise()
}

Promise.all([a(),b(),c()]).then(([a,b,c])=>{
  todoWithA(a)
  todoWithB(b)
  todoWithC(c)
})


Mitä tohon sun promiseen tulee niin, harvoin promise palauttaa theniin errorit.

vaan esim.
Koodi:
Promise.then(data=>todo).catch(error=>handleErros)
 
Viimeksi muokattu:
Kiitos teille vastauksista. Vaikeita hommia nämä on :). Taas oon repinyt hiuksia päästä. Mulla on niinkin helppo ongelma oleviaan kuin objektin funktion kutsu eri .js filussa. Käytän Expressiä ja pohjana mulla on tämä kansiorakenne: Express application generator

Tuo loi alkuun tuommoisen www tiedoston, jossa alustetaan portit ja laitetaan serveri päälle. Servern päälle laittamisen jälkeen, asetin socketin kuuntelemaan kutsuja. Socket toimii ja sinne voi yhdistää ja lähettämään dataa.

Koodi:
  // Socket.io
  var io = require('socket.io')(server);
  io.on('connection', (socket) => {
            
    socket.on('disconnect', (reason) => {
       if (reason === 'io server disconnect') {
            // the disconnection was initiated by the server, you need to reconnect manually
            console.log("Disconnected, Connecting again");
            socket.disconnect();
         }
    });

    socket.on('connect_timeout', (timeout) => {
     console.log("Socket IO Timed out");
    });
});

Ongelmana tässä on nyt se, että minulla on paljon näitä toisia tiedostoja. Yhdessä niistä tapahtuu esim. näin
Koodi:
let query = "UPDATE Feedbacks SET State = 'Removed' FROM Feedbacks WHERE LevelName = '" + req.body.table + "' AND Feedbacks.ID = " + req.body.id + "";
    console.log(query);
    models.sequelize.query(query, { type: Sequelize.QueryTypes.UPDATE}).then(results => {
    console.log(req.body);
    if(req.body.fromgame)
    {
        res.send({msg: "Success" });
    } else
    res.redirect("/viewFeedbacks/" + req.body.table + "/" + req.body.department);
// Tähän pitäisi tulla SOCKET EMIT, joka alustettiin tuolla www filussa

    })

Olen mm. koittanut requirata filun tässä luokassa, jossa haluan käyttää sitä.
var www = require('../bin/www');

kun ensin olen laittanut tuonne www sivulle näin:
module.exports = io;

En saa kuitenkaan mitään kontaktia tuohon io objektiin tuolla toisessa filussa. Haluaisin tehdä esim. io.emit funktion tuossa kohtaa, johon laitoin kommentin. Mikä muu tässä puuttuu?
 
Vähän sekavasti muotoiltu kysymys, mutta tämä nyt ainakin tulee mieleen:

Kun importtaat näin, niin tuo www -muuttuja pointtaa nyt siihen toisen modulin io-muuttujaan, eli pitää kutsua www.emit jne.
Kiitti. Koitin tehdä liitteenä mainitun jutun ja tuli www.emit is not a function ja servu crashaa. Mulla on tuolla ylhäällä se let www = require('../bin/www');

Mulla on tässä nyt vähän muutenkin ongelmia hahmottaa. Alunperin halusin koko socketin yhdistämisen tapahtuvan eri tiedostossa. Ongelmana oli se, että tuo socket vaatii tuon server muuttujan( var io = require('socket.io')(server); ).
En saanut millään viittausta tuohon serveriin toisissa .js filuissa. Olisi pitänyt siis saada exportattua jotenkin tuon www filun serveri, joka rakennetaan siellä yhdessä kohtaa näin var server = http.createServer(app);

Luulisi tämän olevan yksi tavallisemista asioista, mutta en nyt käsitä. Miten ihmeessä esimerkiksi olisin päässyt tuohon server muuttujaan muissa filuissa.. Jos tämä olisi onnistunut alunperin, olisin tehnyt tuon socketin eri tavalla. Laitan alle vielä liitteenä koko www filun koska siellä ei ole mitään salaista.

Koodi:
#!/usr/bin/env node

/**
 * Module dependencies.
 */

var app = require('../app');
var debug = require('debug')('myapp:server');
var http = require('http');
let models = require('../server/models')



/**
 * Get port from environment and store in Express.
 */

var port = normalizePort(process.env.PORT || '3000');
app.set('port', port);

/**
 * Create HTTP server.
 */

var server = http.createServer(app);

/**
 * Listen on provided port, on all network interfaces.
 */
models.sequelize.sync().then(result => {
server.listen(port);
server.on('error', onError);
server.on('listening', onListening);
})


  // Socket IO
  var io = require('socket.io')(server);
  io.on('connection', (socket) => {
            
    console.log('made socket connection ', socket.id); 
    socket.on('feedback', function (data) {
        socket.broadcast.emit('feedback', data);
    });

    socket.on('disconnect', (reason) => {
       if (reason === 'io server disconnect') {
            // the disconnection was initiated by the server, you need to reconnect manually
            console.log("Disconnected, Connecting again");
            socket.disconnect();
         }
    });

    socket.on('connect_timeout', (timeout) => {
     console.log("Socket IO Timed out");
    });
});



/**
 * Normalize a port into a number, string, or false.
 */

function normalizePort(val) {
  var port = parseInt(val, 10);

  if (isNaN(port)) {
    // named pipe
    return val;
  }

  if (port >= 0) {
    // port number
    return port;
  }

  return false;
}

/**
 * Event listener for HTTP server "error" event.
 */

function onError(error) {
  if (error.syscall !== 'listen') {
    throw error;
  }

  var bind = typeof port === 'string'
    ? 'Pipe ' + port
    : 'Port ' + port;

  // handle specific listen errors with friendly messages
  switch (error.code) {
    case 'EACCES':
      console.error(bind + ' requires elevated privileges');
      process.exit(1);
      break;
    case 'EADDRINUSE':
      console.error(bind + ' is already in use');
      process.exit(1);
      break;
    default:
      throw error;
  }
}

/**
 * Event listener for HTTP server "listening" event.
 */

function onListening() {
  var addr = server.address();
  var bind = typeof addr === 'string'
    ? 'pipe ' + addr
    : 'port ' + addr.port;
  debug('Listening on ' + bind);
}


module.exports = io;

NotAFuntion.png
 
Luulisi tämän olevan yksi tavallisemista asioista, mutta en nyt käsitä. Miten ihmeessä esimerkiksi olisin päässyt tuohon server muuttujaan muissa filuissa.. Jos tämä olisi onnistunut alunperin, olisin tehnyt tuon socketin eri tavalla. Laitan alle vielä liitteenä koko www filun koska siellä ei ole mitään salaista.

server.js
Koodi:
....
const server = http.createServer(app);
module.exports = server
socket.js
Koodi:
...
const server = require('server.js')

// joko
const socket = require('socket.io')
const io = socket(server)
// tai
const io = require('socket.io')(server)

io.on...

module.exports = io
 
Sai toimimaan! Vastaus oli yhtä helppo kuin Hello World. No aina ei voi pää toimia. Eli muutuja annettiin ulos näin:
exports.io = io;

tuon avulla muissa .js filuissa päästään käsiksi tämän www.js filun io muuttujaan.

 
server.js
Koodi:
....
const server = http.createServer(app);
module.exports = server
socket.js
Koodi:
...
const server = require('server.js')

// joko
const socket = require('socket.io')
const io = socket(server)
// tai
const io = require('socket.io')(server)

io.on...

module.exports = io
Kiitos tästä. Nyt alkanut selviämään tuo juttu. Sain onneksi ratkastua omillani tuon IO exportin. Älyttömän simppeli juttu
 
Olen miettinyt ostavani rasperryn tai arduinon ihan opettelumielessä ja nyt löysin idean mikä ehkä näillä olisi järkevä toteuttaa. Eli tarkoitus olisi saada sähkömoottori liikkumaan 180 astetta ja ohjaus tapahtuisi mahdollisesti puhelimella tai jollain liikkeentunnistimella. Mikä olisi järkevin tapa lähteä toteuttamaan?
 
Olen miettinyt ostavani rasperryn tai arduinon ihan opettelumielessä ja nyt löysin idean mikä ehkä näillä olisi järkevä toteuttaa. Eli tarkoitus olisi saada sähkömoottori liikkumaan 180 astetta ja ohjaus tapahtuisi mahdollisesti puhelimella tai jollain liikkeentunnistimella. Mikä olisi järkevin tapa lähteä toteuttamaan?
askelmoottori ja/tai anturit molempiin päihin joilla tietää koska on kääntynyt tarpeeksi?
 
askelmoottori ja/tai anturit molempiin päihin joilla tietää koska on kääntynyt tarpeeksi?
Juuri jotain tällästä, en ole näihin rasperryyn tai arduinoon kovin perehtynyt, onkohan väljä kummalla lähtee toteuttamaan.

E: Tulikin haettua tuommoinen arduino starter kit, taitaa oikeastaan paketista löytyä jo lähes kaikki tarvittava.
 
Viimeksi muokattu:
Olen miettinyt ostavani rasperryn tai arduinon ihan opettelumielessä ja nyt löysin idean mikä ehkä näillä olisi järkevä toteuttaa. Eli tarkoitus olisi saada sähkömoottori liikkumaan 180 astetta ja ohjaus tapahtuisi mahdollisesti puhelimella tai jollain liikkeentunnistimella. Mikä olisi järkevin tapa lähteä toteuttamaan?

Ohjaus puhelimella onnistuu helpommin raspilla (raspiin weppiserveri niin voi käyttää mistä vain selaimella).

Arduinoonkin saa eth ja wlan shieldit.

Esp8266 voisi olla oikea palikka, ohjelmointi kuten arduinolla ja wlan onnistuu helposti
 
Olen miettinyt ostavani rasperryn tai arduinon ihan opettelumielessä ja nyt löysin idean mikä ehkä näillä olisi järkevä toteuttaa. Eli tarkoitus olisi saada sähkömoottori liikkumaan 180 astetta ja ohjaus tapahtuisi mahdollisesti puhelimella tai jollain liikkeentunnistimella. Mikä olisi järkevin tapa lähteä toteuttamaan?

Ei pelkkää sähkömoottoria, mutta servoa tai askelmoottoria esp32:lla -->

Saattaa toimia esp8266, kun on hieman halvempi. Halvin wifi viritelmä.
 
Millä tavalla voi sallia koodin suorituksen jos Exception napsahtaa Validator-kontrollissa?

ASP.Net projektin .aspx -tiedostossa ovat seuraavat pätkät:
Koodi:
<asp:CompareValidator ID="CompareValidator1" runat="server" ControlToValidate="Value1" ErrorMessage="Not a number!" Operator="DataTypeCheck" Type="Double">
        </asp:CompareValidator>
Koodi:
<asp:Button ID="ResetButton" runat="server" OnClick="ResetButton_Click" Text="Reset" Width="61px" />

Ja tässä serveri-puolen koodi .aspx.cs -tiedostosta:
Koodi:
protected void ResetButton_Click(object sender, EventArgs e)
        {
            Value1.Text = "";
            Value2.Text = "";
            Result.Text = "";
        }

Kun tuo CompareValidator nappaa Exceptionin eli kun input ei ole numero, niin silloin tulee esiin tuo ErrorMessage kuten pitääkin, mutta silloin kun tuo exceptioni on päällä, niin ei voi tyhentää TextBoxeja tuolla ResetButton_Click eventillä. Oikeastaan mikään koodi ei suorita niin kauan kuin tuo Exception on päällä.

Miten tuon saisi niin että se sallii tuon Reset-painikkeen käytön vaikka olisi väärää dataa syötetty? Tällä hetkellä toi Reset toimii vain silloin kun syötetty data on läpäissyt validaattorin eli ovat numeroita. Tässähän ei ole try-catch lohkoa koska tuo Validator-kontrolli hoitaa sen Exception handlingin.
 
Word-asiakirjassa on useita liitteitä, joista jokainen koostuu suuresta määrästä kuvia.
Liitteet on erotettu toisistaan osanvaihdoilla (section break).

Miten saan VBA:lla skaalattua vain niitä kuvia, jotka sijaitsevat valitussa sectionissa?
Olen ihan aloittelija VBA:n käytössä, mutta tällaisen makron sain tehtyä, jolla saan skaalattua kaikki dokumentissa olevat kuvat (tai Inline Shape -objektit):

Koodi:
Sub resizeImages()
 Dim iShapeObject As Word.InlineShape
 For Each iShapeObject In ActiveDocument.InlineShapes
  With iShapeObject
   .ScaleHeight = 20
   .ScaleWidth = 20
  End With
 Next iShapeObject
End Sub
 
Ehdotelkaas opettavaisia mern Stack projekti ideoita
Mikä sinulle olisi ns. "scratch my own itch"?

Itse kyllästyin aikoinaan siihen, että pokerisaittien turnaukset eivät olleet missään loogisessa paikassa, vaan aina joutui kirjautumaan jokaiseen clientiin erikseen, kahlata turnaukset läpi erilaisten UI-toteutusten myötä ja sitten arpomaan, että mihin osallistuu. Samoin monet mehukkaat (overlay) turtsit menivät ohi, kun ei jaksanut koko ajan päivystää koneen ääressä tai ei muistanut, että klo XYZ alkaa turnaus.

Niinpä tein Nodella scraperin, joka haki noi tiedot Starsin, FullTiltin ja PartyPokerin web-sivuilta ja tallensi ne Mongo-kantaan. Sitten Expressillä endpointit, joista React Native hakee turnausten tiedot ja näyttää ne sortattuna. Lisäksi mobiilissa local-notifikaatiot favoriteiksi tagatuille, tyyliin "$33 Hot Turbo is starting in 15 minutes in PokerStars".

Mutta kun nuo tiedot eivät tulleet julkisista rajapinnoista ja sivustoilla ei ollut kaikkia tarvittavia tietoja ja niiden rakenteet muuttuvat aika ajoin, niin dumppasin projektin. Tarjosin (jatko)kehitystä Veikkaukselle, jos he olisivat expossaneet rajapintansa minun käyttöön, mutta eivät olleet asiasta lainkaan kiinnostuneita.

Joka tapauksessa mielenkiintoinen ja opettavainen projekti minulle, jota jaksoi vääntää yömyöhään juuri tuon "scratch my own itch" -kulman vuoksi.


anytwo.jpg
 
Python kysymys, laite ei tue f-string formatointia, miten formatoin tämän uudestaan .format() tyyliin?

Koodi:
username_header = f"{len(username):<{HEADER_LENGTH}}".encode('utf-8')

e. ja oikea vastaus on:

Koodi:
message_header = "{ml:<{hl}}".format(ml=len(message),hl=HEADER_LENGTH).encode('utf-8')
 
Viimeksi muokattu:
Kiitos avuista täältä, tehdään laitteen eka versio nyt potenttiometri ohjauksella ja arduinolla ja katotaan kuinka käy. Uno starterkitillä testit tehty ja nyt on tilattu nano, servo moottorit yms. muu tarvittava ja kokeillaan niillä.
 
Onko C++ helppo tai "helppo" oppia kun osaa C#? Jossain työpaikoissa saattaa olla molemmat käytössä, niin sitä silmällä pitäen.
 
Onko C++ helppo tai "helppo" oppia kun osaa C#? Jossain työpaikoissa saattaa olla molemmat käytössä, niin sitä silmällä pitäen.
Tiettyjä asioita pitää hoksata, mutta äkkiä pääsee sisälle, jos C# tms. kieliä takana. Perusteethan ovat lähes kaikissa kielissä samat.
 

Uusimmat viestit

Statistiikka

Viestiketjuista
261 628
Viestejä
4 537 328
Jäsenet
74 856
Uusin jäsen
KeisariLoL

Hinta.fi

Back
Ylös Bottom