2009年12月5日 星期六
檔案無法存取、記憶體或磁碟空間不足,因此無法開啟資料庫 '%.*ls'。詳細資訊請參閱 SQL Server 錯誤記錄檔。
目前已解決, 解決辦法:
1. 服務停止, 將mdf檔移開到別處, ldf 可以刪除(若不需要交易log時)
2. 原資料夾建立一個相同的資料庫名 (例Test)
3. 定Test資料庫狀態為EMERGENCY:
ALTER DATABASE Test SET EMERGENCY
4. 設定Test資料庫模式為"單一使用者":
sp_dboption 'Test', 'single user', 'true'
5. 檢查指定資料庫中所有物件的配置、結構和邏輯完整性:
DBCC CHECKDB (Test, REPAIR_ALLOW_DATA_LOSS)
6. 還原Test資料庫模式:
sp_dboption 'Test', 'single user', 'false'
7. 設定Test資料庫狀態為ONLINE:
ALTER DATABASE Test SET ONLINE
以上解決資料庫異常不能附加的問題, 不過一些設定也掉了, 要再重新設定!
資料庫連線字串 Connection string
SQL Server 2008
Oracle
MySQL
Excel 密碼破解
Dim i As Integer, j As Integer, k As Integer
Dim l As Integer, m As Integer, n As Integer
Dim i1 As Integer, i2 As Integer, i3 As Integer
Dim i4 As Integer, i5 As Integer, i6 As Integer
On Error Resume Next
For i = 65 To 66: For j = 65 To 66: For k = 65 To 66
For l = 65 To 66: For m = 65 To 66: For i1 = 65 To 66
For i2 = 65 To 66: For i3 = 65 To 66: For i4 = 65 To 66
For i5 = 65 To 66: For i6 = 65 To 66: For n = 32 To 126
ActiveSheet.Unprotect Chr(i) & Chr(j) & Chr(k) & Chr(l) & Chr(m) & Chr(i1) & Chr(i2) & Chr(i3) & Chr(i4) & Chr(i5) & Chr(i6) & Chr(n)
If ActiveSheet.ProtectContents = False Then
MsgBox "One usable password is " & Chr(i) & Chr(j) & Chr(k) & Chr(l) & Chr(m) & Chr(i1) & Chr(i2) & Chr(i3) & Chr(i4) & Chr(i5) & Chr(i6) & Chr(n)
ActiveWorkbook.Sheets(1).Select
Range("a1").FormulaR1C1 = Chr(i) & Chr(j) & Chr(k) & Chr(l) & Chr(m) & Chr(i1) & Chr(i2) & Chr(i3) & Chr(i4) & Chr(i5) & Chr(i6) & Chr(n)
Exit Sub
End If
Next: Next: Next: Next: Next: Next
Next: Next: Next: Next: Next: Next
End Sub
Ubuntu Change fonts (Ubuntu 字型更換)
將新字體檔案複製到下列目錄中,需以root權限複製
/usr/share/fonts
ex:
sudo cp /home/user/newfonts.tff /usr/share/fonts
將新增的字體載入,執行下列指令
fc-cache -v -f /usr/share/fonts/
完成後就可以選新字體來用嚕!
GNOME 快捷鍵 快速鍵
GNOME快捷鍵
通用快捷鍵
Alt + F1 類似Windows下的Win鍵,在GNOME中打開"應用程序"菜單(Applications)Alt + F2 類似Windows下的Win + R組合鍵,在GNOME中運行應用程序
Ctrl + Alt + D 類似Windows下的Win + D組合鍵,顯示桌面
Ctrl + Alt + L 鎖定桌面並啟動屏幕保護程序
Ctrl + Alt + → / ← 在不同工作台間切換
Ctrl + Alt + Shift + → / ← 移動當前窗口到不同工作台
Ubuntu通用快捷鍵
PrintScreen 全屏抓圖Alt + PrintScreen 當前窗口抓圖
Ctrl+ Alt+ F1-F4 進入全屏終端
Ctrl+ Alt+ F7 返回桌面
<--Ctrl+Alt+Shift+F8 未知(終端或模擬終端)
Ctrl+Alt+Shift+Fn 終端N或模擬終端N(n和N為數字1-6) -->
窗口操作快捷鍵(Metacity窗口管理器)
滑鼠操作
Shift + 中鍵 拖拽文件圖標,移動菜單Alt + 左鍵 拖拽移動窗口
Alt + Shift + 左鍵 拖拽移動窗口並且可以使窗口停留在邊緣位置
Alt + 右鍵 彈出窗口管理器菜單
Alt + 中鍵 拖拽改變窗口大小
純鍵盤
Alt + ESC 在不同程序窗口間切換Alt + Tab 為了兼容Windows下的Alt + Tab組合鍵習慣,提供的第二個「在不同程序窗口間切換」
Alt + F4 關閉窗口
Alt + F5 取消最大化窗口 (恢復窗口原來的大小)
Alt + F7 移動窗口 (注: 在窗口最大化的狀態下無效)
Alt + F8 改變窗口大小 (注: 在窗口最大化的狀態下無效)
Alt + F9 最小化窗口
Alt + F10 最大化窗口
Alt + Space 打開窗口的控制菜單 (點擊窗口左上角圖標出現的菜單)
應用程序中的常用快捷鍵
(注: 並不適用於所有程序)Ctrl+N 新建窗口
Ctrl+X 剪切
Ctrl+C 複製
Ctrl+V 粘貼
Ctrl+Z 撤銷上一步操作
Ctrl+Shift+Z / Ctrl+Y 重做剛撤銷的一步操作
Ctrl+S 保存
Ctrl+B 書籤
文件瀏覽器(部分)
Ctrl+H 顯示隱藏文件(切換鍵)Ctrl+T 新建標籤
Ctrl+W 關閉標籤
Ctrl+Page Up 上一個標籤
Ctrl+Page Down 下一個標籤
Alt+N 切換到第N個標籤(N為數字)
在Ubuntu中自定義快捷鍵
訪問「System>Preferences>Keyboard Shortcuts」,選定想要設置的項目,然後鍵入快捷鍵即可生效。net use
net use "\\server\yourpath\" password /user:"username"
把連線指定到你本機的磁碟機Z:
net use Z:"\\server\yourpath\" password /user:"username"
微軟官方的範例。
Examples
若要將磁碟機裝置名稱 E:指派到 \\Financial 伺服器上的 Letters 共用目錄,請輸入:net use e:\\financial\letters
若要將磁碟機裝置名稱 M:指派 (對應) 到 \\Financial NetWare 伺服器之 Letters 磁碟區內的 Mike 目錄,請輸入:
net use m:\\financial\letters\mike
若要連接使用者識別元 Dan (就像從「帳戶」網域所作的連線一樣),請輸入:
net use d:\\server\share /user:Accounts\Dan
若要將磁碟機裝置名稱 F:指派到命名為 TargetName 之 MSN Internet Access 社群內的檔案櫃 (使用 Passport 帳戶 UserName@passport.com),請輸入:
net use f:http://www.msnusers.com/TargetName/user:UserName@passport.com
若要中斷自 \\Financial\Public 目錄的連線,請輸入:
net use f:\\financial\public /delete
若要與 \\Financial 2 伺服器上的共用資源備忘錄連線,請輸入:
net use k:"\\financial 2" \memos
Virtual Box USB 反白 不能使用
檢查 /etc/udev/rules.d/10-vboxdrv.rules
限定要 vboxusers 才能使用這些 usb 的裝置
解決辦法
將使用者加到 vboxusers 裡面就可以正常使用 virtualbox 的 usb 裝置了。
2009年3月18日 星期三
如何疑難排解損毀的 Word 文件
避免文件損毀問題的最好方法就是保留文件的備份。如果您沒有文件的備份,可以使用本文的疑難排解程序來辨識損壞的 Microsoft Word 文件,並在可能的情況下進行復原。
http://www.experts-exchange.com/Software/Office_Productivity/Office_Suites/MS_Office/Word/Q_23998868.html
http://support.microsoft.com/kb/826864
2009年2月7日 星期六
RSA 混合 TripleDES 加密
以另一種方式來達成→公鑰加密 檔案 →私鑰解密 檔案
另有
壓縮後加密 → 解密後解壓縮
2009年2月4日 星期三
C++ 學習筆記 入門教學
無論如何 先來個 "Hello! World!" 顯示一下程式執行結果,增加一點撰寫程式的信心!接著就耐心的瞭解一下 C++ 的資料型態,以認識一下變數、常數。
程式的目的簡單的說就是運算、運算還是運算,加減乘除這類的動作是少不得的,在C++中提供運算功能的就是運算子(Operator)。
流程控制語法是程式設計的基本,藉由各種條件判斷與迴圈重覆執行語法,您可以令您的程式因應不同的狀況而作出不同的回應。
各種型態的陣列各有其不同的用途,但無論如何,先從基本型態的一維陣列、二維陣列開始認識起。
C++提供了內建陣列的替代型態 vector,vector 可以如同陣列一般的操作,並記得自己的長度資訊,您也可以使用物件的方式來操作 vector 。
字串的本質是字元陣列,而在C++中還可以使用string類別來表現字串,兩者都有瞭解的必要。
指標可指向一個記憶體位址,可對物件作間接操作,指標擁有型態,這用來告訴編譯器如何解釋記憶體空間的內容,以及每一次運算的大小。
先簡介一些與函式定義相關的幾個語法,並談談幾個變數可視範圍的議題。
遞迴呼叫、傳值、傳址、傳參考等,這些議題在函式的使用上關乎執行資源的使用與效率問題。
封裝物件資訊是第一步,您要瞭解如何使用類別定義物件,像是定義物件的屬性、行為等等,類別是建構物件 時所依賴的規格書。
一些有關於指標、運算子重載、特殊型態類別的相關議題。
您可以繼承某個(父)類別的定義並加以擴充,而制訂出一個新的(子)類別定義。
多型操作在物件 導向設計中伴演著極重要的角色,使用的適當與否,足以 影響程式的架構與未來的可維護性。
首先來看看基本的格式控制,以及 << 、 >> 運算子的重載。
檔案的輸出輸入是 I/O 的基本,為認識 I/O 的入門必學。
|
Design Pattern 設計模式
- Gof 模式
- Structural 模式
- Behavioral 模式
- 多執行緒模式
- Guarded Suspension 模式
- Producer Consumer 模式
- Worker Thread 模式
- Thread-Per-Message 模式
- Future 模式
- Read-Write-Lock 模式
- Two-phase Termination 模式
- Thread-Specific Storage 模式
- 參考資料
使用者入門 (Visual C++ 中的 [如何?])
- 逐步解說:使用 Visual Studio IDE
-
介紹 Visual Studio 整合式開發環境 (IDE),並示範適用於 Visual C++ 開發人員的有用功能。
- HOW TO:編譯針對 Visual Studio 中 CLR 的 C++ 程式
-
示範如何使用 Visual Studio IDE 編譯 Visual C++ 程式。
- HOW TO:編譯說明主題的程式碼範例
-
示範如何編譯 Visual Studio 隨附的說明主題中的程式碼範例。
- HOW TO:從命令列編譯原生 C++ 程式
-
示範如何從命令列編譯 Visual C++ 程式。
- HOW TO:搭配 Microsoft Platform SDK 使用 Visual C++ Express 版
-
提供安裝 Microsoft Platform SDK 以搭配使用 Visual C++ Express Edition 的指示。
- 針對 UNIX 使用者的 Visual C++ 簡介
-
向 Microsoft 環境的新手開發人員介紹 Visual Studio 和 Visual C++。
- HOW TO:從現有程式碼建立 C++ 專案
-
示範如何將現有的程式碼匯入至 Visual Studio。

- HOW TO:建立 Windows Form 應用程式
-
解說如何使用 Visual Studio 建立 Windows Form 應用程式。
- 逐步解說:建立 Windows Form 控制項
-
解說如何使用 Visual Studio 建立 Windows Form 控制項,以及如何在應用程式中使用該控制項。
- ASP.NET Web 服務範本 (C++)
-
介紹用來編寫 XML Web Service 的 ASP.NET Web 服務範本。
- 建立和開發 Managed 裝置專案
-
討論針對 Managed 裝置和針對桌上型電腦進行開發的一些差異性。
- HOW TO:建立 SQL Server 專案 (C++)
-
提供 SQL Server 類別庫範本的概觀。
- CLR 主控台應用程式範本 (C++)
-
介紹主控台應用程式範本,它可用來建立會從命令列執行的應用程式。
- 逐步解說:建立和使用 Managed 組件
-
示範如何建立 Managed 組件,以及如何從另一個應用程式來使用該組件。

- HOW TO:建立 Standard C++ 程式
-
解說如何使用 Visual Studio 建立及編譯標準的 C++ 程式。
- MFC 應用程式精靈
-
解說如何使用 MFC 應用程式精靈建立 MFC 應用程式。
- MFC ActiveX 控制項精靈
-
解說如何使用 MFC ActiveX 控制項精靈建立 MFC ActiveX 控制項。
- Win32 應用程式精靈
-
解說如何使用 Win32 應用程式精靈建立標準的 C++ 程式。
- MFC DLL 精靈
-
解說如何使用 MFC DLL 精靈建立 MFC 動態連結程式庫。
- ATL 專案精靈
-
解說如何使用 ATL 專案精靈建立 Active Template Library 應用程式。
- ATL Server 專案精靈
-
解說如何使用 ATL Server 專案精靈建立原生 XML Web Service 應用程式。
- Windows 服務範本 (C++)
-
解說如何使用 Windows 服務範本建立 Windows 服務,Windows 服務是一種會在它自己的 Windows 工作階段中長時間執行的可執行應用程式。
- 建立及移植 Visual C++ 裝置專案
-
包含有關建立新 Visual C++ 裝置專案的主題,以及有關可讓現有專案在 Visual Studio 2005 環境中鎖定裝置的主題。
- 逐步解說:建立和使用動態連結程式庫
-
示範如何建立動態連結程式庫,以及如何從另一個應用程式來使用該 DLL。

- C++ 語言 (Visual C++ 中的 [如何?])
-
介紹用來鎖定 Common Language Runtime (CLR) 為目標的 C++ 新語法。

- HOW TO:讀取二進位檔案
-
示範如何從檔案讀取二進位資料。
- HOW TO:寫入二進位檔案
-
示範如何將二進位資料寫入檔案中。
- HOW TO:讀取文字檔
-
示範如何開啟文字檔,並一次讀取一行。
- HOW TO:寫入文字檔
-
示範如何使用 StreamWriter 類別建立文字檔,並將文字寫入到這個檔案中。
- HOW TO:列舉目錄中的檔案
-
示範如何擷取目錄中的檔案之清單。
- HOW TO:監視檔案系統變更
-
使用 FileSystemWatcher 來註冊建立、變更、刪除或重新命名檔案的對應事件。
- HOW TO:擷取檔案資訊
-
示範 FileInfo 類別。當您知道檔案名稱時,您可以使用這個類別擷取檔案的資訊,例如檔案大小、目錄、完整名稱以及建立和上次修改的日期和時間。

- HOW TO:將資料寫入至 Windows 登錄
-
使用 CurrentUser 機碼來建立 RegistryKey 類別的可寫入執行個體。
- HOW TO:從 Windows 登錄讀取資料
-
使用 CurrentUser 機碼來從 Windows 登錄讀取資料。
- HOW TO:從剪貼簿擷取文字
-
使用 GetDataObject 成員函式來傳回 IDataObject 介面的指標,然後即可對此介面查詢資料的格式,並用來擷取實際的資料。
- HOW TO:將文字儲存在剪貼簿中
-
使用 System.Windows.Forms 命名空間中所定義的 Clipboard 物件來儲存字串。
- HOW TO:擷取 Windows 版本
-
示範如何擷取目前作業系統的平台和版本的資訊。
- HOW TO:擷取自啟動後經過的時間
-
示範如何判斷 Windows 啟動之後所經歷的時間滴答計數或是毫秒數。
2009年1月15日 星期四
C# Compress Decompress byte[] 壓縮 解壓縮 byte[]
{
try
{
MemoryStream ms = new MemoryStream();
GZipStream zip = new GZipStream(ms, CompressionMode.Compress, true);
zip.Write(buffer, 0, buffer.Length);
zip.Close();
ms.Position = 0;
MemoryStream outStream = new MemoryStream();
byte[] compressed = new byte[ms.Length];
ms.Read(compressed, 0, compressed.Length);
byte[] gzBuffer = new byte[compressed.Length + 4];
Buffer.BlockCopy(compressed, 0, gzBuffer, 4, compressed.Length);
Buffer.BlockCopy(BitConverter.GetBytes(buffer.Length), 0, gzBuffer, 0, 4);
return gzBuffer;
}
catch (Exception ex)
{
throw new Exception(ex.ToString());
}
}
public static byte[] Decompress(byte[] gzBuffer)
{
try
{
MemoryStream ms = new MemoryStream();
int msgLength = BitConverter.ToInt32(gzBuffer, 0);
ms.Write(gzBuffer, 4, gzBuffer.Length - 4);
byte[] buffer = new byte[msgLength];
ms.Position = 0;
GZipStream zip = new GZipStream(ms, CompressionMode.Decompress);
zip.Read(buffer, 0, buffer.Length);
return buffer;
}
catch (Exception ex)
{
throw new Exception(ex.ToString());
}
}
C# 對稱 加密 解密 演算法 程式範例
using System;
using System.IO;
using System.Security.Cryptography;
using System.Text;
namespace DataCrypto
{
///
/// 對稱加密演算法
///
public class SymmetricMethod
{
private SymmetricAlgorithm mobjCryptoService;
private string Key;
///
/// 對稱加密的構造函數
///
public SymmetricMethod()
{
mobjCryptoService = new RijndaelManaged();
Key = "Guz(%&hj7x89H$yuBI0456FtmaT5&fvHUFCy76*h%(HilJ$lhj!y6&(*jkP87jH7";
}
///
/// 獲得密鑰
///
/// 密鑰
private byte[] GetLegalKey()
{
string sTemp = Key;
mobjCryptoService.GenerateKey();
byte[] bytTemp = mobjCryptoService.Key;
int KeyLength = bytTemp.Length;
if (sTemp.Length > KeyLength)
sTemp = sTemp.Substring(0, KeyLength);
else if (sTemp.Length < stemp =" sTemp.PadRight(KeyLength," stemp = "E4ghj*Ghg7!rNIfb&95GUY86GfghUb#er57HBh(u%g6HJ($jhWk7&!hg4ui%$hjk" byttemp =" mobjCryptoService.IV;" ivlength =" bytTemp.Length;"> IVLength)
sTemp = sTemp.Substring(0, IVLength);
else if (sTemp.Length < stemp =" sTemp.PadRight(IVLength,">
/// 加密
///
///
待加密的串
/// 經過加密的串
public string Encrypto(string Source)
{
byte[] bytIn = UTF8Encoding.UTF8.GetBytes(Source);
MemoryStream ms = new MemoryStream();
mobjCryptoService.Key = GetLegalKey();
mobjCryptoService.IV = GetLegalIV();
ICryptoTransform encrypto = mobjCryptoService.CreateEncryptor();
CryptoStream cs = new CryptoStream(ms, encrypto, CryptoStreamMode.Write);
cs.Write(bytIn, 0, bytIn.Length);
cs.FlushFinalBlock();
ms.Close();
byte[] bytOut = ms.ToArray();
return Convert.ToBase64String(bytOut);
}
///
/// 解密方法
///
/// 待解密的串
/// 經過解密的串
public string Decrypto(string Source)
{
byte[] bytIn = Convert.FromBase64String(Source);
MemoryStream ms = new MemoryStream(bytIn, 0, bytIn.Length);
mobjCryptoService.Key = GetLegalKey();
mobjCryptoService.IV = GetLegalIV();
ICryptoTransform encrypto = mobjCryptoService.CreateDecryptor();
CryptoStream cs = new CryptoStream(ms, encrypto, CryptoStreamMode.Read);
StreamReader sr = new StreamReader(cs);
return sr.ReadToEnd();
}
}
}
2009年1月5日 星期一
Web Service 透過IE 非本機叫用
在 <system.web> </system.web> 區段中加入下面這一段
<webServices>
<protocols>
<add name="HttpGet" />
<add name="HttpPost" />
</protocols>
</webServices>