목록언어 (29)
배고픈 개발자 이야기
안드로이드 스튜디오가 아닌 이클립스를 이용한 개발환경을 구축하기위해선 별도의 추가 설치가 필요합니다. 1. 이클립스는 안드로이드 용으로 세팅되 있어야 합니다.(IDE + 안드로이드 플러그인(ADT) 설치) 먼저 오라클 홈페이지에서 JDK를 설치했다는 가정하에 진행하겠습니다. 아래 주소에서 eclipse를 최신버전으로 다운받습니다. https://www.eclipse.org/ Eclipse IDE for Enterprise Java Developers가 자바 통합 개발 환경을 위한 이클립스입니다. 쭉쭉 설치해줍니다~ > 설치 후 Workspace 선택 창이 나타납니다. 작업 공간을 설정하라는 말입니다. 소스가 들어갈 위치를 지정하고 Launch 버튼을 클릭합니다. > 그럼 Welcome 화면이 나타나는데 ..
이 포스팅은 안드로이드 스튜디오에서 JNI로 (C/C++)코드를 디버깅 해야할 상황이 생겨 JNI를 포함한 프로젝트 생성 및 간단한 디버깅 테스트 하는 방법을 기록하는 목적으로 작성합니다. JNI? JNI란 Java Native Interface의 약자로, 자바 외의 다른 언어들(C/C++ 등)과 자바 사이에 연결을 위한 인터페이스를 뜻합니다. 말 그대로, 자바에서 C/C++을 사용할 수도 있고, 반대로 C/C++에서 자바를 사용할 수도 있습니다. 안드로이드에서 NDK(Native Development Kit)를 제공하여 Native언어를 사용할 수 있도록 지원하고 있습니다. NDK tool 설치가 되어있다면 아래 그림과 같이, File > Project Structure창을 띄워 ndk-bundle p..
Effective Modern 이펙티브 모던 C++ 차례 1장. 형식 연역 2장. auto 3장. 현대적 C++ 적응하기 4장. 스마트 포인터 5장. 오른값 참조, 이동 의미론, 완벽 전달 6장. 람다 표현식 7장. 동시성 API 8장. 다듬기 Item 3: decltype의 작동 방식을 숙지하라 기억해 둘 사항들 - decltype은 항상 변수나 표현식의 형식을 아무 수정 없이 보고한다. - decltype은 형식이 T이고 이름이 아닌 왼값 표현식에 대해서는 항상 T& 형식을 보고한다. - C++14는 decltype(auto)를 지원한다. decltype(auto)는 auto처럼 초기치로부터 형식을 연역하지만, 그 형식 연역 과정에서 decltype의 규칙들을 적용한다. [C++ korea] effe..
Effective Modern C++: 42 Specific Ways to Improve Your Use of C++11 and C++14 Meyers, Scott Item 2 : Understand auto type deduction auto 타입 추론 = 템플릿 타입 추론 (Direct Mapping) template void f(ParamType param); f(expr); // call f with some expression auto x = 27; const auto cx = x; const auto& rx = x auto = 템플릿의 T역할, 타입 지정자 = ParamType 역할 template // conceptual template for void func_for_x(T param); ..
Effective Modern C++: 42 Specific Ways to Improve Your Use of C++11 and C++14 Meyers, Scott Chapter 1 : 형식 연역 (type deduction) C++98에서는 형식 연역(type deduction)에 관한 규칙들이 한 종류밖에 없었는데, 바로 템플릿에 대한 것이었다. C++11에서는 그 규칙 집합을 조금 수정하고 새로운 규칙 집합을 두 개 더 추가했다. 하나는 auto를 위한 규칙들이고 또 하나는 decltype을 위한 규칙들이다. C++14에서는 auto와 decltype을 사용할 수 있는 문맥들이 확장되었다. 형식 연역의 적용 범위가 늘어난 덕분에, 이제는 자명한 또는 이미 언급된 형식들을 여러 번 일일이 지정해야 하..
C++11을 처음 접하고, 뭐 좀 바뀌긴 했지만 그래도 C++이겠지 라고 생각했을 것이나, 배울수록 변화의 폭에 놀랐을 것이다. auto선언, 범위 기반 for 루프, 람다 표현식, 오른값 참조는 C++의 겉모습을 바꾸었다. 새로운 동시성 기능들 역시 마찬가지이다. 게다가 관용구적인 변화도 있다. 0과 typedef이 물러나고, nullptr과 별칭 선언이 등장했다. 이제는 열거형에 범위가 적용되며, 내장 포인터보다 똑똑한 포인터가 선호된다. 대체로 객체를 이동하는 것이 복사하는 것 보다 낫다. C++14는 말할 것도 없이, C++11만으로도 새 기능을 효과적으로 사용하려면 배울 것이 많다. 정확하고, 효율적이며 유지보수하기 좋은, 그리고 이식성 있는 소프트웨어를 만들기 위해 기능을 어떻게 사용해야 하는..
보안은 다차원적인 문제입니다. 어디에서나 보안상 위험이 발생할 수 있습니다. 사용자가 오류 처리 코드를 작성하거나 너무 많은 권한을 제공하는 경우, 서버에서 실행하고 있는 서비스가 무엇인지 잊어 버리는 경우, 모든 사용자 입력을 허용하는 경우 등이 있습니다. 그 밖에도 여러 가지 경우가 있습니다. 다음과 같은 안전한 네트워크 전략에 대한 10가지 주의 사항에 따라 시스템, 네트워크, 코드를 순조롭게 보호할 수 있습니다. 1. 사용자 입력 신뢰의 위험성 이 기사의 나머지 부분을 읽지 않더라도 한 가지 주의해야 할 사항은 "사용자 입력을 믿지 말아야 한다"는 것입니다. 데이터가 항상 올바르게 구성되고 제대로 되어 있다고 생각한다면 문제에 직면하게 됩니다. 대부분의 보안상 취약점은 서버 시스템에 잘못된 데이터..
1.스마트 포인터 Widget *getObject() => unique_ptr getObject(); 일반 포인터를 활용하여 프로그래밍을 할 경우 Exception, Return또는 끝나는 시점에 직접 메모리 해제을 해야함 하지만 스마트 포인터는 Exception, Return, 끝나는 시점 모두 메모리를 자동으로 해제함 2.무브 시맨틱 vector를 할당할 때 return by value로 Object를 복사하는 비용이 매우 많이 발생할 수 있음 모던 C++에서 무브 시맨틱을 사용하여 Object가 쓸데없이 복사되는 일을 한번에 날릴 수 있게 되었음 Object가 아무리 'move-enabled'가 아닐지라도, vector 템플릿 자체는 'move-enabled'이므로 함수로부터 Object를 위한 임..