자바스크립트에서 더하기를 처리하는 방법에 대한 이야기입니다.

http://www.2ality.com/2012/01/object-plus-object.html 문서의 일부를 참고했습니다.


자바스크립트 두 종류의 값

1) 기본형(primitives) : undefined, null, true/false, 숫자, 문자

2) 객체(objects) : objects, arrays, functions


더하기 실행시 세 종류의 값 변환

1) 기본형 

2) 숫자

3) 문자열


1) 기본형으로 변환되는 경우

내부적으로 실행되는 함수 

ToPrimitive(input, PreferredType?)


1. input이 기본형인 경우, 그대로 반환

2. 다른 경우 input은 객체. obj.valueOf() 호출.

   결과가 기본형이면 그것 반환

3. 아닌 경우, obj.toString() 호출. 

   결과가 기본형이면 그것 반환

4. 이것도 아니면, TypeError 던짐


참고 ECMAScript5.1 섹션9.1



2) 숫자로 변환되는 경우

내부 호출 함수 ToNumber()


1. 인자가 undefined 이면 NaN 반환

2. 인자가 null 이면 +0 반환

3. true는 1, false는 +0

4. 문자열은 문자열에 포함된 숫자를 변환 

  "324"라면 324

5. 객체라면 ToPrimitive(obj, Number) 호출해서 

  숫자로 가져온 값에 ToNumber() 적용


참고 ECMAScript5.1 섹션9.3



3) 문자열로 변환하는 경우

내부 호출 함수 ToString()


1. 인자가 undefined 이면 "undefined" 반환

2. 인자가 null 이면 "null" 반환

3. true는 "true", false는 "false" 각각 반환

4. 숫자는 문자열로, 예 "1.765"

5. 문자는 그대로 반환

6. 객체는 ToPrimitive(obj, String) 호출해서

  숫자로 가져온 값에 ToString() 적용


참고 ECMAScript5.1 섹션9.8


검증하기 위한 객체입니다.

    var obj = {
        valueOf: function () {
            console.log("valueOf");
            return {}; // not a primitive
        },
        toString: function () {
            console.log("toString");
            return {}; // not a primitive
        }
    }

code from: http://www.2ality.com/2012/01/object-plus-object.html



그리고 재밌는 더하기의 경우입니다.



윈도우7에서 Notepad++( http://notepad-plus-plus.org/ )을 처음 설치하면 한글이 ㅁ로 나오는 경우에 해결법입니다.

메뉴의 설정 -> 스타일 환경설정 메뉴를 선택합니다.



Global Styles > Global override 선택된 상태에서 전역 글꼴 사용을 체크합니다. 굴림체나 naver에서 다운로드( http://dev.naver.com/projects/nanumfont/download ) 받아 설치한 나눔고딕코딩 글꼴을 선택합니다.



related: http://airlueos.tistory.com/148


이클립스에서 ctrl+shift+F를 통해서 코드를 정렬할 수 있습니다. formatter라고 합니다.

JavaScript의 포맷이 마음에 들지 않아서 변경했습니다.


ctrl+3 을 통해서 quick access에 커서를 이동합니다. formatter라고 검색하고 JavaScript formatter 항목을 선택합니다.



JavaScript Conventions [built-in] 항목을 선택하고 Edit... 버튼을 클릭합니다.



Indentation(들여쓰기)의 Tab policy(탭 정책)에 Spaces only를 선택하고 상단의 Profile name을 변경한 뒤에 저장하면 됩니다.


JSLint 또는 http://jsbeautifier.org 사이트의 code format을 참고하면 좋을 것 입니다.


아프리카에 양띵이라는 여학생이 운영하는 방송국이 있습니다.

게임방송입니다. 마인크래프트 중심이죠.

http://afreeca.com/wud1 


이 BJ가 추천하는 10가지 게임이 구글 플레이스토어 메인에 붙어있네요.



CJ E&M이 양띵님을 위해서 앱도 만들어서 올렸네요. 대도서관에 이어서 아프리카 개인 방송하는 사람을 지원하는 두 번째 경우를 알게 되었습니다. https://play.google.com/store/apps/details?id=com.cjenm.android.mcn.yangdding


from: http://angularjs.org




Hello {{yourName}}!

https://creativecommons.org/legalmusicforvideos


Where can I find CC-licensed music?

Several sites offer music published under Creative Commons’ flexible copyright licenses. Here are some:


apache/bin/ab.exe 간편하고 쉬운 도구인데, 아파치를 윈도우에 설치해야 한다는 부담이 있죠.

http://www.apachefriends.org/en/xampp-windows.html#641


xampp 패키지에 있는 apache를 이용하면 됩니다.

xampp/apache/bin/ab.exe 를 호출할 수 있습니다.


물론 이것도 180MB라는 무시무시한 zip파일을 다운받아서 압축을 풀어야 합니다.



bsNode 프로젝트(https://github.com/projectBS/bsNode)에 최근 관심을 갖게 되었습니다.

GitHub에서 fork 버튼을 클릭해서 제가 커밋할 수 있는 프로젝트로 복사해왔습니다. 몇일 전에요.

오늘 확인해 보니 커밋이 337개로 추가되었네요. 제가 가져올 당시는 332개였습니다.



git bash를 열어서 다음과 같이 처리했습니다.

cd ~/git

git clone https://github.com/projectBS/bsNode.git

cd bsNode

git pull origin master


여기까지는 새로운 버전을 가져오는 작업이었습니다.

이제 remote로 origin 대신 target이라는 별명으로 제가 fork한 프로젝트의 git주소를 연결시킵니다. 그리고 특별히 수정한 것이 없어서 머지(merge)없이 바로 push 해 버립니다.



   git remote -v

   git remote add target https://github.com/kenu/bsNode.git

   git remote -v

   git pull origin master

   git push target master

   history


하고 나서 원 프로젝트로 변경사항을 보내드렸습니다.

Pull Requests라고 하죠.

https://github.com/projectBS/bsNode/pulls


벌써 적용이 되었네요.

tipJS님 감사합니다. ^^


이제 큰 게 남았네요.

이건 충돌 장난 아닐 것 같아서 겁이 납니다.

https://github.com/kenu/tomcat70




오늘 방송 사고를 제대로 냈습니다.

마이크가 제대로 나오지 않는 바람에 방송을 중단할 수 밖에 없었습니다.

채팅창도 위치를 바꿔서 사람들의 원성이 담긴 타이핑을 다 놓치고 한참만에 알게 되엇습니다.


방송을 종료하고 구글 행아웃으로 테스트를 하면서 알게된 사실

재생 볼륨을 높이면 자기 PC의 스피커로 잘 나오는데, 원격에 있는 사람들은 소리가 아주아주 작아집니다.



외부에 원활한 목소리 전달을 위해서는 녹음 볼륨은 높이고, 재생 볼륨은 낮추시기 바랍니다.

ㅠㅠ


이럴 수가 입니다. ^^;



그래서 "eclipse 웹 개발" 로 제목을 바꿨습니다.


http://afreeca.com/kenuheo

방송 7일간 다시 보기 됩니다.

+ Recent posts