七月 2, 2010

Android app – 倉頡解碼

Posted in Android, Development, tools tagged , , , , 於 7:59 上午 由 Wing

我的 Android app 倉頡解碼 已經上市了~

目的:
– 本程式主要為不太懂倉頡的人士查詢倉頡碼而設的。
– 當遇到中文字輸入困難時,總會以各式各樣的方式解決,例如 copy & paste、搜尋關聯字、甚至用外文翻譯… 相當廢時失事! =_="
– 有了本程式後,不論你懂不懂倉頡輸入法,都可以拆解倉頡碼了~
* 前提是當你要在一個只能用倉頡∕速成輸入法的環境下打字,你便可用本程式,最好再配以手寫輸入法!(詳細不用多說吧~ 😛

功能用法:
– 只要輸入你想查詢的一個或多個中文字,倉頡碼即可顯示,無需連上網路。
– 設有各種默認查詢字搜查方式,使你可以更快速地查字。
– 超連結到網站查字。
– 支援香港字。
– 支援 “移至SD 卡” 功能。識用於Android 2.2 或以上。(App ver 2.2)
– 可切換自動/手動查詢。(App ver 2.3)

希望各位用了本程式以後,打字更加得心應手! ^o^
如有意見或問題,歡迎提出~

Screen Shot:

下載:
倉頡解碼
market://search?q=pname:hk.wing.cjcode

廣告

五月 24, 2010

Quick guide on using Oracle Database Audit Trail

Posted in Database, Development tagged , 於 9:16 下午 由 Wing

This post just to provide a quick guide on using Oracle 10g Database Audit Trail~

In this post:
1. Basic Configuration
2. Standard Audit Trail
3. Fine-Grained Auditing
4. Using Triggers
5. System logs
6. Oracle Audit Vault

Basic Configuration:

1. To configure audit trail option, you have to connect to an instance as administrator privilege user, e.g. sysdba, sysoper
conn sys as sysdba
2. Check current audit parameters with command:
show parameter audit
3. Define the audit log file location (if you choose to keep the audit log record in physical file):
ALTER SYSTEM SET AUDIT_FILE_DEST = '/oracle/audit_log' DEFERRED;
4. Be reminded to restart database instance after applied the configuration:
shutdown IMMEDIATE;
startup;

5. Normally, the audit log records is growing fast that remember to archive the records, following is some methods for reference:
– perform table copy from the audit log table/view to new table and then perform deletion.
Here is the example of archive SYS.AUD$ into new table:
CREATE TABLE TMP_AUD AS SELECT * FROM SYS.AUD$;
TRUNCATE table sys.aud$;

– perform table export to file by using command exp and then perform deletion.
– move the existing audit log into a new tablespace.
6. Three main views for auditing records are:
– DBA_AUDIT_TRAIL (AUD$): Standard auditing records.
– DBA_FGA_AUDIT_TRAIL (FGA_LOG$): Fine-grained auditing records.
– DBA_COMMON_AUDIT_TRAIL: For both standard and fine-grained auditing records.

Standard Audit Trail:

1. The options of Audit Trail record storage methods are: OS, DB, DB + Extended, XML, XML + Extended, and NONE.
2. You can apply following script to set the audit trail method, e.g. I am using XML that also capture the SQL text that user applied:
ALTER SYSTEM SET audit_trail=XML,EXTENDED SCOPE=SPFILE;
3. To define what kind of audit information required to capture for the particular user:
For DDL operations:
AUDIT ALL BY <username> BY ACCESS;
For DML operations:
AUDIT SELECT TABLE, UPDATE TABLE, INSERT TABLE, DELETE TABLE, EXECUTE PROCEDURE BY <username> BY ACCESS;
4. To disable audit trail:
NOAUDIT ALL BY ;
NOAUDIT SELECT TABLE, UPDATE TABLE, INSERT TABLE, DELETE TABLE, EXECUTE PROCEDURE BY ;
5. If you choose to use DB to capture the audit trail record:
– Retrieve audit records by selecting the table SYS.AUD$
– Purge audit trail record by delete/truncate records in SYS.AUD$.
6. If you choose to use OS or XML to capture the audit trail record:
– Retrieve audit records by selecting the view DBA_COMMON_AUDIT_TRAIL or from the physical files
– Each audit log file will capture all concerned operation within a session of a database user.
– Purge audit trail record by physically delete/move the audit log files. FYI, as the view DBA_COMMON_AUDIT_TRAIL will read from the physical file data, after removed the audit log files, the records in the view will also disappeared.

Fine-Grained Auditing:

1. FGA allows you to define your own criteria of for auditing.
2. Check the availability of FGA:
select * from v$option
where parameter like 'Fine-grained%';

3. Add FGA policy:
EXEC DBMS_FGA.add_policy(object_schema=>'username',object_name=>'table_name',policy_name=>'policy_name',audit_condition=>NULL,audit_column=>NULL,statement_types=>'SELECT,INSERT,UPDATE,DELETE');
4. Drop FGA policy:
EXEC DBMS_FGA.DROP_POLICY(object_schema=>'username',object_name=>'table_name',policy_name=>'policy_name');
5. Audit trail records can be retrieved in the table SYS.FGA_LOG$, DBA_COMMON_AUDIT_TRAIL, DBA_FGA_AUDIT_TRAIL
6. To Purge audit trail record, delete records in SYS.FGA_LOG$, DBA_FGA_AUDIT_TRAIL.

Using Triggers

1. By using triggers, you can define your own criteria and audit log logging logic, which is more flexible to capture the audit log and even the data.
2. Following is the trigger sample:
CREATE TRIGGER audit_tmp_table
AFTER INSERT OR DELETE OR UPDATE ON tmp_table
for each row
begin
if (:new.field_name = 'A')
then
insert into tmp_table_audit values (
:tmp_field,
:old.field_name,
:new.field_name,
user,
sysdate ) ;
endif;
end;

3. Retrieve/Purge audit trail record according to the trigger logic.

System logs

1. syslog is independence with audit log, it mainly used to audit the operation of privileged users, such as SYS, in order to prevent the privileged users to modify the audit log records.
2. To enable the syslog:
– Alter the system parameter
AUDIT_TRAIL=OS
AUDIT_SYSLOG_LEVEL=facility.level
– Set the log file location to the syslog configure file:
facility.level /var/log/audit.log
– Restart the database instance

Oracle Audit Vault

1. DBMS_AUDIT_MGMT PL/SQL Package is available in Oracle Audit Vault, which provides subprograms to manage audit trail records.
2. Oracle Audit Vault supported from Oracle 10g Release 2 and bundled with Oracle 11i, which means you need to install the Oracle Audit Vault package for 10g. Although it is free to download, it required license to run on production environment.

Reference:

Auditing in XML
http://www.oracle.com/technology/oramag/oracle/06-jan/o16security.html

Configuring and Administering Auditing
http://download.oracle.com/docs/cd/B19306_01/network.102/b14266/cfgaudit.htm#BABCBJHG

DBMS_AUDIT_MGMT PL/SQL Package
http://download.oracle.com/docs/cd/E11062_01/admin.1023/e11059/avadm_app_d_audit_mgmt.htm

Oracle Audit Vault Downloads
http://www.oracle.com/technology/software/products/auditvault/index.html

Oracle Audit Vault Server Installation Guide
http://download.oracle.com/docs/cd/E14472_01/doc.102/e14458/toc.htm

* Please ensure you have applied the latest patch set for Audit Vault
http://updates.oracle.com/download/9087650.html (as of May 2010)

一月 16, 2010

Android Development

Posted in computer, Development tagged , , , 於 9:57 下午 由 Wing

This is my development notes on Android~

Development Environment:

Mac OS
Android 1.6 SDK
Eclipse 3.5 Galileo


Basic elements:

1. Installation
2. Emulator
3. Android 1.6 NDK
4. SQLite databases


1. Installation:

1.1. Install Android 1.6 SDK
1.2. Install Eclipse 3.5 Galileo http://www.eclipse.org/downloads/
1.3. Install Android Development Tools (ADT) Plugin for Eclipse
http://developer.android.com/sdk/1.6_r1/installing.html


2. Emulator:

To list Available Android targets, go to the sdk tools directory (e.g. /Applications/android-sdk-mac_x86-1.6_r1/tools) and then issue following command:
$ ./android list targets
Available Android targets:

id: 1
Name: Android 1.5
Type: Platform
API level: 3
Revision: 1
Skins: HVGA (default), HVGA-L, HVGA-P, QVGA-L, QVGA-P
id: 2
Name: Android 1.6
Type: Platform
API level: 4
Revision: 1
Skins: HVGA (default), QVGA, WVGA800, WVGA854
id: 3
Name: Google APIs
Type: Add-On
Vendor: Google Inc.
Revision: 3
Description: Android + Google APIs
Based on Android 1.5 (API level 3)
Libraries:
* com.google.android.maps (maps.jar)
API for Google Maps
Skins: QVGA-P, HVGA-L, HVGA (default), QVGA-L, HVGA-P
id: 4
Name: Google APIs
Type: Add-On
Vendor: Google Inc.
Revision: 1
Description: Android + Google APIs
Based on Android 1.6 (API level 4)
Libraries:
* com.google.android.maps (maps.jar)
API for Google Maps
Skins: WVGA854, HVGA (default), WVGA800, QVGA

Note:
VGA (Video Graphics Array) is 640×480
HVGA (Half Video Graphics Array) is 640×240
QVGA (Quarter Video Graphics Array) is 320×240
WVGA (Wide Video Graphics Array) is 800×480

To create emulator:
$ ./android create avd --target 1 --name cupcake
Android 1.5 is a basic Android platform.
Do you wish to create a custom hardware profile [no]
Created AVD ‘cupcake’ based on Android 1.5
$ ./android create avd --target 2 --name donut
Android 1.6 is a basic Android platform.
Do you wish to create a custom hardware profile [no]
Created AVD ‘donut’ based on Android 1.6, with the following hardware config:
hw.lcd.density=160

To list the created emulator:
$ ./android list avd
Available Android Virtual Devices:
Name: cupcake
Path: /Users/wing/.android/avd/cupcake.avd
Target: Android 1.5 (API level 3)
Skin: HVGA
———
Name: donut
Path: /Users/wing/.android/avd/donut.avd
Target: Android 1.6 (API level 4)
Skin: HVGA

To delete emulator:
$ ./android delete avd --name donut
Deleting file /Users/wing/.android/avd/donut.ini
Deleting folder /Users/wing/.android/avd/donut.avd
AVD ‘donut’ deleted.

To start emulator:
$ ./emulator -avd cupcake


3. Android 1.6 NDK:

Seems it can reuse existing native code.
http://developer.android.com/sdk/ndk/1.6_r1/index.html


4. SQLite Databases:

4.1. Start emulator
$ ./emulator -avd cupcake

4.2. Start adb shell
$ ./adb shell

4.3. Go to application directory and create database
#cd data/data/<application_dir>
#mkdir databases
#chmod 777 databases
#sqlite3 <db_name>.db
sqlite>


Reference:

http://developer.android.com/index.html