반응형 프로그래밍304 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. .gitignore 파일 설정과 .idea파일 제거 - Git rm -cached 프로젝트를 checkout받고 IntelliJ에 open 하고 디버깅 실행을 하려고 하니 Gradle 버전 관련 설정을 맞추라고 오류가 뜬다. 뭔 말일까하고 한참을 들여다보고 설정을 하고 나서 제대로 서버가 구동이 되었다. 소스트리상에 커밋되지 않은 2개의 파일이 나타났는데. .idea/gradle.xml .idea/modules.xml .gitignore가 잘못 설정되어 초기에 push가 된 것 같다. .idea폴더는 사용자별 빌드 환경이 서로 다를 수 있어서 제외시켜서 초기 git설정을 했어야 했지만 그렇지 않은 듯했다. 나 역시 처음에는 개념을 이해하지 못해, 해당 파일을 delete시키고, 레파지토리를 다시 체크아웃하고 .gitignore에 해당 폴더(.idea)에 대한 설정을 추가하고 커밋한 다.. 2023. 1. 5. Android W/cr_AwContentsClient: Denied starting an intent without a user gesture, URI https://www.xxx.re.kr/sso/business 좀전에 포스팅 한 것으로 이슈가 해결된줄 알았지만, 그 이후 빌드를 했더니 이젠 또 새로운 메시지가 나를 반겨준다 ^______^;; 이건 또 뭘까? 스택오브플로에서 찾은 간단한 답. 앱이 심플하다하여, 기본적인 웹뷰 설정들이 누락되어 발생되는 문제들이다. 다음 코드를 추가하면 간단하게 해결된다. mWebview.setWebViewClient(new WebViewClient() { @Override public boolean shouldOverrideUrlLoading(WebView view, String url) { return false; } }); // 약식 mWebview.setWebViewClient(new WebViewClient()); 자바스크립트를 이용해 리다이렉션을 일으키는 것은 사용자 .. 2022. 12. 29. 이전 1 2 3 4 5 6 7 8 ··· 51 다음 반응형