2016年2月4日 星期四

在Window 7 如何檢查電池的健康度(續電能力)

在Window7系統中,內建了指令可以顯示筆記型電腦的電池相關資訊其中,透過Design Capacity跟Last Full Charge的資料可以作初步電池續電能力的判斷請依以下步驟

1.點擊[開始],在所有程式下面的搜尋打上cmd。

2.在cmd.exe上按下右鍵選擇[以系統管理員身份執行]
3.在彈出來的命令執行視窗中打上:cd  %userprofile%/Desktop後按下Enter
4.然後再打上powercfg -energy後按下Enter。

5.大約等待1分鐘左右,在桌面上會新增一個檔名為energy-report.html的檔案
6.點開該檔案後,ctrl+f尋找:電池:電池資訊,
    設計容量代表的即是電池原先設計的電池容量,依各家廠牌有所不同,
    上次充滿代表最近一次電池充滿的容量。
若上次充滿/設計容量愈小,代表電池的續電能力愈差。


2016年1月15日 星期五

【沙茶魚皮白菜滷】

    主要材料:白菜
    主要配料:蝦米、扁魚、爆皮、魚皮、豬油渣仔、芋頭、香菇、干貝 香料配料:八角X1、魚露、沙茶醬、薑片、青蔥、青蒜、紅蘿蔔、蒜頭酥、粉絲 料理步驟:
1. 備料
    1-1. 爆皮掰撕成適當大小,熱水燙過後,撈起備用。
    1-2. 香菇切絲、干貝切絲,用米酒浸泡。
    1-3. 蒜頭、青蔥、大蔥、紅蘿蔔切成段。備用。
    1-4. 起油鍋,放少許沙拉油,放入蒜頭末&蒜頭粒,分別炸蒜頭酥&黃金蒜粒。
    1-4. 剩下的油鍋,放入扁魚下鍋煸炸,炸成金黃色後撈起。
    1-5. 扁魚炸好後,搗成碎片。
2. 炒料
    2-1. 較肥的豬肉先下鍋,炒至溶出豬油。蔥段下鍋煸成金黃色。
    2-2. 薑片、香菇絲、紅蘿蔔、蝦米炒香後,再分別放入魚皮、干貝絲續炒。
    2-3. 白菜下鍋略炒。
    2-4. 加少許鹽巴。 (使白菜出水)
    2-5. 加入扁魚酥,續炒。
    2-6. 加入米酒,待酒精揮發後,再沿鍋邊加入醬油,續炒。
    2-7. 加入雞高湯。(泡過香菇、干貝的米酒,也一起下鍋)
    2-8. 加入八角、爆皮、黃金蒜粒、青蒜、芋頭、豬油渣仔、白胡椒粉、粉絲,一起與湯水煮。
    2-9. 煮至滾沸後,轉中小火,續滷。 * 扁魚:白菜滷的靈魂所在。 如果沒有扁魚,也可以使用沙茶醬替代。 沙茶醬主要材料就是扁魚,但沙茶醬最好仿扁魚般的先用油略略炒過。
* 爆皮:炸豬皮。 爆皮在燉煮後,會變軟、爛、Q,並且可以吸附飽滿的湯汁。
* 魚皮:發泡過的鯊魚皮。
* 豬油渣仔:用肥的豬肉爆炒,煸炒出豬油後剩下的肥豬肉殘渣,就叫做豬油渣渣。
小時候常見,如今只有七月份才看得到,趁機抓一把留下來做菜用。
* 黃金蒜粒:整顆蒜頭(去掉外皮)炸至金黃色。
* 芋頭粒:切成比煮火鍋用芋頭角還小的顆粒狀,不用過油。 滷煮後,部分芋頭會融化溶入湯水裡,使湯水變得略略稠稠的。
* 雞高湯:拜拜都會要水煮全雞,因此我家或多或少都會有雞高湯。 如果沒有雞高湯,建議使用(蔬菜高湯+蜆仔)替代。
3. 硬件更新與升級
    3-1. 燉煮約30~40分鐘。(以白菜的甜味釋出為主)
    3-2. 起鍋前,加入魚露、烏醋、蒜頭酥。增加風味。
    3-3. 白菜滷,完成。

SQLite tutorial

SQLite 是一個功能強大的資料庫 open source,而且安裝空間小,輕巧方便攜帶性高。
SQLite支援列表

編譯環境
Windows7 64bit
.Net Framework 3.5
Microsoft Visual Studio Express 2015 For Windows Desktop

1.下載 ADO.NET 2.0 Provider for SQLite 並安裝它

2.引用 System.Data.SQLite.dll

   32 bit : ../bin/System.Data.SQLite.dll

   64 bit: ../bin/x64/System.Data.SQLite.dll

3.Code


using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;

using System.IO;// for check file exist
using System.Data.SQLite;//for SQLite

namespace c_sharp_sqlite
{
    public partial class Form1 : Form
    {
        private SQLiteConnection sqlite_connect;
        private SQLiteCommand sqlite_cmd;

        public Form1()
        {
            InitializeComponent();
        }

        private void button1_Click(object sender, EventArgs e)
        {
            if (!File.Exists(Application.StartupPath + @"\myData.db"))
            {
                SQLiteConnection.CreateFile("myData.db");
            }

            string name = textBox1.Text;
            string phone_number = textBox2.Text;

            sqlite_connect = new SQLiteConnection("Data source=myData.db");
            //建立資料庫連線

            sqlite_connect.Open();// Open
            sqlite_cmd = sqlite_connect.CreateCommand();//create command
            
            sqlite_cmd.CommandText = @"CREATE TABLE IF NOT EXISTS phone (num INTEGER PRIMARY KEY AUTOINCREMENT, name TEXT, phone_number TEXT)";
            //create table header
            //INTEGER PRIMARY KEY AUTOINCREMENT=>auto increase index
            sqlite_cmd.ExecuteNonQuery(); //using behind every write cmd

            sqlite_cmd.CommandText = "INSERT INTO phone VALUES (null, '" + name + "','" + phone_number + "');";
            sqlite_cmd.ExecuteNonQuery();//using behind every write cmd

            sqlite_connect.Close();
        }

        private void button2_Click(object sender, EventArgs e)
        {
            sqlite_connect = new SQLiteConnection("Data source=myData.db");
            //建立資料庫連線
            sqlite_connect.Open();// Open
            sqlite_cmd = sqlite_connect.CreateCommand();//create command

            sqlite_cmd.CommandText = "SELECT * FROM phone"; //select table

            SQLiteDataReader sqlite_datareader = sqlite_cmd.ExecuteReader();

            while (sqlite_datareader.Read()) //read every data
            {
                String name_load = sqlite_datareader["name"].ToString();
                String phone_number_load = sqlite_datareader["phone_number"].ToString();
                MessageBox.Show(name_load + ":" + phone_number_load);
            }
            sqlite_connect.Close();
        }
    }
}

C#連接Mysql,驅動下載、安裝、連接

系統環境

  1. Windows7 x64
  2. 5.6.12-log MySQL Community Server (GPL
  3. Microsoft Visual Studio Express 2015 For Windows Desktop

Mysql驅動下載(MySql的版本支援)

    選擇Connector/Net作為C#連接Mysql的驅動程式,
    先到下載頁面載Connector/Net6.9.8,
    下載下來的檔名為mysql-connector-net-6.9.8.msi。

Starting with version 6.7, Connector/Net will no longer include the MySQL for Visual Studio integration. That functionality is now available in a separate product called MySQL for Visual Studio available using the MySQL Installer for Windows (seehttp://dev.mysql.com/tech-resources/articles/mysql-installer-for-windows.html).

(頁面中提醒,6.7版本以前,Connector/Net 包含 MySQL for Visual Studio,而從6.7開始,MySQL for Visual Studio被包含進MySQL Installer for Windows中。我現在用的Visual Studio版本Microsoft Visual Studio Express 2015 For Windows Desktop並不在MySQL for Visual Studio的支援列表,我不能使用MySQL for Visual Studio,所以直接下載最新的Connector/Net 6.9.8版本就好了,沒有MySQL for Visual Studio也沒關係。)

安裝

    mysql-connector-net-6.9.8.msi點兩下進入安裝畫面。 Typical→Install

連接

    建立一個新的C# WPF專案來做測試,名稱為ConnectMysql。
    打開Visual Studio→檔案→新增專案→Visual C#→WPF 應用程式
    →名稱填上ConnectMysql→確定。
加入Mysql參考: C:\Program Files (x86)\MySQL\MySQL Connector Net 6.9.8\Assemblies Assemblies資
料夾下有幾個子資料夾:v2.0、v4.0、v4.5 下面這篇有提到v2.0指的是.net 2.0,但上面說最好不要用connector的方式連接mysql,
部屬時可能會產生很多問題。 
他推薦使用Visual Studio的nugethttp://geekswithblogs.net/anirugu/archive/2011/04/20/my sql.data.mysqlclient-version-mismatched.aspx 目前還是先用connector方式連接mysql就好,
我會選擇v4.0下的dll檔作為參考,因為我的Visual Studio開新專案預設的.NET Framework 目標為4.0
    到方案總管→在參考上按右鍵→選擇加入參考→瀏覽→找到C:\Program Files         
    (x86)\MySQL\MySQL Connector Net 6.9.8\Assemblies\v4.0\MySql.Data.dll→確定 
    v4.0資料夾可以看到以下的DLL檔
      MySql.Data.dll
      MySql.Data.Entity.dll
      MySql.Data.Entity.EF6.dll
      MySql.Fabric.Plugin.dll
      MySql.Web.dll
在MainWindow.xaml.cs下加入using:using MySql.Data.MySqlClient;
到Window_Loaded事件貼上連接資料庫相關內容
 private void Window_Loaded(object sender, RoutedEventArgs e)
        {
            string dbHost = "127.0.0.1";//資料庫位址
            string dbUser = "root";//資料庫使用者帳號
            string dbPass = "";//資料庫使用者密碼
            string dbName = "api";//資料庫名稱

            string connStr = "server=" + dbHost + ";uid=" + dbUser + ";pwd=" + dbPass + ";database=" + dbName;
            MySqlConnection conn = new MySqlConnection(connStr);
            MySqlCommand command = conn.CreateCommand();
            conn.Open();

            String cmdText = "select * from developer";
            MySqlCommand cmd = new MySqlCommand(cmdText, conn);
            MySqlDataReader reader = cmd.ExecuteReader(); //execure the reader
            while (reader.Read())
            {
                for (int i = 0; i < 3; i++)//i代表column數量
                {
                    String s = reader.GetString(i);
                    Console.Write(s + "\t");
                }
                Console.Write("\n");
            }


            Console.ReadLine();
            conn.Close();
    } 
程式執行結果,在輸出視窗可看到(developer table有三個欄位,兩列資料):
    1    jenny   $2a$10$nFcuJ5U4yvUee/5.hL4TUOre79V606fkl8Qcrhp6J21kGiO68oFCm 
    2    hank    $2a$10$.nR2tQIVzSl0wy2sV7J3F.BtfiswH5bk1CJbicoxFVy/pa5gDnalu 

直接印出connStr會是以下的樣子
        server=127.0.0.1;uid=root;pwd=;database=api

上面這段程式碼,有兩個重要的東西,連接字串與MySqlConnection物件:
在書裡《Visual C# 資料庫程式設計暨進銷存系統實作 2012 /松崗》
  連接字串:Data Source=BENNY-VAIO;Initial Catalog=XIN;User ID=sa; Password=sa;
    意思為資料來源:BENNY-VAIO、資料庫:XIN、使用者名稱:sa、密碼:sa
    很明顯地看到書上與上面程式碼的連接字串有所不同,
    書上用Data Source、Initial Catalog來代表連接來源與資料庫名稱,
    而網路上找到的則使用Server、Database,
    後來一查發現,都可以使用,都為同義字。
  在ADO.NET裡,不同的 Data Provider 對應不同的 Connection 物件,
    舉幾個例子:
      SQL Server .NET Data Provider 對應 SqlConnection 物件
      OLE DB .NET Data Provider 對應 OleDbConnection 物件
      Open Database Connectivity (ODBC) .NET Data Provider 對應 OdbcConnection 物件
      ORACLE .NET Data Provider 對應 OracleConnection 物件
  而在我們這個範例中因為使用的是Mysql,所以我們的 Connection 物件為 MySqlConnection。
另外,要完成資料庫連線資源的釋放,必須經過三個步驟:

關閉連接

        conn.Close();

釋放記憶體

        conn.Dispose();

設成null

        conn = null;

參考資料