今早列印 Visual Studio 2010 Training Kit 的文件時,出現了下面的狀況。
嚇了一跳,還好很快就印完了。看了一下原來 word 的檔案,只有 3MB 而已.
有時候真不知道是 Windows 的問題,還是印表機 driver 的問題呢。
今早列印 Visual Studio 2010 Training Kit 的文件時,出現了下面的狀況。
嚇了一跳,還好很快就印完了。看了一下原來 word 的檔案,只有 3MB 而已.
有時候真不知道是 Windows 的問題,還是印表機 driver 的問題呢。
看了一些 MOSS 2010 的新開發特色後,迫不及待的想試一下 OData 的實作。輸入 http://moss/_vti_bin/listdata.svc 後,原本預期出現的 atom xml 並未出現,取而待之的是會錯誤訊息。
無法從組件 'System.Data.Services, Version=3.5.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089' 載入型別 'System.Data.Services.Providers.IDataServiceUpdateProvider'。
怎麼會這樣呢?
參考這一篇 blog,下載 ADO.NET Data Services Update 並安裝,重新開機之後就ok了。
MOSS 2010 的介面(V4)固然好用,但使用者不習慣,不買單,也莫可奈何。
如果選了「更新使用者介面」並按確定了,Site Administrator 也就沒有 UI 可以換回 MOSS 2007 (V3) 的版本了 。
幸好,還可以寫程式。不過,寫 Code 還要 compile,太麻煩了。
MOSS 新版的 2010 有 PowerShell 可以使用。
$site = Get-SPSite("http://mosserver")
$web = $site.OpenWeb("path1/path2/path3")
$web.UIVersion = 3
$web.Update()
$web.Dispose()
$site.Dispose()
有興趣的人自己下載吧!
http://windows.microsoft.com/en-US/internet-explorer/downloads/ie-9/worldwide-languages
IE9 可能沒什麼了不起,只是市面上常見的標準,它大部份的通過了。
如下表。
http://samples.msdn.microsoft.com/ietestcenter/
PS: 這個是微軟自己測試的報告,測試當然會很好看。 (IE 8 簡直把標準當參考。)
當然,IE 9 也需要開發人員的支持。Internet Explorer 9 開發者指南 就這樣產生了。在這份指南中,也大部份都在講 CSS3, HTML5 等標準
這個很怪。剛開始完全弄不懂。
發生的是這樣子。我有一台伺服器,例如 serverA, FQDA 是 serverA.domainA。
為了作業方便,對內對外我希望是 serverB.domainB 都可以存取。在其他的伺服器都可以存取,但在這個伺服器,使用 http://serverB.domainB 時,會拋出 Windows 的驗證。而無論怎麼打帳密都不會過。此時,只要使用 http://localhost, http://serverA, http://serverA.domainA, 都會過,唯獨本機時不過.
在事件檢視器中會出現下面的錯誤
- <Event xmlns="http://schemas.microsoft.com/win/2004/08/events/event">
- <System>
<Provider Name="Microsoft-Windows-Security-Auditing" Guid="{54849625-5478-4994-A5BA-3E3B0328C30D}" />
<EventID>4625</EventID>
<Version>0</Version>
<Level>0</Level>
<Task>12544</Task>
<Opcode>0</Opcode>
<Keywords>0x8010000000000000</Keywords>
<TimeCreated SystemTime="2011-02-01T02:13:08.330597300Z" />
<EventRecordID>42135</EventRecordID>
<Correlation />
<Execution ProcessID="528" ThreadID="580" />
<Channel>Security</Channel>
<Computer>PTTFS.pt.bankpro</Computer>
<Security />
</System>
- <EventData>
<Data Name="SubjectUserSid">S-1-0-0</Data>
<Data Name="SubjectUserName">-</Data>
<Data Name="SubjectDomainName">-</Data>
<Data Name="SubjectLogonId">0x0</Data>
<Data Name="TargetUserSid">S-1-0-0</Data>
<Data Name="TargetUserName">administrator</Data>
<Data Name="TargetDomainName">PT</Data>
<Data Name="Status">0xc000006d</Data>
<Data Name="FailureReason">%%2304</Data>
<Data Name="SubStatus">0x0</Data>
<Data Name="LogonType">3</Data>
<Data Name="LogonProcessName" />
<Data Name="AuthenticationPackageName">NTLM</Data>
<Data Name="WorkstationName">PTTFS</Data>
<Data Name="TransmittedServices">-</Data>
<Data Name="LmPackageName">-</Data>
<Data Name="KeyLength">0</Data>
<Data Name="ProcessId">0x0</Data>
<Data Name="ProcessName">-</Data>
<Data Name="IpAddress">172.18.1.31</Data>
<Data Name="IpPort">56489</Data>
</EventData>
</Event>
使用 0xc000006d 當關鍵用,到Bing 搜尋一下找到一篇
這裡寫出了解法,並且原是:防止 DoS 攻擊。很怪吧!
解法是,在 registry 中,在 增加
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Lsa\MSV1_0 下新增一個名為 BackConnectionHostNames 的 MultiString,值就輸入 serverB.domainB。
這樣就解除了這個問題.
WPF 的應用程式如何自動更新呢?照目前微軟的建議,會使用ClickOnce 的方式來部署。之後,程式就可以照ClickOnce的方式來更新了。
以下是簡單的範例。
xaml
<Window x:Class="AutoUpdate.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="MainWindow" Height="350" Width="525">
<Grid>
<StackPanel Name="panel">
<TextBlock Text="V1" />
</StackPanel>
</Grid>
</Window>
code
using System.Deployment.Application;
using System.Windows;
using System.Windows.Controls;
namespace AutoUpdate
{
public partial class MainWindow : Window
{
public MainWindow()
{
InitializeComponent();
AutoUpdateIt();
}
private void AutoUpdateIt()
{
if (ApplicationDeployment.IsNetworkDeployed)
{
var ad = ApplicationDeployment.CurrentDeployment;
var info = ad.CheckForDetailedUpdate();
if (info.UpdateAvailable)
{
UpdateApp();
DisplayRestartMessage();
}
}
}
private void UpdateApp()
{
ApplicationDeployment ad = ApplicationDeployment.CurrentDeployment;
ad.Update();
}
private void DisplayRestartMessage()
{
var newText = new TextBlock { Text = "程式已經更新。請重新啟動程式" };
panel.Children.Add(newText);
var button = new Button() { Content = "Restart" };
button.Click += (sender, e) => Restart(sender, null);
panel.Children.Add(button);
}
private void Restart(object sender, RoutedEventArgs e)
{
System.Windows.Forms.Application.Restart();
Application.Current.Shutdown();
}
}
}
程式非常簡單。當程式運作時,發現了有新的版本,就自動下載並更新。更新完後,顯示訊息並讓使用者按「Restart」鍵重新啟動程式。
範例程式下載
前天參加了微軟 PDW 的產品發表會,心知微軟的 SQL Server 產品真的是愈來愈強大了。
發表會中又再次提到了SQL Azure 資料庫。心想,不使用一下真的不太行。真的狠下心了,照著小朱的方法,註冊了一個帳號,花個小錢來試用一下。
除了註冊這一回事是比較囉嗦之外,在使用 SQL Azure 真的是極其簡單。直接使用 SSMS (SQL Server Management Studio) 來管理資料庫就可以了。
但是,我的目的仍在於試用。看看SQL Azure雲端資料庫與一般的SQL Server使用上到底有什麼不同處?
其實在 General Guidelines and Limitations (SQL Azure Database) 中已經提到了。但資料實在太多,還是只有親自使用一下才能了解真正的差異。
雲端資料庫不需要備份/還原,因為這樣的常見的資料庫管理工作已經不需要專責DBA來執行。當我們寫一份資料到SQL Azure,其實最後會儲存到三個地方。SQL Azure 在同一個資料中心(Data Center)會有兩份一模一樣的資料,當Server A掛掉時,Server B 立即取代。在另一個資料中心(不同的地理位置)還會備份一份資料,做為異地備援。換句話說,真正達到 High Availibility(高可用性)。
可是我已經習慣使用備份/還原的方式來作業了。這一點真的是很不習慣。可能是我之前習慣不好。
我們也常用 SQL Server Agent 的 Job 來排程作業,執行常見的 SQL script。這一點也無法在 SQL Azure被設定了。
sql script 的效能不好?我當然會使用SQL Profiler 看一指令執行的效能資訊。然而,SQL Profiler 無法在 SQL Azure 上執行。
謎之聲:當雲端資料庫的校能不好時,要用什麼工具看效能狀況啊?
之前在 SQL Server 的管理經驗,在SQL Azure 可能都不管用了。DBA 常用的 sp_configure,在 SQL Azure 上是不被接受的。
很棒,執行效能與自行建置的SQL Server 幾乎沒兩樣。除了 SSMS 管理時效能似乎慢了一些,但在AP 在執行SQL 指令時的效能似乎沒有任何差別,只看當時的網路狀況。
(待持續整理)