본문 바로가기

전체 글

Reservoir Sampling Q. 전체 모집단의 갯수(n)를 알지 못하는 상황에서 편향 없이 1개를 샘플링하면 각 샘플링의 확률은 1/n이 된다. 어떻하면 이를 코드로 구현할 수 있을까? https://www.youtube.com/watch?v=A1iwzSew5QY 위의 영상에 방법이 나와 있다. 모자 n개가 있고, i 번째 모자를 최종적으로 쓰고 있으려면 (i 번째 모자를 쓰고), (i+1번째 모자를 쓰지 않고), (i+2번째 모자를 쓰지 않고)... (n번째 모자를 쓰지 않으면 된다) 즉, (i번째 모자를 최종적으로 쓰고 있을 확률) = (i 번째를 선택할 확률) = (1 / i) * (1 - (1/(i+1))) * (1 - (1/(i+1))) ... *(1 - 1/(n)) 이 식을 정리하면 1 / n 이 된다. 따라서, 코드로.. 더보기
비싼 드론(feat. 쿠팡 파트너스) https://coupa.ng/b6Ckf8 DJI 매빅 에어 2 드론 콤보 COUPANG www.coupang.com https://coupa.ng/b6CmcB 2.7K HD 비디오 카메라가 탑재된 DJI Phantom 3 Advanced Quadcopter Drone: 카메라 및 사진 COUPANG www.coupang.com https://coupa.ng/b6CkFo DJI Air 2S Fly More Combo 촬영용 드론 COUPANG www.coupang.com https://coupa.ng/b6CkMj DJI 미니 2 플라이 모어 콤보 드론 COUPANG www.coupang.com https://coupa.ng/b6Ck91 DJI FPV 드론 COUPANG www.coupang.com htt.. 더보기
부의 인문학 저자: 우석 총평: 같이 일하는 동료가 추천해준 책. 참조 자료(레퍼런스) 및 인용이 많고 관련 사례가 많아서 쉽게 읽혔다. 경제의 눈을 뜨는데 도움이 되었고, 저자는 평소에 자료를 많이 모아두어 글을 많이 써본 사람이라는 생각이 들었다. 물론, 책의 모든 부분에는 공감한 것은 아니었다. 가령, 2장에서 임대료 통제 정책이 부작용을 가져온다는 점에서는 공감했지만, 집값이 싼 이유로 집을 옮기기를 꺼려서 먼곳의 일자리를 구하지 않아 실업률이 올라간다는 책의 주장에는 공감하기 힘들었다. 임대료가 낮아지면 집 이동이 더 쉬워 먼곳의 일자리를 구하는 것도 어렵지 않고 따라서, 실업률과는 큰 개연성이 없는 것 같다는 것이 내 생각이었다. 그럼에도 불구하고 일독을 해볼만한 책 임은 틀림없다. ※ 이하 각 절에서 인.. 더보기
void 포인터 용법 정리 Free void pointer Q. void *로 참조된 배열 혹은 구조체를 Free 하는 것은 괜찮을까? A. Malloc과 Free는 항상 void* 를 취하므로 void* 포인터 참조된 것을 해제 하는 것은 자연스러운 일이다. 즉, Free는 void*를 취한다(take). void ** 사용법 void**는 포인터의 포인터이다. 아래의 예시에 따르면 자료형을 알수 없는(some_type_t) 배열을 참조할 때, 해당 배열을 (void *)로 캐스팅 한 후에, (void **)형인 array로 아래와 같이 접근할 수 있겠다. some_type_t 배열이 2차원 배열이라면, void** array 를 이용해 행(row) 접근을 한다고 볼 수도 있겠다. void** array; int arrayLen.. 더보기
commit --amend 1. 상황 2. 해결법 3. 결과 1. 상황 - 이미 Commit한 로그를 내용을 추가하여 덮어 씌우려고 한다. $ git log commit 326fc9f70d022afdd31b0072dbbae003783d77ed Author: yourname Date: Mon Jul 16 23:17:56 2012 +0900 add의 설명을 추가 commit 48eec1ddf73a7fb508ef664efd6b3d873631742f Author: yourname Date: Mon Jul 16 23:16:14 2012 +0900 first commit 2. 해결법 - git commit --amend 명령을 이용한다. - Branch의 노드가 추가되지 않고, 기존 노드에 덮어씌우게 된다. $ (파일을 스테이징 하거나, 수.. 더보기
객체 지향 & 패턴 in C (1) [Contents] C언어와 객체지향1 C언어와 객체지향2 - 기능 추가 C언어와 객체지향3 - 확장성을 고려한 기능 추가 C언어와 객체지향4 - 상속된 기능들(기능의 상속화) [출처] '모던 C언어 프로그래밍' - 하나이 시세이 C언어와 객체지향1 - 자료구조는 구조체로 표현하여 '객체'처럼 생성하면 편리하다. - 매크로를 사용하여 쉽게 구조체 초기화를 한다. Stack.h #include typedef struct{ int top; const size_t size; int *const pBuf; } Stack; bool push(Stack *p, int val); bool pop(Stack *p, int *pRet); #define newStack(buf) {0, sizeof(buf) / sizeof.. 더보기
네트워크 명령어 nslookup 네트워크 관리 명령 줄 인터페이스 도구로서 많은 컴퓨터 운영 체제에서 사용 가능하며, 도메인 네임을 얻거나 IP 주소 매핑 또는 다른 특정한 DNS 레코드를 도메인 네임 시스템(DNS)에 질의할 때 사용된다. --> 도메인 이름과 IP 주소 매핑 관계를 나타낸다고 이해하였다. 더보기
Two pointer as argument 예시) #include #include void My_Func1(int *p) { int val = 100; int *Ptr = &val; p = Ptr; //실제로 이렇게 사용하진 않는다. 예시 일뿐. } void My_Func2(int *p) { int val = 100; p = &val; //실제로 이렇게 사용하진 않는다. 예시 일뿐. } void My_Func3(int *p) { *p = 100; //포인터가 가리키는 값을 변경한다(화살표는 그대로) } void My_Func4(int **p) { int val = 200; *p = &val; //포인터 화살표가 변경된다 } void My_Func5(int **p) { int val2 = 300; int *Ptr = &val2; *p = Ptr; .. 더보기