반응형
UTF8 타입에는 byte[] 와 length 를 가지고 있다.

1. set(String string) 을 사용하여 string -> byte[] 로 저장할 때 DataOutputBuffer 사용
    String -> charAt(i) 루프를 돌면서 utf8 byte 로 변환하여 DataOutputBuffer 의 byte[] 에 저장 ->
    System.arraycopy로 UTF8 byte[] 에 복사

2. toString() 으로 byte[] -> String 으로 리턴할 때 DataInputBuffer 와 DataOutputBuffer 사용
    UTF8 byte[] -> DataInputBuffer 의 byte[] 에 저장 -> 
    DataInputBuffer를 argument로  DataOutputBuffer 의 byte[] 에 저장 (out.write(in)) -> 
    DataOutputBuffer의 byte[] 를 StringBuffer에 append 하여 리턴

여기서.. 의문.. 왜 2 번에서 UTF8 byte[] 를 DataOutputBuffer byte[] 에 arraycopy를 하지 않을까?

간단함.. 그냥 그런 api 를 만들지 않았음.. byte[] 를 받아서 저장하는 것은 DataInputBuffer 에만 존재
DataOutputBuffer 는 DataInputBuffer 를 이용해서 byte[] 를 저장.

중요한 것은 DataOuputBuffer 는 DataOutputStream 을 상속받았지만 DataOutputStream 에는 없는 buffer 기능을 추가하였음. (내부 클래스로 ByteArrayOutputStream 을 상속받은 Buffer 클래스가 존재)

DataInputBuffer 도 DataInputStream 을 상속받있지만 똑같이 buffer 기능을 추가.

반응형
Posted by seungkyua@gmail.com
,
반응형
Safari Javascript Debug Console

defaults write com.apple.Safari IncludeDebugMenu 1
반응형
Posted by seungkyua@gmail.com
,
반응형
ie 인지 판별하는 법

var userAgent = navigator.userAgent.toLowerCase();
var isIE = (/msie/gi.test( userAgent ) && !/opera/gi.test( userAgent ));


로딩 이벤트 등록하기

if (isIE) {
    iframe.attachEvent('onload', 함수명);
} else {
    iframe.addEventListener('load', 함수명, false);
}
반응형
Posted by seungkyua@gmail.com
,
반응형
1. 프로젝트를 만든다.
    프로젝트명 : WindowBasedSample
    프로젝트 생성시 처음 만들어지는 파일은 일종의 엔트리 포인트로 생각한다.
    WindowBasedSampleAppDelegate.h
    WindowBasedSampleAppDelegate.m

2. nib 파일(화면)을 만든다.
    Interface Builder 를 실행하여 View 타입으로 생성하여 WindowBasedSample 프로젝트 디렉토리에 저장한다.
    파일명 : HelloWorldView.xib
    Library 창에서 원하는 view object 를 선택하여 View 창에 드래그&드랍으로 화면을 만든다.

3. HelloWorldView.xib 화면을 연결할 UIViewController 파일을 만든다.
   Xcode 에서 File -> New File 을 선택하고 타입을 UIViewController subclass 로 선택한다.
   파일명 : HelloWorldViewController

4. HelloWorldView.xib 화면과 HelloWorldViewController 를 연결한다.
    HelloWorldView.xib 의 Document 창에서 File's Owner 를 선택하고 Identity Inspector 창을 띄운다.
    class identity 의 클래스에서 HelloWorldViewController 를 선택한다.
    Connections Inspector 창에서 Outlets 의 view 속성을 드래그해서 Document 창의 View와 연결한다.
    
5. WindowBasedSampleAppDelegate.m 에서 HellowWolrdView.xib 를 로딩한다.
    -(void) applicationDidFinishLaunching 메소드에서 자신의 view를 window view 에 세팅한다.

로딩 순서 및 연결고리를 보면.....

1. main.m
2. MainWindow.xib
3. WindowBasedSampleAppDelegate.m
4. HelloWorldView.xib
5. HelloWorldViewController.m



  
반응형
Posted by seungkyua@gmail.com
,
반응형
Class                : 설명이 필요없겠죠.. 우리가 알고 있는 클래스 그 자체입니다.
Class Object      : 클래스에 단 하나밖에 없는 객체로 인스턴스를 만들 때 필요한 정보를 가지고 있는 객체입니다.
                          내부적으로 존재하는 객체로 보시면 되고 Factory Object 라고도 합니다.
                          클래스에서 접근하는 메소드는 사실 클랙스 객체의 메소드로 접근한다고 생각하면 됩니다.
                          클래스 객체는 타입으로는 클래스와 같습니다.
Class Method    : 클래스 객체에서 접근가능한 메소드입니다. 인스턴스가 없어도 클래스 객체로 직접 접근 가능
                          합니다.
Instance            : 클래스 객체로 부터 생성되어 메모리에 할당된 객체입니다.


@interface Artist : NSObject
{
    NSString *name;      // instance variable
    static int age;        // class varialbe
}
- (NSString *) name;   //  instance method
@end


#import "Artist.h"

@implementation Artist

- (NSString *) name    //  instance method
{
    return name;
}
- (void) init             //  instacne variable 초기화
{
   name = @"ASK";
}
+ (void) initialize   // class variable 초기화
{
     static BOOL initialized = NO;
    if ( ! initialized )
    {
 
         age = 20;
         initialized = YES;
     }
}
@end

반응형
Posted by seungkyua@gmail.com
,

Flex Troubleshooting

Flex 2010. 9. 9. 14:24
반응형
Flex 로 웹 프로그래밍을 할 때... 특히 게시판과 같은 시스템을 만들 때 고려할 점~~

1. Flex 위에 게시물 상세정보(HTML) 이 보여줘야 한다.
   (1층 : Flex, 2층 : HTML 상세정보)
2. 상세정보를 스크롤 할 때 상세정보 내용이 스크롤 되면서 상단위 플렉스 영역을 침범하면 안된다. 
3. 게시물을 작성할 때 javascript 에디터나 ActiveX 컨트롤을 사용한 에디터를 사용한다.
4. 게시물 저장 버튼을 클릭할 때 확인 메세지가 레이어로 떠야 한다.
    (1층 : Flex, 2층 : ActiveX, 3층 : Flex 레이어 팝업)
5. Flex 의 로딩시점과 ActiveX의 로딩시점이 꼬이지 않게 정확한 로딩 순서를 보장해야 한다.
6. 포커스 처리
    (처음 창이 뜰 때와 탭등으로 포커스 이동 등)
7. Drag & Drop 기능을 사용할 때 잔상이 안남게 하는 방법
8. swf 로딩을 이용한 모듈과의 LocalConnection 사용 시 자주 끊길 수 있는 문제

적어도 이 정도를 고려하지 않으면 Flex 로 HTML 내용을 저장하는 게시판 만들 생각하지 마세요..

근데.. 저희는 해결했습니다.. ^^
반응형
Posted by seungkyua@gmail.com
,

Telnet, Proftp 설치

Linux/Ubuntu 2010. 8. 14. 23:57
반응형
텔넷은 설치가 쉬었는데.. Proftp 는 정말 삽질 많이 했습니다..^^

//----------------------------------------
//--  Telnet 설치
//----------------------------------------
# sudo apt-get install xinetd
# sudo apt-get install telnetd

//------- telnet을 xinetd에 추가
# vi /etc/xinetd.conf
defaults
{
}

service telnet
{
   disable = no
   flags = REUSE
   socket_type = stream
   wait = no
   user = root
   server = /usr/sbin/in.telnetd
   log_on_failure += USERID
}

//------- xinetd 재시작
# service xinetd restart

문제가 발생하면 다음의 로그를 보면 됩니다.
# tail -f /var/log/syslog

//----------------------------------------
//--  Proftpd 설치
//----------------------------------------
# sudo apt-get install proftpd

화면에 standalone 과 xinetd 선택이 나오면 xinetd 를 선택합니다.

//------- proftpd을 xinetd에 추가
# vi /etc/xinetd.conf

service ftp
{
   disable = no
   flags = REUSE
   socket_type = stream
   wait = no
   user = root
   server = /usr/sbin/proftpd
   log_on_success += DURATION USERID
   log_on_failure += USERID
   nice = 10
}

//------- xinetd 재시작
# service xinetd restart

//------- 방화벽 열기
# sudo ufw allow 21/tcp


반응형
Posted by seungkyua@gmail.com
,
반응형

정말 공감가는 말이다..

아키텍트 우습게 봤는데 꼭 그런것 만은 아니군..


최종 사용자의 기능별로 나뉜 컴포넌트 기반의 아키텍처는 다른 기능에 영향을 미치는 물리적 요소와 관련된 변경일 경우만 제외하면 기능의 변경용이성 측면에서는 매우 좋을 것이다..

...

이와 같은 기능 기반의 아키텍처는 컴포넌트 재사용이나 데이터 공유가 쉽지 않고, 구현 측면에서도 그리 효율적이지 않다.

- 렌 베스

딱 우리 시스템 보고 한 말이네.. 그러니 컴포넌트별 제품으로 팔기 어렵지...
반응형
Posted by seungkyua@gmail.com
,
반응형

event 의 속성에 보면 target 과 currentTarget 이 있는데 이것이 의미하는 바는 다음과 같다.

currentTarget  = listener 를 등록하여 event를 받을려고 하는 Object
target = event 를 dispatch 시키는 Object

예를 들어 list 컴포넌트에 각 row를 나타내는 render를 addChild 했을 경우 row 를 클릭했을 때
render 가 먼저 click 을 받아서 dispatch 시키므로 target 은 render 가 된다.
이 때 list 에 addEventListener를 등록했다면 currentTarget 은 list 가 된다.
반응형
Posted by seungkyua@gmail.com
,
반응형
아주 우연한 기회에 플렉스 프로젝트를 시작하면서 간만에 실력있는 사람들을 만난것 같다.
ActionScript 를 이용하여 가벼운 Framework 를 만들었는데 이를 이용하면 Flex 를 대체하여 시스템을 개발할 수 있다.
향후 이 Framewokr를 오픈소스를 오픈할 생각이라고 하니 지금 프로젝트를 하면서 하나 하나 알게된 내용을 조금씩 적을까 한다..

물론 업체의 저작권을 생각해서 세부적인 내용을 제외하고 내가 나중에 찾기 편하게 참고가 될만한 내용만 적을 것이다.

[최초 생성 될 때]

createChildren() -> onStageOnce() -> invalidateProperties() -> commitProperties() ->
addLifeCycleHandler() -> lifeCycleHandler() -> updateDisplayList() -> creationCompleted()

[라이프사이클 등록]

invalidateProperties() 나 commitProperties() 를 통해서 등록


[라이프사이클]

commitProperties() -> measure() -> updateDisplayList()


[메소드 호출]

1. set width(), height() -> updateDisplayList()
2. get width(), height() -> lifeCycleHandler() -> commitProperties() -> measure()
3. invalidateSize(), invalidateWidth(), invalidateHeight() -> measure()
 
measure() -> measuredWidth() -> measuredHeight() -> setSize()
setSize() -> updateDisplayList()

반응형
Posted by seungkyua@gmail.com
,