분류 전체보기 40

[CI/CD] CI/CD에 관하여

CI/CD 중요성IT 기술이 발전함에 따라 프로그램의 규모는 점점 더 커지고 있습니다. 그에 따라 사람 혼자 프로그램을 개발하는 것이 불가능이라고 말할 수 있을 정도로 클라이언트가 요구하는 프로그램의 규모는 나날이 복잡해지고 있습니다. 이 때문에 개발자들은 협업을 진행합니다.하지만 이런 생각을 해보신 적 있으신가요?어느 한 회사에 100명의 넘는 개발자들이 있다고 해보겠습니다.그러면 그 100명은 각각 자신들이 맡은 기능을 개발하겠죠.당연히도 최종적으로 100개의 결과물이 나올 겁니다.이 결과물들을 어떻게 합치고, 테스트를 하며, 빌드를 진행할까요?  위와 같이 개발자 수가 많은 회사들은 이 100개의 개발 결과물 관리에 큰 어려움을 겪을 겁니다.결과물 관리를 편하게 하고 시간을 단축할 수 있도록 도와주..

DevOps/CI|CD 2024.04.14

[안드로이드]Retrofit(okhttp)의 WebSocket에 대하여

웹소켓(WebSocket) 양방향 통신을 지원하는 프로토콜로, 클라이언트와 서버 간 실시간 데이터 전송을 가능케 한다. HTTP 기반의 통신과 달리 지속적인 연결을 제공하며, 이를 통해 실시간으로 데이터를 주고받을 수 있다. 안드로이드에선 Okhttps 라이브러리의 WebSocket 모듈을 사용하여 구현할 수 있다. 최근엔 Okhttps의 구현을 쉽게 추상화를 한 Retrofit를 주로 사용한다. 이 글에선 Retrofit를 이용할 예정이다. (뭘 사용해도 상관 없다) 1. 의존성 추가 implementation 'com.squareup.retrofit2:retrofit:2.9.0' implementation 'com.squareup.retrofit2:converter-gson:2.9.0' impleme..

Android 2024.01.07

2023년 회고

2023년에서 저의 인생에 크게 영향을 줬던 일들을 연말 기념으로 되돌아 보는 글을 작성해보자 합니다. 1. SK Lookie 활동 (2023년 2월 ~ 2024년 1학기까지 예정) 사회 문제 해결 방안을 제시하는 비즈니스 모델 개발 연합 동아리인 SK Lookie 활동을 했었습니다. 이 동아리의 존재를 2022년에 동아리 친구로부터 처음 듣게 되었습니다. 당시만 하더라도 별 생각이 없었는데, 제 자신이 매너리즘에 빠진 것 같아 이를 타파하기 위해 지원을 했고 합격하여 활동을 진행하고 있습니다. 부경대학교 창업동아리, 하나 소셜 벤처 유니버시티, 학생 창업 유망팀 300과 루키 내에서도 좋은 성과를 얻어 나름 뜻 깊은 활동을 했던 것 같습니다. 다만, 개발 쪽 분야가 아니라 실제 제품을 개발하는 것을 주..

일상 2023.12.31

[안드로이드] 어노테이션(Annotation) 개념과 예시

어노테이션(Annotation) 자바, 코틀린에서 @을 이용하여 코드에 부가적인 정보를 부여하는 방법으로 컴파일러, 런타임 시스템등이 이를 사용할 수 있게 하는 정형화된 방법 보통 어노테이션과 주석을 비교를 많이 하는데, 주석은 어노테이션처럼 코드에 대한 정보를 나타내나 실제 프로그램에 영향이 없는 반면 어노테이션은 영향을 주는 특징이 있다. 이 글에선 Androidx 에서 지원하는 Annotation API가 기본적으로 제공하는 어노테이션에 대해 알아본다. 그러면 어노테이션을 사용해서 무엇을 얻고자 하는 걸까? 코드에 부가적인 정보를 부여하여 코드를 문서화시키고 컴파일러나 런타임에서 개발자가 원하는 추가적인 처리를 하기 위함이다. 그러면 이 추가적인 처리가 뭐가 있을까? 일반적으론 코드 검사를 하는데 ..

Android 2023.11.19

[안드로이드]RoomDB와 SQLite 비교

RoomDB와 SQLite 안드로이드에서 로컬 데이터베이스를 구현하는데 크게 두 가지 방식이 존재한다. RoomDB와 SQLite 이라고 할 순 있는데, 엄연히 말하면 안드로이드에서 자체적으로 SQLite가 내장되어 있고 이 SQLite를 개발자가 사용하기 쉽게 추상화 시켜준 것을 RoomDB라고 말한다. 따라서 RoomDB는 SQLite로 구성되어 있다고 볼 수 있다. 하지만 이 글에선 쉽게 차이를 설명하기 위해 SQLite를 RoomDB를 사용하지 않고 접근하는 방식(SQL Helper) 의미로 작성하였다. 그러면 SQLite가 뭘까?? 공식 홈페이지 에선 "SQLite는 작고 빠르며 자체 포함, 높은 신뢰성, 모든 기능이 구현된 SQL 데이터베이스 엔진을 실현하는 C 언어 라이브러리" 라고 말한다...

Android 2023.11.12

[안드로이드] 단위 테스트를 도와주는 JUnit 5

JUnit5 Java 언어로 작성된 자동화된 단위 테스트 프레임워크 테스트 케이스를 작성하기 쉽게 만들어주어 단위 테스트를 할 수 있도록 도와준다. 다만, 단위 테스트를 위한 프레임워크이기 때문에 주로 클래스, 메소드 등을 테스트할 때 사용한다. JUnit 은 생각보다 가까이 있었다. 일반적으로 안드로이드 스튜디오 또는 인텔리제이 코틀린 프로젝트를 생성하면 그림 1처럼 main 패키지 말고도 test 패키지가 생성된 것을 볼 수가 있다. 이 것이 IDE 자체에서 JUnit 5으로 테스트를 실행할 수 있는 test 전용 경로로 지정되어있다. 또한 build.gradle에선 이미 JUnit을 Implementation하고 있다. 보다싶이 이미 IDE에서 JUnit을 지원하고 있다. JUnit 5의 구조 먼저..

Android 2023.10.29

[안드로이드]Retrofit2 에 관하여

Retrofit2 sqaure 사에서 개발한 안드로이드 앱에서 웹 서버와 통신하기 위한 라이브러리 중 하나로, Http 요청을 쉽게 만들고 처리할 수 있게 해줍니다. 기존에 있던 OkHttp을 사용하는 라이브러리로 비슷한 기능을 하는 Volley와 비교해도 높은 성능을 가지고 있어 많이 사용됩니다. Retrofit2의 장점 1. 높은 성능 출처 : Speed Comparison of Retrofit and Volley. | Download Scientific Diagram (researchgate.net) 비슷한 역할을 하는 Volley와 쿼리 성능을 비교한 그래프입니다. 위 그래프를 보시면 데이터 수가 많아지면 많아질수록 차이가 현저히 발생한다는 것을 알 수가 있습니다. 2. 간편한 사용성 및 높은 가..

Android 2023.09.17

[안드로이드]페이징(Paging) - 1 (개념 위주)

페이징이란? 데이터를 일정한 크기로 나눠서 가져오는 걸 페이징이라고 합니다. 왜 나눠서 가져올까요? 이는 네트워크 대역폭과 리소스가 한정되어 있다는 현실적인 이유가 있기 때문입니다. 만약 여러분이 네이버와 같이 규모가 매우 큰 사이트를 운영한다고 생각해 봅시다. 사용자가 검색을 하게 되면 그에 대한 정보를 보여줘야 합니다. 근데 블로그, 뉴스 등 너무나도 많은 정보가 있습니다. 이를 검색하자마자 다 로딩을 시킨다면? 사용자는 검색 결과 화면을 못 볼 수도 있습니다. 그렇기 때문에 페이징이 필요합니다. 최소로 필요한 단위를 지정하고 그 정도만 데이터를 가져오고 사용자가 추가로 요청하게 되면 추가로 불러오는 겁니다. 페이징이 적용된 예시 중 대표적인 것이 바로 검색 시 맨 밑에 있는 페이지 버튼입니다. 안드..

Android 2023.09.10

[안드로이드] LiveData에 관하여

안드로이드 개발을 진행할 때 꼭 보게 되는 친구가 있습니다. 바로 LiveData 인데 보통 ViewModel에 LiveData를 저장한 뒤 데이터 바인딩을 사용해 UI와 결합시키고 그 값을 계속해서 Observe 하여 UI를 갱신합니다. 처음 LiveData를 접할 땐 그냥 좋으니까 쓰면 된다 이런 식으로 배워서 아무 생각없이 쓰고 있었습니다. 그러다가 문득 이 LiveData에 관해 궁금해져서 공부 겸 이 글을 쓰게 되었습니다. LiveData란? Android Jetpack 라이브러리의 일부로, 안드로이드 수명 주기를 관찰 가능한 데이터 홀더 클래스 라고 안드로이드 공식 문서에서 정의하고 있습니다. 클래스이긴 한데 관찰(Observe)을 한다는데 이게 뭔 말일까요?? 이걸 이해하기 위해선 옵저버(O..

Android 2023.08.24