2019년 3월 25일 월요일

JSP 한글 깨짐 문제 해결방법

안녕하세요, 오늘은 jSP한글 깨짐 문제에 대해서 알아보려고 합니다.

저는 이클립스에서 JSP를 공부하고 있는데,
HTML에서는 잘 나오는데
JSP에서만 한글이 깨지는 거죵.

이게 왜 깨질까.. 한참을 알아보다가 드디어,
알게되어서 혹여나 저와같은 문제로 고민하고 있는 분들께 알려드립니다.

먼저 서버와 관련이 있습니다. 
저는 톰캣을 사용하는데 톰캣은 기본적으로 
UTF-8방식으로 사용하기 때문에 이처럼 인식을 못하고 깨집니다.
따라서 톰캣을 사용하신 분들이 아니면, 
방법이 조금 다를 수 있으니 주의하세요~







한글깨짐 표시는 저렇게도 나올 수 있고,
그냥 ?????와(과) ?????
이렇게 나올 수도 있습니다.







먼저, 저 노란 부분의 EUC-KR을 utf-8로 바꿔줍니다.
이것을 Jsp파일과 html 파일 둘다 동일하게 만들어 줍니다.

만약, 이렇게해도 한글이 깨진다면, 다음단계로 넘어갑니다.

이클립스 상단의 window-preferences 로 클릭하면,
아래와 같은 화면이 나옵니다. 여기서 Web-CSS Files에 들어갑니다.







ENCODING을 이 상태에서,






저 상태로 바꿔줍니다. 비슷해보이는 것들이 조금 있으니 주의하세요.

]





그리고 같은 Web에서 이번엔 JSP Files에 들어가서 아래와 같이 바꿔줍니다.





이렇게 되면, 한글이 깨지지 않고 정상적으로 나오는 것으로 
확인할 수 있답니다.!!!

만약, 이렇게 까지 했는데도 안되었다면, 자신의 서버가 톰캣인지 확인해보고,
jsp파일이나 html 파일의 meta의 charset=utf-8인지 확인해보시길 바랍니다.



2019년 3월 14일 목요일

데이터베이스의 시작.



데이터 베이스란,
 일상 생활에서 발생하는 각종 정보의 수집과 처리 및 분석, 
그리고 응용은 사회 어느 곳에서나 필수 불가결한 요소이며
정보를 필요에 따라 모아 놓은 것,
즉 데이터 베이스(database)이기도 함과 동시에
실생활에 존재하는 수많은 유무형의 생활정도, 과학적 지식, 상식 등의 정보들을 말합니다.
데이터베이스에 간단한게 말하자면 이러한데, 이제 조금 더 자세하게 알아가 봅시다.

먼저 데이터 베이스란 정보를 필요에 따라 조직이나 
개인이 사용하는 조작 가능한, 저장된 데이터의 모임입니다.

예를들어 설명을 하자면,
각각의 폰에는 연락처와 메모, 피피티와 같은 작업들이 있다는 것은 
2019에 사는 사람들이라면, 누구든지 알 수 있는 사실입니다.
각각의 연락처와 메모장들을 각각 하나의 데이터베이스를 구성하여 관리한다고 생각하면 됩니다.
편리한 사용을 위해 카톡을 정렬하거나 분류하는 사람들이 있죠.
뭐 이를테면, 학교 인맥은 s홍길동, s이만기, 친척은 r송혜교, r송중기 등등 처럼이요.
이런 식으로 개인들은 방대한 정보들을 효율적으로 관리하고 있습니다.
이렇게 정보들을 "관리" 하고 있는 "자신"을 DBMS라고 합니다.
(DBMS : DataBase Management System,
 컴퓨터에 저장되는 데이터 베이스를 관리해주는 소프트웨어 시스템,
Oracle, MS SQL-Server, DB2, Sybase, dBase,큐브리드, 티베로-티맥스소프트, MySQL 있다.)

따라서 여러 정보들을 분류 별로 나누는 것을 데이터베이스 역할,
그것들을 사용하는 개인에게 데이터베이스를 제공하는 것이 관리인인
DBMS인 것입니다.

너무 설명이 모호 하다면 창고로 예를 들수도 있습니다.
공장의 창고는 분류별로 잘 정리되어있다. 그것을 창고를 이용하는 직원에게 
창고 관리인이 창고를 효율적으로 사용할 수 있도록 서비스를 제공해줍니다.
여기서 잘 정리된 창고가 DATABASE 이고, 창고를 이용하는 직원은 사용자,
그리고 창고 관리인이 DBMS인 것입니다.




dbms에 대한 이미지 검색결과




지금까지는 데이터베이스와 DBMS에 대해 간단하게 알아보겠습니다.
이제 데이터베이스도 DBMS도 대충 뭘 뜻하는 건지는 알겠지만 정확한 데이터의 의미,
정보의 의미, 지식의 의미는 아직은 조금 막연할겁니다.
지금부터는 각각의 데이터, 정보, 그리고 지식에 대한 정확한 의미를 알아보겠습니다.

먼저, 데이터(DATA)는 정형화되고 기록할 만한 가치가 있다고 
판단되는 어떤 현상이나 사건, 아이디어에 대한 묘사입니다.

정보(Information)는 데이터가 사실 그 자체에 대한 일차적인 표현이라면,
이 사실과 이들로부터 유도될 수 있는 유추된 사실들입니다.





지식(Knowledge)은 데이터와 정보에 비해 상위 수준의 개념입니다.
수동적이고 정적인 데이터나 정보에 비해, 이들을 처리하는 "방법"이나
어떤 근거에 의한 판단을 내리는데 필요한 분석과 판단에 관한 "법칙"등을 포함합니다.

DAMS가 제공하는 기능은 대략 7가지가 있습니다.
첫번째는, 정보를 표현할 수 있는 틀.
DBMS가 정보를 관리할 수 있는 양식으로 다양한 정보의 표현이 가능해야 합니다.

두번째는, 데이터의 공유기능.
DBMS가 관리하는 데이터는 여러 응용프로그램이
 필요에 따라 이용할 수 있도록 제공됩니다.
이유는 데이터를 공유함으로써 데이터 중복을 제거하기 때문입니다.
또한 동시성 문제도 있습니다. 다른 프로그램 또는 프로세스가 동시에 같은
데이터에 작업을 하려할 때 DBMS는 하나의 단위 프로그램이 일을 마칠 때까지
해당 데이터를 독점하도록 하는 방법 등으로 문제를 막기 때문입니다.

세번째는, 데이터 무결성(INTEGRITY) 유지 기능.
데이터베이스 내의 데이터가 얼마나 정확한가를 뜻합니다.

네번째는 데이터 독립성.
여기서 독립성은 응용프로그램과 데이터 간의 독립성을 말합니다.
응용 프로그램은 데이터가 디스크에 구체적으로
어떻게 저장되어 있는 지는 몰라도 됩니다.
반대는 데이터 종속적이 있는데, 데이터와 응용프로그램이 의존하고 있으므로
나중에 데이터의 저장형태나 구조를 바꾸려할 때 응요프로그램도 바꿔야합니다.

다섯번째는 효율적인 자원관리 기능.
많은 양의 데이터를 다루는데 적합한 효율적이고 효과적인 방법들을 사용합니다.
디스크 상에 데이터를 배치시키거나 디스크의
데이터를 처리를 위해 주 기억장치로 불러들이는 작업이죠.

여섯번째는 데이터 보안성과 안정성 유지 기능
DBMS가 관리하는 모든 데이터에 대해 자체적인 보안 기능을 제공합니다.
사람으로부터 데이터를 보호하고,
컴퓨터 장애나 고장 등으로 부터 보호합니다.
즉, 예상치 못한 상황이 발생했을 때 체계적인 수습이 가능해야하죠.

일곱번째는 파일 시스템의 데이터 관리 기능입니다.
파일시스템(FILE SYSTEM)은 운영체제의 중요한 부분으로
데이터나 프로그램을 디스크에 읽고 쓸 수 있도록 해주는 프로그램입니다.

프로그램에서 다루는 데이터를 직접 하나의 파일에
저장하여 관리하는 경우엔 다음과 같은 문제가 발생합니다.

1. 프로그램 이외의 방법으로도 데이터 조작 가능
2. 프로그램과 데이터 형식이 묶여 있음
3. 동시 접근의 문제
4. 보안 문제
5. 장애 복구 문제

지금까지 데이터베이스의 기초적인 개념을 알아보았습니다.
다음엔 관계형 데이터베이스에 대해서 알아보겠습니다.

감사합니다.!!





2019년 3월 11일 월요일

소프트웨어공학, 시작은 라이선스부터..





안녕하세요, 오늘은 오픈 소스 소프트웨어에 대해 알아보려고 합니다.
먼저, 오픈 소스 소프트웨어는 무엇일까요? 누구나 공유가능한 소스? 
어쩌면 이 말은 맞을 수도 있고, 틀릴 수도 있습니다. 
지금부터 그 자세한 내용을 알아보겠습니다.

오픈소스 SW 하면 스톨만,
스톨만 하면 GNU, 
GNU하면 유닉스,
유닉스 하면 리눅스.

GNU는 지식을 같이 공유하자는 뜻입니다. GNU는 이런 말도 있습니다.

GNU is not Unix.

즉, 돈을 받고 팔지 않겠다는 말입니다.
GNU PROJECT 라고 하면 GNU를 사용한 프로젝트이죠.

그렇다면 FSF에 대해서 아시나요?
FSF(Free Software Foundation)의 약자 입니다. 
이 지식을 공유한다는 재단은 스톨만이 설립하였습니다.
여러분이 아시는 copyleft와 일맥상통합니다.

또한, OSS(Open Source Software)은 저작권이 없고 라이선스 형태로 존재 합니다.
운전면허증을 Driving Licence라고 하죠? 네 맞습니다. 
바로 그 라이선스 입니다. 사용 허가권이죠.

그렇다면 OSI(Open Source Initiative)도 알아봅시다.
Eric Raymond가 설립하였습니다.
이 사이트에는 여러 라이선스들이 버전별로 나열되어 있는 것을 확인 할 수 있습니다.
참고로, Open Source Initiative는 기관명이고, 
Open Software Initiative는 프로젝트명입니다.


open source initiative에 대한 이미지 검색결과

독점 소스 소프트웨어와 오픈 소스 소프트웨어는 
[성당과 시장]이라는 책으로도 비유가 됩니다.
성당은 성스럽게, 시장은 복잡하게.
성당이 곧 독점 소스 SW이고, 시장은 오픈 소스 SW입니다.

아니, 소프트웨어공학에 대해 이야기하는데 웬 갑자기 독점, 오픈 소스?
라고 하실 수도 있겠지만 소프트웨어의 세계에서
이 지식공유의 개념은 매우 중요합니다.




GPL에 대한 이미지 검색결과




그에 대해 자세한 이야기를 시작하자면, 먼저 GPL부터 알아야 합니다.
GPL이란 오픈소스 라이선스입니다. 2007년 6월에 정식버전이 발표가 되었죠.
GPL은 General Public License의 약자 입니다.
1989년 GPL 1.0버전의 FSF에서 만들어졌습니다.

이 라이선스는 지식 공유 정신을 아주 잘 물려받았고 
가장 많이 사용되면서 사용하기 위한 조건이매우 엄격하기로 유명합니다.

여기서 문제~!
GPL라이선스가 붙는 소스를 갖다 써서 제품을 만들었습니다.
이 제품은 팔 수 있을 까요?
정답은, YES!입니다.

단, 가져다 쓴 소스코드는 공개해야합니다. 그리고 자신이 쓴 코드도 
GPL라이선스에 따라 공개되며 다른 사람이 가져다 사용할 수 있습니다.
그렇다고 모든 사람에게 공개되는 것은 아닙니다.
배포대상(수취인)이 아니면 소스를 공개할 의무는 없기 때문입니다.

GPL을 사용할 때에는 SW를 배포하는 경우 저작권을 표시하고,
보증책임이 없다는 표시 및 GPL에 의해 배포 된다는 사실을 명시해야합니다.
이 말은 대부분의 라이선스에 해당하는 말입니다. 
또한, 보증책임이란 그 소스를 사용하는 중 받을 수 있는 불이익을 뜻합니다.

또한, SW를 수정하거나 새로운 SW를 링크시키는 경우 
GPL에 의해 소스코드를 제공해야 합니다. 
즉, GPL을 따르는 오픈소스를 가져와 일부를 고쳐서 사용했을시에도 
코드를 공개해야 한다는 말입니다.

또한, 목적 및 실행코드 형식으로 GPL을 배포하는 경우,
소스 코드 자체를 함께 배포하거나 
또는 소스코드를 제공 받을 수 있는 방법에 관한 정보를 함께 제공해야 합니다.

소스코드 하나 공유하는데 생각보다 복잡하죠?
세상엔 공짜는 없답니다.^^
여기서 끝이 아니죠~! 가장 중요한 "특허"가 남아 있습니다.
지금 부터는 특허에 대한 이야기를 잠깐 해보겠습니다.




특허에 대한 이미지 검색결과




여러분도 알고 계시다시피, 특허는 지식재산권에 속합니다.
이해를 돋구기 위한 간단한 문제를 소개시켜드리겠습니다.

특허권자 A가 있습니다.
A는 자신이 코드를 개발하여 특허를 냈습니다. 
A가 특허가 있는 코드를 GPL 코드에 가져다 썼습니다. 
이로써 A의 코드에는 A의 특허코드와 GPL 코드가 있게 되었죠.
그런데, B가 A의 코드를 가져다 사용하였습니다.
이럴 경우, B는 A에게 돈을 지불해야 될까요?

정답은 NO!입니다.
A가 특허가 있는 자신의 코드를 GPL코드에 가져다 사용하였다면,
이는 묵시적으로 공개하겠음을 나타낸 것이기 때문입니다.

특허이야기, 재밌지 않나요?ㅎㅎ
두번째 문제가 있습니다. 이번에는 상황이 조금 더 복잡합니다.

A가 정렬알고리즘을 개발해 특허로 냈습니다.
이를 가져다가 B가 C+++언어를 개발하였습니다. 
B가 이 언어를 GPL 로 걸었습니다.
훗날, A가 이 GPL코드를 사용하게 되었는데,
 자신이 특허를 냈던 정렬 알고리즘이 있는 것입니다.
이럴 경우, B가 A의 특허를 가져다 무료로 풀었다고 A가 고발이 가능할까요?

정답은 YES!입니다.
A는 특허를 낸 자신의 코드를 B가 여러 사람에게 아무 대가 없이 공유를 하였기 때문이죠.
그러나 A가 고발을 하여 승소를 하는 순간, B의 GDL 라이선스가 중단이 됩니다.
그렇기 때문에 B가 A에게 그동안 사용한 B의 코드 사용값을 받아낼 수 있게 되기 때문에,
사실상 소송은 무의미 하다고 볼 수있겠지만,
판결의 결과에 따라 이득일 수도 아닐 수도 있습니다.

특허이야기, 생각보다 재밌죠? 
지금부터는 GPL보다 조금 덜 엄격한, 즉 규제를 완화한 라이선스를 소개합니다.
이는 소스코드 "공개" 규제의 완화입니다.

저작권을 표시하고 보증책임이 없다는 표시 및 LGPL에 의해 
배포된다는 사실을 명시하는 것과 LGPL 라이브러리의 일부를 수정하는 경우
 수정한 라이브러리 공개는 GPL과 유사합니다.
LGPL 라이브러리에 응용 프로그램을 링크시킬 경우
 해당 응용프로그램의 소스를 공개할 필요 없는 것은 
규제가 완화 되었다고 볼 수 있습니다.

다음은 LGPL의 라이선스를 소개합니다.






여기서 APACHE 라이선스는 상표권에 대한 조항이 따로 존재합니다.
예를 들어 검색 엔진 포털 서비스(구글, 네이버..)을 AGPL을 사용하여 만들었다고 하면,
검색 엔진 서비스를 받는 사람에게까지 소스를 공개해야 합니다.
다른 라이선스들에 비해 수취인의 범위가 넓죠.

아, 여기까지 오시느라 고생많으셨습니다.
 이것 저것 재밌는 이야기가 많지 않으신가요?ㅎㅎ
다음에는 폭포수 모델/유스케이스 다이어그램에 대해 알아보겠습니다.
감사합니다.




2019년 3월 10일 일요일

새로 바뀐 안드로이드 스튜디오, sdk 환경변수 설정하기.(2019)





안녕하세요 여러분~
오늘은 안드로이드 sdk 환경설정에 대해 알아봅시다.

최근 오라클에서 정책을 변경하면서
안드로이드도 몇가지 변경사항이 생겼습니다.

기존의 안드로이드 스튜디오는 안드로이드 스튜디오 사이트에서
안드로이드 스튜디오를 다운받고,
jdk나 sdk는 따로 오라클에서 받았다면

현재는 안드로이드 스튜디오에서 
단 한번의 클릭만으로
안드로이드 스튜디오를 설치할 수 있게 되었습니다.
안드로이드 스튜디오를 만든 IntelliJ사에서 
open JDK와 SDK를 제공하고 있기 때문입니다.

오늘은 간단하게 안드로이드 스튜디오를 설치하고나서,
sdk 환경변수를 설정하는 방법을 알아봅시다.


먼저 윈도우 검색창에 "제어판"을 검색하면 위의 창이 뜨는 데요,
여기서 "시스템"을 클릭합시다.


그리고나서 왼쪽 목록에서 "고급시스템 설정"을 누르면
시스템 속성 창이 뜹니다. 상단 바의 "고급"에 들어가서
시작 및 복구 탭의 "환경변수설정"을 클릭합니다.

그러면 환경 변수 창이 뜨는 데요, 
처음 보신 분들은 낯설 수도 있겠지만 
앞으로는 이 창이 익숙해지셔야 합니다.

환경변수 창을 보면 [사용자변수] 탭이 있고,
[시스템 변수]탭이 있습니다.

[사용자 변수]탭은 현재 로그인 사용자에만 
적용되는 사용자 변수가 위쪽에 있고,
[시스템 변수]탭은 모든 사용자에
공통으로 적용되는 시스템변수가 아래쪽에 있습니다.
환경변수는 어느 쪽에 추가 해도 상관없지만
가능하면 사용자 환경 변수를 수정하길 추천합니다.

저는 사용자 변수 탭에서 새로 만들기를 클릭,
변수 이름에 ANDROID_SDK_ROOT,
변수 값에 제 SDK파일 위치.즉 경로를 넣습니다.
(개인마다 위치는 조금씩 다르나 기본적으로는 
C:\Android\sdk 에 있습니다.)

여기서 설정할 값은 크게 2가지 작게 4가지를 추가해야 합니다.
이는 다음과 같습니다.
       
 환경변수이름      값
 ANDROID_SDK_ROOT   C:\Android\sdk
 PATH C:\Android\sdk\emulator;
C:\Android\sdk\platform-tools;
C:\Android\sdk\tools;

위의 값들은 아무것도 설정을 건들이지 않고 다운 받았을 때의 기본 값입니다.
당연한 말이지만 설정 위치를 변경하였다면 sdk파일이 있는 곳의 경로를 가져와야 합니다.



2019년 3월 4일 월요일