Archive for december, 2008

Google App Engine är fortfarande ett skämt

Posted in Frisim on december 30th, 2008 by Clas – 3 Comments

Google fortsätter att blogga om sin Google App Engine (GAE), men det verkar inte hända så mycket med själva utvecklingen. Det saknas fortfarande en del väsentliga delar för att det ska gå att bygga något smidigt med GAE, är min erfarenhet. Nu verkar de ha planer på att börja ta betalt, och kanske kan det snabba på utvecklingen.

Det jag irriterar mig mest på är att systemet hela tiden varnar för att min app drar för mycket ”avergage CPU”, trots att min ”CPU time” alltid är nära 0%. Problemet är säkert relaterat till att jag använder URL Fetch API:et. Men eftersom en URL Fetch har en ”timeout” på 5 sekunder, satt av Google själva, så förstår jag inte varför den klagar. Ett andra problem är GAEs Datastore. Till saken hör att Datastore är rätt annorlunda mot en SQL databas, så det kräver en hel funderande innan den används, men att man t.ex. inte kan radera alla poster i en tabell på något enkelt sätt är lite dåligt.

Så här inför ett nytt år så tänkte jag rensa upp lite bland den RSS-data som finns lagrad i min feedcache-app. Att göra ”delete” på ett större antal poster leder ofta till ”timeout” hos GAE, så man måste radera i mindre ”batcher”, och allt måste ske endera från console, eller via webb-script. Jag satte ihop ett script som raderar 50 poster i min tabell rssItems varje gång det laddas, och automatladdade scriptet varannan sekund. Inte kul, men det fungerade. Såhär ser scriptet ut:


from google.appengine.ext import db
from google.appengine.ext import webapp
from google.appengine.ext.webapp.util import run_wsgi_app
import wsgiref.handlers
from ffcache import rssItems
class CTable(webapp.RequestHandler):
    def get(self, param):
        q = db.GqlQuery("SELECT * FROM rssItems")
        self.response.headers['Content-Type'] = 'text/html'
        self.response.out.write("<html><head><meta HTTP-EQUIV=\"REFRESH\"
content=\"2; url=http://feedcache.frisim.se/cTable/\"></meta></head><body>")
        try:
            results = q.fetch(50)
            for res in results:
              res.delete()
            self.response.out.write("<p>50 poster raderade</p>")
            self.response.out.write("</body></html>")
        except Exception, ints:
            self.response.out.write(str(ints))
def main():
  application = webapp.WSGIApplication([
    ('/cTable/', CTable),
  ])
  wsgiref.handlers.CGIHandler().run(application)

SPAM och dålig programdesign

Posted in Frisim on december 23rd, 2008 by Clas – Kommentering avstängd

SPAM kommer i många former. Vissa script och sidor attraherar SPAM mer än andra. Jag använder på somliga Frisim-sidor ett script för att räkna hur många klick nyhetsrubrikerna får. Scriptet är en så kallad ”redirect”, en sida som tar en länk som ett argument och skickar besäkare vidare till den länken. Klickräkningen görs med hjälp av länkar av typen http://www.frisim.com/skickavidare.php?q=http.//www.dn.se. När jag programmerade detta script så valde jag att ha länken som besökaren leds till i klartext. Det var ett misstag. Denna typ av script attraherat den allra sämsta sortens spammare, har jag fått erfara. Scriptet möjliggör att ”dåliga” sajter kan dölja sig bakom min ”mera trovärdiga” domän. Såhär kan det, tyvärr, se ut i Googles sökresultatlistning:


spam på digg.com

Hmm, superkass. Tyvärr har det också gjort att min trafik från Google har minskat något. Oklart är naturligtvis om det bara beror på detta, men om det gör det så har jag förståelse för om Google straffar min domän. Nu har jag i alla fall kodat om funktionen så att länken inte visas i klartext (kodas med base64 och ”trixas till” något). I en övergångsperiod så måste tyvärr båda versionerna fungera – men det är väl sånt man får leva med om man programmerar dåligt från början.

I övrigt börjar det närma sig julafton. Lite såhär:


cheeseburger

Automatiserad nyhetsrangordning funkar inte?

Posted in Osorterad on december 3rd, 2008 by Clas – Kommentering avstängd

Techmeme har skrivit ett blogginlägg på sin utvecklingsblogg om hur de tänker sig att förbättra urvalet av de nyheter som presenteras på Techmeme genom att nyttja en mänsklig editor.

Google verkar ha liknande problem.

SPAM är svårt

Posted in Frisim on december 2nd, 2008 by Clas – Kommentering avstängd

Det första riktigt superlyckade blog-SPAM-försöket har observerats på Frisim.com. Det hela visade sig genom att följande ”nyhet” finns med bland de mest länkade nyheterna på Frisims framsida:


spam

Att den ”nyheten” hamnade där pekar på vissa brister i hur nyhetslistan under ”Aktuellt” på Frisim.com skapas. Under ”Aktiellt”-fliken ska länkar till nyhetsartiklar, på nyhetssajter, med många länkar från bloggar visas. Dock lyckas sajten (den med titel SVT1 – tv-tablå, alltså) göra precis allt rätt: 1) den länkar från ”bloggen” till en sajt med samma ägare, och även om sajten inte är en nyhetssajt utan en tv-sajt så lyckas de ”lura” min spindel att tro att det är en nyhetsartikel. Antagligen genom att ha ungefär samma struktur som en nyhetsartikelsida; 2) sidan som de länkar till har en känd nyhetssajt som del av sin URL. I detta fallet svt.se, vilket gör att min rangorningsmetod inte fattar att det inte alls är en länk till SVT, utan en länk till något helt annat.

Bristen i mitt rangordningssystem är först och främst att jag räknar länkar från blogginlägg, oberoende av om de kommer från en och samma blogg. Det beroende på att det kan vara lite lurigt, ibland, att se om det är olika bloggar inom samma nätverk, eller faktisk exakt samma blogg.

Dock finns det flera ”bloggar” med samma avsändare/struktur, så det blir uppenblirligen svårt att eliminera risken för fel helt. Jag kan trösta mig med att ”bloggen” det gäller (och några av de andra i samma nätverk) även finns i Twinglys ”SPAM-fria” sök. (Jag har naturligtvis snällt rapporterat det till Twingly :-))

Disclaimer: SPAM-stämpeln sätts av mottagaren. Det som är ”information” för vissa kan upplevas som SPAM för andra. Det är heller inte helt tydligt vad en blogg är. Kanske kan en blogg-liknande sajt som genereras genom att ”automatiskt” skrapa text från TV-tablåsidor faktiskt kallas för blogg av någon. Jag bedömmer en sådan som SPAM.

Jag avslutar med lite Recyklad-Bingolotto hos Spotify.