2. C, Java in 여기저기
Ruby on Rails, Node.js in News1
Node.js in Flitto
Punk Band bass
Fashion Photography in Tokyo
Seungwoo Lee
Engineer
asbubam@Flitto.com
…
dalsdoll
3. 現 플리토 남성후디 전속모델 활동 중
특기: 역동적인 포즈
특이사항: 촬영 후 다이어트로 체중감량에 성공
스타트업 플리토의 개발자입니다.
photo by Jongho Jang
www.flitto.com store
13. 디렉터리 구조
- app
- models
- services
- routes
- views
- utils
- test
- …
- public
14. Node.js 4.2.1
production 전 서버에 적용 (2015/10/27)
주의
기존에 설치된 node_modules
npm cache
node_gyp
깔끔하게 지우고 재 설치
https://github.com/nodesource/distributions 참고
15. v0.8.x => 2012/10/17 AWS t1.micro 서버 생성
v0.10.x
v0.10.8 => 2013/05/20 내가 입사한 날
v0.12.x
v4.2.1 LTS => 2015/10/27 빨라진 것 같은 느낌적인느낌
Node.js 버전변화
v0.12.7: (57.3+60.8+61.5+66.4+69.3)/5 = 63.06 건 / sec
v4.2.1: (57.1+73.9+74.8+75.4+78.4)/5 = 71.92 건 / sec
(71.92-63.06)/63.06*100 = 약 14.05 % 성능향상
랜딩 화면을 2000번씩 5회 렌더링 테스트
38. 그밖에 노드로 하는 것
u+ xpay, alipay, paypal
giftishow, happymoney
Node.js 포팅
39. 그밖에 노드로 하는 것
s3에서 파일 50만개 빨리
다운받기
aws-sdk, async(queue)
var AWS = require(‘aws-sdk')
, s3 = new AWS.S3()
, fs = require(‘fs’)
, targetFile = fs.createWriteStream(targetFilePath);
var read = s3.getObject({ Bucket: bucket, Key: filePath }).createReadStream();
read.pipe(targetFile);
40. 그밖에 노드로 하는 것
형태소 분석
“내일 아침까지 첨부된 엑셀파일에 포함된 문장 중에서
3글자 이상이면서 2번이상 반복되는 명사, 형용사
뽑아주세요.”
“그리고 ~이런 느낌적인 느낌의 문장들도 뽑아주세요.”
mecab-ffi
은전한닢(오픈소스 한국어 형태소 분석기 프로젝트)에서 사용하는
mecab-ko(오픈소스 형태소 분석 엔진인 MeCab를 한국어에 맞게 포팅)를
@xissy님이 Node.js 로 포팅
41. 그밖에 노드로 하는 것
형태소 분석
라네즈 파워 에센셜 스킨 200ml 제조년월일 13년 06월10일/개봉전 제조일로부터 30개월/개봉후 12개월/제조일은 상품 입출고일에 따로 수시로 변동 될수 있으므로 반드시 판매자에 문의 바랍니다. 1. 세안 후 500우너 동전크기 (지름
2.5cm)만큼 화장솜에 적셔 피부결에 따라 발라줍니다. 2.얼굴을 가볍게 닦아내는 기분으로 >사용하시면 투명케어에 더욱 효과적입니다. 1. 상처가 있는 부위 또는 습진 및 피부염 등의 이상이 있는 부위에는 사용하지 마십시오. 2. 화장품
을 사용하여 다>음과 같은 이상이 있을 경우에는 사용을 중지할 것이며. 계속 사용하면 증상을 악화시키므로 피부과 전문의 등에게 상담하십시오. 1) 사용 중 붉은 반점. 부어오름. 가려움증. 자극 등의 이상이 있는 경우 2) 적용부위가 직사
광선에 의하여 위와 같은 이상이 있을 경우 3. 보관 및 취급상의 주의사항 1) 사용 후에는 반드시 마개를 닫아 두십시오 2) 유소아의 손이 닿지 않는 곳에 보관하십시오 3) 고온 내지 저온의 장소. 직사광선이 닿는 곳에는 보관하지 마십시
오 1.모이스쳐(중>건성)-200ml, 2.라이트(지복합성)-200ml, 3.센서티브(민감성)-200ml 아모레퍼시픽/아모레퍼시픽 1.모이스쳐(중건성),2.라이트(지복합성),3.센서티브(민감성) 제조사 홈페이지 및 제조사 고객센타로 문의 또는 동봉된
사용설명서 참조
직사광선 | 2
모이스쳐 | 2
중건성 | 2
라이트 | 2
지복합성 | 2
센서티브 | 2
민감성 | 2
아모레퍼시픽 | 2
43. 시행착오
surrogate pair
UTF-16(16-bit Unicode Transformation Format)은 유니코드 문자 인코딩 방식의 하나이
다. 주로 사용되는 기본 다국어 평면 (BMP, Basic multilingual plane)에 속하는 문자들은
그대로 16비트 값으로 인코딩이 되고 그 이상의 문자는 특별히 정해진 방식으로 32비트로
인코딩이 된다.
기본 다국어 평면에 포함되지 않는 문자들, 즉 16비트로 값을 표현할 수 없는 문자들은 서러
게이트(Surrogate) 문자 영역에 해당하는 두 개의 16비트 문자로 변환되어 이 한 쌍(즉 32
비트)이 그 문자를 나타내게 된다.
https://ko.wikipedia.org/wiki/UTF-16
46. > var str = ‘안녕하세요반가워요ud83dude03하이';
> str
‘안녕하세요반가워요😃하이’
> str.length
13
> encodeURI(str.slice(0,10))
URIError: URI malformed
at encodeURI (native)
…
47. > var str = ‘안녕하세요반가워요ud83dude03하이';
> str
‘안녕하세요반가워요😃하이’
> str.length
13
> encodeURI(str.slice(0,10))
URIError: URI malformed
at encodeURI (native)
…
> var decodedArr = punycode.ucs2.decode(str);
> var slicedStr = punycode.ucs2.encode(decodedArr.slice(0,10));
> slicedStr
‘안녕하세요반가워요😃’
> encodeURI(slicedStr);
에러안남. https://goo.gl/uZIV7m
48. 시행착오
forEach 안에 비동기코드 엄~~청 많이 동시 실행
시스템 콜스택에도 한계가..
users.forEach(function(user) {
헨리를 팔로우한 전체 유저에게 비동기로 푸쉬
});
async.queue 등을 사용해서 동시 실행되는 비동기코드를 제어