J2EE 엔터프라이즈 급 환경에서 요구하는 분산 객체, 효율적 자원 관리, 컴포넌트 기반 개발 등을 자바 환경에서 제공할 수 있도록 하는 표준 규약 구성 요소 EJB Servelt/JSP JDBC JNDI JavaMail JMS JTA JAF RMI-IIOP JavaIDL 컨테이너 Servlet 동적 웹페이지를 생성하는 데 사용되는 Java 클래스 쓰레드 기반으로 다수의 사용자를 받아도 응답 속도가 빠르다. JSP Java Server Page의 약자. Java 기반 서버에서 실행되는 스크립트 언어 방식으로 동적 웹 페이지를 작성 Servlet으로 변환되어 서비스된다 장점 Servlet보다 쉽고 빠르게 웹 응용 프로그램을 작성할 수 있다. presentation을 위한 html 코드와 비즈니스 로직을 위..
처음에 악센트 없는 영어 문자로 127 가지 문자를 정했다. 이는 7bits에 저장할 수 있으며 이를 ASCII라고 불렀다. 그러나 그 이외의 문자들(여러 언어, 기호, 그림용 문자)를 128 - 255 에 각각 정하기 시작했다. 이렇게 다른 시스템들을 code page라고 한다. 더군다나 아시아의 알파벳은 천 개가 넘는다. byte를 string으로 바꾸는 건 쉽지만 반대로 하는 건 엄청 복잡한 일이었다. ASCII Unix가 만들어진 시기에 문자는 오로지 영어와 숫자뿐이었다. 이를 숫자 32부터 127까지 매긴 후 ASCII라고 한다. 이 문자들은 7bits 을 이용해 저장할 수 있었고, 1byte가 8 bit인 컴퓨터를 썼으므로 잉여 1 bit가 남게 되었다. 이 비트를 사람들은 각자의 목적으로 사..
😱 문제 db에서 테스트용\\n메인배너 를 읽어서 API response 로 보내면 \\n 가 \\\\n 로 변경되어 앱에서 \\n 문자 그대로 보여짐 🤔 원인 자바 로직 내에서는 계속 \\n 로 되어 있었는데, controller 메서드에서 값을 반환하고 response로 받아보면 \\\\n 로 확인되었다 string 을 byte 로 변환하여 확인해보니 ‘\n’ 인 10번 아스키가 아니라, ‘\’ 와 ‘n’가 붙어 있는 문자열이었다! JSON으로 변환 중 \\가 별도의 문자로 인식되어 한 번 더 인코딩되어 발생한 문제였음 해결 s.replaceAll("\\\\n", System.lineSeparator()); // 다른 방법. StringEscapeUtil 사용 StringEscapeUtil.unesc..

다음은 https://tv.naver.com/v/2292653 강의를 보고 정리한 글입니다. REST API를 지키려면 self-descriptive 메세지만 보고도 해석이 가능해야 커뮤니케이션이 확장 가능해진다. HATEOAS 메세지에 해당 리소스와 관련된 링크들이 있으면 관련 정보 없이 다른 상태로 전이가 가능해진다. 동적으로 상태 변경 가능 를 지켜야 한다 나머지는 HTTP를 지키면 자동으로 지켜진다. 시스템 전체(서버와 클라이언트. 제공자와 사용자)를 통제 가능하다면 REST를 고려하지 않아도 됨
7가지 메서드 GET 리소스 조회에 사용 idempotent (멱등성) 여러 번의 연산에도 결과값이 바뀌지 않는다는 점 프록시가 존재한다면 웹 캐시로 보낼 수도 있다 HEAD GET 과 같지만, 응답으로 본문은 보내지않고 헤더만 보낸다 PUT 서버에 이미 있는 리소스에 데이터를 보낸다. 서버에 없더라도 새로 생성한다 idempotent (멱등성) POST 와 달리 리소스가 존재하면 데이터를 덮기 때문에 여러 번 연산을 해도 결과값이 같다 POST 서버에 데이터를 보내기 위해 사용된다 non-idempotent (비멱등성) 프록시가 존재해도 서버로 bypass한다 TRACE 클라이언트의 요청이 어떤 경로를 거쳐서 목적 서버에 도달했다가 다시 오는지에 대한 정보를 담고 있다. 주로 진단을 위해 사용한다. 단..

웹소켓(WebSocket)은 하나의 TCP 접속에 duplex 통신 가능한 프로토콜 OSI 7계층, TCP 4계층에 위치한다. HTTP와 구별된다. 기본적인 메세지 프레임으로 된 handshake로 구성된다 웹소켓의 목적은 여러 번의 HTTP 커넥션으로 동작하지 않는 서버와의 양방향 통신이 필요한 브라우저 기반의 애플리케이션에게 메커니즘을 제공하기 위함이다. 탄생 배경 기존에 클라이언트와 서버 간의 양방향 통신이 필요한 웹 어플리케이션(즉각적인 메세지나 게임)을 만드려면 upstream 알림을 별개의 HTTP 호출로 전송하는 동안 업데이트를 위해 서버를 폴링하는 HTTP를 남용해야 했다. 즉 요청과 별개로 애플리케이션 상태 갱신을 위해 서버를 폴링하며 HTTP를 남용했다. 이로 인해 여러 문제가 발생한다..
서비스의 사용자들을 각 서비스에서 인증하는 것이 아니라 별도의 서버에서 하게 하려고 만든 것이 OAuth 서버이다. OAuth 서버에서 '인증'을 담당함으로써 인증에 대한 일은 이 서버에 위임하게 된다. 따라서 구글, 페이스북, 애플 등에서 제공하는 통합 로그인도 가능하다. 즉 사용자의 비밀번호를 요구하지 않고도 다른 사이트나 어플리케이션에서 해당 계정을 통해 접근이 가능해진다. 토큰만 제공받으면 인증되었다는 것으로 알고 진행하게 된다. 토큰은 만료되기 전까지 사용가능하며 아이디, 비밀번호를 직접 교환하지 않아도 되어서 신뢰하지 않는 서비스에 사용하기 좋다. 인증 서버가 토큰을 발급해주기 전에 진행되는 과정을 Authorization Grant라고 한다. 이 인가 코드 방식에는 4가지가 있다. 1. 인가..
1. Web Storage API 2. Cache Storage API 3. Indexed DB It can have large amount of data 4. Session Storage SessionStorage is tab specific, and scoped to the lifetime of the tab. It may be useful for storing small amounts of session specific information, for example an IndexedDB key. It should be used with caution because it is synchronous and will block the main thread. It is limited to about 5MB..
웹 브라우저의 요소를 간략하게 설명하자면 DOM(Document Object Model)과 CSSOM(Cascading Style Sheets Object Model)로 나뉜다. DOM은 동적으로 바뀔 수 있는 모델이다. 웹 브라우저가 html 을 검사하면서 유효한 html만을 DOM으로 구성한다. 또한 js단에서 DOM에 접근하여 수정할 수 있다. 눈에 보이는 모델을 의미하는 것이 아니기 때문에 예를 들어 속성에 display: none 이라는 값이 들어가 있으면 DOM에는 존재하나, 사용자에게는 보여지지 않는다. 그에 반해 CSSOM은 렌더링되는 모델로, 사용자에게 보여지는 모델이다. 따라서 js단에서 수정할 수 없고 CSS 가상 요소가 포함된다.
- Total
- Today
- Yesterday
- point
- ASCII
- gitignore
- querydsl
- Git
- 이펙티브자바
- effective-java
- 실용주의
- SQL 전문가 가이드
- sort algorithm
- Encoding
- Generic
- TroubleShooting
- Lombok
- annotation
- ruby
- 코테 log
- DesignSystem
- 이벤트스토밍
- IntelliJ
- fetchResults
- 사고..
- aws
- SHA
- WebClient
- Java
- Spring-Boot
- 메모리 릭
- ActiveAdmin
- 암호화
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
31 |