發表文章

目前顯示的是 2013的文章

Oracle 運算符號的優先級

1. 先乘除,後加減 2. 相同優先層級,由左至右 3. 先處理括號裡的運算 reference web: http://rritw.com/a/bianchengyuyan/C__/20121203/264698.html

VMWare Esxi 如何輸入序號

圖片
A. VMWare Esxi 官方有提供免費版本,所以只要先到官方網站注冊一個帳號後,就可以取得一組序號 B. 沒有注冊的話,就有使用天數的限制 (實際天數忘了) C. 下圖可以知道要在哪裡輸入序號    1. 點選 VM主機    2. 點選 Configuration    3. 點選 Licensed Features    4. 點選下面 Aissgin a new license key to this host    5. 按下 Enter Key 貼上序號後, 確認就取消天數限制了

ORA-00845: MEMORY_TARGET not supported on this system

圖片
因為Oracle做了VM實體機器移轉後,開機後發生資料庫服務無法啟動的現象 sql> startup ORA-00845: MEMORY_TARGET not supported on this system google了一下,發現是oracle參數的[memory_target]設定的大小超過了[/dev/shm]的空間大小(資料庫服務無法啟動時,看不到也無法修改[memory_target]參數,這是後來開起來後回頭去查出來才知道的)。 根據文中說明,看起來oracle會使用此空間來加速程序 /dev/shm is also know as tmpfs i.e. temporary file system which keeps all the file system in virtual memory to speed up several processes. 查一下目前的FileSystem空間分配, # df -h 紅色框起來的地方size不夠,所以我們要利用下面的指令修改這個size。   # mount -o remount,size=10G /dev/shm 再利用df -h來檢查是否有放大了。此時再進行database startup時應該可以正常啟動服務了。 目前這種設定只要重開機設定就會跑掉,可以利用下面方法來修改系統設定,讓重開機也能運作這個設定值。 (我在Redhat Enterprice 6.0上實作這個部份,無效,加到 /etc/rc.local 中也沒有作用,以後有空再來試看看) 修改 file system table # vi /etc/fstab tempfs    /dev/shm    tmpfs    defaults,size=10G    0  0 然後更新 fstab檔案 # mount -a 重開機試試是否已生效。 reference web: http://www.golinuxhub.com/2012/09/how-to-fix-ora-00845-memorytarget-not.html

Linux Redhat Enterprice 6.0 開機失敗登入系統修医為讀寫模式

開機失敗後, 出現下面的提示, Checking filesystem ... Give root passwod for maintenance (or type Control-D to continue): 此時輸入完root密碼後, 進入的模式是唯讀狀態, 如果要修改設定或使用工具修復filesystem, 則需要先執行下面的指令來變更為可讀寫狀態, mount -n -o remount,rw / ps. o => 英文字母'歐'

Oracle exp 出現[EXP-00091: 匯出有問題的統計資料]的錯誤

使用 exp dump 資料庫時, 出現下面的錯誤。 . . 正在匯出表格            xxxxxxxxxxx  已匯出           1 列 EXP-00091: 匯出有問題的統計資料. EXP-00091: 匯出有問題的統計資料. 查了一下exp log看到原來是字元集不同造成的 連線至: Oracle Database 11g Release 11.2.0.1.0 - 64bit Production 已匯出 ZHT16MSWIN950 字元集和 AL16UTF16 NCHAR 字元集 伺服器使用 AL32UTF8 字元集 (可能的字元集轉換) 所以只要在匯出前指定字元集就可以避免此錯誤了。 set NLS_LANG=AMERICAN_AMERICA.AL32UTF8 exp user/passwd@dbtnsname file=xxx.dmp log=xxx.log

outlook 2003 常用問題

圖片
1.如何匯入通訊錄 「檔案/匯入及匯出/從其他程式或檔案匯入、Tab Separated Values(Windows)下一步、下一步完成。 2.如何設定通訊錄清單: 若要預設特定的項目通訊錄清單,就要在上方項目的頁籤中已畫上螢光色及紅圈的地方按下去後,選「工具/選項」,會跳出「地址設定」的視窗,就可以設定先顯示的通訊錄清單為…。 3.那要如何設定顯示通訊錄的名稱呢? 選連絡人的頁面,在連絡人的地方按下右鍵「摘要資訊」,選Outlook通訊錄,□ 框框中有打勾就出顯示在電子郵仔通訊鍵中,通訊錄名稱可在這個地方下「文字方塊」進行修改,按下確定即可

DELL 筆電開啟IE出現 藍屏死機

可以參考的網址: ieFans.Net  IE瀏覽器中文網站 http://www.iefans.net/ie9-lanping-siji-jiejue-fangfa/ 落跑蝸牛怎麼跑的掉咧 http://chihping.aflypen.com/4504.html 微 軟官方網站 http://support.microsoft.com/kb/2670838/zh-tw 主要是 微軟 Win 7 PATCH( KB2670838) 的升級對 顯示系統 做 改變,更新的項目與顯示卡驅動程式發生衝突的關係,解決方法就是「移除該更新」,或者「不使用 IE9 or IE 10」 可避免此問題,請大家自行選擇吧! 移除該更新: 移除的方法「開始/控制台/程式及功能」左方「檢視已安裝的更新」選項,找到IE9或IE10移除 KB2670838的更新項目。 亦可設定 更改IE9 GPU硬體加速操作步驟: 設定的方法 「開始/控制台/網際網路選項」切換到「進階」的選項,在設定的項目裡找到『使用軟體呈現,而不使用GPU呈現*』,在項目內打勾,點選「確定」重啟瀏覽器就可以了!

Oracle sqlldr

圖片
當有大量資料要匯入資料庫時, 也可以選擇使用sqlldr工具來完成, 好處如下, 如果是降級匯入資料(11g to 9i), 就沒辦法使用exp/imp完成 使用insert語法, 資料量大時執行要很久 以前我都是很認命的自己寫 control file, 後來發現Oracle SQL Developer很人性化的可以產生control file和data file, 方法如下, 1. 登入Oracle SQL Developer後, 找到要處理的Table 2. 點右鍵選擇[匯出]功能 3. 設定相關欄位 格式: 選擇loader 分隔符號: 選擇資料要分隔的符號, 常用 pipe 行結束字元: 每筆資料分隔(換行)的符號 另存新檔: 使用loader時要選擇個別檔案, 因為會產生control file(ctl)和data file (ldr)   4. 下一步後, 如果需要限制資料條件, 則在對應的Table右方輸入Where條件 5. 下一步後, 按下完成就會開始產生檔案 6. Control File (*.ctl) OPTIONS (ERRORS=50) LOAD DATA INFILE 'D:\ABC.ldr' "str '\r\n'" APPEND CONTINUEIF NEXT(1:1) = '#' INTO TABLE "MYDB"."ABC" FIELDS TERMINATED BY'|' OPTIONALLY ENCLOSED BY '"' AND '"' TRAILING NULLCOLS ( "ABC01" , "ABC02" , "ABC03" , "ABC04" , "ABC05" , "ABC06" , "ABC07" , "ABC08" , "ABC09" , "ABC10"

Oracle exp imp 的用法

1. exp exp userid/password@dbtnsname file=exp_dump.dmp log=exp_dump.log tables=customer_file; EXP參數說明: 關鍵字 說明 (預設值) ----------------------------------------- USERID 使用者名稱/密碼 FULL 匯入整個檔案 (N) BUFFER 資料緩衝區的大小 FROMUSER 擁有者使用者名稱清單 FILE 輸入檔 (EXPDAT.DMP) TOUSER 使用者名稱清單 SHOW 列出檔案內容 (N) TABLES 表格名稱的列表 IGNORE 忽略建立錯誤 (N) RECORDLENGTH IO 記錄的長度 GRANTS 匯入授權 (Y) INCTYPE 增量匯入類型 INDEXES 匯入索引 (Y) COMMIT 確認陣列插入 (N) ROWS 匯入資料列 (Y) PARFILE 參數檔案名稱 LOG 螢幕輸出的日誌檔 CONSTRAINTS 匯入限制條件 (Y) DESTROY 覆寫表格空間資料檔 (N) INDEXFILE 將表格/索引資訊寫入指定的檔案 SKIP_UNUSABLE_INDEXES 略過不可使用的索引的維護 (N) FEEDBACK 每 x 個資料列(0) 顯示一次進度 T

excel開啟出現錯誤可試修復法

圖片
開啟excel 的檔案發生「xxx.xls」中發現無法讀取的內容。您是否要回復此活頁簿的內容?如果您信任此活頁簿的來源,請按一下「是」。 此訊息指excel已損壞,可以試著使用open office開啟後,回存excel表。再用一般的MSoffice開啟即可

ASP include inc

index.asp <% dim conn dim rs dim sql dim i set conn = getOracleConn() sql = "select .....'" set rs = Server.CreateObject("ADODB.Recordset") set rs = conn.Execute(sql) 'rs.open sql, conn %> library.inc <% function getOracleConn() dim conn dim connstr connstr = "Provider=MSDAORA.1;Data Source=TEST;User ID=test;Password=test" set conn = Server.CreateObject("ADODB.Connection") conn.ConnectionString = connstr conn.open set getOracleConn = conn end function %>

無法登入跨網站的網芳

情況說明: 1.使用者為跨網段人員,要存取網芳上的「檔案伺服器」資料,出現「使用者已鎖定」。 2.但使用其他電腦登入RPD為正常。 發生日期:2013/11/11 解決方法: 使用指令 開始/執行/cmd net use * /delete net use \\10.10.10.X  //user: 網域名稱 \帳戶名稱

ubuntu pptpd VPN Service

1. 安裝 ubuntu-13.04-server-i386 2. 安裝 pptpd 服務 sudo apt-get update sudo apt-get install pptpd 3. 設定 /etc/pptpd.conf sudo vi /etc/pptpd.conf localip 192.168.100.20 (VPN本機IP) remoteip 192.168.200.100-200 (Client連上後取得的IP) logwtmp (如果要記錄每個USER登入及斷線的時間, 則打開此設定) 4. 設定 /etc/ppp/pptpd-options sudo vi /etc/ppp/pptpd-options name pptpd (待會設定連線帳號密碼會參考到這個值) ms-dns 168.95.1.1 (DNS1) ms-dns 8.8.8.8 (DNS2-最多設定2個) 5. 設定 /etc/ppp/chap-secrets (連線帳號密碼) client server secret IP address abc pptpd 1234 192.168.200.101 (需在remoteip範圍中) efg pptpd 5678 * (表示伺服器發送, 要有DHCP服務) 6. 設定 NAT sudo vi /etc/sysctl.conf (開啟封包轉送) net.ipv4.ip_forward = 1 7. 設定防火牆 $sudo iptables -A INPUT -p tcp -m state --state NEW --dport 1723 -j ACCEPT $sudo iptables -A INPUT -p gre -j ACCEPT $sudo iptables -A OUTPUT -p gre -j ACCEPT $sudo iptables -A INPUT -p tcp --sport 1723 -s 192.168.100.20 -j AC

ORACLE建立Database Link

本機資料庫資訊(schema: ABC, user: ABC, password: ABC) 0. 登入 oracle 帳號 1. 在 tnsnames.ora 檔案中, 加入要連線的遠端資料庫資料 REMOTE_DB = (DESCRIPTION = (ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.0.10)(PORT = 1521)) ) (CONNECT_DATA = (SERVER = DEDICATED) (SERVICE_NAME = ora1) ) ) 2. 重新啟動資料庫(讓第1步驟設定生效) ** 實測結果有時好像不用重啟就可以生效 sqlplus '/as sysdba' SQL> shutdown immediate SQL> startup 3. 檢查user是否有建立 Database Link 的權限 SQL> select grantee, privilege from dba_sys_privs where grantee='ABC'; GRANTEE PRIVILEGE ------------------------------ ---------------------------------------- ABC CREATE TABLE ABC CREATE SESSION ABC CREATE SYNONYM ABC UNLIMITED TABLESPACE 4. 新增user建立 Database Link 的權限 SQL> grant CREATE DATABASE LINK to ABC 5. 再檢查是否有權限 SQL> select grantee, privilege from dba_sys_priv

EXCEL 2007 無法直接開啟檔案

問題描述 1.直接點擊 excel 檔案時會出現 " 傳送命令給程式發生錯誤 " 無法開啟檔案  ,  但先開啟 excel 程式再用開啟舊檔案方式則正常  , ps, 點任何一個 excel 檔都會遇到此問題( 史教授的部落格) 2.開啟outlook附件 excel檔案時,出現空白的excel檔不會自動直接開啟檔案。 解決方式 左上角的  Office  按鈕、 [Excel  選項 ] 、 [ 進階 ] 、取消  [ 一般 ]  區塊中的  [ 忽略其他使用動態資料交換  (DDE)  的應用程式

Oracle Select For Update NOWAIT用法

如果有需要將Select的資料進行Lock後, 再將資料做後續邏輯處理時, 會使用到Select For Update來鎖定資料列。 但如果要鎖定的資料列已被其他session鎖定時, 則會發生一直等待的狀況, 直到其他session釋放資料的鎖定狀態。 但有時我們可能會希望不要等待, 直接回傳資料已被鎖定的錯誤時, 則可以在FOR UPDATE後面再加上NOWAIT指令來達到該效果。 [Session1] UPDATE ABC SET C2='111' WHERE C1='AAA';    --鎖定資料 [Session2] DECLARE l_row ABC%ROWTYPE; CURSOR cr1 IS SELECT * FROM ABC WHERE C1='AAA' FOR UPDATE; BEGIN OPEN cr1; LOOP FETCH cr1 INTO l_row; END LOOP; CLOSE cr1; END; [Session3] DECLARE l_row ABC%ROWTYPE; CURSOR cr1 IS SELECT * FROM ABC WHERE C1='AAA' FOR UPDATE NOWAIT; BEGIN BEGIN OPEN cr1; LOOP FETCH cr1 INTO l_row; END LOOP; CLOSE cr1; EXCEPTION WHEN OTHERS THEN DBMS_OUTPUT.put_line(SQLERRM); END; END; 此時[Session2]會一直處於等待狀態, 但[Session3]則會直接發生Exception。 PS. 在Open Cursor時就會發生LOCK的狀態, 所以在包Begin Exception End時要從Open Cursor開始。

Oracle如何刪除被鎖定(locked)的session

1. 查詢出要刪除的Lock Session ID select a.sid||','||a.serial#,a.machine from v$session a,DBA_DML_LOCKS b where a.sid = b.session_id group by a.sid||','||a.serial#,a.machine; 2. 刪除Session ID alter system kill session 'xxx,yyyy' immediate; (其中, 'xxx,yyy'為第1步查到的資料) * v$session : 使用中session資料 * DBA_DML_LOCKS : Lock Session資料 reference web: http://itgroup.blueshop.com.tw/ZEasyChen/IT?n=convew&i=3806

Oracle 例外控制(Exception Control)

寫Oracle Stored Procedure時, 也和一般程式開發一樣, 也會遇到邏輯例外而需要控制。 1. Oracle已存在Exception例外處理 DECLARE l_row abc%ROWTYPE; BEGIN BEGIN select * INTO l_row from abc where abc01='123@asd'; EXCEPTION WHEN NO_DATA_FOUND THEN DBMS_OUTPUT.put_line('--> NO_DATA_FOUND err is ' || SQLERRM); WHEN OTHERS THEN DBMS_OUTPUT.put_line('--> OTHER err is ' || SQLERRM); END; END; ** 則會顯示 "--> NO_DATA_FOUND err is ORA-01403: no data found" ** 如果沒有處理"WHEN NO_DATA_FOUND THEN", 則會跑到"OTHERS"中 1.1 Oracle已存在Exception例外處理(但自定Exception名稱) DECLARE l_row abc%ROWTYPE; my_no_data_found_exp EXCEPTION; PRAGMA EXCEPTION_INIT(my_no_data_found_exp, -01403); --no data found Exception BEGIN BEGIN select * INTO l_row from abc where abc01='123@asd'; EXCEPTION WHEN my_no_data_found_exp THEN DBMS_OUTPUT.put_line('--> NO_DATA_FOUND err is ' || SQLERRM); WHEN OTHE

事務機無法發送掃描文件

圖片
事務機型號:FX DC236 解決方法: 因為印表機設定了固定IP發送郵件,當一改變位置時就得更換IP,當然現已經造成多天的不便。 最好的方法就是,改變設定使用DNS設定發送郵件,使用網域名稱mail.XXX.com。 進入印表機設定 TCP/IP DNS 項目,設定DNS主機的 IP位置及信箱網域 存檔即可。

Oracle資料唯一值 - Primary-Key與Unique Index差異

最近接觸TIPTOP系統, 發現資料庫都沒有設定Primary-Key, 但卻有唯一值的功能, 覺得很好奇, 查了一下才知道, 原來Index還可以有限定唯一值的功能, 但用途上與Primary-Key還是有些差異; 1. Primary Key欄位不允許null, 但Unique Index欄位允許 2. 一張Table只允許一組Primary Key, 但允許多組Unique Index reference web: http://tomkuo139.blogspot.tw/2010/03/oracle-database-primary-key-unique.html

mstsc遠端登入

一般windows的遠端登入依作業系統不同而且不同的數量, 再沒有購買license情況下, 一般為1個, 但如果是server有開啟遠端模式時, 預設可以有2個終端機數量可以連線。 但使用者如果沒有乖乖的在使用完後登出, 會造成2個數量都被使用掉, 並處理使用中而無法登入, 此時除了使用終端機管理員踢掉使用中session外, 還可以用下列指令連線至該電腦的console端。 mstsc /console PS. 但Windows XP SP3不支援此參數, 要改用 /admin 才可以。 reference web: http://zhidao.baidu.com/question/559403654.html

Oracle alter session

改變目前連線session的日期顯示格式 alter session set nls_date_format='yyyy-mm-dd hh24:mi:ss';

Oracle 日期 trunc 用法

當日期使用 trunc 後, 會將其時分秒都變更為 00:00:00 select trunc(sysdate) from dual select to_char(trunc(sysdate), 'YYYY/MM/DD HH24:MI:SS') from dual

Oracle 取亂數的方法

使用 DBMS.RANDOM 來取得亂數值 隨機取亂數 select dbms_random.random from dual; 取0到1的亂數 select dbms_random.avlue from dual; 取指定範圍的亂數 select dbms_random.value(1, 1000) num from dual; 取20個隨機英文字-大寫 select dbms_random.string('U', 20) str from dual; 取20個隨機英文字-小寫 select dbms_random.string('L', 20) str from dual; 取20個隨機英文+符號-大寫 select dbms_random.string('A', 20) str from dual; 取20個隨機英文+符號-小寫 select dbms_random.string('X', 20) str from dual; reference web: http://www.databasejournal.com/features/oracle/article.php/3341051/Generating-random-numbers-and-strings-in-Oracle.htm

Oracle 工作排程 DBMS_JOB 筆記

1. 設定初始化參數 job_queue_processes : oracle 允許執行的最大任務數量 specifies the maximum number of processes that can be created for the execution of jobs. It specifies the number of job queue processes per instance (J000, ... J999). 最大值為 1000 sql> alter system set job_queue_processes=n; (n>0) 2. 查詢背景執行程序 sql> select name, description from v$bgprocess 3. 建立function or Stored Procedure 4. 執行程序 declare jobno number; begin dbms_job.submit(jobno, 'sp_test_alex;', sysdate, 'sysdate+1/1440'); dbms_output.put_line(jobno); commit; end; / 另一種寫法 declare jobno number; begin dbms_job.submit( job => :jobno, what => 'SP_SYNC_MES_ITEM;', next_date => SYSDATE, interval => 'SYSDATE + 10/1440' ); dbms_output.put_line(jobno); commit; end; 5. 查詢執行程序 sql> select * from user_jobs; 6.  移除程序 begin dbms_job.remove(141); end; / 7. 暫停程序 begin dbms_job.brok

Creating Crystal Reports with Datasets

1. 建立資料來源物件     a. 專案新增〔資料集〕項目(*.xsd), 命名為aaa.xsd     b. 新增Table及欄位 (依報表要的資料欄位來定義), Table名稱為bbb 2. 建立Crystal Report物件 (名稱為CrystalReport1)     a. 資料來源選擇剛剛第1步建立的資料集         專案資料\ADO.NET資料夾\剛剛建立的物件名稱     b. 選擇要的欄位(通常是全部)     c. 調整欄位位置 3. 建立一個表單(Form)來顯示報表     a. 拉一個button     b. 拉一個CrystalReportViewr物件, 名稱為crystalReportViewr1     c. 並在 buuton Click 事件裡寫入下面程式碼 //create database connection string strConnStr = "xxxxxxxx"; OracleConnection con = new OracleConnection(); con.ConnectionString = strConnStr; con.Open(); //create dataset aaa dSet = new aaa(); OracleDataAdapter da = null; da = new OracleDataAdapter(sql, con); da.Fill(dSet, "bbb"); //create CrystalReport1 Object and give DataSet CrystalReport1 cr = new CrystalReport1(); cr.SetDataSource(dSet); //指定CrystalReport 給 crystalReportViewr 物件 crystalReportViewr1.ReportSource = cr; crystalReportViewr1.refresh();

XP Powershell 安裝

因為要做一個自動刪除過期資料的批次檔, 以前都是自己寫vbscript, 但這次想要試試看PowerShell。 記得之前在找一些PowerShell的資料時, 是可以直接安裝PowerShell的程式, 而且安裝完成後也內建不錯的教學資料。但這次在找時, 微軟好像已經把PowerShell整合至Windows Patch更新檔裡了。 Windows 7 和 Windows 2008 R2是內建Powershell, 其他版本則是要自己下載更新檔, 而更新檔檔案名稱是『Windows Management Framework Core』, 同時包含了WinRM 2.0和Windows PowerShell 2.0。 [各系統對應下載路徑] Windows Server 2008: http://www.microsoft.com/downloads/details.aspx?FamilyId=863e7d01-fb1b-4d3e-b07d-766a0a2def0b 64位元6Windows Server 2008: http://www.microsoft.com/downloads/details.aspx?FamilyId=d37e25cf-db05-4b23-a852-cdf865d81b82 Windows Server 2003 32位元: http://www.microsoft.com/en-us/download/details.aspx?id=4045 Windows Server 2003 64位元: http://www.microsoft.com/downloads/details.aspx?FamilyId=909bbcf1-bd78-4e03-8c83-69434717e551 Vista: http://www.microsoft.com/downloads/details.aspx?FamilyId=f2fa1227-9a34-4e29-aa03-62f5c00e16f2 64位元Vista: http://www.microsoft.com/downloads/details.aspx?FamilyId=0f73efa2-f8d6-45f3-a8f8-5cdc205b119a XP和
之前其實有測試eSATA熱插拔的情況, 那次測試的結果和之前同事反應的狀況是一樣的, 一定要重開機才抓得到。(那時的心得是....這個eSATA真的是個很鳥的設計。) 今天剛好又在規劃備份機制, 因為資料量很大, 想說再測試一次看看(其實是不怎麼抱著希望), 為了怕是外接卡或線的問題, 又從盒子裡抓了兩個全新沒用的卡和線來測試。這次是拿MIS維修用的主機, 板子是微星的。 1. 主機開機 2. 外接硬碟開機 3. 插上eSATA 此時, 發現電腦有在動了, 在裝置管理員裡也發現有新的USB device, 心中一陣喜悅, 再切到磁碟管理, 果真有看到硬碟。沒想到竟然可以用, 但就覺得奇怪, 為什麼上次沒成功呢?? 把Server shutdown後, 裝上eSATA的外接卡後, 依上面的步驟執行後, 發現....ㄟ..怎麼沒反應, 裝置管理員和磁碟管理裡都沒反應, 重開機進BIOS後, 明明有看到抓到硬碟(心想: 果然和電腦有關, 但為什麼較老舊的電腦反而可以, 比較新一點的竟然不行)。 後來上網再查一下資料, 這個情況其實很多人都遇到, 也有人說eSATA一定要重開機才能用。查了幾篇文章後, 有個網友說可以用" HotSwap "(http://mt-naka.com/hotswap/index_enu.htm)軟體, 在OS裡執行後, 執行右下方常駐程式右鍵功能表中的『硬體變更掃瞄』, 就可以看到eSATA硬碟。 經實測, 證實果然可以偵測到硬碟, 真是一個好工具。 PS. 如果環境是XP, 要用5.0.0.0的版本。 2012/10/03 今天在系統運作時更換eSATA硬碟, 發現使用『裝置管理員』的硬體變更掃瞄與『HotSwap』軟體功能列表的硬體變更掃瞄是相同效果。

怎麼測試防毒軟體是否有作用

可以自己做一個簡單的檔案來測試防毒軟體是否有正常的在運作。 將下面這行字串反白選起來,Ctrl+C複製,打開「筆記本」,Ctrl+V貼上,存檔為「EICAR.COM」 (實際上, 要存檔為文字檔就被趨勢掃掉了)。儲存後檔案是 68-70 位元。 X5O!P%@AP[4\PZX54(P^)7CC)7}$EICAR-STANDARD-ANTIVIRUS-TEST-FILE!$H+H*

Windows批次檔常用變數

當前目錄 %cd% 目前正在運行的批次檔的所在目錄 %~dp0 目前正在運行的批次檔的所在的目錄的短名稱 %~sdp0 //20150415 新增 顯示傳入的第一個參數值 %1

修復XFS格式的磁區

今天早上一進公司,就發現NAS的外接USB硬碟掛了。使用網路芳鄰連進去,就只能看到一片空白,但可以看到正確的整個磁區大小及已使用磁區大小。建立資料夾時,會顯示I/O錯誤而失敗。 後來想說用Linux的開機工具mount看看,結果出現了新訊息"SuperBlock...."的錯誤。(整個錯誤訊息沒記下來...) 上網查了一下關於XFS磁區修復的資料,發現可以使用下面的指令來修復, xfs_repair -L /dev/sda1 主要發生此問題,大多是因為斷電導致磁區錯誤,但因為公司設備都是有使用UPS,所以還是不懂為什麼會發生此狀況。不過,修復好就可以用才是重點。

利用sysv-rc-conf管理啟動程式

在ubuntu裡,沒有chkconfig軟體,相對應的程式為sysv-rc-conf,不過預設是沒有安裝的。 >> sudo apt-get update >> sudo apt-get install sysv-rc-conf >> sudo sysv-rc-conf 畫面中,按 space 可以切換啟用或停用(直接儲存設定),按 q 離開程式。 也可以用指令來顯示或變更 >> sudo sysv-rc-conf --list (列出所有服務) >> sudo sysv-rc-conf --list | grep rsyslog (查詢某一服務) >> sudo sysv-rc-conf --level 25 rsyslog off (停用rsyslog level 2及5的服務) >> sudo sysv-rc-conf --level 25 rsyslog on (啟用rsyslog level 2及5的服務)

cacti 架設

之前一直在尋找免費又好用的電腦監控軟體來輔助了解伺服器運作的情況,但很多好用軟體大多都是付費軟體。雖然之前用過別人架設的cacti,但在上面始終看不懂要怎麼操作。 原本想說來個速學法,買本書啃一下就會了,誰知道cacti中文書真的超難買,賣完了沒買到,所以又灰心放棄了。 一直到前幾天看到 IT Home Download 有一篇算完整的教學,又燃起的學習的慾望。 參考網址:http://download.ithome.com.tw/article/index/id/1407 * 安裝作業系統 ubuntu 12.04 Server a. 預設語系選擇英艾 b. 不安裝作何套件 * 更新 apt-get list >> sudo apt-get update * 安裝 SSH + LAMP 套件 >> sudo taskse l * 選擇下面套件 1. OpenSSH server 2. LAMP server =>安裝過程中, 會要求輸入MySQL root 密碼。 * 安裝 cacti 相關套件 >> sudo apt-get install cacti =>安裝過程中, 1. 提示Webserver type時, 選擇 Apache2 2. 提示"Configure database for cacti with dbconfig-common"時, 選擇 "yes" 3. 提示"Password of the database's administrative user"時, 輸入mysql root 密碼 4. 提示"MySQL application password for cacti"時, 輸入 cacti 資料庫密碼 =>安裝完成後, cacti網頁路徑在 /usr/share/cacti 裡 * 安裝 cacti >> http://server-ip/cacti =>安裝過程中 1. Next 2. Please select the type of installtion => New Install

使用command安裝'作業系統安裝時的套件選擇畫面'功能套件

為了讓系統安裝完成後不要有太多垃圾,通常都是希望在安裝作業系統時,最好什麼程式或套件都不要裝。 平常如果是Windows的話就不會有什麼太大的問題,找到要的程式,Double Click * 2 就安裝完成了。 但是如果平台是Linux,再加上是新手的話,就很痛苦了。在每個 Linux 環境裡,其實都會有其相對的系統工具可以安裝套件。 在 ubuntu 的世界裡,除了可以用"apt-get"來安裝大多的套件,但如果有個套件清單可以選擇就更好了,此時則可以把ubuntu安裝系統時"選擇套件"的畫面叫出來後,就可以選擇了。第一次執行時,會發現只有2個套件可以選,所以記得要先更新apt-get清單。 >> sudo apt-get update >> sudo tasksel PS. 如果沒有這個套件(安裝完系統應該就有內建了),可以透過安裝"tasksel" 套件來取得, >> sudo apt-get install tasksel

倉頡輸入法安裝

因為安裝的是英文語系, 所以系統在預設下是沒有中文輸入法的. 找了網路上和中文輸入法有關的軟體有 ibus/scim/gcin. [ibus] 1. 一開始就先打開[applications\system tools\system settings], 找到[language support], 加入[chinese tranditional]. 2. [applications\system tools\iBus], 執行後, 右上方就會出現icon了 3. 在icon上右鍵[preference]中就可以選擇要的輸入法 4. 根據經驗, 選擇了[倉頡3], 結果發現在打'門'時, 輸入[日弓]後不會出現. 5. 上網查了一下, 找到一篇文章說也有相同問題, 討論中有提到安裝gcin就解決問題了 ------------------------------------------------------------------------------ [gcin] 1. 開啟terminal console, 並輸入下列命令 sudo apt-get update sudo apt-get install gcin im-switch im-switch -s gcin 2. 重開機並登入後, 右上角就會顯示gcin的圖示. 3. 在圖示上右鍵, 選擇[configuration\Default inpu method and toglle key], 就可以勾選要的輸入法. (發現雖然有無蝦米的可以選, 但完成後在切換輸入法時, 其實是選不到的, 看來要另外再安裝設定才可以使用) PS. 2014/07/19 在14.04上使用這個安裝方法後, 控制台的"語言支持"會不見。 就這樣, 終於可以輸入中文了. [scim]就有空再來試看看了. 可以打中文的感覺真好~~~

unity換回gnome

換回gnome的方法如下, 不會太難! 1. open terimal console 2. input commane => sudo apt-get install gnome-session-fallback 3. reboot 4. select 'gnome classic' in the login window 登入後, 就看到之前熟悉的介面了.

GetUpperBound & Length 的分別

在取陣列的長度時, 常用的語法有兩個, GetUpperBound & Length, 他們有什麼分別呢? GetUpperBound(N)可以用來取得陣列第N+1維度中元素的個數 Length可以用來取得陣列中所有的元素個數 用個簡單的程式來測一下就會比較清楚了 {2維陣列} string[,] aaa = new string[2, 3]; Console.WriteLine("aaa.GetUpperBound(0)=>" + aaa.GetUpperBound(0).ToString()); Console.WriteLine("aaa.GetUpperBound(1)=>" + aaa.GetUpperBound(1).ToString()); Console.WriteLine("aaa.Length=>" + aaa.Length.ToString()); 得到的結果如下, aaa.GetUpperBound(0)=>1 //2個元素 aaa.GetUpperBound(1)=>2 //3個元素 aaa.Length=>6 //6個元素 所有如果當陣列為多維度時, 結果就不會相同, 但如果是一維陣列, 則會是相同的。 {1維陣列} string[] bbb = new string[2]; Console.WriteLine("bbb.GetUpperBound(0)=>" + bbb.GetUpperBound(0).ToString()); Console.WriteLine("bbb.Length=>" + bbb.Length.ToString()); 得到的結果如下, bbb.GetUpperBound(0)=>1 //2個元素 bbb.Length=>2 //2個元素

日期格式

CONVERT(CHAR(10), GETDATE(), 100) => MM DD YYYY (06 26 2008) CONVERT(CHAR(10), GETDATE(), 101) => MM/DD/YYYY (06/26/2008) CONVERT(CHAR(10), GETDATE(), 102) => MM.DD.YYYY (06.26.2008) CONVERT(CHAR(10), GETDATE(), 103) => DD/MM/YYYY (14/03/2011) CONVERT(CHAR(10), GETDATE(), 104) => DD.MM.YYYY (14.03.2011) CONVERT(CHAR(10), GETDATE(), 105) => DD-MM-YYYY (14-03-2011) CONVERT(CHAR(10), GETDATE(), 106) => DD MM YYYY (14 03 2011) CONVERT(VARCHAR(8),  GETDATE() , 108)  => HH:MM:SS (17:24:30) CONVERT(CHAR(8), GETDATE(), 112) => YYYYMMDD (20110314) CONVERT(CHAR(12), GETDATE(), 114) => HH:MM:SS:sss (17:24:30:923) CONVERT(CHAR(10), GETDATE(), 111)  => YYYY/MM/DD (2008/06/26) CONVERT(CHAR(10), GETDATE(), 120)  => YYYY-MM-DD (2008-06-26) 取得年月日時分秒 <SQL Serve 2005 and Onwards> CONVERT(VARCHAR(10),  GETDATE(), 111) + ' ' + CONVERT(VARCHAR(8), GETDATE(), 108) => YYYY/MM/DD   => YYYY/MM/DD HH:MM:SS (2008/06/26 17:24:30) <SQL

MSSQL 暫存表(Tempary Table)

[暫存表(Temporary Tables)] CREATE TABLE #Yaks ( YakID int, YakName char(30) ) table name 前加入"#", 表示這是一個暫存表(temporary table) 當session 關閉時, 這個table 將會自動drop 好的寫作習慣, 應在暫存表使用完畢後, 下指令去 drop, 而不是讓系統自動回收 暫存表是存在主機記憶體中, 因此存取速度較快 暫存 table 的限制: 暫存表存在於"tempdb"這個database 裡 如果有兩個使用者建立同一個名字的暫存表, 則他們會各自擁有獨立的一份, 互相不會干擾. 若stored procedure A 建立了一個暫存表, 並呼叫 stored procedure B, 則在 B 中可以存取這個暫存表 如果在SQL Server Management Studio or Query Analyzer 中建立的暫存表, 會等到我們手動drop 去關閉session 才會消失   [表格變數(Table Variables)] 當我們使用 SQL Server 2000 或以後的版本, 則可以考慮使用 "Table Variables" (表格變數); 使用方式如下例: DECLARE @TibetanYaks TABLE ( YakID int, YakName char(30) ) INSERT INTO @TibetanYaks (YakID, YakName) SELECT YakID, YakName FROM dbo.Yaks WHERE YakType = 'Tibetan' -- Do some stuff with the table 它和暫存表類似, 但它更加彈性, 且不會存在於tempdb 中(完全存在於記憶體). 使用完畢後, 不須手動去 drop它 兩者的使用時機 當暫存的資料筆數小於100筆時, 使用表格變數, 否則, 可使用暫存表, 因為針對表格變數, SQL Server 不會去解析/最佳化它的效能. 當我們須要對表格建立索引(Ind

Oracle 與 MSSQL Tempary Table差異

Oracle   * Session Tempary Table   --> Session 結束時, 資料會清空   * Trasaction Tempary Table   --> 當Transaction(Commit or Rollback)時, 資料會清空   不論哪一種, Table都還是存在的。   每個Session的資料異動互不影響。 MSSQL   * Tempary Table (#)   --> 只有Creator自己看得到   --> Session結束時, Table架構會被系統自動刪除   * Golbal Tempary Table (##)   --> 大家都看得到   --> 當沒有人使用這Table時, 系統才會刪除