본문 바로가기

개발 관련78

클래스 vs 인스턴스 클래스 vs 인스턴스 정말 흔하게 쓰는 단어이고, 사용도 할 줄 알지만 항상 그렇듯, 남에게 제대로 설명하지 못하면 결국은 도루묵이기에.. 이번 기회에 간단하게나마 정리해보고자 한다. 1. 클래스 클래스는 데이터와 로직을 묶어서 누구나 동일한 기능을 사용할 수 있게 하고, 누구나 필요한 자기만의 데이터를 보관하기 위해서 스펙을 결정해둔 것을 의미. 예를 들어 MP3 라면 곡 데이터는 전부 다르지만, 음악 감상 기능은 모든 MP3 가 동일한 기능이 지원되는 것 여기서 데이터는 변수, 로직은 메소드가 되겠다. 클래스는 연관되어 있는 변수와 메소드의 집합이다. 2. 인스턴스 클래스라는 일종의 설계도를 통해 제품을 만드는데, 이 제품을 인스턴스라고 한다. 예를 들면 MP3 myMp3 = new MP3(); 에서.. 2022. 7. 14.
Apache mod_proxy 문제 문제 아파치 프록시를 설정할 일이 생겨서 conf 파일에 아래와 같이 location 설정을 추가 해줬으나 ServerName www.api.com //... ProxyPass http://112.13.14.15/event/ ttl=30 ProxyPassReverse http://112.13.14.15/event/ ProxyPreserveHost On 서버에서 500 에러가 발생, 프록시가 된 프로젝트를 직접 호출, 프록시하는 프로젝트의 다른 경로는 호출해도 문제가 없는 상황. 게다가 다른 에러가 아닌 500 서버 에러가 난다는 점이 이상했다. 전혀 갈피를 못 찾다가 아파치 access.log 를 확인해보라는 말에 확인해보니 No protocol handler was valid for the URL /e.. 2022. 7. 14.
테스트 환경에서 JPA update 안됨 expect JPA 를 사용하여 entity 를 변경했을 시 update 가 되야하지만, 테스트 코드에서 동작하지 않음. situation Repository 를 상속한 곳에서 flush 메소드를 만든 후 호출 -> 반응 없음 (sql log 에 update 가 출력 안됨) EntityManager 를 직접 호출하여 flush 수행 -> No EntityManager with actual transaction available for current thread - cannot reliably process 'flush' call PersistenceContext 어노테이션 추가 @PersistenceContext(type = PersistenceContextType.EXTENDED) // .. 2022. 7. 14.
HTTP 메시지 최근에 REST api 에 대해서 공부했었는데, 마침 새로운 기능을 만들 일이 있어서 해당 기능에 REST 를 적용해서 만드려고 하고 있습니다. 그런데 이전 코드에서는 HTTP 메소드를 GET,POST 구분없이 사용하고 있었기에 (조회를 할 때, POST 에 파라미터를 사용해서 한다거나 하는 형식), 클라이언트 개발자분이랑 맞추면서 하는데, 서로 기본적이라고 생각하는 부분이 다르기에 이해시켜주는데 에를 먹었던 기억이 있습니다. (헤더의 Content-Type 이라던가, Accept-Type 등) 얘기를 하면서, 내가 어느 정도 알아도, 설명을 하는 것은 또 별개의 영역이라는 느낌이 들더군요. (물론 잘 알면, 설명도 잘 하겠지만요..) 막연하게 당연히 그런거 아니야? 라고 생각할 만한 HTTP 헤더와 상.. 2022. 7. 14.
1. HTTP 개관 1. HTTP HTTP 는 신뢰성 있는 데이터 전송 프로토콜을 사용한다. 따라서 전송 중 데이터가 손상되거나 꼬이지 않음을 보장한다. 개발자는 인터넷의 결함이나 약점에 대한 걱정 없이 애플리케이션 고유의 기능을 구현하는 데 집중할 수 있다. 2. 웹 클라이언트와 서버 웹 서버 : HTTP 프로토콜로 의사소통하기 때문에 보통 HTTP 서버라고 불리며, 웹 콘텐츠는 이 웹 서버에 존재한다. 인터넷의 데이터를 저장하고, HTTP 클라이언트가 요청한 데이터를 제공한다. HTTP 클라이언트와 함께 월드 와이드 웹 (WWW) 의 기본 요소 웹 클라이언트 가장 흔한 클라이언트는 인터넷 익스플로러, 크롬 등의 웹 브라우저 서버에게 HTTP 객체를 요청하고 사용자의 화면에 보여줌 3. 리소스 웹 서버는 웹 리소스를 관리.. 2022. 7. 14.
REST (2) 지난 포스팅 에서는 REST 의 개요와 로이 필딩이 말하는 6가지 제약사항 그리고, 리처드슨 성숙도라는 것에 대해서 알아봤습니다. 개념 위주로 알아갔는데요. 이번에는 약간(?) 실전 위주로 어떤 것들이 있는지 알아보려고 합니다. 1. REST 형 API 디자인 1. 리소스 명명 REST형 API는 사용하는 클라이언트 입장에서 봤을 때 의미가 분명해야 합니다. 리소스를 어떤 명사로 할 때엔 데이터 구조가 어떻게 생겼는지, 클라이언트가 어떤 식으로 사용할 가능성이 클지 미리 파악을 해야 합니다. (설계를 잘 해야겠죠..?) 2. 동사가 아닌 명사로 리소스명은 동사가 아니라 명사로 시작하며, 리소스는 리소스를 해야할 일은 HTTP 메소드를 통해 표현합니다. ex) 전체 사용자를 의미하는 명사 users 와 사.. 2022. 7. 14.