Du bläddrar just nu i kategoriarkivet för ‘Programmering’
Hmm, tror jag hittat en bugg i WordPress-bloggen. Dagens inlägg syns inte där alla inlägg skall vara listade men den syns i listan över de senaste inläggen och om jag väljer månad eller datum. Det är väl månadsskiftet som råddar till det och får se om det ordnar sej då jag lägger till detta inlägg.
Edit: Jep, det gjorde det. Nu syns alla inlägg som de ska.
Jag hade en liten bugg i min SMTP COM Interop.. Den hanterar flera bilagor (attachments) och enligt vad jag snabbt tittade upp på nätet så borde de ha räckt att köra .Dispose på MailMessage-objektet för att fria filen som jag satt som bilaga. Det gjorde det dock inte, utan filen gick inte att radera och då det gamla VB6 programmet som använder komponenten försöker radera bilagorna den satt till e-posten, så blev det ju strul med ”Permission denied” felmeddelanden.
Annars var det ju klart och tydligt vad det var frågan om men i all hast blev jag bortblandad då det varit så mycket andra rättighetsfel med Windows 7 och COM interop:en, så jag sökte först felet på fel ställe, men till sist kom jag på att varje bilaga är ett eget objekt som man måste köra dispose på för att fria upp den. Man kan alltså inte alltid lita på det som står på nätet och samma gäller även denna blogg. Lita inte okritiskt på det jag skriver, utan kolla upp det med andra källor också, för jag kan ha fel. Även om det är sällan..
För er som tänker programmera SMTP med .Net, när ni lägger till bilagor till e-posten så måste ni fria upp bilagan separat. Se exemplet nedan (jag lämnade bort största delen av koden för jag orkar inte skriva om den men om nån är intresserad kan jag lägga upp ett komplett exempel):
Dim oAtt As Attachment
…
MailMessage.Attachment.Add(oAtt)
…
oAtt.Dispose
Igår gjorde jag en COM Interop DLL med Visual Studio 2008 för ett Visual Basic 6 program som inte kan skicka e-post med MAPI i Windows 7. Jag gjorde en liten DLL som skickar via SMTP och på så sätt fungerar det, därtill utan Outlooks säkerhets verifieringar, vilket gör det lättare för användarna. Själva DLL:en gick lätt och snabbt att koda men att få det testat var knepigare. Windows 7 ställde till med en hel del huvudbry.
Första problemet var att det inte gick att registrera COM Interopen med RegAsm om man inte körde med ”Run as administrator”. Nå det gick lätt att fixa genom att göra en batch-fil med kommandot, som jag sedan körde med ”Run as administrator”, men det konstiga var att det ibland fungerade direkt genom att bara kompilera.
Nästa problem var att kompileringen inte kunde byta ut DLL:en mot den nya för att den var i användning av någon process. Jag vet inte varför den var i användning, för det borde den inte varit, men detta gick också att kringå genom att sätta datorn i suspended mode och sedan väcka upp den igen. Ett jäkla fibblande men det fungerade och jag hade bråttom, så jag hade inte tid att reda ut det ordentligt.
Sista problemet var kanske det värsta av dem. Jag hade två projekt, den ena var själva Interop:en som hanterade SMTP och ett annat projekt som använde den. Problemet var att ibland gick referensen till Interop:en sönder men det fixade sej ofta genom att först sätta datorn i suspended mode och sedan starta igen, för att sedan kompilera om DLL:en. Ibland gick det att kompilera flera gånger innan referensen gick sönder men ibland gick den sönder direkt jag kompilerade. Igen gick det att gå runt problemet genom att fibbla..
Vart och ett problem var inte speciellt besvärlig, eftersom de gick att gå runt, men när det hela tiden strulade, så blev det ganska tröttsamt. Sedan var det ju naturligtvis problem med att debugga koden i VB6, eftersom DLL:en måste vara i samma katalog som exe-filen finns. Jag måste erkänna att jag inte vet var den ska vara för att fungera när man exekverar via Visual Studio men i.a.f fungerade den kompilerade koden bra. Det räckte alltså att registrera TypeLibrary:n och sedan ha Interop:en i samma katalog som själva programmet.
Tidsbrist är det värsta. Man har inte tid att reda ut problemen ordentligt, så att man skulle verkligen lära sej något av dem och nästa gång veta hur man ska göra för att det ska gå rätt. Windows 7 ställer till med en hel del extra huvudvärk genom att alltid klaga om rättigheterna. Irriterande när själva kodandet går snabbt men de andra problemen tar tiofalt mera tid att reda ut. Fördelen med att nu köra e-posten via SMTP, är att nu behöver man inte klicka bort Outlooks säkerhetsverifiering. Nackdelen är konfigureringen av systemet. Tidigare hämtades allt via Exchange Server men nu måste man konfigurera det själv. Ska göra så att man kan hämta från Exchange om man vill men då får man säkerhetsverifieringen tillbaka..
Jag övervägde att göra allt med ExtendedMAPI, t.ex. med Outlook Redempition, men det var lite krångligt att få det att fungera och licensen kostar (199$). Priset är ju inget problem, då firman betalar, men jag ville inte ha byråkratin som kommer med det. Alternativet var att göra en wrapper själv men då måste jag koda med C++ och det har jag inte gjort på 15 år och felet måste fixas denna vecka. Alternativet med att göra en Interop som skickar via SMTP var då det snabbaste och säkraste. Jag kodade med VB.Net men jag ska gå över till C#. Övervägde att göra det nu redan men som tur gjorde jag inte det, eftersom problemen hade antagligen fått mej lite på villospår.
Nå, känns bra att få året avslutat med att ha fixat ett besvärligt problem.
Vad kan man säga? Den som skrev recensionen är hopplöst borta vad gäller telefoner och datorer, eller kanske han bara hade en dålig dag, men hur som helst att påstå att Nokia N900 är för businessfolket är fel. För dem gäller fortfarande Nokias E-serie, eller nån motsvarande, för den är bäst på det.
Nokia N900 är kanske inte för ”kidsen”, det är den för dyr för, men den är för programmerarna som är sura över iPhones låsta system och ingenjörer som vill kunna surfa och spela musik. Nån seriös businesstelefon är den inte. De flesta VD:n skulle nog bli tokiga med den för den är inte lika lättanvänd som vissa andra telefoner.
Att klaga på att det inte finns program är väl lite onödigt då den bara funnit ute nån vecka. Via Ovi kan man kanske inte köpa men det kan man t.ex. via Maeomo.org och det finns en del program att ladda ner. T.ex. eCoach som håller reda på motionerandet. Det kommer att komma fler program och potetentiellt mera än till iPhone då dess låsta system hindrar en del från att göra program.
Själv ska jag testa göra nåt program åt Maemo, bara jag hittar tid och nån idé vad jag ska göra för nåt. Nokia N900 har sina brister. Den är inte lika lätt att använda som iPhone och skärmen är inte lika bra. Den fungerar inte lika bra som telefon jämfört med E-serien men den har också fördelar såsom mycket bra webbläsare och öppen SDK. Apples låsta system suger, fast själva telefonen inte gör det, och därför är jag glad över Nokia och Maemo. Så är också andra programmerare som jag känner, för jag vet en del som skaffat iPhone men blivit besvikna på den.
Önskar att de som skrev recensionerna lite bättre förstår vad de egentligen skriver om. Nokia N900 är för den som är intresserad av teknik eller programmering. För dem som kan använda huvudet och ta reda på saker och ting själv. Det tar ett tag innan man blir van med den men det är en bra apparat. Jag kallar den så då jag inte är säker på om den är mera telefon eller mera dator. Ska man vara riktigt ärlig så är den inte så bra på vilketdera men ändå bättre än de flesta andra telefoner.
Ett kort tips. För de som vill ha en bra telefon. Köp Nokias E-serie. De är de bästa telefonerna som finns. För de som vill ha en bra multimedia telefon, alltså telefon med kamera, video, musikspelare o.s.v. Köp en Nokia N900 om ni också är teknikintresserade men om ni är lata drönare som bara vill visa upp en fin telefon, eller bara vill ha en telefon som är lätt att använda, så köp en iPhone eller någon liknande.
Varför hittar alla buggar just innan semestern eller veckoslut? Är det bara Murphys lag som spökar. Jag har märkt det tidigare, alltid innan en längre ledighet dyker det upp problem just innan dagen är slut.. Fredagar kl 14 är en kritisk tid, då dyker det ofta upp någon som hittat ett kritiskt fel som måste fixas omedelbart, annars går världen under och någon försäljare lämnar utan provision.
Vore trevligt att nångång få sakta varva ner inför semestern istället för att tokstressa in i sista minuten.

Senaste kommentarer