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 ... 43
1

Tarkoitus olisi lukea socketista pieni, alle 1024 merkijono ja kokeilen tällaista lukuohjelman pätkää

Koodia: [Valitse]

  int my_read()
  {
    if((new_sock = accept(listening_sock, (struct sockaddr *)&address, (socklen_t*)&address_length)) < 0)
      {
        perror("Accept");
        exit(EXIT_FAILURE);
      }
    n_of_read_chars = read(new_sock, in_buffer, 1024 - 1); // tila loppumerkille
    in_buffer[n_of_read_chars ] = '\0';  // lisätään loppumerkki
   
    return 0; // lukeminen onnistui
  }

eli jos luettavaa tulee ja listen huomaa sen, tehdään uusi socketti, josta luetaan (toivottavasti vain korkeintaan) 1023 merkkiä. Lukemisen varattu puskuritila on 1024 ja viimeisen luetun merkin jälkeen pitäisi lisätä '\0'. 

Onko koodissa näkyvissä todennäköisiä ongelmia, mahdollistaako se esimerkiksi ylivuodon ja osaako se lukea varmasti kaiken alle 1023 pituisen tulevan viestin, kun socket on

Koodia: [Valitse]
socket( AF_INET, SOCK_STREAM, 0))




2
Jos pavelimella olevan sivun osoitteesta unohtuu sivunimi, näkyy selaimessa hakemistolistaus.

Netissä olevan ohjeen mukaan

https://www.simplified.guide/apache/disable-directory-listing

näkymän voi estää .htaccess -asetuksella

/var/www/mysite/.htaccess -tiedostossa, mutta omalla palvelimella sivu on pehmolinkattu ja erilaisessa paikassa.

Muokk.

Sivulla

https://stackoverflow.com/questions/2530372/how-do-i-disable-directory-browsing?rq=4

neuvottiin, että .thaccess -tiedoston rivillä pitää olla enter lopussa, ehkä sen puute vaikutti ensimmäisessä kokeilussa. Nyt palvelimella on myös index.html -sivu, niin toivottavasti hakemistorakennata ei saa näkyville.

Parasta tietysti olisi, jos hakemistolistauksen näkyminen olisi estetty jo oletuksena joka paikassa, miten sen saisi kätevimmin päälle. En ole vielä uskaltanut kokeilla netistä löytyviä erilaisia ehdotuksia mahdollisten sivuvaikutusten takia.




Jos samaan hakemistoon, jossa sivu sijaitsee, laittaa .htacces tiedoston ja siihen (ainoan) rivin

Koodia: [Valitse]
$ cat .htaccess
Options -Indexes
$

haekmistotiedot näkyvät silti. Missä .htaccess pitäisi olla ja pitäisikö siinä olla jotain muutakin kuin vain yksi Options -rivi.

Olisko vain pelkän index.html -sivun lisääminen sivun hakemistoon turvallinen tapa estää hakemiston näkyminen, vaikka joku sitä yrittäisi luvattomasti kaivaakin.

 

3
Ubuntu tietokoneissa / 23.10 -> 24.04 päivitys
« : 07.09.24 - klo:13.42 »

Koneessa on

Koodia: [Valitse]
lsb_release -a
No LSB modules are available.
Distributor ID: Ubuntu
Description: Ubuntu 23.10
Release: 23.10
Codename: mantic

Sitten yritettiin

Koodia: [Valitse]
$ sudo do-release-upgrade
Etsitään uutta Ubuntu-julkaisua
Uutta julkaisua ei löytynyt.

Pitääkö olla lts-versio, jotta sen päivitys onnistuisi. Miten 23.10 -koneen päivitys pitäisi tehdä, pitääkö olla kokonaan uusi 24.04 tikulla.


4
 
Taisi ratketa sillä ohjeella, varmistelen vielä koko koodin kanssa, sitten laitan ratkaistuksi

Kiitos neuvosta  :)

5
Nettiohjeiden mukaan ! -operaattorin pitäisi kääntää totuusarvo, mutta en keksi, miksi niin ei näytä tapahtuvan tässä pienessä kokeiluohjelmassa

Koodia: [Valitse]

<?php 

if(1)
{
  echo(
"luku alkaa \n\n");
  
$qs readline("anna arvo1 arvo2 arvo3 ja arvot4: ");
  echo(
"\n\n luku loppu \n\n");
  
  
$_POST[&#39;arvo1&#39;] = explode(&#39; &#39;, $qs)[0] . &#39; &#39;;
  
$_POST[&#39;arvo2&#39;] = explode(&#39; &#39;, $qs)[1] . &#39; &#39;;
  
$_POST[&#39;arvo3&#39;] = explode(&#39; &#39;, $qs)[2] . &#39; &#39;;
  
$_POST[&#39;arvot4&#39;] = implode(&#39; &#39;, array_slice(explode(&#39; &#39;, $qs), 3));
/*
  echo( $_POST[&#39;arvo1&#39;] );
  echo( $_POST[&#39;arvo2&#39;] );
  echo("\n\n loppu \n\n");
*/
  
}  // if loppuu

if(empty($_POST["arvo1"]))
  {
    die(
"arvo1 puuttuu");
  }
 
 echo(
$_POST["arvo1"] ) ;
 echo( 
" arvon1:n pituus on " strlen(trim($_POST["arvo1"] )) . "\n"  );
  
if( !
is_int(trim($_POST["arvo1"] ))  )
  {
    die(
"\narvo1:n on oltava kokonaisluku\n ");  // <<<====== vaikka arvo on 1, tullaan tänne ????
  
}

$my_number str_replace(&#39; &#39;, &#39;&#39;, $_POST[&#39;arvo1&#39;] );    // tyhjät pois 
$my_number filter_var($my_numberFILTER_SANITIZE_STRING);
$my_number substr($my_number040); 

?>


kokeilu meni näin

Koodia: [Valitse]
php kokeilu_05.php

luku alkaa

anna arvo1 arvo2 arvo3 ja arvot4: 1 aa oo 2 3 4

 luku loppu

1  arvon1:n pituus on 1

arvo1:n on oltava kokonaisluku


Voi olla, että kyseessä on joku yksinkertainen logiikkavirhe omassa logiikassani, mutta itse sitä on vaikea huomata

Miten pitäisi testata, että syötettävä arvo on kokonaisluku php:ssä.



6
Kiitoksia vastauksista

Taitaa tosiaan olla niin, että ihan yritetyn kaltainen rakenne ei onnistu. Voisi käyttää vain osoitteita tai sitten ohjelmarakenne pitää miettiä uudeksi. Onneksi harrastellessa ei ole niin kiirettä :)

7
Yritin tehdä kahta luokka niin, että luokka1 käyttää luokka2:n tyyppistä muuttujaa ja luokka2 käyttää luokka1:n tyyppistä muuttujaa.

Kokeilun rakenne on tällainen

luokka1
{ fun1( luokka2 x);
}

luokka2
{ fun2 (luokka1 y);
}

Käännös ei onnistu, koska luokka1:ssä luokka2:ta ei tunnisteta. Netissä on std::forward- ja std::class -asioista ohjeita, mutta en ainakaan vielä ole keksinyt, miten niistä voisi olla apua.

Joskus muistan nähneeni directiivin forward, jonka voisi kuvitella ratkaisevan tällaisen asian, mutta ainakaan vielä hakutuloksissa sitä ei ole näkynyt.

Mikä olisi ratkaisu, on kokeiltu myös luokkien esittelyä etukäteen ja määrittelyä suoraan funktioineen.

8

Joillakin sivuilla on järjestelmävalvonnan mukaan paljon suorintintehoa vievää koodia, vaikka näkyvä toiminnallisuus on vain tekstejä ja linkkejä.

Voisiko jollain vakiona tulevalla Firefoxin työkalulla nähdä, mitä sivusto tekee taustalla, voiko se olla piilolauhintasivu tms.

Tietysti javascriptin voi aina tällaista sivua katsellessa laittaa pois päältä, mutta siinä on taas pari ylimääräistä napsua, ja sitten on vielä uteliaisuus: mitä se sivu oikein tekee :)

9

No, hyvä!

Nyt pitää hankkia sopivat johdot, niin pääsee kokeilemaan.

Kiitos vastauksesta  :)

10
Käytössäni on vanha stereo, jossa on aux in left- ja right-paikat. Tuloherkkyys (input sensitivity) on 400mV ja impedanssi > 3 Ohmia.

Millaista äänen laatua voi odottaa, jos yhdistää puhelimen kuulokepaikasta piuhat aux in -sisääntuloihin.

Onko puhelimien kuulokelähdöissä joku standardilähtöalue niin, että 400mV suunnilleen toimii.


11
Lainaus
Eikö tämä toisaalta hukkaa tilaa, jos osa merkkijonoista on lyhyempiä kuin taulukon leveys?

Niinpä, ehkä std::vector<std::string> olisi sittenkin sopivin, ainakin helpoin.

Kiitos nopeasta vastauksesta  :)


12
Esimerkkitapauksena voisi olla vaikka tekstisivu, jossa on 40 riviä ja jokaisen rivin maksimi- tai vaikiopituus on 80 merkkiä.

Varmaan tavallisella c:llä pitäisi tehdä kaksiulotteinen taulukko

char sivu[rivimäärä][merkkimäärä]

mutta haluaisin sivun c++ -tyylisesti eli rivit vakiopituisina stringeinä ja rivit vektoriin tai arrayhin niin, että kääntäjä ymmärtää, että mitään lisätilaa sivulle ei koskaan tarvita ja jos riviä muutetaan, se pysyy aina omassa tilassaan eli uusi rivi mahtuu vanhan rivin tilaan.

Jos vakiotilavaatimusta ei olisi, sivu olisi varmaan

std::vector<std::string> -muotoinen.

Toiveena olisi siis saada kääntäjä tekemään sellaista koodia, joka ei vaatisi mitään ylimääräistä tilaa eriputuisille stringeille tai muille varauksille.







13
 
Asia on juuri niin. Pitäisi tulostaa i, eikä olisi pitänyt valita sellaista muuttujanimeä, josta on vaikea päätellä, että kyseessähän on taulkon elementti.

Yritin kirjoittaa sellaista koodia, jossa voisi mahdollisimman helposti vaihtaa alla olevan rakenteen int ktab[10] std::vector ktab -rakenteeksi ja päinvastoin. sizeof ei oikein toiminut iteraatiorajana, mutta kokeiltu for -rakenne taitaisi toimia.

Kiitos vastauksesta, pähkinän ratkaisu helpotti tilannetta ainakin täällä päässä  :)

14
Taas on tullut vastaan pieni ainakin toistaiseksi ratkaisematon pulma.

Koodia: [Valitse]

#include <vector>
#include <iostream>

int main()
{
  int ktab[10];
  ktab[4] = 44;
  for(auto i : ktab) std::cout << ktab[i] << " ";
  std::cout <<ktab[4];
return 0;
}


Ohjelma on kännetty näin
Koodia: [Valitse]
g++ -std=c++20 -pedantic koe.cpp -o koe

Käännös ja suoritus menevät hyvin, mutta tulostus on tällainen
Koodia: [Valitse]
0 0 0 0 0 0 0 0 0 0 44

Ajatuksena on, että taulukon kohdan 4 pitäisi näkyä myös for-osassa. Eikö automaattinen for toimikaan säilöjen ulkopuolella, virheilmoituksia eikä varoituksia kuitenkaan tule.

Olisiko tällainen kesäpähkinä sopiva: Etsi  virhe edellä esitetyssä päättelyssä     




15

Kiitos esismerkistä, pitääpä katsoa javascript-vaihtoehtoa  :)

16

Vielä ei ole mitään koodia, mietinnässä on, millaista koodia pitäisi kokeilla. Netistä löytyi asiaan liittyviä linkkejä haulla:   c++ linux memory pool free

Luultavasti järjestelmältä varataan muistia lohkoina ja vaikka yksittäisiä olioita poistetaan, se ei suoraan heti näy järjestelmälle.

17
Lainaus
Pitäisi vertailla kahta eri tekstitiedostoa rinnakkain. Saan ne auki vain yhden kerrallaan niin että toinen on näkymättömissä ja molemmat ovat yhden tiedoston sisällä.

Miten saat auki kaksi tiedostoa niin, että ne ovat yhden tiedoston sisällä, mikä silloin avautuu, voivatko tiedostot olla toistensa sisällä?

Joskus olen yrittänyt vertailla joitain tiedostoja tavallisen takstinkäsittelyohjelman kanssa, mutta se on aika hankalaa. Olisi hyvä, jos niissä ohjelmissa olisi juuri se vertailutoiminto. Eli mielenkiintoinen aihe. Jotkut bash-komennot osannevat vertailla?

18
Kiitos linkistä, pitääpä käydä tutkimassa  :)

Siitä tiedosta voi olla apua, jos ei muuten selviä, miten ja milloin deletoidut oliot vapauttavat viemänsä tilan järjetelmälle. Muistinkulutuksen seuraamisen avulla voisi ehkä arvailla, milloin olioiden tila vapautuu.

Mutta parempi tietysti olisi, jos deletoitujen olioiden viemän tilan vapautumisesta  löytyisi suoraan tietoa. Koneessa on aika vähän muistia ja olisi toive, että oman ohjelman voisi jättää turvallisesti ajoon eikä se veisi turhaan muistitilaa ainakaan deletoitujen olioiden osalta.


19

Jos c++:ssa tehdään paljon objecteja listaan tai mappiin ja ne tuhotaan, niin milloin ja missä vaiheessa ne oikeasti vapautuvat käyttikselle eivätkä enää kuulu ohjelman muistitilaan.

Luultavasti on niin, että yksi merkkijonoobjecti listassa tai mapissa ei vapautuessaan näy käyttiksessä, mutta milloin iso määrä vapautettuja stringejä näkyisi. Millä tavalla c++ oikeasti varaa muistia ohjelmalle, ehkä jonkilaisina muistilohkoina tms?

Onnistuisiko käytännössä ohjelman muistinkäytön seuraaminen system monitorilla vai onko olemassa joku sopiva käyttiskomento ohjelman kulloinkin viemän muistimäärän seuraamiseksi.


20
Pikatestillä Libreofficella voi tallentaa myös html muodossa.

Niin tosiaan voi, mutta en onnistunut saamaan kahta palstaa näkymään kahtena palstana sitten selaimella tekstin avauduttua.

Lainaus
HTML-sivua voi vierittää niin pitkälle kuin tekstiä riittää, ja kehyksien avulla pidetään osa sivusta paikallaan kun toista osaa vieritetään. See ei ole mitenkään verrattavissa niihin palstiohin joita paperiarkeille tehdään, joten en ymmärrä minkälaista palstojen käyttöä teele oikein HTML:stä etsii?

Alkuperäinen kysymys oli ehkä vähän epätäsmällisesti muotoiltu. Toiveena olisi kaksi riippumatonta palstaa, jolloin teksti toisessa palstassa ei koskaan kulkeudu eikä muutenkaan kulkeude toiseen palstaan. Ensimmäisessä palstassavoisi olla vaikka 5 riviä ja toisessa 80 tai miten paljon vain sinne haluaa kirjoittaa, eikä sen rivimäärä vaikuttaisi toisen palstan näkymään millään tavalla.

Netissä ehdotettiin taulukoita, mutta huomautettiin niitten kuitenkin olevan vähän kömpelöitä tekstikäyttöön.

html:llä voi tehdä kaksi palstaa niin kuin tämän säikeen ekassa vastauksessa kerrotaan, mutta en vielä ole onnistunut tekstinkäsittelemään tällaista sivua libreoffikella ja sitten tallentamaan sitä v a i n teksti muokattuna mutta asettelu entisellään.

Tavoite olisi siis html-sivu, jonka toista palstaa voi muokata tekstinkäsittelyllä näkymän pysyessä kaksipalstaisena niin muokatessa kuin sitten tallennettaessa sivu html-muotoisena tekstinkäsittelystä.

Sivuja: [1] 2 3 ... 43