달력

06

« 2017/06 »

  •  
  •  
  •  
  •  
  • 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
  •  

'전체'에 해당되는 글 47

  1. 2015.05.20 First Class Object
  2. 2015.04.10 High Performance JavaScript
  3. 2015.04.10 JavaScript Patterns
  4. 2015.04.10 SublimeText
  5. 2015.04.10 Webstorm
  6. 2015.04.10 Node.js
  7. 2015.01.30 스토리두잉 (Story-doing)
  8. 2015.01.30 스칸디대디
  9. 2015.01.30 옴니채널, 쇼루밍족, 역쇼루밍족, 모루밍족
  10. 2014.07.18 SAX split the data element problem
2015.05.20 11:37

First Class Object programming/javascript/jquery2015.05.20 11:37

[First Class Object] - javascript(Function)

- 변수나 데이터 구조 안에 담을 수 있음

- 인자로 전달할 수 있음

- 반환값(return value)으로 사용할 수 있음

- 런타임에 생성할 수 있음

- 할당에 사용된 이름과 관계 없이 고유하게 식별할 수 있음

신고

'programming > javascript/jquery' 카테고리의 다른 글

First Class Object  (0) 2015.05.20
Node.js  (0) 2015.04.10
javascript의 replaceAll()  (0) 2013.11.08
기본 타입과 참조 타입 & 가비지 컬렉션  (0) 2013.10.29
Posted by insummersnow
2015.04.10 18:06

High Performance JavaScript 분류없음2015.04.10 18:06



Java Script

저자
니콜라스 자카스 지음
출판사
한빛미디어 | 2011-09-25 출간
카테고리
컴퓨터/IT
책소개
웹 애플리케이션의 성능을 끌어올릴 야후! 개발자의 자바스크립트 ...
가격비교


신고
Posted by insummersnow
2015.04.10 18:05

JavaScript Patterns 서재/IT/Programming2015.04.10 18:05



JavaScript Patterns(자바스크립트패턴)

저자
스토얀 스테파노프 지음
출판사
인사이트 | 2011-11-03 출간
카테고리
컴퓨터/IT
책소개
자바스크립트 코드를 한 단계 업그레이드하는 방법!자바스크립트로 ...
가격비교


신고

'서재 > IT/Programming' 카테고리의 다른 글

JavaScript Patterns  (0) 2015.04.10
The Art Of Computer Programming  (0) 2013.12.30
리팩토링  (0) 2013.05.03
Posted by insummersnow
2015.04.10 17:11

SublimeText programming/Front-End2015.04.10 17:11

SublimeText

구글의 엔지니어였던 Jon Skimmer는 2005년 12월부터 3D 가속 기능을 갖춘 텍스트 편집기를 상상해 왔다가 2007년 11월에

첫 프로토 타입을 개발함.


이후 편집기를 완성하고자 구글 엔지니어를 그만두고 개발에 몰두하여 SublimeText1을 2008년에 발표함.


Front-End 개발자들이 주로 사용.

신고

'programming > Front-End' 카테고리의 다른 글

SublimeText  (0) 2015.04.10
Webstorm  (0) 2015.04.10
Posted by insummersnow
2015.04.10 17:05

Webstorm programming/Front-End2015.04.10 17:05

Webstorm

Intellij로 유명한 JetBrains사 에서 개발한 크로스 플랫폼 프론트엔드 전용 IDE.

2009년부터 개발하여 2010년에 1.0 베타를 발표했으며 지금은 버전8(2014년 06월 기준).


Auto-complete Code trace, lint, Test-runner, Debugger등을 지원.


! 전달인자가 기대하는 타입형을 분석하여 사용자에게 Hinting해줌.

! 타입형을 추론하여 변수 대입이나 사용에 문제가 있을시 경고 메시지 출력해줌.

! 객체의 키나 배열의 원소 타입을 추론하여 자동 완성 처리해줌.

! JSLint : 자바스크립트 코드의 구문을 검사할 목적으로 만들어진 품질 검증 도구



윗 글들은 아래 slideshare의 내용을 간추린것에 불과함.

더 세부적으로 알고 싶은 분은 아래 참고.

"Front-End 진보한 개발 환경에서 품질 좋은 코드 생산" 참고 : http://www.slideshare.net/UyeongJu/ss-35073089

"WebStorm과 Node 디버깅" 참고 : http://youtu.be/nPQPzAliQyl

"Karma(Test-runner) : 작성된 테스트 코드를 자동으로 실행해 주는 Test-runner" 참고 : http://youtu.be/IsvLKNqwgV0

"WebStorm과 테스크 자동화(Grunt(Test-runner))" 참고 : http://youtu.be/Y8TxUCPaFZ0


신고

'programming > Front-End' 카테고리의 다른 글

SublimeText  (0) 2015.04.10
Webstorm  (0) 2015.04.10
Posted by insummersnow
2015.04.10 11:19

Node.js programming/javascript/jquery2015.04.10 11:19

Node.js

2009년 Ryan Dahl 이 개발한 서버 개발 환경입니다. 구글 크롬 브라우저에서 사용하는 V8 자바스크립트 엔진을 기반으로 자바스크립트로 앱을

개발할 수 있게 합니다.

- 한빛미디어 Node.js 중

신고

'programming > javascript/jquery' 카테고리의 다른 글

First Class Object  (0) 2015.05.20
Node.js  (0) 2015.04.10
javascript의 replaceAll()  (0) 2013.11.08
기본 타입과 참조 타입 & 가비지 컬렉션  (0) 2013.10.29
Posted by insummersnow
2015.01.30 11:09

스토리두잉 (Story-doing) common sense2015.01.30 11:09

기업과 브랜드의 스토리 시행 과정에 소비자들의 참여도와 공감을 높이는 마케팅 기법.

소비자가 제품 개발 과정에 참여하거나 제품 구매 금액의 일정 부분을 기부하는 등의 행위로 기업과 브랜드에 대한 애착과

관여도를 높이는 효과.

즉, 스토리텔링은 제품과 브랜드의 스토리를 단순히 소비자에게 들려주는 것이지만,

스토리두잉은 더 나아가 소비자를 스토리에 참여시키는 것.


옛 모습을 간직한 골목에 열광하는 주된 인구층은 과거를 추억하는 기성세대가 아니라

그 과거를 경험한 적이 없는 청춘들! 구수한 삶의 냄새와 정겨운 사람들의 감성이 어우러져 새로운 이야기들을 소비자와

나누는 스토리두잉의 장이 될수 있음.


트렌드코리아 2015 中..

신고

'common sense' 카테고리의 다른 글

스토리두잉 (Story-doing)  (0) 2015.01.30
스칸디대디  (0) 2015.01.30
옴니채널, 쇼루밍족, 역쇼루밍족, 모루밍족  (0) 2015.01.30
지하경제 (Black Economy)  (1) 2013.09.03
Spanish-American War  (0) 2012.12.10
Posted by insummersnow
2015.01.30 11:05

스칸디대디 common sense2015.01.30 11:05

2011년 영국<더타임즈>에서 북유럽식 아빠를 가리키는 말로, 아이들과 지내는 것을 삶의 중요한 가치로 삼고

육아에 적극 참여하는 아빠를 의미


(2015 생생트렌드), (트렌드 모니터 2015) 中..

신고

'common sense' 카테고리의 다른 글

스토리두잉 (Story-doing)  (0) 2015.01.30
스칸디대디  (0) 2015.01.30
옴니채널, 쇼루밍족, 역쇼루밍족, 모루밍족  (0) 2015.01.30
지하경제 (Black Economy)  (1) 2013.09.03
Spanish-American War  (0) 2012.12.10
Posted by insummersnow

옴니채널(Omni-Channel)

 - 소비자가 온라인, 오프라인, 모바일 등 다양한 경로를 넘나들며 상품을 검색하고 구매할 수 있는 서비스


쇼루밍족(Showrooming)

 - 매장에서 제품을 확인하고 온라인 등의 경로를 통해 최저가로 구매

역쇼루밍족(Reverse-Showrooming)

 - 온라인에서 제품 정보를 꼼꼼하게 파악 후 오프라인으로 구매

모루밍족(Mobile-Showrooming)

 - 오프라인에서 제품을 체험하고 모바일을 통해 즉시 제품 구매


(장사의 99%는 트렌드다.), (트렌드코리아 2015) 中..

신고

'common sense' 카테고리의 다른 글

스토리두잉 (Story-doing)  (0) 2015.01.30
스칸디대디  (0) 2015.01.30
옴니채널, 쇼루밍족, 역쇼루밍족, 모루밍족  (0) 2015.01.30
지하경제 (Black Economy)  (1) 2013.09.03
Spanish-American War  (0) 2012.12.10
Posted by insummersnow
2014.07.18 12:53

SAX split the data element problem programming/java2014.07.18 12:53


SAX

Simple API for XML

xml로 된 파일 및 문자를 해석할 수 있게 해주는 응용프로그램인터페이스(API).

SAX가 어떤 녀석인지, DOM과의 차이점은 무엇인지에 대해 많겠지만 얕은 지식으로 똥냄새나는 글 싸지르는거 보단

http://en.wikipedia.org/wiki/Simple_API_for_XML

위키 참고하는게 보는 분들 정신건강에 나을듯 싶어 따로 적진 않겠음.

간단하게 DOM의 경우 문서 단위로 해석하는 반면 SAX의 경우 line단위로 해석함.


SAX의 경우

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
31
32
33
34
35
36
// node 값 인식시 발생
    public void characters (char ch[], int start, int lengththrows SAXException{
        data = escapeData(ch, start, length);
        //개행, Tab, 캐리지리턴 문자 제외
        if(data.indexOf("\\n")==0 || data.indexOf("\\t")==0 || data.indexOf("\\r")==0){
            // System.out.println("  EVENT: " + data + " Deleted.");
        }else{
            /* SAX PARSER Character Buffer Size(2048)가 max초과시 초기화 되면서
                     data element가 split되는 현상 방어로직*/
            if(beforeBufferFilledSize != 2048){
                saxTempStr="";
            }
             // log.debug(nodeName);
             /* log.debug("Buffer Start Position:["+start+"],Character Length:{"
                      +length+ "},Start+Length:("+(start+length)+"),[Character:"+data+ ",saxTempStr:"
                      +saxTempStr+"]");*/ // DEBUG TEST용
             if((start+length)==2048){
                saxTempStr = data;
            }
            if(start==0&&beforeBufferFilledSize==2048){
                fullDataStr = saxTempStr+data;
                map.put(nodeName.trim(),fullDataStr.trim());
            }else{
                if(beforeNodeName.equals(nodeName)){
                    fullDataStr = map.get(nodeName).toString()+data;
                    map.put(nodeName.trim(),fullDataStr.trim());
                }else{
                    fullDataStr = data;
                    map.put(nodeName.trim(),fullDataStr.trim());
                }
                
            }
            beforeBufferFilledSize=(start+length);
            beforeNodeName=nodeName;
        }
    }
 

위와같이 characters 메쏘드로 node안의 element를 인식하는데,

이때 SAX parser의 경우 한번에 2048byte 만큼밖에 인식하지 못함.

물론, 2048을 다 채우고 나면 버퍼를 싹 비우고 다시 0부터 채워나감.

하지만 버퍼를 비우고 새로 채워나가는 과정에서 문제가 생김.


상황

1. 새로운 element 인식시 2045부터 채워질 차례

2. 새로 채워질 element의 경우 길이가 4일경우(ex>null)

3. 남은 여유분이 2048-2045 = 3으로 가용공간은 3

4. 이에 SAX의 경우 임의로 element를 3만큼 잘라버림

5. 이때 Programmer가 예측못한 상황이 발생되어 데이터의 정합성에 문제가 생김

 

예시(Problem)

-SAMPLE XML

<variable>null</variable>

-정상 CASE

start : 1196

length : 4

nodeName : variable

data(element) : null

-비정상 CASE(MAX BUFFER SIZE 2048 PROBLEM)

start : 2045

length : 3

nodeName : variable

data(element) : nul

start : 0

length : 1

nodeName : variable

data(element) : l

 

SOLUTION

위의 예시를 살펴보면 문제 상황에서 버퍼사이즈가 2048이후 0으로 초기화.

또한, nodeName이 동일하게 리턴되는 것을 확인할 수 있음.

이에,

1. 이전 버퍼사이즈가 2048이고 버퍼 시작이 0인 경우이전 텍스트와 현재 characters 메쏘드에서 인식된 텍스트를 붙여줌.

2. 1번케이스가 아니라고 하더라도(saxParser의 경우 line by line으로 분석하지만 xml리딩이 순차적이지 않아, 문제상황이 1번케이스에 걸리지 않을 수도 있음) 이전 nodeName과 현재 nodeName이 같은 경우 문제 상황이라고 보고 1번과 같은 처리.


 


Thx for advice

http://rb-techtips.blogspot.kr/2012/08/sax-2048-byte-issue-on-java-xml-parsing.html

신고

'programming > java' 카테고리의 다른 글

SAX split the data element problem  (0) 2014.07.18
더블서밋방지 및 뒤로가기 후 서밋방지 Token Util(TokenMngUtil)  (2) 2013.09.13
Javadoc Tutorial  (0) 2013.05.16
refactoring  (0) 2013.01.09
Posted by insummersnow


티스토리 툴바