목록분류 전체보기 (778)
치춘짱베리굿나이스

디자인 패턴 MVC 패턴에 대한 글을 적고 있었는데 아예 카테고리를 따로 파서 디자인 패턴 관련된 글을 묶어놓는 게 나을 것 같아 일단 디자인 패턴에 관해 알아보기로 했따.. 개요 디자인 패턴? 건축학에서 유래된 용어로, 건축학에서는 몇몇 눈에 띄는 공통적인 부분을 디자인 패턴으로 정의하여 이를 조합하여 더 큰 건축물 (또는 도시) 을 설계하는 방법이다 이 건축학 기법이 소프트웨어 프로그래밍 계에 큰 영감을 주면서 비슷한 방식으로 도입하게 되었다 소프트웨어를 설계하면서 발견된 문제와 해결 노하우 (이 부분은 이렇게 짜면 문제가 해결된다 / 개선된다 싶은 것들) 를 다른 큰 소프트웨어를 설계할 때 응용할 수 있도록 잘 정리해 둔 패턴이 바로 디자인 패턴이다 내가 지금 겪고 있는 문제를 과거 다른 사람들이 ..

[Violation] took 1000⬆️ms 이게 뭐지 앞에서 this 바인딩 문제를 해결하니 이번엔 이상한 경고가 출력된다 대충 이 핸들러 호출하고 종료되기까지 1016초 걸렸으니 왠만하면 비동기로 동작하게끔 하는 게 좋겠다 라는 의미이다 또한 이 경고는 숨길 수가 없다고 한다 원인은 경고 출력용 alert 함수 때문이었는데, alert로 출력된 경고 메시지의 ‘확인' 버튼을 눌러야 함수가 종료되었다고 판단하기 때문에 확인 버튼을 언제 누르냐에 따라 위의 경고 메시지의 시간이 달라진다 테스트해보니 3초 뒤에 클릭하면 대충 3초 조금 넘는 시간이 걸렸다고 나왔다 만약 경고 메시지의 확인 버튼을 10분 뒤에 누르면 아마 600,000ms 걸렸다고 나오지 않을까… alert 함수는 위의 함수 종료를 지연시..

이벤트 핸들러 this 오류 문제 클래스 안에 있는 메서드를 핸들러로 부착하니 클래스의 멤버 변수들을 찾지 못하는 상황이 발생했다 처음에는 메서드가 프라이빗 메서드라 그런 건가? 싶어서 이리저리 고쳐봤는데, 알고 보니 this가 클래스 인스턴스를 가리키지 않고 이벤트가 걸린 요소를 가리켜서 그런 것이었다 원인 https://developer.mozilla.org/ko/docs/Web/API/EventTarget/addEventListener MDN 문서에 따르면 이벤트 수신기 (이벤트 핸들러) 의 this는 이벤트가 걸린 대상 요소를 가리키게 된다고 한다 (= e.currentTarget이 가리키는 요소와 같다) 디버깅하느라 별 짓을 다 했는데 이런 이유가 있었다 해결 DOM요소.addEventListe..

웹팩과 웹팩 설정하기 웹팩 공식 홈페이지 webpack webpack 웹팩은 모듈 번들러입니다. 주요 목적은 브라우저에서 사용할 수 있도록 JavaScript 파일을 번들로 묶는 것이지만, 리소스나 애셋을 변환하고 번들링 또는 패키징할 수도 있습니다. webpack.kr 웹팩이란? 공홈페이지에서부터 “~~를 번들해 보세요" 라는 캐치프레이즈가 대문짝만하게 출력되는 것에서도 알 수 있듯, 웹팩은 ‘모듈 번들러' 이다 캐치프레이즈가 한 3~5초 간격으로 바뀌는데, {이미지 | 애셋 | 스크립트 | 스타일 …} 을 번들해 보세요 예시 중 하나로 계속 슬라이딩되는 것으로 보아 프로젝트 내의 이미지, 애셋, 스크립트, 스타일도 번들이 가능한 ‘모듈' 이라고 할 수 있음을 예측가능하다 앞서 적었듯 모듈 번들러는 모..

CPP 08 Templated containers, iterators, algorithms 템플릿 컨테이너, 반복자, 알고리즘 stl Standard Template Library 표준 템플릿 라이브러리라는 이름에서 알 수 있듯 세 개의 구성 요소로 이루어진 템플릿들을 제공한다 그것은 반복자 (iterator), 컨테이너 (container), 알고리즘 (algorithm) 스택, 큐, 덱, 맵, 벡터, 리스트 등 한번쯤 들어봤을 법한 자료구조들과 적합한 알고리즘들이 내장되어 있으며, 필요한 자료구조를 꺼내서 사용하면 된다 container http://www.tcpschool.com/cpp/cpp_container_adapter http://www.tcpschool.com/cpp/cpp_containe..
CPP 07 C++ templates C++ 템플릿 템플릿 template T add(T x, T y) { return x + y; } 같은 이름의 함수를 인자 자료형이나 반환값만 다르게 하여 새로 생성하는 것을 오버로딩이라고 했었다 다만 오버로딩은 int, float, double, … 등 모든 자료형에 대해 함수를 따로따로 생성해주어야 한다는 단점이 있다 (귀찮다) 템플릿을 이용하면 자료형에 구애받지 않고 함수를 작성할 수 있으며, 어떤 자료형이든 내부에서 사용하는 연산자나 함수에 대한 오버로딩이 존재한다면 결과값을 얻어낼 수 있다 템플릿은 template라는 키워드 (예약어) 로 정의하고, typename T에서 T는 아무 단어나 넣어도 되지만 보편적으로 T가 많이 사용된다 template temp..
CPP06 C++ casts C++ 캐스팅 strtod std::string tmp = "33 44 55"; char* endptr; double value = strtod(tmp.c_str(), &endptr); // value = 33 // endptr = " 44 55" char* 형식의 문자열을 받아 double 자료형으로 변환한다 이때 두 번째 인자에는 char* 형식의 변수 주소가 들어가게 되는데, strtod는 첫 번째 문자열에서 숫자 (double) 로 추정되는 부분을 변환하고, 문자열 안에서 숫자로 변환된 부분문자열 다음 포인터를 두 번째 인자 주소에 넣어준다 예시에서 “33 44 55”를 인자로 넣으면, 33까지가 숫자이고 공백 문자열은 숫자가 아니므로 strtod는 공백 전까지를 숫자..