본문 바로가기
[Linux] 리눅스 사용자 추가 및 VS Code SSH 원격 개발 환경 구축 [Linux] 리눅스 사용자 추가 및 VS Code SSH 원격 개발 환경 구축 개발 인력이 늘어나면, 리눅스 서버 관리자는 각 유저에게 계정과 권한을 할당해야한다. 우선 그 방법을 알아보고 ssh 기반의 원격 개발 환경 구축까지 알아보도록 하자. 우선 기본적인 리눅스 서버가 하나 있다고 가정하겠다. 작성자는 AWS EC2의 ubuntu 환경에서 진행했다. 진행 순서 1. 사용자의 Open SSH 공개키 생성 2. 리눅스 유저 생성 및 권한 할당 3. Visual Studio Code 로 원격 접속 1. 사용자의 Open SSH 공개키 생성 사용자는 먼저 아래 주소로 접속한 뒤, 현재 개발하고 있는 OS에 맞는 putty를 다운 받는다. 설치 후 PuTTYgen 을 실행한다. https://www.put.. 2021. 12. 30.
[AWS Console] IAM (Identity and Access Management) : 권한 제어 IAM (Identity and Access Management) 여러 개발자가 회사가 사용중인 AWS 서비스를 이용할 때, 당연히 모든 개발자가 모든 리소스에 대한 접근 권한을 가지면 안된다. 따라서 조직이 커짐에 따라 필요한 만큼만 AWS 리소스 접근 권한을 할당할 필요가 있다. AWS 루트(Root) 계정은 최고 관리자 계정(CTO나 회사대표)으로, 이 계정으로 IAM 계정 생성을 통해 접근 권한 제어 방법에 대해 알아보겠다. (보안을 위해 리눅스의 루트 계정과 유저 계정을 따로 두는 그것과 같다고 보면 된다.) 목표 : 루트(Root) 계정으로 IAM 계정 생성 방법 및 권한 할당 먼저 루트 계정으로 AWS 콘솔에 로그인 후, 검색창에 IAM을 검색한 후, 들어간다. 이후 좌측 액세스 관리 탭에서.. 2021. 12. 28.
[Jetpack AAC] View Binding 정리 [Jetpack AAC] View Binding 정리 핵심 : findViewById 를 쓰지 않는다. 뷰 바인딩은 각 XML 레이아웃 파일에 해당하는 바인딩 클래스(Binding Class)를 자동 생성하여 뷰에 대한 직접 참조를 가능케 한다. 기존에는 코틀린 합성 프로퍼티를 이용해서 했지만 코틀린 합성 프로퍼티는 이제 deprecated 예정이기에 공식적으로 이 방법을 쓰는게 맞다. 기본적인 뷰바인딩 사용방법과 3가지 사례(Activity에서 사용법, Fragment에서 사용법, ViewHolder에서 사용법)를 정리해보겠다. 준비 안드로이드 스튜디오 3.6 이상 (Canary 11 이상) 에서 사용 가능 모듈 수준 gradle 파일에 다음을 추가한다. android{ ... 중략 viewBindin.. 2021. 11. 15.
[Jetpack Compose] Compose # 1 - 기본 [Jetpack Compose] Compose # 1 - 기본 Jetpack Compose 란? Jetpack 컴포스는 구글이 제시한 최신 선언형 UI 프레임워크이다. 기존 레거시 뷰 체계는 앞으로 등장하게 될 다양한 기기들의 화면(폴더블, 플렉서블, 테블릿 등) 형태에 대응하기 어렵고, 이러한 레거시 라이브러리의 업데이트는 안드로이드 엔지니어들이나 이를 이용하여 개발하는 개발자 둘 다에게 비효율적이다. 따라서 구글에서는 완전히 새로운 Android UI 설계 프레임워크를 지난 21년 5월에 출시하였다. 본 포스트는 Jetpack Compose 1.0 버전 기준으로 작성하였다. Jetpack Compose 의 특징 API Level 21 부터 호환하여, 대부분의 안드로이드 OS 버전에 호환 특정 OS에 .. 2021. 11. 6.
[Android Library] Retrofit2 #2 - HTTP Method [Android Library] Retrofit2 #2 - HTTP Method Retrofit은 HTTP REST API통신에 사용하는 여러 종류의 요청 메서드를 사용할 수 있도록 돕는다. Retrofit에서 구현 가능한 HTTP 요청 메소드는 GET, POST, PUT, DELETE, HEAD 이 5가지가 기본이며 어노테이션을 통해 이용가능하다. 참고로 메소드 Annotation은 대문자로 표기되며, 메소드와 함께 쓰이는 설정 어노테이션은 앞글자만 대문자료 표기된다. (ex : @GET, @Query ) Annotaion 요약 메소드 Annotation 종류 (서버의 파일(데이터)에 대한 CRUD 기준, 서버 DB에 대한 쿼리 기준) 주요 메소드 @GET : 바디 없이 URL에 모든 정보를 담아 요청.. 2021. 9. 17.
[Kotlin Plugin] JsonToKotlinClass [Kotlin Plugin] JsonToKotlinClass Kotlin 유저를 위한 유용한 플러그인이 있어 소개하고자 한다. Retrofit 등 HTTP 통신을 필요로하는 라이브러리를 사용할 때, API에서 요구하는 JSON 형식을 데이터 클래스로 일일히 구현하기는 여간 귀찮은 일이 아니다. 이를 위해 자동으로 필요한 클래스들을 정의하는 JsonToKotlinClass 플러그인을 소개한다. 설치 File -> Settings -> Plugins Json 검색 -> JSON To Kotlin Class 설치 사용 예시로 카카오 주소 검색 API 의 JSON 응답을 클래스로 만들어보겠다. https://developers.kakao.com/docs/latest/ko/local/dev-guide#addres.. 2021. 9. 8.
[Android Library] Retrofit2 #1 - 레트로핏 기본 개괄 [Android Library] Retrofit2 #1 - 레트로핏 기본 개괄 REST API 통신을 사용하고자 한다면, 레트로핏을 쓰는게 가장 깔끔하고 편하다. 주로 비동기 통신 구현을 위해 그동안 사용해 왔는데 한 번쯤 정리의 필요성을 느껴 기본 개괄과 HTTP 요청 방식 정리로 두 번의 포스트에 걸쳐 정리하고자 한다. HTTP GET 메소드의 구현을 예시로 하겠다. 언어는 Kotlin 으로 하겠다. 선행 사항 다음 기술들을 선행하면 좋다. REST API (POST, GET, PUT, DELETE) & CRUD (Create, Read, Update, Delete) 비동기 통신 기본 정보 및 장점 Squareup사 에서 만든 라이브러리로 OkHttp의 위에서 구동되는 구현체이다. AsyncTask .. 2021. 9. 8.
[Algorithm] 유니온 파인드(Union-Find) 알고리즘 유니온 파인드(Union-Find) 알고리즘 분리집합 (서로소 집합, Disjoint Set)의 합집합(Union)과 같은 집합에 속하는지 여부(Find) 를 확인하는 알고리즘. 예시는 정수들의 집합으로하겠다. 1~9 까지 정수 9개가 각각 하나의 집합이라고 하자. {1}, {2}, {3} ,{4}, {5}, {6}, {7}, {8}, {9} 각 정수가 하나의 노드라고 하고, 그래프라고 한다면 초기 상태는 각각 부모노드가 자기 자신인 구조로 설정한다. 이것을 프로그래밍적으로 표현한다면 2차원 배열로 다음과 같이 표현할 수 있다. Node 1 2 3 4 5 6 7 8 9 Parent 1 2 3 4 5 6 7 9 9 여기서 집합 {1} 과 {2} 를 합친다고 하면 다음과 같이 공통의 부모를 두도록 하면 된다.. 2021. 9. 2.
[Android Library] Tensorflow Lite - Sound Classification [Android Library] Tensorflow Lite - Sound Classification 경량화 기술의 발달로 모바일에서 AI 모델을 돌릴 수 있는 기술들이 많이 등장하고 있다. 지난번에 PyTorch Mobile 을 이용한 음성 인식 모델 사용법에 이어, 좀 더 간편하게 사용할 수 있는 Tensorflow Lite 라이브러리를 소개하고자 한다.예시는 YAMNet 모델 이용하여 521가지의 소리를 분류해 보겠다. 언어는 Java를 이용하겠다. Kotlin 은 구글에서 제공하는 공식 레퍼런스를 참조하면 된다. (프로젝트가 Java 여서 테스트 코드를 만들다 보니, 부득이하게 Java를 예시로 들겠다) UI 는 없이 Log로 찍어서 확인하겠다. 준비 1. Gradle 앱수준의 dependenci.. 2021. 8. 25.