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.


Viestit - teele

Sivuja: [1] 2 3 ... 24
1

Eli jos annan tietoihin luku- ja kirjoitusoikeudet erillisissä datakansioissa www-datalle, ne eivät tule kaikkien saataville wgetillä.

Tällöin oikeuksia ei ole ulkopuolisilla, mutta ymmärtääkö Apache olla toimittamatta tietoja eteen päin, jos se itse niihin pääsee käsiksi.Pitääkö Apachessa laittaa joku säätö päälle tällaisen toivottavan tilanteen aikaan saamiseksi.

2
Jos halutaan tehdä painonhallintasivusto jossa lähtötietoina on kunkin käyttäjän nimi, ikä ja sitten punnitustuloksia päivittäispunnituksista, niin miten voidaan piilottaa muiden käyttäjien tiedot kaikilta muilta ja erityisesti ulkopuolisilta.

Lähtötietotiedoston on ajateltu olevan muotoa

nimi   ikä  kg kg kg kg kg kg ....
nimi   ikä  kg kg kg kg kg kg .....
nimi   ikä  kg kg kg kg kg kg .....
.
.


Käyttäjät näkevät omat tietonsa ja oman painonsa kehittymisen verrattuna painojen kehittymisen keskiarvoon. Laskenta tehdään ja tiedot näytetään php:n avulla. Php-koodi ja tietorivit sisältävä tiedosto sijaitsevat DocumentRoot -määrittelyn mukaisessa hakemistossa, jonne www-datalla pitää tietysti olla luku- ja kirjoitusoikeudet tulosten laskemista ja uusien punnitustietojen lisäämistä varten.

Mutta kaikki aineisto on kenen tahansa haettavissa wgetin avulla, mikä ei ole toivottava piirre. Miten php-lähdetekstin ja kerätyt tiedot voisi suojata niin, että sivut toimisivat kuitenkin selaimella ja www-data pystyisi lukemaan ja kirjoittamaan hakemistoon.

Jos www_datalla on lukuoikeus, tarkoittaako se aina sitä, että se myös toimittaa lukemansa tiedot sen enempää kyselemättä esimerkiksi wgetille tai voisiko tiedosto-oikeuksia muuttamalla turvata lähdetiedot tai ratkeaisiko asia .htaccess -säädöillä?

3
 
No niinpäs toimii, kiitos!     :)

4
Tässä on liitteenä esimerkkitiedosto. Yhden kuukauden tiedot ovat aina omalla rivillään. Päivän lämpötilatieto on erotettu seuraavasta tabulaattorilla, \t. Jos asiaa helpottaa, muutakin erotinta voidaan käyttää, vaikka välilöyntiä. Tässä vaiheessa voidaan myös miinuslämpötilat jättää huomiotta eli voidaan rajoittua vain sellaisiin riveihin, joissa kaikki arvot ovat positiivisia. (esimerkkitiedostossa sellaisia ei taida olle, mutta niitä saa varmaan vaikka miinusmerkit poistamalla)

Tiedot olisi tarkoitus saada php:n taulukkoon niin, että esimerkiksi jokaisen kuukauden (rivin) lämpötilojen keskiarvon voi laskea. Joskus haluttaisiin ehkä laskea jotain muutakin.

5
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.

 

6

Toimii, tein nanolla mydata.txt -tiedoston /var/www/html -hakemistoon ja Jekun ohjeiden mukaan vaihdoin omistajaksi www-datan.

Kiitos neuvoista :)

7

Taisin tehdä käännösvirheen, englannin kielinen sana form pitääkin kääntää lomakkeeksi. Mutta käännösvirheestä riippumatta php -teksteissä on kuitenkin käytetty sanaa form eikä kielioppivirheistä tule valituksia ja koodi näyttää toimivan.

Ongelmana on se, että mydata.txt -tiedostoa ei näytä löytyvän. Jos tallennuspaikaksi vaihtaa php- tekstin sijaintipaikan, tulee ilmoitus, että kirjoitus ei onnistunut, mikä onkin ihan oikein, jos oikeudet eivät ole kunnossa.

Palvelimella on käyttkisenä Ubuntu 18.04.

8
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ä)


9

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ö.

10

Kokeilin Katella, mutta tallennettaessa se ehdottaa kotikoneen nimeä (tai käyttäjää) eikä valintaa voi muuttaa. Kotikoneen salasanalla ei tietenkään pääse palvelimelle ja tallennus keskeytyy oikeuksien puuttumiseen.

Miten Katelle saisi kerrottua, että halutaan tallentaa palvelimella olevalle käyttäjän NN hakemistoon ja miten sen saisi kysymään ja käyttämään tämän käyttäjän salasanaa?


11

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.


12
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ä :)

13
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.

14
Ongelma oli siis siinä, että tekstistä

Koodia: [Valitse]
<a href="file:///home/teele/sivunimi.html" name="linkki01">oma-linkki</a>
pitää ainoastaan poistaa osa

Koodia: [Valitse]
file:///home/teele/
Jos sivua on tehty jollain toisella koneella, lisuke on vähän erilainen riippuen käyttäjänimestä ja hakemistorakenteesta ja kirjoitettavan sivun sijainnista seillä.

Taisin onnistua googlaamalla tekemään c++-ohjelman, joka poistaa ylimääräisen tekstin. Mutta tulos ei tietenkään ole mitenkään erityisen tyylikäs. Se etsii vain juuri yllä olevan vakiomerkkijonon ja poistaa sen. Se on aika kömpelön tuntuista, eikä varmaan kannata merkata aihetta sen perusteella ratkaistuksi.

Merkkijono voitaisiin ehkä kirjoittaa regexinä niin, että se toimisi toisessakin koneessa ja toisessa hakemistorakenteessa. Katsoin myös awk-ohjeita, mutta koska lisiukeosa sisältää /- ja :-merkkejä, sopivan regexin löytäminen ei onnistunut.

Ehkä parasta olisi, jos löytyisi c++-regex, joka tunnistaisi eri koneilla ja eri hakemistoissa tehtävät lisukkeet. Nehän kuitenkin muodoltaan muistuttavat oikeastaan ihan täsmällisesti toisiaan.




15
hmmm, kun valitaan writessa Lisää - Hyperlinkki, avautuu ikkuna (englantilainen ohjeistus), johon voi kirjoittaa urlin, tekstin ja nimen.

Näyttää siltä, että urlista tulee linkin href-osuus, tekstistä linkin seliteosuus, joka näkyy sivun katsojalle, ja nimestä tulee sisäinen html-nimi, jonka avulla voi html-tekstissä viitata vaikka kokonaiseen linkkirakenteeseen eli <a> ---- </a> nimikkeeseen esimerkiksi javascriptissä.

Tämä kaikki olisi ihan sopivaa kätevää, jos vain sen urlin saisi sellaiseksi, kuin sen itse haluaa. Writen tekemiä lisukkeita ei tarvittaisi ollenkaan.

Nimi- ja tekstikentät eivät taida vaikuttaa urliin mitenkään?

awk taitaa olla aika asiantuntijaosaamista vaativa ohjelma. Ehkä jollain tavalla onnistuisin c++ -regex luokan avulla writen tekemien lisukkeiden karsinnassa.

Keksiikö joku sopivan regex-määrittelyn, ehkä siitä voisin avata oman aiheen vaikka Ohjelmointi ja palvelimet -osastolle?   ;)


16
Tarkoituksena on saada valmis html-sivu, ja kaikki muu onkin aika kunnossa, vain osoitteet takkuilevat.

Tarkoituksena on, että niitä sivuja voidaan sitten katsoa suoraan selaimella, siksi olisi hyvä, että myös linkit olisivat sopivia ilman mitään file- tai http-lisukkeita

Kokeilin myös abiwordia, mutta siinä Lisää - Hyperlink on harmaana. Käyttis on Lubuntu 18.04. Ehkä uudemmissa versioissa voisi olla joitain korjauksia, mutta se alkaa jo olla toista aihetta....

17

En vain saa onnistumaan

Lisäsin hyperlinkin ja kirjoitin osoitteeksi index.html ja tallensin tiedoston html-muotoiseksi. Sitten katsoin, miltä linkki html-muotoisessa tiedostossa näyttää, ja tulos oli  tällainen

Koodia: [Valitse]
<a href="http://index.html/" name="linkki02">index-linkki</a>
eli näyttää siltä, että lo tekee omia lisukkeitaan, miten niistä pääsisi eroon

18
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.

19

Luultavasti toimii, kiitos ohjeista :)

Ensin piti tehdä pehmolinkki  /var/www/html -hakemistoon osoittamaan omaan sivutilaan

Koodia: [Valitse]
cd /var/www/html
sudo ln -s  /home/omat_sivut omat_sivut
cd /etc/apache2/sites-available

ja sitten lisättiin pehmolinkkiohjeistus /etc/apache2/sites-available/omat_sivut.conf tiedostoon

Koodia: [Valitse]
           <Directory />
             Options FollowSymLinks
             AllowOverride None
            </Directory>





20


Ajattelin vain oikeuksia ja että ulkopuolinen voi kirjoittaa sivutilaan.

 Ulkopuolinen ei siis millään tavalla voi millään muulla ohjelmalla kirjioittaa sivutilaan, jos sivutilan asetuksissa on kirjoitusoikeudet ulkopuolisille?

Ssh siis estää sen? Mistä tiedän, että palvelimen sivut ovatkin ssh-suojattuja ja niihin ei pääse käsiksi muilla tavoin (voi olla tyhmä kysymys, mutta en tosiaan aikaisemmin ole ollut näitten asioiden kanssa tekemisissä)


Sivuja: [1] 2 3 ... 24