2011年8月31日 星期三

[Android] Dialog Style

* Dialog
- 會縮成dialog的樣式。
- 是對window set theme(?)。


* AlertDialog
- 預設是dialog的樣式。
- 但若設定theme,則是set attri on panel(?),所以並不會自動縮成dialog的樣式。


[Oracle] ORA-01489: 字串過長

ORA-01489

Scenario:

使用sys_connect_by_path()


Message:

Cause: java.sql.SQLException: ORA-01489: 串接而成的字串過長
; nested exception is com.ibatis.common.jdbc.exception.NestedSQLException:
字串串接太長 , default is VARCHAR2 (4000bytes)




20110912
JDBC 某些 driver 會有預設值限制,產生類似的問題,而用不同版本改善,可 survey 此方向相關資訊。

[Oracle ] ORA-00600

ORA-00600


Scenario:

使用 rownum 則會出現 exception。




Message:

Caused by: java.sql.SQLException: ORA-00600: 內部錯誤代碼, 引數: [evapls1], [], [], [], [], [], [], [].....

Solution:

#ALTER SYSTEM SET "_optimizer_filter_pred_pullup"=FALSE;





2011年8月28日 星期日

[Java] Thread and Process

* Program
- 執行的程式,類似OO中的 class。

* Process
- 程式中的執行程序,一個程式可以執行多次產生多個process,類似OO中的Object。
- 一個process由memory space和thread組成。


* Thread
- 在Java中要實現執行緒功能,可以實作Runnable介面,Runnable介面中只定義一個run()方法,然後實例化一個 Thread物件時,傳入一個實作Runnable介面的物件作為引數,Thread物件會調用Runnable物件的run()方法,進而執行當中所定義的流程。


* Overview
- 一個process可以有多個thread。
- 同個process中的thread使用相同的memory space,但這些thread擁有各自的stack,也就是說,thread能透過reference取到相同的object,但local variable是各自分開的。



* Reference
- Thread(執行緒)
- 實作 Runnable 介面

2011年8月27日 星期六

[Web] J2EE and struts

* J2EE
- 就有提供 interceptor
- request.setAttribute 傳送屬性到前端

* struts
- extends ActionSupport -> 可使用 setter/getter 處理屬性
- 可利用 interceptor 做類似 spring actionController 功能
- example:


<package name="packageName" namespace="/nameSpaceName">
    <default-interceptor-ref name="interceptorRef" />

    <action class="className" name="actionName">
        <result name="resultName">jspName</result>
    </action>
</package>


URL: /context/nameSpaceName/actionName.action
className: 此 action 所對應執行的 class (bean)

[Android] SharedPreferences

* 輕量級以 xml 儲存的方式

* 會放在 /data/data/package name/shared_prefs

* global variable

* xml 處理時 Dalvik 會用底層 xml parser 解析

The Java Naming and Directory Interface (JNDI)

(from JWorld@TW Java論壇 - JNDI觀念)


* The Java Naming and Directory Interface (JNDI) is a Java API for a directory service that allows Java software clients to discover and look up data and objects via a name.

* Like all Java APIs that interface with host systems, JNDI is independent of the underlying implementation.

* Additionally, it specifies a service provider interface (SPI) that allows directory service implementations to be plugged into the framework. It may make use of a server, a flat file, or a database; the choice is up to the vendor.

* 在 J2EE 中,JNDI 是把 J2EE 應用程式何在一起黏著劑,將資源取名字,提供命名服務,以可以根據名字來找到資源。假設要連的對象是書,而JNDI是圖書管理員,把書碼告訴管理員便會找到相對應的書

* JNDI is a connection pool,工作效率比直接連接好。

* JNDI 是一種樹狀的檔案系統結構,每個節點都可以儲存任何物件,客戶端程式可以透過 JNDI path 來查詢所儲存的物件或是更新物件的值,延伸到 client-server 的觀念,就好比存取網路磁碟的檔案一樣。

* 只不過 JNDI 的路徑的定義跟檔案系統的定義不太相同,儲存的內容也不限是檔案而是廣義的物件。


* Reference
- 请问个位JNDI到底是什么意思呀,始终没有理解清楚 - Java / Java SE
- Java Naming and Directory Interface - Wikipedia, the free encyclopedia
- JWorld@TW Java論壇 - JNDI觀念

[Java] if/else and codeStyle

* switch performance is better than if/else

* tab may cause error when gen java doc

Weblogic

若透過 weblogic console 啟動 server 會有錯

除非啟動的步驟完全按照 weblogic 官網上的啟動標準流程

而此步驟很繁複

[Layout] ratingBar, listView

* ratingBar
if maxHeight >= height of image 星星亮時 角會衍生線出來(?)


* 若對 content provider 修改/刪除/新增 欄位都能更新table


* android:layout_height:match_parent is not affect scrollview

[Oracle] import data

index
提高搜尋資料的速度,類似於word內的索引,若沒有index,則是從第一筆的一筆一筆比對資料來確認是否符合條件,若有設的話則當符合index條件則會直接到已符合此index條件下的資料篩選

TableSpace
像是規劃不同槽的放置空間


* 使用 oracle export/import more faster than insert data directly,因為 insert 的方式轉換資料會耗很多時間。

[Android] Theme.Dialog

theme.dialog 是縮小整個 window

so window background is dialog background

[Design] 取資料方式

* 在撈取資料(SQL)欲新增一固定條件(a)時,可有以下幾種做法:

1. hard-code "a" 在 SQL 中。

2. 從資料庫中撈取 a 值。每次檔案更改都需重啟,所以如果僅在啟動時去load進來,那麼使用時會有錯,應該要有re-load機制或是使用前再去load。

- 放置在外部 property file

- 放置在 db table: 方便user修改


因為 a 算是個固定要加入的查詢條件,並不會變動,且不修改太多原本的程式,所以選擇使用 hard-code。

[SQL] String and int parameter syntax

int 直接表示

string: 單引號

ex:

select a.NAME from PERSON a where a.AGE = 1;

select a.AGE from PERSON a where a.NAME = 'YANG';