- Control Panel > All Control Panel Items > Power Options > Edit Plan Settings(Choose when to turn off the display)
change the 'Put the computer to sleep' setting to a longer time or Never. - Control Panel > All Control Panel Items > Network and Sharing Center > (Change adapter settings)
2.1 right click on 'Wireless Network Connection' then 'Properties'
2.2 Configure...
2.3 switch to 'Power Management' page, uncheck 'Allow the computer to turn off this device to save power' option, OK
Keep Wifi Connection When Close Laptop Lid
7:59:00 AM | Filed Under win7 | 0 Comments
Quickly delete tons of files in Linux
Ref: [SteveKamerman.com]deleting-tons-of-files-in-linux-argument-list-too-long
6:36:00 PM | Filed Under linux | 0 Comments
[ORACLE] Get size in BYTE of a column
5:18:00 PM | Filed Under oracle | 0 Comments
Change File Permission via ftpd
In Windows command line:
Invalid command.
Command line to send site chmod 666 filename.txt
200 CHMOD command successful.
FTP裡下chmod指令無法使用萬用字元(*, wildcard),也無法使用 -R flag。
好不容易知道怎麼透過FTP下chmod了... 不實用
Using Apache Commons Net 3.2 API in java:
1: //using public int sendCommand(String command, String args)
2: //實在不知道那些字要放在command, 哪些字要放在args, try了好幾次
3: //TEST#1:
4: FTPClient.sendCommand("quote", "site chmod 666 *");
5: //command result=500 'QUOTE site chmod 666 *': command not understood.
6:
7: //TEST#2:
8: FTPClient.sendCommand("quote site chmod", "666 *");
9: //command result=500 'QUOTE site chmod 666 *': command not understood.
還有error message回傳的指令都寫大寫也很奇怪.. unix大小寫有差啊,我要小寫!!
最後讀了public int sendCommand(int command, String args)方法才知道他根本就沒提供quote這個指令OTZ||| 從FTPCommand看起來,"SITE"是最有可能會動的指令:
1: //TEST#3:
2: FTPClient.sendCommand("site", "chmod 666 *");
3: //command result=550 *: A file or directory in the path name does not exist.
1: //TEST#4:
2: FTPClient.sendCommand("site", "chmod 666 filename.txt");
3: //command result=200 CHMOD command successful.
方案二,登入FTP後先下umask指令來控制檔案權限
In Windows command line:
Command line to send site umask 000
200 UMASK set to 000 (was 007)
Using Apache Commons Net 3.2 API in java:
1: //TEST#5:
2: FTPClient.sendCommand("site", "umask 002");
3: //command result=200 UMASK set to 002 (was 007)
又是另一項作業..
Ref:
2:43:00 PM | Filed Under java | 0 Comments
Using Editable JComboBox with KeyEvent
//The following code wont’t work
JComboBox jcb1 = new JComboBox();
jcb1.setEditable(true);
jcb1.addKeyListener(aKeyEventObject);
//Correct: KeyEvent should be added to JComboBox.getEditor().getEditorComponent()
JComboBox jcb2 = new JComboBox();
jcb2.setEditable(true);
jcb2.getEditor().getEditorComponent().addListerer(aKeyEventObject);
Calling to JComboBox.getEditor().getEditorComponent() will return a JTextField that is used for editing the comboBox’s text.
And if at the same moment you want to get the filling text:
//The following code won’t work(return null)
String s = jcb2.getSelectedItem().toString();
//Correct:
String s = ((JTextComponent)jcb.getEditor().getEditorComponent()).getText();
2:14:00 PM | Filed Under java | 0 Comments
Transfer text file between Windows and Linux
最近遇到的問題,普通的.txt檔案在windows上跟在linux上看起來沒什麼差別,但是事實上如果用HEX mode或是用Notepad++顯示所有字元,就會注意到差別! 換行字元的差別!!
在ASCII字元表裡的10( LF , line feed), 13(CR, carriage return)都有換行的作用,看到一篇文章裡有稍微解說:
Mac OS X開始是用LF,較舊的版本是用CR
Unix系統下,是用LF
愛搞怪的窗戶是用CRLF...
當我透過FTP把檔案從windows丟到linux上之後,每行資料最後的換行符號都從CRLF變成LF,整個檔案的長度就變了... 影響了程式執行的結果。於是就查了要怎麼避免這個行為,還滿簡單的,不過不知道就沒轍。
只要把FTP的傳輸模式改為binary mode即可。用command line做FTP的可以參考reference 2號,用UI的話,我是用fileZilla,在選單"傳輸>傳輸型態”裡可以選擇。就這樣,再傳一次,果然,換行符號就不會因不同系統而改變了。
ref:
3:34:00 PM | Filed Under linux, windows | 0 Comments
HTC Wildfire2.2 root and apply new rom
昨天玩了一個下午,試了好多方法,終於把上到官方2.2版本的wildfire刷了新的rom。其中最大的障礙在取得手機的root權限,網路上多篇文章都說unrevoked3已經支援wildfire2.2、教學文章寫的跟真的一樣(ref.#1),但是我實際試了之後,並沒有成功。後來找到一篇滿冷門的文章(ref.#3 Wildfire 2.2 root tutorual),雖然還是使用beta版的工具,但是豁出去給他試了一下,竟然還成了。
前置作業
因為在用了對的方法前,都是偏向使用unrevoked3的方法來取得root權限,也照著其他人的教學(ref.#2)做了一些前置作業,所以事後有點難判斷究竟是不是必要的,不過以下幾點大概是一定要做的:
- 電腦上曾安裝HTC Sync,須把它移除。若不曾安裝,也需要先安裝再移除。這主要是為了取得一些HTC Driver。所以在安裝了HTC Sync後,開啟"控制台 > 新增或移除程式",找到"HTC Sync",將他移除(如下圖),保留其餘兩個。
- 手機設定: Setting > Applications > Development > USB debugging (勾選,直到整個刷rom過程結束前,都不必改回來)
- 手機設定: Setting > Connect to PC > Default connection type > HTC Syne (勾選)
- 手機設定: Setting > Connect to PC > Ask me (取消勾選)
- 取得unrevoked USB Driver並安裝,詳細安裝步驟請看ref.#5 Windows HBOOT driver installation instructions
- 手機序號: Setting > About phone 內有serial number資訊,須記下
- HBOOT Version: 在手機關機的狀態下,按住音量小聲鍵+電源鍵(進入bootloader),會進入如下畫面,便可看見HBOOT版本資訊,須記下
- 至AlphaRevX beta網站下載for windows的軟體,同時他會出現Key generate畫面,這邊需要輸入在上面兩個步驟取得的serinal number與HBOOT version,取得key之後記得記下來
S-OFF using AlphaRevX
此步驟完成了bootloader訊息會由S-ON變為S-OFF,有關S-OFF請見ref.#6 簡易將HTC Desire S-off 教學
- 將下載來的alpharevx.exe.zip解壓縮後,執行alpharevx.exe
- 此時再將手機接上電腦,會提示你輸入前置作業步驟8所取得的beta application key
- 輸入後此程式會繼續作業,直到提示完成。這時候就可以把手機取下,關機。
- 按住音量小聲鍵+電源鍵(進入bootloader),檢視S-OFF是否成功,應該會變成如下圖
Clockwork recovery
- 從HTC Developer center下載Fastboot Tool(window版本請在網頁搜尋"Fastboot binary, Windows",比較好找到載點)
- 把下載回來的fastboot.exe放入S-OFF using AlphaRevX第一步驟中解壓縮的資料夾內,為了方便操作,將整個資料夾copy到C槽底下,並改名為"wildfire" (當然若你很熟悉command line的指令,可以不要這麼做)
- 從這裡下載Wildfire_recovery-clockwork-3.2.0.0-j_r0dd_mod.zip (這個連結我也是從參考的文章內直接使用的,所以無法跟各位保證他的來源,不過我自己也用了就是。xdadevelopers這裡有提供r較新的版本的連結)
- 將解壓縮出來的檔案改名為wildfire.img,一起放入上述資料夾(本例是c槽下的wildfire)
- 確定你已經做了前置作業步驟5的usb driver安裝後,將手機開至bootloader(音量小聲鍵+電源鍵),接上電腦
- 開啟command line,依序輸入這兩個指令
cd c:/wildfire
fastboot flash recovery wildfire.img - 完成後,可以將手機拿下,開至bootloader,並進入recovery模式,應該可看見如下選單(bootloader內用音量大小來做選單的上下移動、電源鍵為enter。clockworkMod Recovery的選單一樣用音量大小來做上下移動,但是以按下光學滑鼠當enter,電源鍵是回首頁或上一層… 我一直到後來才發現這件事,還一直以為裝壞了...)
ROOT
接下來終於要進入root~(重頭戲的1/2)!! ref.#3的教學內提供了兩個方法,我只用其中一個:
- 下載GingerBreak-v1.20.apk 放到手機裡
- 在手機上用任何一款file manager安裝他,並執行
- 接著就是無盡的等待~~ 少說要15分鐘,最後你會看到一個聲稱不知道發生什麼錯誤的訊息,並要求你手動關機再重開,重開後,檢查一下你的程式集,應該就有superUser囉~
Apply new ROM
重頭戲2/2!!! 我個人是使用CyanogenMod7,xda這裡有介紹許多其他的rom,任君挑選。
- 選好要安裝的ROM(通常是zip檔,不要解壓縮),下載來並放入SD卡,改名為update.zip
- 到market裡下載”ROM Manager” 並安裝 (我只用free版)
- 開啟ROM Manager,首先更新Recovery(刷入ClockworkMod Recovery/Flash ClockworkMod Recovery)
- 選擇Install ROM from SD Card > 選到步驟1的update.zip
- ROM Manager應該會有要求取得root的動作,確定之後,就開始刷rom啦~~ 又是一陣等待
- 第一次重開機會需要好一些時間,然後就開開心心的用新系統八~
GOOD LUCK!!!!
後記1號:
CyanogenMod7因為license問題,預設不會包含google的所有服務(就是market, map, mail等的,這怎麼成!!) 所以需要參考ref.#8 Latest Version/Google Apps 取得google App,一樣是zip檔,請放入SD卡,開至bootloader > recovry > install zip from sd card處理(請記得clockworkMod Recovery選單內以光學滑鼠當enter)
後記2號:
裝google map的時候,才剛開始download,馬上就終止了。所以找到論壇上一篇文章說明,可能是download cache太小所導致(詳見ref.#9)。所以有人將download cache的位置改指到一個建在SD內的資料夾下,馬上就可以解決這個問題了!! 請開啟app內的terminal emulator(模擬終端),依序輸入以下指令:
mkdir /mnt/sdcard/market-download-cache
su
cd /cache
mv download download.bak
ln -s /mnt/sdcard/market-download-cache download
ls -ahl
由最後一個指令可看出/cache/download 改指到/mnt/sdcard/market-download-cache了,重新下載安裝google map,成功。
ref:
- [教程] Android 2.2系统机型一键root教程 (doesn’t work)
- 使用unrevoked 3將官方Desire 2.1, 2.2刷入第三方recovery image(含root) (適用desire)
- Wildfire 2.2 root tutorial (work!)
- AlphaRevX Beta
- Windows HBOOT driver installation instructions
- 簡易將HTC Desire S-off 教學
- CyanogenMod Wiki
- CyanogenMod Wiki: Latest Version/Google Apps
- [forums] I can't download anything bigger than 5M from the markets
1:07:00 PM | Filed Under android, cyanogenMod, wildfire | 2 Comments
Roundcube auto-reply plugin: Vacation
OS: FreeBSD 8.1-RELEASE-p1
roundcube: 0.4.2
vacation: 1.9.9
apache: 1.3.42
php: 5.3.3_2
- 前提: roundcube已正常運作。也就是apache, php等基本配件已經處理好了。
- 下載Vacation plugin,並解壓縮至/roundcube/plugins/內
(/usr/local/www/roundcube/plugins/) - 先讀過README與INSTALL兩個檔案,並決定要用哪種driver讓auto-reply的功能運作(這邊會以SSHFTP為例)。
- 啟用plugin: 修改/usr/local/www/roundcube/config/main.inc.php檔
找到$rcmail_config['plugins'] 這行,並加入'vacation'// List of active plugins (in plugins/ directory)
$rcmail_config['plugins'] = array('other_plugins','vacation'); - 修改/vacation/config.ini檔,指定driver
[default]
driver = "sshftp"
subject = "Default subject"
body = "default.txt"
server = host_name - 修改/vacation/config.ini檔的擁有者 與 執行權限
# chown $apache_user config.ini
# chmod 0400 confing.ini到目前為止,2-6點是INSTALL.txt內也有列出的幾項工作。
照著做完之後,在roundcube設定內,就可以看見"休假"的頁籤了。 - 不過你可能會遇到點下"休假"的頁籤後畫面就錯誤的狀況,這時候去檢查/roundcube/logs/errors時,可能會有以下錯誤訊息:
PHP Fatal error:
Call to undefined function ssh2_connect() in …/roundcube/plugins/vacation/lib/sshftp.class.php on line ... - 因為要使用PHP的SSH2系列功能時,系統需要有OpenSSL, libssh2, pecl-ssh2三個套件,可從ports安裝,libssh2與pecl-ssh2的位置分別在:
libssh2: /usr/ports/security/libssh2
pecl-ssh2: /usr/ports/security/pecl-ssh2
分別進入這兩個資料夾,設定並安裝:# make config install clean完成安裝後,可用phpinfo();網頁檢視SSH模組是否已支援。
或是檢視/usr/local/etc/php/extensions.ini檔案內是否有此行:extension=ssh2.so
- 修改/etc/ssh/sshd_config檔
必須啟用sshd的password authentication方法(sshftp.class.php內的叫用才會成功),找到PasswordAuthentication關進字並修改:# Change to yes to enable built-in password authentication.
PasswordAuthentication yes - 重新啟動sshd # /etc/rc.d/sshd restart
- 重新啟動apache # cd /usr/local/etc/rc.d
./apache restart - try it!!
ref:
4:50:00 PM | Filed Under freebsd, mail | 2 Comments
修改SharePoint網站之清單"建立者"欄位
Server: Win2003 + SharePoint Service 3
需求: 當透過WSS UI的「儲存清單為範本」+「包括內容」選項將清單匯出後,再匯入時,所有清單項目的「建立者」欄位都會變成匯入人的名字。如果資訊人員佛心來的想替使用者改掉... 是可以做的,寫程式囉。
利用Microsoft提供的SharePoint API: Microsoft.SharePoint.dll。這支dll可以在SharePoint server上的\\Computer_Name\Drive$\Program Files\Common Files\Microsoft Shared\web server extensions\12\ISAPI 內找到。
但是,如果你覺得把他複製出來到自己本機開發那就錯了。這麼做應該會遇到「無法載入檔案或組件或其相依性的其中之一」的錯誤,就像這篇SharePoint Forums上的討論,請直接在裝有SharePoint Service的server上做開發.. 如果有測試機器是再好不過的,就可以參考這篇文章(Can we update the values of “Created By”, "Modified By” columns in SharePoint lists?)直接在Visual Studio上參考上述組件做開發。
如果你正好沒有測試環境,而且也無法在production上安裝VisualStudio這麼龐大的怪物的話,就參考這篇文章(Updating the “Created By” and "Modified By” Columns in SharePoint lists using POWERSHELL)。沒錯! 就是用POWERSHELL。這也是我用的方法。
script:
1: # Get the SharePoint Assembly
2: # You will need to run this on the SharePoint Server
3: [Reflection.Assembly]::Load("Microsoft.SharePoint, Version=12.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c")
4: 5: # create a new object called $SPSite
6: # Make sure you have the last “/” in the url on the site
7: # allow $SPWeb to be the OpenWeb from the site
8: $SPSite = New-Object Microsoft.SharePoint.SPSite("http://server-name/")
9: $SPWeb = $SPSite.OpenWeb() 10: 11: # Get the list ModifyCreatedBy
12: $SPList = $SPWeb.Lists["ListName"]
13: 14: # Get the Collection of the List Items
15: $SPListItemCollection = $SPList.Items 16: 17: # iterate the Collection
18: foreach ($ListItem in $SPListItemCollection)
19: { 20: 21: # The user in this case was UserA with id of 8 from the SPWeb users
22: $SPFieldUserValue = New-Object Microsoft.SharePoint.SPFieldUserValue($SPWeb,8,"UserA")
23: 24: $ListItem["Author"] = $SPFieldUserValue
25: 26: # Note: Editor will be the account that you are running the Powershell under unless you update Editor as well
27: # ListItem["Editor"] = $SPFieldUserValue
28: 29: $ListItem.Update() 30: } 31: 32: $SPWeb.Update() 33: 34: # Still TODO Disposes, Error Checking, Change to take Parameters, etc
35:
上面的script是改了整個指定清單的建立者欄位,如果你還需要先判斷是那些文件,可以參考一下MSDN Library看看SPListItem還有哪些properities可以用。若是powershell語法不熟的話(尤其他又喜歡跟一般語法同.... 特別是比較運算子...),請參考reference#4, #5,或自行google。
嗯.. 大概就以上資訊,即可作業!!
Ref:
- [SharePoint Forums] Could not find Microsoft.SharePoint.Library.dll
- [MSDN Blog] Can we update the values of “Created By”, "Modified By” columns in SharePoint lists?
- [MSDN Blog] Updating the “Created By” and "Modified By” Columns in SharePoint lists using POWERSHELL
- [TechNet 技術文件庫] Running Windows PowerShell Scripts
- [賴榮樞的軟體資訊誌] scripting_PowerShell tag
- [MSDN Library] Microsoft.SharePoint Namespace
1:48:00 PM | Filed Under SharePoint | 0 Comments
poppassd + roundcube on FreeBSD
最近因為被roundcube的美貌所吸引,所以正在考慮是否拿它來當webmail。roundcube最大的特點就是: 相當美+相當陽春。
紀錄一下poppassd跟roundcube怎麼搭配,讓使用者可以在web介面上直接改密碼,而不需要登入freebsd系統.. roundcube的安裝部分就不介紹了,直接來poppassd的部分。
OS: FreeBSD 8.1-RELEASE-p1
roundcube: 0.4.2
poppassd: 4.0_3
STEP1: Install poppassd
# make install clean
By default, you can find the binary in /usr/local/libexec
STEP2: Startup setting
Modify /etc/inetd.conf AND /etc/services AND /etc/syslog.conf as describe in the man page.
STEP3: Auto-start inetd when reboot
Modify /etc/rc.conf AND add:
# inetd
inetd_enable="YES"
STEP4: restart inetd
STEP5: Config roundcube plugin
Modify /usr/local/www/roundcube/plugins/password/config.inc.php
// Select a driver to use, see README for more driver name
$rcmail_config['password_driver'] = 'poppassd';
STEP6: Add roundcube plugin
Modify /usr/local/www/roundcube/config/main.inc.php
// List of active plugins (in plugins/ directory)
$rcmail_config['plugins'] = array('password');
STEP FINAL: Restart roundcube and apache
Ref:
5:31:00 PM | Filed Under freebsd, mail | 0 Comments
iSCSI target crash when selecting ‘Device’ node
OS: Windows Storage Server 2003 R2
iSCSI target version: 3.1.3412
如題,一個很久以前就注意到的問題,不過因為沒有急迫性,就一直不理他XD。這兩天因為要整理一些空間出來用,只好處理一下。
於是找到一篇HP論壇裡的討論串,裡面有人提到是微軟的一個更新造成的...
請找KB973507
這個更新是2009/8/11出來的,如果有人遇到同樣的問題,大概也是這個時點之後,把這個更新移除後重開機,iSCSI target就可以正常使用了~
另外也有一份文件提到:
Issue: Installing Microsoft security update KB973507 results in the Microsoft iSCSI Software Target not displaying
iSCSI target devices when the Devices node is selected in the iSCSI Target management console.
Ref:
1:21:00 PM | Filed Under windows | 0 Comments
Oracle shutdown hangs: forgot the ‘immediate’ option
一個簡單的小問題,不過還滿常發生的= =||
一般需要關閉資料庫時,都會下'shutdown immediate’指令,有了immediate選項,Oracle不需等待所有連線關閉。反之,若只有下'shutdown'指令,也就是'shutdown normal',Oracle就會等到所有連線都結束後才關閉,通常都關不下來... 這時候就算又開了新的連線想重下指令,都會收到類似"Not connected to Oracle"這類的訊息.. 這時候!!
可以另外開一個新連線這麼做:
輸入密碼:
連線至閒置的執行處理.
SQL> startup force
已啟動 ORACLE 執行處理.
……(資料庫已掛載./資料庫已開啟.)
SQL> shutdown immediate
這樣就可以成功的把資料庫關下來囉~
另一邊原本正在shutdown的視窗可能會看見如下過程:
ORA-03113: 通訊通道上出現 EOF SQL> ^F^D
SP2-0042: 未知的命令 "" - 此行的剩餘部份被略過不予處理
完工!
10:18:00 AM | Filed Under oracle | 0 Comments
office: 使用萬用字元進行尋找/取代作業
今天發現office的尋找功能還滿強大的,介紹一些使用萬用字元搜尋/取代的方法:首先最基本的就是要會打開「尋找及取代」的視窗XD,在「更多(M)>>」選項裡把「使用萬用字元(U)」選項給勾起來。
- 尋找符合「HH:MM:SS」的時間格式: 最簡易且不嚴謹的寫法可以用「??:??:??」。「?」表示任何單一字元,所以如果你的文件裡有「AA:BB:CC」這樣的字串,它也會符合尋找目標,但卻不符合我們只想尋找時間格式的目的。所以可以改寫成「[0-9]{2}:[0-9]{2}:[0-9]{2}」,就是三組「[0-9]{2}」被兩個冒號隔開來,其中「[0-9]」表示0到9之間的其中一個數字,「{2}」表示前一個字元或運算式必須出現2次。所以利用三組「[0-9]{2}」與冒號就可以找出符合的格式。
- 在找到的「HH:MM:SS」時間格式前後加上「*」: 這時候就要需要取代功能的搭配了。在取代的頁籤裡,「取代為」的表示式該怎麼寫呢? 我希望找到所有的符合的時間格式並在他前後加上星號,卻不希望更改了時間的值。一開始嘗試用「*[0-9]{2}:[0-9]{2}:[0-9]{2}*」,結果他就把所有時間格式整個直接取代成「*[0-9]{2}:[0-9]{2}:[0-9]{2}*」的字樣OTZ。正確做法應該是把尋找目標寫成「([0-9]{2}):([0-9]{2}):([0-9]{2})」, 取代寫成「*\1:\2:\3*」。「\1」, 「\2」, 「\3」依序代表尋找目標的三組括號裡的值! 這個技巧主要用在你真正的目的不是「取代」,而是利用尋找到的目標再做一些位置上的變化或像此處加上其他字元符號的應用。
以上兩個就是今天有用到的精隨啦~ 當然還有很多種變化,像是{2,}則表示前面的字元或運算式至少要出現2次,若是{2,4}就表示前面的字元或運算式須出現2-4次。另外在不使用萬用字元的情況下也可用「代碼」來尋找特殊的格式或字元:
- 將空白行去除: 搜尋目標以「^p^p」表示(記得不必勾「使用萬用字元(U)」)。一個「^p」表示一個換行符號,兩個「^p^p」就會空一行,所以將「^p^p」取代為「^p」,就可以將空白行去掉了。
其他還有許多用法請參閱reference。
Ref:
2:48:00 PM | Filed Under office | 0 Comments
(ORA-01031) Cannot create/edit view with the owner of the schema
environment: enterprise linux + oracle11gr2
前情提要:
userA先生在9i的時代運作得相當正常,當然包含本篇所要探討的小小新建一個view的動作。升級到11g之後某天,卻發現userA再也無法在自己的schema下create view... 這麼小小一件事情都辦不到!!! 檢查了權限也跟9i時代完全相同(就是CONNECT, RESOURCE, UNLIMITED TABLESPACE這麼簡單,所以也沒把腦筋動到權限上),なんで??? 當時為了應急直接用dba帳號幫他處理掉了,今天又遇到一次,該是要面對的時候了..
一開始看到的都是在說"物件的權限需要直接grant給指定的人,不要透過角色(ROLE)來做"這件事情,因為在所有stroe procedures或PL/SQL block裡,角色權限是不會起作用的(All roles are disabled inside stored procedures.)等,不過這並不是我的情況..
無意間看到這篇文章在探討Oracle的Role包含了那些權限,才恍然大悟...
9ir2的CONNECT角色裡包含了"CREATE VIEW"的權限,但在11g裡,CONNECT的角色卻只剩下"CREATE SESSION"的權限... 就這麼簡單... 所以在11g要另外把CREATE VIEW的權限grant給userA先生,這樣就可以正常新建/修改view了... 就這樣orz
若要詳細列出角色所包含的權限,可使用以下查詢:
SQL> select * from ROLE_SYS_PRIVS where role='CONNECT';
(ROLE_SYS_PRIVS: 列出登入帳號所有擁的角色,及角色所包含的系統權限)
或者也可以這樣查:
SQL> select * from DBA_SYS_PRIVS where grantee='CONNECT';
(DBA_SYS_PRIVS: 列出所有user/role所擁有的系統權限)
10:12:00 AM | Filed Under ora-xxxxx, oracle | 3 Comments
Error: 5243: An inconsistency was detected during an internal operation.
Environment: WinServer2008 SP2+SQL Server 2008
昨天檢查SQL Server的時候在記錄檔裡看見一整串長相不凡的訊息... 大概長這樣:
Using 'dbghelp.dll' version '4.0.5'
***Stack Dump being sent to D:\Microsoft SQL Server\MSSQL10.MSSQLSERVER\MSSQL\LOG\SQLDump0001.txt
... (略)
錯誤: 5243,嚴重性: 22,狀態: 8。
An inconsistency was detected during an internal operation. Please contact technical support.
最明顯的訊息大概就最後兩行了吧... 另外一個dump file內容更是人類無法閱讀= =,明顯是要給機器讀的。
先是找到這篇: M$技術支援, Article ID:828337: An assertion or Msg 7987 may occur when an operation is performed on an instance of SQL Server.
標題看起來不怎麼有關係,不過內容確實有一些蛛絲馬跡。最早在SQL Server2000執行SELECT或UPDATE之類的transact-SQL時,就可能會有3624的錯誤訊息,而同樣的錯誤在SQL Server2005, 2008則是錯誤5242或5243。
造成5242/5243錯誤的原因只有簡單一小行: The problem may occur if inconsistencies exist in the databases on the instance of SQL Server....
還好相當有良心的還有solution..
- On the instance of SQL Server where the failure occurred, run the DBCC CHECKDB Transact-SQL command on all the databases.
- If the DBCC CHECKDB Transact-SQL command reports errors that indicate database inconsistencies, resolve the errors.
哈哈哈(乾笑三聲)... 一點都沒有好人做到底,送佛送到西的精神XD,連CHECKDB都不認識請參閱這兒(2000)或這兒(2008)。
所以就找了時間針對SQL Server裡的每個資料庫跑了下面這串指令。
DBCC CHECKDB(‘DB_NAME’) WITH ALL_ERRORMSGS;
(如果資料庫真的相當龐大,建議加個PHYSICAL_ONLY選項..)
結果每個資料庫的檢查結果都正常@_@a.. 雖然是個好消息,不過還是滿令人錯愕的阿XD 資料庫不會平白無故地耍人吧OTZ,所以不死心又多看了幾篇文章,終於,Paul S. Randal先生(SQL Server MVP, 撰寫2005 DBCC CHECKDB的人,這篇文章最後有簡介)給了個比較讓人釋懷的說明。
基本上5242跟5243是一樣的錯誤,不過5242會明確指出資料庫的哪個地方出了問題,5243卻是不明原因,資料庫無法指出的錯誤所丟出來的。雖然記錄檔紀錄了相關的訊息,這中間有可能其他的維護作業重建了索引,currupt pages被釋放,所以事後跑checkdb就看不出有任何錯誤。
大致上就這樣囉~
Ref:
10:48:00 AM | Filed Under SQLSvr | 1 Comments
[Mobile Phone] EDGE, 3G and HSDPA
筆記一下行動電話通訊技術:
- GSM(Global System for Mobile Communication), 全球行動通訊系統
GSM是目前傳統行動電話最廣泛使用的通訊標準,1990年由歐洲電信標準協會(ETSI)制定出第一版標準,發展至今。GSM也是我們熟知的2G--二代行動通訊;二代與前代的最大差異就是在他的信號與語音通道都是數位的。也因為GSM標準的廣泛使用,使全球行動電話廠商間可簽訂"漫遊協定",讓用戶於不同國家也能使用行動電話(使用漫遊服務)。 - GPRS(General Packet Radio Service), 通用封包無線服務
GPRS是GSM行動電話用戶可用的一種移動數據服務,約於2000年開始商用,被視為是2.5G。它使用GSM網路中未被使用的TDMA通道,使得GSM系統能夠以效率更高的"封包"方式提供數據通訊,也就是說多個用戶可以共享一個相同的傳輸通道,每個用戶只有在傳輸數據的時候才會佔用通道;所以其計費方式也不同於電路交換的以秒計費,而是以KB計。 - EDGE(Enhanced Data rates for GSM Evolution), GSM數據速度增強版
EDGE約於2003年開始商用,亦不屬於GSM網路中,可視為GSM(2G)和GPRS(2.5G)的延伸,所以有時稱為2.75G。EDGE也可寫作EGPRS, Enhanced GPRS, 因為它引進一個GPRS所沒有使用的技術: Incremental Redundancy, 此技術使用更多的冗於資訊來與接收端連接,取代重新發送受干擾的封包,藉此提高解碼的正確性。雖是介於2G與3G間,但是EDGE的數據傳輸最大理論值473.6Kbps已經達到3G標準。 - 3G(3rd-Generation), 第三代行動通訊
3G,也就是IMT-2000,是國際電信聯盟(ITU)定義的第三代無線通訊的全球標準,於1988年開始由3GPP制定規範。3G將無線通訊與國際網際網路等多媒體通訊結合,能同時傳送聲音(通話)及數據資訊(電子郵件、即時通訊等)。無線網路必須能夠支持不同的數據傳輸速度,也就是說在室內、室外和行車的環境中能夠分別支持至少2Mbps、 384kbps以及144kbps的傳輸速度。由於採用蜂巢式行動通訊技術,3G標準的通訊質量較之前大幅改善。 - HSDPA(High-Speed Downlink Packet Access), 高速下行封包存取
3.5G, 基於3G網路系統,可提供高達7.2mbit/s的數據傳輸速度。
Ref:
2:57:00 PM | Filed Under mobile | 2 Comments
Q: What are SQLCODE and SQLERRM and why are they important for PL/SQL developers?
[問題] 什麼是SQLCODE與SQLERRM,為什麼他們對PL/SQL開發者而言很重要?
Answer:
SQLCODE與SQLERRM都是用在exception handler裡。
SQLCODE會回傳exception的號碼,SQLERRM則是錯誤訊息內容。
最常見的用法就是搭配WHER OTHERS EXCEPTION使用:
DECLARE
v_code NUMBER;
v_errm VARCHAR2(64);
BEGIN
………
EXCEPTION
WHEN OTHERS THEN
v_code := SQLCODE;
v_errm := TO_CHAR(SQLERRM(v_code));
DBMS_OUTPUT.PUTLINE(‘ERRCODE ’ || v_code);
DBMS_OUTPUT.PUTLINE(‘ERRMSG ’ || v_errm);
END;
重要性? 當然是... 你可以處理exceptions,知道更詳細的訊息囉。
2:02:00 PM | Filed Under interview, oracle | 0 Comments
vSphere Client: parsing the server “servername” “clients.xml” file
今天是2010/6/11,如果你在昨天或前天安裝了windows update,而且也有使用vSphere Client,恭喜,他死了= =
好似確定是windows update(980773)造成的溜,vm的knowledge base有寫:
並且也在昨天釋放出新版的tools了,記得去更新的溜~
11:04:00 AM | Filed Under vmware | 0 Comments
新手上路之: read/write NTFS driver for Linux
在進行了一個月的笨蛋異地備份方法之後,實在是受不了了...= = 用WinSCP透過網路連到linux系統去拉檔案時在是太麻煩了... 尤其單個檔案很大時,超容易失敗OTZ
其實事情好像也滿容易解決的,只是因為對方是production,時在不敢直接在上面做實驗,只好花了兩天自己裝了一台機器,在上面做測試,成功!!
Environment: enterprise linux release5(update5)+ntfs-3g-2010.5.22
- 先下載NTFS-3G
- 丟到系統內並解壓縮
- 直接進入解壓縮的資料夾內,依照文件以root身份做一下三件事情:
# ./configure
# make
# make install - 沒錯! 這個moment就已經完成安裝了
- 接著就可以接上USB硬碟,並且辨識一下他的裝置名稱。這本書說linux會把USB視為scsi裝置,所以他的device name會是/dev/sd?(視你原本系統的裝置決定,像我的系統是用IDE硬碟,裝置是hda, hdb開頭,所以第一個scsi裝置就會是sda)
- 確定好裝置名稱之後,就可以把它mount起來(以/usb為mountpoint)
# mount –t ntfs-3g /dev/sda1 /usb
- 完工!! =D
Ref:
5:18:00 PM | Filed Under linux | 0 Comments
