프로그래밍/개발 썸네일형 리스트형 spring에서 api 요청하기 현재 개발하는 프로젝트에서 지도 api를 사용하게 될일이 생겼다. 정확히는 출발지와 목적지가 주어졌을때, 얼마나 걸리는지를 계산해서 거리와 시간을 가지고 비용 측정 및 차량을 추천해줘야 하는 상황이다. 우선, 이런저런 리서치를 해봤는데 spring에서 api를 요청할 일이 거의 없었나 자료들이 많지는 않았다. front에서 요청하듯이 하면 되겠지? 라는 생각 정도 였다. https://github.com/googlemaps/google-maps-services-java GitHub - googlemaps/google-maps-services-java: Java client library for Google Maps API Web Services Java client library for Google Ma.. 자바의 이모저모 : static, final, 그리고 캐스팅 public class PostRepository { private static final Logger logger = LoggerFactory.getLogger(PostRepository.class); } 자바를 다루다 보면 위와 같은 변수선언들을 정말 자주 볼수 있다. 심지어 static final을 사용하지않으면 intellij에서 사용하라고 권장하기도 한다. 지금까지는 순순히 하라는대로 했지만 이제는 왜 그렇게 해야되는지를 알아보려고한다. public class PostRepository { private Logger logger = LoggerFactory.getLogger(PostRepository.class); } 아래와 같은 코드도 역시 가능하다. 그리고 C, C++을 사용할때는 이러한 경.. IO와 NIO WAS개발 중에 있었던 요구사항 중 하나이다. 만약 java.nio를 사용하고 있었다면 java.io를 사용하도록 수정한다. 이 요구사항을 봤을때 처음 드는 생각은 내가 io를 어디에서 쓰고 nio를 어디서 쓰지? 였고 그리고 굳이 왜? 라는 생각이 들었다. 그렇다면 io, nio가 무엇인지 먼저 살펴 보도록 하자. io는 input/ output의 줄인말이고 chatgpt선생님의 말을 참고하자면 I/O(Input/Output)와 NIO(New I/O)는 Java에서 데이터를 읽고 쓰는 방법을 개선하기 위해 도입된 두 가지 접근 방식입니다. I/O (기존의 전통적인 입출력 방식): 입출력 작업은 스트림(Stream)을 통해 이루어집니다. 입력 스트림(Input Stream)은 데이터를 읽고, 출력 스트림.. 나의 WAS 변경점, 한계 그리고 개선사항 지난 내용은 여기와 같다. https://b1ackhand.tistory.com/262 이후에 나의 WAS를 어떻게 발전시켰고 어떤 문제점을 마주했는지 기록해보려고한다. 발전사항 및 변경점 나의 구조를 요약하자면 Request에서 api 처리를 Response에서 정적인 컨텐츠를 반환한다. 그림으로 보면 위와 같다. 다음으로 구현해야 될 내용은 Post요청 -> Session 로그인 -> 동적인 HTML -> 게시판 처리 이와 같다. 먼저 Post요청을 처리하기 위해 Request에 Body Parser라는 클래스를 만들어줬다. Post요청에서 지금은 post request x-www-form-urlencoded 형태로 들어오지만 다른 스프링 프로젝트를 해보면 json형태로 오거나 다양한 형태로 오기 때.. MVC패턴 왜 쓸까요 네.. 사실 저도 잘 모릅니다. Spring 하면서 MVC패턴 학습이 딸려오는데, WAS제작 하면서 그룹회고를 했을때 많은 팀원들이 MVC패턴을 따라가는 것을 보았고 더 알아보고자 정리 해보게 되었습니다. MVC 의미 Model : 데이터와 비즈니스 로직관리 View : 레이아웃과 화면 처리 Controller : 모델과 뷰로 명령을 전달 MVC패턴은 디자인 패턴중 하나로 비즈니스로직과 화면을 구분하는데 중점을 두고 있다. 사용자가 Controller에 요청을보내면 Model에서 처리를 하고 View를 반환한다. 왜 스프링이 MVC 패턴인지를 알기 위해서는 스프링에대해서 더 이해해야할 것 같다. MVC 패턴 에서도 구조가 여러가지 있고 그중에서도 Spring 구조 에 관해서 유명한 위의 그림이 있다. 각.. if문을 줄이는 방향에 대한 고찰 WAS를 이어서 개발중에 response 반환형을 index.html에서 json등으로 확장하기위해서 hashmap 형태를 byte[]로 변환했고 이 과정에서 각기 다른 html, css, js를 if 문으로 casework하기에는 가독성이 너무 떨어지기 때문에 어떻게 처리해야될까 고민하게 되었다. if(MIME == HTML){ // } else if(MIME == CSS){ // } 이런형태가 되지 않을까 싶다. MIME타입의 경우에는 개수가 정해져있어서 switch문등으로 처리해 줄 수 있지 않을까 싶지만 비슷한 다른 상황에 확장가능성까지 고려한다면 어떻게 해야할까? 예전에도 비슷한 상황이 카카오테크캠퍼스 최종프로젝트 때 있었다. 당시에는 gpt한테 물어볼 생각을 못해서 멘토님께 물어봤는데 친절하게.. 자바의 멀티스레드 WAS구현 중 첫번쨰 요구사항 중 하나가 Java Thread기반으로 작성되어 있는 현재 프로젝트를 Concurrent패키지를 사용하도록 변경하라는 것이었다. 멀티 쓰레드 프로그래밍도 운영체제 시간 과제로 한번 써본거 외에는 사용해본적이없고 해당 요구사항 중 스레드 모델과 버전별 변경점에 대해 학습하라는 내용이 있어 공부해보게 되었다. 우선 Concurrent패키지가 무엇인지 먼저알아보자. https://docs.oracle.com/javase/8/docs/api/java/util/concurrent/package-summary.html java.util.concurrent (Java Platform SE 8 ) Class Summary Class Description AbstractExecutorSer.. HTTP Response, Request에 관하여 HTTP는 HTML 문서와 같은 리소스들을 가져올 수 있도록 해주는 프로토콜이다. 정말 자세한 내용은 https://www3.ntu.edu.sg/home/ehchua/programming/webprogramming/HTTP_Basics.html In Introduction to HTTP Basics HTTP (HyperText Transfer Protocol) Basics Introduction The WEB Internet (or The Web) is a massive distributed client/server information system as depicted in the following diagram. Many applications are running concurrently over t.. 이전 1 2 3 4 5 다음