Asynkroniset toiminnot WordPressissä

Toisinaan WordPressin kanssa tulee tarvetta tehdä asioita asynkronisesti. Jos joku toimenpide vaatii aikaa ja aiheuttaa odottelua, mutta sen lopputulos ei oikeastaan ole kriittinen juuri tällä hetkellä, käsillä on asia, joka kannattaa ehkä tehdä asynkronisesti. WordPress mahdollistaa asynkroniset toiminnot Ajax-toiminnallisuuden kautta. Ajax on oikeastaan tarkoitettu javascript-käyttöön, eli tarkoitus on, että javascriptin puolelta lähetellään ajax-pyyntöjä ja vastauksena […]

Devaajan työkalut: terminaali

Komentorivi on hieno työympäristö, jossa tulee tehtyä kaikenlaista, joten senkin osalta käyttökokemukseen kannattaa panostaa. Oma komentorivikokemukseni on alkanut DOS-aikoina ja niistä ajoista on onneksi päästy jo pitkälle. Mac OS:n mukana tulee Terminal tai Pääte, joka hoitaa asiansa, mutta aika monella työkseen terminaalia käyttävällä taitaa olla käytössä iTerm2, jonka valtavasta ominaisuuskasasta olen tainnut itsekin raapaista vain […]

Tiedon lukeminen luotettavasti ja fiksusti etäpalvelimelta WordPressissä

Jos WordPressissä haluaa ladata jotain dataa saitin ulkopuolelta, sehän käy kätevästi wp_remote_get()-funktiolla. Tällaisten kutsujen yhteydessä on aina syytä huolehtia välimuistittamisesta. Ilman välimuistia jokaisella sivunlatauksella kysellään dataa etäpalvelimelta ja siinä törmätään monenlaisiin ongelmiin nopeasti. Jatkuva kyseleminen tuottaa turhaa tietoliikennettä ja rasittaa etäpalvelinta turhaan. Jos tieto ei ole niin nopeasti muuttuvaa, että sitä on välttämätöntä seurata reaaliajassa, […]

Testaaminen WordPress-kehityksessä

Testaaminen on ohjelmistokehityksen perusjuttuja ja tapa varmistaa, että koodi jota tehdään, on toimivaa. Testaamista on monenlaista, tässä keskityn yksikkötestaamiseen (unit testing) ja integraatiotestaamiseen (integration testing). Näissä erona on, että yksikkötestauksessa testataan ohjelmiston yksittäisiä komponentteja ja integraatiotestauksessa isompia kokonaisuuksia. WordPress-kontekstissa näitä kahta on kuitenkin hankalaa ja tarpeetontakin erottaa tarkasti toisistaan. Kolmas olennainen testaamisen muoto on regressiotestaus […]

WordPress-lisäosan kehitysprosessi

Kehitän ja ylläpidän WordPressin Relevanssi-hakulisäosaa ja sen kaupallista versiota Relevanssi Premiumia. Lisäosien kehityksen hallinnointi on sen verran monipuolinen prosessi, että ajattelin kiinnostavaksi vähän avata toimintatapojani. Jaettua koodia Kun ylläpidetään kahta samankaltaista, mutta erilaista tuotetta, koodin on oltava mahdollisimman pitkälle samaa. Tämän asian opin melko pian. Eri versioiden ylläpitäminen oli työlästä, kun eri versioissa oli eri […]

WebP-kuvien käsittely Finderissä

WebP on Googlen kehittämä kuvaformaatti, joka on tarkoitettu nettikäyttöön. Se pakkaa kuvat tehokkaammin kuin JPG- ja PNG-formaatit, tukee sekä häviöllistä että häviötöntä pakkausta sekä läpinäkyvyyttä. Selaimet tukevat WebP:tä enimmäkseen hyvin. Ongelmia tulee, kun WebP-kuvia haluaa käsitellä omalla koneella. Ainakaan Macilla monikaan ohjelmisto ei vielä WebP-kuvia tue, eikä esimerkiksi Esikatselu osaa niitä näyttää. Niinpä netistä noukitun […]

Integrating FastSpring and Wishlist Member

I’m using Wishlist Member on a membership site I run (I don’t particularly recommend using it). So far, I’ve been handling the payments myself through PayPal, which works ok. However, next year I’m headed into trouble, as EU VAT system changes. So far I’ve charged Finnish VAT from all EU users without a VAT id. […]

Converting GPX to OV2 with PHP

Here’s how you can convert GPX to OV2 with PHP. This is necessary for example to GeoCachers who use TomTom navigators and want to have GeoCaches as POIs on the navigator. Earlier work There’s POIConverter, which manages lots of conversions, but is Windows only. There’s Convert POI, which is a web site, but it choked […]

Parametrillisten urlien uudelleenohjaus

Uudelleenohjauksien tekeminen .htaccessissa on helppoa: Redirect 301 /sivu/joka/ohjataan http://www.example.com/uusiosoite Mutta entäs jos sivun osoite perustuu parametreihin, eli on esimerkiksi muotoa http://www.example.com/index.php?tag=foo? Silloin yksinkertainen edelleenohjaus ei toimi, sillä se perustuu vain tiedostojen nimiin. Tarvitaan vähän monimutkaisempaa koodia: Options +FollowSymlinks RewriteEngine on RewriteCond %{QUERY_STRING} &?tag=foo RewriteRule ^index\.php /foo? [R=301,L] Tämä ohjaisi URLin http://www.example.com/index.php?tag=foo osoittamaan osoitteeseen http://www.example.com/foo. Ohjauksen […]

Kuvien optimointi nopeuttaa sivujen lataamista

Jatketaan optimointiteemalla (edellinen juttu käsitteli spritejä). Nettisivuilla käytettäviä kuvia pystyy usein pakkaamaan häviöttömästi vielä vähäsen, ilman että kuvien laatu heikkenee. Pienentämällä kuvia säästää useita kilotavuja ja varsinkin runsaskuvaisella sivustolla säästöt tiedostojen koossa ja siten sivulatausten nopeudessa voivat olla tuntuvia. Jos käyttäjiä on runsaasti, myös kaistanleveydessä saadaan hyödyllisiä säästöjä. Kuvien optimoimiseen on muutamia näppäriä työkaluja. Erilaisissa […]