Archive for the ‘PHP’ Category

Igår satte jag igång med CreeperFramework API på allvar. Att börja med en ping-funktion, för att möjliggöra server-server kommunikation för att kringgå blockering av domän/ip. Enkelt och lightweight, enligt KISS (Keep It Simple Stupid).

Börjat skissa på andra smör-och-bröd-funktioner, för att dynamiskt hämta information on-demand. Är öppen för idéer angående vilka funktioner som kan tänkas behövas, kommentera!

Några av grundtankarna är att kunna servera resultat i Atom, RSS, XML, JSON, OPML och CSV. Missat något?

API’t kommer vara versionerat för att inte bryta kompabilitet, siktar på att försöka hålla tre versioner bakåt när det blir dags. Alla skriv-funktioner kommer kräva username/password medan läs-funktioner blir öppna, som även cache’as och fördröjs med 15 sekunder upp till 5 minuter beroende på funktion.

Jag har fått synpunkter på tidszonen jag använder, GMT+0000, det är ett genomtänkt beslut och ingen slump. Framöver kommer MediaCreeper lanseras internationellt och GMT-standard tid känns mest “rätt”.

Eventuellt kommer jag sätta upp en blog på MediaCreeper för att samla allt relaterat material på ett och samma ställe med engelska som språk att kommunicera på.

Jag har just uppdaterat/modifierat ett WordPress plugin som jag använder tillsammans med Akismet för att spärra/blockera kommentars spam; Akismet htaccess writer — som jag “justerat” att blockera C-nät (IPn i formen AAA.BBB.CCC.DDD, där blockerings mönstret blir AAA.BBB.CCC/24 — 24-bitars adresser) i stället för specifika och enskilda IPn. Den påverkar filen .htaccess som läses av Apache (webserver) som i sin tur avgör om besökarens IP skall tillåtas eller blockeras.

Jag tror det är mycket mer effektivt, då många kommentars-spam kommer från samma C-nät och förmodligen är Zombie-maskiner. Samtidigt är det även risk för att spärra ut riktiga besökare som kommer från samma nät — dock känns det som en blog skriven på svenska som besöks mest av svenskar, att jag kan ta den risken, för det handlar mest om IP-adresser från asien och sydamerika som blockeras.

Samtidigt passade jag på att justera urvalsfrågan att returnera endast unika IP-adresser och samtidigt sortera dem i decimal-form.

Jag skickade den uppdaterade/tweakade källkoden tillbaka till upphovsmannen- eller kvinnan för att förhoppningsvis få med förändringarna i nästa version.

Update 2009-07-15: Det verkar fungera, strömmen av spam-kommentarer har avtagit markant, från 42 till 46 (i spam-kommentarskön), 4 på ett 3 dagar mot normalt 3-4 varje dag. Kanske lite tidigt att jubla eller fira på något sätt men det gör lite skillnad.

Efter att ha spenderat lite tid idag med att härja runt med WordPress upptäckte jag en bugg, provade med flera varianter och samtliga misslyckades. Loggade in på trac.wordpress.org och postade en bugg-rapport.

Jag har inte hunnit kika på någon lösning för problemet ännu, det är lite lagom komplext. Buggen, som visar sig när man försöker spara en länk i WordPress under “Manage Links”, med tecken som “å”, “ä” eller “ö” i en länk-URL. WordPress protesterar inte men strippar i tysthet av alla tecken med ringar eller prickar — en URL som till exempel http://www.hallå.se/ blir http://www.hall.se/

Troligtvis är det en regular expression som är lite för snävt konstruerad, man har helt enkelt inte tänkt på att man nu för tiden även tillåter bokstäver med ringar, prickar och diverse krokar och kringlor på i domännamn. De flesta webbläsare av rang (dock inte MSIE6 eller tidigare/sämre) klarar av dessa, då borde även WordPress klara av det.

Inte riktigt vad man önskar, det jag fick göra för att komma runt problemet var att lirka fram motsvarande IDN-domännamn. IDN-motsvarigheten till exemplet är xn--hall-toa.se. Konverteringar kan göras på IDN-Konverterare.

Jag var inte riktigt nöjd med hur WordPress fungerade efter jag hade uppdaterat/uppgraderat till WordPress 2.6, så jag kollade hur högt rankade bloggar länkar taggar. Därefter satte jag mig och slängde ihop lite kod för att åstadkomma länkning av taggar. Nedan delar jag med mig av koden, för den som är lite händig med PHP kan själv göra ändringar. Jag lämnar ingen som helst support på koden, you’re on your own lixom. Kommentera gärna om du använder koden, du får länk tillbaka genom CommentLuv! :)

I WordPress admin, gå till Design, vidare till Theme Editor och välj sedan Main Index Template (index.php) och klistra byt ut kodsnutten ..

<?php get_tags(); ?>

… mot …
<?php if(kakhack()) { ?>
<p style="border: 1px solid #ddd;background-color: #eee;padding: 3px;">
<span class="taglinks"><?php echo(makeTagLinks('bloggar.se: ','http://bloggar.se/om/')); ?></span><br />
<span class="taglinks"><?php echo(makeTagLinks('knuff.se: ','http://knuff.se/q/')); ?></span><br />
<span class="taglinks"><?php echo(makeTagLinks('bloggtips.se: ','http://bloggtips.se/kategori/')); ?></span>
<?php } ?>

… sedan sparar du och väljer Theme Functions (functions.php) och klistrar in koden nedan högst upp i koden.

function kakhack() {
  $posttags = get_the_tags();
  if ($posttags) {
    return true;
  } else {
    return false;
  }
}

function makeTagLinks($link_prefix_text,$link_uri_base) {
  $result = "";
  $posttags = get_the_tags();
  if ($posttags) {
    $result = $link_prefix_text;
    foreach($posttags as $tag) {
      $result .= '<a href="' . $link_uri_base;
      $result .= rawurlencode(strtolower($tag->name));
      $result .= '" ';
      $result .= 'title="' . htmlentities($tag->name) . '" ';
      $result .= 'rel="tag"';
      $result .= '>';
      $result .= htmlentities($tag->name);
      $result .= '</a>, ';
    }
    $result = preg_replace('/\x2c\x20$/','',$result);
  }
  return $result;
}

Koden är ganska enkel och behöver inte förklaras i detalj, jag har med flit låtit bli att kommentera koden. Förstår du inte vad den gör, låt bli att använda den.

Jag har producerat massor av saker idag, trycksaker, men inget jag egentligen vill producera, som vacker kod och finurliga lösningar. Inte särskilt produktivt på utvecklingsfronten, vilket ställer till vissa problem, jag fick passa vidare ett projekt till mina kollegor.

När jag satt på tåget hem med Damen och flickorna som spenderat större delen av dagen på Naturhistoriska, tänkte jag på hur man relativt enkelt skulle kunna slänga ihop en Firefox add-on, som på begäran klumpar ihop några väl valda och möjliga trigger-ord och spottar ut resultatet där man råkar ha markören, som tex. i den inmatningsruta man skriver blog-inläggen. Lite bete för FRA att hugga på.

Gjorde lite research på Firefox add-ons, funderade ut några fiffiga lösningar och skulle sätta igång, då är klockan strax efter midnatt och det känns inte riktigt som jag orkar göra något, utom möjligtvis att gå och lägga mig.