Pieniä kysymyksiä ohjelmoinnista

Liittynyt
16.10.2016
Viestejä
543
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
Javascript/typescript ja vaikka next.js.
 
Liittynyt
21.10.2016
Viestejä
9 305
Javascript/typescript ja vaikka next.js.
+ bäkkärissä pilvipalvelut myös. Eipä nykyää samanlaista simppeliä komboa vain ole. Onhan toki php-frameworkitki edellee käytössä ja toimii. Php:lla on vain hyvin helppo tehdä hirveitä virheitä.
 
Liittynyt
17.01.2018
Viestejä
2 094
Hirveitä virheitä voi tehdä kielestä riippumatta ;)
Ja ei, tämä ei ollut php:n puolustus.
 
Liittynyt
21.10.2016
Viestejä
9 305
Hirveitä virheitä voi tehdä kielestä riippumatta ;)
Ja ei, tämä ei ollut php:n puolustus.
phplla on todella helppo tehdä asioita ihan pirun väärin (ja aiheuttaa vahinkoa). Siksi se on "vihattu", ei siksi etteikö se olis "cool". Kaikissa kielissä on hyvä käyttää frameworkeja, mut varsinki php:n kans ei pidä sooloilla ellei varmasti tiedä mitä tekee, silloinki parempi triplatarkistaa koodi.
 
Liittynyt
16.10.2016
Viestejä
543
Bäkkäri flaskilla (eli Pythonilla) on minusta kyllä aika simppeli.
Itse pidän paljonkin Pythonista ja Flaskistakin, mutta en kyllä millään voi suositella tuotantoon Flask backendiä, ainakaan varauksetta. Flask on simppeli kun siinä ei ole mitään ja tuotantoa varten kasataan eri kirjastoista käyttöön sopiva kokonaisuus. Näissä taas kirjastojen laatu vaihtelee kovasti. Ja jos on tarkoitus tehdä monoliitti niin siitä Flask-projektista voi kasvaa todella suuri ja monimutkainen kokonaisuus joka parsitaan kasaan ilman vakiintunutta arkkitehtuuria, eli käyttäjä päättää mielensä mukaan miten koodi ja projekti jäsennellään. Tässä voi tulla huomattavia virheitä ja vääriä tapoja. Lisäksi suorituskyky, muistin ja cpu hallinta voi olla haastavaa Python projekteissa.

Olen käyttänyt Flaskia yhdessä Kubernetes-projektissa, jossa se toimi ok kun sitä käytettiin mikropalveluissa jotka olivat vain pieni osa isommassa kokonaisuudessa. Tällöinkin kokonaisarkkitehtuuri oli todella monimutkainen, koska siinä käytettiin Kubernetesta ja mikroarkkitehtuuria.
 
Liittynyt
16.10.2016
Viestejä
543
Hirveitä virheitä voi tehdä kielestä riippumatta ;)
Ja ei, tämä ei ollut php:n puolustus.
Käännettävillä kielillä on vaikea tehdä kovin suuria virheitä. Esim. Rust-kieli on kovaa huutoa just nyt kun sen kääntäjä on niin hyvä.

 
Liittynyt
16.11.2020
Viestejä
2 597
AWS S3 static website hosting + API Gateway + Lambda (vaikka sitten Nodella) johonkin kevyempään. Tarvii tuohon kylkeen nopsaan muitakin palveluita, jos jotain vakavampaa projektia meinaa (Route53, Cloudfront, WAF, kantapalvelu jne.), mutta noilla ekoilla saa jo sivun backend-toiminnallisuuksineen eetteriin.

Tuolla paketilla sais pidettyä kustannuksetkin suht maltillisina, kun esim. API gateway ja Lambda raksuttaa laskua per kutsu versus joku EC2- tai ECS-pohjainen ratkaisu, jossa loadbalancer edessä ja loadbalancer raksuttaa laskua joka tunnilta + laskentateho päälle.

En oo tehny mitään tuotantokelpoista tuolla arkkitehtuurilla, että kokemuksella ei voi puhua, mutta pitäs skaalautuakin suht kivasti.

Tai sit jos haluaa olla tosi masokisti, niin Java Spring Boot + Spring Security bäkkäriksi :D On tuossa kyllä puolensakin sen jälkeen, kun ymmärtää, miten tuo himmeli toimii.
 
Viimeksi muokattu:
Liittynyt
16.10.2016
Viestejä
543
Niin tai sit vaan hostaa vercelissä tai netlifyssä, 20€/kk. Alusta riittänee tuhannelle käyttäjälle…
 
Liittynyt
16.11.2020
Viestejä
2 597
Mulla ei oo kokemusta noista kyseisistä. AWS:ää halvemmalla saa varmasti useammastakin paikasta, mutta tuo nyt oli lähinnä sitä silmällä pitäen, jos haluaa opetella uusia tekniikoita tai pilvipalveluntarjoajia.

AWS tarjoaa kyllä paljon mukavia tukipalveluja, mm. fiksun salaisuuksien hallinnan, lokien hallinnan yms., ettei tarvii itse kötöstellä mitään ja muutenkin AWS-palveluilla saa tehtyä osapuilleen kaiken mahdollisen, mitä keksii. Kysyntääkin riittää, jos ajattelee työmarkkinoiden ja oman osaamisen kannalta, että minusta ei tosiaan haittaa osata.
 
Liittynyt
07.01.2021
Viestejä
688
Jos haluaa kaiken tehdä itse, niin Hetzneriltä saa kyllä halvalla serveritilaa. Halvin paketti ei ole kuin muutaman euron. Itselläni taitaa olla toiseksi halvin ja sekin on alle vitosen kuukaudessa (+1 euro varmuuskopioista).
 
Liittynyt
01.02.2017
Viestejä
751
Mulla olis dataa tyyliin
Koodi:
[('2020-05-10 00:05:45', 'www.osoite.fi'), ('2020-05-10 18:05:50', 'www.osoite.fi'), ('2020-05-10 18:05:52', 'www.osoite.fi'), ('2020-05-10 18:05:54', 'www.osoite.fi'), ('2020-05-10 18:05:21', 'www.osoite.fi')]
ja tätä olisi siis paljon. Ulostulon muodon voi kyllä valita. Myös että aika ja osoite erikseen. Niin kuin arvataan, niin kyseessä on oman selaimeni sijaintihistoriasta. Kysymys on että miten tuon laittaisi esille parhaiten? Tarkoitus olisi käyttää pythonia ja ehkä plotlyä ym, se ei ole olennaista, vaan miten tuosta vääntäisi jotenkin informatiiviseen muotoon että milloin on tultu käytyä millä sivuilla jne jne statistiikkaa. Lähtisikö tuota grouppaamaan vuosien ja kuukausien ym mukaan jne että saisi piirakkaa väännettyä?
 
Liittynyt
26.10.2016
Viestejä
1 027
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
Helppo - Node.js
Hip - Go
Duunia tarjolla - .NET Core/C#
Panosta tulevaisuuteen - Rust
Oldie but (maybe) goldie - Java / C++

Tietokanta kombohan voi olla mikä tahansa, kyl se MySQL/MariaDB on ihan pätevä nykyäänkin. RDS puolella kuitenkin kokeilisin PostgreSQL ihan vaan vaihtelun vuoksi.
 

jad

Liittynyt
22.10.2016
Viestejä
1 219
phplla on todella helppo tehdä asioita ihan pirun väärin (ja aiheuttaa vahinkoa). Siksi se on "vihattu", ei siksi etteikö se olis "cool". Kaikissa kielissä on hyvä käyttää frameworkeja, mut varsinki php:n kans ei pidä sooloilla ellei varmasti tiedä mitä tekee, silloinki parempi triplatarkistaa koodi.
Allekirjoitan tämän, tosin kyllä mukaan vähän mahtuu tuota negatiivista cooliuskerrointakin. Varsinkin aloittelijat saavat aikaan vaikka mitä hauskaa. Mutta ihan mielenkiinnosta kysyn, että mitkä on mielestäsi ne pahimmat asiat, jotka php:llä on helppo tehdä väärin ?
 
Liittynyt
17.10.2016
Viestejä
5 417
Allekirjoitan tämän, tosin kyllä mukaan vähän mahtuu tuota negatiivista cooliuskerrointakin. Varsinkin aloittelijat saavat aikaan vaikka mitä hauskaa. Mutta ihan mielenkiinnosta kysyn, että mitkä on mielestäsi ne pahimmat asiat, jotka php:llä on helppo tehdä väärin ?
Vanhoissa PHP:n versioissa (esim 3 ja 4) oli paljon helpompi tehdä typeryyksiä, uudemmissa vissiin taitaa olla jo vähän fiksumpaa meininkiä ettei ihan pahimpia hölmöyksiä pääse vahingossa tekemään. Itse nykyään naputtelen PHP:ta sen verran harvoin etten oikein osaa tarkemmin sanoa. Toki itse käyn viimeiseen asti oman koodini läpi ja sanitoin kaiken mahdollisen ja muutenkin, mutta se on aika simppeliä kun rivejä vuodessa tulee ehkä parisen sataa.
 
Liittynyt
26.10.2016
Viestejä
1 027
Sen verran totean, että kyllä duunia on tarjolla Node.js-osaajalle tai Java-osaajalle varmasti siinä missä .NET Core/C# -osaajalle.
Joo kyllä varmasti, tämä vaan oman fiiliksen mukaan mitä nyt Linkkarista tarjotaan eniten. Ihan sama oikeastaan minkä noista valitsee, töitä varmasti löytyy tällä hetkellä.
 
Liittynyt
19.10.2016
Viestejä
1 563
Allekirjoitan tämän, tosin kyllä mukaan vähän mahtuu tuota negatiivista cooliuskerrointakin. Varsinkin aloittelijat saavat aikaan vaikka mitä hauskaa. Mutta ihan mielenkiinnosta kysyn, että mitkä on mielestäsi ne pahimmat asiat, jotka php:llä on helppo tehdä väärin ?
Minulta ei kysytty, mutta PHP:n ongelmat riippuvat varmaan vähän siitäkin, miten sitä käyttää. Oman kokemuksen mukaan perustavanlaatuisin ongelma on se, miten kieli yrittää lähestulkoon pakottaa ohjelman suorituksen jatkumaan erilaisista virheistäkin huolimatta, jolloin voi tapahtua kaikenlaista "hauskaa". Muitakin vaaranpaikkoja on, mutta tuo on ehkä perustavanlaatuisin (mutta käyttötavoista riippuen ei välttämättä pahin).
 
Liittynyt
17.10.2016
Viestejä
5 417
Minulta ei kysytty, mutta PHP:n ongelmat riippuvat varmaan vähän siitäkin, miten sitä käyttää. Oman kokemuksen mukaan perustavanlaatuisin ongelma on se, miten kieli yrittää lähestulkoon pakottaa ohjelman suorituksen jatkumaan erilaisista virheistäkin huolimatta, jolloin voi tapahtua kaikenlaista "hauskaa". Muitakin vaaranpaikkoja on, mutta tuo on ehkä perustavanlaatuisin (mutta käyttötavoista riippuen ei välttämättä pahin).
Eikös tuo ole PHP:n konffauksesta kiinni? ainakin itselläni PHP tuntui oksentavan kaikista virheistä ja jätti leikin kesken. Voi tietty olla etä jossakin muussa (linux) konfiguraatiossa oletuksena käyttäytyy huonommin. Toki voi olla että olen alitajuisesti käynyt muuttelemassa oletuksia tiukemmaksi enkä edes itse tajua asiaa...
 
Liittynyt
07.01.2021
Viestejä
688
Joo kyllä varmasti, tämä vaan oman fiiliksen mukaan mitä nyt Linkkarista tarjotaan eniten. Ihan sama oikeastaan minkä noista valitsee, töitä varmasti löytyy tällä hetkellä.
No jos katson linkkarista, niin eniten on tarjolla sularihommia.

Tai hmm.. voisiko johtua siitä, että LinkedIn tarjoaa itse kunkin profiiliin sopivia hommia enimmäkseen?
 
Liittynyt
03.03.2018
Viestejä
1 209
No jos katson linkkarista, niin eniten on tarjolla sularihommia.

Tai hmm.. voisiko johtua siitä, että LinkedIn tarjoaa itse kunkin profiiliin sopivia hommia enimmäkseen?
Tästähän se pääasiassa taitaa kyse olla. Minulle taas näkyy hirveä määrä frontend- ja erinäisten software devien hakuilmoituksia.
 
Liittynyt
19.10.2016
Viestejä
1 563
Eikös tuo ole PHP:n konffauksesta kiinni? ainakin itselläni PHP tuntui oksentavan kaikista virheistä ja jätti leikin kesken. Voi tietty olla etä jossakin muussa (linux) konfiguraatiossa oletuksena käyttäytyy huonommin. Toki voi olla että olen alitajuisesti käynyt muuttelemassa oletuksia tiukemmaksi enkä edes itse tajua asiaa...
Voipi olla. Mitään PHP-projektia en ole koskaan aloittanut, joten tuo puoli on vähän vieraampi. Ainakin melko legacy-tasoisen ohjelmiston kanssa työskennellessä on pitkälti elettävä aiemmin tehtyjen ratkaisujen kanssa, jolloin ongelmaksi koituu sanomani. Eipä tuosta toki käytännön haittaa ole hirveästi ollut, mutta tarkkana saa kyllä olla, ja varmasti olisi mahdollisuus isompiinkin ongelmiin.
 
Liittynyt
03.07.2018
Viestejä
347
Helppo - Node.js
Hip - Go
Duunia tarjolla - .NET Core/C#
Panosta tulevaisuuteen - Rust
Oldie but (maybe) goldie - Java / C++

Tietokanta kombohan voi olla mikä tahansa, kyl se MySQL/MariaDB on ihan pätevä nykyäänkin. RDS puolella kuitenkin kokeilisin PostgreSQL ihan vaan vaihtelun vuoksi.

Yksi pieni backend opiskelu-harrasteprojekti-idea olisi kesäloman ajaksi johon melkeimpä tarvitsisi php:n sijasta pythonin.
Mihis sellaisen python kikkareen voi sitten laittaa jotta se olisi julkisesti saavutettavissa? Ilmeisesti ainakin ngix-pitäisi laittaa eteen
 
Liittynyt
07.01.2021
Viestejä
688
Riippuu vähän tarpeista. Heroku on helppo ottaa käyttöön, mutta ilmaisessa versiossa on rajoitteensa.

Itse maksan mielelläni vajaan vitosen kuussa Hetznerille, siinä toki joutui tunkkaamaan alkuun enemmän, mutta tuo kakkostierin vehje riittää jo ihan kevyesti. Minulla on siellä nginx ja gunicorn. Tässä yksi ohje miten homman voi hoitaa: How to build a Flask app with WSGI and Nginx
 
Liittynyt
07.01.2021
Viestejä
688
Olisiko kenelläkään vinkkejä, miten nopeuttaa SQLAlchemy + Marshmallow -komboa? Vähänkin monimutkaisempi malli niin jo muutaman sadan rivin palauttaminen kestää 10+ sekuntia. Itse kysely ei kestä kauaa, mutta käsittääkseni SQLAlchemy ei välttämättä aktualisoi dataa ennen kuin sitä käyttää, joten vaikea sanoa kumpi tuossa on isompi ongelma. Tuo on sinällään kätevä systeemi, API:n muokkaaminen on helppoa kun tarvitsee lisätä tarvittavat kentät (tai relationshipit) ORM:iin ja/tai Marshmallowin modeliin, mutta tosiaan suorituskyky on aika heikko.

FastAPI varmaan auttaisi, mutta en nyt tässä vaiheessa viitsi tehdä noin radikaalia muutosta. Nykyinen UI kun on vielä Flaskin päällä. Kunhan saa jossain vaiheessa React-version valmiiksi niin sitten tuo voisi olla mahdollista. Pelkän API:n osalta muutos ei vaikuta kovin isolta. Mutta tekemistä on vielä aika tavalla ennen kuin tuohon pääsen.
 
Liittynyt
03.07.2018
Viestejä
347
Mitenkä loogisesti toimii toistuvien kalenterimerkintöjen ohjelmointi ?
Tarkemmin sanottuna toistuvien tapahtumien näyttäminen joissa on muistutus.
Eli jos käyttäjä tekee joka maanantai toistuvan tapahtuman joka jatkuu ikuisesti, niin eihän siitä voi oikeasti tehdä x-määrää tietokantarivejä jotta tapahtumat voidaan näyttää kalenterinäkymässä ennakkoon?
Sitten taas jos halutaan jokaisesta tapahtumatoistosta ylläpitää esim. torkku-, kuittaus- ym. tietoja niin ne pitäisi taas liittyä tietokantariviin jota ei ole olemassa jos sitä ei ole luotu...?
Jos taas tapahtumat luodaan jossain vaiheessa, niin miten se käsitellään että käyttäjä muokkaakin päätapahtumaa ja siirtää sen vaikka tiistaille ?
 
Liittynyt
01.01.2018
Viestejä
1 134
Mitenkä loogisesti toimii toistuvien kalenterimerkintöjen ohjelmointi ?
Tarkemmin sanottuna toistuvien tapahtumien näyttäminen joissa on muistutus.
Eli jos käyttäjä tekee joka maanantai toistuvan tapahtuman joka jatkuu ikuisesti, niin eihän siitä voi oikeasti tehdä x-määrää tietokantarivejä jotta tapahtumat voidaan näyttää kalenterinäkymässä ennakkoon?
Sitten taas jos halutaan jokaisesta tapahtumatoistosta ylläpitää esim. torkku-, kuittaus- ym. tietoja niin ne pitäisi taas liittyä tietokantariviin jota ei ole olemassa jos sitä ei ole luotu...?
Jos taas tapahtumat luodaan jossain vaiheessa, niin miten se käsitellään että käyttäjä muokkaakin päätapahtumaa ja siirtää sen vaikka tiistaille ?
Itse tekisin silleen että laitan tietokantaan esim repeat interval columnin ja laskisin sitten frontissa että minä päivinä tuo kuuluu toistaa. Toteutuneet kuittaukset tapahtumalle kirjaisin tietokantaan, mutta tulevat on aina laskettu frontissa. Jos käyttäjä poistaa tai muuttaa alkuperäisen rivin missä on toi toista column niin ei muuta kuin frontissa taas uudestaan laskemaan milloin toistetaan ja toteutuneet on toki tietokannassa turvassa.
 
Liittynyt
23.10.2016
Viestejä
658
Onko SQL-maailmassa olemassa samanlaista ilmaista palvelua kuin MongoDB Atlas? Tarvitsisin simppelin tietokannan jostain enkä haluaisi sitä itse hostata VPS:ssä.
 
Liittynyt
19.10.2016
Viestejä
3 452
Onko SQL-maailmassa olemassa samanlaista ilmaista palvelua kuin MongoDB Atlas? Tarvitsisin simppelin tietokannan jostain enkä haluaisi sitä itse hostata VPS:ssä.
Ei ilmainen, mutta voi kuulua mukaan joihinkin shelli, yms. palveluihin, jos sattuu jo olemaan. Ainakin kapsiin sisältyi, muistaakseni.
 
Liittynyt
18.10.2016
Viestejä
481
Itseopiskeluna on tullut pythonia harrastettua, ja sellaista miettinyt miten saan def/funktion sisällä variable/muuttujan dataa muutettua, ilman että aloittaa funktion uudelleen? Eli funktion parametrit muuttuisivat lennosta.

Olen tätä kiertänyt nyt näin: funktiota missä while-looppi, joka kerää tietoa eri lähteistä/class-oliot. Nämä oliot voidaan päivittää olion sisällä omalla komennollaan (olio hakee viimeisimmän datan sen omista lähteistään). Nämä oliot ovat syöttöparametrit alkuperäiseen funktioon.

Tässä koodia mitä olen testaillut:
Python:
class AlarmRules:
    def __init__(self, global_alarm_rules_variable_name: str):
        self._global_rules_var_name: str = global_alarm_rules_variable_name
        self.rules: dict = {}
        self.update_rules()

    def update_rules(self, global_alarm_rules_variable_name: str = None):
        if global_alarm_rules_variable_name is not None:
            self._global_rules_var_name: str = global_alarm_rules_variable_name

        if self._global_rules_var_name in globals():
            self.rules = globals()[self._global_rules_var_name]

        else:
            logging.error(f'AlarmRules: Variable {self._global_rules_var_name} not found in globals()')

def alarm_handler(measurements_object: InfluxData, alarms_object: AlarmsScanner, alarm_rules_object: AlarmRules):

    while True:
        load_settings_from_file('settings.ini') # hakee uusimmat asetukset (levyltä) ini tiedostosta muuttujille
        measurements_object.update_latest_datapoint() # päivittää uusimman saatavilla ovlean mittapisteen Influxdb:stä (ruuvitägit/lämpötilamittauksia)
        alarm_rules_object.update_rules() # update_rules päivittää olion rules-muuttujan, tiedolla mitä settings.ini tiedostosta löytyi
        alarms_object.update_alarms(alarm_rules_object.rules) # update_alarms päivittää olion alarms_to_notify-muuttujan sen mukaan mitä mittaukset ylittävät rules-muuttujan asetukset

        if alarms_object.is_alarms_to_notify is True: # is_alarms_to_notify = True/False tieto, jos hälytettävää on
            list_of_alarms = alarms_object.alarms_to_notify.copy() # tässä testissä alarm_acknowledgment kuittaa hälytyksen pois listalta, jolloin while looppi heittää errorit.
            for alarm in list_of_alarms:
                alarms_object.alarm_acknowledgment(alarm)
                # tähän esim. hue lamput vilkkumaan ja telegram viesti
                logging.info(f'Notify sent: ID[{alarm}] {list_of_alarms[alarm]}')
        time.sleep(5)

influx_meas = InfluxData(...influx databasen parametrit...) # InfluxData class. influx_meas.query_result mittausdata dict
alarm_rules = AlarmRules('hais_alarms') # AlarmRules class. hakee 'hais_alarms' nimisen muuttujan tiedon ja palauttaa sen alarm_rules.rules
active_alarms = AlarmsScanner(alarm_rules.rules, influx_meas.query_result) # AlarmsScanner class. palauttaa active_alarms.alarms_to_notify hälytyksen tiedot mitkä hälytetään/halutut toimenpiteet

alarm_handler(influx_meas, active_alarms, alarm_rules)

Tuntuu jotenkin epäpythonmäiseltä ja olen alkanut pyörää keksimään uudelleen... Minulla voi olla aivan väärä ajatusmalli/lähestymistapa tämän toteuttamiseen, ja koko juttu pitäisi toteuttaa aivan toisin. Ja terminologia voi olla myös hakusessa . So bear with me.
 
Liittynyt
05.11.2016
Viestejä
3 828
Mitenkä loogisesti toimii toistuvien kalenterimerkintöjen ohjelmointi ?
Tarkemmin sanottuna toistuvien tapahtumien näyttäminen joissa on muistutus.
Eli jos käyttäjä tekee joka maanantai toistuvan tapahtuman joka jatkuu ikuisesti, niin eihän siitä voi oikeasti tehdä x-määrää tietokantarivejä jotta tapahtumat voidaan näyttää kalenterinäkymässä ennakkoon?
Sitten taas jos halutaan jokaisesta tapahtumatoistosta ylläpitää esim. torkku-, kuittaus- ym. tietoja niin ne pitäisi taas liittyä tietokantariviin jota ei ole olemassa jos sitä ei ole luotu...?
Jos taas tapahtumat luodaan jossain vaiheessa, niin miten se käsitellään että käyttäjä muokkaakin päätapahtumaa ja siirtää sen vaikka tiistaille ?
Toteuttaisin yksinkertaisesti siten, että talteen laitetaan vain viikonpäivä, jolloin hälytys halutaan, ja joka päivä käydään läpi kaikki hälytykset tarkistaen, onko kukin juuri tänään ajankohtainen.
 

Ploro

Tukijäsen
Liittynyt
18.10.2016
Viestejä
481
Onkos täällä kivy:n käyttäjiä? En ole koodari, mutta koitan vähän harjoitella pythonia.

Räpelsin websocket clientin, serverin ja kivyllä UI:n. Websocket client lähettää serverille aikaa ja haluaisin tämän kivyyn. Kivy ja websocket server ovat omat .py filut, miten saisin päivitettyä muuttujaa kivyssä?

main.py sisältää globaalin muuttujan "data" (tiedän ettei globaalia tulisi käyttää, mutta koitan ensin saada tuon "ketjun" client-->server-->gui toimimaan).
gui.py sisältää kivy tavarat.

Mistä lähtisin liikkeelle, että saisin päivitettyä tuota data muuttujaa gui.py filussa?

Pahoittelut epäselvästä tekstistä
 

hrk

Liittynyt
23.07.2017
Viestejä
1 739
Mistä lähtisin liikkeelle, että saisin päivitettyä tuota data muuttujaa gui.py filussa?
Jos ajatus on, että jotain dataa luetaan ja kirjoitetaan useassa modulissa, niin yksinkertaisinta on sijoittaa se data uuteen moduliin, jonka muut importoivat ja jossa on määriteltynä sen datan käytössä tarvittavat funktiot, "setterit ja getterit", kätevimmin niin, että data on jossain dictin tai luokan kaltaisessa muokattavassa tietorakenteessa. Tai mietitään voisiko sen datan kuitenkin välittää funktioiden parametreina ja paluuarvoina.

Jos main.py importoi gui.py:n, ei gui.py voi importoida main.py:tä, eikä siis millään ilveellä pääse suoraan käsiksi main.py:n muuttujiin.

Pythonissa ei ole mitään esim. C-kielen kaltaista "extern"-mekanismia.

Pythonissa "muuttujien" (tunnusten) arvot ovat osoitteentapaisia viittauksia objekteihin, eikä yhdessä modulissa määriteltyjä viittauksia voi toisessa modulissa muuttaa. Itse objektien sisältöä voi kyllä muuttaa, paitsi jos ei voi. Siten listaa tai dictiä jne. voi muokata (objekti on "mutable"), mutta numeerisen tai loogisen muuttujan tai stringin arvon muuttaminen tarkoittaisi objektin ja viittauksen korvaamista uudella, ja sitä siis ei voi toisesta modulista käsin tehdä.

Global-määrettä tarvitaan silloin, kun funktiossa halutaan muuttaa saman modulin juuritasolla määriteltyä objektiviittausta, "muuttujan arvoa". Global-määrettä ei kuitenkaan tarvita, jos vain halutaan muokata viitattua mutable-objektia, esim. listaa. Modulien välillä global ei tarkoita mitään.
 
Viimeksi muokattu:

Ploro

Tukijäsen
Liittynyt
18.10.2016
Viestejä
481
Jos ajatus on, että jotain dataa luetaan ja kirjoitetaan useassa modulissa, niin yksinkertaisinta on sijoittaa se data uuteen moduliin, jonka muut importoivat ja jossa on määriteltynä sen datan käytössä tarvittavat funktiot, "setterit ja getterit", kätevimmin niin, että data on jossain dictin tai luokan kaltaisessa muokattavassa tietorakenteessa. Tai mietitään voisiko sen datan kuitenkin välittää functioiden parametreina ja paluuarvoina.

Jos main.py importoi gui.py:n, ei gui.py voi importoida main.py:tä, eikä siis millään ilveellä pääse suoraan käsiksi main.py:n muuttujiin.

Pythonissa ei ole mitään esim. C-kielen kaltaista "extern"-mekanismia.

Pythonissa "muuttujien" (tunnusten) arvot ovat osoitteentapaisia viittauksia objekteihin, eikä yhdessä modulissa määriteltyjä viittauksia voi toisesa modulissa muuttaa. Itse objektien sisältöä voi kyllä muuttaa, paitsi jos ei voi. Siten listaa tai dictiä jne. voi muokata (objekti on "mutable"), mutta numeerisen tai loogisen muuttujan tai stringin arvon muuttaminen tarkoittaisi objektin ja viittauksen korvaamista uudella, ja sitä siis ei voi toisesta modulista käsin tehdä.

Global-määrettä tarvitaan silloin, kun funktiossa halutaan muuttaa saman modulin juuritasolla määriteltyä objektiviittausta, "muuttujan arvoa". Global-määrettä ei kuitenkaan tarvita, jos vain halutaan muokata viitattua mutable-objektia, esim. listaa. Modulien välillä global ei tarkoita mitään.
Kiitoksia kunhan saan tuon koko ”ketjun” toimimaan niin sen jälkeen siistin sen parempaan ”muotoon”.
Kirjoitin melko epäselvästi, saan siis kyllä luettua gui:iin, en vaan tiennyt miten se olisi järkevää päivittää.
Löysin kuitenkin siihen jo vinkkejä kivyn clock objektista jota kokeilen viikonloppuna.
 

hrk

Liittynyt
23.07.2017
Viestejä
1 739
Tuntuu jotenkin epäpythonmäiseltä ja olen alkanut pyörää keksimään uudelleen... Minulla voi olla aivan väärä ajatusmalli/lähestymistapa tämän toteuttamiseen, ja koko juttu pitäisi toteuttaa aivan toisin. Ja terminologia voi olla myös hakusessa . So bear with me.
En oikein ymmärtänyt ongelmaasi ("funktion parametrit muuttuvat lennossa", mitähän se mahtaa tarkoittaa), mutta ajattelin nipottaa AlarmRules-luokasta, jolla kai on tarkoitus valita joku nimetyistä sääntökokoelmista, joiden sisäistä rakennetta ei ole lähemmin määritelty. Nyt sinulla ilmeisesti on modulin juuressa tämäntapaisia dictionaryja:

Koodi:
hiihaa = {
    "rule": {"aja": "hiljaa, isi"}
}

huuhaa = {
    "rule": {"nuku": "hyvin, pupuseni"}
}
Jossa siis hiihaa ja huuhaa ovat niiden säännöstöjen nimiä. Ja nyt siis pitäisi selvittää, mikä on jotakin mahdollisesti datana saatua tunnusta vastaava rule, jos mikään.

Jostain syystä olet päätynyt käyttämään pythonin sisäänrakennettua globals()-funktiota, joka palauttaa modulin globaalin symbolitaulu-dictionaryn. Sen avulla voitaisiin kirjoittaa tämäntapainen funktio:

Koodi:
def get_rule(name):
    return globals().get(name, {}).get("rule", {})
... joka käsittääkseni korvaa koko sen (anteeksi nyt) aika kummallisen AlarmRules-luokan. Pythonissa yksinkertainen on kaunista.

Mutta globals()-funktio on tarkoitettu erikoistapauksiin, ei sitä tavallisissa ohjelmissa tarvitse eikä pidä käyttää. Ne sääntökokoelmat voi koota yhteen dictionaryyn:

Koodi:
rules = {
    "hiihaa" : {
        "rule": {"aja": "hiljaa, isi"}
    },

    "huuhaa" : {
        "rule": {"nuku": "hyvin, pupuseni"}
    }
}
... jolloin siinä funktiossa korvautuu globals() -> rules. Nyt ei säännöstön enää tarvitse olla modulin juuressa globaalina, ja sen voi myös tarvittaessa helposti serialisoida jsoniksi.

Tämmöistä kirjoittelin aikani kuluksi.
 
Viimeksi muokattu:
Liittynyt
03.07.2018
Viestejä
347
Mitenkäs saisi oman nettisivun css-animaatiot exportattua videomuotoon ? Pelkkä näytön äänittämissofta ei tässä varmaan kaikkia efektejä ja resoluutiokin pitäisi saada just fullHD-kokoon..
 
Liittynyt
10.01.2017
Viestejä
133
Mites te ihmiset koette sen, että ohjelmointikielessä on jotain erilailla mihin yleensä on totuttu, ja yksi erilainen uusi ratkaisu olis liikaa? Mulla nimittäin on ongelma tämän kanssa, koska olen omaan DSL kieleeni duunanut esmes muuttujiin triggerit, eli kun muuttujan arvo muuttuu tietyksi niin triggeri-funktio laukeaa. Tämä on ominaisuus joka on saanut todella pajon vastapalloa, koska muissakaan kielissä ei vastaavaa juttua ole, niin ei sitä pidä olla missään muuallakaan (yleisön mielestä). Sitten lisäksi vastahankaa tulee syntaksista; jos skriptikieli näyttää snadisti assylta, niin se on kamalaa, koska kaikki yleisesti käytössä olevat skriptikielet näyttävät periaattessa samalta; if-else, switch-case ja hipsterinviiksisulkeita on kaikkialla. Tarkoitan siis että jos uusi/oma ratkaisu on uudenlainen, se on jotenkin väärä, tai liikaa. Miten ihmeessä kielien syntaksi voi kehittyä, ja mikä sitä vie eteenpäin? Yleensä kehitystä tekee kyseenalaistaminen. Tässä on DSL (Ano skripti [Ano tarkoittaa tsekiksi 'kyllä' eikä espanjaksi jotain muuta ]) esimerkki malliksi:
https://goto10.co/projects/detroit/trunk/apps/fossmixer/fossmixer.ano . Ja tässä toinen, https://goto10.co/projects/detroit/trunk/examples/gui_vesmir/gui_vesmir.ano , jonka olemassaoloa ja järkevyyttä joudun selittämään uudelleen ja uudelleen, koska Ano skripti ei näytä esmes powershelliltä.
 
Liittynyt
17.10.2016
Viestejä
5 713
Mites te ihmiset koette sen, että ohjelmointikielessä on jotain erilailla mihin yleensä on totuttu, ja yksi erilainen uusi ratkaisu olis liikaa? Mulla nimittäin on ongelma tämän kanssa, koska olen omaan DSL kieleeni duunanut esmes muuttujiin triggerit, eli kun muuttujan arvo muuttuu tietyksi niin triggeri-funktio laukeaa. Tämä on ominaisuus joka on saanut todella pajon vastapalloa, koska muissakaan kielissä ei vastaavaa juttua ole, niin ei sitä pidä olla missään muuallakaan (yleisön mielestä). Sitten lisäksi vastahankaa tulee syntaksista; jos skriptikieli näyttää snadisti assylta, niin se on kamalaa, koska kaikki yleisesti käytössä olevat skriptikielet näyttävät periaattessa samalta; if-else, switch-case ja hipsterinviiksisulkeita on kaikkialla. Tarkoitan siis että jos uusi/oma ratkaisu on uudenlainen, se on jotenkin väärä, tai liikaa. Miten ihmeessä kielien syntaksi voi kehittyä, ja mikä sitä vie eteenpäin? Yleensä kehitystä tekee kyseenalaistaminen. Tässä on DSL (Ano skripti [Ano tarkoittaa tsekiksi 'kyllä' eikä espanjaksi jotain muuta ]) esimerkki malliksi:
https://goto10.co/projects/detroit/trunk/apps/fossmixer/fossmixer.ano . Ja tässä toinen, https://goto10.co/projects/detroit/trunk/examples/gui_vesmir/gui_vesmir.ano , jonka olemassaoloa ja järkevyyttä joudun selittämään uudelleen ja uudelleen, koska Ano skripti ei näytä esmes powershelliltä.
No ihan yleisesti ottaen, käytännössä kaikissa kielissä on jotain mikä toimii eri tavoin kuin muissa kielissä. Se on täysin luonnollista, eikä siinä ole mitään väärää. Sen sijaan sitten onkin syytä kysyä, miksi halutaan että jokin asia toimii eri tavoin. Jos sille ei löydy järkiperusteita, niin kannattaa oikeasti miettiä kannattaako olla erilainen vain sen erilaisuuden vuoksi.

Mitä tulee siihen, että miten kielen syntaksi kehittyy, niin se ei ainakaan kehity paremmaksi sillä, että jätetään käyttäjien/yhteisön kehitysehdotukset huomioimatta.

Ja spesifimmin noihin kahteen kohtaan:
Muuttujien arvon vaihtoon liittyvä triggeri? Toivottavasti tämä ei ainakaan ole sellainen että kaikilla muuttujilla kaikkialla tulee vastaan. Todennäköisesti aiheuttaa hemmetisti harmaita hiuksia. Eri asia sitten jos on erillinen muuttujatyyppi, mikä sisältää tuollaisen triggerin, ja käyttäjä voi itse hallita sen käyttöä fiksusti.

Syntaksi näyttää omaan silmään tunkilta. Mutta kun en ollenkaan tiedä että mihin tätä kieltäsi käytetään ja sitä kautta millainen tausta kielesi keskivertokäyttäjällä on tai mitä muita vaihtoehtoja samassa domainissa on, niin paha mennä sanomaan onko se sitten oikeasti huono vai ei. Mutta jos suurelta osalta käyttäjiä tulee palautetta, niin todennäköisesti kehitettävää on.
 
Viimeksi muokattu:
Liittynyt
17.10.2016
Viestejä
1 124
Mites te ihmiset koette sen, että ohjelmointikielessä on jotain erilailla mihin yleensä on totuttu, ja yksi erilainen uusi ratkaisu olis liikaa? Mulla nimittäin on ongelma tämän kanssa, koska olen omaan DSL kieleeni duunanut esmes muuttujiin triggerit, eli kun muuttujan arvo muuttuu tietyksi niin triggeri-funktio laukeaa. Tämä on ominaisuus joka on saanut todella pajon vastapalloa, koska muissakaan kielissä ei vastaavaa juttua ole, niin ei sitä pidä olla missään muuallakaan (yleisön mielestä). Sitten lisäksi vastahankaa tulee syntaksista; jos skriptikieli näyttää snadisti assylta, niin se on kamalaa, koska kaikki yleisesti käytössä olevat skriptikielet näyttävät periaattessa samalta; if-else, switch-case ja hipsterinviiksisulkeita on kaikkialla. Tarkoitan siis että jos uusi/oma ratkaisu on uudenlainen, se on jotenkin väärä, tai liikaa. Miten ihmeessä kielien syntaksi voi kehittyä, ja mikä sitä vie eteenpäin? Yleensä kehitystä tekee kyseenalaistaminen. Tässä on DSL (Ano skripti [Ano tarkoittaa tsekiksi 'kyllä' eikä espanjaksi jotain muuta ]) esimerkki malliksi:
https://goto10.co/projects/detroit/trunk/apps/fossmixer/fossmixer.ano . Ja tässä toinen, https://goto10.co/projects/detroit/trunk/examples/gui_vesmir/gui_vesmir.ano , jonka olemassaoloa ja järkevyyttä joudun selittämään uudelleen ja uudelleen, koska Ano skripti ei näytä esmes powershelliltä.
Sen lisäksi mitä tuossa ylempänä jo kommentoitiin, haluaisin kysyä että onko joku oikeasti sanonut noin? Että tuo triggeri feature on huono sen vuoksi että sitä ei ole muualla? Kuulostaa nimittäin hiukan epätodennäköiseltä perusteelta, ja enemmän tulee mieleen että ne todelliset perusteet on sivuutettu ja vedetty johtopäätöksissä mutkat suoriksi. Mutta tietämättä kuinka se toimii ja miten sitä olisi tarkoitus käyttää, vähän turhaa itse ominaisuudesta yrittää arvailla mitään.

Ja mitä syntaksin kritisointiin niin tässä ollaan vähän saman äärellä. Omaan silmään syntaksi tuossa kielessä, oli se nyt nimetty Ano Turtiaisen tai minkä tahansa mukaan, ei näytä kovinkaan uudenlaiselta eikä muutenkaan inspiroivalta. Ei siksi että se ei näytä niiltä kieliltä mihin olen tottunut, vaan sen vuoksi miltä se noiden esimerkkien perusteella näyttää: vähän alkeelliselta ja kankealta.

Mutta olen minä nähnyt, ja käyttänytkin, paljon karseampiakin syntakseja, että ei tuo nyt erityisen huono ole. Käyttötarkoituksesta ja -kohteista riippuen voi olla hyvinkin tarpeisiin soveltuva.
 
Liittynyt
07.01.2021
Viestejä
688
Ihan omien syntaksien käytössä on se ongelma, että muille käyttäjille opettelu on isomman kynnyksen takana. Itse en oikein näe etua tuossa assemblerin kaltaisessa syntaksissa. Se on useimmille hankalampaa. Esimerkiksi miksi cmp eikä if? Esimerkiksi
Koodi:
    cmp    rc ((int) 0)
    je    "cb_open_ok"

    ; Leave if constructing user interface failed
    window_close (\
        window_handle:        hnd_wnd_main)

    exit

: "cb_open_ok"
    ; Map main window if constructing user interface was ok
    window_map (\
        window_handle:        hnd_wnd_main)
On hankalampi lukea kuin yksinkertaisempi
Koodi:
if (rc != (int)0)
  # Leave if constructing user interface failed
  window_close()
  exit

# Map main window if constructing user interface was ok
window_map()
Eihän siinä ole mitään vikaa jos itse tykkäät tuosta syntaksista, mutta ei toisaalta kannata ihmetellä jos muut eivät pidä.
 

Hessu

Tukijäsen
Liittynyt
29.10.2016
Viestejä
4 420
Mites te ihmiset koette sen, että ohjelmointikielessä on jotain erilailla mihin yleensä on totuttu, ja yksi erilainen uusi ratkaisu olis liikaa? Mulla nimittäin on ongelma tämän kanssa, koska olen omaan DSL kieleeni duunanut esmes muuttujiin triggerit, eli kun muuttujan arvo muuttuu tietyksi niin triggeri-funktio laukeaa. Tämä on ominaisuus joka on saanut todella pajon vastapalloa, koska muissakaan kielissä ei vastaavaa juttua ole, niin ei sitä pidä olla missään muuallakaan (yleisön mielestä). Sitten lisäksi vastahankaa tulee syntaksista; jos skriptikieli näyttää snadisti assylta, niin se on kamalaa, koska kaikki yleisesti käytössä olevat skriptikielet näyttävät periaattessa samalta; if-else, switch-case ja hipsterinviiksisulkeita on kaikkialla. Tarkoitan siis että jos uusi/oma ratkaisu on uudenlainen, se on jotenkin väärä, tai liikaa. Miten ihmeessä kielien syntaksi voi kehittyä, ja mikä sitä vie eteenpäin? Yleensä kehitystä tekee kyseenalaistaminen. Tässä on DSL (Ano skripti [Ano tarkoittaa tsekiksi 'kyllä' eikä espanjaksi jotain muuta ]) esimerkki malliksi:
https://goto10.co/projects/detroit/trunk/apps/fossmixer/fossmixer.ano . Ja tässä toinen, https://goto10.co/projects/detroit/trunk/examples/gui_vesmir/gui_vesmir.ano , jonka olemassaoloa ja järkevyyttä joudun selittämään uudelleen ja uudelleen, koska Ano skripti ei näytä esmes powershelliltä.
Allekirjoitan pitkälti ylemmät kommentit. Muutamia ajatuksia mitä näistä tulee mieleen:
Kielet kehittyvät aika pitkälti koko aika ihmiselle ymmärrettävämpään muotoon. Ainakin omasta mielestäni paras, kun kieli on mahdollisimman mukava luettava/koodattava. Omassa työssä esim. Java -> Kotlin on näyttänyt miten paljon pienillä asioilla on sitten loppupeleissä vaikutusta siihen koodarin tehokkuuteen. Ja tuo on se asia mitä isommissa softataloissa halutaan, tehokkuutta niin suorituspuolella kuin ohjelmistokehityksessä. Syntaksi on tosiaan monissa hyvin samanlainen ja varmasti siksi, että se on jo hyväksi todettu. Pieniä muutoksia ja helpotuksiahan noihin tulee jatkuvasti, kuten em.
Perusmuuttujien triggerit on kyllä omastakin mielestäni ehkä hieman hc ratkaisu, kun kuitenkaan sen perusmuuttujan tarkoitus ei ole tarjota muuta kuin sen muuttujan tyyppi ja aivan yleisimmät ja tarpeellisimmat toiminnallisuudet. Tuollaisia observereita on kuitenkin lähes jokaisessa kirjastossa erikseen, joita voi rekisteröidä käytännössä lähes kaikille tietorakenteille ja tällöin se muutoksen observointi on tarkoituksenmukaista.
Mutta kuten todettu, kauneus on katsojan silmissä. Itse pidän edelleen aaltosulkeista ym. koska koodi on tällöin paljon säännönmukaisempaa ja mukavampaa lukea.
 
Liittynyt
19.10.2016
Viestejä
1 940
Moi, löytyykö täältä tietäjää auttamaan.
Miten luodaan filu, joka ajettaessa tekee seuraavan asian:

ssh username@192.168.86.1
antaa salasanan
sen jälkeen antaa komennon "reboot" ja perään enter

Tuo komento annetaan siis eri työasemasta kuin mikä tuo 192.168.86.1 laite on. Eli filu ajaa remotena ssh-yhteyden auki ja kirjautuu sisään, ja antaa vielä lopuksi kommennon.
 
Liittynyt
17.10.2016
Viestejä
14 744
Moi, löytyykö täältä tietäjää auttamaan.
Miten luodaan filu, joka ajettaessa tekee seuraavan asian:

ssh username@192.168.86.1
antaa salasanan
sen jälkeen antaa komennon "reboot" ja perään enter

Tuo komento annetaan siis eri työasemasta kuin mikä tuo 192.168.86.1 laite on. Eli filu ajaa remotena ssh-yhteyden auki ja kirjautuu sisään, ja antaa vielä lopuksi kommennon.
Sä tuskin haluat ikinä salasanaa selväkielisenä mihinkään filuun. Eli luo mieluummin avainpari, asenna se sinne kohdekäyttikseen ja sillä voit kirjautua ilman salasanaa. ssh:lla voi ajaa komennon ihan vaan antamalla sen komennon sinne perään. Eli "ssh username@192.168.86.1 reboot".
 
Liittynyt
19.10.2016
Viestejä
1 940
Sä tuskin haluat ikinä salasanaa selväkielisenä mihinkään filuun. Eli luo mieluummin avainpari, asenna se sinne kohdekäyttikseen ja sillä voit kirjautua ilman salasanaa. ssh:lla voi ajaa komennon ihan vaan antamalla sen komennon sinne perään. Eli "ssh username@192.168.86.1 reboot".
Joo ei salasanaa selkokielellä. Avainpari pitäisi luoda. Ymmärränkö nyt oikein, että toi avainparin luonti tehdään yhteyttä ottavassa koneessa. Sori, tää on mulle täysin uutta ja mielenkiintoista. Eli en mene koneelle .1 luomaan avainparia, vaan se prosessi starttaa komentoja lähettävästä remotesta?
 

Zigh

Tittelitön
Liittynyt
17.10.2016
Viestejä
4 670
Joo ei salasanaa selkokielellä. Avainpari pitäisi luoda. Ymmärränkö nyt oikein, että toi avainparin luonti tehdään yhteyttä ottavassa koneessa. Sori, tää on mulle täysin uutta ja mielenkiintoista. Eli en mene koneelle .1 luomaan avainparia, vaan se prosessi starttaa komentoja lähettävästä remotesta?
Kyllä.
 
Liittynyt
17.10.2016
Viestejä
14 744
Joo ei salasanaa selkokielellä. Avainpari pitäisi luoda. Ymmärränkö nyt oikein, että toi avainparin luonti tehdään yhteyttä ottavassa koneessa. Sori, tää on mulle täysin uutta ja mielenkiintoista. Eli en mene koneelle .1 luomaan avainparia, vaan se prosessi starttaa komentoja lähettävästä remotesta?
Avainparin voit luoda millä koneella vaan, mutta yleensä luot sen lokaalisti omalla koneellasi. Sitten kopioit julkisen avaimen sinne remote-koneelle halutun käyttäjän hakemistoon "~/.ssh/authorized_keys". Sen voi tehdä ihan copypastella tai käyttää lokaalin koneen komentoriviä. Tuossa yllä tulikin tutoriaali. Niitä on netti pullollaan.

Sitten otat ssh:lla yhteyden. Ssh käyttää oletuksena sun oman koneen "~/.ssh/id_rsa"-nimistä avainta.

Ja sun tapauksessa et halua antaa avainparille salasanaa. Sitten sitä voi käyttää näppärästi skripteissä.

Avainpareja voi luoda ihan niin monta kuin haluat ja niille voi antaa omia nimiä. Ja niihin voi laittaa kommentin sinne filun sisään. Se voi kannattaa, jotta muistat, mitä käyttöä varten kukin avain on tehty.
 
Liittynyt
19.10.2016
Viestejä
1 940
Nyt vielä varmistan. Kohdekone on verkkolaite, joka tottelee SSH:ta tarvittaessa. Eli luon komennon lähettävällä remotekoneella avaimen ja sen nyt onnistuinkin tekemään. Nyt ongelmana on tuon avaimen kopioiminen kun ssh-copy-id komento ei toimi (openssh ei ollut asennettuna, nyt on, mutta ei vaikutusta).
Millä helvetillä saan tuon filun nyt sinne laitteelle?
 
Liittynyt
17.10.2016
Viestejä
5 417
Nyt vielä varmistan. Kohdekone on verkkolaite, joka tottelee SSH:ta tarvittaessa. Eli luon komennon lähettävällä remotekoneella avaimen ja sen nyt onnistuinkin tekemään. Nyt ongelmana on tuon avaimen kopioiminen kun ssh-copy-id komento ei toimi (openssh ei ollut asennettuna, nyt on, mutta ei vaikutusta).
Millä helvetillä saan tuon filun nyt sinne laitteelle?
scp:llä pystyt kopioimaan tiedostoja ssh:n yli. Tosin, saattaa olla että joudut säätämään tuon verkkolaitteen ssh-serverin konffaa että saat avaimella kirjautumisen toimimaan eli laittaa sieltä päälle publickey-authin.

Tai sitten ihan vaan kun olet ottanut ssh-yhteyden niin avaat jonkun editorin (vi varmaankin löytyy verkkopurnukan käyttiksestä) ja copypasteat tuon avaintiedoston sisällön.
 
Toggle Sidebar

Statistiikka

Viestiketjut
240 790
Viestejä
4 207 012
Jäsenet
70 961
Uusin jäsen
Muffini

Hinta.fi

Ylös Bottom