본문 바로가기
728x90
반응형

전체 글48

[안드로이드] 웹뷰(Webview)에서 캐시 컨트롤(feat. 웹 버전) 서론 프로젝트에서 웹뷰를 활용하여 네이티브 앱을 제작하고 있다. 그 중 안드로이드를 주로 담당하고 있는데, 안드로이드 네이티브 앱은 업데이트 없이 웹 상에서 업데이트가 일어날 경우, 기존에 남아있던 캐시들로 인해 업데이트 반영이 안되어 오류가 발생하는 문제가 있었다. 이를 해결하기 위해 백엔드 상에서는 웹 업데이트 시 버전을 올리고 이를 API로 호출하여 확인할 수 있도록 작업하고 앱에서 별도의 캐시 컨트롤을 해야했다. 본론 목표는 다음과 같다. 웹뷰를 로드하기 전에 기존 앱이 가지고 있던 웹 버전과 로드될 웹 버전을 비교한다. 필요하면 캐시를 삭제한다. 이 목표를 달성하기 위해서는 다음과 같은 작업을 진행해야 한다. 최초 실행 시 웹 버전을 SharedPreference에 저장한다. 실행할 때마다 Sh.. 2023. 5. 1.
[스프링부트] 코드 실행 시간 측정 서론프로젝트를 진행하면서 이중 for문을 사용하는 코드를 짜는 스스로가 너무 싫어서 코드 실행 시간을 확인해볼 필요성을 느꼈다. 본론두 가지 방법이 있다는 걸 확인했다. 첫 번째는 자바를 배울 때 사용해서 기존에 알고 있던 방법이었다.long startTime = System.currentTimeMillis();// 실행 코드long stopTime = System.currentTimeMillis();System.out.println("코드 실행 시간: " + (stopTime - startTime)); 두번째는 스프링에서 제공하는 stopwatch 방법이다.StopWatch stopWatch = new StopWatch();stopWatch.start();// 실행 코드stopWatch.stop();S.. 2023. 3. 27.
[이슈] 스프링부트 Optional orElse() vs orElseThrow() 상황 java.util.NoSuchElementException: No value present 원인 // A Service Optional a = bService.getA(id); if(a.isPresent()){ do(a.get()); } // B Service public Optional getA(int id){ C c = bRepository.findById(id).orElseThrow(); // Exception 발생 원인 return Optional.ofNullable(c.getA()); } 해결 Optional의 orElse()를 사용해야하는 상황에 orElseThrow()를 사용한 것이 문제였다. orElseThrow()는 '내가 예외 처리를 하겠다'의 의미인데, 별도의 예외 처리를 하지 .. 2023. 3. 26.
[타입스크립트] 타입스크립트의 타입, 클래스와 인터페이스 타입스크립트의 타입 any 타입 동적 타입 컴파일러가 타입을 확인하지 않음 → 사실상 타입이 없음 unknown 타입 unknown으로 타입을 선언하면 해당 변수에 모든 타입의 값을 설정할 수 있고 다른 어떤 타입으로 변경될 수도 있다 any 타입과는 다르게 먼저 변수의 유형이 무엇인지 확인하는 과정을 거쳐야 변수의 멤버를 호출하거나 다른 변수의 값으로 설정할 수 있다 인터섹션 타입과 유니온 타입 인터섹션 타입: 최종 객체가 여러 속성을 갖는 것 let obj: {name: string} & {age: number} = { name: 'tom', age: 25 } 유니온 타입: 최종적으로 하나의 타입을 갖는 것. 아래 예제에서 unionObj는 null 이거나 {name: string} 타입이 된다 le.. 2022. 12. 20.
HTTP 완벽 가이드: 3장 HTTP 메시지 메시지 문법 - 요청 메시지의 형식 - 응답 메시지의 형식 - 메서드: 클라이언트 측에서 서버가 리소스에 대해 수행해주길 바라는 동작 메서드 설명 메시지 본문이 있는지 여부 GET 서버에서 어떤 문서를 가져옴 없음 HEAD 서버에서 어떤 문서에 대해 헤더만 가져옴 없음 POST 서버가 처리해야 할 데이터를 보냄 있음 PUT 서버에 요청 메시지의 본문을 저장 있음 TRACE 메시지가 프락시를 거쳐 서버에 도달하는 과정을 추적 없음 OPTIONS 서버가 어떤 메서드를 수행할 수 있는지 확인 없음 DELETE 서버에서 문서를 제거 없음 - 요청 URL: 요청 대상이 되는 리소스를 지칭하는 완전한 URL 혹은 URL의 경로 구성요소 - 버전: 이 메시지에서 사용 중인 HTTP의 버전 - 상태 코드: 요청 중에 .. 2022. 12. 12.
HTTP 완벽 가이드: 2장 URL과 리소스 URL 문법 - ://:@:/;?# 컴포넌트 설명 기본값 스킴 리소스를 가져오려면 어떤 프로토콜을 사용하여 서버에 접근해야하는지 가리킴 없음 사용자 이름 몇몇 스킴은 리소스에 접근을 하기 위해 사용자 이름을 필요로 함 anonymous 비밀번호 사용자의 비밀번호를 가리키며, 사용자 이름에 콜론으로 이어서 기술 호스트 리소스를 호스팅하는 서버의 호스트 명이나 IP 주소 없음 포트 리소스를 호스팅하는 서버가 열어놓은 포트번호 스킴에 따라 다름 경로 이전 컴포넌트와 슬래시로 구분. 서버 내 리소스가 서버 어디에 있는 지를 가리킴 없음 파라미터 특정 스킴들에서 입력 파라미터를 기술하는 용도로 사용 파라미터는 이름/값을 쌍으로 가짐 다른 파라미터나 경로의 일부와 세미콜론으로 구분하여 기술 없음 질의 스킴에서 애플.. 2022. 12. 12.
728x90
반응형