반응형

전체보기 81

프로그램 버전 표기 방식. Semantic Versioning

프로그램 개발을 하다보면 2.5.12 와 같은 프로그램 버전에 대한것을 볼 수 있습니다. 이렇게 3개의 숫자 단위를 사용하는 버전 표기 방식을 Semantic Versioning(시맨틱 버저닝)이라고 하며, 줄여서 SemVer라고도 합니다. 이 방식은 일반적으로 많이 사용하는 버전 표기 방식입니다. 이 방식은 그라바타(Gravatars)의 창시자이자 깃헙(GitHub)의 공동창업자인 Tom Preston-Werner가 작성했습니다. 우선 표기 방식에 대해 요약하기에 앞서 원문 사이트를 소개하고자 합니다. Semantic Versioning 2.0.0 | Semantic Versioning (semver.org) Semantic Versioning 2.0.0 Semantic Versioning spec a..

컴퓨터 일반 2022.11.01

프론트엔드, 백엔드, 데브옵스, 풀스텍이란?

웹 개발을 하다보면 프론트엔드, 백엔드, 풀스텍이라는 용어를 듣습니다. 실제로 구인 사이트에서 개발자 구인란을 보면 이러한 용어를 많이 보기도 하고요. 그렇다면 이 말은 무슨말일까요? 이 용어를 이해하려면 개발자가 아닌 유저(사용자)의 입장이 되어서 생각하면 쉽습니다. 1. 프론트엔드 프론트(Front). 말그대로 앞이라는 뜻이죠. 스마트폰을 사용하는 사용자가 되었다고 생각합시다. 그렇다면 내가 이 스마트폰을 사용하기위해 보는것은 스마트폰 화면안의 어플리케이션들일것입니다. 예를 들면 카카오톡의 채팅 화면이나 네이버, 다음 사이트가 되겠네요. 이렇게 사용자가 눈으로 직접 보는곳을 프론트엔드라고 하며, 이러한 부분을 개발하는 개발자를 프론트엔드 개발자라고 합니다. 보통 UI라고 불리우는 사용자 인터페이스를 ..

컴퓨터 일반 2022.10.31

[Native C++] 응용1. Assets을 이용한 aar 만들기 (3)

Assets 폴더의 자산을 활용할수 있도록 Class를 변경하도록 합니다. 1. 다음과 같이 클래스에 소스를 추가합니다. import android.content.Context; import android.content.res.AssetManager; public class Sample { // Used to load the 'native-lib' library on application startup. static { System.loadLibrary("native-lib"); } //기본 생성자. public Sample(){ } // 생성자 추가, 라이브러리에서 Assets에 접근하기 위함. public Sample(Context context){ jni_ReadAssetManager(context..

Android 2022.10.30

[DSLR/미러리스] Nikon 카메라 손떨림 보정(VR) 기능 차이

손떨림 보정은 일명 손떨방이라 불립니다. 이 기능은 말 그대로 사진 촬영시 손떨림이나 진동으로 인하여 블러처리가 된것마냥 흔들린 사진으로 나오는 경우가 있는데, 이러한 현상을 억제시켜주는 역할을 합니다. 캐논, 니콘, 소니 기준으로 각사의 최신 바디 기종 대부분이 손떨방 기능을 지원하고 있으며, 렌즈는 캐논은 IS, 니콘은 VR, 소니는 OSS라는 이름으로 렌즈에 별도로 따로 표기가 됩니다. 니콘 바디의 설명서를 통해 제공하는 기능을 살펴보도록 하겠습니다. 위 참고사항을 정리하면 1. 삼각대 마운트시에는 손떨방을 OFF 하는것을 권장한다. 이때 모노포드 삼각대거나, 짐벌 헤드를 사용 할 시에는 손떨방 기능을 사용한다. 2. 정지 피사체는 ON, Normal 사용을 권장한다. 3. 움직이는 피사체는 Spo..

사진/촬영관련 2022.10.29

[Native C++] 응용1. Assets을 이용한 aar 만들기 (2)

Assets 폴더를 만들고 자료를 넣었으면 이를 활용하기 위한 Assets 관련 소스를 import하겠습니다. 1. 프로젝트의 cpp 폴더에 다음과 같은 소스파일을 넣습니다. - android_fopne.cpp #include #include "android_fopen.h" #include #include static int android_read(void *cookie, char *buf, int size) { return AAsset_read((AAsset *) cookie, buf, size); } static int android_write(void *cookie, const char *buf, int size) { return EACCES; // can't provide write access ..

Android 2022.10.29

[Native C++] 응용1. Assets을 이용한 aar 만들기 (1)

자신의 aar 라이브러리안에 bin이나 txt같은 파일이 있어야 한다면 Assets를 활용하면 됩니다. 기존에 만든 SampleProject를 활용하여 이어서 진행하며, 첫번째로 Assets 폴더를 만들어서 파일을 넣는 방법을 소개하겠습니다. 1. 프로젝트 창에서 [app] 을 우클릭한뒤 [new] - [Folder] - [Assets Folder]를 클릭합니다. 2. 선택 후 Finish를 누릅니다 3. 프로젝트에 assets 폴더가 생성된것을 볼 수 있습니다. assets 폴더를 우클릭하고 Open In - Explorer를 클릭합니다. 4. Assets 폴더에 넣길 원하는 파일을 넣습니다. 샘플 프로젝트에서는 다음과 같은 파일과 내용을 넣었습니다. 5. assets 폴더에 위 data.txt 파일이..

Android 2022.10.29

[Native C++] 6. aar 배포용 샘플 프로젝트 만들기(또는 aar파일을 프로젝트에 포함시키는 방법)

우선 공식 홈페이지에 친절하게 설명 되어 있다는점 참고 바라며.. https://developer.android.com/studio/projects/android-library?hl=ko Android 라이브러리 만들기 | Android 개발자 | Android Developers Android 라이브러리를 생성하는 방법을 알아보세요. developer.android.com 1. 만들어낸 aar 파일을 테스트하기 위하여 SampleTest라는 프로젝트를 새로 생성하였습니다. 2. 해당 프로젝트의 app/libs에 이전에 만든 aar 파일을 복사합니다. 3. 상단의 [File] - [Project Structure] 를 클릭하고 [Dependencies]를 클릭하면 아래와 같은 창이 뜹니다 4. All D..

Android 2022.10.28

[Native C++] 5. 라이브러리 동작 확인하고 aar 파일 만들기

이제 제대로 동작하는지 확인을 위한 간단한 App을 만들어보겠습니다. 1. MainActivity를 다음과 같이 수정합니다. 2. 가상 스마트폰으로 돌려봅니다 30이 출력되었음을 확인 할 수 있습니다. 샘플이라 단순하게 Log로 뿌렸지만 UI를 꾸며서 스마트폰에 출력해도 됩니다. 3. 동작이 확인되었으면 aar파일을 생성해보겠습니다. app의 build.gradle을 클릭하여 id 'com.android.application' applicationId "com.example.sampleproject" 를 주석처리하고 plugins에 id 'com.android.library' 를 추가합니다. 또한 기본 이름도 변경해보겠습니다. plugins { //id 'com.android.application' id..

Android 2022.10.28

[C] 가변 인수 (2) : 가변 인수 함수를 꼭 써야 가변인수를 사용할수 있는걸까?

일반 함수 매개변수의 주소값과 가변인수함수의 주소값을 살펴보았습니다. 그 두가지의 주소값 할당은 비슷한점이 많았습니다. 그럼 아래와 같이 가변인수함수를 사용하지 않아도 가변인수의 값을 가져올 수 있지 않을까요? #include int sum(int i, ...); void main() { printf("\n%d\n", sum(3, 1, 2, 3)); } int sum(int i, ...) { int sum = 0, j; int *p = &i + 1; for (j = 0; j

[C] 가변 인수 (1) : 가변 인수 함수의 주소는 어떻게 될까

일반적으로 가변인수를 사용하는 방법은 아래와 같습니다. #include #include //가변 인수를 사용하기 위한 헤더파일 int sum(int i, ...); void main() { printf("\n%d\n", sum(3, 1, 2, 3)); } int sum(int i, ...) { int j, t, sum = 0; va_list sp; //가변 인수들의 주소를 저장할 지역변수 va_list. Type은 char* va_start(sp, i); //가변 인수 바로 앞에있는 고정매개변수를 받는다. 이 함수의 매개변수에서 가변인수(...) 앞에는 int i 이므로 i를 넘긴다. for (j = 0; j < i; j++) { t = va_arg(sp, int); //int형으로 참조하여 값을 가져온..

반응형