Olen suunnitellut Ohjelmointiputkaan projektia, jossa tuotetaan yhteisvoimin joukko kotisivun tekijälle hyödyllisiä PHP-skriptejä. Tavoite on, että skriptit ovat toimivia, turvallisia ja yksinkertaisia. Kohderyhmä ovat ennen kaikkea kotisivujen tekijät, jotka eivät tunne hyvin PHP-kieltä.
Tässä on muutamia ajatuksiani:
Skriptien aiheita:
vieraskirja, kävijälaskuri, blogi, kirjautuminen, palautelomake, äänestys, kyselylomake, sivupohja, uutiset, kalenteri, kommentointi
Projektista on tarkoitus olla hyötyä sekä skriptien toteuttajille että käyttäjille. Tässä on erinomainen tilaisuus hioa opittuja PHP-taitoja ja saada aikaan koodia, joka pääsee tosikäyttöön lukemattomilla nettisivuilla.
Jos olet kiinnostunut osallistumaan projektiin, lähetä minulle sähköpostia (antti.laaksonen@mbnet.fi). Lähetän paluupostissa pienen PHP-tehtävän, jonka avulla varmistan, että taidot ovat riittävät projektiin.
Lisäksi toivon kaikilta lisää ehdotuksia skriptien aiheiksi: mitä skriptejä kotisivujen laatijat tarvitsevat toistuvasti?
Tässähän menee kaikki PHP-työpaikat, kun kaiken voi hakea Ohjelmointiputkasta. :) Jotain datan hakua toiselta sivulta voi olla käyttökelpoinen. Luulisin, että Googlella löytyy aika paljon jo valmista koodia.
Googlella löytyy tosiaan vaikka millä mitalla PHP-skriptejä. Tässä taitaa olla tosin se idea, että jaetaan suomen kielellä (kommentoituja) laadukkaita skriptejä. Täältä hakiessaan voi luottaa siihen, että skripti on esimerkillisen laadukas, siinä ei ole aukkoja ja sitä voi helposti muokata.
Antti Laaksonen kirjoitti:
Lisäksi toivon kaikilta lisää ehdotuksia skriptien aiheiksi: mitä skriptejä kotisivujen laatijat tarvitsevat toistuvasti?
Itse voisin ehdottaa kuvagalleriaa, eri ohjelmointikielien syntaksiväritystä ja tietysti bbcodet.
Hieno idea. Scriptejä tosiaankin löytää googlettamalla, mutta tosiasia on että jos joku ei-niin-taitava lähtee niitä kokeilemaan, niin saattaa tulla pissa äkkiä käteen. Toisinaan tarjonnan karsimiseen menee äkkiä enemmän aikaa, kuin koodin luomiseen.
Kotimaiselta luotetulta sivustolta saatavat scriptit, jotka vielä suomeksi kommentoitu on jotain, jota ainakin minä tervehtisin ilolla.
Tuollaista voisin tukea ihan jo rahallisestikin. Koodaamalla en, koska taito ei riitä edes helpoimpaan "testiin" jonka Antti osaisi keksiä :D
Siitä en tiedä että riittääkö taidot, mutta sen tehtävän voisin joka tapauksessa haluta, näin niinkuin harjoituksesksi. =D
Vaikka asia läheisesti liittyykin osaan noista, niin mainittakoot nyt RSS-feedin toteutus, vaikka niistä uutisista ja blogista ja ehkä jopa kalenteriin merkityistä tapahtumista ja asioista.
Listaa voisi jatkaa tiedoston lataamisella ja muokkaamisella. Tämä muokkaus siis sisältää lukituksen tiedostolle, ettei tule vahingossa kahta muokkausta yhtä aikaa.
Itsekin olen tehnyt etäisesti vastaavaa projektia. Idea siinä on vähän vastaava, tosin enempi CMS-vivahteinen. Pääpainona on artikkelit, yhdessä niiden luokittamisominaisuuden ja mm. kommentoinnin kanssa.
Mutta minusta vastaava ajatus voisi ihan hyvin toimia tässäkin, moduulipohjainen toteutus olio-ohjelmointia käyttäen. Tietty toisaalta pelkkä perinteinen funktiorypäs voi olla aloittajalle helpommin omaksuttava ja jatkokehitettävä. Ja tietty aloitusviestissä haluttiin että se toimii mahdollisimman monilla versioilla, joten olio-toteutus taitaa jäädä pois?
Tuolta näkee Doxygenillä generoidun dokumentaation tuosta "J-PageToolsista":
(poistettu rikkinäinen linkki)
Koodeja ei vielä saa mistään, tarkoitus on ollut saada koodit sellaiselle tasolle että niistä jollekulle jotain oikeaakin hyötyä olisi, ja julkaista ne sitten Sourceforgessa jollain vapaalla lisenssillä. Toisaalta tuossa on jo lähtökohtaisesti jotain sellaisia typeryyksiä (moduuleille kannattaisi tehdä yksi yläluokka, epämääräinen virheenkäsittely) että ehkä kannattaisi palata suunnittelupöydän ääreen...
JTC kirjoitti:
Mutta minusta vastaava ajatus voisi ihan hyvin toimia tässäkin, moduulipohjainen toteutus olio-ohjelmointia käyttäen. Tietty toisaalta pelkkä perinteinen funktiorypäs voi olla aloittajalle helpommin omaksuttava ja jatkokehitettävä. Ja tietty aloitusviestissä haluttiin että se toimii mahdollisimman monilla versioilla, joten olio-toteutus taitaa jäädä pois?
Eikös tässä nyt ollut tarkoitus tehdä pikkukoodipätkiä, ilman mitään sen ihmeellisempää. Joten kyllä oliototeutus taitaa jäädä tässä projektissa pois... =) Hassua muuten että minunkin on aina pakko vääntää omaa portaalia, vaikka valmiita paljon parempia on jo maailma täysi. >:D
Antti Laaksonen kirjoitti:
Skriptien aiheita:
vieraskirja, kävijälaskuri, blogi, kirjautuminen, palautelomake, äänestys, kyselylomake, sivupohja, uutiset, kalenteri, kommentointi
Sinänsä jos nyt ajatellaan noita Antin antamia aiheita, niin en välttämättä lähtisi käyttämään sanaa "pikkukoodinpätkä", sillä noista voi saada hyvinkin laajoja systeemejä ajatellen nyt esim. vieraskirjaa tai blogia... Minusta olisi sinänsä ihan hyvä juttu, jos mukana olisi oliotkin, koska nykypäivänä niitä kuitenkin käytetään kasvavin määrin. Sitäpaitsi suurin osa web-hotelleista tukee jo PHP5:sta, joten näin ollen PHP:n versioista aiheutuva ongelma ei mielestäni ole niin suuri...
Ei koodien tarvitse lyhyitä olla, pääasia on että ne toimivat hyvin ja ovat selkeitä! Kyllä nettisivun tekijälle on mieluisampaa käyttää helppokäyttöistä hyvän näköistä vieraskirjaa, kuin äkkiä tuhaistua kymmenen rivin pätkää. Vinkkinä vain, että runsaasti kommentteja ja selkeää koodia!
Triton kirjoitti:
Sitäpaitsi suurin osa web-hotelleista tukee jo PHP5:sta, joten näin ollen PHP:n versioista aiheutuva ongelma ei mielestäni ole niin suuri...
Kaikki eivät käytä hotelleja esim. http://sooda.dy.fi/
MBNetissä useimpien kotisivut toki ovatkin.
Jokotai kirjoitti:
Kaikki eivät käytä hotelleja
Heillä ei varmasti olekaan ongelmia, koska he voivat itse asentaa haluamansa PHP:n version. Sitä paitsi ne, jotka osaavat kunnolla pystyttää oman palvelimen, osaavat varmaankin myös itse käyttää PHP:tä eivätkä välttämättä tarvitse valmiita järjestelmiä.
Jokotai kirjoitti:
MBNetissä useimpien kotisivut toki ovatkin.
Onko sinulla tästä jotain tilastoja? Itse en muista viime aikoina nähneeni kovin paljon MBNet-linkkejä. Halpaa, PHP-tuellista sivutilaa saa monesta paikasta.
Tulipa muuten mieleen, että onko koodeja tarkoitus lisenssoida mitenkään tai onko esim. kaupallinen toiminta sallittua?
Antti Laaksonen kirjoitti:
Skriptejä saa käyttää omilla sivuilla täysin vapaasti, eikä tarvitse laittaa häiritseviä linkkejä, merkintöjä tekijästä tms.
Ja lasketaanko tekijän nimi PHP-tiedoston alussa "merkintöjä tekijästä" -kategoriaan vai tarkoitettiinko tuolla lähinnä www-sivuilla näkyvää tekstiä?
Luulisin, että skriptit tehdään PHP5:lle. Se on jo laajalti käytössä, eikä PHP enää edes tue versiota 4.
Olio-ohjelmointia on hyvä käyttää siellä, missä siitä on oikeasti hyötyä. Pieniin skripteihin sitä on mielestäni ihan turha lähteä väkisin vääntämään, jollei se oikeasti helpota ylläpitoa jne. Kuten aiemmin jo manittiinkin: muutamissa tässä ketjussa mainituissa skripteissä olioita voi käyttää mainiosti (ja on ehkä suotavaakin).
Mielestäni Olio-ohjelmoinnin (tai suunnittelun) hyödyt kuitenkin tulisivat selkeästi esille tälläisessä projektissa. Kun fiksuihin rajapintoihin panostaa suunnitteluvaiheessa (mihin OO kannustaa), pitkällä juoksulla ylläpidettävyys paranee merkittävästi. Muutenkin jako fiksuihin rakenteisiin auttaa tälläisissä isommissa kokonaisuuksissa.
Sinänsähän ei aloittelijalle pahemmin eroa ole:
<?php /* OLIO */ $vieraskirja = new Vieraskirja("Matin oma vieraskirja"); $vieraskirja->kasitteleUudetViestit(); echo "<h2>Matin oma vieraskirja</h2>"; $vieraskirja->naytaUusimmatViestit(10); $vieraskirja->naytaLahetyslomake(); /* PROSEDURAALINEN */ opVkKasitteleUudetViestit(); echo "<h2>Matin oma vieraskirja</h2>"; opVkNaytaUusimmatViestit(10); opVkNaytaLahetyslomake(); ?>
Vai mitenkäs tuo toteutus sitten onkaan käytännössä tehdä? En tarkemmin sitten tiedä minkälainen toteutus Antilla sitten onkaan mielessä (sinunkaupat ei kai haittaa :)?
Niin, voitaisiihan sitä periaatteessa toteuttaa kaikki skriptit ensin toteutetun luokkakirjaston pohjalta, jolloin ei tule sitä ongelmaa, että tarvittaisiin ulkopuolisia kirjastoja. Sillä tavalla saataisiin myös varmistettua paremmin myös skriptien toiminta ja turvallisuus, kun kaikki pohjautuisi valmiiksi suunniteltuihin metodeihin.
Triton kirjoitti:
Sinänsä jos nyt ajatellaan noita Antin antamia aiheita, niin en välttämättä lähtisi käyttämään sanaa "pikkukoodinpätkä", sillä noista voi saada hyvinkin laajoja systeemejä ajatellen nyt esim. vieraskirjaa tai blogia... Minusta olisi sinänsä ihan hyvä juttu, jos mukana olisi oliotkin, koska nykypäivänä niitä kuitenkin käytetään kasvavin määrin.
No lähinnä syynäni oli se, että aloitteleville koodareille olioden ymmärtäminen on joskus haastavaa (ainenkin itselleni oli) ja siksi ajattelin näin. Joka tapauksessa näin jälkeenpäin ajatellen olisi tosiaankin ihan kätevää noissa laajemmissa "koodin pätkissä" käyttää olioita... Ja niinkuin aiemmin sanottiin, niin esim. blogiahan projektina voi laajentaa aivan loputtomiin. =)
PHP 5 ja oliot ovat sallittuja, kunhan niistä on aitoa hyötyä. Ei ole esimerkiksi järkevää koodata skriptiä muuten PHP 4:n tyyliin mutta käyttää "huvin vuoksi" muutamaa PHP 5:n ominaisuutta, joiden vuoksi skripti ei toimi PHP 4:ssä. Myöskään koodin laatu ei parane taikaiskusta, jos koodin ympäröi luokalla ja luo siitä yhden ilmentymän skriptin alussa.
Lisenssiasioista täytyy päättää yhdessä ennen skriptien julkaisua.
Voisko nää lisensoida ihan niin, että ei mitään rajoituksia kuin että alkuperäisen tekijän nimi pitää jäädä lähdekoodin. Ei mitään oikkkuja.
Itse ainakin mietin sitä, että kaupallinen toiminta olisi rajoitettu ainakin siten, että koodin tekijöiden ulkopuolella olevat eivät saa myydä niitä.
Ehdotan lisenssiksi alla olevaa:
Kannatan myös >;)
Kannatan!
En kannata!
Mites projekti edistyy? Onko ollut paljon halukkaita osallistujia?
Koskas projektista tulee lisätietoa?
Triton kirjoitti:
Koskas projektista tulee lisätietoa?
Kärsivällisyys on hyve. Tälläisen vähän isomman projektin kordinoiminen varmasti vie aikansa ja luulen, että Antti odottaa halukkaiden hakupostien ilmestymistä postilaatikkoonsa...
walkout_ kirjoitti:
Voisko nää lisensoida ihan niin, että ei mitään rajoituksia kuin että alkuperäisen tekijän nimi pitää jäädä lähdekoodin. Ei mitään oikkkuja.
Tämä olisi käytännössä sellainen:
http://creativecommons.org/licenses/by/3.0/
Ja tässä on lisäksi sen eri variaatiot, joissa on mm. kaupallisuus- ja muokkausoikeus- "oikkuja" mukana:
http://creativecommons.org/about/licenses/
Sitten on titetenkin BSD ja GPL eri variaatioineen.
jalski kirjoitti:
Ehdotan lisenssiksi alla olevaa:
En kannata. Enkä usko että tuo olisi ainakaan täällä suomessa lain edessä mitenkään pätevä.
Torgo kirjoitti:
Vierastan CC:tä softalle. Mieluummin joku softalle tarkotettu lisenssi, BSD lienee tällaiselle projektille hyvä.
Torgo kirjoitti:
jalski kirjoitti:
En kannata. Enkä usko että tuo olisi ainakaan täällä suomessa lain edessä mitenkään pätevä.
Jaa, miksikäs ei olisi? Kotimainen versio samasta: http://evvk.com/evvktvh.html
Blaze kirjoitti:
Torgo kirjoitti:
Vierastan CC:tä softalle. Mieluummin joku softalle tarkotettu lisenssi, BSD lienee tällaiselle projektille hyvä.
Ehkä turvallisempi maailmanlaajuisesti tosiaan joku jenkeissä tehty softalisenssi. Suomen lainsäädäntöä tulkitessa noilla eroilla tuskin kuitenkaan isompaa merkitystä on. Ite olen CC:tä heitellyt aika huolimattomasti omiin softiin, tosin enpä mitään isompaa olekaan tehnyt/lisensöinyt.
Tässä listassa ovat PHP-projektin aiheet ja tekijät:
aihe | tekijä |
---|---|
vieraskirja | Isopaha |
kävijätilastot | Antti Laaksonen |
blogi | Zeeli |
kirjautuminen | Triton |
palautelomake | Teuro |
äänestys | trilog |
kyselylomake | Teuro |
sivupohja | ? |
uutiset | Triton |
kalenteri | Antti Laaksonen |
kommentointi | ? |
kuvagalleria | Zeeli |
syntaksiväritys | Isopaha |
bbcode | trilog |
RSS-syöte | ? |
tiedoston lähetys | Sien1 |
tiedoston muokkaus | ? |
Kun aloitat uuden skriptin tekemisen, ilmoita asiasta tässä keskustelussa, jolloin aihe varataan sinulle. Voit myös varata aiheen, jota ei ole listassa, tai ehdottaa sitä.
Kun saat skriptin valmiiksi, aloita siitä uusi aihe projektin keskusteluun. Laita aiheeseen linkki pakettiin, joka sisältää skriptin koodit, sekä paikkaan, jossa skriptiä voi kokeilla. Sitten muut antavat palautetta skriptistä.
Ohjeita:
Yleistä:
Skriptin täytyy toimia mieluiten PHP 4:llä ja ilman tietokantaa. Jos järkevä toteutus olisi hankala PHP 4:llä, PHP 5:n käyttäminen on perusteltua. Jos järkevä toteutus olisi hankala tiedostoilla, tietokannan (MySQL) käyttäminen on perusteltua.
Skriptin täytyy toimia Linuxissa ja Windowsissa, ja se ei saa vaatia kirjastoja, joita ei ole mukana PHP:n perusasennuksessa.
Register globals:
Skriptin täytyy toimia riippumatta register globals -asetuksesta. Jos register globals on käytössä, lomakkeen kautta lähetetty tieto on sekä muuttujassa $_POST["tieto"] että muuttujassa $tieto. Jos register globals ei ole käytössä, lomakkeen kautta lähetetty tieto on vain muuttujassa $_POST["tieto"].
Ratkaisu: Muuttujat täytyy lukea taulukoista ($_POST, $_GET, $_COOKIE jne.), mutta skriptiä ei saa haitata, vaikka tiedot olisivat myös samannimisissä muuttujissa.
Magic quotes:
Skriptin täytyy toimia riippumatta magic quotes -asetuksesta. Jos magic quotes on käytössä, lomakkeen kautta lähetettyyn tietoon ilmestyy kenoviivoja mm. ennen heittomerkkejä.
Ratkaisu: Skriptin täytyy tarvittaessa poistaa kenoviivat, jos magic quotes on käytössä. Tähän soveltuu esim. seuraava koodi, joka olettaa, että tiedoissa ei ole taulukkoja:
if(get_magic_quotes_gpc()) { foreach($_POST as $nimi => $arvo) { $_POST[$nimi] = stripslashes($arvo); } foreach($_GET as $nimi => $arvo) { $_GET[$nimi] = stripslashes($arvo); } }
Tietysti jos tiedot yhdistetään SQL-kyselyyn, kenoviivat täytyy laittaa takaisin esim. funktiolla mysql_real_escape_string.
Varaus: kävijätilastot, kalenteri
Varaus: palautelomake
Varaus: bbcode
Varaus: vieraskirja
Varaus: uutiset
Varaus: blogi, kuvagalleria
Pari kysymystä kysyisin:
1. Saako skriptit hyödyntää javascriptiä lähinnä ajaxia?
2. Onko suositeltavaa, että html ja php eriytetään vai
onko siitä suurta haittaa jos joitain osia on sekaisin?
3. Onko tarkoitus, että tehdään myös muotoilut css:ssän puolelta
valmiiksi, vai jätetäänkö se koodin käyttäjän vaivaksi?
Minusta olisi hyvä jos scripti toimisi ilman javascriptiä. html ja php olisi hyvä eriyttää kaikissa tapauksissa. Elementit voisi yrittää nimeta ja luokitta / yksilöidä niin ettei käyttäjän tarvitse puukottaa merkkausta tyylitellessään.
Kaikki muut on ihan OK paitsi, että tuo html:llän ja php:n eriyttäminen saattaa joissakin tapauksissa muodostua hankalaksi...
Itsekin jättäisin CSS:n ja JavaScriptin pois, koska ne eivät mielestäni kuulu tähän projektiin.
Antti Laaksonen kirjoitti:
Skriptin täytyy toimia Linuxissa ja Windowsissa, ja se ei saa vaatia kirjastoja, joita ei ole mukana PHP:n perusasennuksessa.
Mitä näillä kirjastoilla tarkoitetaan, PHP:n laajennoksia vai? Laajennoksiin kuuluu mm. gd, dom, mysql jne. Sekä, mitä perusaennus käsittää tässä tapauksessa. Perusasennushan olisi PHP ilman mitään laajennoksia.
JavaScriptiä voi käyttää, kunhan skripti toimii ilman sitäkin.
HTML:ää ja PHP:tä saa olla sekaisin – se on usein järkevä ratkaisu.
CSS:ää voi käyttää oman harkinnan mukaan, mutta se ei ole pakollista.
Ihanne olisi, että skripti ei vaatisi mitään PHP:n lisäosia, joita ei ehkä ole kaikilla palvelimilla. Tästä voi poiketa hyvällä syyllä.
Vielä yksi asia:
Tiedostojen rivinvaihdojen olisi hyvä olla Windows-muodossa, jotta niitä voi muokata helposti Windowsin editoreilla.
Tajusin muuten just, että olen koodannut tätä mun uutisohjelmaa englanniksi, joten toivottavasti tämä ei haittaa. Olen kuitenkin kommentoinut suomeksi...
Varaus: Kyselylomake
Varaus: äänestys
Varaus: tiedoston lähetys
Varaus: kirjautuminen
Varaus: syntaksiväritys
Aihe on jo aika vanha, joten et voi enää vastata siihen.