Google
 
Diesen Blog abonnieren

Beliebte Posts

Samstag, 1. September 2018

Lenovo Laptop: WWAN einrichten

Highend Laptops verfügen vielfach über einen SIM Karten Slot für mobile Kommunikation. Damit das funktioniert, müssen verschiedene Voraussetzungen erfüllt sein. Leider hilft das Internet hier nur bruchstückweise weiter und auch die Herstellerseiten sind keine wirkliche Hilfe.
Mein Gerät verfügte über eine SIM Karte, die vermutlich einige Tage als Demo genutzt hätte werden können. Erst nach einem Jahr wollte ich aber mit einem erweiterten Angebot meines Providers eine Datenkarte nutzen.
Als erstes wollte ich die Mobile-Verwaltung aufrufen. Eigentlich findet man diese in der Taskleitse unter dem LAN-Symbol:



Leider fehlte aber das Kästchen 'Mobile'. Auch der Eintrag 'Mobilfunk' unter 'Netzwerk- und Interneteinstellungen' fehlte:


Der Grund für dieses Verhalten liegt darin, dass es einen Treiber braucht, um die Brücke zwischen Hardware und Betriebssystem herzustellen. Ausserdem wird noch eine Applikation benötigt, damit das ganze parametriert und bedient werden kann. Der Treiber allein genügt nicht. Gemeinerweise gibt es auch Geräte, welche über einen SIM Slot verfügen, aber keinen Adapter, oder noch besser, zwar einen Adapter aber keine Antenne eingebaut haben. Im folgenden beschreibe ich mein Vorgehen mit einem Lenovo Laptop:
In Lenovo Vantage, welches standardmässig installiert sein sollte findet man unten das genaue Produkt und die Seriennummer des Gerätes. Seriennummer nun in den  Kopier Puffer nehmen (Ctrl C) und unter System Aktualisierung  'Lenovo Support' wählen:

Nun findet ihr unter 'Treiber und Software' die spezifische Software eures Gerätes. Einigermassen wenigstens, denn anscheinend weiss Lenovo selbst mit der Seriennummer nicht genau was sie verbaut haben. Es erscheinen nämlich Sierra und Huawei Treiber!? In unseren Breitengraden scheinen eher Sierra Karten eingesetzt zu werden. Schaut doch im Gerätemanager nach, wenn ihr Glück habt und ein Treiber installiert ist, seht ihr das Modell. Bei mir war leider nichts ersichtlich.
Ich habe somit zuerst die Sierra Software ausprobiert

und siehe da, nach einem Neustart waren die oben erwähnten Punkte 'Mobile' und 'Mobilfunk' vorhanden. Die Sim Karte kann mit dem Code schon mal entsperrt werden.
Jetzt unter 'Mobilfunk - Erweiterte Optionen' eine 'APN' erzeugen, sofern notwendig. Die Daten bekommt ihr von eurem Provider. Hier ein Beispiel, was bei Sunrise eingetragen werden muss:
Weiter unten unter 'Sicherheit' könnt ihr gleich noch die SIM-Pin entfernen, wenn ihr sie nicht bei jedem Start eingeben wollt - und natürlich Roaming deaktivieren.

Viel Erfolg!


Montag, 24. Juli 2017

Excel: Wenn die bedingte Formatierung nicht so will wie Du ...

Heute hatte ich das Problem, dass die bedingte Formatierung partout nicht funktionieren wollte. Alle Zellen blieben immer weiss, egal was ich machte.
Die Lösung war ganz einfach: Ein expotiertes Formular aus Access hat offenbar einen weissen Hintergrund und nicht einen transparenten. Also, alle Zellen mit einem tranparenten Hintergrund versehen (keine Farbe) und schon funktioniert alles wie erwartet.

Samstag, 5. Dezember 2015

C# and mySQL Tutorial - Wie befülle ich eine Listbox?

Im letzten Beitrag wurde gezeigt, wie eine Combobox mit Datenbankwerten befüllt wird (grün) und wie die Werte anschliessend in Formularfelder übertragen werden (gelb). Bei der Listbox funktioniert alles genau gleich. Die nicht betrachteten Programmteile sind ausgeblendet.

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using MySql.Data.MySqlClient;
 
namespace First_C_Sharp_App
{
    public partial class Form2 : Form
    {
        MySqlConnection conDataBase;
        MySqlCommand cmdDataBase;
        MySqlDataReader myReader;
 
        public Form2()
        {
            InitializeComponent();
            FillCombo();
            FillListbox();
        }
 
        private static void OpenDatabase(string Query, out MySqlConnection conDataBase, out MySqlCommand cmdDataBase)
        {
            string myConnection = "datasource=localhost;port=3306; " +
            "username=root;password=xxx";
            conDataBase = new MySqlConnection(myConnection);
            cmdDataBase = new MySqlCommand(Query, conDataBase);
        }
 
        void FillListbox()
        {
            string Query = "Select * from database.edata ;";
            OpenDatabase(Query, out conDataBase, out cmdDataBase);
 
 
            try
            {
                conDataBase.Open();
                myReader = cmdDataBase.ExecuteReader();
 
                while (myReader.Read())
                {
                    string sName = myReader.GetString("name");
                    lstBox.Items.Add(sName);
                }
                cboAddString.Focus();
 
                conDataBase.Close();
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message);
            }
 
 
 
        }
 
        void FillCombo()
        {
            
        }
 
        private void button1_Click(object sender, EventArgs e)
        {
            
           
            }
 
        private void btnUpdate_Click(object sender, EventArgs e)
        {
            
            
        }
 
        private void btnDelete_Click(object sender, EventArgs e)
        {
            
            
 
        }
 
        
 
        private void cboAddString_SelectedIndexChanged(object sender, EventArgs e)
        {
 
            
        }
 
        private void lstBox_SelectedIndexChanged(object sender, EventArgs e)
        {
            string Query = "Select * from database.edata where name='" + lstBox.Text + "';";
 
            OpenDatabase(Query, out conDataBase, out cmdDataBase);
            try
            {
                conDataBase.Open();
                myReader = cmdDataBase.ExecuteReader();
 
                while (myReader.Read())
                {
                    Eid_txt.Text = myReader.GetInt32("Eid").ToString();
                    Name_txt.Text = myReader.GetString("name");
                    Surname_txt.Text = myReader.GetString("surname");
                    Age_txt.Text = myReader.GetInt32("age").ToString();
 
                }
 
                conDataBase.Close();
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message);
            }
        }
    }
    }
 

C# und mySQL Tutorial - Wie befülle ich eine Combobox?



In untenstehender Routine wird gezeigt, wie eine Combobox aus der Datenbank gefüllt (grün) und der selektierte Wert in die Felder geschrieben wird (gelb). Die dazu benötigte (leere) Funktion wird durch Doppelklick auf die Combobox erzeugt. Die Datenbankverbindung ist orange markiert.
Die hier nicht benötigten Funktionen aus den früheren Folgen sind ausgeblendet.


using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using MySql.Data.MySqlClient;
 
namespace First_C_Sharp_App
{
    public partial class Form2 : Form
    {
        MySqlConnection conDataBase;
        MySqlCommand cmdDataBase;
        MySqlDataReader myReader;
 
        public Form2()
        {
            InitializeComponent();
            FillCombo();
        }
 
        private static void OpenDatabase
             (string Query, out MySqlConnection conDataBase, 
               out MySqlCommand cmdDataBase)
        {
            string myConnection = "datasource=localhost;port=3306; " +
                "username=root;password=xxx";
            conDataBase = new MySqlConnection(myConnection);
            cmdDataBase = new MySqlCommand(Query, conDataBase);
        }
 
 
        void FillCombo()
        {
            string Query = "Select * from database.edata ;";
            OpenDatabase(Query, out conDataBase, out cmdDataBase);
                     
            
            try
            {
                conDataBase.Open();
                myReader = cmdDataBase.ExecuteReader();
 
                while (myReader.Read())
                {
                    string sName = myReader.GetString("name");
                    cboAddString.Items.Add(sName);
                }
                cboAddString.Focus();
 
                conDataBase.Close();
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message);
            }
 
        }
 
        private void button1_Click(object sender, EventArgs e)
        {
        }
 
        private void btnUpdate_Click(object sender, EventArgs e)
        {

        }
 
        private void btnDelete_Click(object sender, EventArgs e)
        {
         
        }
 
  
 
        private void cboAddString_SelectedIndexChanged(object sender, EventArgs e)
        {
 
            string Query = "Select * from database.edata where name='" + cboAddString.Text + "';";
            
            OpenDatabase(Query, out conDataBase, out cmdDataBase);
            try
            {
                conDataBase.Open();
                myReader = cmdDataBase.ExecuteReader();
 
                while (myReader.Read())
                {
                    Eid_txt.Text = myReader.GetInt32("Eid").ToString();
                    Name_txt.Text = myReader.GetString("name");
                    Surname_txt.Text = myReader.GetString("surname");
                    Age_txt.Text = myReader.GetInt32("age").ToString();
 
                }
 
                conDataBase.Close();
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message);
            }
        }
 
    }
    }

Freitag, 4. Dezember 2015

C# and mySQL Tutorial - Update and Delete


Will man Werte in der Datenbank ändern, so wird die Abfrage foglendermassen angepasst (gelb).
Löschen ist noch einfacher (grün).Dazu muss eine existierende Eid Nummer eingegeben und 'Delete' gedrückt werden.


using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using MySql.Data.MySqlClient;
 
namespace First_C_Sharp_App
{
    public partial class Form2 : Form
    {
        public Form2()
        {
            InitializeComponent();
        }
 
        private void button1_Click(object sender, EventArgs e)
        {
            string myConnection = "datasource=localhost;port=3306; " +
                                      "username=root;password=xxx";
            string Query = "insert into database.edata (Eid, name, surname, age) values('" 
                + this.Eid_txt.Text + "','" + this.Name_txt.Text + "','" + this.Surname_txt.Text 
                + "','" + this.Age_txt.Text + "');";
            MySqlConnection conDataBase = new MySqlConnection(myConnection);
            MySqlCommand cmdDataBase = new MySqlCommand(Query, conDataBase);
            MySqlDataReader myReader;
            try
            {
                conDataBase.Open();
                myReader = cmdDataBase.ExecuteReader();
                MessageBox.Show("Saved");
                
                conDataBase.Close();
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message);
            }
 
 
            }
 
        private void btnUpdate_Click(object sender, EventArgs e)
        {
            string myConnection = "datasource=localhost;port=3306; " +
                                                  "username=root;password=xxx";
            string Query = "update database.edata set Eid='"
                + Eid_txt.Text + "',name='" + Name_txt.Text + "',surname='" 
                + Surname_txt.Text
                + "',age='" + Age_txt.Text + "' where Eid='" + Eid_txt.Text + "' ;";
            MySqlConnection conDataBase = new MySqlConnection(myConnection);
            MySqlCommand cmdDataBase = new MySqlCommand(Query, conDataBase);
            MySqlDataReader myReader;
            try
            {
                conDataBase.Open();
                myReader = cmdDataBase.ExecuteReader();
                MessageBox.Show("Updated");
 
                conDataBase.Close();
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message);
            }
        }
 
        private void btnDelete_Click(object sender, EventArgs e)
        {
            string myConnection = "datasource=localhost;port=3306; " +
                                                 "username=root;password=xxx";
            string Query = "delete from database.edata where Eid='" 
                + Eid_txt.Text + "' ;";
            MySqlConnection conDataBase = new MySqlConnection(myConnection);
            MySqlCommand cmdDataBase = new MySqlCommand(Query, conDataBase);
            MySqlDataReader myReader;
            try
            {
                conDataBase.Open();
                myReader = cmdDataBase.ExecuteReader();
                MessageBox.Show("Deleted");
 
                conDataBase.Close();
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message);
            }
 
        }
 
        
    }
    }
 
Die Änderungen beschränken sich im Wesentlichen auf den String 'Query'.

Donnerstag, 3. Dezember 2015

C# Tutorial - Eingabe von Werten in die Datenbank



Daten können folgendermassen in die Datenbank geschrieben werden:

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using MySql.Data.MySqlClient;
 
namespace First_C_Sharp_App
{
    public partial class Form2 : Form
    {
        public Form2()
        {
            InitializeComponent();
        }
 
        private void button1_Click(object sender, EventArgs e)
        {
            string myConnection = "datasource=localhost;port=3306; " +
                                      "username=root;password=xyz";
            string Query = "insert into database.edata (Eid, name, surname, age) values('" 
                + this.Eid_txt.Text + "','" + this.Name_txt.Text + "','" + this.Surname_txt.Text 
                + "','" + this.Age_txt.Text + "');";
            MySqlConnection conDataBase = new MySqlConnection(myConnection);
            MySqlCommand cmdDataBase = new MySqlCommand(Query, conDataBase);
            MySqlDataReader myReader;
            try
            {
                conDataBase.Open();
                myReader = cmdDataBase.ExecuteReader();
                MessageBox.Show("Saved");
                
                conDataBase.Close();
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message);
            }
 
 
            }
 
 
        }
    }
 

Mittwoch, 2. Dezember 2015

C# - Neues Fenster öffnen

Nach erfolgreichem Login soll typischerweise das Login Fenster verschwinden (Hide) und ein neues Fenster geöffnet werden (ShowDialog).
Dazu muss im Projektmappen Explorer ein neues Element (Window Form) hinzugefügt werden.
Der Code gemäss vorangegangenem Beispiel muss geringfügig ergänzt werden (gelb hinterlegt):

using System;
using System.Data;
using System.Windows.Forms;
using MySql.Data.MySqlClient;
 
 
 
namespace First_C_Sharp_App
{
    public partial class Login : Form
    {
        
        public Login()
        {
            InitializeComponent();
            password_txt.PasswordChar = '#';
        }
 
       
 
        private void btnLogin_Click(object sender, EventArgs e)
        {
            try
            {
                string myConnection = "datasource=localhost;port=3306; " +
                                      "username=root;password=xyz";
                MySqlConnection myConn = new MySqlConnection(myConnection);
                MySqlCommand SelectCommand = new MySqlCommand
                    ("select * from database.edata where user_name='" +
                         username_txt.Text + "' and password='" 
                         + password_txt.Text + "' ;", myConn);
                MySqlDataReader myReader;
                
                myConn.Open();
                myReader = SelectCommand.ExecuteReader();
                int count = 0;
                while (myReader.Read())
                {
                    count++;
                }
                if (count == 1)
                {
                    MessageBox.Show("Username und Password ist correct");
                    this.Hide();
                    Form2 f2 = new Form2();
                    f2.ShowDialog();
 
                }
                else if (count>1)
                {
                    MessageBox.Show
                        ("Duplicate Username and password ... Access denied");
                }
                else
                {
                    MessageBox.Show
                        ("Username or password not correct ... Please try again");
                } 
                
                myConn.Close();
 
 
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message);
 
            }
 
        }
    }
}

Montag, 30. November 2015

C# - Formulare verschönern

Das Formular soll nun noch etwas aufgepeppt werden. Ähnlich wie von Access gewohnt, gibt es die GroupBox (um Username, Password und Login button) und eine PictureBox für die Aufnahme von Bildern.
Aber woher nun die Bilder nehmen? Eine gute Quelle ist IconArchive. Hier können alle möglichen und unmöglichen Bilderr gratis in diversen Auflösungen heruntergeladen werden:

In der Suchbox kann die Kategorie eingegeben werden, im Search Filter links, die gewünschte Auflösung. Bei Mausover erscheinen die möglichen Formate, die angewählt werden können. Das Bild muss dann mit rechter Maustaste und 'Bild speichern unter ....' nur noch heruntergeladen werden.

Ist die Picturebox im Visualstudio ausgewählt, so erscheint oben rechts ein Pfeil in einem Rechteck. Dieser Pfeil dient direkt der Bildauswahl. In der nun erscheinenden Dialogbox kann das Bild 'importiert' werden.

Für Icons in Buttons wird die Grösse 16x16 verwendet. Das Bild wird über die Eigenschaft 'Image' ausgewählt und mit 'ImageAlign' nach Wunsch platziert.


Damit sieht das Formular nun etwa so aus:


C# und mySQL - Login Formular

Nachdem die Anbindung an die SQL Datenbank geglückt ist, erstellen wir doch ein Login Formular. Schliesslich wollen wir die Datenbank nutzen.

Das Formular wird in Windows Forms erstellt und sieht ungefähr so aus:
In mySQL erstellen wir eine Tabelle 'edata' mit den folgenden Feldern:


Mit dem folgenden Code greifen wir nun auf die Daten zu:

using System;
using System.Data;
using System.Windows.Forms;
using MySql.Data.MySqlClient;
 
 
 
namespace First_C_Sharp_App
{
    public partial class Login : Form
    {
         
        public Login()
        {
            InitializeComponent();
        }
 
       
 
        private void btnLogin_Click(object sender, EventArgs e)
        {
            try
            {
                string myConnection = "datasource=localhost;port=3306; " +
                                      "username=root;password=xyz";
                MySqlConnection myConn = new MySqlConnection(myConnection);
                MySqlCommand SelectCommand = new MySqlCommand
                    ("select * from database.edata where user_name='" +
                         username_txt.Text + "' and password='" 
                         + password_txt.Text + "' ;", myConn);
                MySqlDataReader myReader;
                myConn.Open();
                myReader = SelectCommand.ExecuteReader();
                int count = 0;
                while (myReader.Read())
                {
                    count++;
                }
                if (count==1)
                {
                    MessageBox.Show("Username und Password ist correct");
 
                }
                else if (count>1)
                {
                    MessageBox.Show
                        ("Duplicate Username and password ... Access denied");
                }
                else
                {
                    MessageBox.Sho
                        ("Username or password not correct ... Please try again");
                } 
                
                myConn.Close();
 
 
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message);
 
            }
 
        }
    }
}
'user_name' und 'password' sind bewusst einfach gehalten, damit man einfach herumspielen kann.
Passwort korrekt, doppelt, falsch ....
Ansonsten müsste die Routine selbst erklärend sein.
Zum Schluss noch ein Tipp: Gibt man im Textfeld 'Password' unter 'Eigenschaften' als 'PasswordChar' z.B. '#' ein, so wird die Eingabe mit diesem Zeichen maskiert, wie es sich für die Eingabe von Passwörtern gehört. Selbstverständlich kann das auch per Coder erledigt werden:
password_txt.PasswordChar = '#';
 Der Code muss aber wo erfolgen? Natürlich nach
 InitializeComponent();
Andernfalls ist das Fenster bereits geöffnet und die Eingabe erscheint im Klartext.

Sonntag, 29. November 2015

Visual Studio - Productivity Power Tools 2015


Die Productivity Power Tools stellen einige phantastische Funktionen zur Erweiterung von Visaul Studio zur Verfügung. Neben einigen praktischen Hilfsmitteln welche die Lesbarkeit des Codes erhöhen ist auch eine HTML Kopierfunktion des Codes enthalten. Wer sich also vielleicht gewundert hat, wie der Codeschnipsel aus dem letzten Beitrag entstanden ist, hat hier die Lösung - Ctrl C, Ctrl V, fertig.
Ich behaupte mal, es lohnt sich auf jeden Fall diesen Link zu besuchen und dieses Video anzuschauen.
Diesem Kommentar kann ich mich nur anschliessen:
These are terrific features, and I congratulate your team on building them.

C# und mySQL - Connect Database

Nachdem alles eingerichtet ist, kann der Connect folgendermassen durchgeführt werden:
Es wird von einem Windows Form ausgegangen und einem Button 'btnMySQL'. Mit dem folgenden Code wird ein Connect der Datenbank erreicht:

using System;
using System.Data;
using System.Windows.Forms;
using MySql.Data.MySqlClient;
 
 
 
namespace First_C_Sharp_App
{
    public partial class Form1 : Form
    {
        mySqlDataAdapter myDataAdapter;
 
        public Form1()
        {
            InitializeComponent();
        }
 
        private void btnMySql_Click(object sender, EventArgs e)
        {
            try
            {
                string myConnection = "datasource=localhost;port=3306; "+
                                      "username=root;password=xyz";
                MySqlConnection myConn = new MySqlConnection(myConnection);
                string sql = "SELECT * database.edata ;";
                myDataAdapter = new mySqlDataAdapter(sql, myConn);
                MySqlCommandBuilder cb = new MySqlCommandBuilder();
                myConn.Open();
                DataSet ds = new DataSet();
                MessageBox.Show("Connected");
                myConn.Close();
 
 
            }
            catch (Exception ex )
            {
                MessageBox.Show(ex.Message);
 
            }
        }
 
        private void btnLogin_Click(object sender, EventArgs e)
        {
 
        }
    }
}

Ein erfolgreicher Connect wird durch eine Messagebox quittiert. Bei Fehlern erscheint die entsprechende Systemmeldung.

Von Access nach C# und mySQL - Die Datenbank

C# allein kann Access nicht ersetzen - es braucht eine Datenbank. Dazu gibt es hauptsächlich die 3 folgenden Möglichkeiten:
- Anbindung an eine Access .mdb -> Am Anfang vielleicht für kleinere Projekte sinnvoll
- Verwendung von mySQL -> Für private und kommerzielle Projekte (Lizenz beachten)
- Verwendung von msSQL -> Für kommerzielle Projekte

Für einen Umstieg habe ich mich vorderhand für mySQL entschieden. Auch hier gibt es eine Community Edition.
Die Einrichtung der Datenbank würde den Rahmen dieses Blogs sprengen. Hier gibt es aber eine perfekte Einführung in die Thematik. Ist die Datenbank so eingerichtet, können die folgenden Beispiele direkt verwendet werden.

Von Access nach C# und mySQL

Nach 20 Jahren Access wird es langsam Zeit, sich davon zu verabschieden. Einerseits wird Access von Microsoft nur noch halbherzig weiterentwickelt, auf der andern Seite erüllt Access einfach die aktuellen Ansprüche an eine Programmiersprachre nicht mehr.
Eine gute Alternative ist der Umstieg auf Visual Studio 2015. Micorsoft stellt für kleinere Anwendungen seit einiger Zeit gratis 'Visual Studio Comunitiy' zur Verfügung. Die Lizenzbedingungen sind sehr grosszügig und sind natürlich vor einem kommerziellen Einsatz sorgfältig zu prüfen. Für kleinere Projekte ist der Einsatz der Edition absolut legal! Wächst das Projekt, so sollte der Kauf der Professional Edition ja dann kein Problem darstellen.

Sonntag, 15. Februar 2015

Windows 10 Preview - Installation in der Virtual Box

Nun ist also Windows 10 als Preview erhältlich. Das System nativ zu installieren, ist kaum empfehlenswert. Ich beschreibe hier, wie ich die Installation in der Virtualbox vorgenommen habe. Wie (fast) immer bei Microsoft, sind einige Hürden zu bewältigen.
Also legen wir los.
1. Besorgt euch die neuste Version der Oracle Virtualbox. Ab Version 4.3.22 wird Windows 10 bereits unterstützt!
2. Hier bekommt ihr die Windows Preview. Ihr findet dort auch den Produkt Key.
3. Installiert nun das heruntergeladene iso File. Eine Anleitung findet ihr hier
4. Wenn ihr die 64-Bit Version heruntergeladen habt und installiert, müsst ihr viel Zeit einrechnen. Aus unerfindlichen Gründen verharrt das Programm stundenlang (bei meiner schnellen Entwicklungsmaschine waren es ca. 2 Stunden) im Modus 'Vorbereitung läuft'. Wenn ihr Glück habt ist der Fehler gefixt, wenn ihr das lest.
5. Nun ist es geschafft. Ihr könnt nun ein Micorsoft Konto erstellen, oder das bestehende benutzen. Dummerweise ist der Tastaturtreiber noch etwas komisch eingestellt. Als Leser dieses Blogs gebt ihr einen '@' ganz logisch mit 'Alt Gr' + 'Q' ein.
6. Das Windows ist nun eingerichtet. Nun evtl. noch eine kleine Hürde der Virtual Box - die Installation der Gasttreiber. Eigentlich ganz einfach, es ist aber zu bachten, dass sich diese nicht auf dem Host sondern auf dem Gastsystem befinden. Also im Windows 10 den Explorer starten - er befindet sich in der Taskleiste) und dann auf 'Dieser PC'. Ihr findet dort ein eigenes 'Laufwerk' mit den Gasterweiterungen. Dort startet ihr 'Vbox WindowsAdditions.exe'. Vielleicht waren die Gasterweiterungen schon installiert, aber ein erneutes Starten schadet nicht. Dann ist die Maus korrekt gefangen usw..
Und nun viel Spass!
Mein erster Eindruck von Windows 10? Nun, es ist immer noch verkachelt. Immerhin erscheinen die Kacheln in Fenstern. Ich habe das Gefühl, der PC ist im Gegensatz zu Windows 8 wieder ohne Addons bedienbar. Auf Smartphones und Tablets (so denn jemand in diesem Bereich Windows benutzt) sind die Kacheln sicher nicht schlecht. Meine persönliche Einschätzung ist, dass Google mit Android (ab Version 5) dermassen auf der Überholspur ist, dass es für Apple und Micorsoft schwierig werden wird.

Sonntag, 8. Februar 2015

SecureSafe oder Wer kann sich alle Passwörter merken?

Wurde in der Anfangszeit des Internets noch bei verschiedenen Accounts dasselbe Passwort verwendet  - was natürlich noch nie ratsam, aber gängige Praxis war - sollte man dies heute keinesfalls mehr machen. Bis vor einiger Zeit ging ich davon aus, dass bei Internet  Accounts ein relativ einfaches Passwort verendet werden kann, da ja nach einigen Versuchen Schluss ist. Ich hatte jedoch nicht damit gerechnet, dass sich auch namhafte Firmen wie z.B. Adobe mehrere Millionen User-Datensätze klauen lassen.

Um dieses Problem zu lösen, muss also so etwas wie ein Passwort Manager her. Ich habe zwar diesbezüglich immer noch kein gutes Gefühl. Wird der Passwort Manager geknackt, so hat der Eindringling alle Passwörter. Trotzdem benutze ich seit Jahren SecureSafe. Die Firma ist glaubwürdig und bietet einen ausgezeichnenten Support, den ich in der Anfangszeit einmal wegen dem gesicherten pdf Reader (ja, auch ein solcher ist vorhanden) in Anspruch nehmen musste. Ausser Passwörtern können auch Dokumente gelagert werden. Zudem besteht die Möglichkeit, einer nahestehenden Person im Todesfall die Daten zugänglich zu machen. Ein Aspekt, der häufig vergessen wird und zweifellos an Bedeutung gewinnen wird. SecureSafe läuft auf Mac, PC, iOS und Android. Die Applikation wird in der Schweiz auch im Bankenumfeld eingesetzt. So können Bankbelege direkt in den Safe verschoben und ohne lästiges Login ins eBanking betrachtet werden. Dazu steht z.B. eine clientseitig verschlüsselte PC App zur Verfügung. Der Zugriff ist fein konfigurierbar und so einfach möglich wie mit Dropbox, aus meiner Sicht aber bedeutend sicherer. 
Hier findet ihr noch einen Vergleich der gängigsten Passwort Manager. Obwohl die Tester fälschlicherweise die 'fehlende Offlinefunktionalität' bemängelt haben, belegte SecureSafe Platz 1. Für mich nicht erstaunlich. Schlussendlich muss aber jeder selber wissen, ob er einem Passwort Safe vertrauen will. Einen diesbezüglichen Skandal halte ich für wahrscheinlich, aber hoffentlich nicht wegen SecureSafe.


Samstag, 24. Januar 2015

My Nexus 5 - Gute Karten

Um die Kundenbindung zu fördern, hat jedes Geschäft seine Kundenkarte und das Portemonnaie der Kunden wir immer dicker. Es gibt eine clevere App namens Stocard, welche sämtliche Kundenkarten auf dem Handy verwaltet, und die Geldbörse wird wieder dünner (auch für iOS erhältlich).
Anfangs zickten noch diverse Geschäfte herum, wie z.B. Coop Schweiz. Aber mittlerweile haben wohl alle eingesehen, dass Monopolismus und Eigenbrötlerei in der heutigen, globalisierten Welt der Vergangenheit angehören. Jedenfalls habe ich mein Kartendepot in den letzten Tagen extensiv ohne Probleme benutzt. Sehr praktisch!

Donnerstag, 22. Januar 2015

My Nexus 5 - Google now!

Hat man sich für ein Android Gerät entschieden, so landen die Daten statt bei Apple nun bei Google.
Die persönliche Assistentin heisst nun nicht mehr Siri sondern Now (wie auch immer die Dame dahinter heisst). Siri ist zwar witziger  aber bedeutend weniger nützlich als Google now.
Die SEO-Agentur Stone Temple hat die Dienste gegeneinander antreten lassen - mit einem überraschenden Ergebnis:
Es mussten 3.086 Fragen beantwortet werden wie z.B. Wie alt ist die chinesische Mauer? Wer hat Facebook erfunden? Wer hält die meisten Patente? Was tut ein Kardiologe? Warum ist der Himmel blau?
Google Now liefert zu 58 Prozent der Fragen eine Antwort, Siri nur zu 29 Prozent. Und auch die Qualität der Antworten wurde getestet. Beantwortet die App etwa die Frage nach dem Alter des Kolosseum mit dem Jahr seiner Erbauung, wurde die Antwort als nicht vollständig bewertet. Auch hier trumpfte Google Now groß auf: 88 Prozent der Antworten lieferten das gewünschte Resultat, bei Siri waren es nur 53 Prozent.

Chip hat 22? nützliche Sprachbefehle evaluiert. Ihr seht sie im Film wie auch unten stehend schriftlich zum mitschreiben, äh ich meinte mitsprechen:

1. Stelle einen Alarm für 30 Minuten

2. Gehe zu chip.de

3. Karte von Schloss Nymphenburg

4. Route zu Münchner Hauptbahnhof

5. Navigiere zu Münchner Hauptbahnhof

6. Termin erstellen  Konferenz Freitag um 16 Uhr

7. Zeige Bilder von Tieren in Superheldenkostümen

8. Zeige mir italienische Restaurants in meiner Umgebung

9. Erinnere mich morgen um 15 Uhr an die Verabredung mit Markus

10. Notiz 3 Milch und 1 Päckchen Butter kaufen

11. Anja Hauser anrufen

12. Sms an Anja Hauser ich verspäte mich um 5 Minuten

13. eMail an Anja Hauser Hallo Anja hast Du morgen Zeit

14. Spiele Avicii

15. Englisch übersetzen wie komme ich zum Bahnhof

16. Was bedeutet Yolo

17. 21% von 351

18. Wie wird das Wetter morgen

19. Wie steht die BMW Aktie

20. 30kg in Pfund umrechnen

21. Kinoprogramm München

22. Wie viele Kalorien hat eine Banane

23. Wie alt ist Jürgen Klinsmann

24. und wie gross ist er

25. what ist the loneliest number

26. do a barrel roll

Nummer 26 ist ein sogenanntes 27. Easter Egg. Wenn ihr es nicht wisst, könnt ihr Now fragen :-)

Tipp: Will now euch einfach nicht verstehen - niemand versteht mich :-( - so könnt ihr auch mit einer Texteingabe bzw. Korrektur nachhelfen.


.

Montag, 19. Januar 2015

My Nexus 5 - Wie beginnen?

Zugegeben, wenn man ein Nexus 5 sein eigen nennt, steht man am Anfang etwas allein da. Infolge des günstigen Preises haben die Provider natürlich kein Interesse, ein Nexus zu verkaufen. Da sie das Ding nicht im Sortiment haben, machen sie es teilweise sogar schlecht, um ein 'eigenes' Gerät zu verkaufen. Davon muss man sich aber nicht beirren lassen. Ursprünglich war das Nexus tatsächlich eher für Geeks und Nerds geeignet. Mittlerweile ist aber Android erwachsen geworden und im Netz gibt es jede Menge Unterstützung für das Nexus 5.

Insbesondere die folgenden drei Ressourcen kann ich empfehlen:

1. Natürlich zuerst die Mutterseite www.android.com konsultieren
2. Lass dir dein Handy in ca. 50 Minuten von einem netten Girl erklären (siehe Bild oben)
3. Konsultiere DIE Androidseite http://www.androidpit.de

Ausser dem günstigen Preis ist der Vorteil von Nexus, dass das Gerät kein Branding hat (sprich keinen Werbemüll des Herstellers). Das hat natürlich weiter zur Folge, dass Updates null Komma nichts auf dem Gerät landen, da nichts anzupassen ist. Nexus ist Android pur und das hat es punkto Geschwindigkeit und Komfort in sich. Meiner Ansicht nach hat Android insgesamt iOS fast eingeholt. An einigen Stellen hakelt es noch etwas. Bei andern Features wurde iOS bereits klar überholt.

Donnerstag, 15. Januar 2015

iPhone6 versus Nexus 5 - Die Entscheidung

Mein altes iPhone 4 musste im Dezember dringend ersetzt werden, da es nicht mehr richtig funktionierte. Ich war schon drauf und dran, mir trotz des auch für Schweizer Verhältnisse exorbitanten Preises ein iPhone 6 zuzulegen. iPhones laufen halt einfach 'rund'. Aber dann machte mich ein Arbeitskollege auf das Nexus 5 aufmerksam. Vergleicht man die beiden Geräte, so stellt man fest, dass sie praktisch gleichwertig sind.
Der Hauptunterschied ist natürlich das Betriebssystem. Android holt aber schnell auf und hat das iPhone in verschiedenen Aspekten bereits überholt. Es gibt aber einige Dinge die noch etwas hakelig sind. Den ultimativen Vergleich kann ich erst machen, wenn ich 'Lollipop' auf mein Gerät erhalte.

Der Bildschirm und die Rechenleistung ist bei beiden Geräten bombastisch. Das Nexus ist sogar etwas überlegen, aber im Normalgebrauch ist das nicht wahrnehmbar. Das einzige, das ich vermisse ist der Fingerprint Leser des iPhones. Da werde ich noch eine Generarion warten müssen, dann wird das zweifellos Standard sein. Auch die Kamera ist beim Nexus aus meiner Sicht etwas schlechter, aber für ein modernes Handy ganz ok. Der Akku hält bei mässigem Gebrauch ein bis max. zwei Tage durch. Das ist der Preis für die Dicke und das Gewicht des Gerätes. Dieses Problem haben aber alle modernen Handys.
Fazit: Das Nexus 5 ist gegenüber dem iPhone 6 in allen wichtigen Funktionen gleichwertig (bis sogar überlegen). Das 32GB Nexus kostet weniger als die Hälfte als ein 64MB iPhone 6. Nach reiflicher Überlegung habe ich mir das Nexus 5 zugelegt und habe es trotz der Konsequenzen betreffend Systemwechsel bisher nicht bereut.

Donnerstag, 1. Januar 2015

Access - Probleme mit TreeView (und andern OCX Steuerelementen) auf 64 Bit Systemen

Kauft man einen neuen PC, so läuft die CPU zeitgemäss mit 64-Bit. Das ergibt einen heute zwingend benötigten Adressraum von >>4GB. Leider bringt diese 'Extension' aber auch viele Probleme mit sich.
Ärgerlich ist z.B. dass die OCX-Steuerelmente von Access nicht mehr funktionieren. Deshalb rate ich immer noch dringend davon ab, das Office in einer 64-Bit Version zu installieren. Leider funktionierten meine Access Datenbanken auf meinem 64-Bit PC mit 32-Bit Office auch nicht mehr. Google zeigt zwar, dass es etliche Leidensgenossen gibt. Eine brauchbare Lösung habe ich in einem amerikanischen Blog gefunden und möchte euch das Ergebnis nicht vorenthalten.

Der Fehler, dessen Lösung ich hier beschreibe äusserst sich wie folgt:
Das Öffnen eines Formulars wird mit einem Fehler quittiert (Unbekanntes Objekt). Versucht man in einem leeren Formular einen Treeview zu platzieren, erscheint eine Fehlermeldung im Zusammenhang mit dem OLE Server.
Dieses Verhalten tritt auf, wenn ihr ein 64-Bit Windows und ein 32-Bit Office installiert habt. Das Problem ist, dass sich die Datei MSCOMCTL.OCX im Ordner \Windows\Syswow64 statt im Ordner \Windows\System32 befindet. Weil die Steuerelemente im Windows registriert sein müssen, nützt ein alleiniges kopieren der Datei an den richtigen Ort nichts.
Diese Schritte sind notwendig
1. Aufrufen der Konsole mit Ausführen -> cmd
2. Navigieren in den Ordner  \Windows\Syswow64 (mit cd.. und cd Syswow64)
3. Deregistrieren der Datei -> regsvr32 /u MSCOMCTL.OCX
4. Datei MSCOMCTL.OCX in den Ordner System32 kopieren
5.  Navigieren in den Ordner  \Windows\System32 (mit cd.. und cd System32)
6.  Registrieren der Datei -> regsvr32 MSCOMCTL.OCX

 Jetzt müsste wieder alles funktionieren. Falls ihr eine Datei portiert habt, dürfte der Treeview durch die Bastelei im Eimer sein (bei mir war es jedenfalls so). Also in diesem Fall den Backup der zuletzt noch funktionierenden Datei zurückspielen (den ihr hoffentlich habt).

Viel Erfolg! Über einen Kommentar über eure Erfahrungen würde ich mich sehr freuen.

Falls alles nichts nützt bzw. ihr ein 64-Bit Office im Einsatz habt, dann hier noch ein Linktipp für eine Treeview Emulation. Die Portierung sieht allerdings ziemlich aufwändig aus.