본문 바로가기
반응형

프로그래밍300

[Android Kotlin] 네트워크 상태 체크 오늘은 지난번 포스팅에 이어, 네트워크 상태가 정상일 때 RestAPI를 호출하도록 하기 위해 시점에 네트워크 상태를 체크하고 결과에 따라 통신을 시도하도록 한다. https://effectivecode.tistory.com/1678 [Android Kotlin] RestAPI with Retrofit2 어제, 오늘 양일간 나름 빠듯하게 안드로이드 앱 프로젝트를 진행했다. 이 앱은 하이브리드 앱이라 네이티브 영역은 정말 0.5%정도 밖에 안된다. 나머지는 모두 웹에서 VueJs로 개발되어졌다. 현업 effectivecode.tistory.com 먼저 네트워크 상태를 체크하려면 퍼미션을 획득해야 한다. 다음은 network 페키지 하나 만들고 그 안에 NetworkManager라는 클래스를 하나 만들었다... 2023. 3. 24.
[Android Kotlin] RestAPI with Retrofit2 어제, 오늘 양일간 나름 빠듯하게 안드로이드 앱 프로젝트를 진행했다. 이 앱은 하이브리드 앱이라 네이티브 영역은 정말 0.5%정도 밖에 안된다. 나머지는 모두 웹에서 VueJs로 개발되어졌다. 현업 요청으로 앱 버전 업데이트 정책을 고민해서 기능을 구현해달라는 요건이 있었으며, 웹페이지에서 입력한 아이디와 비밀번호를 기억할 수 있게 해 달라고 했다. 하여, 진행된 개발업무는 다음과 같다. 앱버전 체크 API연동을 위한 리소스 및 환경 구성 네트워크 상태 체크 웹뷰 브릿지 구성 추가와 WebToApp, AppToWeb Interface개발 테스트 오늘은 아무것도 없는 안드로이드 코틀린 앱 프로젝트에서 RestAPI와 통신하기 위해 Retrofit2를 이용하는 방법을 정리한다. 우선 AndroidManife.. 2023. 3. 22.
Xcode UnitTest 'No such module '모듈명' 오류 대처 방안 새삼스럽게도 이제와서 Unit Test란걸 해본다. TDD에 대해서는 익히 들어서 알고는 있지만, 막상 프로젝트를 진행하는 시점에서는 잘 사용하지 않았다. 그도 그럴 것이 한시적인 SI프로젝트에서 TDD 까지하면서 개발하는 사람을 본 적이 없다. 그런데 왜 하려고 하냐? 여러 개발 패턴을 적용하는 주요 목적이 코드 재사용성, 손쉬운 테스트, 결합도를 낮출 수 있다는 목적을 가지고 있기에 MVVP, MVP를 적용하고 각 모듈에 대한 검증(테스트)를 진행해보고자 XCTest를 돌려보려고 하는데 처음부터 난관에 부딪혔다. 프로젝트의 프로덕트명을 변경했더니 제목과 같은 오류가 발생되었다. 방안) 프로젝트의 Build Setting > Product Module Name란을 검색해서 찾아보면 나오는 이름으로 임포.. 2023. 3. 17.
MySQL 백업과 복원 명령어 최근 spring boot 프로젝트에서 MySQL을 사용하고 있는데 운영서버와 개발서버간의 데이터 동기화를 위해 자주 사용하는 명령어들이다. 정리 해두면 좋은 명령어. 백업하는 명령어 > mysqldump -u root -p [backup target database name] > [backup filename.sql] 백업된 파일로 복원하는 명령어. > myql -u root -p [복원하려는 database name] < [백업했던 파일명].sql 각, 백업과 복원 명령어가 조금 다르다. mysqldump의 경우 백업하는 MySQL버전과 복원하려는 MySQL버전이 서로 다르면 오류가 날 수 있다. mysqldump관련해서는 별도로 버전 및 오류에 대해 준비를 하는 것이 좋다. 2023. 2. 22.
Java/Spring 클라이언트 IP 구하는 함수 아련하지만, 몇 년 전 스프링부트 프로젝트를 할 때 신입사원이 아이피를 구해 테이블에 저장한 것을 보고 이상하다며 이의를 제기했던 일이 생각났다. 오늘 프로젝트 검색 API를 외부에 열어주어야 하는데, 원격 호출하는 IP에 대해서 예외처리를 하고자 클라이언트 IP를 구하는 함수를 보면서 정리해두면 좋겠다는 생각이 들어 간단하게 요약, 정리를 한다. public static String getClientIP(HttpServletRequest request) { String ip = request.getHeader("X-Forwarded-For"); if (ip == null) { ip = request.getHeader("Proxy-Client-IP"); } if (ip == null) { ip = req.. 2023. 2. 9.
Java Long 타입의 비교 에피소드? Long타입의 변수가 2개 있다. 두 값을 비교해서 같을 때 데이터베이스의 특정 컬럼의 값을 업데이트 하는 로직이다. 아주 간단한 작업이다. 로컬에서 테스트할 때 로컬 데이터베이스에 있는 Row를 가지고 테스트했을 때는 잘 되었다. 분명 값이 변경되는걸 확인했고 스웨그로 몇 번을 테스트했다. 그리고 개발 서버에 배포를 하고 프론트 개발자분들에게 API가 개발되었다고 이야기했다. 퇴근길에 안된다는 메일을 받았고 온통 왜지? 라는 물음을 가지고 있었다. 출근을 해서 소스를 열어보고 테스트를 진행했다. 클라이언트에서 테스트한 Long형 값을 가지고 개발 데이터베이스와 연결했는데, 정말 변경이 일어나지 않는다. 뭔 일이지? 하는 마음에 혹시 비교가 잘못되나 싶어 if문에 log를 남겨보았다. 역시나 서로 다르다.. 2023. 2. 2.
반응형