본문 바로가기

분류 전체보기274

개발관련정보를 어디서 얻을까? 개발관련정보를 어디서 얻을까? 제가 사용하는 개발관련 정보 얻는 방법에대하여 정리하여보았습니다. 더 좋은 커뮤니티와 방법들이 있다면 언제든지 댓글, 메일, 커뮤니티의 게시글로 알려 주시면 감사하겠습니다. 1. Github Github Follw Github TIL GitHub Follow Github에서는 관심사가 비슷한 개발자를 Follow하게 되면 그 사람이 만든 프로젝트나 star를 누른 프로젝트를 받아 볼 수 있습니다. skydoves이 start를 누른 프로젝트를 알림받았습니다. Github TIL 또한 Github에는 다양한 인터뷰 글들과 TIL(Today I Learned)라는 이름으로 많은 개발 관련 글들이 있습니다. 이러한 글과 개발 코드를 접하게 되면서 자연스럽게 지식을 여러 방면으로 .. 2019. 8. 13.
Git Flow 란 ? Git-flow 간단하게 살펴보기 Git-flow를 사용했을 때 작업을 어떻게 하는지 살펴보기 전에 먼저 Git-flow에 대해서 간단히 살펴보겠습니다. Git-flow에는 5가지 종류의 브랜치로 나누어지게 됩니다. 항상 유지되는 메인 브랜치들(master, develop)과 일정 기간 동안만 유지되는 보조 브랜치들(feature, release, hotfix)이 있습니다. master : 제품으로 출시될 수 있는 브랜치 develop : 다음 출시 버전을 개발하는 브랜치 feature : 기능을 개발하는 브랜치 release : 이번 출시 버전을 준비하는 브랜치 hotfix : 출시 버전에서 발생한 버그를 수정 하는 브랜치 master 와 devleop브랜치 master와 develop브랜치가 존재하고.. 2019. 8. 5.
개인정보 처리방침 ('https://beomseok95.tistory.com/'이하 '싸커팅')은(는) 개인정보보호법에 따라 이용자의 개인정보 보호 및 권익을 보호하고 개인정보와 관련한 이용자의 고충을 원활하게 처리할 수 있도록 다음과 같은 처리방침을 두고 있습니다. ('싸커팅') 은(는) 회사는 개인정보처리방침을 개정하는 경우 웹사이트 공지사항(또는 개별공지)을 통하여 공지할 것입니다. ○ 본 방침은부터 2019년 7월 14일부터 시행됩니다. 1. 개인정보의 처리 목적 ('https://beomseok95.tistory.com/'이하 '싸커팅')은(는) 개인정보를 다음의 목적을 위해 처리합니다. 처리한 개인정보는 다음의 목적이외의 용도로는 사용되지 않으며 이용 목적이 변경될 시에는 사전동의를 구할 예정입니다. 가. 홈페.. 2019. 7. 25.
Junit - Assert 메소드 단정 메소드(assert method) · JUnit에서 가장 많이 이용되는 단정(assert) 메소드입니다. · 단정 메서드로 테스트 케이스의 수행 결과를 판별합니다. 메소드 설명 assertEquals(x, y) · 객체 x와 y가 일치함을 확인합니다. · x(예상 값)와 y(실제 값)가 같으면 테스트 통과 assertArrayEquals(a, b); · 배열 A와 B가 일치함을 확인합니다. assertFalse(x) · x가 false 인지 확인합니다. assertTrue(x) · x가 true 인지 확인합니다. assertTrue(message, condition) · condition이 true이면 message표시 assertNull(o) · 객체o가 null인지 확인합니다. assertNot.. 2019. 7. 10.
Jitpack 을 이용한 오픈소스라이브러리 배포하기 Jitpack 을 이용한 오픈소스라이브러리 배포하기 1. Module 생성 File > New > New Module을 클릭합니다. 나타나는 Create New Module 창에서 Android Library, Next를 차례로 클릭합니다 라이브러리에 이름을 지정하고 라이브러리의 코드에 대한 최소 SDK 버전을 선택한 후 Finish를 클릭합니다. Sync Project with Gradle Files 2. project level build.grade 세팅 buildscript { ... repositories { google() jcenter() } dependencies { ... classpath 'com.github.dcendents:android-maven-gradle-plugin:2.1' /.. 2019. 7. 8.
sonarqube - 3 (Jenkins연동 ) sonarqube 이번에는 sonarqube와 jenkins를 연동하는 방법에대하여 알아보도록 하겠습니다 . 먼저 docker jenkins설치가 필요합니다 . 아직 설치하지 않았다면 아래 링크에서 설치하고 와주시면 됩니다 . https://beomseok95.tistory.com/177 Docker 를 이용한 CI 구축 -1 ( Docker jenkins 설치) Docker 를 이용한 CI 구축 여태 CI를 경험해본적이 없어 연습을 해봐야겠다고 생각을 하였습니다. 개인 서버가 별도로 없어서 어디에 구축을 해야하나 고민하던 중, 도커가 생각나서 도커에 구축하여 같이 연습을.. beomseok95.tistory.com 1. jenkins sonarqube 플러그인 설치 jenkins관리 - > 플러그인 관.. 2019. 6. 18.
Sonarqube - 2 (도커로 설치하기) Sonarqube 이전글에서 우분투환경에 소나큐브를 설치하는것을 알아보았었습니다 . 이번글에서는 도커로 소나큐브를 설치하는것을 알아보도록 하겠습니다. https://beomseok95.tistory.com/199 Sonarqube - 1 (우분투에 설치하기) Sonarqube 먼저 소나큐브를 설치하기 전에 소나큐브란 무었인지 에대하여 알아보도록 하겠습니다. 소나큐브란 ? 소나큐브는 프로젝트의 품질을 관리할 수 있도록 여러가지 모니터링 툴을 제공하는 오슨소스 플랫폼.. beomseok95.tistory.com 도커로 설치하면 훨씬 간단하게 설치할 수 있습니다. 먼저 도커가 깔려있어야겠죠 . 도커설치는 아래에서 확인할 수 있습니다.( mac기준) https://beomseok95.tistory.com/176.. 2019. 6. 18.
Sonarqube - 1 (우분투에 설치하기) Sonarqube 먼저 소나큐브를 설치하기 전에 소나큐브란 무었인지 에대하여 알아보도록 하겠습니다. 소나큐브란 ? 소나큐브는 프로젝트의 품질을 관리할 수 있도록 여러가지 모니터링 툴을 제공하는 오슨소스 플랫폼입니다. 보통 소나큐브는 단독으로 사용되기 보다는 지난 번에 포스트한 Jenkins 같은 CI 서버와 연동이 되어서 사용이 되어지고 있으며 Java를 포함한 20가지가 넘는 프로그래밍 언어 (예: C#, C/C++, Javascript 등)로 제작된 프로젝트의 모니터링을 제공합니다. 정리하자면 ,소나큐브는 정적 코드 분석 툴로써 사용되는 오픈소스 프로젝트입니다. 주로 메소드명이 길진 않은지 파라미터값이 많지는 않은지 복잡도는 얼마나되는지 등등을 검사해주는 툴입니다. 웹으로 구동됩니다. 만약 복잡도가 .. 2019. 6. 16.
Crashlytics Firebase Crashlytics 또한 충돌이 일어날때유저가 발생시킨 이벤트와 기록을 보여줍니다. 위의 모든 기능들을 포함한 SDK파일은 매우 경량화되어 앱에 많은 부하를 주지 않습니다. 또한 NDK 충돌문제,프로가드등도 관리할 수 있으며 코틀린을 지원합니다. 1. 프로젝트에 진입하여 Crashlytics탭에 들어갑니다. 2. 초기설정 3. 프로젝트 수준 build.gradle 설정 buildscript { ... repositories { ... maven { url 'https://maven.fabric.io/public' } } dependencies { ... // Check for v3.1.2 or higher classpath 'com.google.gms:google-services:4.2.. 2019. 6. 16.
Reflection kotlin - Reflection Reflection에 대하여 알아보도록 하겠습니다. 1) Reflection이란 ?? Reflection의 단어의 뜻은 '반사' 입니다 . 자신을 반사하여 보여준다 !라고 생각하면 될것같습니다 리플렉션은 런타임시 자신의 프로그램 구조에 대한 내성 검사를 허용하는 언어 및 라이브러리 기능 세트입니다. 코틀린은 언어에서 함수와 프로퍼티를 일급 시민으로만들고, 런타임에 함수나 프로퍼티의 타입 또는 이름을 학습하는 것은 단순하게 함수적 스타일 또는 반응적 스타일을 사용하는 것과 밀접하게 연관되어 있습니다. 2) 클래스 참조 가장 흔히 볼수있는 Refection 은 클래스 참조 입니다 . val c =ReflectionTest::class ::연산자로 ReflectionTest.. 2019. 6. 8.
Jetpack - Workmanager (2) Jetpack - Workmanager (2) 워크매니저 자세히 살펴보기 1. 작업상태 확인 완료 된 작업에 대해 사용자에게 알림을 통보해 주거나, 화면에 표시된 프로그래스바를 감춰야 하기도 하고,다시 새로운 작업을 실행 해야 하기도 합니다. WorkManager.getInstance().getWorkInfoByIdLiveData(work.id) .observe(lifecycleOwner, Observer { workInfo -> if (workInfo != null && workInfo.state == WorkInfo.State.SUCCEEDED) { // 작업 완료 } }) work 는 request입니다. Requst에서 아이디를 가져와 라이브데이터로 관찰할 수 있습니다. 지정된 Observer 에.. 2019. 5. 6.
Jetpack - Workmanager (1) Jetpack - WorkManager jetpack의 Architecture의 일부인 Workmanager에 대하여 알아보도록 하겠습니다. 안드로이드 초기에는 백그라운드 작업이 수월했었습니다. 서비스 하나를 생성하여 쉽게 사용자 뒤에서 백그라운드 작업을 수행할 수 있었습니다. 브로드캐스트 리시버를 사용하여 개발자가 원하는 시점에 앱을 깨워서 작업할 수도 있었습니다. workmanager 이전의 안드로이드 백그라운드 작업 자세히 알아보기 - https://beomseok95.tistory.com/192 Workmanager 이전의 안드로이드 백그라운드작업 Workmanager 이전의 안드로이드 백그라운드작업 Jetpack의 workmanager에대하여 알아보기 전에 이전의 안드로이드 백그라운드작업을 어떻.. 2019. 5. 6.
Workmanager 이전의 안드로이드 백그라운드작업 Workmanager 이전의 안드로이드 백그라운드작업 Jetpack의 workmanager에대하여 알아보기 전에 이전의 안드로이드 백그라운드작업을 어떻게 처리했었는지 알아보도록 하겠습니다 . 1.android K (킷켓,API 19)이전 킷케버전 이전에서는 실행 및 종료 여부에 상관없이 수행되는 백그라운드 작업을 다음과 같이 처리해왔습니다. 기본은 AlarmManager 와 브로드캐스트 리시버를 사용하는 것입니다. AlarmManager 의 명세대로 우리가 지정한 타이밍에 딱 시스템에서는 알람이 오고, 이 알람에 맞춰서 백그라운드 작업을 수행하면 됐습니다만, 안드로이드 K (킷켓, API 19) 부터는 알람이 한없이 미뤄지거나 한번에 몰아서 처리되는 등 정확한 실행을 보장하지 않게 되었습니다. 안드로이드.. 2019. 5. 6.
Jetpack - Navigation Jetpack - Navigation 네비게이션은 앱의 목적지, 즉 사용자가 탐색 할 수있는 앱의 어느 곳에서나 발생합니다 . 이러한 대상은 작업을 통해 연결됩니다 . 네비게이션 그래프는 당신의 목적지와 행동을 모두 포함하는 리소스 파일입니다. 그래프는 앱의 모든 탐색 경로를 나타냅니다. 대상 은 앱의 다른 콘텐츠 영역입니다. 동작 은 사용자가 사용할 수있는 경로를 나타내는 대상 간의 논리적 연결입니다. 프로젝트에 탐색 그래프를 추가하려면 아래와같이 설정합니다. 프로젝트 창에서 res디렉토리를 마우스 오른쪽 버튼으로 클릭 하고 새로 만들기> Android Resource File을 선택합니다. 새 리소스 파일 대화 상자가 나타납니다. 파일 이름 필드에 "nav_graph"와 같은 이름을 입력합니다. 선택.. 2019. 5. 2.
Jetpack 알아보기 Jetpack이란 ?? Jetpack components 젯팩은 기능에 따라 크게 네가지의 컴포넌트로 구분할 수 있으며, 각각의 컴포넌트는 독립적인 활용이 가능합니다 1. Architecture : 구글에서 제안하는 안드로이드 아키텍처를 구현할 수 있는 기능들로 구성되어 있다. View를 포함한 UI 요소의 lifecycle management를 비롯하여 LiveData와 ViewModel, Room등의 기능이 여기에 포함됩니다 2. Foundation : 안드로이드 시스템의 핵심 기능을 담당하는 컴포넌트로, AppCompat을 비롯하여 코틀린 익스텐션과 Multidex 등이 포함됩니다 3. Behavior : 앱의 동작과 관련한 것들로 알림(notification)을 비롯하여 다운로드 매니저나 권한(p.. 2019. 5. 2.
Koin - DI 라이브러리 koin을 알아보자 Koin - DI 라이브러리 koin을 알아보자 Koin에 대하여 알아보기 전에 먼저 DI란게 어떤것인지 가볍게 알아보도록 하겠습니다 . - DI(Dependency Injection,의존성 주입) 이란 ? 현재 객체가 다른 객체와 상호작용(참조)하고 있다면 현재 객체는 다른 객체에 의존성을 가집니다. public class PetOwner{ private AnimalType animal; public PetOwner() { this.animal = new Dog(); } } 간단한 예로 PetOwner객체는 Dog에 의존적인 상황입니다. 이러한 의존성이 위험한 이유는 PetOwner객체는 AminalType객체 생성을 제어하기 대문에 두객체간 긴밀한 밀접이 생기고, AnimalType객체를 변경하면 P.. 2019. 5. 1.
Docker 를 이용한 CI 구축 - 5(Slack 연동) Docker 를 이용한 CI 구축 - 5(Slack 연동) jenkins를 이용하여 빌드 시작, 완료 된 그런 상태를 Slack 으로 받아볼 수 있도록 연동해보도록 하겠습니다. 1. Slack 플러그인 깔기 (Slack 연동하기) 젠킨스관리 -> 플러그인관리 -> 설치가능한 플러그인탭에서 위의 플러그인을 검색하고 다운로드 하여 줍니다 . 2. Slack 앱 설정 먼저 저는 슬랙 앱을 쓰고있으므로 슬랙 앱을 켜서 젠킨스를 추가하도록 하겠습니다 . 알림을 받을 채널 생성 (여기서는 jenkins를 생성) Apps 옆의 + 버튼을 눌러 Jenkins CI 검색 후 설치 설치 후 Settings 를 누른뒤 채널을 선택하고 add 클릭 Step 별로 자세히 설명이 나와있으며 , 위와 같이 Base URL 과 토큰.. 2019. 4. 28.
AWS와 JENKINS를 이용한 CI -3 (Git Lab Web Hook) AWS와 JENKINS를 이용한 CI -3 (Git Lab Web Hook) 1. EC2 탄력적 IP 설정 aws ec2 콘솔에 들어가 네트워크 보안 탭의 탄력적 IP를 클릭합니다 탄력적 IP가 존재하지 않는다면 새 주소를 할당하고 ,존대하면 우클릭을 눌러 주소 연결을 누릅니다 . 이전에 생성했던 인스턴스를 선택하고 연결을 눌러줍니다 . 그다음 인스턴스 탭에 가보면 탄력적 IP가 성공적으로 연결된 것을 확인할 수 있습니다 . 2. Gitlab Connection 설정 jenkins관리 -> 시스템구성 -> Gitlab 탭에서 아래와같이 설정합니다. enable authentication for /proejct end-point 해제 connection name, gitlab host URL 입력 cred.. 2019. 4. 28.
AWS와 JENKINS를 이용한 CI -2 (item 생성, android sdk 설정) AWS와 JENKINS를 이용한 CI -2 proejct item 생성,android sdk 설정하기 1. home directory 확인하기 jenkins에 로그인-> jenkins 관리-> 시스템설정 에서 홈디렉토리를 확인합니다 . 저의 홈디렉터리는 /var/lib/jenkins 입니다 . 2. ssh로 터미널 접속하기 AWS EC2 콘솔에 들어간뒤 인스턴스탭에서 연결을 클릭합니다 터미널 명령어를 친절하게 알려줍니다 위 명령어를 써서 접근할 수도 있지만 저는 아래명령어를 사용하였습니다 . ssh -i [IAM-keyfile-path] ec2-user@[instance-public-ip] ex) ssh -i /users/chobeomseok/.ssh/bsjo.pem ec2-user@13.125.122... 2019. 4. 28.
AWS와 JENKINS를 이용한 CI -1 (AWS,CloudFormation,EC2,젠킨스설정) AWS 를 이용하여 JENKINS 환경을 구성해보도록 하겠습니다. 1.먼저 아래 링크를 보고 AWS 세팅을 해줍니다 . https://docs.aws.amazon.com/ko_kr/AmazonECS/latest/developerguide/get-set-up-for-amazon-ecs.html#sign-up-for-aws Amazon ECS로 설정 - Amazon Elastic Container Service Amazon ECS로 설정 Amazon Web Services(AWS)에 이미 가입했고 Amazon Elastic Compute Cloud(Amazon EC2)를 사용하고 있는 경우, Amazon ECS를 곧 사용할 수 있습니다. 두 서비스의 설정 프로세스는 유사합니다. 다음 가이드에서는 Amazon.. 2019. 4. 28.
Docker 를 이용한 CI 구축 - 3(android sdk setup) Docker 를 이용한 CI 구축 - 3(android sdk setup) 이번에는 안드로이드 sdk 를 설정해주도록 하겠습니다 1. 터미널에서 루트권한으로 컨테이너에 접속해 줍니다 . docker exec -it -u 0 "Container name" /bin/bash 2. 아래 명령어로 우분투에 있는 패키지들을 실제로 최신 버전으로 업그레이드 합니다. apt-get update 3. MC(Midnight Commander) 를 설치합니다 . apt-get install mc 4. 디렉토리 이동 cd /var/jenkins_home 5. 위의 디렉터리로 이동 후 wget 유틸리티를 사용하여 SDK 도구 (Linux 용) 다운로드 cd /var/jenkins_home/android-sdk wget htt.. 2019. 4. 21.
Docker 를 이용한 CI 구축 -2 (Jenkins Sequrity Setting) Docker 를 이용한 CI 구축 -2 (Jenkins Sequrity Setting) Jenkins Job을 외부에서 URL로 실행하기 위해서는 아래 설정이 꼭 필요합니다 . Jenkins 관리를 눌러 설정화면으로 이동합니다 Jenkins Global Security 설정 Security Realm Jenkins 'own user database 를 체크해주고 사용자의 가입허용을 체크합니다 Authorization Matrix-based security를 선택하여 유저와 그룹의 허가할 퍼미션을 선택합니다 CSRF Protection 설정 체크를 풀어줘야 합니다. 이렇게 해야 외부에서 Job에 대한 트리거링이 가능해 집니다 . Jenkins Job을 호출하기 위해서는 Jenkins가 반드시 외부에 공개되.. 2019. 4. 21.
Docker Termnial 명령어 Docker Termnial 명령어 Docker 명령어를 정리해보도록 하겠습니다 . 상태 확인하기 docker ps docker images docker ps 명령어는 실행중인 컨테이너를 확인하는 명령어입니다. -a 옵션을 더하면 , 실행중인 컨테이너 이외에전체 컨테이너를 확인할 수 있습니다 . docker images 명령어는 설치된 이미지 목록을 확인할 수 있습니다 . 이미지 검색, 이미지 다운로드 docker search [검색할이미지명] docker pull [다운받을이미지명] docker search 명령어는 이미지를 검색하는 명령어입니다 . docker pull [image name] 명령어를 사용하여 이미지를 다운로드 받을 수 있습니다. 컨테이너 실행하기 docker run [image na.. 2019. 4. 21.
Docker 를 이용한 CI 구축 -1 ( Docker jenkins 설치) Docker 를 이용한 CI 구축 여태 CI를 경험해본적이 없어 연습을 해봐야겠다고 생각을 하였습니다. 개인 서버가 별도로 없어서 어디에 구축을 해야하나 고민하던 중, 도커가 생각나서 도커에 구축하여 같이 연습을 하게 되었습니다. 도커와 젠킨스 초보이다보니 잘못된 내용이 있을 수 있습니다. 먼저 도커를 설치하지 않았다면 아래 링크를 참고하여 설치하면 됩니다 . https://beomseok95.tistory.com/176 Docker 설치하기 도커 설치하기 (Mac OS) 1. 터미널창에 아래 명령어를 입력하여 도커를 다운받습니다. 도커의 클라이언트만 설치한 것이라고 할 수 있습니다. brew install Docker 2. 설치가 완료되었으면 아래 명령어로 제대로.. beomseok95.tistory... 2019. 4. 16.