Archive by Author

Sending email in FreeBSD with Gmail

When I moved my mail functionality (gmail) from my FreeBSD-server to Google Apps I was left with no way to send email from my server (sendmail disabled and gmail removed) from shell. I have no longer the need to recieve email from my server, thanks to Google! However, I needed to send emails from my server to report server status and report software/hardware errors.

This is how I solved the problem on my FreeBSD 7.0 server.

1. Freebsd has a guide for setting up send only with ssmtp. First you should install ssmtp.

cd /usr/ports/mail/ssmtp/ && make install clean

2. Then you need to configure ssmtp for Gmail. Create this file in /usr/local/etc/ssmtp/ssmtp.conf. Replace email and password with your Gmail-account settings.

root=youremail@gmail.com
mailhub=smtp.gmail.com:587
AuthUser=youremail@gmail.com
AuthPass=yourpassword
UseSTARTTLS=YES

3. Test ssmtp. First you have to create a textfile with the message that you are going to send. Copy the text between the lines below.

Save the text to ”testmessage.txt”.
————————–
To: youremail@gmail.com
From: youremail@gmail.com
Subject: Testmessage

This is a test
--------------------------

Then run this command to send the testmessage.

ssmtp -v youremail@gmail.com < testmessage.txt

You should see the following output:

[<-] 220 mx.google.com ESMTP 14sm2982172ewy.10
[->] EHLO mysql
[<-] 250 PIPELINING
[->] STARTTLS
[<-] 220 2.0.0 Ready to start TLS
[->] EHLO servername
[<-] 250 PIPELINING
[->] AUTH LOGIN
[<-] 334 VXNlcm5hbWU6
[->] bWFyY3VzLm55YkBnbWFpbC5jb20=
[<-] 334 UGFzc3dvcmQ6
[<-] 235 2.7.0 Accepted
[->] MAIL FROM:
[<-] 250 2.1.0 OK 14sm2982172ewy.10
[->] RCPT TO:
[<-] 250 2.1.5 OK 14sm2982172ewy.10
[->] DATA
[<-] 354 Go ahead 14sm2982172ewy.10
[->] Received: by Servername (sSMTP sendmail emulation); Tue, 09 Mar 2010 12:53:14 +0100
[->] From: "Username"
[->] Date: Tue, 09 Mar 2010 12:53:14 +0100
[->] To: youremail@gmail.com
[->] Subject: Testmessage
[->]
[->] This is a test
[->] .
[<-] 250 2.0.0 OK 1268135596 14sm2982172ewy.10
[->] QUIT
[<-] 221 2.0.0 closing connection 14sm2982172ewy.10

If everything seems ok you should now have a fresh email in your Gmail account. Check it out! If not, then you should probably check your ssmtp.conf file and verify that you can connect to smtp.google.com

4. Last, replace sendmail with ssmtp. This makes ssmtp the default mailer for your system.

mv /usr/sbin/sendmail /usr/sbin/sendmail.org
ln -s /usr/local/sbin/ssmtp /usr/sbin/sendmail

5. Check that mail is working.

mail -v -s "TestSubject" youremail@gmail.com
Testing and
.

Output:
[<-] 220 mx.google.com ESMTP 16sm3004137ewy.7
[->] EHLO mysql
[<-] 250 PIPELINING
[->] STARTTLS
[<-] 220 2.0.0 Ready to start TLS
[->] EHLO servername
[<-] 250 PIPELINING
[->] AUTH LOGIN
[<-] 334 VXNlcm5hbWU6
[->] bWFyY3VzLm55YkBnbWFpbC5jb20=
[<-] 334 UGFzc3dvcmQ6
[<-] 235 2.7.0 Accepted
[->] MAIL FROM:
[<-] 250 2.1.0 OK 16sm3004137ewy.7
[->] RCPT TO:
[<-] 250 2.1.5 OK 16sm3004137ewy.7
[->] DATA
[<-] 354 Go ahead 16sm3004137ewy.7
[->] Received: by mysql (sSMTP sendmail emulation); Tue, 09 Mar 2010 13:11:41 +0100
[->] From: "Username"
[->] Date: Tue, 09 Mar 2010 13:11:41 +0100
[->] To: youremail@gmail.com
[->] Subject: TestSubject
[->]
[->] testing
[->] .
[<-] 250 2.0.0 OK 1268136703 16sm3004137ewy.7
[->] QUIT
[<-] 221 2.0.0 closing connection 16sm3004137ewy.7

6. Check the log file.

cat /var/log/maillog

Output:
SMTP[755]: Creating SSL connection to host
sSMTP[755]: SSL connection using RC4-MD5
sSMTP[755]: Sent mail for username@servername(221 2.0.0 closing connection 14sm3068161ewy.2) uid=0 username=username outbytes=696
sSMTP[1234]: Creating SSL connection to host
sSMTP[1234]: SSL connection using RC4-MD5
sSMTP[1234]: Sent mail for username@servername (221 2.0.0 closing connection 16sm3004137ewy.7) uid=0 username=username outbytes=349

Summary
This worked for me straight out of the box. I didn't need to make any changes to make it work. I hope it works for you as well!

Bygga egen spårsläde / spårdragare för längdåkning

Mitt senaste projekt var att tillverka en hemmagjord spårsläde för klassisk längdåkning som man kan dra efter en vanlig skoter. Det är perfekt att ha en egen spårmaskin en vinter som denna så att man kan dra upp egna skidspår. Efter att ha scannat av nätet för att se hur andra spårmaskiner är konstruerade så fick jag en uppfattning om hur jag skulle bygga den. Alternativet hade varit att köpa en färdig släde för ett antal tusen kronor, men hur kul hade det varit…

Jag utgick från pedahls utmärkta spårsläde. och hans utmärkta ritningar. Eftersom jag inte har några kunskaper om svetsning så tillverkade jag min i trä och plåt istället. Nackdelen med en sådan konstruktion är att det inte blir lika hållbart, men eftersom det är enkelt att tillverka nya ”reservdelar” så gör ju inte det något. Det som kommer att slitas mest är skidorna som gör själva spåren. Släden kommer inte att användas dagligen så min konstruktion kommer att uppfylla mina behov. Pajar något så kommer det att vara enkelt att fixa.

Jag hittade alla delar hemma på gården och bygget gick smärtfritt. Några kreativa lösningar fick funderas fram men alla fick bitar fick sin plats till slut. Efter några rundor med den färdiga släden så kan jag konstatera att det blir väldigt fina skidspår av min enkla spårdragare. Beroende på snöförhållanden så kan jag lasta på olika tyngder för att spåraren ska kunna pressa undan snön bättre. Efter att jag gjort klar släden så har jag dragit upp ett spår på ca 2km. Slutresultatet blev över alla förväntningar!

Här kommer några bilder på släden samt mina första spår:

Film från första provturen:

Bygget
1. Jag började med att bygga stommen i trä. En platta i botten och sedan sarger runtom denna.
2. Plåtskivan drogs sedan fast i trästommen.
3. Tillverkade skidorna/medarna enligt pedahls profilritning och drog fast dessa i plåten och stommen.
5. Byggde en enkel draganordning med ett armeringsjärn som böjdes till lämplig form. Ändarna fästes sedan i ett rör som dragits fast i trästommen.

Material
* Plåt
* Träbitar
* Armeringsjärn
* Rör
* Skruv

Kostnad: 0 kr (hade alla bitar tillgängliga), men borde inte bli särskilt dyr med prylar från byggvaruhus.
Tidsåtgång: 2-3 timmar

Framtida förbättringar
* Att installera något som bryter upp snön framför skidorna.
* Kanter på vardera sida i slädens riktning för att få släden att spåra mer rakt/stabilt.
* Montera plåt på skidorna/medarna för bättre hållbarhet.

Länkar
Build Your Own Cross-Country Ski Tracksetter for Grooming
Pedahl spårmaskin
Tims National Trail Grooming

Intressant läsning om spår och ledpreparering
Tracksetter
SKI TRAIL GROOMING GUIDE
GUIDELINES for SNOWMOBILE TRAIL GROOMER OPERATOR TRAINING
4.OPERATING GROOMING EQUIPMENT
2.GROOMING EQUIPMENT

Install printerdrivers with WMI and VB.NET

This is an example of how you install printerdrivers with .NET and WMI (Windows Management Instrumentation). Most examples on the Internet shows how this can be done with vbscript, printui.dll and such…

A list of properties can be found at MSDN Win32_PrinterDriver

Other topics:
How to install printerports with WMI and VB.NET
How to create a printerqueu with .NET and WMI

Imports System.Management

Dim infPath  as String = "c:\driver\printerdriver.inf"
Dim mp As ManagementPath = New ManagementPath("Win32_PrinterDriver")

Dim co As ConnectionOptions = New ConnectionOptions()
co.EnablePrivileges = True

Dim ms As ManagementScope = New ManagementScope("\\" + Environment.MachineName + "\root\cimv2", co)

Dim mcPrinterDriver As New ManagementClass(ms, mp, Nothing)
mcPrinterDriver.SetPropertyValue("Name", "drivername")
mcPrinterDriver.SetPropertyValue("SupportedPlatform", "Windows NT x86") ' x86-architecture
'mcPrinterDriver.SetPropertyValue("SupportedPlatform", "Windows x64") ' x64-architecture
mcPrinterDriver.SetPropertyValue("Version", 3)
mcPrinterDriver.SetPropertyValue("FilePath", System.IO.Path.GetDirectoryName(infPath))
mcPrinterDriver.SetPropertyValue("InfName", infPath)

Dim inParams As System.Management.ManagementBaseObject = Nothing
inParams = mcPrinterDriver.GetMethodParameters("AddPrinterDriver")
inParams("DriverInfo") = CType(mcPrinterDriver, System.Management.ManagementBaseObject)
Dim outParams As System.Management.ManagementBaseObject = mcPrinterDriver.InvokeMethod("AddPrinterDriver", inParams, Nothing)

Dim uiReturnValue As UInteger = System.Convert.ToUInt32(outParams.Properties("ReturnValue").Value)

I have tested this in Windows XP, Windows 7 and Windows 2008R2. Make sure your account has privileges to install drivers.

On Windows XP the drivers are installed physically to:
C:\WINNT\system32\spool\drivers

And in the registry:
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Print\Environments

Sluta använda Internet Explorer 6

Något som börjar bli uppmärksammat i webbvärlden är kampanjen mot Microsofts webbläsare IE6 (Internet Explorer 6). Läs mer på http://ie6.forteller.net. Denna webbläsare har nu varit med i 8 långsamma år och hållit tillbaka webbens utveckling sedan första dagen. Jag kan bara instämma i detta och kommer att göra allt i min makt för att få folk att sluta använda webbläsaren från helvetet.

Jag har gjort en egen lösning för detta i php+css+html som gör att mina sidor ser ut enligt screenshoten nedan. Tanken är att imitera actionbaren som finns i IE6 och be användaren att uppdatera sin webbläsare om denne kör IE6. Lösningen är en blandning av flera andra lösningar.

Screenshot
sluta-anvanda-ie6

php
// Vilken webbläsare kör användaren
$browser = substr($_SERVER['HTTP_USER_AGENT'], 25, 8);

// Kolla om IE6
$ie6 = ($browser == "MSIE 6.0");

// Om IE6, visa actionbar
if(!$ie6) { include "actionbar.html"; }

CSS
div.activebar
{
position: absolute;
background-color: #ffffe1;
border-bottom: 1px solid #c8c8c8;
margin:0;
padding:0;
width:100%;
}

div.activebarText
{
font-family: sans-serif;
font-size: 12px;
margin-left: 6px;
margin-top: 4px;
height: 100%;
}

actionbar.html
<div class="activebar">
<div class="activebarText" align="center">
Din webbläsare är gammal och osäker! För att få ut det mesta av vår webbsida så rekommenderar vi att ni <a href="http://www.microsoft.com/ie" target="_blank">uppgraderar</a> den.
Pröva även andra populära webbläsare som <a href="http://www.mozilla.com/sv-SE/" target="_blank">Firefox</a>, <a href="http://www.opera.com/" target="_blank">Opera</a>, <a href="http://www.google.com/chrome/" target="_blank">Chrome</a> eller <a href="http://www.apple.com/se/safari/" target="_blank">Safari</a>.
</div>
</div>

google_protectAndRun is not defined

Tonight I got a very strange error that in Firefox error-log says ”google_protectAndRun is not defined”. The webpage that I am creating only shows a blank page directly after the page is loaded (when my jquery ”ready”-stuff runs). The error occurs when I am wrapping a ”div” around the adsense-code with jQuery like this:

$("#divID").wrap("<div class="someclass"></div>");

Please help! I cant find any solution to this error.

Convert youtube-links in text to embedded flash player

If you have a forum, cms or whatever and the users contribute with youtube-links in their posts. You probably convert the urls to a-href links at display time, like this:

simple-link

If the posted link is a youtube-link, are you converting it the same way? Why should you! A cooler way is to convert the link to a embedded youtube-video, like this:

parseyoutubeurls

I have written a small php-function that converts youtube-links (like: http://www.youtube.com/watch?v=XELJ9_Fy0ag) in text to embedded videos. Download it, give it a try and feel free to modify it to suit your needs. Feedback is appreciated.

Download parseYoutubeUrls

function parseYoutubeUrls($text, $width = -1, $height = -1)
{
// defaults
if($width == -1) { $width = 425; }
if($height == -1) { $height = round((344/425) * $width); }

// get all urls in text
$regexp = "/<a\s+.*?href=[\"\']?([^\"\' >]*)[\"\']?[^>]*>(.*)<\/a>/i";
if(preg_match_all($regexp, $text, $matches, PREG_SET_ORDER))
{
// check each url
foreach($matches as $match)
{
// replace all youtube urls with embedded flash player
if(preg_match_all("/www.youtube.com/",$match[1],$hit))
{
$parsedUrl = parse_url($match[1]);
parse_str($parsedUrl["query"], $query);
$videoId = ($query['v']);
$replace = '<p><object width="'.$width.'" height="'.$height.'"><param name="movie" value="http://www.youtube.com/v/'.$videoId.'&hl=sv&fs=1&rel=0"> </param> <param name="allowFullScreen" value="true"></param><param name="allowscriptaccess" value="always"></param><embed src="http://www.youtube.com/v/'.$videoId.'&hl=sv&fs=1&rel=0" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="'.$width.'" height="'.$height.'"></embed></object></p>';
$text = str_replace($match[0],$replace, $text);
}
}
}
return $text;
}

Dom bäst skötta företagen kör SAP

Standardsystemet SAP verkar satsa stort i Asien. Dessa skyltar möts man av på flygplatserna i Shanghai och Hong Kong. Det kan tänkas att SAP behöver se sig om efter nya fräscha marknader efter SAP-stoppet på försäkringskassan.

Härlig skylt. Att risk inte dyker upp oannonserat vet man ju vid det här laget.

sap

Där jag jobbar så har vi Lenovo-datorer som vi inte är så nöjda med. Att då se denna annons fick mig att dra på ett leende modell större:

sap lenovo

Spännande att Burger King också kör SAP. Synd bara att det går lite tungt för företaget i Sverige. Men frågar du mig så har dom godaste burgarna efter Big Boy (lokal spelare) och Max.

sap burger king

Speedo verkar också köra SAP.

sap03

dubbeltallen.se – Timrå IK historik

Dubbeltallen.se såg sitt ljus för en månad sedan och är en webbsida där man kan läsa om Timrå IK’s historia. Mer om webbsidan kan ni läsa på Dubbeltallen.se

dubbeltallen-se

Eftersom jag tycker att Wordpress är så otroligt bra och lättjobbat så blev det WP som fick driva sajten. Om jag skulle avslöja hur snabbt jag fick upp sajten så skulle ni nog inte tro mig, men snabbt gick det. Lite fakta om sajten nedan:

CMS
Wordpress

Tema
iNove

Tillägg/plugins
µAudio Player
Akismet
All in One Adsense and YPN
All in One SEO Pack
GD Simple Widgets
Random Pages widget
Theme My Login
XPertMailer

Boost performance on your Asus EEE 900

My sister has the Asus eee 900 netbook, the one with 16GB SSD hard drive, and Windows XP. The performance on the machine was very very bad. The bottleneck was the SSD-drive that made the machine hang when there were (m)any writes to it. I have made all optimizations that you can do on Windows XP, like disabling all services that aren’t needed. However, the machine was still slow. While browsing the eeeuser forum I found the magical solution in one of the threads….

asus-eee-pc-900

The solution was to install Flashfire SSD Accelerator. FlashFire is a software for Solid-State Drives and uses host RAM to enhance random write performance of a SSD. Read more about other peoples success-stories in the eeeuser forum.

After installing Flashfire the computer is fast as hell and has no hangups. It is such a miracle! I highly recommend this piece of software for all people with netbooks that has slow SSD-drives.

Mid Sweden Technology Conference i Sundsvall

Den 9 september så var jag på Mid Sweden Technology Conference på Folkets Hus här i stan. Det var en trevlig tillställning som arrangerades av Åkroken Science Park AB. Man förklarade att det skulle bli en återkommande konferens med fokus med utveckling och teknik inom Microsoft-området och denna gång så låg fokuset på ”Windows 7″.

Programmet var följande:

08.00-08.30 Registrering

08.30-09.30 Arbeta smart (Nils Morén, XLENT)

09.45-10.45 Nytt försäkringssystem i .NET (Thomas Hellström, SPV)
Thomas Hellström är ansvarig arkitekt i ett pågående projekt på Statens Pensionsverk som syftar till att utveckla ett nytt försäkringssytem med den största delen på .NET plattformen. Thomas kommer berätta om de utmaningar som ställs på ett sådant system och de tekniska lösningar som valts.

11.00-12.15 Azure (Johan Lindfors, Microsoft)
Windows Azure består också av tjänster som SQL Azure och .NET Services. Dessa kan användas både i molnet och från lokalt installerade applikationer. Här visar vi på exempel och demonstrerar teknikerna som redan idag finns tillgängliga för utvecklare!

12.15-13.15 Lunch

13.15-14.00 Windows 7 (Magnus Jungåker, Microsoft)
Windows 7 är ett modernt operativsystem som alla kan använda och företag sparar mycket på att rulla ut som standartklient. Vi har fokuserat på att utveckla de fundamentala egenskaperna som prestanda, kompatibilitet, säkerhet och stabilitet. Vi lägger också till funktionerna DirectAccess och BranchCache. Vi har förbättrat sök och hårddiskkrypteringsfunktionerna. Men vi har framförallt gjort ett operativsystem som gör användaren mer produktiv och företaget effektivare.

14.15-15.15 Virtualization (Magnus Jungåker, Microsoft)
Med Live Migration i Windows Server 2008 R2 och Server Management Suite Datacenter har Hyper-V blivit en mogen och fullfjädrad servervirtualiseringslösning. På klientsidan har Microsoft i Desktop Optimization Pack (MDOP) och Virtual Enterprise Centralized Desktop(VECD) alla teknologier på plats för att även virtualisera klientsidan.

15.30-16.45 Rika klienter (Robert Folkesson, Microsoft)
I den här sessionen visas hur rika klienter kan dra nytta av ny funktionalitet i Windows 7 som Taskbar notifications, Jump Lists och federerad sökning. Vi visar också de nya möjligheterna som Multi-touch ger och undersöker hur stödet för detta kommer att se ut i .NET Framework 4 och Windows Presentation Foundation.

17.00-18.00 RIA Arkitektur (Fredrik Normén, Cornerstone)
Fler och fler affärs applikationer flyttas till målnet , fler och fler användare vill a bättre användarupplevelse. Enligt Gartner Research, så är 60% av all nya applikationer skapade som RIA under 2010. I denna session så får du lära dig hur arktietkturen för en RIA kan se ut, vad man bör tänka på etc när man utvecklar RIA.

windows7

Mina Synpunkter
Jag tycker att det var intressant att lyssna på Thomas Hellström från SPV och hans tankar om deras .NET utvecklingsprojekt. Han undertryckte bla. vikten av att testa sina ideer med proof-of-concept lösningar, och det är något som jag själv gillar väldigt mycket. Det är viktigt att testa sin design med en enkel modell innan man börjar bygga något stort.

Sedan så var det intressant att höra föreläsarna från Microsoft tala om nyheter i Windows 7. Eftersom jag själv nyligen börjat köra sjuan efter att ha hoppat över Vista så fick jag lära mig en hel del nyheter inom såväl operativsystem som sådant samt om utvecklingsbitarna, virtualisering, paketering och licenser.

Här kan du läsa om Robert Folkessons Presentation från Mid Tech-konferensen i Sundsvall . Där hittar man även material för nedladdning.

I det stora hela så var det en bra dag, även om vissa delar inte passade mig. Det blev lite väl stor spridning på de ämnen som diskuterades. För att passa mig bättre så skulle jag år vilja se att man delar upp konferensen på två dagar. Ena dagen med utvecklingsrelaterade ämnen och den efterföljande dagen med mer driftrelaterade ämnen. Samt att man får välja om man vill gå en eller två dagar.