tisdag 23 augusti 2011

Tester av Class i ASP.NET


Jag vill ha gemensam kod för flera ASP.NET program (eller sidor). Hittills har jag löst det genom att placera gemensam kod i en Masterpage. Det har fungerat ok, men det har blivit oöverskådligt.

Därför har jag undersökt hur man kan använda metoden med App_Code, dvs att gemensam kod placeras i Visual Web Developers mapp App_Code. Sådan kod ska sedan kunna nyttjas av olika program.

Först skapade jag en fil med högerklick på App_Code, och sedan på Add New Item och därefter på template Class. Filen fick namnet ClassA.

I denna fil skapade jag sedan en Class

Public Class ClassA
end Class

I denna Class placerade jag en function som adderar två tal.

Public Shared Function Add(ByVal x As Integer, ByVal y As Integer) As Integer
Add = x + y
End Function

Public betyder att den kan anropas från huvudprogrammet. Egenskapen shared betyder att jag slipper att skapa en objektreferens. Funktionen kan användas på detta enkla sätt med shared:

Dim test As Integer
        test = ClassA.Add(1, 2)

Utan Shared kommer felmeddelande.

I nästa test skapade jag en sub i stället för en funktion. Resultat fick därmed returneras via en parameter som då måste vara ByRef, dvs innehålla en adress till parametern.

Public Shared Sub Add2(ByVal x As Integer, ByRef xx As Integer)
xx = x
End Sub

Subben anropades med
        Dim x As Integer
        ClassA.Add2(5, x)
        testClass += x

En tredje test är mer komplicerat. Nu ville jag läsa cookies och returnera värdet tillbaka till huvudprogrammet.

Public Sub GetAccount()
end sub

Jag skapade sedan två variabler utanför subben för att testa två olika sätt att få resultatet

Private AccountUserName As String
Public AccountPassword As String

Inne i subben placerade jag övriga variabler:

Private AccountUserName As String
Public AccountPassword As String
Public Sub GetAccount()
       Dim AccountId As Integer
end sub

Det riktigt kluriga var att komma fram till hur man läser cookies i en class. I ett vanligt program skriver man helt enkelt

If Not Request.Cookies("BlaBla") Is Nothing Then
AccountId = HttpContext.Current.Request.Cookies("BlaBla") ("id")
                AccountUserName = Request.Cookies("BlaBla")("UserName")
                AccountPassword = Request.Cookies("BlaBla")("Password")
end if

Men det ger felet "'Request' is not declared. It may be inaccessible due to its protection level.". Det visade sig att referensen till Request måste förtydligas och det kunde göras med "HttpContext.Current". Tyvärr är jag oklar över varför det fungerar, men det gör det.

Den färdiga subben har därmed följande utseende:

If Not HttpContext.Current.Request.Cookies("BlaBla") Is Nothing Then
'http://forums.asp.net/t/1699411.aspx/1
                AccountId = HttpContext.Current.Request.Cookies("BlaBla")("id")
                AccountUserName = HttpContext.Current.Request.Cookies("BlaBla")("UserName")
                AccountPassword = HttpContext.Current.Request.Cookies("BlaBla")("Password")
End If

Länken är till denna sida där jag hittade lösningen.

Nu finns det som sagt ytterligare sätt att hämta resultatet från subben:

1) Classen kompletteras med en Property

Public ReadOnly Property Prop_AccountUserName As String
Get
Return AccountUserName
End Get
End Property

Den får huvudprogrammet tag på med koden

ShowMessage.Text = sc.Prop_AccountUserName

2) Huvudprogrammet läser en publik variabel i classe,

ShowMessage.Text += sc.AccountPassword

Nu gäller det att undersöka om App_Code och Classes gör livet lite enklare.

torsdag 11 augusti 2011

MyHeritage gör intrång i din dator

Har just installerat en ny version av MyHeritage. Och igen tar sig programmakarna friheten att modifiera mina webbläsare. När jag startar en webbläsare så har standardsöksidan ändrats! MyHeritage har kladdat din sin logotype och lagt till några som det verkar oskyldiga länkar.




Men så oskyldiga är nog inte länkarna. Genom att klicka på någon av länkarna kan MyHeritage logga vad du söker efter på Internet, mm. MyHeritage informerar inte om detta vid nedladdningen av programvaran, informerar inte om det när man söker med sin vanliga webbläsare och informerar inte om hur man kan ta bort spionkoden.

Men det finns många andra som ger den hjälpen:
Help! How To Remove Search.myheritage Results?
How to Remove MyHeritage Search Page

Enligt Wikipedia ändrar MyHeritage sökningar med Google för att styra sökningar till sin egen namndatabas. Det är möjligt att det finns ett gott syfte, men metoden är oacceptabel. Det finns ingen anledning att använda MyHeritage då det finns många alternativ här och här.

Nu är det bara att städa upp efter intrånget. Tyvärr måste alla installerade webbläsare gås igenom.

Chrome
Klicka på verktygssymbolen, Alternativ och ersätt länken till myheritage med http://www.google.se/

Firefox
Gå till den startsida du vill ha, klicka verktyg, inställningar, töm fältet startsida och klicka på  
använd aktuell sida (ta bort länken till myheritage om den står kvar) och klicka på OK.

Safari
Denna webbläsare lyckas inte Myheritage infektera vad jag kan se.

Opera
Klicka på Opera i övre vänster hörn, välj inställningar och sedan inställningar igen och ta bort länken till MyHeritage.

Internet Explorer
När IE startar så skriv in den startadress du vill ha.IE frågar om du vill göra denna sida till din startsida (i stället för Myheritage) och klicka då på Ja.

När det nu är gjort så ska jag ta bort mitt konto hos MyHeritage och ta bort deras program.

Hjälp gärna till att sprida kunskap om hur Myheritage agerar!

tisdag 9 augusti 2011

Bloggers editor är inget vidare


Bloggers nya editor fungerar inte bra. Det går inte att återställa ett stycke till standardtypsnytt när man klickar på Tx. Men går man över till HTML och sedan till skrivläge så får stycket standardtypsnitt.

Det är illa att man inte kan se en hel rad utan måste scrolla horisontellt hela tiden.

Det är mycket stor skillnad mellan formateringen vid inskrivning och vid förhandsgranskning. T.ex. kan en radmatning i inskrivningen blir ett flertal i förhandgranskningen.

Det visar sig att Blogger lägger in ett flertal BR som inte tolkas i inskrivningen med att det sker vid förhandgranskning. Hur kan Google göra så enkla fel?

Inte heller fontstorleken återges riktigt från inskrivning till förhandvisningen.

Detta är några starka skäl till att inte använda nya Blogger.

Bluffmail från "Visa&MasterCard"

Så har det hänt igen. Någon har försökt att att lura av mig mitt kontonummer till Visa. Och som vanligt sker det på ett klumpigt sätt. Bluffmakaren har inte lyckats slå upp vad fortsätta heter på svenska.


Kommer någon luras? Ja, det går inte helt att uteslutas. 

Vad gör utställaren av kortet SEB? Inget vad jag kan se på deras webbsida, men jag har skrivit  till SEB och frågat vad de gjort eller tänker göra. 

Polisen säger på sin webb att man vid konkret brott alltid ska göra en polisanmälan. Men det framgår inte vad ett konkret brott är: Ska det vara genomfört? Eller räcker det med ett försök?

Google irriterar med sin multiinloggning

Som många andra har jag flera epostadresser och brevlådor. Nu vill Google att jag ska gå över till multiinloggning för att kunna hantera flera olika epostadresser i samma webbläsarsession. Så här skriver de:
Du kan använda multiinloggning med dessa produkter från Google:
  • Kalender
  • Kod
  • Ekonomi
  • Gmail
  • Google Moderator
  • Google+
  • iGoogle
  • Nyheter
  • Reader
  • Webbplatser
  • Voice
Google Apps-konton: Dokument [?]
Multiinloggning kommer att avaktiveras för det konto du loggar in på. Genom att logga in bekräftar du att du förstår hur man använder multiinloggning:

  • Det konto som du för närvarande använder visas längst upp på de flesta av Googles produktsidor, eller längst ned på de flesta sidor om mobilenheter. Kontrollera alltid att du använder det konto du vill.
  • Alla produkter från Google stöder inte multiinloggning. När du växlar mellan produkter från Google kan det konto du för närvarande använder förändras.
  • Produkter från Google som inte finns i ovanstående lista kommer som standard att föras över till det första konto som du loggade in på i ditt aktuella webbläsarbesök.
  • Mail offline och Kalender offline kommer att avaktiveras. Du kan förlora e-post som inte har skickats. Läs mer
Läget är att jag har loggat in med min vanliga espostadress och tänker logga in på epostadressen som används i ett konsultuppdrag. 
  • Vad betyder att "multiinloggning som att avvaktiveras"?  
  • Vad betyder det att "det konto du för närvarande använder förändras"? Och vad menas med att produkter som inte finns med i listan ovan förs över till den epostadress jag loggat in med.
  • Vad är det för produkter som "inte" är med i listan? Och vad betyder det att de som som "standard" förs över till det aktuella kontot? 
Nej jag förstår inte vad multiinloggning betyde så jag får läsa vidare. Men först måste jag kolla vad de menar med  ? inom hakparanteser efter Document.