Näytä kirjoitukset

Tässä osiossa voit tarkastella kaikkia tämän jäsenen viestejä. Huomaa, että näet viestit vain niiltä alueilta, joihin sinulla on pääsy.


Aiheet - teele

Sivuja: 1 2 3 [4] 5 6 ... 18
61
Sivun

https://javascript.info/fetch

ohjeiden  mukaan javascriptin fetchin kanssa käytetään awaitia, mutta jos await-sanan laittaa Firefoxin javascriptiin, javascriptin toiminta loppuu eikä painikkeen javascript vastaa mitään esimerkiksi tässä kokeiluohjelmassa

Koodia: [Valitse]
<!DOCTYPE html>
<html>
<head>
<title> syöttökaavake, versio 01 </title>
</head>

<body style="text-align: left;">
 <h1 style="color: green;"> Syöttökaavake </h1>
 
<p> Napsauta kaavake auki </p>
<button onClick="fetch_test_fun()">Avaa kaavake </button>
<p id="prgh"></p>

 <script>
 
 function fetch_test_fun()

  alert("kokeilufunktio alkaa");
  let response = await fetch("/hello");
  //let text = await response.text(); // read response body as text
  //alert(text.slice(0, 80) + '...');           
}
 
</script>       
</body>   
</html>

<!--
https://javascript.info/fetch
 
https://javascript.info/xmlhttprequest

 -->


Fetch vaikuttaa muuten kätevämmältä kuin xhtmlrequest, jos halutaan pikku viestejä palvelimelta vaikka libhttpserveriltä. Mitä pitäsi tehdä, await pois vai xhtmlrequestin pariin vai joku muu (mukavan helppo) ratkaisu pikku viestien kyselyyn palvelimelta.



62
Yrittäisin saada std::string-tyyppisen muuttujan arvoksi html-sivun koodin. Tässä  alla pieni lomakekokeiolu, joka ei toimi, MIkä olisi hyvä tapa laittaa std::stringin arvoksi html-koodia, olisiko siihen jotain oikotietä vai pitääkö \ -merkkejä vain sijoitella eri paikkoihin tai kahdentaa " -merkkejä tai ......... ?

Koodia: [Valitse]

#include <iostream>
int main()

{
  std::string str4 =
     " <form action=" http://localhost:8080/hello"  method="post"> "  ";
  std::cout << str4 << std::endl;
 
  return 0;
}

63
Pitemmässä merkkijonossa on lyhyitä alimerkkijonoja, jotka haluttaisiin korvata niiden uusilla arvoilla.

aaa  aa x0x1  aaa x2   a x3 aaaaaaaaaaaaaa x4 .....

Kaikki x-arvot halutaan korvata uusilla arvooilla, jotka voivat olla vaikka suoraan vektoriista [y0, y2, y3 .... ] tai muulla tavalla tunnettuja niin, että jokaista x-arvoa pitäisi tulla korvaamaan tunnettu uusi y:n arvo

aaa  aa y0y1  aaa y2   a y3 aaaaaaaaaaaaaa y4 .....

Miten korvaus kannattaisi tehdä c++ :aa ja sen stl: ää käyttäen niin, että ei tekisi turhan raskasta proseduuria, O(n) tuntuisi mahdolliselta.




 

64
Onko helppoa tapaa saada pii-kirjain tavalliseen tekstiin libreofficen writessä. Nettiä selaamalla ei oikein tunnu selviävän :(

https://www.linuxtopia.org/online_books/office_guides/openoffice_writer_user_guide/openoffice_guide_Greek_characters.html

kumpikaan ohjeen keinoista ei näytä toimivan. Koneessani on vakio Ubuntu 20.04.

Muokk.

Näköjään helpoin tapa yhden π :n saamiseksi on kopioida kirjain vaikka jostain nettisivulta.

https://www.greeksymbols.net/pi-symbol

Ei vaikuta kovin viralliselta, mutta riittänee kotikäyttöön :)


Muokk. 2

Oikea tapa on nm:n vastauksessa nuvottu Lisää --> Erikoismerkit ja sieltä valittu suosikkimerkkeihinkin kuuluva  π  Kiitos vastauksesta   :) 


65
Kkeilussa on tällainen libhttpserver-ohjelma

Koodia: [Valitse]
#include <iostream>
//// /home/k1/Documents/my_libhttpserver/libhttpserveri/libhttpserver/
#include "/home/k1/Documents/my_libhttpserver/libhttpserveri/libhttpserver/src/httpserver.hpp"

class hello_world_resource : public httpserver::http_resource {
 public:
     const std::shared_ptr<httpserver::http_response> render(const httpserver::http_request&);
     void set_some_data(const std::string &s) {data = s;}
     std::string data;
};

// Using the render method you are able to catch each type of request you receive
const std::shared_ptr<httpserver::http_response> hello_world_resource::render(const httpserver::http_request& req) {
    // It is possible to store data inside the resource object that can be altered through the requests
    std::cout << "Data was: " << data << std::endl;
    std::string datapar = req.get_arg("data");
    set_some_data(datapar == "" ? "no data passed!!!" : datapar);
    std::cout << "Now data is:" << data << std::endl;

    // It is possible to send a response initializing an http_string_response that reads the content to send in response from a string.
    return std::shared_ptr<httpserver::http_response>(new httpserver::string_response("Hello World!!!", 200));
}

int main() {
    // It is possible to create a webserver passing a great number of parameters. In this case we are just passing the port and the number of thread running.
    httpserver::webserver ws = httpserver::create_webserver(8080).start_method(httpserver::http::http_utils::INTERNAL_SELECT).max_threads(5);

    hello_world_resource hwr;
    // This way we are registering the hello_world_resource to answer for the endpoint
    // "/hello". The requested method is called (if the request is a GET we call the render_GET
    // method. In case that the specific render method is not implemented, the generic "render"
    // method is called.
    ws.register_resource("/hello", &hwr, true);

    // This way we are putting the created webserver in listen. We pass true in order to have
    // a blocking call; if we want the call to be non-blocking we can just pass false to the method.
    ws.start(true);
    return 0;
}

joka on käännetty komennolla

Koodia: [Valitse]
g++ libhttpserver01.cpp -o libhttpserver01 -Wall -pedantic -L/usr/local/lib -lhttpserver -lmicrohttpd  -pthread -std=c++17

html-sivun lomakkeelta parametrit siirtyvät data-nimisten kenttien avulla.

Koodia: [Valitse]
<!DOCTYPE html>
<html>
<body>

<h1>Lomakekokeilu post- ja get-menetelmät</h1>

<form action=" http://localhost:8080/hello"  method="post">
  <label for="fname1">First name:</label>
  <input type="text" id="fnameid1" name="data"><br><br>
  <label for="fnmame2">Last data:</label>
  <input type="text" id="dataid2" name="data"><br><br>
 
  <button type="submit">Lähetä post</button>
  </form>
  </br> </br> </br> </br>
 
  <!--  get ei lähettäne ääkkösiä oikein --!>
 
  <form action=" http://localhost:8080/hello"  method="GET">
  <label for="fname">First name:</label>
  <input type="text" id="fname" name="data"><br><br>
  <label for="data">Last data:</label>
  <input type="text" id="data" name="data"><br><br>
 
  <button type="submit">Lähetä get</button>
  </form>
  "   "
  </br> </br> </br> </br>
 
<form>
  <button type="submit" formaction="http://localhost:8080/hello"
          method="post">Lähetä tyhjä post
  </button>
</form>

</body>
</html>

Mutta kentät näyttävät menevän suoraan peräkkäin libhttpserver-ohjelmaan. Toivomus olisi saada kentät erotelluiksi ja jos mahdollista muodossa kenttänimi kenttäarvo -pareina libhttpserver-puolelle, jos mahdollista mahdollisimman vähillä javascript-kikkailuilla html-puolella. Ehkä vähän php:n post-taulukon tyylisesti.





66
Githubista on haettu libhttpserver, mutta.  ./bootstrap ilmoitti LIBTOOLIN puuttumisesta

Koodia: [Valitse]
$ ./bootstrap
./bootstrap: line 25: libtoolize: command not found
configure.ac:39: installing './compile'
configure.ac:32: installing './config.guess'
configure.ac:32: installing './config.sub'
configure.ac:29: installing './install-sh'
configure.ac:29: installing './missing'
examples/Makefile.am: installing './depcomp'
src/Makefile.am:21: error: Libtool library used but 'LIBTOOL' is undefined
src/Makefile.am:21:   The usual way to define 'LIBTOOL' is to add 'LT_INIT'
src/Makefile.am:21:   to 'configure.ac' and run 'aclocal' and 'autoconf' again.
src/Makefile.am:21:   If 'LT_INIT' is in 'configure.ac', make sure
src/Makefile.am:21:   its definition is in aclocal's search path.
parallel-tests: installing './test-driver'

Makefile.am on tällainen

Koodia: [Valitse]
LIBTOOL_DEPS = @LIBTOOL_DEPS@

AUTOMAKE_OPTIONS = foreign 1.4
ACLOCAL_AMFLAGS = -I m4

SUBDIRS = src
DIST_SUBDIRS = src

if !COND_CROSS_COMPILE
SUBDIRS += test
DIST_SUBDIRS += test

if BUILD_EXAMPLES
SUBDIRS += examples
DIST_SUBDIRS += examples
endif

endif

EXTRA_DIST = libhttpserver.pc.in $(DX_CONFIG)

MOSTLYCLEANFILES = $(DX_CLEANFILES) *.gcda *.gcno *.gcov
DISTCLEANFILES = DIST_REVISION

pkgconfigdir = $(libdir)/pkgconfig
pkgconfig_DATA = libhttpserver.pc

cmakemoduledir = $(datadir)/cmake/Modules
cmakemodule_DATA = cmakemodule/FindLibHttpServer.cmake

include $(top_srcdir)/aminclude.am

# Update libtool, if needed.
libtool: $(LIBTOOL_DEPS)
$(SHELL) ./config.status --recheck

dist-hook:
date >DIST_REVISION
git branch -vv >>DIST_REVISION
cp DIST_REVISION $(distdir)/

Mutta LT_INIT näyttää jo olevan configure.ac :ssä

Koodia: [Valitse]
.
.
.
OLD_CXXFLAGS=$CXXFLAGS
LT_INIT
AC_PROG_CC
AC_PROG_CXX()
AC_PROG_LN_S
CXXFLAGS=$OLD_CXXFLAGS
AC_LANG([C++])
AC_SYS_LARGEFILE[
.
.
.
/code]

Miten saisi LIBTOOL - puutteen korjattua.






67
Monet ohjelmat ovat saatavissa githubin kautta. Tarkottaako tämä käytännössä sitä, että kannattaa asentaa github tai git omaan koneeseen

https://www.howtoforge.com/tutorial/install-git-and-github-on-ubuntu/

esimerkiksi linkin ohjeiden mukaan.

Toinen kysymys on, oppiiko sitä harrastelijana käyttämään eli ovatko sen toiminnat niin vakioita, että monia ohjelmia voi kokeilla samanlaisen menettelyn avulla. Esimerkisi sivun

https://github.com/etr/libhttpserver

ohjeista

"ibhttpserver uses the standard system where the usual build process involves running

    ./bootstrap
    mkdir build
    cd build
    ../configure
    make
    make install # (optionally to install on the system)"

voisi vähän päätellä, että joitain vakiomenettelyjä on olemassa.

Millaisella hakemistorakenteella tai muulla tavalla voisi huolehtia siitä, että tällä tavoin asennetut ohjelmat saa myös poistettua, pitäisikö luoda uusi käyttäjä koneelle vain kokeilutarkoituksiin ja sitten poistaa koko käyttäjä, jos asiat alkavat mennä liian mutkikkaiksi.


68
Haluaisin lähettää selaimesta esimerkiksi viiden input-kentän sisältämän tekstikentän arvon post-kyselynä c++ -perusteiselle pikku palvelimelle samassa kotikoneessa.

Millainen on Firefoxin lähettämä post-pyyntö ja miten se kannattaisi tulkita pienellä c++ -palvelimella. Mitään ssh:ta ei tarvita, koska kaiikki toimii kotikoneella ja selain olisi vain arvojen syöttämistä varten.

Php:llä voisi varmaan saada myös toimimaan, mutta olisi mukava opetella vähän perusasioitakin eli selaimen kutsujen käsittelyä.

69
Pankkitilin tiedot on satavissa tämän näköisessä muodossa

26.11.2021    
PALVELUMAKSU
PALVELUMAKSUT AJALTA 1.-31.10.2021    Palvelumaksu    -1,50 EUR
22.11.2021    
Peräkylän Sähkö Oy
765498 143764 760362    Tilisiirto    -143,91 EUR

Toiveena olisi saada tiedot c++ -vektoriin esimerkiksi muodossa
päivämäärä maksunsaaja euromäärä

Regexin avulla voisi tunnistaa päivämäärän ja seuraavalta riviltä maksun saajan
sekä kolmannelta riviltä euromäärän vaikka sen sisältämän pilkun avulla.

Mutta rivejä on vaihteleva määrä. Regexin ryhmien määrä olisi kai tiedettävä siis etukäteen?

Mikä olisi järkevin tapa saada päivämäärä, maksun saaja ja euromäärä c++ -vektoriin tällaisesta tekstimuotoisesta tilitapahtumatiedostosta.
Kannattaisiko tiedosto käydä läpi niin, että aina luettaisiin kolme riviä käsittelyä varten ja koko tiedosto askellettaisiin kolmen rivin ryhmissä.

En ole koskaan helposti onnistunut saamaan tilitietoja suoraan taulukkolaskentaan, vaikka se on varmaan periaatteessa mahdollista: liikaa säätöjä ja kieli- ym. asetuyksia, enkä muista koskaan selvinneeni niistä :(

70
Tähän asti pilvikoneelle on kytkeydytty ssh-komennolla päätteen kautta ja tarvittavia tiedostomuokkauksia on tehty päätteessä pilvikoneen nanolla, mikä ei ole ihan huippukätevää.

Netissä on useita ohjeita, miten etähakemisto liitetään kotikoneeseen sshfs:n kanssa, ilman fusea tai fusen kanssa. Mutta mikä olisi ajantasaisin ja kätevin menettely, ei ole ihan selvää.

Joskus aikaisemmin Ubuntun perusikkunassakin taisi olla Files-valikossa kohta Connect to remote server tai jotain sellaista. Onko tällaista mahdollisuutta nykyään. Onko Filesin valinnalla Windows network merkitystä tässä asiassa.

Tarkoituksena olisi päästä joihinkin etäkansioihin ja käyttää Geditiä etäkoneella olevien tiedostojen muokkaukseen. Päätekäyttöä varten ssh-avaimet on jo laitettu ja päätekäyttö toimii ihan hyvin.

Lyhennelmä: Miten kirjautua asiakkaana "käyttäjä" etäkoneelle niin, että voi käsitellä kansioita ja tiedostoja niin, kuin ne olisivat omalla kotikoneella.


71
Pilvikoneessa on Ubuntu 18.04 ja toiveena olisi, että siellä voisi käyttää vaikka nanoa myös miettimisaikojen kera. Mutta yhteys katkeaa ilmeisestikin siksi, että kotikoneella ei tehdä päätteellä mitään, mikä pitäisi yhteyden pilvikoneeseen yllä. Automaattisen katkaisun aika on ikävän lyhyt.

Nyt pilvikoneelle on lisätty nanon kanssa (  sudo nano /etc/ssh/sshd_config )

ClientAliveInterval  3600

ja

tehty  sudo systemctl reload sshd

Mutta yhteys katkeilee vieläkin. Voisiko tämä johtua DNA-modeemista, joka on taloyhtiön verkossa antenniliittimessä tavalliseen tapaan, Miten asiaa voisi alkaa selvittämään. Tulosteen mukaan

ClientAliveInterval  3600

on pilvikoneen tiedoston /etc/ssh/sshd_config viiimeinen tekstirivi.

Muok:
Valitettavasti netistä löytyi " As of the more recent versions of openssh server, there is no way to configure an inactivity/idle timeout via /etc/ssh/sshd_config. "

Lähde lienee asiantunteva

https://askubuntu.com/questions/1265201/set-ssh-idle-timeout-ubuntu-20-04

Eli paluu lähtöruutuun  :(



72
 Tämä on varmaan yksinkertainen kysymys, jos on pyöritellyt viime aikoina php:tä ja html:ää, mutta en löytänyt helppoa esimerkkiä vielä.

Ongelma olisi laskea kolmessa eri muuttujakentässä html-sivulla olevien arvojen avulla tulos php:llä niin, että tulos näkyisi neljännessä html-kentässä.

Muistan, että homman voi tehdä lomaketta käyttäen, ja jos lomakkeen kohteeksi antaa saman sivun tuloksen voi saada html-sivun neljänteen kenttään, mutta kaikki yksityiskohdata ovat täysin hukassa. Ehkä tämäntyyppinen lomake onkin jo jossain netissä, en vain ole onnistunut löytämään

73


Netissä näyttäisi olevan saatavissa e-käyttis joihinkin puhelimiin

https://doc.e.foundation/devices

Onko asiasta kokemusta oikeasta elämästä.

Oma vanha Huawei P smart ei edes ole tuettujen puhelimien listalla enkä muutenkaan ole puhelinosaaja, niin varmaan pitäisi joku puhelinkin hankkia, jos käyttistä haluaisi kokeilla.

74
 Haluaisin tehdä syöttökaavakkeen, johon voi syöttää noin 10 mkenttään eri tyyppisiä tietoja. Nämä noin 10 tietoa kuvaavat yhden yksikön ominaisuuksia eli lopputulos olisi n * 10 taulukko.

Jos syötettyjä arvoja ei tarvitsisi tarkistaa näppäily- ja muiden virheiden osalta, asia hoituisi taulukkolaskennan avulla.

Kun viimeksi katsoin Gladea, siinä oli jotain versiosopimattomuuksia edellisen Ubuntu-version aikana. Enkä ole sitä koskaan kokeillut, niin opettelu voisi kestää kauan.

Qt on aika iso, enkä osaa sitäkään eikäse ole edes ilman rajoituksia, milloin sitä voi käyttää.

LibreOfficen basic on aika hankala.

Tkinter ei taas tuntunut ihan kätevältä sekään.

Nyt olisi ajatuksena kokeilla html-sivua ja javascriptiä. Mutta miten saisi html-taulukon tiedot näppärästi kotikoneen tiedostoon, tarvitseeko tiedot vielä kierrättää esimerkiksi apachen php:n kautta, vaiko olisiko jotain suorempaa tietä.

Olisiko joku muu ratkaisu, millä syötettäviä arvoja voi tarkistella eri asioiden osalta.




75
Jos haluaa kokeilla juliaa, onko hyvä ajatus käyttää sanpia sen asennukseen

Koodia: [Valitse]
sudo snap install julia --classic

Voiko tällä tavalla todennäköisesti saada kohtuullisen uuden version. Snap-asennuksen poistaminen kokonaan onnistunee myös ilman ongelmia?

76
Ubuntu tietokoneissa / Dockerin poisto kokonaan
« : 26.07.21 - klo:22.11 »

Netistä löytyi ohje Dockerin poistoon

Koodia: [Valitse]
sudo apt-get purge docker-ce docker-ce-cli containerd.io
sudo rm /etc/apt/sources.list.d/docker.list

ja lopuksi

Koodia: [Valitse]
nd then rerun sudo apt update
En muista, millä tavalla dockerin asensin, ohjelmalähteistä tai aptilla. Onko sillä väliä, jos edellä olevilla komennoilla haluaa poistaa dockerin kokonaan ja täydellisesti

77
Laitealue / Nostalgiaa, Dell Latitude c500
« : 20.06.21 - klo:13.14 »

Kaapista löytyi vanha Dell Latitude c500, jossa on Ubuntu 8.04. Kone lähti käyntiin ja toimii, kunhan sain unohtuneen salasanan uusittua toipumistilassa passwd komennolla.

Järjestelmän hallinta -sovellus näytti, että muistia oli noin 256 Mt, josta käytössä oli noin puolet, ilman selainta. Kaikki toimi sujuvasti paitsi, että lankahiiri alkoi pätkimään ja tuntui, että kone kuumeni aika tavalla alapuolelta, mutta kuumaa on nyt muutenkin.

Kiinnostusta kyllä vähän herättää se, että nykyisen Ubuntu 20.04 -koneen muistinkäyttö näyttää olevan 1,4 Gt. Tosin selain on nyt päällä tätä kirjoitettaessa, mutta kyllä Dellilläkin on voinut selainviestejä kirjoitella.

Jos haluaisi vielä käyttää muuten ihan toimivaa konetta, millainen käyttis siinä pitäisi olla. Ubuntu 8.04 ei luultavasti ole saatavissa päivitettävänä retroversiona.

Tavallisen käyttäjän kannalta siis näyttää, että toiminnallisuus on aika sama, mutta nykyinen muistinkäyttö on noin 10 kertaista entiseen verrattuna. Mitä etuja sillä on saavutettu.

Ehkä tämän aiheen voisi yhtä hyvin laittaa Yleistä keskustelua -alueelle, mutta en oiken osaa päättää   :)

78
Olen onnistunut lopultakin saamaan javascript-taulukon tietoja phplle. Php:ssä on sanitize-funktio, jolla voidaan estää haittakoodin syöttäminen syötekentistä. Mutta jos haluttaisiin tehdä tarkistuksia jo javascriptissä, miten se pitäisi tehdä. Javascriptissä ei taida olla sanitize-funktioita. Tavoitteena olisi, että mahdollisimman paljonlaskennasta tehdään jo päätekoneella ja että php:lle jäisi mahdollisimman vähän laskettavaa.

Muok.
Ehkä reqex voisi olla mahdollinen ratkaisu, jos valmiita funktioita ei ole?

79
Nyt kokeilussa olisi php:llä tehty palvelinohjelma pilvikoneessa. Sitä on käynnistelty näin
Koodia: [Valitse]
php kokeilupalvelin.php
ja sitten sammutettu control c:llä.

Mutta kun yhteys katkeaa kotipäätteestä pilvikoneelle, jääkö palvelinohjelma päälle vai katkeaako se automaattisesti yhteyden katketessa. Ainakin nano ilmoittaa, että se on jo käytössä, jos jotain tekstiä on pilvikoneella ollut auki katkoksen tapahtuessa.

T'ästä luultavasti selviää komennolla
Koodia: [Valitse]
sudo pkill nano

Mutta pitäisikö vielä varmuuden vuoksi laittaa
Koodia: [Valitse]
sudo pkill php
Php:llä toimivan palvelinohjelman voisi varmasti laittaa taustallekin, mutta sitä en vielä osaa ja miten taustalla oleva ohjelma sitten lopetettaisiin?

80
Laitealue / Taloyhtiön laajakaista, modeemivalinta
« : 03.06.21 - klo:18.02 »

Taloyhtiössä on dna-netti ja löysin edelliseltä asukkaalta jääneen modeemikaapelin (cat 5 muistaakseni), joka on kiinni seinässä olevassa pistokkeessa. Se näyttäisi sopivan suoraan tietokoneen nettipistokkeeseen ulkonäön perusteella, mutta en ole uskaltanut kokeilla.

Ovatko taloyhtiönetit jonkun standardin mukaisia ja onko aina hankittava modeemi eli tietoliikennekaapelia ei voi laittaa suoraan kiinni läppärin nettipistokkeeseen?

Uskoisin, että wifiä en tarvitse, vaan piuhayhteys koneeseen riittää. Jos modeemi löytyy kirpparilta, millaisia määrittelyjä siinä pitää olla?

Sivuja: 1 2 3 [4] 5 6 ... 18