분류 전체보기 59

연속된 버튼 클릭, api 요청 처리법

해당 기능이 필요하게 된 이유현재 개발중인 앱에서 회원가입 버튼을 연속으로 누르는 경우, 요청을 두번하게 된다. 이 문제를 해결하기 위해서는 이벤트 처리 시점에 추가적인 상태 관리 또는 조건 검사를 통해 중복된 이벤트의 실행을 방지하는 방법이 필요합니다.하지만 무조건 연속된 클릭을 막아야할까요? 제가 생각한 클릭의 종류는 3가지였습니다. 연속된 클릭을 허용하면 안되는 버튼, 연속된 클릭을 해도 상관없는 버튼, 연속된 클릭이 필요한 버튼입니다.이 부분 중 연속된 클릭을 허용하면 안되는 버튼의 예시로는 회원가입 버튼 등이 있습니다.생각한 버튼 연타 방지 기법Debounce 기법 사용:사용자의 입력에 대해 일정 시간 동안의 입력을 무시하고, 마지막 입력만 처리하는 방법입니다. 이를 통해 사용자..

질문 정리 2024.04.24

서버로 요청을 보내는 테스트 코드

API 테스트 코드를 작성하게 된 주요 이유 개발 도중 기획 변경으로 인해 API가 자주 수정되고 있습니다. API의 변경에 따라 안드로이드 코드도 연쇄적으로 수정해야 합니다. 서버의 소소한 변경사항에 대한 정보가 누락될 때가 있습니다. 서버가 재배포될 때마다 API 변경으로 인해 발생할 수 있는 오류를 확인하고자 합니다. 주요 JUnit 어노테이션 @Test: 이 어노테이션이 붙은 메소드는 JUnit에 의해 테스트로 인식되고 실행됩니다. @Before: 각 테스트 메소드가 실행되기 전에 실행되어야 할 코드를 포함하는 메소드에 이 어노테이션을 사용합니다. 예를 들어, 테스트에 필요한 객체를 초기화하거나 테스트 환경을 설정하는 데 사용됩니다. @After: 각 테스트 메소드의 실행이 끝난 후에 실행되어야 ..

질문 정리 2024.04.18

_username과 username 왜 나누는 것일까?(백킹 프로퍼티)

평소 프로젝트를 하며 다음과 같은 형식의 코드를 자주 사용했습니다. private var _username: String? = null var username: String? get() = _username set(value) { _username = value } private var _password: String? = null var password: String? get() = _password set(value) { _password = value } _username와 username를 나누어 사용하는 이유는 코틀린에서 일반적으로 사용되는 "백킹 프로퍼티(backing property)" 패턴 때문입니다. 캡슐화 강화: 내부적으로 사용되는 _username 필드는 비공개(private)로 설정..

질문 정리 2024.04.16

Retrofit의 Call과 Response 공부하기

Retrofit 요청 및 응답 타입 구미 인사이더를 개발할 때, 작성한 게시판 조회 코드 요청 및 응답 타입을 Custom해서 사용한 경우 fun getBoardDetail(boardNo: String) { showProgress() viewModelScope.launch { val response = repository.getBoardDetail(boardNo) val type = "게시판 상세조회에" when (response) { is NetworkResponse.Success -> { _boardDetail.postValue(response.body) _commentCount.postValue(response.body.comments) } is NetworkResponse.ApiError -> {..

질문 정리 2024.04.07

깔끔한 코드를 위해서 Ktlint 사용

원래는 안드로이드 스튜디오의 세팅에서 Actions on Save에 있는 자동 import와 format 기능을 사용하고 있었는데 자동 정렬 때문에 느려지는 느낌을 받았고, format의 경우 프로젝트 단위가 아니라 파일 단위로 되었기 때문에 klint를 사용해보려고합니다. https://github.com/JLLeitschuh/ktlint-gradle GitHub - JLLeitschuh/ktlint-gradle: A ktlint gradle plugin A ktlint gradle plugin. Contribute to JLLeitschuh/ktlint-gradle development by creating an account on GitHub. github.com Ktlint의 장점 코드 일관성: ..

질문 정리 2024.01.30

효율적인 로깅을 위한 LogUtils

안녕하세요. 오늘은 제가 사용하고 있는 LogUtils에 대해 이야기하고자 합니다. 이 object는 로그를 더 효율적으로 관리하고 디버깅을 용이하게 만들기 위해 정리했습니다. object LogUtils { private const val TAG = "five-two-weeks" private val isDebug = BuildConfig.DEBUG_MODE fun d(message: String, name : String = TAG) { if (isDebug) Log.d(name, createLogMessage(message)) } fun e(message: String, name : String = TAG) { if (isDebug) Log.e(name, createLogMessage(message..

질문 정리 2024.01.23

HTTP Content Type과 Retrofit

프로젝트를 새로 시작하게 되었는데, 서로 코드 리뷰를 하던 도중 오랜만에 application/json를 Content-Type으로 붙인 것을 발견하여 정리하게 되었습니다. Content-Type HTTP Content Type, 또는 MIME 타입은 HTTP 헤더에서 사용되는 문자열로, 통신하는 상대방에게 데이터의 형식을 알려주는 역할을 합니다. 안드로이드 개발을 막 시작했던 초반에는 해당 content-type을 항상 header에 붙였습니다. @Header("Content-Type") contentTypeHeader: String = "application/json" Retrofit을 사용하고 있다면, header에 "application/json"은 붙이지 않아도 됩니다. Retrofit.Buil..

질문 정리 2024.01.12

안드로이드 4대 컴포넌트 정리

면접 준비를 하며, 안드로이드 4대 컴포넌트에 대해서 복습했습니다. 액티비티 (Activity): 액티비티는 사용자 인터페이스(UI)와 상호작용하는 주요 화면 요소입니다. 사용자와 앱 사이의 상호작용을 처리하며, 버튼 클릭, 터치 이벤트, 메뉴 선택 등과 같은 사용자 입력을 처리합니다. 하나의 앱은 여러 개의 액티비티를 가질 수 있고, 각 액티비티는 화면 전환 및 탐색을 담당합니다. 안드로이드 앱이 반드시 하나 이상의 액티비티를 가져야 하는 것은 아닙니다. 액티비티는 안드로이드 앱에서 사용자 인터페이스(UI)를 표시하고 사용자와 상호작용하는 주요 컴포넌트 중 하나이지만, 모든 앱이 액티비티를 가져야 하는 것은 아닙니다. 서비스 (Service): 서비스는 백그라운드에서 실행되는 컴포넌트로, 사용자 인터페..

질문 정리 2023.09.27

신입 개발자 첫 기술 면접 회고록

이제 9기는 1학기가 끝나고 2학기 중 특화 프로젝트를 하고 있는 시기입니다. 공통 프로젝트할 때는 시간이 너무 촉박하고 개발하는 것 만으로 바빠서 회사에 서류를 넣지 못했습니다. 특화 프로젝트를 시작하니까 두번째라고 공통때보다는 덜 바빠서 대기업 공채에도 자소서를 적어서 넣고 스타트업들에도 서류를 넣었습니다. 스타트업에는 원티드를 통해서 지원했고, 두번째로 서류 합격한 회사에서 기술면접이 더 빨리 잡혀서 1차 기술 면접을 보게되었습니다. 제가 준비한 부분은 일주일 뒤에 면접이 잡히는 동안 한 준비는 아래와 같습니다. 면접 준비로 한 것 1. 회사조사 - 회사 규모와 투자 단계 - 개발팀 크기 - 시니어 개발자가 있는지 - 매출이 발생하는지, 사업 아이템이 뭔지 - 현재 운영중인 서비스 - 회사 연봉 및..

SSAFYcial 2023.09.27

싸피 9기 2학기 공통 프로젝트 후기 - 우수상

공통 프로젝트가 끝나고 특화 프로젝트가 시작하는 단계에서, 공통 프로젝트에서 맡은 역할, 배운 점들을 정리하려고합니다. 프로젝트 개요 및 결과 서비스명 : 폰고지신 서비스 개요 : 갤럭시 휴대폰 업사이클링 프로젝트 기간 : 23.07.10 ~ 23.08. 프로젝트 인원 : 6명(백엔드 3명, 안드로이드 3명) 결과 : 프로젝트 반 2등 수상 아이디어 기획 팀원들끼리 아이디어를 많이 준비해왔고, 컨설턴트님에게도 이 조는 아이디어들이 괜찮다는 칭찬을 받았다. 컨설턴트님이 1차적으로 걸러주신 아이디어들을 바탕으로, 내부적으로 회의 끝에 휴대폰 업사이클링을 채택하게 되었습니다. 개발하고 싶은 프로젝트를 진행하는 것이 팀적으로 더 효율이 좋다고 생각했기 때문에, 아이디어 기획과 피그마 작업에 시간을 많이 투자한 ..

SSAFYcial 2023.08.28