Browsing Tag

php

wp-blue-1440x900
webbutveckling

5 saker att tänka på när du skapar WordPress-plugins

När jag byggde Travelmap, min första publika WordPress-plugin, la jag ner lite tid på att kolla upp best practices. Även om det går att hitta mycket information om hur man snabbt hackar ihop en plugin som fungerar hjälpligt så kan det vara lite svårare att hitta korrekt och aktuell information om hur de bästa sätten att lösa vanliga problem på. Här är i alla fall fem viktiga saker att tänka på:

Fortsätt läsa

webbutveckling

Några exempel på alternativa backends

skrivmaskinNågot av det tråkigaste arbetet för webbutvecklare är att bygga sidor för att lägga till och uppdatera innehåll. Det är sidor som inte kräver så mycket kreativitet, men som kan ta lite tid att bygga rätt. För små egna webbplatser är de speciellt tråkiga att bygga eftersom de aldrig kommer att synas utåt.

Det flesta ramverken för skriptspråk som php och Ruby har vad de brukar kalla för scaffolding för att snabbt komma igång med grunden för att kunna editera innehåll (CRUD – create, read, update, delete). Vill man göra det ännu enklare för sig så finns det faktiskt flera bra alternativ:

  • Program för databasadministration – Editera innehåll direkt i databasen med desktop- eller webbaserad mjukvara. phpMyAdmin är vanligt, men det finns gott om alternativ. Kräver inget arbete, men fungerar inte så bra om man vill låta andra uppdatera.
  • Textfiler – Hämta innehåll från textfiler. Fungerar bra så länge innehållet inte är allt för komplicerat eller omfattande. Kan användas av alla som kan hantera ett FTP-program, men ska antagligen bara editeras av en liten grupp betrodda administratörer.
  • Google Docs – Har ett enkelt API som hanterar fullständig CRUD. Går att bjuda in de som ska kunna uppdatera informationen eller lämna öppet för alla. Går att spåra vem som gjort vad. Som backend fungerar Spreadsheet och Forms bäst eftersom informationen kan struktureras på ett förutsägbart sätt. Finns färdiga widgets för att visa diagram och liknande.
  • Twitter – Perfekt verktyg för att uppdatera mindre bitar information. Nyheterna på Viktpuls läses till exempel in från Viktpuls twitterkonto. Går att välja ut meddelanden som ska visas genom att filtrera på exempelvis hashtags eller mottagare. Tänk på att inte använda ditt vanliga konto om det blir många meddelanden som inte är intressanta för de som följer dig.
  • Delicious – Perfekt backend för en länksamling, länkblogg eller bloggroll. Länktipsen på startsidan här på Mediascreen kommer från mina bokmärken märkta med nyckelordet share på Delicious. Hämta bara egna bokmärken eller sök igenom andras också. Kom överens om ett eget nyckelord och låt alla som vill vara med och uppdatera länksamlingen. Om du planerar en länkblogg kan det vara bra att veta att beskrivningarna måste hålla sig inom 255 tecken.
  • Flickr – Ladda upp, beskriv och redigera foton i ett stabilt och funktionellt system. Att skapa motsvarande funktioner på en egen webbplats skulle ta en hel del tid. Varför inte åka snålskjuts på all utveckling Flickr redan gjort? Administrera hela bildarkivet på Flickr och visa det sedan på din egen webbplats. Använd ett eget privat konto, bjud in fler att lägga till bilder eller öppna upp helt och kom överens om att gemensamt nyckelord.
  • Freebase – motsvarigheten till wikis när det gäller strukturerad data. Bygg på befintliga tabeller eller starta en egen databas. Mycket avancerat verktyg för lite större datamängder.
  • Open Data Tables – en standard för att lagra data som XML i versionshanteringssystemet github. Informationen kan sedan användas genom Yahoos SQL-variant YQL. Fördelar är bland annat att det går att se vem som ändrat vad, att många kan samarbeta på samma data och att det finns inbyggd versionshantering.

Fördelen med att använda andra stora webbtjänster som backend till sin egen webbplats är framför allt att man direkt får tillgång till gränssnitt som är genomtänkta, ordentligt testade och bekanta för de flesta. Dessutom är de ofta enkla att bjuda in fler användare till efterhand om man skulle behöva.

Har du egna tips på fler praktiska tjänster som kan fungera som backends?

personligt, webbutveckling

Arbetssemester – avstämning efter första veckan

Okej, så det har inte riktigt blivit avstämning varje kväll, men här kommer en liten rapport från första veckan.

Som vanligt tar allt lite längre tid än jag trott. Framför allt har jag underskattat planeringstiden. Eftersom jag inte har arbetat helt objektorienterat i så många projekt så går det åt en hel del tid åt att läsa på och utvärdera olika upplägg. Ska jag använda data access object, table row gateway eller active record för dataåtkomst? Ska jag använda ett globalt registry och ska det i så fall vara ett singleton eller en statisk klass? Ska url:erna kopplas direkt till respektive controller eller ska ansvar fördelas på något annat sätt? Till min hjälp har jag PHP 5 Object, Patterns and Practice och PHP in Action – Objects, Design, Agility. Det täcker båda ungefär samma material men på lite olika sätt. Är beskrivningen av ett ämne lite luddig i den ena boken så brukar det hjälpa att går över till den andra. Dessutom finns ju StackOverflow och SitePoints forum för PHP Application Design (där för övrigt några av författarna till mina böcker är med i diskussionerna).

När det gäller arbetstiden så har det också gått lite sämre än planerat. Istället för 35 timmars arbete förra veckan blev det knappt 25. Jag har verkligen svårt att fokusera när jag arbetar hemma. Det är svårt att känna någon tidspress när man har hela dagarna på sig. Jag skulle verkligen behöva ”gå till jobbet” på morgnarna.

Nu till det positiva:

  • Jag har använt SimplePie för rss-hantering tidigare, men blir hela tiden överraskad över hur tillförlitligt det är när det gäller att hantera opålitlig indata och teckenformateringsproblem.
  • PHP Simple HTML DOM Parser är ett helt fantastiskt bibliotek. Ladda in en sida och kom åt alla element precis som med jQuerys selektorsystem.
  • Strukturen jag till sist kommit fram till är jag ganska nöjd med. Templatesystemet är flexibelt utan att vara komplicerat, mina controllers är tunna och mina models är rena.
webbutveckling

Bloggpuls – svenska bloggosfären i kortform

Jag började med Bloggpuls förra söndagen som mitt SEO Sunday-projekt. Det tog lite längre att få klart än jag trodde, men efter några kvällars jobb börjar bitarna falla på plats.

Varför?

Bloggarna jag prenumererar på handlar i stort sett bara om webbutveckling och politik. Det kan ju bli lite torrt ibland och därför använder jag ofta nyligen för att slumpvis dyka ner någonstans i bloggosfären och börja läsa. Jag tycker det är helt fantastiskt att så många vågar dela med sig av sina framgångar, motgångar, åsikter och känslor. Jag önskar bara att jag hade mer tid att läsa fler personliga bloggar.

Tanken med bloggpuls är att  lista korta utdrag ur bloggposter på ett sätt som väcker lusten att läsa mer genom att fokusera på den känslomässiga aspekten i bloggosfären.

Hur?

Bloggpuls är uppenbarligen inspirerat av Twistori – men istället för att samla inlägg från twitter så visar bloggpuls upp inlägg från den svenska bloggosfären.

Själva inläggen kommer från Google Blog Search. Nya inlägg hämtas en gång i minuten för att mellanlagras i en databas. Vid varje sidvisning hämtas de 100 senaste inläggen som visas en och en med tre sekunders mellanrum.

För att få tag på bloggposter har jag har provat ganska många olika sökverktyg utan att hitta hågon som passar perfekt:

  • Twingly – Ger för korta utdrag i RSS flödet och ofta förekommer inte sökorden i utdraget.
  • Bloggsök – har inget rss-flöde för resultatet.
  • Knuff – Verkar inte hantera flera sökord och ger inga utdrag i rss-flödet.
  • Frisim – Ger bara första meningen i RSS flödet och ofta förekommer inte sökorden i utdraget.
  • Technorati – Ger för få svenska resultat.
  • Google Blog Search – Fungerade bäst och ger lagom långa utdrag. Däremot indexeras hela sidor – inte bara bloggposter. Bloggar som använder nyckelorden på varje sida i till exempel en presentation kommer därför matcha varje gång de skriver ett inlägg oavsätt vad de skriver om. Lösningen på detta var att spara en hash-summa för texten i databasen. Nya inläggs hash-summa jämförs sedan med summorna som redan finns (hash-kolumnen görs unik och INSERT IGNORE används för att lägga till nya poster).

Innan visning kortas utdragen ner till hela meningar som innehåller nyckelordet.

Framöver kommer jag lägga till några undersidor med andra typer av nyckelord och titta lite på om det går att göra alternativa sätt att presentera innehållet.

webbutveckling

Loopia – inkompetenta eller bara lata?

I dagarna har Loopia gått ut med sitt periodvis återkommande erbjudande om ett års webbhotell för en krona. Eftersom jag håller på att starta ett nytt projekt och är sugen på att testa ett svenskt webbhotell (vanligtvis använder jag site5) så tänkte jag nappa på erbjudandet. Tills jag såg följande:

”Vi håller oss kontinuerligt uppdaterade på utvecklingen av PHP 5.x och när vi tycker att det är tillräckligt stabilt för att inte påverka våra kunders hemsidor negativt så kommer vi att börja testa samt om möjligt uppgradera till version 5.x.”

(Uppdatering: Texten är nu uppdaterad och som Emil Isberg från Loopia skriver i en kommentar så räknar Loopia nu med att migrera till php5 någon gång efter årsskiftet.)

Hm, förra versionen av php släpptes för sju år sedan. Den nya versionen, som Loopia tycker är lite väl äventyrlig, är över tre år gammal och har nu hunnit till version 5.2.4 (inte direkt beta med andra ord). Dokumentation för version 6 har redan börjat läggas in i manualen och support för php4 kommer att upphöra vid årsskiftet.

Böcker och artiklar som skrivs i dag utgår från php5. Allt fler mjukvaruprojekt för php väljer att släppa stödet för php4. Stora projekt som pear, Drupal, Zen Cart, osCommerce, Typo3, Midgard CMS och phpMyAdmin kommer alla att bryta kompabiliteten efter årsskiftet.

Att php5 skulle vara mindre stabilt än php4 är helt enkelt inte sant. Däremot så introducerar php5 många förbättringar i funktionalitet, säkerhet, och prestanda.

Varför Loopia väljer att stanna kvar i den krympande skaran webbhotell i B-kassen har jag svårt att förstå. Det har i vilket fall inget med stabilitet att göra.