PHP Pro Tip IV: Spara undan resultat av var_dump i en sträng

var_dump() är PHP-utvecklarens bästa vän för att kika in i en variabel och se exakt vad den innehåller (objekt, sträng eller vad det nu är) – om man nu inte använder exempelvis Xdebug.

Men låt oss säga att man vill spara undan datan i en sträng, och inte bara dumpa ut den så fort som funktionen var_dump() körs – kanske för att undvika “Cannot modify header information - headers already sent”” – hur gör man då? Jo, som följande:

$variable = array(
    'value1' => 1,
    'value2' => 2,
    'value3' => 3
);

// Startat "output buffer"
ob_start(); 
// Dumpar ut värdet av $variable
var_dump($variable); 
// $result = datan i bufferten, och rensar upp
$result = ob_get_clean(); 

// Gör en massa andra saker

// Eka ut datan
echo("<pre>" . $result . "</pre>");

// Resultat
array(3) {
  ["value1"]=>
  int(1)
  ["value2"]=>
  int(2)
  ["value3"]=>
  int(3)
}

Detta ska förmodligen dock användas sparsamt då det både blir förvirrande med allt för många förekomster i koden (när man inte har koll på om output bufferten är igång eller inte etc.) samt att påverkar prestandan något. Men för att underlätta jakten på buggar – varför inte?

Curiosity landar på Mars på måndag 07:31

Jag har tidigare skrivit om Opportunity, men nu på måndag klockan 07:31 svensk tid så landar äntligen kusinen Mars Science Laboratory (eller MSL för kort, eller mer populärt för Curiosity).

Landningen kommer man som alltid med NASAs projekt att kunna följa via NASA Tv, eller att “följa” landningen är kanske inte rätt ord, som den här fantastiska lilla filmen från Jet Propulsion Laboratory själva förklarar.

Googles PageRank uppdaterad

Märkte idag att Google har skickat ut ny data om webbplatsernas PageRank.

PageRank:en är kanske inte den viktiga indikatorn som det en gång var – men det är alltid en liten ego-boost att se ens PR ökas med ett snäpp (istället för att sjunka med två, som den här sidan gjorde vid uppdateringen i maj av någon outgrundlig anledning).

Tvinga webbläsaren att hämta om CSS-filer

Att göra ändringar i CSS:en kan vara irriterande då webbläsaren inte alltid känner för att hämta om CSS-filen. Detta kan vara väldigt problematiskt om man uppdaterar CSS:en på en sida som redan ligger live – hur kan man säkerhetsställa att alla användare ser uppdateringen omgående?

Ett väldigt bra knep är att lägga till en parameter på css-filen, likt:

<link rel="stylesheet" href="style.css?ver=1" />

När du sedan har uppdaterat CSS:en så uppdaterar du versionsnumret till exempelvis 2, sedan 3 o.s.v.

Har du ett projekt där du programmerar med PHP så kan man även på ett väldigt smart sätt utnjyttja funktionen filemtime(); (php.net) som talar om senast en specifik fil uppdaterades. Så här skulle ens PHP-kod kunna se ut:

$cssUpdateTime = filemtime('style.css');
$stylesheet = 'style.css?ver=' . $cssUpdateTime;

<link rel="stylesheet" href="<?= $stylesheet ?>" />

<!-- 
Ger något i stil med:
<link rel="stylesheet" href="style.css?ver=1345061074" />
-->

Så varje gång du uppdaterar CSS-filen så uppdateras “versionsnumret”, och besökarnas webbläsare tolkar det som en ny URL till CSS-filen som den måste hämta om.

Jakten på den perfekta bloggplattformen

Att blogga må vara lätt, ännu lättare är det att hitta en plats att blogga på. Wordpress finns på Wordpress.com, Google har Blogger och sedan finns det en hel drös med mindre aktörer och t.o.m. tidningar som tillhandahåller egna bloggplattformar.

Men jag är lite märklig, jag nöjer mig inte med den enkla vägen. Jag gillar när saker och ting fungerar på mitt sätt, och erbjuder en möjligheten till att gå utanför ramarna.

Wordpress är förmodligen det bloggverktyget som flest människor känner till, och som flest webbplatser använder. Möjligheterna med Wordpress är oändliga, och skulle du springa på ett problem så är du bara en Google-sökning ifrån lösningen. Likaså med insticksmoduler (eller “plugins”). Men Wordpress är stort och “bloated” – en vanlig användare använder förmodligen inte mer en 10% av vad Wordpress är kapabelt till.

2006 skapade jag min första Wordpress-blogg, en egenhost:ad sida där jag hade min resedagbok i (under tiden jag studerade i Japan), därefter har det blivit otaliga fler – bland annat så använde jag det tidigare här på marcusolsson.me (och ännu tidigare på marcus-olsson.com) som jag började blogga på 2009.

Ganska omgående kände jag dock att Wordpress inte alls passade min typ av bloggande. Att göra ändringar var irriterande, plugins som man ville använda fungerade inte riktigt så som jag ville – och ofta var kodkvalitén så dålig i dem att det var lättare att skriva ett eget plugin än att ändra i dem. Därefter följde flera år med en närmast tvångsaktig idé att hitta ett bloggverktyg som jag verkligen gillar.

Först ut var Chyrp. Exakt hur jag hittade dem vet jag inte, men gillade deras webbsida (samma då som nu) så jag tänkte att man kanske skulle ge dem en chans…? Tyvärr så var dokumentationen nästintill obefintlig, och communityt likaså – men jag fick igång en fungerande blogg som jag var hyfsat nöjd med, men skapelsen fick aldrig hamna på den världsvidda webben – jag hade fått upp ögonen för något nytt och spännande.

Chyrp.net (Chyrp.net)

Posterous tyckte jag till en början verkade vara det perfekta bloggverktyget – och man behöver inte bry sig om att host:a den själv. Ungefär samtidigt kom även Tumblr (som har rönt större framgångar än Posterous) som jag testade ett tag. Men de här molntjänsterna var nästintill omöjliga att anpassa till hur man själv ville ha dem, och i alla fall då hade de ett riktigt dåligt gränssnitt för att ändra i CSS:en om man ville göra en sådan enkel sak.

Squarespace.com var en annan molntjänst som i alla fall bjöd på ett stort antal alternativ på hur man kunde anpassa sin webbplats – men priset var för högt för min dåvarande budget, och 2008 så var det en ganska buggig, långsam och instabil tjänst (deras alldeles nyutkomna version 6 är riktigt bra dock).

Squarespace (Squarespace)

Någon gång 2009 kom jag på den briljanta idén att skriva min egen plattform där jag själv kunde styra och ställa hur jag ville att saker och ting skulle fungera. Detta slutade i fiasko två gånger om. Den första versionen var någon typ av “mishmash” av ett eget MVC-ramverk inspirerat av det jag lärde mig när jag satt och hackade i Chyrp – resultatet var inte bra någonstanns. Något år senare och så använde jag ramverket Lithium och skapade en helt okej och väl fungerande plattform – men jag kom på nya idéer som jag ville ha med hela tiden, och ville gärna göra det möjligt för andra att använda och anpassa plattformen. Jag råkade ut för Wordpress-syndromet där 10% av koden var nödvändig, och resten var lull-lull (en tidig version ligger uppe på Github). Alldeles för tungt och onödigt att dra in ett helt PHP-ramverk för att publicera en (relativt) simpel blogg.

2012 var året då jag slutgiltligen skulle ta tag i problemet (jag såg det faktiskt som ett sådant), det blev ett frenetiskt experimenterade med olika språk, plattformar och ramverk. Jag hade blivit besatt av tanken att generera statiska html-sidor, snabbt skulle det gå. Jekyll, Octopress och Phrozn var ett par jag testade – men jag tyckte att de antingen hade för få features, eller för många som gjorde även dem bloated.

Men till sist – äntligen – så hittade jag SecondCrack av Marco Arment. Stundtals extremt buggigt, men otroligt simpelt och lättviktigt (cirka ett dussin filer för hela plattformen, exklusiva externa bibliotek så som Markdown) och dessutom har det en rad smarta funktioner så som publicering via Dropbox.

SecondCrack är långt ifrån perfekt, och jag har själv fått göra en rad ändringar för att få det så som jag vill, men nu sitter jag i alla fall med en plattform som jag är nöjd med – men hur länge det varar vet man aldrig.

Vad vill jag få sagt med den här texten egentligen då? Ingenting särskilt egentligen (tack för att du läste i alla fall) – bara att det är väldigt svårt att hitta en bloggplatform som passar mig.