Kategoriarkiv: Programmering

Bild CC Cydcor https://flic.kr/p/fcUr79

Svenska IT-Konferenser 2015

Jag tänkte försöka mig på att sammanfatta några intressanta konferenser som går av stapeln under 2015 som kan vara av intresse för dig som jobbar med webb/it/säkerhet.

Dessa konferenser går alla i Sverige:

  • Webbdagarna – Har tyvärr redan varit och jag lyckas alltid missa denna men nästa gång lovar jag att komma.
  • Internetdagarna – 23-24 November. Detta är en bred konferens som har ett antal olika spår för dig som gillar säkerhet, domäner, wordpress, startups
  • PyCon – 12-13 Maj. För dig som gillar att programmera Python. Går för andra året
  • EuroBSDcon – 3-4 Oktober. Brukar vara en bra konferens för dig som gillar opertivsystemet BSD.
  • SEC-T – 17-18 September. Helt klart bästa säkerhetskonferensen i Sverige. Även pubkväll den 23:de April
  • Startup Day – April 25. Har ej varit på den men har hört mycket bra om denna startup-konferens
  • NordicJS – 10-11 Sep. En konferens för dig som programmerar JavaScript. Lokalen förra året var Artipelag ute i Stockholms skärgård som helt klart verkar intressant.

Vad har du för förslag på konferenser? Lämna gärna en kommentar med tips.

Att skriva bra kod

På senare tid så lägger jag mer tid och kraft till att skriva bra (snygg) och snabb kod. Att optimera sin PHP-kod kan spara många millisekunder i exekveringen. Vad pratar jag om då? Jo det finns några bra tips:

Kolla igenom all din kod med xdebug för att hitta långsamma exekveringar/funktioner. Och använd med fördel memcached, Sphinx och eAccelerator. Kasta bort Apache och titta istället på nginx och lighttpd. Jag har tidigare skrivit om hur du optimerar MySQL.

Det lönar sig att göra rätt från början!

Skapa din egen bloggsökmotor

Ett av mina första webbprojekt var den svenska bloggsökmotorn Bloggz.se som jag skapade i början av 2007. Med hjälp av den erfarenheten och kunskapen så tänkte nu gå igenom hur du som utvecklare lätt och enkelt kan skapa din egen bloggsökmotor med hjälp av php- eller python-kunskap.

Steg 1 – Hitta bloggar

Först och främst så måste vi ju hitta URL:er till bloggar och sedan måste vi lista ut om de bloggar om svenska eller ej. Så mitt tips är att börja genom att ladda hem och parsa följande fil från Google (var 10’de minut exempelvis):

http://blogsearch.google.com/changes.xml

Denna fil är på ca 12 MB och innehåller ca 71 000 bloggar, varje rad ser ut på ungefär följande sätt:

<weblog name=”Filmklipp hos Filmpasset.se” url=”http://filmpasset.se/” rssUrl=”” when=”2″ sourceIp=”72.233.56.145″ />

Steg 2 – Parsa bloggar

Vi har nu gigantiska listor med bloggar och det vi måste göra nu är att besöka dessa bloggar och hämta ut relevant information och här finns det två viktiga komponenter:

  • Hitta RSS-feeden på bloggen
  • Parsa RSS-feeden på bloggen

Det kan låta trivialt men det finns miljoner olika kombinationer på ovan två komponenter. Jag kan rekommendera Feedfinder samt Feedparser (från svn).

Det du gör nu är att du skapar en databas med URL:er till alla bloggar och fyller sedan på med de RSS-url’er som du hittar med hjälp av Feedfinder, detta arbete kan trådas med fördel. Se på Pythons queue

Steg 3 – Klassificera språk

Det vanligaste sättet att klassificera språk är ngram (bi/tri-gram) och jag använder mig av följande implementation: ngram.py som är skriven av Thomas Mangin. Detta måste så klart göras efter du har hämtat hem de inlägg som hittas på bloggen. Glöm inte att spara undan HTTP-headers såsom last-modified och etag som gör att du inte behöver besöka bloggen i onödan om den ej är uppdaterad.

Steg 4 – Gör allt sökbart

Nu när du har inlägg och bloggar i en databas så behöver du bara göra allt detta sökbart, snabbt. Och då kan jag rekommendera Sphinxsearch där du gör en main och ett delta-index som uppdateras kanske en gång i veckan vs. varje timme beroende på hur mycket information som ska indexeras.

Och nu behöver du bara göra ett trevligt webb-gui till databasen och Sphinx-indexet.

Överkurs

Det du kan tänka på också när du parsar bloggar är att spara undan länkar som du hittar i inläggen för att sedan använda denna information för att vikta sökresultet samt hitta fler bloggar att lägga till. Jag sparar exempelvis undan denna information och använder den på bl.a BloggBilder.se och BloggVärde.se (och snart kanske BloggAnalys.se)

Kuriosa

Utifrån sourceIp i changes.xml så pingar dessa Google flest gånger:

13674 66.197.201.21
12006 59.40.198.153
4875 72.233.56.144
4807 72.233.56.156
4719 72.233.56.145
2070 66.207.161.106
2056 221.186.141.201
1785 202.108.35.60
906 124.42.34.18
577 74.125.44.136
544 69.59.185.172
533 62.129.193.27
532 69.10.46.130
491 91.121.157.178
360 221.186.141.206
354 219.239.93.69
325 208.110.66.194
281 89.161.143.129
267 82.96.94.35
259 219.94.203.126
  13674 66.197.201.21 colo4.socialknowledge.net.

  12006 59.40.198.153 153.198.40.59.broad.sz.gd.dynamic.163data.com.cn.

   4875 72.233.56.144 wordpress.org

   4807 72.233.56.156 wordpress.org

   4719 72.233.56.145 wordpress.org

   2070 66.207.161.106 HostKitty Internet Services

   2056 221.186.141.201 idcgw.cyberz.co.jp.

   1785 202.108.35.60 ChinaUnicom

Pachube – Utbyte av meddelanden i realtid

Jag har ju tjatat ett tag om hur framtiden kommer att se ut när det gäller mikroformat och hur mikrobloggar driver utvecklingen av snabba utbyten av meddelanden framåt.

Nyss så hittade sajten som gör just detta: pachube.com (via Peder Fjällström), så här beskrivs tjänsten:

”Welcome to Pachube, a service that enables you to connect, tag and share real time sensor data from objects, devices, buildings and environments around the world. The key aim is to facilitate interaction between remote environments, both physical and virtual.”

Skapa en webbtjänst med WordPress

Jag har länge velat att testa att bygga en hel sajt (icke blogg) med hjälp av WordPress. Så jag funderade lite på vad för sajt jag skulle bygga och kom på att jag hade ca 70 000 .pad-filer som låg och skräpade (.PAD-filer är xml-filer som beskriver program).

Så efter några få timmars hackande så fick jag ihop en sajt där man kan ladda hem nästan enbart användargenererat material: suhd.com

Lätt som en plätt med hjälp av dessa två funktioner:

  • wp_insert_post För att göra inlägget efter att information har extraherats från .PAD-filen
  • add_post_meta För att lägga till extra information om just denna fil/inlägg såsom nedladdningsurl

Samt ett eget theme som sedan använder get_post_meta för att hämta metainformationen från inlägget. Med fördel så kan ju även de tusentals plugins som finns till WordPress användas, jag använder exempelvis sociable.

Läs mer om PAD här: http://www.asp-shareware.org/pad/

Visa tumnaglar från Flickr

Lade till en funktion som laddar hem den senaste tumnagelbilden direkt från flickr utifrån de RSS-flöden som importeras på Bloggy. 

jQuery har en funktion som heter getJSON som är mycket smidig:

Load JSON data using an HTTP GET request.
As of jQuery 1.2, you can load JSON data located on another domain if you specify a JSONPcallback, which can be done like so: ”myurl?callback=?”. jQuery automatically replaces the ? with the correct method name to call, calling your specified callback. This callback parameter may vary depending on API, for instance Yahoo Pipes requires ”_callback=?”
Eftersom jag redan hade lite information om flickr-användaren och bilden sedan tidigare så behöver jag enbart hämta URL’en till tumnageln:

function showflickr(flickrid, divid, imgid) {
  $.getJSON(”http://api.flickr.com/services/feeds/photos_public.gne?id=” + flickrid + ”&lang=en-us&format=json&jsoncallback=?”, function(data){
    $.each(data.items, function(i,item){
        if(item.media.m.indexOf(imgid) > 0)
            $(”<img/>”).attr(”src”, item.media.m.replace(/_m/,’_s’)).appendTo(”#flickr” + divid).wrap(”<a href='” + item.link + ”‘></a>”);
    });
  });
}

Update: Glömde att skriva att allt detta görs ju direkt i webbläsaren.

Amazon CloudFront – Så kommer du igång

Det är nu fyra dagar sedan som Bloggy tog ett första steg till att bli en ”del av molnet”-tjänst. Det första steget innebär att alla statiska objekt ligger på Amazon CloudFront-tjänsten.

Eftersom jag hade gjort en implementation till Bloggy tidigare som använde sig av SimpleCDN så var det trivialt att byta ut två rader kod så att Bloggy istället använde sig av Amazon CloudFront.

Den PHP-implementation jag använder är denna: undesigned.org.za/2007/10/22/amazon-s3-php-class

Och den kod som jag använder mig för att ladda upp ett objekt i PHP är följande:

require_once "S3.class.php";
$s3 = new S3('accessKey', 'secretKey');
$s3->putObjectFile('file.doc', 'cf.bloggy.se', 'docs/file.doc', S3::ACL_PUBLIC_READ);

Detta förutsätter att jag redan innan skapat en CloudFront bucket med hjälp av s3cmd:

$ s3cmd --configure

Tips: Använder du Amazon S3 istället så bör du lägga till raden ”bucket_location = EU” i din ~/.s3cfg om du vill att dina buckets ska skpas i europa.

$ ./s3cmd mb s3://cloudfront.bloggy.se 

 

 

Bucket 's3://cloudfront.bloggy.se/' created
$ ./s3cmd cfcreate s3://cloudfront.bloggy.se 

Distribution created: Origin:         s3://cloudfront.bloggy.se/ 

DistId:         cf://E3VE9DJIVFQYO3 

DomainName:     d1bq8ovpea0j10.cloudfront.net 

CNAMEs: 

Comment:        http://cloudfront.bloggy.se.s3.amazonaws.com/ 

Status:         InProgress 

Enabled:        True Etag:           

E2N0AVZ9F1WJZL 

 

 

$   

Som ovan visar så är Status: InProgress och efter några minuter så visas Status: Deployed.

Om du vill använda ditt eget domännamn exempelvis cloudfront.bloggy.se (DNS != bucketnamn) så måste detta sättas som CNAME parameter på den bucketen eller så använder du

Andra bra kommandon: s3cmd ls samt s3cmd cfinfo för att visa dina buckets samt status.

För att sedan synkronisera statiska objekt såsom CSS-filer så behöver du enbart göra enligt följande:

$ ./s3cmd sync /var/www/bloggy.se/docs/css/ s3://cloudfront.bloggy.se

Efter fyra dagar så ser min förbrukning/dollars ut så här (klicka på bilden):

amazonJag har tidigare jämfört Amazon S3 med CloufFront.

SvD, Totiki, Daytona, TPB, Modekartan

Diverse mer eller mindre nytt på nätet:

SvD har en mycket trevlig utvecklingsblogg där de lägger upp videofilmer i en ny serie: Vi bygger internet, med bl.a Martin Källström, Annika Lidne och mig

**

Totiki släpper en helt ny webbversion. Koppla ihop alla dina sajter med ett verktyg

**

Moyume släpper en ny Adobe AIR klient. Snyggt!

**

Jag var på Daytona Sessions och såg bl.a Morris Packer göra ett grymt framförande (jag gillar prezi)

**

Hängde även på Aftonbladet Stora Bloggpriset (nalen) och träffade på bl.a Camilla Lindberg, Brit Stakston och Daniel Feldt

**

Grupper finns nu på Bloggy. Perfekt för att fungera som backchannel för evenemang exempelvis eller bara att diskutera med likasinnade

**

TPB-rättegången gjorde så att Bloggy slog rekord i antalet besök på en dag: 22 000. Bloggy snart större än Lunarstorm? Se SIS-Index

**

Ted fortsätter att leverera sajter i sitt kart-nätverk: Modekartan, Vintagekartan och Barnprylskartan. Bilder från releasefesten finns här

**

Loopia-killarna Fredrik och LGF var över på kaffe och sedan så såg vi när Peter och Christian från Disruptive.nu talade Teknikbyn i Västerås. Efter föredraget så kom Christian och Peter tillsammans med  Johan Söderberg förbi på ett kort besök

Hewal, Bloggy, Medievärlden, 24hbc

Diverse nytt och intressant enligt mig:

Nikke Lindqvist skriver ett intressant inlägg om företaget Hewal samt hur man försvarar sina sökresultat i sociala medier

**

Jag är med i Medievärldens specialupplaga som handlar om året som gått där fokus är på mikrobloggar. Med i artikeln är även Emma Marie Andersson, Jonas Vig , Sara Öhrvall, Sofia Mirjamsdotter, Katarina Graffman, Johan Larsson, Martin Källström och PM Nilsson.

**

Google sponsrar 24hbc som närmar sig snabbt. Och jag har inte ens bestämt mig för vad jag ska åstadkomma

**

Mikael Zackrisson på VA skriver om Bloggy i sitt inlägg ”10 höjdpunkter på webben 2008”

**

Bloggy blir årets mikroblogg-tjänst i Bisonkrönikan skriven av Fredrik Wass