객체의 생성이란 무엇인가, 플라톤의 이데아처럼 어딘가에 존재하는 것으로부터 현실에 필요한 속성을 부여하며 만들어지는 것인가, 아니면 옆에 있는 다른 객체를 복사하여 속성을 원하는 대로 고쳐쓰는 것인가? 개발자가 철학적인 사고를 하기 쉬운 것들은 이런 사고가 설계에 도움이 되기 때문아닌가? c/c++의 struct, class를 생각하면, 텅빈 설계도 같은 것에서 메모리를 차지하면 만들어지는 것은 플라톤의 이데아 같은 것이 생각나고, prototype 객체를 우선만들고 복사한 다음 속성을 변경하여 쓰는 Javascript 같은 것은 후자와 같은 모양 아닐까? 몇 년 된 간단한 생각을 일단 적어 둠.
과거에 BASIC을 배울 땐 서브루틴과 함수가 분리되어 있었다. 포트란도 그러했다. 그러다가 C 언어를 배울 땐, return 유무에 따라 성질이 달라질 뿐 모두 함수로 통합이 됐다. 그러다가 JavaScript를 배울 땐, _객체_로서 함수 개념을 배우게 된다. 이 말은 함수와 자료가 통합되었다라고 말할 수 있다. Javascript가 구현하는 함수객체는 function func1 ( ) { /* code */ } func1()으로 쓰면 { ... } 안의 내용이 실행된다. func1.abc = "def" 로 쓰면 func1를 객체 취급하여 'abc'라는 키를 추가한다. 이런 발상의 전환이 통합의 구체적인 모습이다. func1.apply func1.call func1.bind 이런 함수는..
짧은생각 Javascript와 python에서 제공하는 배열/리스트에서 특정 값의 위치를 찾는 비슷한 명령어로 각각 indexOf, index 라는 메소드가 있다. 이 둘은 찾지 못했을 때의 특성이 다른데, Javascript: -1 을 return 한다. Python: ValueError 예외를 발생한다. 언어를 다루다보면 이 둘은 묘한 선택의 순간을 만드는데, 전자는 매번 return 값을 확인해야하고, 후자는 앞 뒤로 예외 처리 구문을 넣어야한다. Javascript/Java/C++ 계열에 익숙하다보면 정상적인 처리를 해야하는 상황을 예외를 발생시켜 점프하는 것에 약하지만 부담을 느낀다. 스택을 되돌리는 백그라운드 작업에 원하는 모든 리소스 해제는 잘 일어나는 것일까랄지, 단순히 값 하나만 비교하면..
요샌 일부러 마크다운편집이 가능하면 그걸 써보려고 노력한다. 오래 알아왔지만, 글 쓰는 일이 줄어들어 마크업이 할 일이 줄어 드니 영 느리다. 그래서 간단한 의식의 흐름대로 기술을 할 때, 쓰는 나와 읽는 당신의 관계에서 단순히 글의 연속으로 전달되는 것이 아닌, 강약이 전달되려면 강조 혹은 병렬적 정보전달은 필요한 것 아닌가 싶다. 머라고 주절 주절 쓰는 것은 사실 마크다운 문법을 테스트하기 위함이지 그 ^이상^도 이하 도 아니다. 어떤 문법은 것은 지원되지 않을 수도 있음을 고려해서 테스트해 본다. 문법을 익히는데 쓰는 글은 의미가 없어도 상관없고, 표현이 거칠거나 맥락을 뛰어 넘는 전개 가 이루어지기도 한다. 그래도 글의 모양을 갖추려면, 가독성이 고려되어야하고 적당한 길이어야하며 무엇보다 독자가 ..
'밀리-마이크로-나노-피코'로 이어지는 1/1000 단위의 스케일을 내 주위에서 느껴보는 것을 도와주는 명상법이며, 1분도 안 걸리며 세상과 잘 감응하는 방법이다. 숨을 거칠게 쉬거나 참으면 오히려 예상치 못한 교란이 일어날 수 있으므로, 마음을 잡아주는 용도로 사용한다.각 단계에 숫자를 붙여서 0) 미터, 1) 밀리, 2) 마이크로, 3) 나노, 4) 피코의 단계로 점점 내려간다고 생각하면, 우리는 의식하지 않아도 0단계 규모의 사물을 인식하면서 산다.우리의 주의 집중을 0 단계로 하면서, 엘레베이터를 탄다. 타고 이동하는 동안 명상을 하자. 당신은 지금 미터의 세계에 있다. 1초에 하나씩 주위 사물들을 본다. 찬찬히 1초에 하나씩 4개를 본다.거울, 긴 막대 손잡이, 모서리에서 모서리, 외부에서 엘레..
npm, yarn을 설치했다면, bootstrap theme 변경을 위한 초간단 테스트를 할 수가 있다. #!/bin/bash mkdir bootstrap-customizing cd bootstrap-customizing yarn init -y yarn add bootstrap node-sass mkdir -p public/css yarn node-sass --recursive --output public/css \ --source-map true --source-map-contents true \ node_modules/bootstrap/scss bootstrap은 scss로 관리되고 있으므로 yarn(npm)으로 받아다가 바로 컴파일 해 볼 수가 있다. 위의 예는 directory 만들고, 빠르게 n..
unzip 을 구현해 볼까? 하는 마음이 들었다. 다 뻘짓이 되긴 할텐데, 동기는 이렇다. 윈도우에서 한글로 된 파일을 압축하면 맥에서 잘 풀리지가 않는다. 7z으로 풀어 볼까? 7z도 안되는군. 7z 옵션중에 charset을 지정하는게 있더라. CP949를 넣어보니 안된다. 아, 이게 머라고, 2020년에도 고통을 받아야하나. huffman coding 이런거 봐야하나. 그 테이블 튜닝을 하면 성능이 더 좋아지려나? 실리콘밸리의 파이드파이퍼는 대체 뭘 쓴 거지? 아 놔..
- Total
- Today
- Yesterday
- 대화
- nodejs
- writely
- 킹벤자민
- VIM
- 오픈소스
- 커피
- Tattertools plugin
- ssh
- 벤자민
- 덴드롱
- JavaScript
- 식물
- SVN
- Subversion
- BlogAPI
- tattertools
- 수선화
- MySQL
- perl
- 퀴즈
- macosx
- 디버깅
- SSO
- url
- TCP/IP
- OpenID
- 클레로덴드럼
- Linux
- 구근
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |