ExtJS를 이용해 개발하다보면 필연적으로 만나게 되는 자바스크립트 에러 !

파이어폭스에서는 부가기능으로 설치가능한 Firebug나 Web developer tool이 있어 별 문제가 없지만, IE에서는 정말 대책이 없다. ExtJS를 IE 기반에서 아래 소개하는 도구 없이 개발한다면 KTX를 이용하지 않고 걸어서 서울부산을 왕복하는 용자(용기있는 자) 되겠다.

1. MS 스크립트 디버거
MS에서 무료로 배포하는(OS 정품 사용자에게만) 도구로 아래에 소개하는 녀석과 함께 구동하면 매우 좋다.

2. Companion.js
Firebug에서 스크립트 디버깅 기능을 IE에서 사용할 수 있도록 해준다.

주의 : 1번, 2번 순서대로 설치할 것.

나중에 재설치할 경우의 귀차니즘으로 인해 관련된 파일을 첨부파일로 올려놓는다. 첨부파일 중 WGA....exe 파일은 정품사용자를 확인하는 플러그인이다.

저작권 신고로 인해 관련파일을 링크로 대체한다.

WGAPluginInstall.exe - http://www.downloadstwist.com/wgaplugininstall/
install-companionjs-v0.5.exe - http://www.my-debugbar.com/wiki/CompanionJS/HomePage
scd10en.exe - http://www.microsoft.com/downloads/details.aspx?familyid=2f465be0-94fd-4569-b3c4-dffdf19ccd99


출력해서 수시로 참조해야 할 듯 ....

xtype Class
------------- ------------------
box Ext.BoxComponent
button Ext.Button
buttongroup Ext.ButtonGroup
colorpalette Ext.ColorPalette
component Ext.Component
container Ext.Container
cycle Ext.CycleButton
dataview Ext.DataView
datepicker Ext.DatePicker
editor Ext.Editor
editorgrid Ext.grid.EditorGridPanel
flash Ext.FlashComponent
grid Ext.grid.GridPanel
listview Ext.ListView
panel Ext.Panel
progress Ext.ProgressBar
propertygrid Ext.grid.PropertyGrid
slider Ext.Slider
spacer Ext.Spacer
splitbutton Ext.SplitButton
tabpanel Ext.TabPanel
treepanel Ext.tree.TreePanel
viewport Ext.ViewPort
window Ext.Window

Toolbar components
---------------------------------------
paging Ext.PagingToolbar
toolbar Ext.Toolbar
tbbutton Ext.Toolbar.Button (deprecated; use button)
tbfill Ext.Toolbar.Fill
tbitem Ext.Toolbar.Item
tbseparator Ext.Toolbar.Separator
tbspacer Ext.Toolbar.Spacer
tbsplit Ext.Toolbar.SplitButton (deprecated; use splitbutton)
tbtext Ext.Toolbar.TextItem

Menu components
---------------------------------------
menu Ext.menu.Menu
colormenu Ext.menu.ColorMenu
datemenu Ext.menu.DateMenu
menubaseitem Ext.menu.BaseItem
menucheckitem Ext.menu.CheckItem
menuitem Ext.menu.Item
menuseparator Ext.menu.Separator
menutextitem Ext.menu.TextItem

Form components
---------------------------------------
form Ext.FormPanel
checkbox Ext.form.Checkbox
checkboxgroup Ext.form.CheckboxGroup
combo Ext.form.ComboBox
datefield Ext.form.DateField
displayfield Ext.form.DisplayField
field Ext.form.Field
fieldset Ext.form.FieldSet
hidden Ext.form.Hidden
htmleditor Ext.form.HtmlEditor
label Ext.form.Label
numberfield Ext.form.NumberField
radio Ext.form.Radio
radiogroup Ext.form.RadioGroup
textarea Ext.form.TextArea
textfield Ext.form.TextField
timefield Ext.form.TimeField
trigger Ext.form.TriggerField

Chart components
---------------------------------------
chart Ext.chart.Chart
barchart Ext.chart.BarChart
cartesianchart Ext.chart.CartesianChart
columnchart Ext.chart.ColumnChart
linechart Ext.chart.LineChart
piechart Ext.chart.PieChart

Store xtypes
---------------------------------------
arraystore Ext.data.ArrayStore
directstore Ext.data.DirectStore
jsonstore Ext.data.JsonStore
simplestore Ext.data.SimpleStore (deprecated; use arraystore)
store Ext.data.Store
xmlstore Ext.data.XmlStore
http://opensource.atlassian.com/confluence/oss/display/IBATIS/Environment+Specific+Information

Timeout
As of release 2.2.0, iBATIS includes a query timeout funcionality.
You can specify both a global timeout
  
<settings defaultStatementTimeout="2" />
or a per query timeout
  
<statement ... timeout="2">
When the timeout expires, it throws a SQL Exception "ORA-01013 : user requested cancel of currentoperation".
  
Tested with: Oracle 9i release 2 drivers.

결론 : 수행에 3초이상 걸리는 쿼리가 있다면 해당 쿼리 정의문에 timeout attribute를 주던가 기본 sqlmap-config.xml 파일의 defaultStatementTimeout 값을 늘려주어라.

GWT에서 ExtJS로 전환하는 와중에, 이건 뭐 전체적인 개념은 같더라도 코딩 방식이 너무 상이하다.
특히 클로저(Closure)[각주:1] 개념은 자바 프로그래머에게 정말 생소한데, 이거 모르면 ExtJS 소스 분석하기 너무 힘들다. (참고로 Java에서는 버전 8 에서나 클로저 개념이 도입될 가능성이 농후 하다)

관련 서적이 없나 구글링중에 찾은 관련 서적 !! 여차저차 구해서 지금 열심히 출력중이다. ㅋㅋ

http://www.packtpub.com/learning-ext-js/book
£22.49 (한화 약 4만원) -> 아마존 주문 시 항공배송료 포함하면 5만원 훌쩍 넘는다.

참고로, ExtJS in Action (http://www.manning.com/garcia/) 이 책은 2009년 12월경에 책으로 출간될 예정이며,
현재 $27.50 가격에 MEAP 에디션으로 5장까지 살펴볼 수 있다. (전체 14장)
현재 안정화가 진행중인 ExtJS 3.0 을 반영한다고 하니 이것도 구해봐야 할 것 같다.

  1. 함수의 인자로 오브젝트 외에 함수 그 자체(코드 블럭)를 넘긴다. 참고 : http://blog.morrisjohns.com/javascript_closures_for_dummies [본문으로]
파라메타 클래스 정보에 null 값이 설정되어 전달될 경우 오라클 9i 버전대 JDBC 드라이버에서 위 에러 발생

해결
1. com.ibatis.sqlmap.engine.mapping.parameter.ParameterMap 클래스의 setParameter() 메소드 수정

if (value == null) {
    value = "";
}

2. 오라클 JDBC 드라이버를 10 버전대 이상으로 업그레이드
1. Serializable 대상 Bean 객체를 client 단 패키지에 위치할 것
2. implements Serializable OR IsSerializable
3. RPC 호출 주소를 *.rpc로 하지말고 다른 확장자로 정의할 것

in GWT 1.6.4

1. 네트웍 대역폭 모니터링
[apt-get install bmon]
bmon

2. CPU 모니터링
[apt-get install sysstat]
mpstat 1 100 (1초에 1회씩 100번 출력)

3. VM 모니터링
vmstat 1 100 (1초에 1회씩 100번 출력)

4. DISK 모니터링
iostat 1 100 (1초에 1회씩 100번 출력)

5. 아파치 프로세스 수 (설정된 동시접속자수)
ps aux | grep apache | wc -l
동시접속자 수
netstat -an | grep :80 | grep ESTABLISHED | wc -l

* 사용 포트 조회
netstat -anp | grep LISTEN

Tomcat에서 정상 동작하던 것이 Weblogic 전환 시 문제가 발생한다.

Weblogic은 ....
1. include 되는 녀석의 contentType 중복을 허용하지 않음

버전 8,1의 경우에는 ....
2. JSTL 1.0만 지원함
[1.1 버젼] : <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
[1.0 버젼] : <%@ taglib uri="http://java.sun.com/jstl/core" prefix="c" %>


3. Sevlet 2.3만 지원함 (Sevlet 2.4 -> http://www.okjsp.pe.kr/seq/30536)
[2.4 버젼] : <!DOCTYPE web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd"
version="2.4">
[2.3 버젼] : <!DOCTYPE web-app PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
"http://java.sun.com/dtd/web-app_2_3.dtd">

Sitemesh와 통합했을 경우에는 ....
4. Didn't meet stated Content-Length 에러 발생
: response.setContentLength의 크기가 Sitemesh에 의해 변하는 것을 Weblogic은 허용하지 않고 에러를 발생시킨다.

com.opensymphony.module.sitemesh.filter.PageFilter 클래스 아래와 같이 변경함
    if (Container.get() != Container.WEBLOGIC) {
        response.setContentLength(page.getContentLength());
    }

※ 아울러 한글 Window OS에서 UTF-8 인코딩 설정 시 한글 문제 아직 미해결 함 (이것 역시 Sitemesh와의 문제인 듯 ....)

모 업체의 모듈을 이용해 SMS 발송 테스트 중 이 모듈이 오라클의 KSC5601 인코딩만 지원한다는 이야기를 들었다.
우리 DB는 UTF-8 기반인데 어떻게 해야 하나 삽질 중에 10g에서 지원하는 아래 함수를 발견했다.

10g 여서 정말 다행이지만, 요즘 대부분 UTF-8 을 사용하고 있는 와중에 이런 제한적인 환경에서 동작하는 솔루션은 정말 안습일 따름이다.

SELECT CONVERT($메시지_칼럼$, 'AL32UTF8', 'KO16KSC5601')
   FROM TB_NAME

※ CONVERT( '대상 문자열', '타겟 인코딩', '소스 인코딩')
출처 : http://ksevindik.blogspot.com/2008/04/ora-12519-when-using-oracle-xe.html

ORA-12519 When Using Oracle XE

I recently installed Oracle XE on my laptop and tried to run our project which normally uses Oracle 10g in our company. After creating a db user and enabling it, I created tables, sequences, triggers and stored procedures etc by running db init scripts through ant without any problem. When it came to starting application in application server, I got "ORA-12519, TNS:no appropriate service handler found" messages. Thanks to this and this blog entries to reach at a quick solution. The problem was a bug in how Oracle XE handles monitoring processes, and you need to execute "ALTER SYSTEM SET PROCESSES=150 SCOPE=SPFILE;" statement and then restart your database to get rid of it.

After overcoming this problem, I came up with a Turkish character encoding problem within my Hibernate generated sql statements but I am not hundred percent sure if I installed Oracle XE to deal with non latin characters appropriately. Anyway, it is easy to get rid of such encoding problems by setting user.language and user.country system properties to en and US consecutively.

+ Recent posts