Android 4 für Nexus S verfügbar

Seit gestern ist Android 4 (Ice Cream Sandwich) für das Nexus S verfügbar.

Wer nicht auf das automatische Update over the air warten will, kann das Update-Paket bereits hier herunterladen.

Die 128 MB große Datei muss dann einfach auf den internen Speicher des Nexus S kopiert werden. Anschließend schaltet man das Nexus S aus und startet es neu während man "Volume up" und "Power" gedrückt hält.

Nun wählt man "Recovery" aus und bestätigt dies mit der "Power" Taste. Wenn ein Warnungs-Symbol kommt, muss man wieder "Volume up" und "Power" drücken. Es erscheint ein Menü in welchem man "apply update from /sdcard" auswählt. Anschließend selektiert man die runtergeladene ZIP-Datei.

Nach einigen Minuten ist das Update installiert und das Handy kann neu gestartet werden.

Quelle: xda-developers.com

Triple Core Hölle

AMD Triple Core Phenom Prozessoren vertragen sich nicht mit einem Microsoft SQL Server bzw. der Microsoft SQL Server Desktop Engine (MSDE), und schon gar nicht dem betagten SQL Server 2000. Diese mögen nämlich keine ungerade Anzahl von Prozessoren > 1. Soviel habe ich mittlerweile herausgefunden...

Nun gibt es mehrere Möglichkeiten:

  1. Hardwaretausch. Unschön bei einem nagelneuen Laptop.
  2. Aus dem Triple Core einen Dual Core oder Quad Core machen, da ein Triple Core wohl (zumindest meinen Recherchen nach) ein abgestufter Quad-Core ist. Das Freischalten des vierten Kerns war bei uns aber leider wegen einem HP BIOS nicht möglich. Mehr dazu hier. Das Deaktivieren des dritten Kerns ginge beispielsweise via MSCONFIG.
  3. Den SQL-Server in eine VM mit einem oder zwei Prozessoren auslagern.

Wir haben uns für die dritte Variante entschieden (zum einen, weil die Reduzierung der Kerne via MSCONFIG keine Auswirkung zeigte und zum anderen, weil wir dadurch noch andere Vorteile haben). Zuerst haben wir es mit dem VMWare Player probiert. Anfangs hat auch fast alles geklappt, PING von der VM zum Wirt und umgekehrt ging, nur die Ports 1433 und 1434 für den SQL Server Dienst konnten nicht kommunizieren.

Per PortQuery-Tool (Link) Tool konnte man dann auch sehen, dass die Verbindungen nicht durchkamen. Und das obwohl weder eine Firewall noch sonst irgenwas den Traffic gefiltert hat.

Interaktiver Modus von Portquery

portqry -i -n NAME_DER_VM

dann noch ein

q sql

eingeben und PortQuery testet die SQL Ports.

Manuell gehts so:

portqry -n NAME_DER_VM -p BOTH -e 1433

Mit VMWare Workstation 6.5 hat es dann überhaupt nicht mehr geklappt. Der HAL scheint die drei Kerne nicht zu mögen und verweigerte den Start des SQL Server Dienstes in der VM.

Zu guter letzt haben wir dann die VM komplett neu in Oracles VirtualBox eingerichtet und konfiguriert. Als Netzwerktyp haben wir dabei den "Host-only Adapter" mit dem Promiscuous-Modus "erlauben für allen VMs und den Host" eingestellt.

Und damit hat dann auch endlich die Kommunikation vom Wirt zum Gast SQL-Server geklappt. Das ganze hat etwa 8 Stunden gedauert.

Um die VM nun auch noch automatisch ohne Interface zu starten, kann man folgenden Befehl verwenden:

"C:\Program Files\Oracle\VirtualBox\VBoxHeadless.exe" -startvm "NAME_DER_VM"

Das Batch-Script fügt man am besten via "gpedit.msc -> Benutzerkonfiguration -> Windows-Einstellungen / Scripts (Anmelden/Abmelden)" hinzu, dann bleibt kein Konsolenfenster offen.

HowTo: Wie man User Eingaben validiert

Quelle

VCard / VCF Dateien in VB.NET erstellen

Hier eine kleine Klasse, die VCard-Dateien erstellen kann.
Wie man die Klasse aufruft, zeige ich am Ende dieses Eintrags.

Klasse VCard.vb:

Public Class VCard
 
  Private _VCardData As List(Of String)
  Public Property VCardData() As List(Of String)
    Get
      If _VCardData Is Nothing Then
        _VCardData = New List(Of String)
      End If
      Return _VCardData
    End Get
    Set(ByVal value As List(Of String))
      _VCardData = value
    End Set
  End Property
 
  Public InternalName As String
 
  Public VORNAME As String
  Public NACHNAME As String
  Public STRASSE As String
  Public ORT As String
  Public PLZ As String
  Public LAND As String
  Public TELEFONNUMMER As String
  Public TELEFAXNUMMER As String
  Public MOBILNUMMER As String
  Public MAILADRESSE As String
 
  Public Sub New(ByVal aInternalName As String)
 
    Me.InternalName = aInternalName
 
    Me.VCardData.Add("BEGIN:VCARD")
    Me.VCardData.Add("VERSION:2.1")
    Me.VCardData.Add("FN:%VORNAME% %NACHNAME%")
    Me.VCardData.Add("N:%NACHNAME%;%VORNAME%")
    Me.VCardData.Add("ADR;HOME:;;%STRASSE%;%ORT%;;%PLZ%;%LAND%")
    Me.VCardData.Add("TEL;HOME;VOICE:%TELEFONNUMMER%")
    Me.VCardData.Add("TEL;CELL:%MOBILNUMMER%")
    Me.VCardData.Add("TEL;HOME;FAX:%TELEFAXNUMMER%")
    Me.VCardData.Add("EMAIL;WORK;PREF;INTERNET:%MAILADRESSE%")
    Me.VCardData.Add("END:VCARD")
 
  End Sub
 
  ''' <summary>
  ''' Anhand der Felder werden sämtliche Informationen in VCardData durch die jeweiligen Feldwerte ersetzt
  ''' </summary>
  ''' <remarks></remarks>
  Public Sub Fill()
 
    Dim fis As System.Reflection.FieldInfo() = Me.GetType().GetFields()
 
    Dim strReplace As String = String.Empty
    Dim strSearch As String = String.Empty
 
    ' Durch jede Zeile
    For i As Integer = 0 To Me.VCardData.Count - 1
 
      ' Zeile merken
      Dim line As String = Me.VCardData(i)
      If Not line.Contains("%") Then GoTo NextLine
 
      ' Durch alle Felder
      For Each fi As System.Reflection.FieldInfo In fis
 
        strSearch = "%" & fi.Name.ToUpper & "%"
        strReplace = fi.GetValue(Me)
 
        ' Debug.Print("Replacing: " & line & " with: " & strSearch & " - " & strReplace)

        line = Replace(line, strSearch, strReplace)
 
      Next
 
      Me.VCardData(i) = line
 
NextLine:
    Next
 
  End Sub
 
  Public Sub ExportToPath(ByVal aDirectory As String)
 
    ' Mich mit Daten füllen
    Me.Fill()
 
    ' Text für VCard Datei generieren
    Dim strVCardData As String = String.Empty
    For Each line As String In Me.VCardData
      If strVCardData = String.Empty Then
        strVCardData = line
      Else
        strVCardData += vbNewLine & line
      End If
 
    Next
 
    ' Datei schreiben
    My.Computer.FileSystem.WriteAllText(aDirectory & "\" & Me.InternalName & ".vcf", strVCardData, False, System.Text.Encoding.ASCII)
 
  End Sub
 
End Class

Klasse VCardList.vb:

Public Class VCardList
 
  Inherits List(Of VCard)
 
End Class

Aufruf:

Public Class SCVCardCreator
 
  Public Sub New()
  End Sub
 
  Private Function GetList() As VCardList
 
    Dim Result As New VCardList
 
    Using con As New SqlClient.SqlConnection(My.Settings.SQLConnectionString)
 
      Try
        con.Open()
      Catch ex As Exception
        Return Nothing
      End Try
 
      Dim strSQL As String = "Select * From Datenquelle"
 
      Using cmd As New SqlClient.SqlCommand(strSQL, con)
 
        Using dr As SqlClient.SqlDataReader = cmd.ExecuteReader
 
          Do While dr.Read
 
            Try
 
              Dim vcard As New VCard(dr.Item("MAB_NACHNAME"))
              With vcard
 
                Try
                  .VORNAME = dr.Item("MAB_VORNAME")
                Catch ex As Exception
                End Try
 
                Try
                  .NACHNAME = dr.Item("MAB_NACHNAME")
                Catch ex As Exception
                End Try
 
             End With
 
              Result.Add(vcard)
 
            Catch ex As Exception
 
            End Try
 
          Loop
 
        End Using
 
      End Using
 
      con.Close()
    End Using
 
    Return Result
 
  End Function
 
  Public Sub ExportToPath(ByVal aDirectory As String)
 
    Dim lst As VCardList = Me.GetList
 
    For Each vcard As VCard In lst
      vcard.ExportToPath(aDirectory)
    Next
 
  End Sub
 
End Class

Autoradio Golf 4 ausbauen / wechseln

Da mein VW Golf 4 Alpha Radio leider meinen Kassettenadapter nicht mehr schlucken mochte, musste ich mir Ersatz zulegen. Das neue Autoradio sollte nicht viel können, etwas Leistung haben, schlichte Optik und einen AUX-Eingang sowie USB Anschlussmöglichkeit. Für 77,- € gabs ein Gerät von JVC im Media Markt.

Der Einbau ging relativ problemlos. Ich musste nicht einmal die Steckerbelegung ändern. Die Montage selbst ist super einfach, da lediglich zwei Stecker verbunden werden müssen. Wer schon einmal ein Motherboard verkabelt hat, bekommt auch das hin.

Der Ausbau des alten Alpha Radios war eher das Problem. Die nicht entgrateten Greifwerkzeuge, die JVC beigelegt hatte, haben zwei tiefe Spuren in meinen beiden Daumen hinterlassen... Der Trick war herauszufinden, wo man die Greifer platzieren muss: links und rechts außen, aber nicht ganz außen, sondern zwischen den nicht-mit-einer-Funktion-belegten-Blendknöpfen und den inner liegenden Knöpfen mit Funktion.

Da der rechte aber partout nicht einrasten/greifen wollte und immer wieder herausrutschte, half schließlich dann aber doch nur rohe Gewalt in Kombination mit der Zange meines Leatherman.

Notiz an mich selbst: nächstes Mal vor dem Ausbau Arbeitshandschuhe anziehen, nicht mitten drin!

Kartoffel mit Trieben essbar?

So lautete heute meine Frage an das Internet, und die Antwort war "Ja".

Man sollte die Triebe zwar abschneiden, aber so lange noch keine grünen Stellen dran sind, sind sie noch essbar.

Ich hoffe mal auch, dass das der Wahrheit entspricht. Ansonsten werde ich es die heutige Nacht bestimmt merken.

Assert failure in ENABLEAGENT in Lotus Notes 8

Ja, wenn Lotus Notes dem Benutzer beim Deaktivieren des Abwesenheitsassistenten (oder dem Out of Office Agent) diese Meldung an den Kopf wirft, dann liegt das daran, dass der Benutzer keine Agenten ausführen kann.

Nach einer Änderung des Zugriffstyps auf die eigene Mailschablone von Editor auf Manager hat es dann geklappt.