Archive by Author

Error importing from blogger (blogspot) to WordPress

Today I created a fresh WordPress blog and tried to import an existing blog from blogger (blogspot). Everything worked is it should and all posts were converted, however all of the imported posts got extra characters in them that wasn’t in the original blog. The post title and the post content all got an ‘>’ in them in the first position. Like: ”>This a a post title” amd ”>This is the content”.

To clean this up you can run the following sql-commands against the wordpress database:

update wp_posts SET post_title = TRIM(LEADING '>' FROM post_title)   WHERE post_title LIKE '>%'
update wp_posts SET post_content = TRIM(LEADING '>' FROM post_content)  WHERE post_content LIKE '>%'

The Facebook bot

The ”Facebook Bot” started to appear in my server logfiles in June. Below is a screenshot of the awstats section for web-bots/spiders. Does anyone know what it is doing?

Min HTPC, NAS, ROUTER, MUSIKSPELARE och nedladdningsmaskin

Jag har länge velat ha en kombinerad HTPC, NAS, musikspelare och nerladdningsmaskin i vardagsrummet inkopplad till TV’n. Det har alltid fallit på att en sådan maskin skulle bli dyr, otymplig, osmidig , låta mycket eller dra mycket ström. Men nu har jag äntligen fått till en lösning för detta i takt med att mjukvaru- och hårdvaru-utvecklingen gått framåt. Jag har länge sneglat på att köpa en Asus Eee Box EB1501 men har hindrats över att den har för lite hårddisk. Under 1 TB lagring är ju för lite i dagens läge.

Denna maskin blev det istället till en kostnad på ca: 3000 kr, dvs lika mycket som en Asus Eee Box EB1501. Hårddiskar hade jag sedan tidigare. Särskilt mycket jobb att sätta samman datorn var det inte heller eftersom det mesta fanns på moderkortet out-of-the-box.

Specifikationer
Moderkort: Asus AT3IONT-I Deluxe
Chassi: Ace Polly Mini-ITX Svart
Minnen: 2×1 GB Crucial DDR3 1066MHz
Lagring: 3 x 1 TB
Operativsystem: Windows 7 (x86)
Övrigt: Styrs med den medföljande Asus fjärrkontrollen samt trådlös mus och tangentbord
HTPC: XBMC med styrning genom Eventghost
Strömförbrukning: 22W vid IDLE, mer vid användning

Montering
För att få plats med 3 st 3.5 tums hårddiskar i ACE Polly chassit så behövde jag modda det lite eftersom det är tillverkat för 1 st hårddisk och en DVD-spelare. Men om man sätter hårddiskarna på tvären i det utrymme där DVD-läsaren ska vara så får man plats med två st hårddiskar. Med en plåtsax och lite påhittighet så löser man det lilla problemet. Det går att klämma in 4 st hårddiskar om man använder det extra utrymme som blev över när man tagit bort det inbyggda nätaggregatet. AT3IONT behöver inget nätagg eftersom strömmen kommer via en extern sladd. Efter några månaders körning så har denna lösning fungerat extremt bra eftersom det har aldrig blivit någon extrem värme i den och att den varit knäpptyst. Perfekt för mig! Se bilder nedan.

HTPC
Den mjukvara som används till detta är primärt XBMC (med Eventghost) som jag kan styra fullständigt med fjärrkontrollen från soffan. XBMC spelar upp ALLT på ett mycket bra sätt. En smidig feature är att man inte behöver packa upp rar-ade filmer utan XBMC spelar upp det direkt. Hur det går till vet jag inte men jag är väldigt imponerad av hela XBMC! Det som saknas i dagsläget för Windows-versionen, om man inte kör nightly builds, är att hårdvaru-accelerationen ska fungera vilket det inte gör i dagsläget. Det medför att maskinen inte klarar visst HD-material eftersom den inte är så kraftfull. Så för att spela sådan film så använder jag Media Player Classic i väntan på nästan XBMC-release som kommer att ha hårdvaru-accelerering. För att få hårdvaru-accelation med nuvarande version av XBMC så kan man köra Linuxversionen. En annan imponerande feature är att man med en knapptryckning kan ladda hem undertexter till den film man ser på (om den saknar sådan). Att man även med enkla medel har tillgång till alla svenska play-kanaler, filmtrailers etc är riktigt smidigt!

NAS
Hårddiskarna delas ut som vanliga windows-shares och kan på så sätt nås från nätverket. ”Fyllningen” av hårddiskarna sker med eTorrent och DC++.

Router
Under sommaren har maskinen även använts som utdelare av mobilt bredband i sommarstugan vilket den gjort på ett förtjänstfullt sätt.

Musikspelning
Den musik som ligger på disk spelar jag med XBMC. Använder även Spotify men måste då ta fram tangentbord och mus. Om man vill så kan man spela sina Spotify-playlists i Xbmc.

Slutsats
Det här är framtiden gott folk! För en liten peng så kan man nu få den ultimata hemmamaskinen för ALLT. Glöm allt annat!

Vuvuzela-filter i Ubuntu räddar fotbolls-VM

Som ni alla märkt så pågår fotbolls-VM i Sydafrika och det går inte att se matcherna utan att bli tokig eller få huvudvärk pga. vuvuzelorna.. För mig har det blivit så att jag hoppar över matcherna istället för att se så många jag kan. Vanligtvis så brukar jag se så många matcher jag kan och njuter av stämningen som skapas av fans från olika delar av världen.

Jag hittade en fungerande lösning som filterar bort vuvuzelorna med PulseAudio. Efter att ha testat i Ubuntu 10.04 så kan jag säga att det blev mycket mycket bättre. Nu hör man den övriga publiken och vevezuelorna har blivit mkt tystare. Alltså en mer normal stämning på matcherna. För att detta ska fungera så måste du få in ljudet i datorn men det är ju inte så svårt, eller så ser du VM via webbsändningarna och får in ljudet den vägen

Installera veveuzela-filter i Ubuntu 10.04
Öppna konsollen (ctrl+alt+T)

Mata in följande:
$ sudo add-apt-repository ppa:psyke83/ppa
$ sudo apt-get update && sudo apt-get install pulseaudio-equalizer

Starta sedan ”Program -> Ljud och video -> PulseAudio Equalizer”. Där kan du sedan stänga av de frekvenser som vevezuelorna håller till på. Experimentera gärna med inställningarna. I bilden nedan ser du mina inställningar som fungerar tillfredställande.

vuvuzuela-filter i ubuntu

Lyssna på resultatet nedan. Klippet börjar med ofiltrerat ljud och sedan kommer det filtrerade ljudet om vartannat.

Audio clip: Adobe Flash Player (version 9 or above) is required to play this audio clip. Download the latest version here. You also need to have JavaScript enabled in your browser.

Nu finns det hopp för VM för min del. Testa du med och njut av fotbollen och fansens sång igen! För tydligen så går det att höra fansen bara man filtrerar bort oljudet. Det är otroligt att inte SVT och TV4 gjort detta redan.

Facebook-grupp som vill förbjuda Vuvuzelorna

Tyvärr så saknar Windows 7 equalizer för allt ljud på datorn så det är inte lika enkelt på den plattformen (är inte förvånad?). Om man har tur så finns det med equalizer till det ljudkort/drivrutin man har och kan på så sätt göra motsvarande manöver där. Visst är det väl konstigt att moderna operativsystem inte har equalizer. Som jag kan minnas så hade jag equalizer redan i Windows 95, men det var kanske också något som hängde med vilket ljudkort/drivrutin jag hade för stunden. Soundblaster AWE32 rockade vill jag minnas :)

mount.ntfs using 100% cpu with vmware-player on Ubuntu 10.04

I had problems running vmware images from a mounted ntfs filesystem in Ubuntu 10.04. The problem was that the process mount.ntfs used 100% CPU and froze my computer only a few moments after starting the image in wmware-player. I guess the mounting of ntfs filesystems aren’t that good in Ubuntu. At least not when you have an application that is very write-intensive.

The solution was to open the .vmx file and add this row:
workingDir = ”../../../var/vmware”

This is where vmware-player stores ”suspend files and snapshots. The path should be relative to the image-dir and be writable to the user running vmware-player. And of course, don’t change the path to another mounted ntfs-filesystem. You should also be able to edit the workingdir by using the vmware-player GUI as well. Look at screenshot below.

Huawei e220 på Telenor mobilt bredband

Sommaren närmar sig och som vanligt så letar man efter den mest kostnadseffektiva lösningen för att få tillgång till internet i sommarstugan. Förra året använde vi oss, i brist på bra alternativ, av Telias mobila bredband och ett abbonemang som vi var tvungna att ha i 12 månader trots att vi bara behövde det 3 månader. Vi kom aldrig upp i hastigheter över GPRS på grund av någon slags radioskugga precis där vi har stugan i Havstoviken på Alnö. Så det var ingen rolig upplevelse. Läs mitt test av mobilt bredband på södra alnö.

Nåväl, i år har utbudet breddats och nu finns det mobila bredband med kontantkort. Detta passar ju perfekt för oss som bara behöver bredbandet i 3 månader. Telenor och Tre har de bästa erbjudandena eftersom de inte har någon uttalad begränsning på användandet medans övriga operatörer som Telia/Glocalnet/Tele2 har en begränsning på 5GB trafik per månad.

Jag bestämde mig att för att testa Telenors erbjudande där man fick köpa enbart SIM-kortet (modemlöst) för 99kr där en veckas surf (värde 89kr) ingick. Eftersom jag har ett Telia-låst Huawei E220 modem från fjolårets abbonemang så tänkte jag att man borde kunna använda det om man bara kunde låsa upp modemet. Sedan så har aldrig Telenor använt sig av det modemet i sitt utbud så de har ingen support för det.

Modemet Huawei e220 kunde man låsa upp gratis visade det sig om man bara kunde hacka lite själv. Metoden som beskrivs på Mobila bredbands forum fungerade däremot inte för mig. Den unlocking-kod som genereras på webbsidan blir fel trots att jag matar in rätt IMEI-nummer. Om man följer den här metoden så fick jag däremot ut en helt annan kod som fungerade. Programmen som används för detta fungerar dock väldigt dåligt i Windows7 x86 och x64 så jag rekommenderar att man gör det på en XP-maskin. Modemet blev upplåst efter en hel del möda!

Nästa steg var att unbranda mobilen samt att få in den senaste firmwaren för 7.2 Mbit. Detta görs i två steg. Först ska man lägga in den senaste firmwaren, dvs det som sköter all kommunikation etc. Sedan ska man lägga in mjukvaran (dashboard) i modemet, dvs det program/drivrutiner som man använder sig av för att koppla upp sig mot Internet. Jag testade först både Tres (3Connect) samt Tele2′s mjukvara men inga utav dessa fungerade eftersom dessa inte går att ändra (byta apn) så att de fungerar mot Telenor. Till slut så använde jag den generiska (huawei) versionen av mjukvaran som jag hittade här (HOST11.107.05.00.03) Efter att ha installerat drivrutiner och dashboard så måste man gå in och ställa in modemet för att ansluta mot Telenors apn som är internet.telenor.se. Se bild nedan:

Modemet fungerar nu perfekt i de miljöer jag testat det, dvs. Windows XP, Win7 (x86 & x64) och Ubuntu. Allra enklast att ansluta var det i Ubuntu där man inte behövde installera något alls. Det var bara att koppla in modemet, välja operatör (APN) och ansluta. Se bild nedan.

Synkronisera bokmärken mellan flera datorer

Jag har äntligen hittat det perfekta plugin’et till Firefox så att jag kan synkronisera bokmärken mellan flera datorer via egen server. Jag har ju några datorer och det är otroligt frustrerande att inte ha med sig sina bokmärken på alla datorer. Jag har tidigare tittat på Xmarks men då sparar man bokmärkena på Xmarks servrar vilket jag inte tycker är så kul.

Firefox tillägget heter Xmarks BYOS edition och är en egen version av Xmarks plugin där man lagrar datat på sin egen server. Efter att ha testat så verkar den fungera så att den kopplar upp sig med ftp mot min server vid synkronisering och sparar allt till en enda fil (den adress jag anger ex: ftp://kallekula.com/bookmarks). Efter ett första test så verkar det fungera riktigt bra.

Beskrivning

Bookmark Sync ”Bring Your Own Server” Edition (BYOS). For expert users who wish to sync their bookmarks and passwords using their own FTP or WebDAV server.

Goodbye php eAccelerator and welcome APC

Goodbye eaccelerator, your decision to remove the functionality that I use in eAccelerator 0.9.6 is a dead end for me. I am lucky that I wrote my software to check if ”eaccelerator_put” functions exists on runtime, otherwise my website would have been down by now after updating from 0.9.3.

The release info says it all:
”The theme of this release is: back to basics! All non-essential functionality has been removed from eAccelerator. The key and content cache and the session functions have been removed. ”

The theme of this release is a killer for me. I have used eAccelerator for many years with great success but now its time to move on. I am now looking for other php cache systems and I also have to rewrite my code. It is not that much work but it has to be done, sadly. I hope there is something good or better then eAccelerator waiting for me in the FreeBSd ports-tree…

… and I found the prefect solution for me in Alternative PHP Cache – APC. It is going to be included (by default?) in PHP6 so I think it is the best choice for me and others. The most important functionality for me right now is apc_add or apc_store which should be the equivalent of eaccelerator_put. Great!

How to install APC in FreeBSD
cd /usr/ports/www/pecl-APC
make install clean

And remember to uncomment eaccelerator from php.ini.

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!

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