Kirjautuminen

Haku

Tehtävät

Keskustelu: Nettisivujen teko: Uusi PHP-opassarja

Sivun loppuun

Antti Laaksonen [19.08.2011 00:08:07]

#

Ohjelmointiputkan uusi PHP-opassarja on tulossa pilkkuhiljaa valmiiksi.

Uutta opassarjaa pääsee lukemaan tästä:

https://www.ohjelmointiputka.net/oppaat/opas.php?tunnus=php_01

Toivoisin teiltä palautetta opassarjasta ennen sen lopullista julkaisua. Palautetta saa mielellään antaa sekä asiasisällöstä että kieliasusta.

Synomi [19.08.2011 00:51:52]

#

Ainaki käytettävyyteen liittyen kunkin osion jälkeen olisi hyvä lopussa olla linkki seuraavaan. Itsellä ainaki ensi katsauksella jäi oikeella ylhäällä oleva menu huomaamatta.

The Alchemist [19.08.2011 10:12:33]

#

<!DOCTYPE html>
<html>
  <head>
    <title>Ensimmäinen PHP-sivu</title>
  </head>
  <body>
    <p>Vuorokaudessa on <?php echo 24 * 60 * 60; ?> sekuntia.</p>
    <p>Tänään on <?php echo date("j.n.Y"); ?>.</p>
    <?php
    echo "<ul>";
    for ($i = 1; $i <= 10; $i++) {
        echo "<li>" . $i;
    }
    echo "</ul>";
    ?>
  </body>
</html>

Vaikka HTML5:kin taitaa sallia tällaisen tagisopan keittämisen, niin minusta voitaisiin pitäytyä käytännössä tuottaa "loogisesti validia" merkkausta. Se helpottaa rakenteen hahmottamista varsinkin, jos PHP:lle uusi ihminen ei HTML:stäkään ymmärrä paljoakaan. Viittaan siis li-tagien sulkematta jättämiseen.

Sitä paitsi on vain koherenttia käytöstä sulkea myös li-tagit, kun p-tagienkin kanssa niin tehdään.

Antti Laaksonen [19.08.2011 10:57:14]

#

Synomi kirjoitti:

Ainaki käytettävyyteen liittyen kunkin osion jälkeen olisi hyvä lopussa olla linkki seuraavaan.

Nyt kaikkien oppaiden lopussa on linkit seuraavaan ja edelliseen oppaaseen.

The Alchemist kirjoitti:

Vaikka HTML5:kin taitaa sallia tällaisen tagisopan keittämisen, niin minusta voitaisiin pitäytyä käytännössä tuottaa "loogisesti validia" merkkausta.

Minusta </li>-tageista ja muista vapaaehtoisista lopputageista olisi opassarjassa enemmän haittaa kuin hyötyä. Esimerkiksi listan kohdan merkitseminen ilman lopputagia on yleinen tapa, jonka ei pitäisi hämmentää ketään HTML:ää tuntevaa. Enemmänkin voisi hämmentää </li>-tagi, jota ei ole tottunut näkemään. Käytännön ongelmana lopputageissa olisi, että ne mutkistaisivat ja pidentäisivät koodeja.

The Alchemist [19.08.2011 11:00:03]

#

Pidentävät ehkä esimerkkitulostetta, mikä voi olla ongelma, jos sitä ei siistitä ollenkaan. Eivät ne itse koodia pidennä yhtään. Sitä paitsi suurin osa ihmisistä on aina väärässä tai tietämättömiä; siksi näitä oppaitakin tehdään.

Turso [19.08.2011 12:00:31]

#

Saisiko opassarjan kirjoitus- tai julkaisupäivämäärän näkyville.

Othnos [19.08.2011 12:28:07]

#

Nopealla vilkaisulla aloittelija saattaa jäädä kaipaamaan oppaasta mistä PHP:n versiosta asti oppaassa kaikki käsitellyt kohdat toimivat ja esimerkkiä, kuinka saada omalta palvelimelta PHP:n versio katsottua.

Sisältöpuolelta hienoa, että PHP-oppaassakin on nyt lyhyehkö selostus luokista ja MVC-mallista, mutta namespaceja jäin vielä kaipaamaan.

Torgo [19.08.2011 12:44:00]

#

Othnos kirjoitti:

Nopealla vilkaisulla aloittelija saattaa jäädä kaipaamaan oppaasta mistä PHP:n versiosta asti oppaassa kaikki käsitellyt kohdat toimivat ja esimerkkiä, kuinka saada omalta palvelimelta PHP:n versio katsottua.

Joo. Pikainen opastus phpinfo() käyttöön ja sen tuottaman tulosteen tulkitsemiseen voisi olla paikallaan.

Putkassa oli ainakin jossain välissä koekäytössä sivu, jossa pystyi ajamaan tietyin rajoituksin omaa php-koodia. Olisiko tämä sivu mahdollista yhdistää jotenkin oppaaseen? Jokaisen osion jälkeen voisi olla vaikkapa harjoitustehtäviä aiheesta, joita voi tehdä kyseisen sivun kautta.

En kyllä katsonut opasta kuin hyvin pintapuolisesti ja nopeasti, mutta aika hyvältä tuo muuten vaikuttaa.

EDIT.
Keskusteluissa tuhanteen kertaan toistuva virheilmoitusten päällelaittaminen ja muut php-debuggauksen alkeet olisi hyvä tuoda myös jollain tapaa oppaassa esille. En uudellakaan pikasilmäyksellä löytänyt mitään siihen viittaavaa.

Antti Laaksonen [19.08.2011 13:03:53]

#

Lisäsin oppaaseen maininnan PHP:n versiosta 5 sekä PHP:n version tulostuksen ensimmäiseen esimerkkiin.

Nimiavaruudet ovat uusi ja kiistelty ominaisuus PHP:ssä, eikä niitä kannata minusta vielä esitellä oppaassa.

Luontevin väline PHP:n harjoitteluun on PHP-haaste, johon oppaassa on linkki. Kieltämättä oppaan ja harjoittelun voisi yhdistää vielä paremmin.

Virheilmoituksista voisi tosiaan olla aihetta kertoa, mietin asiaa. Kuitenkin esimerkiksi XAMPP-paketissa virheet näkyvät automaattisesti ja toisaalta webhotelleissa niiden ei ole tarkoituskaan näkyä.

Macro [19.08.2011 17:12:37]

#

Pari juttua, joita ihmettelen.

Esimerkkikoodi nimen pituuden laskemisesta laskee ääkköset kahdeksi. Mitäköhän ihmettä?

Ehtolauseosassa Ehdot-kohdassa on erikoinen ja ihmettelyä aiheuttava muotoilu.

lainaus:

A == B: A on sama kuin B

Tuosta voisi ymmärtää, että loppuosa ": A" kuuluisi vielä lausekkeeseen, vaikka tätä tuskin tarkoitetaan?

The Alchemist [19.08.2011 17:19:25]

#

Macro kirjoitti:

Pari juttua, joita ihmettelen.

Esimerkkikoodi nimen pituuden laskemisesta laskee ääkköset kahdeksi. Mitäköhän ihmettä?

PHP ei ole kovinkaan unicode-yhteensopiva. Unicodea varten PHP:ssä on liuta mb-etuliitteisiä funktioita. Strlenin vastine on mb_strlen().

Unicodessa siis erikoismerkit, myös ääkköset, koostuvat useammasta kuin yhdestä tavusta, joten vanhanaikaiset funktiot eivät ymmärrä niitä oikein.

Metabolix [19.08.2011 17:23:09]

#

Opassarjassa on kokonainen osa merkistöistä, joten turha sitä on tuossa pysähtyä ihmettelemään. Pieni mainita ja linkki voisivat kuitenkin olla paikallaan.

Antti Laaksonen [19.08.2011 17:25:32]

#

Ongelmana on siis, että PHP:n funktio strlen palauttaa merkkijonon pituuden tavuina ja UTF-8-koodauksessa ääkköset vievät tilaa kaksi tavua. Tuohon kohtaan opasta tarvitaan selvästi viittaus merkistöistä kertovaan osaan 17.

Selvennän myös ehdoista kertovaa osuutta.

Macro [19.08.2011 17:59:55]

#

Ok! En lukenut koko opassarjaa ennen kommentointia, niin en huomannut merkistöasioita. Hyvä jos korjaatte virheet!

dartvaneri [20.08.2011 00:55:38]

#

Muuten tuolla osassa 15 on 'tiedoston tyyppi' -kohdassa 'kokeile koodia' -linkki rikki.

Antti Laaksonen [20.08.2011 13:03:52]

#

Tosiaan tiedosto puuttui, korjasin nyt asian.

tsuriga [20.08.2011 17:12:48]

#

Ensimmäinen osa:

Tietoturva:

Muut:

Hyvä opassarja; hienoa, että tätä jaksettiin päivittää.

jlaire [21.08.2011 11:59:12]

#

Antti Laaksonen kirjoitti:

Esimerkiksi listan kohdan merkitseminen ilman lopputagia on yleinen tapa, jonka ei pitäisi hämmentää ketään HTML:ää tuntevaa. Enemmänkin voisi hämmentää </li>-tagi, jota ei ole tottunut näkemään.

Heh, itse ajattelen juuri toisin päin. Toisaalta en normaalisti lue muiden kirjoittamaa HTML:ää raakana, ja Chromen inspektori lisää aina sulkutägit.

Merkistöoppaassa voisi mainita, mistä lyhenne mbstring tulee. Lisäksi rimpsun

<meta http-equiv="Content-Type" content="text/html; charset=X">

voi HTML5:ssä korvata tällä paljon siistimmällä:

<meta charset="X">

En osaa ulkomuistista sanoa toimiiko tuo ihan kaikissa selaimissa, mutta ainakin sitä käytettiin tuotantokoodissa joten eiköhän se ole ok. :)

Antti Laaksonen [21.08.2011 14:52:34]

#

Kiitos kommenteista, tsuriga ja jlaire. Harkitsen ehdottamianne asioita.

Jaska [21.08.2011 15:21:20]

#

Osassa yksi sanotaan: "käytössä ovat mm. laskutoimitukset +, -, * ja /". Minusta on hämäävää puhua laskutoimituksesta jakolaskun yhteydessä, sillä nollalla ei voi jakaa, 0/x=0 kun x ei ole nolla mutta jakolasku on laskutoimitus joukossa R\{0}.

Grez [21.08.2011 15:33:38]

#

Tuossahan on kontekstina selvästi aritmetiikka eikä algebra. Aritmetiikassa jakolasku on ihan normaali laskutoimitus, vaikka toki sielläkin jako nollalla aiheuttaa virheen. Tietokonekielissähän virheitä voi tulla vaikka yhteenlaskussa (liian suuri tulos tms).

jlaire [21.08.2011 16:54:46]

#

Tätä pilkkua on viilattu putkassa ennenkin. En kertakaikkiaan pysty uskomaan, että yksikään oppaan lukija (ehkä Jaskaa lukuunottamatta) hämääntyy siitä, että jakolaskua sanotaan laskutoimitukseksi.

AkeMake [05.09.2011 16:40:01]

#

Uudesta oppaasta puuttuu kokonaan switch valintarakenne. Onko se jäänyt pois inhimillisistä syistä vai tarkoituksella? Jos on ihan tarkoituksella jätetty pois, niin miksi?

makumaku [05.09.2011 17:28:33]

#

Ohjelmoinnin tärkein asia, eli goto, jäi käsittelemättä :)
Muutama asia oli mielessä, jotka olisi voinut myös mainita siellä sun täällä, mutta siten olisi taas voinut mainita pari lisää, ja pari lisää, jne..
Näin sivumäärällisesti suppeaan oppaaseen ei millään voi ihan kaikkea laittaa. Tuossa oli minusta hyvä perussetti selkeässä muodossa. Joten hyvältä näytti.
Hienoa kun joku jaksaa näitä tehdä, on varmasti paljon apua monelle henkilölle.

Antti Laaksonen [05.09.2011 17:57:12]

#

Opassarjasta puuttuu tarkoituksella switch-rakenne, koska sen toteutus PHP:ssä ja muissa C-sukuisissa kielissä on kömpelö enkä halua rohkaista ketään käyttämään sitä.

Nykyään switch-rakenne merkitään PHP:ssä näin:

switch ($paiva) {
    case 1:
    case 2:
    case 3:
    case 4:
    case 5:
        echo "arkipäivä";
        break;
    case 6:
        echo "lauantai";
        break;
    case 7:
        echo "sunnuntai";
        break;
}

Järkevämpi merkintätapa olisi esimerkiksi seuraava:

switch ($paiva) {
    case 1 to 5:
        echo "arkipäivä";
    case 6:
        echo "lauantai";
    case 7:
        echo "sunnuntai";
}

Teuro [05.09.2011 18:39:51]

#

Pienin rajoituksin seuraava koodi tosin ajaa asian.

<?php
$paiva = 4;

switch ($paiva) {
	case 6:
		echo "La";
	case 7:
		echo "Su";
	default:
		echo "Arki";
}

Pienet rajoitukset ovat kuitenkin oleellisia, eli pitäisi varmistaa, että lukualue pysyy oikeissa rajoissa.

Antti Laaksonen [05.09.2011 18:50:18]

#

Lisäksi tuohon koodiin vaaditaan break-komennot, jotta se toimii kunnolla.

AkeMake [05.09.2011 18:55:21]

#

En minä tuota switchiä siksi maininnut etten olisi osannut käyttää sitä. Satuin vain huomaamaan sen puuttumisen, kun lähdin netistä etsimään, että mikä sen nimi taas olikaan ja ensimmäisenä yritin etsiä sitä täältä. :) Itse käytän yleensä Antin ensimmäisen esimerkin mukaista rakennetta + default loppuun, jotta sieltä varmasti jotain valitaan.

Antti Laaksonen [05.09.2011 19:14:04]

#

Joo, en toki epäillyt, ettet tuntisi switch-rakennetta, vaan halusin vain perustella, miksi se on mielestäni kömpelö.

The Alchemist [05.09.2011 19:26:33]

#

PHP:n switch kyllä sallii emuloida lukuvälejä.

switch ($paiva) {
  case $paiva > 0 && $paiva <= 5:
    print 'Arkipäivä';
    break;

  case 6:
    print 'Lauantai';
    break;

  case 7:
    print 'Sunnuntai';
}

Antti Laaksonen [05.09.2011 19:33:41]

#

Tuo on kieltämättä hieno viritelmä. Tosin jos päivä on 0, niin kyseessä on koodin mukaan arkipäivä.

The Alchemist [05.09.2011 19:38:08]

#

Noh joo, PHP bugaa sen nollan kanssa tässäkin tapauksessa.

Teuro [05.09.2011 19:39:53]

#

Vaikka varta vasten käsketään hyväksymään nollaa suuremat arvot?

Metabolix [05.09.2011 19:39:55]

#

The Alchemist kirjoitti:

case $paiva > 0 && $paiva <= 5:

PHP ei suinkaan bugaa, vaan olet kirjoittanut virheellisen koodin. Koodisi vastaa tätä:

if ($paiva == ($paiva > 0 && $paiva <= 5))

Ei taida olla kovin järkevä tarkistus? Tulos on tuurilla oikea silloin, kun $paiva sattuu booleaniksi muutettuna olemaan true.

Lisäksi samalla menetetään switch-rakenteen varsinainen etu if-lauseisiin nähden: yhden lausekkeen tarkastelu nimeä toistamatta.

The Alchemist [05.09.2011 19:51:20]

#

Kyllä tuo ehtolause on ihan oikein, se vain on bugi. Tarkastellaan vaikka seuraavaa esimerkkiä.

<?php

function foo($i) {

	printf('%s: ', $i);

	switch ($i) {
		case 'a':
			print 'a';
			break;

		case $i > 3 && $i < 6:
			print 'First';
			break;

		case $i > 7 && $i < 10:
			print 'Second';
			break;

		case 'b':
			print 'Third';
			break;

		default:
			print 'Neither';
	}

	print PHP_EOL;
}

foo('a');
foo(5);
foo(8);
foo('b');
foo('5');
foo(0);
foo('0');

?>

Kokonaisluku-nollalla suoritetaan switchin ensimmäinen ehto. Mielenkiintoista on se, että string-nollalla suoritetaankin tuo ensimmäisen lukualueen ehto.

Metabolix [05.09.2011 19:59:43]

#

Millä perusteella se on bugi? Siksikö, että haluaisit sen toimivan toisin? Kyseessä ei ole mikään erityisesti tietyn muuttujan tarkasteluun tarkoitettu kikka, vaan PHP vain sallii casessa minkä tahansa lausekkeen ja vertaa tulosta switchin alussa annettuun. Yhtä hyvin voi tehdä tällaisen vertailun:

switch (true) {
  case $a == 1: echo "a = 1."; break;
  case $b == 2: echo "b = 2."; break;
  case $a < $b: echo "a < b."; break;
  default: echo "jotain muuta."; break;
}

The Alchemist kirjoitti:

Mielenkiintoista on se, että string-nollalla suoritetaankin tuo ensimmäisen lukualueen ehto.

Jos nyt miettisit asiaa hetken ihan rauhassa, siinä ei ehkä olisi mitään mielenkiintoista. On tunnettu tosiasia, että 0 == "a", koska (int) "a" == 0. Vastaavasti on selvää, että "0" != "a". Sen sijaan "0" == ("0" > 3 && "0" < 6) (eli "0" == false), joten toinen kohta toteutuu.

Turso [13.09.2011 12:08:58]

#

Turso kirjoitti:

Saisiko opassarjan kirjoitus- tai julkaisupäivämäärän näkyville.

Onko tämä ihan mahdoton ajatus? Mielestäni etenkin kenties vuosien kuluttua luettaessa ihan hyödyllinen tieto.

Yucca [13.09.2011 13:21:23]

#

Lueskelin oppaan osan 17 (Merkistöt) ja hämmästyin, kun en löytänyt yhtään virhettä.

Euron merkki on kuitenkin hiukan huono esimerkki ongelmasta, johon UTF-8 tuo ratkaisun. Se nimittäin ratkeaa myös windows-1252:lla, joka toisaalta on se, mitä ISO-8859-1 webissä käytännössä tarkoittaa. Periaatteessa on tietysti hyvä ilmoittaa koodaukseksi window-1252, jos sitä käyttää.

Lisäksi ongelma tietysti ratkeaa useimmiten myös merkinnällä &euro;.

Painavaa tarvetta UTF-8:n käytölle alkaa olla vasta sitten, kun sisällössä on runsaasti sellaisia merkkejä, jotka eivät kuulu windows-1252:een, esim. kun sisältö on ihan hepreaa tai fysiikan kaavoja. Silloin koodista tulisi hankalannäköistä ja vaikeasti ylläpidettävää, jos ne kaikki esitettäisiin &-merkinnöillä.

jcd3nton [13.09.2011 13:40:43]

#

Ratkeaahan se vaikka kynalla ja paperilla, tai vaihtoehtoista merkintaa (EUR) kayttamalla. Mutta miksi windows-1252 on parempi ratkaisu kuin UTF-8?

Grez [13.09.2011 14:12:57]

#

Web-käytössä oletusmerkistö (windows-1252) sisältää euromerkin. Eli euromerkin osalta ei ole mitään ongelmaa, joka jäisi UTF-8:lle ratkaistavaksi.

Periaatteessa jos mitään yli Windows-1252 -merkistön meneviä merkkejä ei tarvita, mutta tarvitaan kuitenkin yli 7-bittisen asciin meneviä merkkejä, niin Windows-1252 vie vähemmän tilaa kuin UTF-8. Itse pitäisin tätä eroa kuitenkin käytännössä merkityksettömänä.

pistemies [13.09.2011 14:45:49]

#

Yucca kirjoitti:

Painavaa tarvetta UTF-8:n käytölle alkaa olla vasta sitten, kun sisällössä on runsaasti sellaisia merkkejä, jotka eivät kuulu windows-1252:een, esim. kun sisältö on ihan hepreaa tai fysiikan kaavoja. Silloin koodista tulisi hankalannäköistä ja vaikeasti ylläpidettävää, jos ne kaikki esitettäisiin &-merkinnöillä.

Jos ei ole painavaa tarvetta niin ainakin on suositeltavaa käyttää UTF-8 merkistöä.

Metabolix [13.09.2011 16:02:37]

#

Turso kirjoitti:

Turso kirjoitti:

Saisiko opassarjan kirjoitus- tai julkaisupäivämäärän näkyville.

Onko tämä ihan mahdoton ajatus? Mielestäni etenkin kenties vuosien kuluttua luettaessa ihan hyödyllinen tieto.

Miksi päivämäärä olisi hyödyllinen tieto? Useimmat oppaan asiat pätevät varmasti vielä kymmenenkin vuoden kuluttua, ja ne harvat, jotka muuttuvat, voidaan päivittää myös oppaaseen.

Blaze [13.09.2011 16:09:42]

#

Metabolix kirjoitti:

Miksi päivämäärä olisi hyödyllinen tieto?

Haluaisitko lukea tietämättäsi opasta, joka on kirjotettu sillon ku PHP4 oli uusin versio? No sitä minäkin. Tosin, kirjoituspäivää hyödyllisempi päivämäärä vois olla viimeisimmän päivityksen ajankohta.

Yucca [13.09.2011 16:41:17]

#

jcd3nton kirjoitti:

Mutta miksi windows-1252 on parempi ratkaisu kuin UTF-8?

Se on kahdeksanbittinen, joten siinä ei ole niitä UTF-8:n ongelmia, joita oppaan osassa 17 käsitellään.

Metabolix [13.09.2011 16:52:58]

#

Blaze kirjoitti:

Haluaisitko lukea tietämättäsi opasta, joka on kirjotettu sillon ku PHP4 oli uusin versio? No sitä minäkin.

Kuinka moni oppaan lukijoista tietää, mikä PHP:n versio on käytössä, milloin se on julkaistu ja mitkä asiat siinä ovat mahdollisesti muuttuneet oppaaseen nähden? Osaatko itse suoralta kädeltä sanoa, mitä versiota käsittelee vaikkapa vuonna 2006 kirjoitettu opas ja mitkä asiat sen jälkeen ovat muuttuneet?

Nykyäänhän Putkassa on lähtökohtana, että vanhentuneet oppaat ovat arkistossa ja opasalueen etusivu edustaa nykyaikaa. Yksi ratkaisu olisi ilmoittaa tämän perusteella automaattisesti jokaisen oppaan alussa, onko tieto vielä ajan tasalla.

Yucca kirjoitti:

[Windows-1252] on kahdeksanbittinen, joten siinä ei ole niitä UTF-8:n ongelmia, joita oppaan osassa 17 käsitellään.

Käytännössä en muista kohdanneeni PHP:ssä tilannetta, jossa UTF-8 olisi aiheuttanut todellisia ongelmia tavumääränsä vuoksi. Tekstiä käsitellään aika harvoin merkki kerrallaan, eli mahdollisia ongelmatilanteita ei ole kovin paljon. Yleensä "ongelmat" johtuvat siitä, että käsitellään virheellisesti tavuja eikä merkkejä. PHP:ssä asia on helppo korjata käyttämällä mbstring-funktioita. Laiska voi jopa laittaa UTF-8-yhteensopivat funktiot automaattisesti perinteisten funktioiden päälle, mutta tällöin tietenkin binaaridatan käsittely vastaavasti vaikeutuu.

Antti Laaksonen [13.09.2011 22:43:35]

#

Euromerkki on tosiaan huono esimerkki UTF-8:n hyödystä. Muutan sen tilalle paremman esimerkin jossain vaiheessa.

UTF-8-merkkijonojen vaihteleva merkin tavumäärä aiheuttaa ongelmia käytännön tilanteissa. Esimerkiksi substr on aivan arkipäiväinen funktio, joka ei toimi oikein UTF-8-merkkijonojen kanssa. Korjaus ei toki ole vaikea, mutta asiasta on hyvä olla tietoinen.

Turso [14.09.2011 10:08:17]

#

Metabolix kirjoitti:

Turso kirjoitti:

Turso kirjoitti:

Saisiko opassarjan kirjoitus- tai julkaisupäivämäärän näkyville.

Onko tämä ihan mahdoton ajatus? Mielestäni etenkin kenties vuosien kuluttua luettaessa ihan hyödyllinen tieto.

Miksi päivämäärä olisi hyödyllinen tieto? Useimmat oppaan asiat pätevät varmasti vielä kymmenenkin vuoden kuluttua, ja ne harvat, jotka muuttuvat, voidaan päivittää myös oppaaseen.

Oh, tämä onkin tiukassa. Opassarja löytyy varsin monessa hakutuloksessa. Kas "intternetistä" löytyy valtavasti tietoa - osa on vanhentunut. Itse pyrin aina ensi silmäyksellä hahmottamaan, mikä tieto on vielä ajankohtaista, tähän kysytty päivämäärä antaa yllättävän näppärästi vastauksen, eikö totta?

Antti Laaksonen [15.09.2011 14:46:18]

#

Olet oikeassa. Vaikka Ohjelmointiputkan opas olisi ajan tasalla, lukijan on vaikeaa tietää tätä ilman päiväystä. Asiaan tulee korjaus.

peg [25.09.2011 13:19:50]

#

Missä nykyään on tavallisimmat funktiot luettelo? ennen se oli ../hak


Sivun alkuun

Vastaus

Aihe on jo aika vanha, joten et voi enää vastata siihen.

Tietoa sivustosta