All

· Essay
프로그래밍을 하다 보면 설계 상으로는 모듈이나 컴포넌트를 분리하고 상속하는 것이 바람직한데, 이것을 사람이 이해할 수 있는 한가지 개념, 단어로 치환하는 것이 어려울 때가 있다. 나는 그럴 때 분리했을 때의 효용(주로 재사용성)을 고려한다. 재사용되지 않고, 앞으로도 재사용할 지 알 수 없다면 일단 가독성 쪽의 손을 들어준다. 또 그렇게 하는 편이 오버 엔지니어링을 방지하는 데 좋기도 하다. 필요하면 그 때 리팩토링하면 되니까. 그러나 분리하고 상속했을 때 재사용하여 유지보수성에서 이득을 얻을 수 있다면 분리한다. 고심해서 이름을 짓기는 하는데 누군가 처음 보면 이상하다고 생각할 길고 해괴한 이름들은 보통 이렇게 만들어진다. 이를테면 오늘은 전에 작업한 것과 비슷한 요구사항에 대응하기 위해서 기존 컴포넌..
· Essay
좋아하는 일을 하다보면 잘하게 된다. 흔히 퍼져있는 믿음이다. 그러나 이런 통설과는 다르게 즐기기만 하다 보면 자동으로 탁월한 실력을 갖게 되는 것은 아니다. 지식과 자신감 간의 관계를 설명하는 더닝 크루거 곡선의 축을 노력과 재미로 치환해도 크게 다르지 않다고 생각한다. 위 그래프에 따르면 무지의 꼭대기에서 큰 재미를 얻을 수 있는데, 목표가 재미인 사람은 저 구간에 집중해야 효율이 좋을 것이다. 노력대비 쉽게 큰 성취감을 맛볼 수 있는 구간이다. 우리가 쉽게 접근할 수 있는 자료(도서, 강의 등)도 대부분 이 구간을 대상으로 한다. 하지만 높은 성과를 이뤄내려면 결과물에 이르기까지 시간도 오래 걸리고 고통이 뒤따른다. 이 과정은 재미가 없을수도 있다. 어려운 내용을 이해하고 해결책을 찾느라 두통이 올..
· Javascript
Get started Javascript라는 네이밍은 마케팅을 위한 결과물 공식 이름은 ECMAScript TC39와 ECMA가 표준으로 지정 TC39 협회는 웹과 관련된 다양한 회사(브라우저, 디바이스 등)의 직원들로 구성 JS 표준은 웹에서 구현되는 것만 관여한다 모든 것이 JS는 아니다 alert(), getCurrentLocation() 등은 JS가 아닌 JS처럼 생긴 Web API fs.write() 등은 Node.js의 빌트인 모듈에서 나오는 api 메소드 console.log() 역시 꽤 많은 환경에서 지원하는 메소드일 뿐! 항상 JS 환경은 아니다 브라우저의 Dev tool(REPL - Read Evaluate Print Loop, console)은 실제 JS 환경이 아니다! 해결법에 대한..
단축키는 마우스로 손이 이동하는 시간을 줄여 생산성을 향상시켜 준다. 윈도우 키보드 기준 파일 탐색 폴더 열기(VSCode 루트 디렉토리로): Ctrl + K, O 파일 열기: Ctrl + P 마우스로 디렉토리 창을 보는 시간을 줄일 수 있다 (리눅스 터미널에서) code 파일명 ex) code ../utils/common.js 터미널 창을 따로 띄우거나, 아래 소개할 Ctrl + `으로 터미널 창을 열고 사용한다 새 창: Ctrl + Shift + N VSCode를 하나 더 켠다 (프로세스를 하나 더 생성) 주로 다른 프로젝트의 코드를 참고할 때 쓴다 새 파일 생성: Ctrl + N Ctrl + S로 저장까지 해야 파일이 생성된다! 사람에 따라서는 리눅스의 touch가 더 편할수도 있다 얘는 디렉토리도..
일단 vscode의 remote-ssh를 이용하여 원격 서버를 연결하는 것은 https://code.visualstudio.com/blogs/2019/07/25/remote-ssh(공식 문서) https://evols-atirev.tistory.com/28(한국어 블로그) 이걸 보고 따라하면 된다. 연결하는 것 까지는 좋았는데 터미널을 이용해 vscode로 파일을 여는 방법은 검색해도 나오지 않았다. 그래서 디렉토리와 파일 생성은 다 터미널로 하고 정작 만든 파일을 여는 건 귀찮게 마우스로 클릭해서 열어야 하나 생각했다. 하지만 방법을 찾았다 code 파일이름 을 bash에 입력하면 클라이언트의 vscode에서 파일이 열린다! 참 쉽쥬? 처음 연결할 때 host 쪽에도 관련 프로그램이 설치되어서 가능한 ..
· C++
백준 1406번 문제(boj.kr/1406) 입력한 문자열을 조작하는 문제이고, 같은 문제집에 있던 문제들을 std::string으로 풀어서 처음에는 이 문제를 아래와 같이 쉽게 풀었다. 더보기 #include #include using namespace std; bool MoveCursor(int& cursor, int str_length, int value) { int end = str_length; int new_cursor = cursor + value; if(new_cursor >= 0 && new_cursor > str; int num_operations; char operation = 0; char parameter = 0; cin >> num_operations; int length = s..
· C++
백준 11718번(boj.kr/11718) 그대로 출력하기 문제를 getline으로 풀다가 C style string이랑 C++ string 클래스 쓰는 방식이랑 C 함수랑 문법이 헷갈려서 찾아보았다. 생각해 보면 getline은 항상 쓸 때 마다 문법이 헷갈려서 찾아보게 된다. 은근히 자주 안 써서 그런가... 이런건 파이썬으로 하면 그냥 input() 쓰면 돼서 참 쉬운데 이런 부분만 봐도 여러 기능이 덕지덕지 붙어있는 C++의 특징이 보인다. 쓸 때마다 매번 헷갈려서 이번 기회에 정리해 보았다. 1. C style string(char 배열)에 입력받는 방법 주어진 문제에서는 조건이 100글자 이하로 제한되어 있어 굳이 string 클래스를 쓰지 않고 C style string으로 처리했다. 이 경..