Erään tuttavan kanssa mietittiin, että voisimme yrittää tehdä nettiin keskustelu- ja deittipalstaa. Mihin tuollainen kannattaa tehdä? Aluksi mietin freehostingcloudia, mutta huomasin sivulta http://www.freehostingcloud.com/terms.html , että kiellettyinä ovat kuvien ja tiedostojen tallentaminen sekä aikuisviihde. Emme siis todellakaan ajatelleet tehdä pornografista sivua, mutta koskaan ei voi tietää, millaisia kuvia käyttäjät sivulleen lataavat. Olisikohan esimerkiksi http://www.unlimitedtree.com/ hyvä vaihtoehto alustalle?
Toinen idea, joka tuli tuttavan mieleen, oli tehdä sivusta mainosrahoitteinen. Mutta mitenkä asia järjestyy käytännössä, sillä kuvia ja mainoksia voi laittaa sivulle ilmaiseksi, enkä tiedä kuka niistä maksaisi? Toisaalta jos saisimme sivulta vaikka kaksi euroa kuussa, niin sillä saisi ainakin osoitteesta http://ilmainenwebhotelli.com/webhotelli.php Silverin, ja kumpikin jäisi 2,5 senttiä voitolle kuussa. :)
Veikkaan, ettette ole selkeästikään suunnitellut yhtään sivustoa.
Jos tuommoista sivustoa rupeaa väsäämään, niin "halvalla" sitä ei kannata tehdä, koska silloin se ei todellakaan toimi.
Deittisivusto vaatii todella paljon käyttäjiä, jotta se toimisi, joten palvelimen toiminta on viimeisin asia, jossa kannattaa säästellä. Ja juurikin mainostuspuoli on tärkeä tulonlähde, joten yhteistyökumppanit kannattaa selvittää. Ei kukaan halua itse olla se, joka mainospaikkoja myy ja päivittelee sivustolle.
Älkää siis kaverisi kanssa luulko, että saatte viikonlopun aikana sivuston valmiiksi ja että se sen jälkeen rullaa itsekseen. Eli teidän pitää myös valvoa sivuston käyttöä. Ja kahteen pekkaan se voi olla lauantain pikkutunneilla hyvinkin vaikeaa...
ts. Takaisin suunnittelupöydän ääreen.
Lebe80 kirjoitti:
Veikkaan, ettette ole selkeästikään suunnitellut yhtään sivustoa.
Tuo on kieltämättä paha puute, mutta Jaskan viimeaikaisten kysymysten perusteella sanoisin, että pahempia ongelmia on luvassa ihan teknisen toteutuksen merkeissä (sekä ulkoasussa että toiminnallisella puolella). Jos sivusto on buginen, tavallinen kansa ei viihdy – ainakaan, kun samanlaista palvelua tarjoaa jo vaikka kuinka moni oikea ja toimivakin sivusto. Osaamattoman tekijän lopputulos voi olla pahimmillaan tätä luokkaa.
OK. Pitänee haudata idea. Kuitenkin jotain PHP-koodausta olisi kiva harjoitella, joten ajattelin, että parhaiten opin valitsemalla ison projektin ja alkamalla selvittämään ongelmia yksi kerrallaan.
Itse lähtisin kyllä tutustumaan eri julkkareihin, ja tutkimaan, miten sellaiseen pystyy tekemään oman laajennuksen. Näin sivuston runko olisi valmiista paketista, jolloin mitään sef-urleja, käyttäjätunnuksien hallintaa, sivurakennetta, välimuistitoimintoa, yms. yms. yms. ei tarvitsisi keksiä uudelleen.
PHP-ohjelmointiin keksit kyllä aiheen, kun mietit esim. harrastuksiasi yms. Itse ainakin väkersin nuorempana juuri salibandyharrastusta varten pistelaskurin, jotta viikottaisten sarjatulosten naputtaminen nettiin nopeutui.
Oikeastaan jalkapallo on ainoa harrastukseni ja en ole seurani WWW-vastaava, joten en pääse korjailemaan kotisivujen bugeja sitä kautta. Olen kyllä tehnyt joitakin pieniä skriptejä ennenkin, mutta tällä hetkellä mulla ei ole mitään muuta ideaa nettiohjelmointiin liittyen kuin
1. Alkaa toteuttamaan deittipalvelua vammaisille henkilöille.
2. Selvittää, onko olemassa sellaista merkkijonoa, jonka käyttäjä voi antaa salasanaksi ja jonka SHA-salaus antaa koodin, joka aiheuttaa SQL-injektion tai cross-site -skriptihaavoittuvuuden (mikä lie onkaan suomeksi).
3. Tehdä täydellinen sähköpostintarkistusfunktio PHP:llä ( https://www.ohjelmointiputka.net/keskustelu/
Kuitenkin jossain vaiheessa nuo 2. ja 3. on opeteltava, jos haluan saada töitä.
PHP-koodausta voi harjoitella kivasti PHP-haasteen avulla, jos et ole sitä vielä kokeillut.
Jaska kirjoitti:
1. Alkaa toteuttamaan deittipalvelua vammaisille henkilöille.
Melkoinen tavoite. Ensiksi kannattaisi määritellä "vammainen" ja miettiä, mitä sellaista sivustosi pystyisi heille tarjoamaan, mitä normaaleilla seuranhakusivustoilla ei ole.
Jaska kirjoitti:
2. Selvittää, onko olemassa sellaista merkkijonoa, jonka käyttäjä voi antaa salasanaksi ja jonka SHA-salaus antaa koodin, joka aiheuttaa SQL-injektion tai cross-site -skriptihaavoittuvuuden (mikä lie onkaan suomeksi).
Ei se hashaaminen mitään haavoittuvuutta aiheuta. Jos koodissasi on aukko, aukko on koodissasi, ja jos koodissasi ei ole aukkoa, sinne ei myöskään mistään ilmesty sellaista. Lisäksi jos kuulut siihen enemmistöön, joka käsittelee hashauksen tuottamaa lukua heksadesimaalimuodossa tekstinä, voit olla varma, että tuloksessa on vain merkkejä 0-9 ja A-F.
Jaska kirjoitti:
3. Tehdä täydellinen sähköpostintarkistusfunktio PHP:llä
Epäiletkö filter_var-funktion tuottamaa tulosta? Turha keksiä pyörää uudestaan. Sitä paitsi täsmällinen osoitteen tarkistus ei todellakaan ole lomakkeen tarkistuksessa tärkein asia, koska se ei estä laittamasta olematonta sähköpostiosoitetta. Kriittisempiä kohtia ovat nimi, päivämäärä, erilaiset lukuarvot ja isossa palvelussa vaikkapa puhelinnumeron maakoodi.
Jaska kirjoitti:
Kuitenkin jotain PHP-koodausta olisi kiva harjoitella
Ratkaise koko PHP-haaste, niin opit paljon ohjelmoinnin perusasioita. Voin vakuuttaa, että hyvät perustiedot ja teoreettinen osaaminen ovat suureksi eduksi myös käytännön työssä.
Toinen hyvä opettelutapa on selvittää kaikki ne asiat, joista joku muu kysyy täällä foorumilla. Jos saat asian selvitettyä (ja testattua) perin pohjin ja olet aivan varma, että tietosi on oikeaa, voit jopa vastata kysymykseen ja saada kysyjänkin hyvälle mielelle.
PHP-haaste opettaa algorytmien tekemistä, ei niinkään kieltä itsessään. Paras tapa oppia PHP:tä(tästäkin voi olla eri mieltä, kuten kaikesta) on tehdä omat sivut. Suunnitella homma omien taitojen yläpuolelle ja alkaa toteuttamaan sitä.
Jokotai kirjoitti:
PHP-haaste opettaa algorytmien tekemistä, ei niinkään kieltä itsessään.
Algoritmit voi tehdä käyttäen kielen standardikirjaston ominaisuuksia. Esimerkiksi rot13-tehtävän voi ratkaista yllättävällä tavalla. Toki juuri tuon tapaista ohjelmointia ei suoranaisesti tarvitse sivuja tehdessä, mutta kyllä siinä varmasti kielen perusasiat oppii.
Perusasiat juu, mutta siihen se sitten jääkin. Jaskan vapaasta kuvauksesta voisi saada sen käsityksen, että hän osaisi ainakin perusasiat.
Jokotai kirjoitti:
PHP-haaste opettaa algorytmien tekemistä, ei niinkään kieltä itsessään.
Ei minkään ohjelmointikielen haaste ole sen syntaksissa ("kieltä itsessään"), vaan että osaa ajatella loogisesti ongelmanratkaisun kantilta. Kuten jo täälläkin on monesti sanottu, kun osaa yhden ohjelmointikielen, osaa ne kaikki.
Jokotai kirjoitti:
Paras tapa oppia PHP:tä(tästäkin voi olla eri mieltä, kuten kaikesta) on tehdä omat sivut. Suunnitella homma omien taitojen yläpuolelle ja alkaa toteuttamaan sitä.
Tämä on toki totta, mutta on tärkeää muistaa myös se, ettei ala liian isoa tai vaikeaa sivua tekemään heti ensimmäiseksi. Suosittelen lämpimästi lukemaan ensin putkan php-oppaan läpi ja sen jälkeen tekemään php-haastetta.
punppis kirjoitti:
Ei minkään ohjelmointikielen haaste ole sen syntaksissa ("kieltä itsessään"), vaan että osaa ajatella loogisesti ongelmanratkaisun kantilta.
Olen vähän eri mieltä. Minusta Malbolgen syntaksi on haastavaa.
Jokotai kirjoitti:
PHP-haaste opettaa algorytmien tekemistä, ei niinkään kieltä itsessään.
Nettisivujen tekemisessä ei tarvitse tietää PHP:n hillittömästä funktiorepertuaarista paljonkaan. Tyypillisiin nettisivujen toimintoihin kuten tietokannan käyttöön ja SQL-injektioiden ja XSS-haavoittuvuuksien torjumiseen ym. "hienoon" tarvitaan yhteensä ehkä tusinan verran sellaisia funktioita, jotka eivät esiinny PHP-haasteen kaltaisessa perusohjelmoinnissa.
Alla on tilasto eräästä aika isosta projektista. Nopeasti kyhäämäni skripti ei ehkä tunnista kaikkea oikein, mutta ainakin pääpiirteet ovat luultavasti kohdallaan.
käyttökertoja | funktio tai rakenne |
---|---|
4333 | if |
2854 | array |
1049 | foreach |
137 | count |
124 | isset |
108 | array_key_exists |
71–100 | empty, switch, array_shift, unset |
51–70 | implode, explode, array_merge, preg_replace, while |
31–50 | sprintf, trim, for, round, in_array, is_array, elseif |
21–30 | date, get_class, is_bool, call_user_func, reset |
11–20 | (20 eri funktiota) |
6–10 | (16 eri funktiota) |
1–5 | (215 eri funktiota) |
Tilastosta nähdään erinomaisesti, että suurin osa koodista muodostuu tavallisista komentorakenteista. PHP:n valmiita funktioita käytetään huomattavan vähän, ja niistäkin vain kourallinen on toistuvasti tarpeen. Esimerkiksi tietokantafunktiot sen sijaan sisältyvät taulukon alimpiin riveihin, koska niitä käytetään vain keskitetysti projektin tietokantaluokissa.
Jos sitä koittais sitten noita haasteita. Mitenkähän palveluntarjoa suostuu siihen, että sivulle tulee tuollaisia skriptejä, kun en ole varannut tilaa sitä varten? Ja riittääkö noissa skripteissä olla kyseinen PHP-koodi vai pitääkö ympärille laittaa validaattorin läpäisevä HTML5/XHTML-koodi?
Pelkkä tulostus riittää, eli jos halutaan positiiviiset parilliset luvut 2 - n, niin tulosteessa saa olla vain luvut 2 - n ei muuta.
EDIT: onko nolla positiivinen tai parillinen tai edes luku?
Haasteessa on muistaakseni inhimillinen aikaraja, jonka puitteissa ongelmat selviävät sopivalla algoritmillä muitta mutkitta ilman raskaita bruteforceja. Jos pelottaa kyykyttää palveluntarjoajan palvelinta niin aja ensin omalla koneella testaukset, ja kun skripti puuppaa ulos jotain järkevää, lähetä skripti palveluntarjoajan palvelimelle. Toki voit viitata PHP-haasteessa myös omalle palvelimellesi jos se näkyy verkkoon päin.
Riittää, että palvelin suoltaa PHP-haasteen tarkastusskriptille oikean lopputuloksen, kirjotti se palvelin sen sitten PHP:llä tai vaikkapa Rubylla, Pythonilla, Javalla tai vaikka COBOLilla.
Ok. Kiitos tiedostoa. Nolla ei ole positiivinen luku, mutta on parillinen ja samoin se on luku.
Teuro kirjoitti:
onko nolla positiivinen
Ei ole, eikä negatiivinenkään.
Teuro kirjoitti:
tai parillinen
Kyllä.
Teuro kirjoitti:
tai edes luku?
On.
Jaska kirjoitti:
Mitenkähän palveluntarjoa suostuu siihen, että sivulle tulee tuollaisia skriptejä, kun en ole varannut tilaa sitä varten?
Palveluntarjoajalla tuskin on sen paremmin kiinnostusta kuin resurssejakaan valvoa asiaa, jos sivuista ei aiheudu ongelmia. Luultavasti hakemukseen vaaditaan tuollainen tieto, jotta saadaan kynnys korkeammalle (eli vähemmän turhia varauksia) ja tyhmimmät väärinkäyttäjät pois (esim. "aion levittää waretettua musiikkia ja kräkkejä peleihin").
Jaska kirjoitti:
Ja riittääkö noissa skripteissä olla kyseinen PHP-koodi vai pitääkö ympärille laittaa validaattorin läpäisevä HTML5/XHTML-koodi?
Tehtäviin kuuluu vastata tekstimuodossa. Seuraavassa on esimerkki halutusta vastauksesta ja skriptistä, jolla sen voisi tulostaa:
1 2
OK. Täytyypä tutustua tuohon projektiin ajan kanssa.
TESTI 1...VÄÄRIN
Syöte:
n=3&m=3
Sinun ratkaisusi:
1 2 3\n2 4 6\n3 6 9
Oikea ratkaisu:
1 2 3
2 4 6
3 6 9
Plääh. Ei toimi, vaikka näyttää samalta selaimessa.
Katsopa, mitä seuraava PHP-sivu tuottaa:
Ehkä tämä auttaa ongelmasi ratkaisussa. Kyseessä on yksi PHP:n perusasioista, joten voin vain kuvitella, mitä "isohkon sivuston" tekemisestä tulisi.
Totta. Nyt sekin kohta selvisi.-
Aihe on jo aika vanha, joten et voi enää vastata siihen.