이야기에 앞서, 그 동안 설치해주신 분들께 감사드립니다. 어쩌다 구글 Play Store ‘갓겜’ 검색어 1위 노출이 되었는 지는 저도 모르겠네요. 네, 믿기지 않겠지만 정말 5만 다운로드가 넘었고 Play Store에서 갓겜을 치는 분들께는 광고빼고 가장 먼저 반겨요. 그래프처럼 갑자기 훅훅 다운로드가 높아질 때마다 반겨주는 친구들이 또 있죠. 알아요 반응을 하면 안되죠. 저도 저 분이 이 포스트를 읽지 않기만을 바래요. 이상한 아이디어 하나로 이렇게 관심받을 수 있다는 것에 대해 놀라움을 숨길 수 없네요. 때로는 정성스럽게 기사를 써주는 해외 분들도 계셨어요. (링크) 만들 때조차 이렇게 생각이 많진 않았지만 이제와서 보니 또 많은 인기를 받고 있었네요. 간단하게 많은 분들이 물으시는 것..
GitHub 링크 대단한 설명이 필요할지는 모르겠다. 1. 새로운 Socket 연결이 들어오면 accept된 Socket을 새 Thread(SocketThread)에 넘기고2. SocketThread에서는 들어온 명령어를 CLOSE만 구분하고 CLOSE가 아니라면 CommandServer에 넘기고 wait3. CommandServer는 명령어를 구분하여 적절한 Command를 알려주고 CommandThread에 작동을 넘긴다.4. CommandThread에서의 Command 작동 결과 (perform()의 결과)는 CommandServer의 resultList에 저장되고 기다리던 SocketThread에 notify5. UUID를 이용하여 기다리고 있던 SocketThread는 notify되면 결과(JS..
C와 C++에서의 구조체 차이와 연속되었다고 생각하자. 크게 말로 설명하는거보다 코드로 보는 것이 더 편할 우리를 위해 표와 코드만을 준비할 수 있었지만 접근 한정자 차이때문에 생기는 문제만 있다고 생각해도 좋다. 1. 구조체에서 접근 한정자가 정의되어있지 않다면 public이고 클래스에서는 private이다. 하지만 클래스에서 이런 짓은 하지 말자. 알더라도 명시적으로 범위로 접근 한정자를 정해줄 수 있는데 왜 이러는 것인가. 물론 Java와 같이 package-private한 기능이 있는 것도 아니고, 그냥 이럴 경우 private밑에 써주도록 하자. struct MyStruct { int variable; // public }; class MyClass { int variable; // privat..
별로 길게 이야기 할 것도 없는 주제다. 사실 인터넷 찾아보면 금방 찾을 수도 있는 내용이지만 나를 위해 표로나 정리해보고자 했다. C C++ 멤버함수 선언 불가능 가능 struct MyStruct { void member_function(); // C는 불가능 }; 구조체 내부 변수 초기화 불가능 가능 struct MyStruct { int variable = 0; // C는 불가능 }; 초기화시 struct 키워드 필요 불필요 struct MyStruct {}; void foo() { struct MyStruct my_struct = ~~; // C MyStruct my_struct = ~~; // C++ } 정적 멤버 변수 또는 함수 불가능 가능 struct MyStruct { static int ..
프로그래밍 언어 관련 수업을 듣다 보면 재귀 호출에 대해서 배우게 된다. 어떤 알고리즘을 해결하면서 재귀 함수는 꽤 중요한 역할을 가지고 있는데, 피보나치 수열의 항이나 수의 분할 정도를 하는 경우가 많다. unsigned long long stupid(unsigned long long n) { return (n == 1 || n == 2) ? n - 1 : stupid(n - 1) + stupid(n - 2); } 1이나 2일때는 0, 1을 반환하고 그렇지 않을때는 이전 항과 그 전 항의 합을 반환한다. 이때 이전 항을 다시 구하게 되는 것이다. 아주 간단한 모습을 하고 있으면서 원하는 결과를 뱉기는 한다. 10정도를 넣으면 34라는 올바른 결과를 반환한다. 하지만 n에 100을 넣으면? 위의 코드는 ..
사실 꽤나 민감한 내용이다. 이전에 KLDP와 같은 커뮤니티에서는 이걸로 열찬 토론하는 장면도 목격할 수 있었다. 어떤 경우에서는 Java의 모든 인스턴스가 포인터라느니, 자료형에 대해서는 call by value가 된다느니 일이 많았다. 조금 엄밀한 방향에서 Java의 포인터에 대해 생각해보도록 하자. 포인터는 특정 개체의 주솟값을 나타내고, 주소를 이용하여 역참조를 할 수 있어야한다. 먼저 주소를 가져올 수 있는지 알아보자. Java에서 Instance의 주솟값을 가져오는 방법부터 순탄치 않다. 어쩌면 당연하게도 Unsafe 클래스의 기능을 사용하여야 한다. JDK 9부터는 상당히 까다로워졌는데, 번거로운 고로 JDK 8의 sun.misc.Unsafe를 사용하도록 한다. Deprecated 판정된 방..
마이크로소프트 Visual Studio를 사용하면서 Visual C++를 사용하다보면 종종 새 헤더를 생성하면서 '#pragma once'라는 코드와 생성되는 것을 확인할 수 있다. 또, C 또는 C++ 헤더를 작성하면서 헤더가 중복돼서 포함되지 않도록 매크로를 사용하는 경우가 많..지 않고 모든 경우에서 사용한다. #ifndef __SOME_OF_HEADER_H #define __SOME_OF_HEADER_H // ... code ... #endif 매크로의 이름은 다양하게, 각자의 코딩 스타일에 맞게 작성하겠지만 이런 뉘앙스의 코드를 작성해서 중복된 헤더 포함을 피할 것이다. 하지만 이쁘지도 않고 vim같은 도구로 코드를 작성하는 사람들은 귀찮거나 보기 나쁜 코드가 될 수도 있다. 이를 한번에 해결해..
간혹 포인터의 주소 연산자 (&)를 이용하여 역참조 등을 할 일이 있다. 근데 절대 기억하지 못하는 특정 개체를 해제하지 않고 주소만으로 불러와야할 때도 있다. 어떤 값의 주소를 이용하여 역참조를 해보자. Foo.h class Foo { public: Foo(const int value); ~Foo(); int getValue(); private: int value; }; 우리가 잃어버릴 클래스다. value 변수는 생성자에서 설정한 value로 설정된다. Testsuite.cc #include <iostream> #include <cstdint> #include <sstream> #include <string> #include "Foo.h" int main() { Foo f..
- Total
- Today
- Yesterday
- dokdo-project
- linaro
- 객체지향
- G2
- Kotlin
- c++ 상속
- rule_of_three
- C++
- inline class
- f320s
- C
- 포인터
- c++11
- c++ struct
- dokdo project
- C++ 업캐스팅
- f320k
- Java
- g2 korea
- dokdo 4.0.3
- OOP
- LG
- CM11
- CM10.2
- PipelineContext
- rule_of_five
- vector
- d802
- nodeal
- cyanogenmod
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |