Dev 226

[ JAVA ] 스트림이란? ( 바이트 기반 스트림 , 문자 기반 스트림 )

스트림(Stream)에 대해서 파헤쳐보자. [ JAVA ] 문자 인코딩(Character Encoding)이란? 인간과 컴퓨터가 대화하려면 어떻게 할까? 인간의 언어는 문자, 이미지, 동영상, 소리 등이 있다. 그러나 컴퓨터는 1과 0밖에 모른다. 그러므로 우리는 문자, 이미지, 동영상, 소리를 1과 0에 대응 lordofkangs.tistory.com [ JAVA ] JVM이 문자열을 UTF-16 방식으로 저장하는 이유 포스팅 전 이 글은 아래 사이트 글을 토대로 한 저의 추측임을 알립니다. Why Java char uses UTF-16? Recently I read lots of things about Unicode code points and how they evolved over time and ..

Dev/JAVA 2021.07.08

[ JAVA ] JVM이 문자열을 UTF-16 방식으로 저장하는 이유

포스팅 전 이 글은 아래 사이트 글을 토대로 한 저의 추측임을 알립니다. Why Java char uses UTF-16? Recently I read lots of things about Unicode code points and how they evolved over time and sure I read http://www.joelonsoftware.com/articles/Unicode.html this also. But something I couldn't find... stackoverflow.com 윈도우는 기본적으로 MS사가 자체 개발한 EUC-KR의 확장형인 MS949 인코딩 방식을 사용한다. 그래서 윈도우 OS에 설치된 이클립스는 파일 인코딩 방식이 디폴트로 MS949가 지정되어 있다. ( ..

Dev/JAVA 2021.07.06

[ JAVA ] 문자 인코딩(Character Encoding)이란?

인간과 컴퓨터가 대화하려면 어떻게 할까? 인간의 언어는 문자, 이미지, 동영상, 소리 등이 있다. 그러나 컴퓨터는 1과 0밖에 모른다. 그러므로 우리는 문자, 이미지, 동영상, 소리를 1과 0에 대응하여 표현해야 한다. 문자표(Character Set) 특히 문자를 1과 0으로 표현하려면 문자표가 있어야 한다. 대표적인 문자표는 '아스키 코드표'가 있다. 아스키 코드표는 7bit가 만들어 낼 수 있는 이진수 조합을 문자와 대응한 표이다. 총 128가지 표현 가능하다. 하지만 128가지는 영어 알파벳 표현에는 문제 없지만 세계 각국의 문자 표현은 불가능하다. 그래서 탄생한 것이 16bit를 활용한 유니코드이다. 유니코드는 16bit이기에 216가지, 즉 65536가지 문자 표현이 가능하다. 16비트 고정폭..

Dev/JAVA 2021.07.05

[ JAVA ] 바이트 스트림 vs 문자 스트림

[ JAVA ] InputStream, OutputStream 프로그램 실행은 보조기억장치(Disk)에 저장된 프로그램이 RAM에 할당됨을 의미한다. 이때 할당된 RAM 영역을 System(시스템)이라 부른다. 시스템은 안팎으로 상호작용한다. 밖에서 들어오는 데이터 lordofkangs.tistory.com 지난 포스팅에서 스트림(Stream)에 대해서 알아보았다. 스트림(Stream)은 프로그램 안팎으로 들어오거나 나가는 바이트 흐름을 의미한다. 바이트 스트림 vs 문자 스트림 기본적으로 스트림에는 두 가지 종류가 있다. 1. 바이트 스트림 2. 문자 스트림 '바이트 스트림'은 데이터를 1byte 단위로 읽는다. 반면에 '문자 스트림'은 2byte 단위로 읽는다. 파일은 OS에 영향을 받는다. 그러므로..

Dev/JAVA 2021.06.30

[PHP] "(큰 따옴표) 와 ' (작은 따옴표) 차이

큰 따옴표와 작은 따옴표의 구분은 PHP 코딩을 하면서 가장 헷갈렸던 부분이다. 큰 따옴표와 작은 따옴표는 둘다 문자(문자열)를 출력하지만 기능상의 차이가 있다. 어떤 차이가 있을까? 가장 큰 차이는 변수 치환이다. 1) 큰 따옴표 출력결과 > 하늘이 유독 푸르다. 큰 따옴표 안에 $ 표시된 변수가 들어가면 PHP 인터프리터는 이를 변수로 감지한다. 그리고 알맞는 값으로 치환한다. 그러나 $를 문자로 출력해야하는 경우도 있다. 이때는 이스케이프 문자를 사용한다. 출력결과 > 100 만원은 내꺼 $$ 이렇듯 큰 따옴표 안에는 단순 문자로 인식되지 않는 문자들이 있기에 이스케이프 문자들이 존재한다. PHP 인터프리터는 이스케이프 문자를 인식하면 알맞는 문자로 변환한다. \" 큰 따옴표 출력 \' 작은 따옴표..

Dev 2021.06.21

Visual Studio Code에서 PHP 개발하기

Visual Studio Code에서 PHP 개발을 시작해보자. 우선 Bitnami WAMP를 통해 아파치 웹서버와 PHP 인터프리터를 설치해야한다. 아래의 블로그에서 설치 과정을 자세히 알려주니 참고를 추천드린다. 비트나미(bitnami) WAMP 아파치 웹서버 설치 방법 웹개발을 공부한다면 웹 애플리케이션을 제작할 때 반드시 필수로 사용되는 웹 서버를 다운로드해야 합니다... blog.naver.com 설치를 완료하면 개발 툴이 필요하다. 개발 툴은 Visual Studio Code를 사용할 것이다. VS Code는 아래에서 다운로드 받으면 된다. Download Visual Studio Code - Mac, Linux, Windows Visual Studio Code is free and avail..

Dev 2021.06.21

PHP란?

PHP가 무엇인가? PHP는 '서버사이드 스크립트 언어'이다. 인터넷에 돌아다니는 PHP의 가장 흔한 정의이다. 그러면 왜 PHP가 서버사이드 스크립트 언어라고 불리우는지 핵심 키워드인 '서버'와 '스크립트 언어'를 통해 알아보자. 서버 사이드 (Server Side) 파일철에 종이 문서를 관리하던 인간은 컴퓨터에 문서를 저장할 생각을 하게 된다. 그리고 더 나아가, 문서가 저장된 컴퓨터가 다른 컴퓨터에게 문서를 제공하는 방식을 생각하게 되는데, 이가 바로 웹(Web)과 HTTP 프로토콜의 시작이다. 이렇듯 초기 웹환경은 웹서버(Sever)가 클라이언트(Client)에게 단순히 문서(html)를 제공하는 방식이 전부였다. 하지만 단순히 문서만 주고 받기에는 웹이 가진 잠재성은 무궁무진했다. 웹의 발달로 ..

Dev 2021.06.21

[ JSP ] 인코딩(Encoding) 설정

문자가 깨지는 이유는 브라우저 => 서버 서버 => 브라우저 환경이 변할 때, 환경별로 설정된 인코딩 방식이 다르기 때문이다. 그러므로 인코딩 설정을 바꾸어야 한다. 브라우저 => 서버 (Request) 요청에는 크게 두 가지가 있다. Get 방식, Post 방식 이전 포스팅에서 자세히 다루어 본대로, 웹서버에서 Get 방식으로 url로 넘길 때와 Post 방식으로 HTTP body 안에 데이터를 넣고 전송하는 방식은 서로 인코딩 방식이 다르다. 그래서 Get 방식과 Post 방식은 인코딩을 설정하는 방식도 다르다. Post 방식의 경우, 이클립스로 서블릿을 개발하면서 JAVA 메소드로 인코딩을 할 수 있다. request.setCharacterEncoding("UTF=8"); 로 간단히 인코딩 방식을 ..

Dev 2021.06.21

[ JSP ] 인코딩(Encoding)을 하는 이유

웹 개발에서 빼놓을 수 없는 것이 '인코딩' 설정이다. 우리는 웹에서 한글이 강민구 이나 뤱뜲핟뷇와 같이 깨지는 것을 자주 보았다. 한글이 깨지는 이유는 웹브라우저와 웹서버가 서로 다른 인코딩 방식을 사용하기 때문이다. 웹브라우저는 2Byte씩 처리하는 UTF-8 인코딩 방식을 사용하는데, 웹서버는 1Byte씩 처리하는 ISO-8859-1 방식으로 인코딩을 하면, 서로 다른 인코딩 방식 때문에 적절한 디코딩이 이루어지지 않는 것이다. 위와 같이, 한글을 POST 방식과 GET 방식으로 서버에 전송하여, 서버 콘솔을 통해, 서버에 어떻게 값이 전달되었는지 확인해 보았다. POST 방식은 한글이 깨졌지만 GET 방식은 한글이 깨지지 않았다. GET과 POST가 다른 결과가 나오는 이유는 무엇일까?..

Dev 2021.06.21

[ JSP ] HttpServlet이란?

단순한 클래스가 서블릿 클래스가 되기 위해서는 1. init() 2. service() 3. destroy() 순서의 생명주기를 가져야한다. 해당 생명주기를 추상메소드로 갖는 인터페이스가 Servlet 인터페이스이다. (아래 포스팅에서 자세히 다루었습니다.) [ JSP ] Servlet 과 ServletConfig 서블릿(Servlet)은 콘솔프로그램에서 동작하는 클래스가 아니다. 서블릿은 웹환경에서 동작하는 클래스이다. 단순한 클래스를 서블릿 클래스로 바꾸려면 서블릿활동에 필요한 API를 장착해야한다 lordofkangs.tistory.com 생명주기를 담은 Servlet 인터페이스 그리고 초기화를 담은 ServletConfig 인터페이스를 구현해야 Servlet 클래스가 될 수 있다. 그래서 구현을 ..

Dev 2021.06.21