The PIT
Röster från ITM-koncernen.

Intressant seminarium om välfärdsteknologi

December 20, 2011 16:34 by David Woxberg

I onsdags deltog jag vid ett seminarium om välfärdsteknologi i riksdagen.

Seminariet gav olika perspektiv på hur den offentliga sektorn kan dra nytta av modern teknik.

En av talarna var Marie Andersson, lärare på Gotland, som berättade om hur hon använder Internet som en del av undervisningen.

Seminariet arrangerades av IT&Telekomföretagen, Sveriges Kommuner och Landsting, Christer Winbäck (fp) och Monica Green (s).

Här kan du kolla in webbplatsen Välfärdsteknologi, som ger flera praktiska exempel på hur IT kan användas i välfärden.


Tags:
Categories: Tips
Actions: E-mail | Permalink | Comments (0) | Comment RSSRSS comment feed

LINQ-tips

April 21, 2011 09:39 by Stefan Karlsson

Satt precis med ett litet projekt där jag laborerade med data från en GPS-puck. Datat skickade jag till en listbox för att se vad som kom från GPS-pucken:

image

Jag ville kunna spara datat till en fil och började då, precis som jag gjort 1000-tals gånger tidigare, att göra en loop som loopade igenom alla items i listboxen för att skriva ner datat till en fil. Det går självklart att göra på massor av olika sätt, nedan är de två vanligaste.

'Gammal metod 1, FOR EACH/NEXT
Dim FileContent1 As String = ""
For Each i As String In ListBox1.Items
    FileContent1 &= i & vbCrLf
Next
IO.File.WriteAllText(Application.StartupPath & "\gpsdata.txt", FileContent1)

'Gammal metod 2, FOR/NEXT
Dim FileContent2 As String = ""
For p As Integer = 0 To ListBox1.Items.Count - 1
    FileContent2 &= ListBox1.Items(p) & vbCrLf
Next
IO.File.WriteAllText(Application.StartupPath & "\gpsdata.txt", FileContent2)

 

Men så kom jag och tänka på LINQ.
Det borde gå att göra ett LINQ-fråga som skapar en array av listitems som gör att jag kan skriva ner allt till en fil med endast en rad kod. Genom att använda IO.File.WriteAllLines som tar en array av strängar och skapa en LINQ-fråga som returnerar en array av strängar från listboxens items så borde det alltså fungera, jag provade med nedanstående kod:

IO.File.WriteAllLines(filename, (From p As String In ListBox1.Items Select p).ToArray)

 

Vilket fungerade hur bra som helst! Men LINQ-frågan går att korta ner, “Select p” är vedertaget i LINQ-frågan så man behöver inte ange det, vilket gör att vi kan korta ner raden till detta:

IO.File.WriteAllLines(filename, (From p As String In ListBox1.Items).ToArray)

 

Slutsats

LINQ är häftigt, det är rent ut sagt sexigt! Men tänk på att det ibland kan vara svårt att förstå LINQ-kod, så även om den gör koden kompaktare så kan den även göra koden svårare att läsa i vissa fall, samt att man får tänka på LINQs “late evaluation”-teknik som kan ställa till det i andra sammanhang. Men i det här sammanhanget så tycker jag att LINQ gör koden mer lättläst och tar bort onödiga rader kod.

Det finns ett talesätt: Varje rad kod du INTE skriver är en rad du inte kan få en bugg i.

Over and out / Stefan


Tags:
Categories: .Net | LINQ | Tips
Actions: E-mail | Permalink | Comments (0) | Comment RSSRSS comment feed

iPad - det nya säljverktyget

December 13, 2010 09:41 by David Woxberg

Wall Street Journal har en intressant artikel om iPads roll i läkemedelsindustrin.

Enligt artikeln används iPad av försäljare som pitchar sina produkter till doktorer.

En av fördelarna med iPad anses vara att det går så snabbt att starta den. Tack vare detta kan säljaren göra sin pitch medan åhörarens uppmärksamhet fortfarande finns kvar.


Tags:
Categories: Teknik | Tips
Actions: E-mail | Permalink | Comments (0) | Comment RSSRSS comment feed

Alfaversion av jQuery Mobile har släppts

October 18, 2010 15:52 by David Woxberg

För en tid sedan berättade jag om jQuery Mobile - en vidareutveckling av javascript-ramverket jQuery som underlättar skapandet av mobila webbapplikationer.

Nyligen släpptes Alpha 1-versionen av jQuery Mobile 1.0. Den kan laddas ner här.


Android UI Utilities - grafiska verktyg för app-utvecklare

September 28, 2010 17:16 by David Woxberg

Ett intressant gränssnitts-paket för Android-utvecklare har släppts i betaversion. Android UI Utilities innehåller tre verktyg som kanske får jobbet att gå lite lättare och snabbare:

  • Med UI Prototyping Stencils går det att bygga Android-prototyper med hjälp av verktyget Pencil.

  • Android Asset Studio skapar Android-ikoner utifrån befintliga texter och bilder.

  • Android Icon Templates innehåller mallar för det populära bildredigeringsprogrammet Photoshop.

Android UI Utilities finns att ladda ner i betaversion hos Google Code. På nedladdningssidan kan du också titta på en demonstrationsvideo. 

IDG har en artikel i ämnet.


Utveckla direkt i molnet med Bespin.

January 4, 2010 12:59 by Daniel Nilsson

Bespin från Mozilla Labs är en utvecklingsplatform för webbapplikationer helt och hållet byggt i HTML 5. Verktyget är en så kallad molnet-tjänst och för att kunna använda den behöver man endast en modern webbläsare och ett konto(som är gratis). Det finns många intressanta funktioner i Roadmappen för detta verktyg, bland annat kommer man att kunna följa utvecklare i sitt Team och "spela upp" hur utvecklingen framskrider. Detta är bra ifall någon är sjuk och man snabbt behöver komma in i koden. Det finns även versionskontroller och chat direkt i Bespin. Prestandan är mycket bra tack vara att den bygger på HTML 5 och det känns faktiskt som om man arbetar i en "vanlig" installerad mjukvara.

https://bespin.mozilla.com/

Jag rekommenderar intresserade att se denna video där 2 killar från Mozilla Labs berättar mer om projektet.

http://www.youtube.com/watch?v=Ps6GBLlSGLs&feature=player_embedded 

 


Fem missade möjligheter

September 25, 2009 15:30 by David Woxberg

Den 15 september höll ITM, Apple och Telia ett affärsseminarium om iPhone i Göteborg med över 80 deltagare. Där berättade David Woxberg från ITM om fem missade mobila möjligheter. Du kan läsa mer om dessa möjligheter på ITM:s hemsida.


Tags:
Categories: iPhone | Mobilt | Seminarie | Teknik | Tips
Actions: E-mail | Permalink | Comments (0) | Comment RSSRSS comment feed

appStore för resten av världen

February 15, 2009 09:56 by Daniel Nilsson

Succén med Apple´s iPhone är ett faktum och utvecklare världen över kan på en enkelt sätt distribuera och ta betalt för sina spel och applikationer.
Dessutom har många faktiskt tjänat grova pengar på detta.

Varför finns det inte en motsvarande "appStore" för att sälja/köpa applikationer via internet ?

Tänk bara på alla dessa små Flash-spel som det kryllar av på internet och vad trevligt det skulle vara för alla utvecklare av dessa att kunna få betalt för sina insatser.

Jag tycker att det är dax att inse att gratis inte alltid är godast.

Med detta blogginlägg vill jag uppmana Adobe, Apple, Microsoft, Google och alla andra kreativa företag att ta tag i detta !

 


Tips och tricks i VB, MSSQL och Visual Studio

October 1, 2008 11:07 by Stefan Karlsson

Man lär sig nya saker varje dag. Ibland saker som funnits framför en hela tiden utan att man vetat om det eller orkat ta reda på det. Så här kommer några tips och tricks över ett par av de lite mer dolda eller underanvända funktionerna som finns i VB, MSSQL och Visual Studio. 

Block selection

En funktion jag tycker är händig att ha är att hålla ner ALT när jag väljer text i editorn, då blir det “block selection” istället för “row selection”. Bra att ha i många fall.

image

Imports Aliases

Man kan använda imports ihop med ett alias, antar att det är värdefullt om man har namespaces som krockar med varandra (Kommentera gärna om ni vet någon vettig anledning till att använda detta.)? Så här funkar det iaf:

Imports S = System.String
Public Class Form1    
    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        'dimensionera upp X som en system.string
        Dim x As S = "Hello"
        'Använda system.string utifrån aliases
        MsgBox(S.Format("Hello {0}", "Stefan"))
    End Sub
End Class

Catch when

Man kan lägga till filtrering vid Try/Catch, finurligt och ganska underskattad feature:

Imports System.IO
Imports System.IO.File
Imports System.IO.Path
Public Class Form1    
    Public Function ReadFile(ByVal FileNameAndPath As String, Optional ByVal bRetry As Boolean = False) As String
        Try
            Return ReadAllText(FileNameAndPath)
        Catch ex As FileNotFoundException When Not bRetry   'Prova igen, men bara en gång.   
            'Prova att leta efter filen i programkatalogen istället för medskickad path.
            Dim TryPath As String = My.Application.Info.DirectoryPath & "\" & GetFileName(FileNameAndPath)
            Return ReadFile(TryPath, True)
        Catch ex As IOException
            'Log exception
            Return Nothing
        End Try
    End Function
End Class

Using

För att säkerställa att objekt dispose:as m.m. så är Using bra att använda. Speciellt vid filhantering, comportsläsning, grafikobjektshantering m.m.

Using går att använda på alla typer som implementerar IDisposable.Dispose.

Public Class Form1
    Public Structure CustomerStruct
        Implements System.IDisposable
        Public FirstName As String
        Public LastName As String
        Public Age As Integer
        Private disposed As Boolean
        'Leker att customerstrukturen är IDisposable för att kunna använda using på Customerobjektet.
        Public Overloads Sub Dispose() Implements IDisposable.Dispose
            Dispose(True)
            GC.SuppressFinalize(Me)            
        End Sub
        Private Overloads Sub Dispose(ByVal disposing As Boolean)          
            If Not Me.disposed Then                
                ' Rensa upp unmanaged resurser här
                disposed = True
            End If
        End Sub
    End Structure
    Private Sub Form1_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
        Using MyForm As New Form
            MyForm.Text = "Nytt formulär"
            MyForm.FormBorderStyle = Windows.Forms.FormBorderStyle.FixedDialog
            If MyForm.ShowDialog(Me) = Windows.Forms.DialogResult.OK Then
                'Wee, användaren klickade OK
            Else
                'Attans, användaren klickade inte OK!
            End If
        End Using
        Using MyCustomer As New CustomerStruct With {.FirstName = "Stefan", .LastName = "Karlsson", .Age = 39}
        End Using
    End Sub
End Class

sp_msforeachtable

Riktigt trevlig funktion i MSSQL som gör att man kan köra ett kommando för varje tabell i databasen. I nedanstående rad så ersätts alltså frågetecknet med tabellnamnet. Så med en enda rad kan man loopa igenom alla tabeller och t.ex. som i nedanstående fall hämta en rad från varje tabell.

exec sp_msforeachtable "select top 1 * from ?"

Utöver sp_msforeachtable finns även sp_foreachdb som gör samma sak fast går igenom alla databaser på servern.

EXEC master..xp_fixeddrives

Ta reda på vilken hårddisk som har mest uttrymme kanske kan vara händigt?

Exempel på resultat:

drive MB free    
----- -----------
C     24757
E     8217

(2 row(s) affected)

Döda alla connections till en databas

Use Master
Go
Declare @dbname sysname
Set @dbname = 'name of database you want to drop connections from'
Declare @spid int
Select @spid = min(spid) from master.dbo.sysprocesses
where dbid = db_id(@dbname)
While @spid Is Not Null
Begin        
     Execute ('Kill ' + @spid)        
     Select @spid = min(spid) from master.dbo.sysprocesses        
     where dbid = db_id(@dbname) and spid > @spid
End

Tipsa!

tipsa gärna om fler saker.


Tags:
Categories: Programmering | Tips
Actions: E-mail | Permalink | Comments (0) | Comment RSSRSS comment feed