IT
-
개발자가 하고싶은 일을 하는 방법IT/일상 2021. 3. 6. 19:03
하고싶은 일을 하려면 어떻게 해야할까. 나는 기술적으로 어려운일에 도전하는걸 좋아하는 편인데 지금 회사에서 하는일들은 너무 쉬운편이다. (업무적이 아닌 기술적으로) 어려운 일에 도전해보고자 내부 이동을 노려봤지만 역량적으로 부족하다고 한다. 결국 남들과 같이 꾸준히, 천천히 역량을 쌓아가는게 맞을까? 빠른길은 없을까? 하지만 내가 걸어온 길을 생각해봤을때 그런말에 수긍하는 것은 바보같은 짓이다. 나는 내가 하고싶은 일을 하려고 첫 회사에서도 몸부림치고 부서를 옮기고 이직도 했다. 결국 내 인생에 평생 남을 스타트업도 경험해보고 첫 회사에서 그렇게 가고싶었던 네이버 카카오 중 한 곳에서 일하게 되었다. 물론 지금도 불만은 있지만 첫 회사를 생각하면 비교도 할 수 없이 좋은 환경이다. 첫 회사에서도 내가 해..
-
vector의 clear 메소드에 대해IT/C++ 2019. 9. 29. 17:05
clear라는 메소드 명을 보면 어떤 동작을 할 것 같은 메소드인지 감이오는가? http://www.cplusplus.com 을 보면 Removes all elements from the vector 라고 쓰여있다. 즉 vector의 모든 원소들을 Remove 해주는 메소드 라고 볼 수 있다. 근데 Remove란 대체 어떤 동작일까? 좀 애매한 설명이지 않은가? 다음과 같은 코드를보자 1 2 3 4 5 6 7 8 9 10 11 12 13 14 #include #include using namespace std; int main() { vector a = { 1,2,3,4 }; for (auto it : a) { cout _Mylast() = this->_Myfirst(); } 위가 clear의 내부구현이..
-
pow 함수의 내부 구현에 대해...IT/C++ 2019. 7. 28. 19:34
지수함수(pow) 즉 $$x^y$$ 의 시간복잡도는 얼마나 될까? y를 N이라고 한다면 일반적으로는 분할정복을 통해 구현한 O(logN) 이다.(x의 크기에 종속적이지 않다고 가정하자) 그렇다면 pow(5, 1) 과 pow(5, 64)의 실행시간을 측정해보면 이론적으로는 8배, 자잘한 로직처리까지 생각해도 의미있는 차이가 있어야 한다. 실제로 코드를 돌려보면 다음과 같은 측정결과를 볼 수 있다.(각각 1000만회씩 루프를 돌렸다) 놀랍게도 유의미한 차이가 나지 않는다. 그 이유는 pow함수는 내부적으로 x86과 이를 계승한 amd64 아키텍처에 포함된 FYL2X 명령어를 통해 구현되어 있기 때문이다. 여기서 잠깐 FYL2X명령어가 어떤것인지 보고가자. (출처 : https://c9x.me/x86/html..
-
Google Cloud OnBoard 후기IT/일상 2019. 7. 1. 22:17
마침 기회가 주어져서 잘 갔다왔다. 발표자분 말씀은 엄청빠르게하시는데(유튜브 1.25배속 느낌) 귀에 잘 박히더라. 전체적인 감상은 삐딱하게 말하자면 Google Cloud Platform(GCP) 세일즈하러 온 느낌? 근데 개인적인 입장에선 팔러온 장물이 매우 흥미로움. GCP에 대해 이런저런 설명을 듣던 중 즐겨보는 블로그인 조대협님 티스토리 블로그에서 본 얘기가 생각났다. 한국 사람이 보통 미국 엔지니어 대비 생산성은 2배에서 많게는 3배까지 차이가 나는것 같습니다. 한국 개발자는 한마디로 "독합니다..." 반대로 큰 그림을 보는 능력이나, 이론 또는 top down에서 접근하는 능력은 북미 엔지니어에 비해서 상대적으로 떨어지는 것 같습니다. Cloud Spanner 랑 Kubernetes 얘기 들..
-
C++에서 2차원 배열 인자로 받기IT/C++ 2019. 6. 29. 20:17
한때 알고리즘에 매진한적이 있는데 그때 2차원배열을 인자로 받으려고 고생좀 했다. 구글에 서치해서 볼 수 있는 가장 보편적인 방법은 1 2 3 4 5 void getArray(int arr[4][3], int row, int col){}; void getArray(int arr[][3], int row, int col){}; void getArray(int (*arr)[3], int row, int col){}; 위와 같이 받는 방법인데...뭔가 Dynamic한 맛이 없어서 좀 아쉽다. 오늘 잠깐 Modern Effective C++을 읽던중에 재미있는 방법이 있어서 소개한다, 거창한건 아니고... 1 2 template void getArray(T& arr, int row, int col) {}; 이렇..
-
C++ 쓰는 회사에서 일해보고싶다IT/C++ 2019. 6. 29. 19:54
C++은 굉장히 변태적인 언어다. JAVA같은 언어들에는 없는 포인터가 있는것만으로도 꽤나 햇갈리는데다가 각종 타입에 제약에 모던 C++문법까지 들어가게되면 사람들 편하게 쓰라고 만들어놓은건지 의문이 생긴다. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 template struct _Vec_base_types { // types needed for a container base using _Alty = _Rebind_alloc_t; using _Alty_traits = allocator_traits; using _Val_types = conditional_t; }; Colored by Color Scripter (C++을 많이 접해보지 않았다면 이런 문법만봐도 어질어질해진다..