2010年2月8日 星期一

Android 相關程式碼由Linux核心中被移除

我是從 http://freesf.tw/modules/news/article.php?storyid=3800 看到這個新聞

Android 相關程式碼由Linux核心中被移除

Linux Kernel的維護者Greg Kroah-Hartman宣佈,將Android 代碼從
Linux kernel 代碼庫中刪除。這意味著,Linux Kernel的開發小組不認可
Android的貢獻,兩者產生了衝突。
由於Google在kernel和應用程序之間,自己做了一個中間層,這樣就既不違反GPL
許可,又能不讓外界看到廠商的硬件驅動和應用程序的源碼。
因此導致所有為Android寫的硬件驅動,都不能合併入kernel。因為它們只在Google
的代碼裡有效,在kernel裡根本沒法用。

=========================================================

對我來說,證實我以前的認知。我之前跟工研院的朋友討論過,使用 GPL 的程式是不是會導致自己的程式也要公開?
關於這個部份,google 給了我們一個示範。
我們用反面來想,「若是任何使用GPL程式的程式都要開放」這條件成立,linux平台就不會有 close source 的程式出現,現實上,的確有 close source 的程式,因此,必定有方法可以達成;連同 google 做的事來看,「為了避開 driver 要公開,google 寫了中間層來分開。」明白的表示,寫中間層,是一個合理、合法的方法,使得 kernel team 拿出最強手段,把 Android 全拿掉。

對,如果真的有疑慮,又懶得找怎麼避開GPL,就寫個中間層吧。

2010年1月21日 星期四

[SQL]SQL Server 遠端連線

除了大家都會知道的把遠端連線開啟之外,我卡在別的地方。
就是帳號密碼的設定。
SQL Server 可以採用純 windows 認證及 SQL Server 混合式認證。
而我,自己搞不清楚之間的不同,卡住一個星期。
在我的組態如下:
WEB Server 在電腦A,SQL Server 在電腦B,兩台都沒有加入網域。
SQL Serser 的管理只設定了 電腦B\administrator。
使用混合式認證。
當我在電腦A要連線 SQL Server 時,以下指令都失敗
(1)sqlcmd –S 電腦B
(2)sqlcmd –S 電腦B –U administrator
(3)sqlcmd –S 電腦B –U 電腦B\administrator
原因是
(1)的方式,是採用 windows 認證,user是電腦A當時的登入的帳號。電腦B裡沒有這個帳號,所以失敗。
(2)的方式,當有加入 –U 時,就是使用 SQL Server 認證,而 administrator 不在 SQL Server 使用者內。所以失敗。
(3)的方式,使用 SQL Server 認證,帳號是 windows 的帳號,這個樣子也是失敗。
遇到事情卡很久,果然休息是有用的,晚上睡覺的時候,突然靈感一來,
隔天先在電腦B的SQL Server新增一個 user,並增加他的權限到可以登入。然後再試一次
(4)sqlcmd –S 電腦B –U user
就解決了 connect string 的問題了。這是採用 SQL Server 認證的問題。

但是!
如果要使用 windows 認證呢?
現在還不知道,但是我想應該就要加入網域,使得 SQL Server 可以加入 電腦A\user 到 SQL Server 使用者裡。
這一段還需要時間來實作了。
有人知道的話,可以教我嗎?

2010年1月20日 星期三

[SQL]找出table的schema

找到的這個資料實在太棒了,一舉數得。
http://www.dotblogs.com.tw/lolota/archive/2009/09/05/10441.aspx

真的是順便學了很多 connection.GetSchema 的用法。

string[] restrictions = new string[4];
        restrictions[0] = "Northwind";
        restrictions[2] = "Employees";

        System.Data.SqlClient.SqlConnection conn = new System.Data.SqlClient.SqlConnection(connStr);
        conn.Open();
        DataTable dt = conn.GetSchema("Columns", restrictions);
        conn.Close();
        GridView1.DataSource = dt;
        GridView1.DataBind();

[SQL]利用ADO找出現有的table

網路上找到且我試用過的方法有兩個

sqlconn = new System.Data.SqlClient.SqlConnection();
sqlconn.ConnectionString = connectstring;
sqlconn.Open();

// method 1
DataTable dt = sqlconn.GetSchema();
DataTable dt2 = sqlconn.GetSchema("Tables");
Literal1.Text= printTable(dt2);

// skill for write xml to string
//System.IO.StringWriter a=new System.IO.StringWriter();
//dt2.WriteXmlSchema(a);
//Response.Write(a.ToString());

// method 2
DataTable dt3 = new DataTable("Tables");
string commandstring = "select TABLE_NAME from INFORMATION_SCHEMA.Tables where TABLE_TYPE ='BASE TABLE'";
System.Data.SqlClient.SqlCommand sqlcmd = sqlconn.CreateCommand();
sqlcmd.CommandText = commandstring;
dt3.Load(sqlcmd.ExecuteReader());
Literal2.Text= printTable(dt3);

sqlconn.Close();

[SQL]SQL Server Express 連線字串

有個好網站可以參考
http://www.connectionstrings.com/sql-server-2005

目前我的組態是 IIS, ASP.NET, SQL Server Express 2005 都在本機。
ASP.NET 固定所使用的 username 據說是 NT AUTHORITY\NETWORK SERVICE
所以要把這個帳號加到 SQL Server 去。可參考
http://social.msdn.microsoft.com/forums/zh-TW/240/thread/011579f2-d3a6-4c2b-a7dc-b689d1e08acc

現在測試過成功的字串是
server=facetdev\sqlexpress;database=facetdb;integrated security=SSPI;

不成功的字串是
server=facetdev\sqlexpress;database=facetdb;uid=administrator;pwd=;
出現 error 為
使用者 'administrator' 的登入失敗。

若出現 error 為
當發生使用者 ' username ' 登入失敗。 使用者將無法與受信任的 SQL Server 連接相關聯。
則是要把 SQL Server Express 的認證模式改為「 混合模式 (Windows 的帳戶驗證 」 及 SQL Server 帳戶驗證) 」
可參考
http://www.dotblogs.com.tw/dotjum/archive/2009/03/31/7769.aspx

2010年1月12日 星期二

[www]html table column寬度不受控制

當table總寬度比整個畫面寬的時候,光是設定 th 或 td 的 width 還是不對勁。
還要設定 table 的 width 的總寬度,這樣才會是自己想要的樣子。

可以看 w3 對於 column width 的定義:
http://www.w3.org/TR/CSS21/tables.html#auto-table-layout

搞了整整兩天

2010年1月8日 星期五

[javascript]指定frame的location

parent 是指目前frame的上一層
top 是指最高的一層