Skip to content

Commit

Permalink
post: Improved formatting of old blog posts
Browse files Browse the repository at this point in the history
  • Loading branch information
peterhellberg committed Feb 18, 2025
1 parent 8153a98 commit 6408181
Show file tree
Hide file tree
Showing 116 changed files with 1,070 additions and 3,549 deletions.
6 changes: 6 additions & 0 deletions _posts/2009-03-03-valkommen-till-bloggen.md
Original file line number Diff line number Diff line change
@@ -1,11 +1,14 @@
---
title: "Välkommen till bloggen"
date: 2009-03-03
tags:
- blogg
last_updated_by: peter
---
<a title="Athega by Peter Hellberg, on Flickr" href="http://www.flickr.com/photos/peterhellberg/1452882964/"><img class="alignnone" src="http://farm2.static.flickr.com/1013/1452882964_fcbc2b8921.jpg" alt="Athega" width="500" height="375" /></a>

Här kommer vi på <a href="http://athega.se">Athega</a> att blogga om våra respektive intresseområden, saker vi lärt oss under olika projekt och mycket mer. Några exempel på ämnen kan vara:

<ul>
<li>Tips på hur man arbetar med olika versionshanteringssystem</li>
<li>Service orienterad arkitektur (SOA) med <a href="http://jquery.com/">JavaScript</a></li>
Expand All @@ -15,4 +18,7 @@ Här kommer vi på <a href="http://athega.se">Athega</a> att blogga om våra res
<li><a href="http://mmonit.com/monit/">Systemövervakning</a> och smidiga <a href="https://labs.riseup.net/code/projects/show/backupninja/">backuplösningar</a></li>
<li><span class="synonym">Vägledning om hur man kommer igång med att bidra till ett <a href="http://github.com">open source</a>-projekt</span></li>
</ul>

Ni kan även följa <a href="http://twitter.com/athega">@athega</a> på Twitter för uppdateringar om vad som sker på företaget.

/ [Peter](/peter)
5 changes: 4 additions & 1 deletion _posts/2009-03-04-geotagga-bilder.md
Original file line number Diff line number Diff line change
@@ -1,11 +1,14 @@
---
title: "Geotagga bilder"
date: 2009-03-04
tags:
- blogg
last_updated_by: peter
---
<p style="text-align: left;">Att <a href="http://sv.wikipedia.org/wiki/Geotaggning" target="_blank">geotagga </a>bilder är att lagra koordinaterna för den geografiska positionen där bilden fotograferades i själva bildfilen. Det skapar många nya möjligheter för att t.ex. söka fram bilder och presentera dem på en karta. Tyvärr är det fortfarande inte många riktiga kameror (och då menar jag inte mobiltelefoner) som har inbyggd GPS vilket krävs för detta. Däremot är vanliga GPS-navigatorer väldigt vanliga nu för tiden, vissa av dem kan kontinuerligt lagra positionen till en spårfil.</p>

Jag tänkte därför presentera en liten guide hur man kan kombinera denna information i efterhand så att man får geotaggade bilder när man laddar över dem till datorn.

<ul>
<li>Ladda över spårfilen/filerna i <a href="http://www.topografix.com/GPX/" target="_blank">GPX-format</a> från navigatorn till datorn. Du behöver vara så noga med att du hittar spåret från det exakta fototillfället. Om du t.ex. har en fil från varje dag på en resa, ta med allihopa.<img class="size-full wp-image-48 aligncenter" title="GPX fil från GPS navigator " src="/assets/legacy/uploads/2009/03/oregon.jpg" alt="GPX fil från GPS navigator " width="277" height="284" /></li>
<li>Ladda över bilderna som JPG-filer från kameran till datorn. En viktig sak man inte får glömma innan man börjar fotografera är att ställa klockan rätt i kameran. Detta är avgörande för att kunna hitta positionen för det exakta tillfället för varje bild. Glöm inte eventuella inställningar för sommar/vintertid och tidszon. Om du märker tiden är fel för bilder du redan tagit bör du korrigera detta innan du fortsätter. <a href="http://www.sno.phy.queensu.ca/~phil/exiftool/" target="_blank">ExifTool</a> kan justera tiden, t.ex. framåt eller bakåt en timme om man har glömt ställa om för sommar/vintertid. Ett annat verktyg som klarar detta och möjligtvis är lite enklare är <a href="http://www.sentex.net/~mwandel/jhead/" target="_blank">jhead</a>.<img class="size-full wp-image-49 aligncenter" title="JPG-filer från en digitalkamera" src="/assets/legacy/uploads/2009/03/digicam-pics.jpg" alt="JPG-filer från en digitalkamera" width="281" height="251" /></li>
Expand All @@ -22,4 +25,4 @@ Jag tänkte därför presentera en liten guide hur man kan kombinera denna infor
<li>Klart!</li>
</ul>

// Johan
/ [Johan](/johan)
41 changes: 21 additions & 20 deletions _posts/2009-03-08-sinatra-och-google-spreadsheet.md
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,8 @@ Sinatra är ett DSL för att snabbt och enkelt skapa webbapplikationer i Ruby:
'Hello world!'
end

<h2>Komma igång</h2>
## Komma igång

Först av allt behöver vi <a href="http://www.ruby-lang.org/en/">Ruby</a> och <a href="http://www.rubygems.org/">RubyGems</a>. Eftersom jag använder OS X så är de redan installerade. (Men se till att du har en uppdaterad version av RubyGems)

Om du inte redan har lagt till <a href="http://github.com">GitHub</a> i listan över dina gem sources:
Expand All @@ -29,7 +30,7 @@ Nu är vi redo att installera de gems vi kommer att använda:

Nu är vi redo att börja skriva vårt script:

<h2>sinatra-and-google-spreadsheet.rb</h2>
## sinatra-and-google-spreadsheet.rb

Först tar vi och laddar in de gems vi kommer använda (Sinatra kommer att ladda in <a href="http://haml.hamptoncatlin.com/">Haml</a> åt oss):

Expand All @@ -52,18 +53,18 @@ Metoderna för att hämta datat från Google Spreadsheet:
# Retrieve and return the posts
session["posts"] ||= retrieve_posts
end

def retrieve_posts
# Empty posts hash
posts = {}

# Log in to Google Spreadsheet
session = GoogleSpreadsheet.login('xxxxxxxx', 'xxxxxxxx')
# First worksheet of

# First worksheet of
# http://spreadsheets.google.com/ccc?key=peGTxx6h1WT0ihw9-QETbQg
ws = session.spreadsheet_by_key("peGTxx6h1WT0ihw9-QETbQg").worksheets[0]

# Iterate over all the rows in the spreadsheet
for i in 1...ws.num_rows
# Store the data Identify data using the slug
Expand All @@ -74,7 +75,7 @@ Metoderna för att hämta datat från Google Spreadsheet:
:author => ws[i+1,4],
}
end

# Return the retrieved posts
posts
end
Expand All @@ -86,7 +87,7 @@ Startsida listar helt enkelt alla poster:
get '/' do
# Get all the posts
@posts = get_posts

# Render the index template
haml :index
end
Expand All @@ -96,25 +97,25 @@ Respektive post har en "slug" som används i urlen:
get '/:slug' do
# Get the post
@post = get_posts[params[:slug]]

# Render the post template
haml :post
end

Nu definierar vi de <a href="http://haml.hamptoncatlin.com/">Haml</a>-mallar vi använder på sidorna:

__END__

@@ layout
%html
%head
%title Sinatra and Google Spreadsheet
%body
= yield

@@ index
%h1.title All posts

- @posts.each do |slug, post|
%ul
%li
Expand All @@ -123,31 +124,31 @@ Nu definierar vi de <a href="http://haml.hamptoncatlin.com/">Haml</a>-mallar vi
@@ post
%h1.title
= @post[:title]

%div
Published
%span.date
= @post[:date]
by
%span.author
= @post[:author]

%p.content
= @post[:content]

%a{:href => '/'} << Back

<h2>Starta scriptet</h2>
## Starta scriptet

$ ruby sinatra-and-google-spreadsheet.rb
$ ruby sinatra-and-google-spreadsheet.rb
== Sinatra/0.9.1 has taken the stage on 4567 for development with backup from Thin
>> Thin web server (v1.0.0 codename That´s What She Said)
>> Maximum connections set to 1024
>> Listening on 0.0.0.0:4567, CTRL+C to stop

Om allt går som det ska så ska vi nu ha en server på <a href="http://localhost:4567/">http://localhost:4567/</a>.

<h2>Resultat</h2>
## Resultat

Från ett kalkylblad på Google Spreadsheet:

Expand All @@ -159,4 +160,4 @@ Till en sida serverad med Sinatra:

Att man kan åstadkomma så mycket med under 100 rader Rubykod är rätt imponerande, speciellt om man tänker på att vi då även räknar in kommentarer och mallar.

// [Peter](/peter)
/ [Peter](/peter)
5 changes: 2 additions & 3 deletions _posts/2009-03-25-athega-bidrar-till-oppen-kallkod.md
Original file line number Diff line number Diff line change
@@ -1,17 +1,16 @@
---
title: "Athega bidrar till öppen källkod"
date: 2009-03-25
last_updated_by: peter
last_updated_by: johan
---
Athega har sedan länge, ända sedan starten 1997, arbetat mycket med programmeringsspråket <a href="http://perl.org/" target="_blank">Perl</a>. Vi använder oss i mycket stor utsträckning av öppna och fria mjukvaror och verktyg för de system vi bygger. Därför är även en stor del av den kod vi själva producerar befriad från licenskostnader och betraktas som “<a href="http://sv.wikipedia.org/wiki/Open_source" target="_blank">open source</a>” även om den kanske i vissa fall inte finns publikt tillgänglig på nätet.

Saker som går att återanvända och andra kan ha nytta av delar vi gärna med oss av. Ett exempel på detta är Perl-modulen <a href="http://search.cpan.org/~jobero/Geo-SweGrid-1.0/SweGrid.pm" target="_blank"><tt>Geo::SweGrid</tt></a> som används för att konvertera geografiska koordinater mellan det system som används globalt och det som används på vissa svenska kartor.

Det distribuerade arkivet för Perl-moduler heter <a href="http://cpan.org/" target="_blank">CPAN</a>, dit kan alla bidra med sin kod. När en modul väl finns i arkivet kan den lätt installeras på vilken dator som helst så här:


[user@host ~]$ sudo cpan
cpan shell -- CPAN exploration and modules installation (v1.9304) ReadLine support enabled
cpan> install Geo::SweGrid

//[[Johan]]
/ [Johan](/johan)
Original file line number Diff line number Diff line change
@@ -1,10 +1,10 @@
---
title: "Athegas öppna källkod används av Valmyndigheten"
date: 2009-04-08
last_updated_by: peter
last_updated_by: johan
---
I mitt <a href="http://athega.se/2009/03/25/athega-bidrar-till-oppen-kallkod/">förra inlägg</a> berättade jag om en Perl-modul som vi släppt som öppen källkod. Det visade sig att denna kod ganska snabbt skulle komma till nytta. Häromdagen fick jag ett e-postmeddelande från <a href="http://www.val.se/" target="_blank">Valmyndigheten </a>där de berättade att de använder modulen och att den passar deras behov perfekt. De använder den för att konvertera positionen för alla vallokaler från RT90 till SWEREF99 för presentation på en karta på webben.

Modulen hittar ni här: <a href="http://search.cpan.org/~jobero/Geo-SweGrid-1.0/SweGrid.pm" target="_blank">Geo::SweGrid</a>

// [Johan](/johan)
/ [Johan](/johan)
13 changes: 10 additions & 3 deletions _posts/2009-04-16-ruby-on-rails-under-nginx-med-passenger.md
Original file line number Diff line number Diff line change
Expand Up @@ -10,26 +10,33 @@ Sedan några timmar så kan man köra <a href="http://www.modrails.com/">Phusion
<a href="http://www.modrails.com/">Phusion Passenger</a> och <a href="http://httpd.apache.org/">Apache</a> har under en tid varit det populäraste sättet att enkelt driftsätta <a href="http://rubyonrails.org/">Ruby on Rails</a> och <a href="http://rack.rubyforge.org/">Rack</a>-applikationer. Nu kan man alltså välja att köra Passenger under den ryska (och <a href="http://www.linuxjournal.com/article/10108">tokigt snabba</a>) <a href="http://wiki.nginx.org/Main">Nginx</a>.

Det enda man behöver göra är:

<ol>
<li>Installera gem: <code style="padding: 0 0.5em; color: #fff; background-color: #000;">sudo gem install passenger</code></li>
<li>Köra Nginx installern: <code style="padding: 0 0.51em; color: #fff; background-color: #000;">sudo passenger-install-nginx-module</code></li>
<li>Konfigurera (Det mesta sköts automagiskt)</li>
<li>Starta</li>
</ol>

Mer ingående instruktioner finns på <a href="http://blog.phusion.nl/2009/04/16/phusions-one-year-anniversary-gift-phusion-passenger-220">Phusion’s blogg</a>
<h2>Phusion Passenger</h2>

## Phusion Passenger

Hongli Lai och Ninh Bui <a href="http://en.oreilly.com/rails2008/public/schedule/detail/4354">presenterade</a> Phusion Passenger (också känd som <strong>mod_rails</strong>) under <a href="http://en.oreilly.com/rails2008/">RailsConf 2008</a>, det var då jag verkligen fick upp ögonen för projektet.

I den nya versionen har Phusion-grabbarna förutom att man nu kan använda sig av två olika webbservrar för att köra Passenger lagt till:

<ul>
<li>Stöd för "chunked file uploads"</li>
<li>Stöd för Capistranos sätt att sköta driftsättning (Symlänkning av <code>current</code> osv.)</li>
<li>Förmåga att ladda <code>application_controller.rb</code> från en icke-standard sökväg</li>
<li>"Worker process event hooks" för Rack</li>
</ul>
<h2>Nginx</h2>

## Nginx

Nginx driver ett flertal stora webbplatser, såsom <a class="external text" title="http://www.wordpress.com" rel="nofollow" href="http://www.wordpress.com/">WordPress</a>, <a class="external text" title="http://www.hulu.com" rel="nofollow" href="http://www.hulu.com/">Hulu</a>, <a class="external text" title="http://www.github.com/" rel="nofollow" href="http://www.github.com/">Github</a>, och <a class="external text" title="http://www.ohloh.net/" rel="nofollow" href="http://www.ohloh.net/">Ohloh</a>. Den serverar mer än två miljoner webbplatser och är därmed den näst populäraste webbservern under Linux.

<img class="alignnone size-full wp-image-137" title="Fördelning mellan olika webbservrar" src="/assets/legacy/uploads/2009/04/web_servers_pie_chart.png" alt="Fördelning mellan olika webbservrar" width="300" height="150" />

// [Peter](/peter)
/ [Peter](/peter)
5 changes: 3 additions & 2 deletions _posts/2009-04-24-lat-inte-tomcat-jobba-i-onodan.md
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
---
title: "Låt inte Tomcat jobba i onödan"
date: 2009-04-24
last_updated_by: peter
last_updated_by: chrille
---
Ett vanligt upplägg för en lastad sajt med någorlunda statiskt innehåll ser ut enligt nedan:

Expand All @@ -20,6 +20,7 @@ Dock är det kanske inte att föredra i ett litet större projekt med hundratals
Mitt nästa spår var att automatiskt försöka inkludera ovanstående direktiv för varje genererad sida. Från och med JSP 2.0 (som inte direkt kom ut igår) går det att få till ganska enkelt med något som kallas för implicit includes.

Börja med att lägga till ett jsp-config-direktiv i din web.xml:

<!-- Disable the use of sessions -->
<jsp-config>
<jsp-property-group>
Expand All @@ -38,4 +39,4 @@ Notera att filen som inkluderas är av typen .jspf, ett JSP-fragment. Detta är

Testa! Tomcat kommer att kasta fel i loggarna så fort du försöker skapa en session, men om du har det som jag är det precis så du vill ha det!

// [Chrille](/chrille)
/ [Chrille](/chrille)
10 changes: 6 additions & 4 deletions _posts/2009-04-24-screen-capture-online.md
Original file line number Diff line number Diff line change
Expand Up @@ -6,13 +6,15 @@ last_updated_by: peter
Jag har länge använt ett screen capture-program för att komplettera dokumentation och manualer med tutorials som är lätta för användarna att ta till sig.

När det handlar om en steg för steg beskrivning av något i ett applikation tycker jag det både är väldigt bekvämt, för mig som gör det, och mycket lätt att förstå för användarna. Min erfarenhet är att det blir ett mycket uppskattat och givande komplement till övrig dokumentation.
<div>På mitt uppdrag har jag arbetat med ett par olika lösningar för att spela desktop och visa hur man gör saker och sedan publicera dessa på support-web-sidor. Det kan handla om allt från hur en miljö är uppbyggt till handgrepp vid installationer mm. Jag tycker tekniken nästan kan mäta sig med att sitta bredvid någon och förklara. Speciellt om det är svåra gränssnitt där det finns många möjligheter att klicka bort sig eller när det gäller applikationer som inte är helt logiska.</div>
<div>Jag blev väldigt nyfiken när jag fick höra talas om en online screen recorder-tjänst som heter screentoaster. Efter registrering kom jag igång relativt snabbt.</div>

På mitt uppdrag har jag arbetat med ett par olika lösningar för att spela desktop och visa hur man gör saker och sedan publicera dessa på support-web-sidor. Det kan handla om allt från hur en miljö är uppbyggt till handgrepp vid installationer mm. Jag tycker tekniken nästan kan mäta sig med att sitta bredvid någon och förklara. Speciellt om det är svåra gränssnitt där det finns många möjligheter att klicka bort sig eller när det gäller applikationer som inte är helt logiska.

Jag blev väldigt nyfiken när jag fick höra talas om en online screen recorder-tjänst som heter screentoaster. Efter registrering kom jag igång relativt snabbt.

Inom någon minut hade jag spelat in en första testfilm. Dom inspelade filmerna går sedan direkt att publicera till olika tjänster. Mycket lätt att använda och dom flesta funktioner finns där. Spela in från webcam och att lägga på ljud eller inte.

## Edit (2012)

Då Screentoaster verkar ha lagt ner så kan vi rekomendera tjänsten [Screenr](http://screenr.com/) istället.


// [Mats](/mats)
/ [Mats](/mats)
12 changes: 6 additions & 6 deletions _posts/2009-05-05-railsconf-tutorials.md
Original file line number Diff line number Diff line change
Expand Up @@ -19,18 +19,18 @@ last_updated_by: peter
<li>Testning</li>
</ul>

<p>Jag hade gärna sett att han gått in lite mer på djupet om skillnaderna
mellan JRuby och MRI, Olika sätt att deploya (Han visade GlassFish,
<p>Jag hade gärna sett att han gått in lite mer på djupet om skillnaderna
mellan JRuby och MRI, Olika sätt att deploya (Han visade GlassFish,
med tveksamt resultat)</p>

<p>Ett verktyg jag helt klart kommer att använda mig av i framtiden är <a href="https://visualvm.dev.java.net/">VisualVM</a>.</p>

<h2 id="a_hat_full_of_tricks_with_sinatra_blake_mizerany_heroku">A Hat Full of Tricks with Sinatra - Blake Mizerany (<a href="http://heroku.com">Heroku</a>)</h2>

<p>Det första som händer är att <a href="http://chneukirchen.org/">Christian Neukirchen</a>,
<p>Det första som händer är att <a href="http://chneukirchen.org/">Christian Neukirchen</a>,
huvudutvecklaren av <a href="http://rack.rubyforge.org/">Rack</a> sätter sig brevid mig.</p>

<p>Första fjärdedelen av Blakes föreläsning handlar inte om
<p>Första fjärdedelen av Blakes föreläsning handlar inte om
<a href="http://www.sinatrarb.com/">Sinatra</a> över huvud taget utan om just <a href="http://rack.rubyforge.org/">Rack</a>.</p>

<h3 id="minimal_rack_applikation">Minimal Rack-applikation</h3>
Expand All @@ -40,7 +40,7 @@ huvudutvecklaren av <a href="http://rack.rubyforge.org/">Rack</a> sätter sig br
<h3 id="minimal_sinatra_applikation">Minimal Sinatra-applikation</h3>

require 'sinatra'

get '/' do
'Hello'
end
Expand All @@ -64,4 +64,4 @@ huvudutvecklaren av <a href="http://rack.rubyforge.org/">Rack</a> sätter sig br

<img src="/assets/legacy/uploads/2009/05/gae_hackathon.png" alt="gae_hackathon" title="gae_hackathon" width="750" height="818" class="alignnone size-full wp-image-176" />

// [Peter](/peter)
/ [Peter](/peter)
24 changes: 12 additions & 12 deletions _posts/2009-05-06-railsconf-tisdag.md
Original file line number Diff line number Diff line change
Expand Up @@ -23,23 +23,23 @@ last_updated_by: peter
<p>Unobtrusive JavaScript kommer att implementeras genom att använda HTML 5 attribut:</p>

## Rails 2.x
<%= link_to_remote "Delete", :url => @comment, :method => :delete %>
<a href="#" onclick="new Ajax.Request('/comments/1', {asynchronous:true,
<%= link_to_remote "Delete", :url => @comment, :method => :delete %>
<a href="#" onclick="new Ajax.Request('/comments/1', {asynchronous:true,
evalScripts:true, method:'delete'}); return false;">Destroy</a>

## Rails 3.x
<%= link_to "Delete", @comment, :remote => true, :method = :delete %>
<%= link_to "Delete", @comment, :remote => true, :method = :delete %>
<a href="/comments/1" data-remote="true" data-method="delete">Destroy</a>

<p>Och sen appliceras metoderna med JavaScript:</p>

$(document.body).observe("click", function(event) {
var element = event.findElement("a['data-remote']");
if (element) {
var method = element.readAttribute("data-method") || "get";
new Ajax.Request(element.readAttribute("href"), { method: method });
event.stop();
}
$(document.body).observe("click", function(event) {
var element = event.findElement("a['data-remote']");
if (element) {
var method = element.readAttribute("data-method") || "get";
new Ajax.Request(element.readAttribute("href"), { method: method });
event.stop();
}
});

<p>Han visade på hur viktigt hög produktivitet faktiskt är, hur motivation snabbt minskar vid svåra problem.</p>
Expand Down Expand Up @@ -193,4 +193,4 @@ last_updated_by: peter

<p>Tags är en riktigt trevlig liten feature.</p>

// [Peter](/peter)
/ [Peter](/peter)
Loading

0 comments on commit 6408181

Please sign in to comment.