Teknikdagboken En blogg om teknik i vardagen

19Okt/110

Grym och billig pannlampa/cykellampa

För något år sedan upptäckte någon att man kan beställa magicshine pannlampor/cykellampa med massor av ljus för en billig slant från dealextreme med ungefär lika mycket lyse som en bilstrålkastare (eller mångdubbelt dyrare LED-lampor). MJ-872 med 1600 lumen finns för ca. 1000kr på dealextreme jämfört med 1499kr på magicshinelights/xxl varuhus. Men den största skillnaden ligger i att betydligt dyrare lampor med liknande ljus kostar 4000-6000kr. Lampan jag tänkte köpa har 1200 lumen och kostar bara 305kr! Antagligen  tillkommer det lite frakt och postens administrationsavgift på detta också, men det är ändå grymt billigt.

Köper man från en magicshine återförsäljare får man antagligen sin lampa både snabbare och kan reklamera enklare om något är fel än på dealextreme. Ett köp från dealextreme skickas från Honkong och tar ofta runt 2 veckor att få.

Jag beställde precis en lampa som skall fästas på en huvudställning från Silva. Lampan jag fastnade för är en ny modell för i år som kallas T6 och har en ny ljuskälla kallad XML. Ljuskällan är lite bättre än P7 (som används i orginal magicshine). Den kostar bara 305kr men har ändå 1200 lumen (tillverkarspecificerad). Riktigt prisvärd alltså! Till denna beställde jag också förlängningssladd mellan lampa och batteri samt en adapter så laddaren passar i svenskt uttag. Total blir det ca 330kr inklusive frakt.

Cyklister vill antagligen meka lite med lampan så att det blir en lite mer spridd ljusbild. Söker man på denna lampan på träningsforum såsom orienterare.nu, happymtb.se eller funbeat.se finns det massor av knep. Ett av de snyggare jag hittat och kanske ska testa är att sätta folie på reflektorn.

Ett jämförande test av hur mycket ljus man egentligen får ut finns på lampspecialisten där magicshine-lampan benämns som Mila DXL. Där fick den ca 363 lumen att jämföra med en vanlig halogen som gav 165 lumen.

UPDATE

Förlängningssladden mellan lampan och batteriet passar inte. Är lite andra sämre kontakter på denna jämfört med Magicshine-lamporna. Magicshine-lamporna heter något med MJ på Dealextreme och är rätt mycket dyrare, dock fortfarande billiga.

15Aug/110

Visa boot-skärm istället för progress-bar när Windows Virtual PC laddas

Jag behövde för ett tag sen komma åt boot-skärmen när jag laddade en virtuell pc men som standard visades bara en progress-bar. För att komma runt detta kan du när progress-baren syns trycka shift+esc så visas den riktiga dos-skärmen.

20Jul/111

Anpassa kontoutdrag för smartbudget via Regular Expressions

Jag använder mig av Smart budget för att följa upp mina kostnader. Deras tjänst bankimport för att importera transaktioner från en kontoöversikt är riktigt smart. Men sen ett tag tillbaka har min bank börjat lägga in datum i beskrivningen, vilket skapar problem. Import tjänsten kommer nämligen ihåg vad jag markerat en transaktion som för utgift/inkomst vilket gör att de flesta transaktioner kan importeras direkt då de redan är kategoriserade. Med kategorier menar jag ex. Inkomst -> Lön.

Men sen en tid tillbaka har min bank börjat lägga in datum i kortbetalnigar vilket gör att varje transaktions beskrivning blir unik. För att få bort detta kan man använda sig av Notepad++ och Sök/Ersätt funktionen inställd på Regular Jag gillar Regular Expressions och man kan säkert lösa alla världens problem i ett sådant uttryck, men jag kommer aldrig ihåg hur man gör 🙂 Efter lite testade kom jag i alla fall fram till ett uttryck som passade för att plocka bort texter liknande "Kortköp 110720 ".

((Kortköp )\d\d\d\d\d\d )

Sådär, då kunde jag importera alla mina transaktioner precis som tidigare.

12Jul/110

Hur du för över dina kontakter från Facebook till Google+

Jag har precis skaffat Google+ och det är inte mycket som händer där då de flesta inte vill eller orkar flytta från Facebook. Men hur hittar du dem som ändå finns där? Ett sätt är att importera dina vänner från Facebook till ditt Google+ konto. Men Facebook känner sig tydligen hotade av den nya konkurrenten så de har stängt av en applikation som gjorde detta åt dig och det finns inget sätt att exportera alla kontakter från din vän-lista.

I korthet ser proceduren ut såhär:

  1. Skaffa eller logga in till ditt Yahoo-konto
  2. Gå till kontaktsidan och välj import contacts från din Facebook
  3. Logga in till Google+å till kretssidan och välj hitta och bjud in
  4. Välj att söka efter vänner i yahoo!

Men det fungerade inte för mig. Jahopp, vad göra då? Jag fick istället importera alla kontakterna till Yahoo och sedan exportera dem därifrån via Yahoo CSV-formatet in till mina kontakter i Gmail.

En lite mer detaljerad beskrivning följer här. Efter att jag exporterat alla kontakter från Yahoo till en csv-fil gick jag till Gmail -> Contacts -> More actions -> Import. För att kunna ångra importen kryssade jag i "Also add these imported contacts to: New Group" som jag  namngav Facebook. Importen gick blixtsnabbt och Google var även vänlig nog att slå samman några kontakter som jag redan hade. Ändå verkade många kontakter finnas dubbelt så jag valde More actions -> Find and merge duplicates. Google hittade då många kontakter och efter att ha kollat lite snabbt att allt såg bra ut klickade jag på merge. Vid det här lagt blev jag lite svettig och trodde jag mergat flera personer till samma kontakt och sabbat min kontaktlista. Då jag använder samma kontaktlista i min Google-mobil återställde jag kontaktlistan till så som den såg ut en timme tidigare och gjorde samma sak en gång till men lite mer noggrant. Grym funktion att kunna återställa hela kontaktlistan! 🙂

Först trodde jag inte kontakterna synkats till Google+ eftersom bara 32 av ca 360 kontakter visades på "Hitta och bjud in"-fliken, men efter ett tag dök de ändå upp 🙂 Kanske hände något när jag gick till sidan för att hantera kretsar via mitt namn (högst upp till höger) -> kontoinställningar -> profil och sekretess -> Delningar -> Hantera kretsar.

Enda nackdelen med denna metod är att det finns en del personer som inte vill dela med sig av sin e-postadress på Facebook. Denna behövs för att kunna lägga till en kontakt i Google+ och därmed kan du inte importera denna.

11Jul/110

Göra om fysisk dator till vhd

Jag har nyligen bytt dator men ville ha kvar den gamla exakt som den var fast utan fysisk hårdvara. Då kan man omvandla den till en VHD med hjälp av verktyget disk2vhd. Allt fungerar bra men om du har hårddiskar större än 137,5GB kommer Virtual PC inte kunna attacha din viretuella hårddisk.

Det du får göra då är att minska partitionernas storlek i diskpart eller Computer Management -> Disk Management. Jag följde denna guide från wisefaq. När det är klart måste ett tredjepartsprogram köras som komprimerar (kastar bort) en del av det tomma utrymmet. Jag använde VHD Resizer.

4Jul/110

Loopa över stored procedures

Idag behövde jag exekvera en Stored Procedure några tusen gånger för att korrekt kunna plocka bort några poster inklusive relaterad data. För att kunna göra detta använde jag mig av följande loop i SQL Server Management Studio.

declare @counter int
set @counter = 0
while @counter < 10
begin
set @counter = @counter + 1
exec pr_StoredProcedureName @counter
end
22Jun/110

Illegala tecken från Sharepoint vid webbtjänstanrop

För att göra anrop från en extern klient kan man använda Sharepoints webbtjänster, men vissa av dem är för avancerade för att använda WCF Test Client som hänger med VS 2008/2010 eller Web Service Studio på Codeplex. Nyligen hittade jag ytterligare ett program som heter SharePoint Utilities for Developers (SPUD). I det programmet får man hjälp med att göra en massa saker såsom att bygga och verifiera att CAML är korrekt skriven.

Sist jag hade användning för programmet var när en lista med filer inte kunde hämtas från Sharepoint via GetListItems pga ett illegalt tecken (ascii 15, carriage return). Jag trodde först det var fel på min kod men SPUD visade samma fel. Problemet när jag testade var att felet kastades att den autogenererade asmx-kodklassen som jag inte har någon kontroll över och jag kan inte be Sharepoints webbtjänst att sluta skicka illegala tecken i sin XML...

För att få veta vilket dokument det var som hade det konstiga tecknet laddade jag ner och startade Fiddler2 samt SPUD. Letade sedan upp min lista, högerklickade på den, valde Get List Items, lade in min CAML fråga och körde. Fiddler fångade svaret från Sharepoint och jag kunde se XML-svaret jag fick tillbaka. För att hittade det felaktiga tecknet körde jag W3Validator. Då såg jag vilka tecken som var illegala och kunde lokalisera vilken fil som orsakade felet.

I mitt fall var det metadata på en wordfil som hade _x0015_ i något metadatakommentarsfält. När jag tog bort _x0015_ från kommentaren försvann problemet.

Hur man kan undvika problem i framtiden har jag ingen aning om men just nu fungerar det i alla fall igen! 🙂

8Mar/110

Bra tillägg till Google Chrome

Min favoritläsare är Mozilla Firefox tack vare alla bra tillägg, att de följer standarder bra och att de länge drivit utvecklingen för webbläsare framåt. Som utvecklare av webbapplikationer är det dessutom bra att använda samma webbläsare som användarna gör 🙂

Men på sistone har andra webbläsare dykt upp som också gör ett mycket bra jobb. En av dessa är Google Chrome och idag tittade jag lite snabbt på dess tillägg. Förra gången jag gjorde detta kunde man inte installera dessa på ett smidigt sätt (länge sedan) men nu är den mer mogen.

De första riktigt schysta tilläggen jag hittade var:

  • Adblock Plus - Plockar bort nästan all reklam från ex. Aftonbladet vilket resulterar i att sidan både blir mer lättläst och laddas snabbare
  • Facebook Photo Zoom - Visar den större bilden av foton när man håller musen över en miniatyr på ett riktigt snyggt sätt
  • KB SSL Enforcer - Ser till att t.ex. Facebook alltid använder en krypterad anslutning när det går. Annars kan en hacker som sitter på samma trådlösa nätverk som dig på ett enkelt sätt kapa din session och låtsas vara du.

Det finns mycket annat intressant men detta var vad jag installerade vid första besöket.

4Mar/110

Serialisera objekt till json med camelCase

För att serialisera ett objekt till json i MVC3 kan man använda Json(), men då skapas objektet som serialiseras med fel namn i JavaScript där camelCase används. För att fixa detta kan man använda DataContractJsonSerializer. Här är min lösning:

public class JsonHelper
{
    public static string Serialize<T>(T obj)
    {
        var serializer = new DataContractJsonSerializer(obj.GetType());
        var ms = new MemoryStream();
        serializer.WriteObject(ms, obj);
        string retVal = Encoding.UTF8.GetString(ms.ToArray());
        ms.Dispose();
        return retVal;
    }

    public static T Deserialize<T>(string json)
    {
        T obj = Activator.CreateInstance<T>();
        var ms = new MemoryStream(Encoding.Unicode.GetBytes(json));
        var serializer = new DataContractJsonSerializer(obj.GetType());
        obj = (T)serializer.ReadObject(ms);
        ms.Close();
        ms.Dispose();
        return obj;
    }
}

Objektet som skall serialiseras behöver några extra taggar på sig ex:

[DataContract]
public class Person
{
    [DataMember(Name="firstName")]
    public string FirstName { get; set; }

    [DataMember(Name="lastName")]
    public string LastName { get; set; }
}

För att serialisera/deserialisera skriver man så här:

var myPerson = new Person()
{
    FirstName = "John",
    LastName = "Doe"
};

// Serialize
string json = JSONHelper.Serialize<Person>(myPerson);

// Deserialize
myPerson = JSONHelper.Deserialize<Person>(json);

Koden är i princip identisk med http://pietschsoft.com/post/2008/02/NET-35-JSON-Serialization-using-the-DataContractJsonSerializer.aspx. Jag har bara ändrat från default encoding till utf8.

26Feb/110

Lång tid att ladda sidor i Firefox med Visual Studio

Jag upptäckte för någon månad sedan att när man kör VS2008/VS2010 för att utveckla webbapplikationer tar det nästan en sekund innan sidorna börjar laddas. Dumt tänkt jag och fortsatte arbeta som om inget hade hänt. Några veckor senare stötte jag på sidor i projekt som tog flera sekunder att ladda i Firefox medan de laddades direkt i IE. För att se vad som tog tid använde jag det mycket användbara verktyget Firebug i Firefox.

Efter att ha googlat lite hittade jag en lösning som sa att detta är en bugg när man kör Firefox mot den inbyggda webbservern i Visual Studio. Tydligen har det något att göra med att Firefox frågar efter en IPv6 adress men får en IPv4 adress tillbaka. Vad jag förstår är inte detta en bugg i Firefox utan en bugg i DNS servern som finns i VS inbyggda webbserver.

Buggen kan enkelt undvikas genom att ändra en inställning i Firefox så att den alltid använder IPv4 mot localhost. Skriv about:config i adressfältet, leta upp network.dns.ipv4OnlyDomains och skriv in en kommaseparerad lista med domäner där FF inte skall använda IPv6. Om det inte står något där ska det alltså stå localhost. Du kanske behöver starta om Firefox för att ändringen skall slå igenom.

En annan lösning är att sätta network.dns.disableIPv6 men då stänger man av IPv6 för alla webbsidor och inte bara localhost och påverkar alltså inte bara sin utvecklingsmiljö.

network.dns.disableIPv6
Sida 2 av 3123