블로그 이미지
올해목표 // 10월 어학연수 떠나자~ 자수씨

카테고리

전체글 (1457)
Brand New! (28)
주절주절 (213)
MOT (11)
해외쇼핑 (49)
쇼핑노트 (150)
취미생활 (94)
iPhone (4)
Eclipse (121)
Google (83)
Spring (31)
JAVA (176)
JavaScript (59)
WEB (49)
Database (20)
OS (26)
Tools (8)
Tips (26)
IT정보 (1)
Book (21)
Programming (37)
외부행사 (43)
주변인들 (17)
여행노트 (60)
학교생활 (30)
회사생활 (52)
사회생활 (5)
외국어공부 (12)
잡동사니 (30)
Total
Today
Yesterday
 
04-28 10:54
 

달력

« » 2024.4
1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30
 

최근에 올라온 글

최근에 달린 댓글



EditorGridPanel 에서 콤보 박스의 경우 Ext.util.Format.comboRenderer 라는 것을 인터넷에서 쉽게 찾을 수 있었으나 체크 박스는 찾을 수가 없어 약간 어색하지만 구현을 해 보았습니다.




EditorGridPanel 의 clicksToEdit 속성을 1 정도로 주면 그나마 덜 어색해집니다.

EditorGridPanel 의 cellClick 이벤트를 받아서 처리해도 되지만... 일단은 이정도에서 마무리 합니다.


Posted by 자수씨
, |

완전 고생 끝에 찾은 정보입니다... (간단하긴 했는데 -_ㅜ)

구글에 여러가지 키워드로 검색도 해보고 검색결과로 테스트를 해봐도 찾을 수가 없어서 마지막 방법으로 VBScript 로 검색해보니 아래와 같은 방법이 있었습니다. =ㅁ=... 그 내용을 힌트로 자바스크립트로 샤샥... 관련 함수를 만들어 봤습니다.




'Scripting.FileSystemObject' 의 GetSpecialFolder() 함수를 이용하여 여러가지 OS 특정 폴더를 확인할 수 있습니다.

GetSpecialFolder Method

Returns the special folder object specified.

object.GetSpecialFolder(folderspec)

  Arguments

object

Required. Always the name of a FileSystemObject.

folderspec

Required. The name of the special folder to be returned. Can be any of the constants shown in the Settings section.

  Settings

The folderspec argument can have any of the following values:

Constant

Value

Description

WindowsFolder

0

The Windows folder contains files installed by the Windows operating system.

SystemFolder

1

The System folder contains libraries, fonts, and device drivers.

TemporaryFolder

2

The Temp folder is used to store temporary files. Its path is found in the TMP environment variable.

The following example illustrates the use of the GetSpecialFolder method.


출처: MSDN (http://msdn.microsoft.com/en-us/library/a72y2t1c(VS.85).aspx)

제가 원하는 것은 Temp 디렉토리였기 때문에, GetSpecialFolder(2) 로 원하는 경로를 가지고 왔습니다만, 윈도우 폴더나 시스템 폴더를 확인하려면 파라미터 값을 달리 하여 호출하면 원하는 결과를 얻을 수 있습니다.



이제 남은 건 서버에 저기에 있는 파일을 올려야 하는데... 자바스크립트로는 불가능하고 ActiveX 아니면 swf 로 처리를 해볼까 생각 중입니다.

Posted by 자수씨
, |

'{ A: "AA", B: "BB" }'

위와 같은 스트링을 자바스크립트에서 객체화 하려면 어떻게 할까요?

var jsonStr = '{ A: "AA", B: "BB" }';
var obj = eval(jsonStr);

위와 같은 방식으로 하면 아래와 같은 오류가 발생합니다.

오류:  "';'가 필요합니다."

음... -ㅁ-;;; 일단은 아래와 같이 땜빵을 하였습니다.

var jsonStr = '{ A: "AA", B: "BB" }';
eval('var obj = ' + jsonStr + ';');



ExtJS 라이브러리를 보니 JSON 스트링을 괄호로 감싸서 처리를 하네요...

var jsonStr = '{ A: "AA", B: "BB" }';
var obj = eval('(' + jsonStr  + ')');



캬캿 잘 됩니다.


Posted by 자수씨
, |

운영 지원을 위한 툴을 구성하다 보니 새로운 세션으로 브라우저를 띄우는 것이 필요하였습니다.

여러 방식으로 찾아보았으나 공식적으로 지원해주는 API 는 찾을 수가 없었습니다.

그래서 찾아낸 것이 'ShellExecute' 메소드 였습니다. (참고사이트: MSDN ShellExecute Method)

IShellDispatch2.ShellExecute(sFile [, vArguments] [, vDirectory] [, vOperation] [, vShow])

자세한 파라미터는 위의 MSDN 페이지를 확인하면 될 것 같고...
원래의 목적인 IE 브라우저 띄우는 법은 아래와 같습니다.

var url = 'http://...';
var objShell = new ActiveXObject("Shell.Application");

objShell.ShellExecute("iexplore.exe", url, "", "open", 1);

그냥 이렇게 함수만 호출하면 "사용 권한이 없습니다." 라는 스크립트 오류만 보이게 됩니다.

아래와 같이 스크립팅 옵션을 변경합니다.



일단은 목적은 달성하였으니... 다른 좋은 방법이 없는지 운이 좋으면 찾게 되겠죠~

아참! IE 8은 세션을 공유하므로 웹 개발자들에게는 대 재앙...으로 다가올 뻔한... Windows 7 + IE 8 요 포스팅을 참고하시면 도움이 될 것 같습니다.



Posted by 자수씨
, |



티스토리 블로그를 보거나 네이버에서 서비스 하는 것을 보다 보면 무언가를 작성하다 나갈 때 위와 같은 메시지를 확인 하신 경우가 있으실 것 입니다.

당장 지금 포스팅을 작성하다가 창을 끄거나 아래 취소를 누르면 메시지가 8초전까지만 저장된다는 메시지를 보실 수 잇습니다.
(그냥 확인만...)

위의 창을 보이게 하는 설정은 아래와 같습니다.

window.onbeforeunload = function() {

           return "닫을 꺼예요??";

};


그냥 간단하게 윈도우나 BODY, FRAMESET 등과 같은 객체에 이벤트로 등록을 해주는 것만으로도 설정이 됩니다.


위의 확인 창이 발동되는 조건은 아래와 같습니다.

- 현재 브라우저 윈도우를 닫을 경우
- 새로운 주소를 치거나 즐겨찾기를 선택하여 새로운 경로로 탐색할 경우
- 뒤로, 앞으로, 새로고침, 홈으로 버튼을 클릭할 경우
- Click on an anchor that refers the browser to another Web page. (???)
- Invoke the anchor.click method. (???)
- document.write 메소드가 불려지는 경우
- document.open 메소드가 불려지는 경우.
- document.close 메소드가 불려지는 경우.
- window.close 메소드가 불려지는 경우.
- window.open 메소드가 불려지는 경우, providing the possible value _self for the window name.
- window.navigate or NavigateAndFind 메소드가 불려지는 경우. 
- location.replace 메소드가 불려지는 경우.
- location.reload 메소드가 불려지는 경우.
- location.href 프로퍼티에 새로운 값이 정의되는 경우
- FORM submit 하는 경우

anchor 와 관련된 것은 잘 모르겠지만 (하이퍼링크 대상을 나타내는 문자열이라고는 하는데...) 위와 같은 경우에 beforeunload 메소드가 fire 됩니다.



참고 사이트:
onbeforeunload Event (MSDN)
http://msdn.microsoft.com/ko-kr/library/ms536907(en-us,VS.85).aspx



Posted by 자수씨
, |


ExtJS 에서 Ext.PagingToolbar 를 이용하게 되면 위와 같이 똘똘한 페이징 툴바를 사용할 수 있습니다.

하지만... 별도로 파라미터를 이용한다면... 약간의 커스터마이징이 필요합니다.

new Ext.PagingToolbar({

           pageSize: 20,

           prependButtons: true,

           store: new Ext.data.JsonStore({

                     root: 'rows',

                     totalProperty: 'totalCount',

                     idProperty: 'table',

                     remoteSort: true,

                     fields: [ ... ],

                     proxy: new Ext.data.HttpProxy({

                         url: '~~~'

                     })

           },

           ...,

           doLoad: function(start) {

                     var o = this.store.lastOptions.params;

                     var pn = this.getParams();

                     o[pn.start] = start;

                     o[pn.limit] = this.pageSize;

                     if (this.fireEvent('beforechange', this, o) !== false) {

                                this.store.load({

                                          params: o

                                });

                     }

           }

});




doLoad() 함수를 오버라이딩 하고, store 의 가장 마지막 파라미터를 이용하였습니다.
(기존의  doLoad() 함수에 파라미터만 얹은 격이죠)

위와 같이 하면 기존의 파라미터에 시작 번호와 리미트만 바뀌기 때문에 원하는 결과를 얻을 수 있습니다.


Posted by 자수씨
, |

자식 윈도우에서 부모 윈도우를 핸들링 하려면 opener 라는 object 를 이용하면 됩니다.

하지만 부모 윈도우에서 자식 윈도우들에 대한 참조는 기본적으로 제공해주지 않는 것 같아서...
만들어보았습니다.




위 에서 보듯이 그냥 window.open 을 사용하면 됩니다.

그리고 각 윈도우의 레퍼런스를 따로 저장하여 사용하는 방식입니다. (단순 무식하게 만들었습니다.)


브라우저별로 문제는 없는데 큼큼...  먼가 깔끔한 방법이 없는가 고민 중 입니다.



Posted by 자수씨
, |
ExtJS 에서 EditorGridPanel을 사용하는데 꼭 두번을 클릭해야 Combo가 확장이 되는 것 이었습니다.



이런식으로 한번 클릭하면 포커싱이 되고, 두 번 클릭해야 되는 불편함 때문에 고민을 했는데...
동료 직원이 짜 놓은 소스를 보고 찾아 냈습니다.

clicksToEdit : Number

The number of clicks on a cell required to display the cell's editor (defaults to 2).

Setting this option to 'auto' means that mousedown on the selected cell starts editing that cell.


http://www.extjs.com/deploy/dev/docs/?class=Ext.grid.EditorGridPanel
EditorGridPanel 의 config 에 clicksToEdit 를 설정된 숫자 만큼 클릭을 해야 에디트가 가능하게 됩니다.




1로 설정할 경우 위와 같이 한방에 짜잔~~


Posted by 자수씨
, |

flex 로 간단한 위젯을 만들어 보려고 작은 시도를 해 보았습니다.

어찌저찌 만들었으나 crossdomain 문제... (어떤 사이트의 rss 를 읽어와서 뿌려주는 거였는데..)

ajax 로 데이터를 읽어와서 flex 로 넘겨주려 하엿으나 인코딩 문제 (rss 데이터가 euc-kr)

iframe 에서 rss 를 로드하여 넘겨주려 하였으나... IE 버전이 올라가면서 하위 iframe 내부에 access 할 수 없는 문제에 봉착하였습니다.


script injection 으로 인한 문제를 막기위해서 나온 기술들이 저의 시도를 무색하게 만들어버렸습니다.

-_ㅜ...

Posted by 자수씨
, |

아래 두 소스의 차이점은 무엇일까요...




아래의 store 로 template 를 dataview 에 붙여서 확인해보았습니다.



첫번째 결과


두번째 결과



자바스크립트에서 문자열을 만들 때, 작은 따옴표냐 큰 따옴표냐의 차이가 첫번째이며,
그 안에 또 따옴표를 쓸 때의 차이가 있을 뿐이였습니다.

즉, 첫번째는 큰 따옴표 속에 작은 따옴표가 들어가 있는 것이며
두번째는 작은 따옴표 속에 큰 따옴표가 있는 것입니다.

일반적으로 자바에서라면 첫번째 방법으로 해야 하는 것이 옳습니다.
하지만 자바스크립트에서는 두번째 방법도 지원을 하는 것 같습니다.

다만 XTemplate 에서는 두번째 방법으로 해야지 정상적인 결과를 볼 수 있다는 점이....
저를 5시간 동안 삽질하게 만들어 주네요 -_ㅜ...




Posted by 자수씨
, |

글 보관함

최근에 받은 트랙백