Etikettarkiv: github

GitHubs sökfunktion, en guldgruva

Innan jag fortsätter med nästa inlägg i min serie om DevOps med Python/Fabric så tänkte jag tipsa om Githubs relativt nya avancerade sökfunktion. Denna sökfunktion har räddat mig många gånger då jag funderat hur en viss funktion kan användas eller exempel på kod hur saker kan genomföras.

Om du vill lära dig hur du kan sätta datornamn (hostname) via Fabric så kan följande sökning genomföras:

python fabric

Kolla även in den avancerade sökfunktionen:

Från HTML till text

Ett av de vanliga problem man stöter på om man skriver en egen webbcrawler/spider eller vill genomföra scraping (skrapning?) är att konvertera HTML-sidor till ren text. Detta kan tyckas som en tämligen enkel uppgift men trasig html och tolkning av html är några saker kan ställa till det en hel del.

Att exempelvis ladda in Aftonbladet.se i Python Beautifulsoup kan ta flera sekunder. Därför så sökte jag efter en lösning som inte bara är snabb men även passar sig för att baka in i en webbcrawler.

Det var då jag hittade Boilerpipe. Ett bibliotek att detektera och plocka bort runtomkring text på en webbsida och enbart returnera det som förhoppningsvis är huvudtexten på sidan.

Boilerpipe är skriven i Java men fungerar utmärkt i Python med jpype. Här finnes Python porten på github: github.com/misja/python-boilerpipe

För att sedan använda Boilerpipe i Python skriver du enbart:

from boilerpipe.extract import Extractor
extractor = Extractor(extractor='ArticleExtractor', url=your_url)

Extractor kan vara någon av följande:

  • DefaultExtractor
  • ArticleExtractor
  • ArticleSentencesExtractor
  • KeepEverythingExtractor
  • KeepEverythingWithMinKWordsExtractor
  • LargestContentExtractor
  • NumWordsRulesExtractor
  • CanolaExtractor

Jag fick bäst resultat med KeepEverythingExtractor i de få tester jag genomförde.

Så programmerar du för molnet

Bild CC http://www.flickr.com/photos/torley/2311784203/in/photostream/Kanske en klyschig rubrik men det finns många saker man bör tänka på när din avsikt är att placera din kodbas i molnet. Och när jag skriver molnet så menar jag exempelvis Amazon EC2 där du hyr en virtuell server. Dessa åsikter är helt subjektiva och kan variera beroende programmeringsspråk eller molntyp.

Grundfilosofin bör dock alltid vara att skriva portabel kod utan statisk information såsom sökvägar eller annat som kan komma att ändra sig om du ökar eller minskar din kapacitet eller flyttar koden. Det är dock inte alltid helt lätt att skriva flexibel och portabel kod då du alltid någonstans måste inneha ett beroende mot den nuvarande plattformen.

  1. Undvik statiska sökvägar eller URL:er
  2. Dokumentera beroenden såsom Redis, MySQL och eventuella PHP-moduler som används
  3. Undvik versionsspecifika funktioner
  4. Inte direkt specifikt för molntjänster men glöm för all del inte att ta backup (och använd GitHub).
Och glöm framför allt inte säkerheten, som ska vara minst lika viktig i molnet som på din egen server eller VPS. Tyvärr blev detta inlägg inte riktigt så långt och innehållsrikt som jag hade tänkt mig, detta pg.a. att programmering för molnet inte skiljer sig allt för mycket mot ”vanlig” programmering.

Så skickar du E-post med Amazon SES

Amazon SES (Simple Email Service) är en relativt ny tjänst från Amazon som ingår i deras sfär med molntjänster även kallat Amazon Web Services (AWS). Tjänsten är till för dig som inte orkar hålla på att konfigurera Sendmail/qmail och hålla koll på köer osv.

Det tar några timmar att komma igång och köra och i mitt fall så valde jag Amazon SES för att skicka ut E-post då någon gör lösenordsåterställning på BloggBackup och Blogbackupr. Kostnaden är $0.10 per 1000 E-brev vilket jag tycker är okej och det finns ingen bindningstid, uppsägningstid osv.

Så här går du till väga för att börja skicka E-post:

1. Skapa ett Amazon AWS-konto samt Amazon SES-behörighet (jag var tvungen att verifiera mig via telefonen då en automatisk röst läser upp en PIN-kod).

2. Ladda hem Amazon SES scripts där ses-verify-email-address.pl ingår. Du måste ange din AWSAccessKeyId samt AWSSecretKey i en fil som perl-scriptet använder sig av. Dessa uppgifter hittar du Account -> Security Credentials. Verifiera sedan din E-post så du kan börja att skicka från den (Amazon mailar en länk som du måste klicka på).

3. Konfiguera SPF och lägg till include:amazonses.com – Eftersom jag använder Google Apps sedan tidigare så har jag även include:_spf.google.com med i min SPF som ser ut så här:

”v=spf1 mx a include:getanewsletter.com include:_spf.google.com  include:amazonses.com ~all”

4. Ladda hem AWS PHP SDK med hjälp av pear:

# pear channel-discover pear.amazonwebservices.com

# pear install aws/sdk

5. Ladda hem Amazon SES PHP Mailer från GitHub: https://github.com/geoloqi/Amazon-SES-Mailer-PHP

6. Testa att skicka enligt ”Usage” som ser ut enligt följande:

<?php   require_once('AmazonSESMailer.php'); // Create a mailer class with your Amazon ID/Secret in the constructor  $mailer = new AmazonSESMailer('your id', 'your secret'); // Then use this object like you would use PHPMailer normally!  $mailer--->AddAddress([email protected]');
$mailer->SetFrom([email protected]');
$mailer->Subject = 'Sent from Amazon SES';
$mailer->MsgHtml('This is a test');
$mailer->Send();
?>

7. Begär fullständig access så du kan skicka E-post till vem som helst (utanför sandbox). En verifiering som tar max 24h.

Observera att Amazon SES har en standardgräns på 1000 st E-post om dagen. Du kan dock begära högre quota. Jag tror även att dessa 1000 dagliga E-postbrev om dagen är gratis om du skickar från en Amazon EC2 instans.

Team Slumptal

Jag, Emil Stenström samt Joakim Ekberg stod för Team Slumptal under Codemocracy där ambitionen var att bygga en tjänst där du som individ kan se hur politiska beslut påverkar din omgivning. Detta genom att försöka geografiskt (geotagga) märka upp politiska beslut och placera ut dem på en karta (eller visa genom en augmented reality vy).

Tyvärr så blev jag tvungen att avvika tidigare men Emil och Jocke fortsatte att programmera på idéen. Språkvalet var Python och GitHub användes för versionshantering. Än finns ingen publik version men kommer kanske snart.

Grymmaste projektet Codemocracy var Kollektivt.se av Popdevelop som visar bussar i realtid på en karta.

Presentation av projektet Lokalpolitik:

IDG har även skrivit om eventet samt Dagens Industri (tryck).

GitHub.com för Git

Nyss så var jag lite för snabb i min favoriteditor VIM och råkade radera stora delar av min kod och avsluta. Det var som tur var bara några timmars arbete men som alla vet så är det otroligt trist att skriva om kod.

Ur detta lilla misstag så försöker jag lära mig något: Så därför skapade jag ett konto på GitHub.com och checkade in några av mina viktigaste kodträd på under 30 minuter.