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 ... 10
1
Kaikkien kuukausien päivien lämpötilat on annettu tiedostossa riveittäin. Kuukausia voi olla tarkastelussa aika iso määrä, esimerkiksi 100.

php:llä olisi tarkoitus lukea kuukausien tiedot riveittäin 2-ulotteiseen taulukkoon niin, että yhtä kuukautta vastaisi aina yksi "rivi".

Sitten toiseen taulukkon taulukkoon halutaan laskea jokaisen kuukauden päivälämpötilojen keskiarvot. Taulukko on 1-ulotteinen ja sen koko on havaintokuukausien lukumäärä.

Miten homman saisi kätevimmin tehtyä php:llä. (kyllä, php:tä pitäisi tällä kertaa käyttää)

Asia selviää luultavasti netistä hakemalla, mutta se on pitä yrityksen ja monen erehdyksen tie. Siksi asiaa valaisevista vihjeistä olisi iso apu.

 

2
Kokeilin palvelimella olevalla  html-sivulle kaavakkeeseen tulevien arvojen tallentamista php:llä omaan tiedostoonsa.

index.php-sivu on tällainen

Koodia: [Valitse]
<html>
<body>

<form action="tallenna.php" method="POST">
    <input name="field1" type="text" />
    <input name="field2" type="text" />
    <input type="submit" name="submit" value="Save Data">
</form>

</body>
</html>



ja tallenna.php -sivu tällainen

Koodia: [Valitse]
<?php
if(isset($_POST['field1']) && isset($_POST['field2'])) {
    
$data $_POST['field1'] . '-' $_POST['field2'] . "\r\n";
    
$ret = = file_put_contents('/tmp/mydata.txt'$dataFILE_APPEND LOCK_EX);
    if(
$ret === false) {
        die(
'There was an error writing this file');
    }
    else {
        echo 
"$ret bytes written to file";
    }
}
else {
   die(
'no post data to process');
}


Mutta /tmp -hakemistoon ei näytä ilmaantuvan mitään tiedostoa lisää. Miten saisi tallenenttavan tiedoston sellaiseen paikkaan, johon se oikeasti haluttaisiin.

Tallennus ei myöskään onnistu siihen hakemistoon, jossa php -tiedostot ovat. Tällöin  syynä ovat luultavasti väärät oikeudet.

Jos antaa kirjoitusoikeudet www-datalle, riittäisikö se tai miten pitäisi oikeuksia muokata, että php -tuloste voitaisiin kirjoittaa tavalliseksi tiedostoksi. (Onko tässä pahopja tietoturvariskejä)


3

Täällä

https://wiki.ubuntu-fi.org/VirtualBox

on kuvattu virtual boxin asennus joskus kauan aikaa sitten. Mutta miten pitäisi toimia Ubuntu 18.04 -version kanssa, jos haluaa usb-tuen mukaan eli silloin pitää varmaan asentaa Oraclen sivuilta saatava paketti kuten ennenkin.

Netissä oli myös tieto,että samat ohjelmat toimivat siinä Oraclen omassakin paketissa. Ubuntun pakettivarastoversio virtual boxista pitää kuitenkin poistaa. Sen olen jo ehtinyt koneeseen laittaa ja siihen windows 10:n.

Voiko asennetun virtual boxin poistaa niin, että windowsia ei tarvitsisi asentaa uudestaan, mikä on iso työ.

4

Kun valitaan Yhdistä palvelimeen -komento käyttöliittymästä, voidaan katsoa etäkoneella olevia hakemistoja ja avata tiedostoja tekstinmuokkaimella.

Mutta miten saisi tallennettua muokatun tekstitiedoston. Olisiko mahdollista avata tekstimuokkain niin, että etäkoneelle voi suoraan tallentaa muokatun tiedoston. Se olisi helpompaa kuin etätiedoston muokkaaminen päätteen kautta esimerkiksi nanolla.


5
Onnistuin tekemään toimivan bash-komentojonon ja osaan käyttää vain Ubuntua.

Jos haluaisi käyttää samanlaista komentojonoa windowsissa, voisiko nyt toimivaa komentojonoa käyttää pohjana tai muokata niin, että se toimisi myös windowsin cmd-ikkunassa tai jollain muulla tavalla.

Bash komentojono on tässä alla ja siinä esiintyvä reject -ohjelma on luultavasti saatavissa myös windowsin exe -muodossa. Se käyttää kahta ohjelmaparametria, jotka annetaan sille kutsussa. 5n tulee suoraan bash-komentojonosta ja toinen on bash-käskylle annettu parametri, joka menee sellaisenaan reject -ohjelmalle.

Koodia: [Valitse]
#!/bin/bash

for f in *.html
do
          n=${f}
          echo $n
         ./reject $n $1 > $n.fresh
done

Netissä kirjoitetaan, että windowsille voi asentaa palikan linuxille,

https://docs.microsoft.com/en-us/windows/wsl/install-win10

mutta kätevämpää olisi, jos voisi komentojonon kirjoittaa windowsin bat -muotoon. Varma ratkaisuhan on tietysti asentaa Ubuntu windowsin rinnalle, mutta pienen komentojonon ajamiseen se tuntuisi vähän liian ronskilta toimenpiteeltä :)

6
C++ std::regex -keinoilla pitäisi etsiä esimerkiksi : merkkien ja ; merkkien välinen alue, jossa voi olla rivinvaihtojakin välissä. Ongelma näyttää olevan, että jotenkin pitäisi saada etsittävän merkkijonon loppukohta toimimaan.

Kokeiltu on esimerkiksi seuraavan ohjelman avulla

Koodia: [Valitse]
#include <fstream>
#include <iostream>
#include <string>
#include <regex>
#include <iterator>

//                                                   tiedostonimi ohjelmaparametrina
int main (int argc, char** argv)
{
   std::ifstream ifs(argv[1]); 
   std::string s( (std::istreambuf_iterator<char>(ifs) ), (std::istreambuf_iterator<char>() )  );
  //std::regex re(":(.*|\n)*\\p");  // alue  : ..... p, ensimmäinen :  ja viimeinen p, toimii
   std::regex re(":(.*|\n)*\\;");  // alue  : ..... ;, ensimmäinen :  ja viimeinen ;, ei toimi ?????????
   std::regex_token_iterator<std::string::iterator> ite( s.begin(), s.end(), re );
   std::cout << std::endl << (*ite) << std::endl;   
   return 0;
}

// käännöskomento oli
// g++ testi02.cpp -o testi02 -std=c++17 -Wall -pedantic


Jos loppumerkkinä on vaikka p, ohjelma näyttää toimivan niin, kuin pitääkin. Mutta ; ei käy loppumerkkinä ja ohjelma jää luultavasti silmukkaan. Kokeilussa on käytetty tässä alla olevaa pientä tekstitiedostoa

Koodia: [Valitse]
ååå <a> löytyy tämä </a> :: <table> tällainen

         qqqq
         >zc  jh  äää

./testi01 testitiedosto.teksti 'y(.*|\n)*Å' -komennolla tehty ;;

             ei löydy </table>  ÅÅ ÅÅ loppu

Tiedosto on ehkä vähän hassun näköinen, mutta sillä on helppo kokeilla esimerkiksi å -alkuisia ja Å -loppuisia regexejä, jotka näyttävät toimivan. Mutta <table> ja </table> väliä en ole ainakaan toistaiseksi onnistunut saamaan.

Kun ohjelamatiedoston nimi on ollut testi02 ja syötetiedoston nimi on ollut testitiedosto.teksti, olen kokeillut komennolla

Koodia: [Valitse]
./testi02 testitiedosto.teksti

Käännöskomento on ollut
Koodia: [Valitse]
g++ testi02.cpp -o testi02 -std=c++17 -Wall -pedantic
: ja ;  -merkkien välisen alueen hakeminen ei vain näytä onnistuvan :(

Muokk.

Jos
 
Koodia: [Valitse]
std::regex re(":(.*|\n)*p");
määrittelyn muuttaa muotoon
Koodia: [Valitse]
std::regex re(":(.|\n)*p");
ohjelma luultavasti toimii pikakokeilujen perusteella, ei 100% varmuutta.

7
Miten libreofficen writessä voisi saada linkin lisättyä niin, että siihen ei tule mitään libreofficen omia lisäyksiä.

Esimerkiksi niin, että linkki voisi olla vaikka

Koodia: [Valitse]
<a href="index.html" name="linkki01">oma-linkki</a>

siis pelkästään index.html. Mitään  file- tai http-lisukkeita ei tarvittaisi.

8
Tarkoitus on pitää nettisivut ajan tasalla omalla koneella, jolloin niitä on helppo muokata, ja sitten siirtää valmiit sivut pilvipalvelimelle, jossa pyörii Ubuntu 18.04.

Koodia: [Valitse]
scp *.html käyttäjä@xxx.xxx.xxx.xxx:omat_sivut/

Mutta että siirto onnistuisi palvelimen hakemistolla omat_sivut pitää olla asetukset, jotka sallivat ulkopuolisen kirjoittamisen

Koodia: [Valitse]
chmod -o+w omat_sivut

Saman sijainnin pitää olla myös apachen luettavissa ja kirjoitettavissakin, ja se onnistuu muisttakseni chgrp -asetuksilla, kun tiedetään, että apache on käyttäjä www-data.

Mutta ulkopuolisen kirjoittamisen salliminen ei kai ole hyvä ajatus tietoturvan kannalta. Silloinhan kuka vain voi kirjoittaa sivukseni mitä vain. Eli sivujen siirto omalta koneelta palvelimelle pitääkin tehdä johonkin muuhun hakemistoon, ja sitten siirtää ne sieltä omat_sivut -hakemistoon komentorivikäskyillä palvelimella.

Tämä ei vaikuta kovin kätevältä. Olisi hyvä, jos voisi vain lähettää päivitetyt sivut omalta koneelta palvelimeen ilman muita temppuja.

Miten tällainen asia yleensä on ratkaistu, se ei kai voi olla niin monimutkaista, kuin tässä kuvailin.


9
Nyt on tullut pientä pohdittavaa loppuparametrin kertomisessa std::copy -funktiolle.

Alkuperäinen koodi toimii hyvin

Koodia: [Valitse]
#include <fstream>
#include <iostream>
#include <algorithm>
#include <iterator>
#include <regex>

int main()       // tämä toimii alkuperäinen versio, versio 1
{
   std::string text = "Quick brown fox.";
   std::regex ws_re("\\s+"); // whitespace
   std::copy( std::sregex_token_iterator(text.begin(), text.end(), ws_re, -1),
                            std::sregex_token_iterator(),
                            std::ostream_iterator<std::string>(std::cout, "\n")
                          );
}

jos alkuiteraattori annetaan kutsun ulkopuolella alustetulla muuttujalla, silloinkin ohjelma toimii hyvin.

Koodia: [Valitse]
#include <fstream>
#include <iostream>
#include <algorithm>
#include <iterator>
#include <regex>

int main()       // tämä toimii, versio 2
{
   std::string text = "Quick brown fox.";
   std::regex ws_re("\\s+"); // whitespace
   std::sregex_token_iterator it1(text.begin(), text.end(), ws_re, -1);
   std::copy( it1,
                            std::sregex_token_iterator(),
                            std::ostream_iterator<std::string>(std::cout, "\n")
                          );
}

Mutta jos loppukohta annetaan funktion ulkopuolella alustetulla parametrilla, tulee käännöksessä virheitä.

Koodia: [Valitse]
#include <fstream>
#include <iostream>
#include <algorithm>
#include <iterator>
#include <regex>

nt main()       // tämä ei toimi, versio 3
{
   std::string text = "Quick brown fox.";
   std::regex ws_re("\\s+"); // whitespace
   std::sregex_token_iterator it1(text.begin(), text.end(), ws_re, -1);
   std::sregex_token_iterator stop();
   std::copy( it1,
                            stop,
                            std::ostream_iterator<std::string>(std::cout, "\n")
                          );
}

Vaikka versioita 1 ja 2 voi käyttää, joskus olisi siistimmän näköistä, jos voisi käyttäa myös 3-versiota, mutta miten sen voisi saada toimimaan. Miten loppukohdan voisi kertoa funktion ulkopuolisella muuttujalla.

Käännöskomento oli kaikissa

Koodia: [Valitse]
g++ regex07.cpp -o regex07 -std=c++17 -Wall -pedantic

kun lähdekoodi on regex07.cpp (eli kaikenlaista on yritetty, ainakin 7:s yritys menossa)



10
Tavallinen c++ -ohjelma haluaa ohjelmaparametrina merkkijonon.

Miten sen saa syötettyä, jos merkkijono on esimerkiksi </br>.

Kaikenlaisia lainaus-, ja heittomerkkiyhdistelmiä on kokeitu, mutta bashin mielestä pitäisi olla tiedosto /br.

11
Matti ja Maija pitävät omia sivuja pilvipalvelimella, joka moni-isännöi Matin koirasivuja ja Maijan kissasivuja.

Sivustot ovat esimerkiksi hakemistoissa /var/www/html/koirasivut ja /var/www/html/kissasivut. Selaimella ne löytyvät osoitteesta koirasivut.dy.fi ja kissasivut.dy.fi.

Matti ja Maija haluaisivat kummatkin ylläpitää omia sivujaan tavallisena käyttäjänä ilman sudoilua.

Netistä löytyi ohje

https://serverfault.com/questions/357108/what-permissions-should-my-website-files-folders-have-on-a-linux-webserver

jota soveltamalla olisi toiveena keksiä Matille ja Maijalle sopivat palvelinasetukset pilvikoneen Apachelle ja tiedosto-oikeuksille.

Olisivatko tällaiset asetukset toimivat

Koodia: [Valitse]
chown -R matti  /var/www/html/koirasivut
chgrp -R www-data  /var/www/html/koirasivut 
chmod -R 750  /var/www/html/koirasivut
chmod g+s  /var/www/html/koirasivut

chown -R maija  /var/www/html/kissasivut
chgrp -R www-data  /var/www/html/kissasivut
chmod -R 750  /var/www/html/kissasivut
chmod g+s  /var/www/html/kissasivut

Tässä on oletuksena, että Apache toimii www-data -oikeuksilla, mutta toimiiko se todella niin Ubuntu 18.04 :ssä, ei ole vielä netistä hakemalla selvinnyt.  Apachen asetuksiin eitarvitsisi koskea, jos edellä oleva toimisi.   

Jos edellä oleva järjestely ei toimi, jokin muukin tapa saada sama toiminnallisuus tietysti kävisi myös.

Muokk.
Tämänhetkiset kokeilujen tulokset näyttäisivät siltä, että ratkaisu voisi olla

Koodia: [Valitse]
sudo chown matti /var/www/html/koirasivut
sudo chown maija /var/www/html/kissasivut

Tulos on tietysti ainakin sillä varaumalla, että kokeiluissa ei oe tapahtunut jotain sellaista, jota ei ole huomattu ja joka on vaikuttanut oikeuksiin.


12
Kokeilin

Koodia: [Valitse]
sudo apt-get install wxmasima

lubuntu 18.04 -koneessa.

wxmaxima näytti asentuvan ja sen saa käynnistettyä opetusohjelmat-valikosta. Ohjelman ikkuna ilmestyy näkyviin, mutta se ei ota vastaan mitään syötettä hiireltä tai näppäimistöltä. Ainoa tapa selvitä tilanteesta on päätteen pkill -komento.

Onko joku saanut wxmaximan toimimaan lubuntu 18-04-versiossa, miten se onnistuisi?

13
Pilvipalvelimessa on Ubuntu 18.04 ja Apache2. Toivomuksena olisi saada moni-isännöinti (virtual hosting) toimimaan niin, että palvelimella voidaan pitää portissa 80 muutamaa eri sivustoa, esimerkiksi kissasivut, koirasivut ja pupusivut.

Palvelin näyttää

Koodia: [Valitse]
/etc/apache2/sites-available$ ls
000-default.conf  default-ssl.conf  koirasivut.conf


joten koirasivujenkin pitäisi olla näkyvissä. 000-defaultissa on osoitteena kissasivujen index.html:n sisältävä hakemisto.

Koodia: [Valitse]
cat /etc/apache2/sites-available/000-default.conf
<VirtualHost *:80>
# The ServerName directive sets the request scheme, hostname and port that
# the server uses to identify itself. This is used when creating
# redirection URLs. In the context of virtual hosts, the ServerName
# specifies what hostname must appear in the request's Host: header to
# match this virtual host. For the default virtual host (this file) this
# value is not decisive as it is used as a last resort host regardless.
# However, you must set it for any further virtual host explicitly.
#ServerName www.example.com

ServerAdmin webmaster@localhost
DocumentRoot /var/www/html/kissasivut

# Available loglevels: trace8, ..., trace1, debug, info, notice, warn,
# error, crit, alert, emerg.
# It is also possible to configure the loglevel for particular
# modules, e.g.
#LogLevel info ssl:warn

ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined

# For most configuration files from conf-available/, which are
# enabled or disabled at a global level, it is possible to
# include a line for only one particular virtual host. For example the
# following line enables the CGI configuration for this host only
# after it has been globally disabled with "a2disconf".
#Include conf-available/serve-cgi-bin.conf
</VirtualHost>

koirasivut.conf on muuten samanlainen kuin 000-default.conf:kin, mutta siellä on

Koodia: [Valitse]
ServerAdmin webmaster@localhost
DocumentRoot /var/www/html/koirasivut

DocumentRoot:na.

Netistä on paljon kysymyksiä samasta asiasta, mutta olen mielestäni tehnyt kaikki vaadittavat temput palvelimen uudelleenkäynnistys mukaan luettuna. Koska sivut ovat saatavissa, se kertoo, että a2ensite:kin on tehty (varmaan jo monta kertaakin ).

Vielä en ole kokeillut a2dissite:ä kissasivuille eli 000-defaultille, koska vaarana on, että kaikkien sivujen näkyminen loppuisi. Nyt tilanne on siis se, että kun pyydetään koirasivua, palvelin lähettää kissasivun ja kissasivun saa myös sitä pyydettäessä.




14
Kokeilin Debian 9 -asennusta tikulta ilman nettiyhteyttä. Kaikki pakettivarastot on kommentoiutuina tiedostossa

/etc/apt/sources.list

Voiko kaikki kommentoinnit poistaa?

15

Kokeilen nettisivujen pitoa pilvipalvelimella ja näin alkuvaiheessa olisi hyvä kuulla, millainen hakemistorakenne on oikeasti käytännössä toimiva.

Jos esimerkiksi tarkoituksena on pitää kolmea sivustoa, kissajutut.dy.fi, koirajutut.dy.fi ja pupujutut.dy.fi yhdellä virtuaali-Ubuntulla ja yhdellä Apacella moni-isännöinnissä (virtual hostingissa), niin sivustot varmaan kannattaa kukin laitaa omaan alihakemistoonsa.

Mutta onko /var/www/html/ hyvä paikka sivustoille vai olisiko parempi laittaa ne omaan käyttäjähakemistoon. Toivomuksena on, että pääsee mahdollisimman vähällä chmodaamisella.

Kokeilutarkituksessa Apachen rinnalla voinee kai toimia joku pieni kokeilupalvelinkin, vai haittaisiko se sivustojen toimintaa? Sen voinee laittaa omaan porttiinsa?


16

Lämpömittari on kytketty usb-paikkaan ja tiedot näkyvät omalla koneella vaikka terminaalissa. Jotta lukemia voisi seurata myös etänä, tiedot pitäisi saada välitettyä pilvikoneelle, jossa siinäkin on käynnissä Ubuntu, myös Apache php.

Millä tavalla kannattaisi alkaa suunnitella tietojen lähettämistä pilvikoneelle, jos toivomuksena on, että lämpötiloja voisi katsella pilvikoneelta selaimella mistä vain.

Minuutin välein tuleva päivitystieto on lyhyt, lämpötila ja kellonaika tms. Ja toivomuksena on, että jos systeemi saadaan toimimaan, sitä voisi helpoti laajentaa niin, että samanlaisia tietoja voisi välittyä muistakin paikoista joskus myöhemmin. Silloin välittyvinä tietoina voisivat olla mittarin sijainti, kellonaika ja lämpötila.

Jos tietoja olisi enemmän, ajastettu scp-komento voisi olla vaihtehto, mutta nyt ehkä olisi olemassa jokin kevyempi ratkaisu? Onko netcat täysin turvallinen, ...... ja tietojen lähettäminen php-kyselyn argumentteina ei ehkä ole kovin kevyt ratkaisu? ..... entä pieni c++ -  tai python-ohjelma?





17
Jostain syystä Piin Debian Liten lataus ei onnistu, kun pyydetään latausta Firefaxista zippinä täältä

https://www.raspberrypi.org/downloads/raspbian/

Yritetty versio on Raspbian Stretch Lite eli alimmaisen vaihtoehdon zip-muoto.

Luultavasti lataus onnistuu jollain muulla tavalla ja image saadaan Piille, mutta kysymyksenä asia on mielenkiintoinen. Käytössä on Huawein nettitikku ja yhteys on elisalta. Käytössä on Ubuntu 18.04 vakiopäivityksin.

Voisiko ongelman syytä jotenkin itse jäljittää.




18
Näkyykö dy.fi tyyppinen osoite palvelimella suoraan ja samanlaisena kuin muutkin osoitteet.

Eli kannattaako yrittää tehdä nimiperustaista moni-isännöintiä (virtualhostingia), jos se perustuu dy.fi -muotoisiin osoitenimiin.

Toinen saman asian ratkaiseva kysymys voisi olla, saako palvelimen näkemän asiakassivun nimen näkymään jollain tavalla esimerkiksi php:n avulla. Silloin voisi katsoa vastauksen alkuperäiseenkin ongelmaan.

Muok.

Huomasin sattumalta seuraavan kaltaisen ilmoituksen


Not Found

The requested URL /ukk.html was not found on this server.
Apache/2.4.29 (Ubuntu) Server at oma_sivu.dy.fi Port 80

kun en ollut vielä tehnyt ukk-sivua. Ehkä tästä voisi päätellä, että Apache näkee dy.fi.-muotoiset osoitteet muuttumattomina?




19
Onko turvallista ja taviskäyttäjälle suositeltavaa asentaa ohjelmia ppa-ohjelmalähteistä.

Ubuntu 18.04 tulee ilman openscad-pakettia, mutta se on saatavissa ppa-lähteestä.

Koodia: [Valitse]

sudo add-apt-repository ppa:openscad/releases

sudo apt-get update

sudo apt-get install openscad



Ohjelma voitaneen poistaa komennolla

Koodia: [Valitse]
sudo dpkg -r openscad

Miten ylempi komento eroaa vaikutuksiltaan seuraavasta

Koodia: [Valitse]
sudo apt-get remove --autoremove openscad

mutta se ei varmaankaan poista ppa-lähteitä. Miten saisi lähteetkin pois ja koneen alkuperäistilaan.


20
Tarkoitus olisi saada php:n oletussivuksi sivu sopivassa alihakemistossa, jossa olisi sitten juuri tämän sivuston aineistoa. Mutta näyttää siltä, että pelkän .htaccess -tiedoston lisääminen /var/www/html -hakemistoon ei riitä. Käytössä on php Ubuntu 18.04:ssä ihan perusasetuksilla eli sellaisena, kuin se tulee, kun ottaa apt-getilla apachen.

Mikä olisi yksinkertaisin tapa saada osoitteeseen tuleva sivupyyntö ohjautumaan oikeaan alihakemistoon sen sijaan, että se menee aina index.html-sivulle.

Sivuja: [1] 2 3 ... 10