joonbread의 등록된 링크

키자드에 등록된 총 1673개의 포스트를 확인하실 수 있습니다.

Naver Blog

C# - 인터페이스

C# - 인터페이스 - 추상클래스의 성격은 갖고 있으며 메소드 목록만 갖고 있는 명세서이다. - 또한, 추상메소드를 갖고 있으며, 인터페이스간 상속이 가능하다. - 그럼, 왜 추상클래스와 비슷한데도 불구하고 따로 인터페이스를 사용할까? - 결론부터 보자면 추상 클래스는 상속이 한개만 되지만, 인터페이스는 다중 상속이 가능하다. * 추상클래스와 인터페이스의 공통점 - 추상메소드를 가지고 있다. - 객체 생성 불가능 * 추상클래스와 인터페이스의 차이점 - 추상클래스는 추상 메소드를 무조건 하나라도 갖고 있으며, 다른 메소드와 같이 작성할 수 있지만, 인터페이스는 추상 메소드만 작성할 수 있다. - 인터페이스는 추상클래스와 달리 다.......

Naver Blog

C# - 봉인 클래스

C# - 봉인 클래스 - 이전에 다뤘던 추상클래스, 인터페이스와 달리 상속 시 더이상 재정의되지 않도록 하는 클래스이다. - 메소드 앞에 반드시 sealed 키워드를 붙여서 사용한다. - 이번 글은 C#에서 사용하는 봉인 클래스를 다뤄보는 글이다. - VS 2019의 Console Application 프로젝트에서 실행하는 글이다. Console Application 프로젝트 생성 방법은 아래 글을 참조하시길 바랍니다. 실행환경 - OS : Windows 10 64bit - IDE : Visual Studio 2019 프로젝트 생성 및 실행 절차 1. VS 2019에서 Console Application 프로젝트 생성 후, 아래와 같이 작성 - 그림1)에서 볼 수 있듯이 sealed 키워드로 작성한 ComputerGame클래스의 Game메소드를.......

Naver Blog

C# - 델리게이트

C# - 델리게이트 - 흡사 심부름을 시키듯이, 메소드를 직접 호출하지 않고 델리게이트를 이용해서 지정 메소드를 대신 호출하는 기능을 의미한다. - 대리자가 있는만큼 정확한 내용을 실행해야하는 만큼 타입 체크와 객체 지향적인 성향이 많이 강하다. - 선언 방식 : delegate 데이터형 이름(매개변수) 기존 메소드 작성과 비슷하다. - 사용 방법 : 데이터 타입 이름 = delegate이름(매개변수)으로 기존 객체 생성과 비슷하다. - 이번 글은 C#에서 사용하는 delgate를 다뤄보기 위해 작성한 글이다. - VS 2019의 Console Application 프로젝트에서 실행하는 글이다. Console Application 프로젝트 생성 방법은 아래 글을 참조하시길 바랍니.......

Naver Blog

C# - 접근제한자

C# - 접근제한자 - 다들 관리를 할 때 단체로 어떤 물건이나 정보를 사용할 때 사용자의 접근 권한에 맞춰 정보나 물품을 관리할 것이다. - 이처럼, 접근 제한자는 사용자의 접근 권한에 제한을 둬서 프로그램이 사용유무를 판별할 수 있도록 한다. 접근 제한자 종류 및 설명

Naver Blog

창의성을 타고나다 :심리학의 최전선에서 본 비범한 마음의 10가지 작동 원리 독서 후기

창의성을 타고나다 :심리학의 최전선에서 본 비범한 마음의 10가지 작동 원리 - 해당 책은 노원정보도서관에서 대여하여 읽은 책이다. - 이 책은 창의성을 기르는데 해답을 주는 것이 아닌 길을 알려주는 책으로, 창의력과 관련된 여러 문서에서 봤던 내용들이 종합된 책이였다. - 사람들은 구체적이지 않은 말을 듣게 되면 객관적으로 보는 것이 아닌 사회적 통념상 뜻과 자신의 생각을 합리화한 뒤 추론하여 결과를 내비치는 경우가 많다. - 이 책은 자신이 남들과 다른 독자적인 존재라는 인식을 통해 동조라는 틀에서 벗어나 창의성에 대해 한 발 다가갈 수 있는 점을 얘기한다. - 이 책에서 남들과 다른 관점에서 시작되는 만큼 문화적, 사.......

Naver Blog

JavaScript - JSON

JavaScript - JSON - JavaScript Object Notation(이하 JSON)은 key - value로 이뤄진 데이터 오브젝트를 전달하기 위해 만들어진 데이터 포맷 기준이라고 볼 수 있다. - JSON은 자바스크립트 언어로부터 파생됬지만, 독립적인 데이터 포맷이므로 다양한 프로그래밍 언어와 플랫폼과 상관없이 쉽게 통신에 사용할 수 있다. - JSON의 오브젝트는 자바스크립트의 오브젝트로 변환되지만 JSON 오브젝트는 new 연산자를 사용해서 인스턴스를 생성할 수 없다. - JSON 오브젝트는 parse함수를 사용하여 JSON 형태의 문자열을 자바스크립트 데이터 타입으로 변환한다. - stringify 함수는 자바스크립트 데이터 타입을 JSON형태의 문자열로 바꾼다.

Naver Blog

유니티 - Unity 설치(Window 10 - 2021.04.19 기준 )

유니티 - Unity 설치(Window 10 - 2021.04.19 기준 ) - 유니티가 게임 개발? 쪽에 인기가 많은 것 같아서 한번 알아보고자 설치한 것 - 본 글은 Windows 10 운영체제에서 유니티를 설치하는 방법을 다룬다. - 참고로 유니티 설치하는데 많은 공간이 필요하다(약 12GB쓰는거 같고 설치하는데 시간을 30~40분으로 잡아두자, 물론 그정도는 안걸리니 다들 밥 먹구 합시다.) 유니티 설치 순서 1. 먼저 아래 링크에 들어가서 시작하기를 누르자 2. 2개의 탭 중 '개인' 탭을 클릭한 다음 우린 공부용으로 사용할 것이니 Personal에서 시작하기 클릭 3. 자신의 경험에 기반하여 선택하자. 필자는 좌측이다. 4. 동의 클릭 5. 설치된 파일을 실.......

Naver Blog

C# - 연산자

C# - 연산자 - 연산자, 즉 사칙연산과 같은 대상 1과 대상 2를 산술연산하거나 대상 1과 대상 2를 비교하여 논리적인 판단을 할 수 있는 기호를 의미한다. - 이번 글은 C#의 연산자를 다루는 글이다. C# 연산자 - OR과 AND연산에 대해 처음 듣거나 비트란 단어를 처음 들은 경우 비트 연산이 헷갈릴 수 있다. - 비트연산의 !, &를 사용하려면, 해당 값의 자리 개수가 동일해야 구별하기 쉽다. - A가 1100, B가 1010 4자리 비트로 표현 될 경우, OR은 둘 중 하나라도 1이 있다면, 그 자리의 결과값이 1이 나온다.(결과 : 1110) - A가 1100, B가 1010 4자리 비트로 표현 될 경우, AND는 두개 다 1이 아닌 경우 1이 아닌 결과값이 나온다.(결과.......

Naver Blog

C# - 조건문 (if - else - else if)

C# - 조건문 (if - else - else if) - 특정 조건에 따라 실행되는 영역을 의미한다. - 이번 글은 C#에서 사용하는 조건문 중 if - else - else if를 다뤄보기 위해 작성한 글이다. - VS 2019의 Console Application 프로젝트에서 실행하는 글이다. Console Application 프로젝트 생성 방법은 아래 글을 참조하시길 바랍니다. 실행환경 - OS : Windows 10 64bit - IDE : Visual Studio 2019 프로젝트 생성 및 실행 절차 1. VS 2019에서 Console Application 프로젝트 생성 후, 아래와 같이 작성 - if(조건 내용) { 실행 내용 } - else if(조건 내용) { 실행 내용 } - else{ 실행 내용 } 2. ctrl + f5를 눌러 실행한 결과 - 위의 내용과 같이, if문.......

Naver Blog

C# - 조건문 (switch)

C# - 조건문 (switch) - 스위치의 뜻과 같이 특정 값에 수행되는 영역이다. - 이번 글은 C#에서 사용하는 조건문 중 switch를 다뤄보기 위해 작성한 글이다. - VS 2019의 Console Application 프로젝트에서 실행하는 글이다. Console Application 프로젝트 생성 방법은 아래 글을 참조하시길 바랍니다. 실행환경 - OS : Windows 10 64bit - IDE : Visual Studio 2019 프로젝트 생성 및 실행 절차 1. VS 2019에서 Console Application 프로젝트 생성 후, 아래와 같이 작성 - switch(조건내용){ 실행 내용 } 으로 작성 된다. - switch문은 위에서 아래로 동작한다. - switch란 뜻에 맞게 조건 내용의 결과값에 맞춰 작동한다. - 각 case(조건 결과.......

Naver Blog

C# - 반복문(for)

C# - 반복문(for) - 조건문은 특정 조건에 따라 한번 출력되는 것과 달리 특정 조건에 따라 반복해서 출력할 수 있는 방법이 있는데, 그걸 반복문이라고 한다. - 반복문의 주 내용은 시작점(조건 시작 위치), 분기점(조건내용), 종료(조건 끝)이며 이번 글은 C#에서의 반복문을 다루고자 한다. - VS 2019의 Console Application 프로젝트에서 실행하는 글이다. Console Application 프로젝트 생성 방법은 아래 글을 참조하시길 바랍니다. 실행환경 - OS : Windows 10 64bit - IDE : Visual Studio 2019 프로젝트 생성 및 실행 절차 1. VS 2019에서 Console Application 프로젝트 생성 후, 아래와 같이 작성 - for(초기문 ; 조건문 ; 증감문){ 실.......

Naver Blog

C# - 반복문(while, do-while)

C# - 반복문(while, do-while) - 반복문의 for문과 별개로, 초기문, 조건문, 증감문을 설정할 필요 없이, 그저 조건문에 맞춰 실행되는 영역인 while문과 do-while문을 다뤄보고자 한다. - VS 2019의 Console Application 프로젝트에서 실행하는 글이다. Console Application 프로젝트 생성 방법은 아래 글을 참조하시길 바랍니다. 실행환경 - OS : Windows 10 64bit - IDE : Visual Studio 2019 프로젝트 생성 및 실행 절차 1. VS 2019에서 Console Application 프로젝트 생성 후, 아래와 같이 작성 - while문은 아래와 같이 작성된다. while(조건내용){ 실행 내용 } - do-while문은 아래와 같이 작성된다. do{ 실행 내용 }(조건 내용) - while문.......

Naver Blog

C# - 배열

C# - 배열 - 배열이란, 똑같은 물건을 한꺼번에 묶은 물건이라고 보면 이해하기 쉽다. - 예로, 계란 한판을 들 때, 우린 계란 30개를 '한 판'이라고 한다. 똑같은 양계장에서 똑같은 달걀을 30개를 담고 있는 '계란 한 판'을 말하듯이 이 한 판이라는것이 배열과 동일하다. - 이번 글은 C#에서의 배열을 다루고자 한다. 실행환경 - OS : Windows 10 64bit - IDE : Visual Studio 2019 프로젝트 생성 및 실행 절차 1. VS 2019에서 Console Application 프로젝트 생성 후, 아래와 같이 작성 - 배열은 자료형[] 배열이름 = new 자료형[크기값]; 으로 작성한다. - 배열이름[순번] = 배열값; 으로 작성하여 값을 넣을 수.......

Naver Blog

C# - 객체 지향 프로그래밍

C# - 객체 지향 프로그래밍 - 객체를 Object라고 부르며, 특정 물건, 어느 물건과 같은 사물을 의미한다. - 객체 지향 프로그래밍을 쉽게 설명하자면, 우리가 물건을 만들 때 물건에 필요한 재료를 조합하여 제조하듯이, 각 요소를 혼합하여 만드는 프로그래밍이라고 볼 수 있다. - 우리가 집을 만들때 땅을 사고, 그 위에 기둥, 시멘트 등을 쌓아 집을 만드듯이, 여러 사물을 가지고 집이란 객체를 만들어지는 것이다. - 이처럼 객체 지향 프로그래밍이 있지만, 그와 다른 절차를 이행하여 코드를 실행하는 절차 지향 프로그래밍 방식이 있다. - C#은 객체 지향 프로그래밍 방식이며, 절차지향 프로그래밍 방식과 달리 특정 코드를 모듈화(장치.......

Naver Blog

C# - 캡슐화

C# - 캡슐화 - 대부분 병원에서 처방전을 갖고 약국에서 처방받아 약을 먹을 때 캡슐 성분과 배합법을 정확히 알지 않고 그저 약의 효능을 믿고 먹는 것을 볼 수 있다. - 개발자가 특정 기능을 구현할 때, 기능 구현 코드를 그대로 사용하여 외부로부터 노출되면 그만큼 위험한게 없는데, 캡슐화는 코드가 작성된 내용을 외부로부터 감출 때 사용하는 방식이며 보안성이 좋다. - 캡슐화는 기능과 관련성 있는 내용을 한 캡슐에 담아 사용하는 것과 같다. 우리가 약을 먹을 때 효능만 믿고 먹듯이 캡슐화 내용만 믿고 그대로 사용하는것과 같다. - 캡슐화는 코드 내용을 모듈로 사용하면서 코드를 재사용하고 유지보수에 좋다.

Naver Blog

질문하는 삶 : 살면서 한 번쯤은 짚고 넘어가야 할 것들 독서 후기

질문하는 삶 : 살면서 한 번쯤은 짚고 넘어가야 할 것들 - 해당 책은 노원정보도서관에서 대여하여 읽은 책이다. - 기본적으로 내용은 자신의 경험을 시작으로 옛날 역사적으로 있던 일과 비슷한 접점을 매치하여 이야기를 풀어내는 책으로, 가볍게 읽는데 부담 없는 책이다. - 개인적으로 느낀 점은 책 제목과 동일하게 질문하는 삶을 갖고 읽는 이의 생각 스펙트럼을 넓히는 걸 유도하는 것처럼 보이기도 하나, 어떻게 보면 결과가 좁혀지지 않고 나무에서 넓혀지는 나뭇가지처럼 점차 생각만 늘어나는 느낌을 받게 되었다. - 현재 자신이 불안정하고 결단을 내려야 하거나, 어떤 행동을 취할줄 모를 때 이 책을 생각을 넓히는 데 중점을 가지.......

Naver Blog

C# - 프로젝트 생성

C# - 프로젝트 생성 - Visual Studio 2019(이하 VS 2019) IDE에서 생성 및 실행하는 글입니다. - 이번 글은 C# 프로젝트를 만든 뒤 실행하는걸 다뤄보고자 한다. - 현재 사용할 VS 2019 설치 절차를 다룬 글이니, 설치가 안되신 분들은 참고하시길 바랍니다. * Windows Form app(.NET Framework) 프로젝트 생성 시 1. VS 2019에서 새 프로젝트를 만들기 클릭 2. 사용 언어를 C#으로 선택한 다음 windows를 검색창에 작성하여 Windows Form 앱(.NET Framework)을 선택, 다음 클릭 3. 프로젝트 이름, 프로젝트 위치, 솔루션 이름 아래 체크박스를 체크한 뒤 만들기 클릭 4. 프로젝트가 생성된 걸 확인할 수 있다. - 여기서 Form1.cs[디자인]은 폼 기.......

Naver Blog

C# - 프로젝트 실행

C# - 프로젝트 실행 - Visual Studio 2019(이하 VS 2019) IDE에서 프로젝트를 실행하는 글입니다. - 이전 글에서 다룬 프로젝트 중 Windows Form 앱(.NET Framework) 프로젝트를 실행하고자 한다. - form 앱은 좀 더 UI 를 다루는데 익숙한 경우 매우 손쉽게 다룰 수 있다. 실행환경 - OS : Windows 10 64bit - IDE : Visual Studio 2019 프로젝트 실행 절차 1. 프로젝트 좌측의 도구상자 탭 클릭한 다음 버튼과 라벨을 폼 안에 만들어 놓자 2. 만든 버튼이나 라벨을 클릭하면 우측 하단, 속성창에 해당 개체에 대한 속성 내용이 뜨는데, 라벨 label1과 버튼 button1의 TEXT를 바꿔주자(이름은 속성에서 디자인의 name에 서술되어 있다.) * joonb.......

Naver Blog

C# - 기본 자료형

C# - 기본 자료형 - 자료형, 개발을 하는 사람이라면 한번쯤은 들어본 말이라고 생각한다. - 이번 글은 C#에서 사용하는 자료형을 다뤄보기 위해 작성한 글이다. - VS 2019의 Console Application 프로젝트에서 실행하는 글이다. Console Application 프로젝트 생성 방법은 아래 글을 참조하시길 바랍니다. 실행환경 - OS : Windows 10 64bit - IDE : Visual Studio 2019 기본 자료형 설명 기본 자료형 선언 1. VS 2019에서 Console Application 프로젝트 생성 후, 아래와 같이 작성 2. ctrl + f5를 눌러 실행한 결과 - 논리형인 bool같은 경우 boolean도 선언이 되는 걸 확인하였다. - 자료형의 첫글자가 소문자여도 동작하는 걸 볼 수 있었음

Naver Blog

자바 기초 39 - Stream

자바 기초 39 - Stream - Stream(이하 스트림) 이전에는 Collection 인스턴스이나 배열 인스턴스를 다룰 때 for문이나 Iterator를 이용해서 데이터를 담고 원하는 결과를 얻었지만, 코드의 질이 떨어지고, 양이 많아지는 단점이 있었다. - Stream을 통해 배열과 컬렉션 인스턴스를 다룰 때 자주 쓰는 메서드와 함께 데이터를 추상화하여 코드의 재사용성을 높일 수 있었다. - 또한 병렬 처리가 가능하며, 데이터 소스를 변경하지 않고 일회용으로 사용되어 속도 개선과 함께 효율적이다. - 즉, 컬렉션이나 배열과 같은 인스턴스에서 원하는 값을 사용할 때 for문이나 iterator로 지저분해지는 코드를 간결화한 것 스트림 동작 순서 1. 스트림을 선.......

Naver Blog

자바 기초 40 - 입출력(InputStream, OutputStream)

자바 기초 40 - 입출력(InputStream, OutputStream) - 사람은 언어나 몸짓을 통해 대화하듯이 컴퓨터와 대화하기 위해선 언어와 몸짓이 아닌, 데이터를 입력하고 출력해야한다. - 이전 글에서 stream을 다뤘을 때 컬렉션이나 배열과 같은 인스턴스에서 원하는 값을 사용할 때 간결화한다고 했지만, 이번 글에서는 다른 stream을 말하고자 한다. - 해당 입출력은 Java를 통해 정보를 입력하고, 입력과 관련된 InputStream과 출력과 관련된 OutputStream을 다뤄본다. 데이터를 주고 받는 Stream - 현재 글에서 얘기하는 Stream은 데이터를 주고 받는 연결 통로를 의미한다. - 우리가 물건을 차로 운반할 때, 길을 통해 차로 이동하듯이, 컴퓨터도 데.......

Naver Blog

자바 기초 41 - 입출력(FileInputStream, FileOutputStream)

자바 기초 41 - 입출력(FileInputStream, FileOutputStream) - 위의 InputStream과 OutputStream과 달리 파일에 입출력을 하기 위한 스트림이다. FileInputStream, FileOutputStream 생성자 - 파일 입력 또는 출력을 수행하는 바이트기반 스트림이다. - 참고로, Stream이란 연결통로는 쓰면 다시 반납해야 하므로 쓴 뒤 close() 메서드를 실행해 주자

Naver Blog

자바 기초 42 - 보조 스트림(BufferedInputStream, BufferedOutputStream)

자바 기초 42 - 보조 스트림(BufferedInputStream, BufferedOutputStream) - 보조 스트림이란 데이터를 지나다니게 하는 연결통로인 스트림을 보조한다. - 개인적으로 예를 들자면, 데이터 네트워크 방식인 3g에서 4g로 바꾼 느낌? - 보조 스트림을 쓰기 위해선, 조상인 InputStream과 OutputStream을 가지고 있어야한다. BufferedInputStream, BufferedOutputStream - 스트림의 입출력 효율을 높이기 위해 버퍼를 사용하는 보조스트림 - 기존의 스트림에서 봤듯이, 한 바이트씩 입출력을 하는게 아니라 버퍼를 이용하여 한번에 여러 바이트를 입출력하는 방식으로, 속도면에서 월등히 앞선다. BufferedInputStream 생성자 - 스트림에 데이터를 버.......

Naver Blog

자바 기초 43 - 문자기반 스트림(Reader / Writer)

자바 기초 43 - 문자기반 스트림 - 바이트기반인 InputStream, OutputStream과 달리 문자 기반으로 작동한다. Reader / Writer - byte가 아닌 char를 사용하는 것 외엔 InputStream, OutputStream와 다른 것이 없이 스트림을 통해 읽고 쓰고 한다. Reader 메서드 Writer 메서드

Naver Blog

자바 기초 44 - 문자기반 스트림(FileReader, FileWriter)

자바 기초 44 - 문자기반 스트림(FileReader, FileWriter) https://blog.naver.com/joonbread/222290486114 - 위의 FileInputStream, FileOutputStream의 바이트 기반과 달리 파일의 텍스트 데이터를 읽어 파일로 쓰는데 사용된다. - 위의 FileInputStream, FileOutputStream와 대부분 비슷하다. FileReader 생성자 FileReader 메서드 - FileReader는 java.io.Reader클래스와 java.io.OutputStreamReader 클래스를 상속받아 메서드를 사용한다. FileWriter 생성자 FileWriter 메서드 - FileWriter는 java.io.Writer클래스와 java.io.OutputStreamWriter클래스인 상위 클래스를 상속받아 메서드를 사용한다.

Naver Blog

자바 기초 45 - 문자기반 보조스트림(BufferedReader, BufferedWriter)

자바 기초 45 - 문자기반 보조스트림(BufferedReader, BufferedWriter) - 보조 스트림이란 데이터를 지나다니게 하는 연결통로인 스트림을 보조한다. - 개인적으로 예를 들자면, 데이터 네트워크 방식인 3g에서 4g로 바꾼 느낌? - 보조 스트림을 쓰기 위해선, 입력 보조스트림일 경우 조상인 InputStreamReader 인스턴스를, 출력 보조 스트림일 경우 조상인 OutputStreamWriter를 인스턴스를 가지고 있어야한다. BufferedReader, BufferedWriter - 스트림의 입출력 효율을 높이기 위해 버퍼를 사용하는 보조스트림 - 기존에 다뤘던 BufferedInputStream, BufferedOutputStream과 달리 문자 기반인 보조 스트림이다. - 기존의 문자 스트림에서 봤.......

Naver Blog

자바 기초 46 - 직렬화(Serialization)

자바 기초 46 - 직렬화(Serialization) - 직렬화(Serialization), 웹 관련 업무를 종사하신 분이라면 한번쯤은 들어본 말이 아닐까? 필자는 자바스크립트를 통해 듣게 됬다. - 개인적으로 이해한 직렬화(Serialization)는 어떤 객체를 어느곳에 전송할 때 사용하는 걸로 알고 쓰면서 데이터를 한번에 보낼 수 있으니까 굳이 이걸 왜 할까 의문이 생긴적은 딱히 없었다. 직렬화 사용 이유 - 데이터를 저장하거나, 네트워크에서 통신할 때, 특정 객체를 보낸다고할 때 사용하는 데이터의 값 형식 데이터(직접 값을 가지고 있으며, 접근이 가능한 데이터)만 사용가능하다. - 객체를 예시로 들면, 객체에는 인스턴스 변수가 있지만, 메서드는 존재하.......

Naver Blog

Visual Studio Community 2019 다운로드

Visual Studio Community 2019 다운로드 - Visual Studio Community 2019 설치를 다루는 글입니다. - 가급적 공간을 넉넉히 만든 상황에서 다운로드합시다. * 설치환경 - OS : Windows 10 64bit Visual Studio Community 2019 설치 절차 1. 아래의 URL로 이동하여 그림과 같이 Visual Studio 다운로드 눌러주자 - 보통 Community버전만 써도 왠만한건 다 사용할 수 있다. 2. 계속 클릭 3. 다운로드 절차 진행 중.. 4. 준비된 항목과 동시에 어떤걸 설치할 지 선택할 수 있다. - 필자는 Visual Studio Community 2019로 C#을 공부하기 위해 설치 - 기본적으로 C#을 공부할꺼면 .NET 데스크톱 개발과 유니버셜 Windows 플랫폼 개발만 선택하길 추천.......

Naver Blog

자바 기초 33 - 형식화 클래스

Java - 형식화 클래스 - 패턴을 통해 입력값을 원하는 형식으로 사용하는 방법 - 입력한 숫자 문자열을 원하는 숫자, 날짜, 선택, 메시지 형식 등.. 여러 방식으로 변환할 수 있도록 하는 클래스가 있다. - 필자는 주로 사용할만한 숫자와 날짜 형식화에 대해 다루고자 한다. 1. DecimalFormat(숫자 형식화) - 숫자를 형식화할 수 있게 만든 클래스이다. - 입력한 텍스트 데이터를 패턴에 의해 숫자로 변환하는 것도 가능하다. - DacimalFormat 인스턴스를 출력 패턴에 맞춰 숫자 문자열이 출력된다. DecimalFormat 예제 * 결과 2. SimpleDateFormat(날짜 형식화) - 날짜를 형식화할 수 있게 만든 클래스이다. - Date인스턴스를 출력 패턴에 맞춰.......

Naver Blog

자바 기초 34 - Stack, Queue

자바 기초 34 - Stack, Queue - 이전 글에서 다루지 않은 Stack(이하 스택)과 Queue(이하 큐)를 다루는 글이다. Stack, Queue란? - Stack : 마지막에 저장한 데이터를 가장 먼저 꺼내게 되는 LIFO(후입선출) 구조 - 스택은 후입선출 구조로 뒤에서 실행됬던 내용을 다시 되돌리는데 주로 사용된다. - 스택은 순차적으로 데이터를 삭제하는 방식이므로, ArrayList에 사용하면 적합 - 스택 활용 예 : 웹 브라우저 뒤로 가기, 실행 취소, 역순 문자열 만들기 등 - 후입선출의 구조 중 예시로 특정 바구니에 물품을 담은 뒤 꺼낼 때 맨 위부터 꺼낸다고 볼 수 있다. - Queue : 처음 저장한 데이터를 가장 먼저 꺼내게 되는 FIFO(선입선출) 구조 - 큐.......

Naver Blog

자바 기초 35 - Generics

자바 기초 35 - Generics - 최근 List 컬렉션에서 List<?>란 것을 봤는데, 이게 잘못 본게 아니라 자바에서 이해하기 어려운 Generic이란 것을 알게되어 조금 다뤄보고자 한다. - Generic(이하 제네릭) : 다양한 타입의 객체를 다룰 때 타입 체크를 해주는 기능 - ArrayList를 예로 들 때 다양한 타입의 객체를 담을수 있지만, 일반적으로 String이나 해당 클래스 객체만 담을 수 있도록 작성한 뒤 다시 꺼낼 때 타입 체크와 형변환을 하는 경우가 있는데, 이를 해결해준다. - 임의의 참조형 타입을 작성한 뒤, 해당 참조형 타입에 걸맞춰 사용하는 방식이다. 제네릭을 사용하는 이유 1. 원하지 않는 타입의 객체를 포함되지 않게 하기(타.......

Naver Blog

자바 기초 36 - enum

자바 - enum - 같은 타입의 상수들의 집합이다. - JDK1.5부터 추가되었다. - 상수 값이 변경되면 다시 컴파일 해야하는 단점을 보완한 클래스 - 컴파일 시 정의되지 않은 상수 값을 할당할 때 컴파일 에러가 나오지 않는 문제점을 enum을 통해 고칠 수 있게 됨 - enum과 enum을 사용하지 않은 상수를 실행 시 어떤 결과가 나오는지에 대해 다뤄보고자 한다. enum 예제 1. enum과 상관없는 상수값 설정 - 결과 2. enum을 통해 상수값 설정 - 결과 - 위의 결과를 보면 원래 설정된 상수가 아니여도 타입이 같다면 설정된 값과 상관없이 되는 것을 볼 수 있지만, enum을 통해 설정된 값이 아니면 에러가 출력되는 걸 볼 수 있다.

Naver Blog

자바 기초 37 - Annotation

자바 기초 37 - Annotation - 기존 사용되던 Annotation 인터페이스의 소스코드는 주석 안에 소스코드의 설명 정보를 작성했었는데, 이를 응용한 기술이다. - 프로그램에게 정보를 주되, 프로그래밍 언어에 영향을 주지 않는다. - 컴파일러는 Annotation을 준수하며 동작한다. - 현 시대에 Annotation은 IOC 컨테이너인 스프링에서 자주 사용한다. Annotation 종류 - 오버라이딩 시 컴파일러가 실행한 오버라이딩 메서드명이 틀려도 틀린 것이 맞는지 확인하지 못하지만, @Override을 붙인 메서드가 반드시 있는지 확인한 뒤 없으면 에러메시지를 출력한다. - @Deprecated는 이전 버전에서 개선되거나, 새로운 기능이 추가되며 대체된게 나오면, .......

Naver Blog

자바 기초 38 - 람다식

자바 기초 38 - 람다식 - 메서드를 하나의 식으로 표현한 것으로, 함수형 언어를 사용할 수 있게 되었다. - JDK 1.8부터 추가되었으며, 객체지향에서는 함수가 아닌 메서드라는 특정 클래스에 속한 제약을 풀 수 있게 되었다. - 소위 '익명 함수'로 불린다. - 람다식을 다루는 인터페이스를 '함수형 인터페이스'라고 부른다. 람다식의 작성 방법 1. 메서드명과 반환타입 제거 2. 매개변수 선언부( 매개변수 1, 매개변수2 )와 실행 문장( { 실행 내용 } ) 사이에 '->'를 추가한다. 람다식 주의 사항 1. 람다식 작성 시 매개변수 선언부의 매개변수의 타입 생략이 가능하지만, 어느 하나 타입만 생략하는 것은 불.......

Naver Blog

Java - secure coding(시큐어 코딩)

Java - secure coding(시큐어 코딩) - 흔히 개발자가 소프트웨어(이하 SW)를 개발할 때 보안의 헛점으로 보여진 보안 취약점을 없애고자 하는 코딩 방법이다.- 간단히 말해서 개발 코드에서 보안 위협이 될 수 있는 부분을 없애는 보안 활동 - 행정안전부에서 주최한 'SW 개발보안 관련 가이드'에 따라 2012년 12월부터 'SW 개발보안' 의무제로부터 생겨난 코딩 방법이다.- 전자정부 프레임워크 표준 지식과 더불어 SW개발 보안을 준수하는 개발자를 목표로 생겨난 현상이라고 볼 수 있다.SW 개발보안 - 보안을 고려하여 기능 설계부터 구현 까지의 모든 흐름을 의미 * SW 개발생명 주기는 다음과 같다.1. 요구.......

Naver Blog

Java - secure coding(입력 데이터 검증 및 표현)

Java - secure coding(입력 데이터 검증 및 표현)- secure coding중 첫 번째인 입력 데이터 검증 및 표현을 다루는 글이다.입력 데이터 검증 및 표현- 프로그램 입력값에 대해 적절하지 않은 검증과 잘못된 형식지정으로 인해 발생할 수 있는 보안 약점을 의미한다.- 행안부의 코딩가이드에 명시된 입력 데이터 검증 및 표현의 보안 약점은 26가지- SQL 삽입, 자원 삽입, 크로스사이트 스크립트 등이 포함되어 있기에 간단한 예제를 작성하고자 한다.1)SQL 삽입 보안 약점과 대처 방안- DB와 연동된 웹 애플리케이션에서 입력한 데이터(SQL 문)에 대해 유효성 검증을 하지 않을 시 발생할 수 있는 보안약점을 의미한다.- 실행 시 쿼.......

Naver Blog

Java - secure coding(보안 기능)

Java - secure coding(보안 기능)- 보안 기능을 제대로 수행하지 못할 경우 발생하는 약점이다.- secure coding중 두 번째인 보안 기능을 다루는 글이다.- 부적절한 인가, 중요정보 평문 저장(또는 전송)에 대해 다루고자 한다.보안 기능- 행안부의 코딩가이드에 명시된 입력 보안 기능의 보안 약점은 24가지1)부적절한 인가와 대처 방안- 소프트웨어의 모든 실행 경로에서 접근 제어와 관련된 검사를 완전히 못한 경우, 공격자가 헛점을 파고들어 정보를 추출해 갈 수 있는 보안 약점이다.1-1. 응용 프로그램이 제공한 정보와 기능을 역할에 따라 배분하여 공격자에게 노출되는 부분을 줄이는 방법 - 보안 인증을 프로그램 설정인.......

Naver Blog

Java - secure coding(시간 및 상태)

Java - secure coding(시간 및 상태)- secure coding중 세 번째인 시간 및 상태를 다루는 글이다.- 행안부의 코딩가이드에 명시된 입력 보안 기능의 보안 약점은 7가지- 제어문을 쓰지 않거나 경쟁조건 중 검사시점과 사용시점에 대해 발생할 보안 약점을 다루고자 한다.시간 및 상태- 병렬 시스템과, 하나 이상의 프로세스가 동작하는 환경에서 시간과 상태를 잘못 관리하여 발생하는 보안 약점을 의미한다.1) 제어문을 사용하지 않는 재귀함수와 대처 방안- 재귀의 순환횟수를 제어하지 못해 자원을 과다 사용할 경우 정상적인 서비스를 제공할 수 없는 것에 대한 약점을 의미한다.1. 모든 재귀 호출을 조건문, 반복문 블럭 안에서.......

Naver Blog

Java - secure coding(에러처리)

Java - secure coding(에러처리)- secure coding중 네 번째인 에러처리를 다루는 글이다.- 행안부의 코딩가이드에 명시된 에러처리 보안 약점은 4개이다.- 오류메시지로 인한 정보누출, 취약한 패스워드 요구조건을 다루고자 한다.에러처리- 정상/비정상 에러 발생에 대해 대비해야하고 에러처리 과정 중에 발생할 보안 약점을 의미한다.1) 오류메시지의 최소 정보 포함과 대처방안- 에러를 불충분하게 처리하거나, 에러 정보에 과도한 정보(응용프로그램이 사용자 정보와 사용자의 실행환경에 대한 민감한 정보 포함)가 많을 경우 이를 공격자가 사용할 수 있는 보안 취약점이 존재한다.- 사용자 정보를 포함시킨 에러메시지로 인.......

Naver Blog

Java - secure coding(코드오류)

Java - secure coding(코드오류)- secure coding중 다섯 번째인 코드오류를 다루는 글이다.- 행안부의 코딩가이드에 명시된 코드오류 보안 약점은 7개이다.- NULL 포인터 역참조, 부적절한 자원 해제를 다루고자 한다.코드오류- 프로그램을 작성한 이후에도 해당 프로그램의 코드의 품질은 일정 수준을 유지해야 하는데, 코드가 복잡할 경우 발생하는 관리, 유지보수, 안전성 위협 등으로 인한 보안 약점을 의미한다.1) Null 포인터 역참조- 간단히 말해서 사용 객체가 Null이 될 수 없는 조건을 의도적으로 위반하여 발생된 예외 사항을 사용하는 보안 약점이다. 1-1. Null이 될 수 있는 래퍼런스는 참조하기 전에 Null값인지 검사.......

Naver Blog

Java - secure coding(API 오용)

Java - secure coding(API 오용)- secure coding중 일곱 번째인 API오용을 다루는 글이다.- 행안부의 코딩가이드에 명시된 API오용 보안 약점은 7개이다.- DNS Lookup에 의존한 보안결정, NULL 매개변수 미 조사에 대해 다룬다.API 오용- API는 OS와 응용 프로그램간의 통신에 사용되는 언어, 메세지 형식 또는 규약으로 응용 프로그램 개발 시 개발 편리성 및 효율성을 제공하는 이점이 있다고 한다.- API의 알려진 취약점과 잘못된 사용은 편리성과 상관없이 효율적이지 않고 유지보수성이 저하되며 보안상 위협을 가할 수 있다.1) DNS Lookup에 의존한 보안결정과 대처 방안- 공격자가 DNS 엔트리를 속여 도메인명에 의존해서 보.......

Naver Blog

Java - secure coding(캡슐화)

Java - secure coding(캡슐화)- secure coding중 여섯 번째인 캡슐화를 다루는 글이다.- 행안부의 코딩가이드에 명시된 캡슐화 보안 약점은 8개이다.- 제거되지 않고 남은 디버그 코드, 시스템 데이터 정보노출을 다루고자 한다.캡슐화- 소프트웨어에서 중요 정보, 기능을 은닉하는 방법에서 불충분한 캡슐화일 경우 데이터의 인가여부를 구분하지 못해 허용되지 않는 사용자간 데이터 누출이 가능해지는 보안 약점을 의미한다.- 접근제한자, 세션, 시스템 데이터 등의 잘못된 캡슐화에 의해 발생되는 약점이다.1) 제거되지 않고 남은 디버그 코드와 대처방안- 디버깅 목적으로 삽입된 코드가 개발 완료 이후에도 존재하여 실제 운.......

Naver Blog

Spring - IoC(제어의 역전) 컨테이너

Spring - IoC(제어의 역전) 컨테이너- IoC 방식으로 빈을 관리하는 컨테이너를 뜻한다.- 원하는 물건을 만들 때 필요한 여러 작은 물건을 결합할 수 있게 하는 공간- 사용된 부품에서 가장 왼쪽(A)이 가장 큰 부품, 가장 오른쪽(D)이 가장 작은 부품일 때 두 가지 결합 방법이 있다.- 우리가 모래성을 쌓는다고 할 때 작은 모래성이 점점 커지면서 큰 모래성이 되는 것과 같이, '가'와 같은 경우는 A, B, C, D가 하나로 만들어진 경우(A가 B를 만들고, B가 C를 만들고, 개발자가 직접 객체를 생성하고 제거하고 사용하는 방법)이다.- 분해한 총기를 다시 조립할 때 작은 거부터 큰 거로 조립하는 것처럼 '나'와 같.......

Naver Blog

Spring - DI(의존성 주입)

Spring - DI(의존성 주입)- 위의 내용을 먼저 보고 오면 이해하기 쉽다.(글 몇줄 안됨)- DI(Dependency Injection)를 직역하면 '의존성 주입'이라고 부른다. - 핸드폰이 일체형과 조립형이 있을 때(현재는 대부분 일체형이다..) 일체형은 핸드폰 하나에 배터리와 기계 모든것이 합쳐진 제품이지만, 조립형은 핸드폰 하나에 배터리를 쉽게 바꿔낄 수 있는데, DI는 조립방식에 해당한다. DI(의존성 주입) 장점1. 재사용성이 높아지고 코드가 간결하다.2. 종속성을 낮춘다.3. 결합도가 낮아 유연성과 확장성이 높다.DI(의존성 주입)의 방법 1. Setter 주입- 클래스의 setter method를 이용하는 방법2. Constructor 주입- 클래스의.......

Naver Blog

Spring - AOP(관점 지향 프로그래밍)

Spring - AOP(관점 지향 프로그래밍)- 관점이란 뜻에 걸맞게 어떤 내용을 관찰할 때 핵심과 공통을 나눠서 보는 걸 지향한 프로그래밍이란 뜻(특정 대상에 대해 생각이 다르다는 뜻이 아님)- 특정 모듈을 만든다고 할 때, 각각 개인이 만드는 모듈을 프로그램이 동작하는 핵심 비즈니스 로직이라고 할 때, AOP는 핵심 비즈니스 로직을 제외한 나머지 로직을 부분적으로 나눠서 모듈화하는 것- 어떻게 조금 비틀어 보자면 쓰기는 귀찮지만 어디에서든 무조건 실행하는 것으로 대충 이해하면 쉽다.- 아래와 같이 핵심 비즈니스 로직은 핵심 관심, 공통 사용 로직은 횡단 관심으로 이해하기 쉬우며 물건 / 고객 / 금융 관리는 핵심 관심이며.......

Naver Blog

Spring - Spring MVC Project 구조

Spring - Spring MVC Project 구조 - Spring MVC 프로젝트의 구조를 공부하고자 한다.- 위의 그림대로 Spring MVC Project를 생성하면 아래와 같이 구성된다. 구조 설명

Naver Blog

Spring - Maven Repository

Spring - Maven Repository- Spring MVC Project에서 Maven으로 라이브러리를 다운 받는 방법- 기존에는 개발에 필요한 라이브러리를 프로그래머가 직접 프로젝트에 추가하였지만, 원하는 라이브러리를 pom.xml에 끌어다 씀으로써 추가할 수 있다.Maven Repository 예제1. 먼저 아래의 사이트에 접속, 원하는 라이브러리를 검색하자- 필자는 ojdbc6를 검색한 다음 사용하고자 한다.- 3번째 Ojdbc6을 선택하기 2. Ojdbc6을 누르면 아래와 같이 뜨는데 여기서 11.2.0.3 버전을 눌러주자3. 그럼 누른 버전에 맞춰 저장소, 업데이트 날짜, 파일, 버전, maven등의 정보가 나온다. - Maven의 탭 안 쪽 내용을 마우스 클릭 하면 클립 보드에.......

Naver Blog

Spring - root-conxext.xml

Spring - root-conxext.xml- 스프링 MVC 프로젝트 구조 설명에서 봤듯이, 스프링 설정 파일을 의미한다.root-context.xml 파일 구조 * 위치는 아래 사진과 같다.* 내용- Services, Repositories(DAO), DB 등, 비즈니스 로직과 관련된 내용을 설정한다.- 흔히 Java단에서 쓰는 Bean을 여기서 설정한다고 보면 된다.

Naver Blog

Spring - servlet-context.xml

Spring - servlet-context.xml- 스프링 MVC 프로젝트 구조 설명에서 봤듯이, 스프링 설정 파일을 의미한다.servlet-context.xml 파일 구조* 위치는 아래 사진과 같다.* 내용- 이 글을 작성하며 servlet과 JSP를 같이 쓰는지에 대해 필자는 알고 싶어졌다.- JSP에서 서블릿의 HTML 작성, 출력하는데 재 컴파일해야하는 문제를 보완하기 위해 나왔다. 왜 servlet을 쓸까? JSP만 쓰면 되는게 아닐까?- 답은 간단하다. JSP가 servlet을 보완해서 만든 만큼 servlet기반이기 때문에, JSP가 servlet의 단점인 HTML를 다루는데 편하게 해주지만, servlet은 쓰레드와 자바기반이기 때문에 웹 애플리케이션 운영에 효율적이다.- 효율적인 웹 애.......

Naver Blog

Spring - web.xml

Spring - web.xml- 스프링 MVC 프로젝트 구조 설명에서 봤듯이, WAS(웹 애플리케이션 서버)의 설정을 작성하는 파일이다.web.xml 파일 구조* 위치는 아래 사진과 같다.* 내용- 웹 애플리케이션의 구성과 참조한 웹 서버의 웹 요청 처리 방식을 기술한 문서- 브라우저가 서블릿 페이지에 접근하기 위해선, 웹 애플리케이션 서버에 요청한 값에 맞는 값을 받아내는데, web.xml은 경로, 요청 처리하는 서블릿 사이의 매핑 등을 정의한다.

Naver Blog

Spring - pom.xml

Spring - pom.xml- 스프링 MVC 프로젝트 구조 설명에서 봤듯이, Maven 설정 파일이다.pom.xml 파일 구조* 위치는 아래 사진과 같다.* 내용- 별 달리 기술할 게 없다. - properties : 해당 프로젝트의 프로퍼티를 작성한다.- repository : maven으로 다운받은 라이브러리의 저장소를 의미한다.* dependency- dependency : maven으로 다운받을 라이브러리를 작성한다.* build- build : update maven을 할 때 빌드하는 내용을 작성한다.- plugin : 말 그대로 플러그인을 의미한다.

Naver Blog

Spring - Spring / MyBatis / Oracle 연동하여 회원정보관리 - 회원정보 수정 / 삭제 (log4j.xml, BootStrap v4.4.1 사용)

*** Spring Framework / MyBatis / Oracle을 연동하여 회원정보 수정/ 삭제- Spring Framework / MyBatis / Oracle를 연동하여 이전 내용에 이어 회원정보 수정 / 삭제를 구현한다.- 이전 내용에 이어서 하기 때문에 필요한 항목은 따로 확인하시길 바랍니다.- 부트스트랩은 지우셔도 되지만, 필요하시다면 회원가입 설명 사이트에 설치 방법 작성되어 있습니다. * 로그인, 회원목록(select id,pw || select memberlist )* 회원가입 (insert member)- 부트스트랩 내용 있습니다.** 준비사항 java- OS : WINDOWS 10 64bit- 개발도구 : sts4 for Eclipse- DBMS : Oracle 11g- JDK : JAVA JDK 1.8- 웹서버 : apache-tomcat 8.5.59- SPRING V.......

Naver Blog

Java - Spring_mybatis_oracle연동_로그인 / 회원정보 관리(기본 기능 구현 예시)

Java - Spring_mybatis_oracle연동_로그인 / 회원정보 관리(기능 구현 예시)- 유효성 검사 x인 통합본- 말 그대로 기본 기능 구현을 목표로 두었기 때문에, 해당 내용은 부실하다.준비사항- OS : WINDOWS 10 64bit- 개발도구 : sts4 for Eclipse- DBMS : Oracle 11g- JDK : JAVA JDK 1.8- 웹서버 : apache-tomcat 8.5.59- SPRING VERSION : 5.2.9.RELEASE- Jquery : 3.5.1 - 연동하기 전 DB, JDK, 개발도구가 설치되어 있어야한다.* DBMS - 오라클 * 개발도구 - STS4* JDK - 1.8* APACHE-TOMCAT 모든 버전(버전 - bin - 원하는 버전 선택)통합본 github

Naver Blog

Vue.js - 뷰 라우터

Vue.js - 뷰 라우터- 뷰에서 라우팅 기능(웹 페이지 간 이동 방법)을 구현하도록 지원하는 공식 라이브러리- 라우팅 기능을 쓰면 클라이언트의 요청에 따른 결과에 깜빡거림 없이 매끄럽게 화면을 전환할 수 있다.뷰 라우터 태그 및 설명뷰 라우터 태그 예제1. 한 화면에 단일 컴포넌트 적용 * 결과(세번째 컴포넌트로 이동 클릭 시)- 위의 url에 #/third가 추가된걸 확인할 수 있다.2. Nested Router- 라우터로 이동 시 최소 2개 이상의 컴포넌트를 화면에 출력하는 것- 상/하위 컴포넌트 출력 가능 * 결과 - url이 없으니까 처음엔 아무것도 없음* 상위 컴포넌트 출력- #/ 뒤에 상위 컴포넌트 url(comp1)을 입력해보자- .......

Naver Blog

Vue.js - 뷰 템플릿

Vue.js - 뷰 템플릿- 뷰 템플릿이란, HTML, CSS 등의 마크업 속성과 뷰 인스턴스에서 정의한 데이터 및 로직들을 연결한 다음 사용자가 브라우저에서 HTML형식으로 볼 수 있게 하는 속성이다.- 간단히 보면 마크업 속성에 js내용을 덧붙인 느낌인거 같다.(그래서 Vue.js가 html, css, js를 합친 느낌?)- 템플릿 속성은 사용자가 볼 수 없는 라이브러리 내부에서 template속성에서 정의한 마크업 + 뷰 데이터를 가상 돔 기반의 render() 함수로 변환하는데, 변환된 render() 함수는 최종적으로 사용자가 볼 수 있게 화면을 그린다.템플릿 속성 사용 방법1. ES5에서 뷰 인스턴스의 template 속성 활용* template속성을 사용한 경우와 사용하.......

Naver Blog

Vue.js - Axios(액시오스)

Vue.js - Axios(액시오스)- Vue에서 사용되는 HTTP 통신 라이브러리- Promise(서버에 데이터를 요청하여 받아오는 동작과 같은 비동기 로직 처리에 유용한 자바스크립트 객체) 기반의 API형식이 다양하게 제공되어 별도의 로직을 구현할 필요 없이 간편하게 원하는 로직을 구현할 수 있다.Axios 설치1. 터미널에서 npm을 이용하여 설치하는 방법(ES6 기준)1-1. atom에서 터미널 패키지(platformio-ide-terminal)를 설치1-2. 터미널(ctrl + ` 입력 시 터미널 생성)에 해당 명령어 입력 후 엔터- npm install --save axios2) CDN을 이용하는 방법- <script src="https://unpkg.com/axios/dist/axios.min.js"&.......

Naver Blog

Spring - 스프링이란?

Spring - 스프링이란?- Java언어를 기반으로 한 Java의 웹 프레임워크Spring의 주요 특징1. 경량 컨테이너로 크기와 부하의 측면에서 가벼워지고 자바 객체를 생성, 소멸같은 생명주기 관리와 스프링으로부터 필요한 객체를 얻어온다.2. IoC(제어의 역전)을 통해 개발자가 직접 객체를 관리하는 것이 아닌 스프링 컨테이너에서 직접 객체를 관리한다.3.DI(의존성 주입)을 통해 객체를 직접 생성하는 것이 아닌 외부에서 생성한 후 주입하는 것으로 모듈간의 결합도가 낮아지고 유연성이 높아진다.4. AOP(관점 지향 프로그래밍)라는, 여러 객체 공통 사용 기능(보안, 로깅, 트랜잭션 등)을 분리하여 관리(중복된 기능을 사용할 시 따로 호.......

Naver Blog

Spring - 타일즈(Tiles)

Spring - 타일즈(Tiles)- 반복되는 부분들을 한 곳에서 관리할 수 있게 도와주는 템플릿 프레임워크이다.- 웹페이지에서 흔히 보는 상단, 하단 메뉴 뿐만 아니라 측면과 메인부분을 작성- 우리가 아는 JSP Include와 비슷하지만, Tiles는 레이아웃 템플릿 엔진으로 레이아웃을 구성하는데 좀 더 세분화되고 관리하기 쉬워 유지보수에 용이하다.- tiles에는 상속 기능이 있기때문에, 기존의 값을 참조하여 그대로 쓸 수 있다.- 2021.03.02 기준으로 3.0.8버전까지 나왔으며 더 이상 지원하지 않는다.타일즈(Tiles) 3.0.8 최소 요구 사항- JSTL 필수- JDK 1.7 이상- Servlet 2.5 이상( 2.4도 작동할 수 있음)- JSP 2.1이상( 2.0도 작동할.......

Naver Blog

JQuery - 효과 및 애니메이션 메서드

JQuery - 효과 및 애니메이션 메서드- HTML 요소에서 css를 좀 더 역동적이고 다양한 효과를 주는 방법- 애니메이션처럼 생동감 있는 화면을 구현할 수 있다.** 효과 애니메이션 메서드 종류 별 설명* 효과 메서드 * 효과 메서드 작성법(fadeTo() 제외)- 소요시간의 단위는 ms, 즉 1,000은 1초를 의미한다.- 가속도는 swing(시작, 끝은 느리게 중간은 빠르게-기본값)과 linear(일정 속도)가 있다.* fadeTo() 작성법- 소요시간의 단위는 ms, 즉 1,000은 1초를 의미한다.- fadeTo()는 다른것과 달리 0~1까지의 투명도 값을 설정 할 수 있는데, 1에 가까울 수록 선명하게 보인다.* animate() 작성법- 스타일 속성은 css에 작.......

Naver Blog

Vue.js - 뷰 인스턴스

Vue.js - 뷰 인스턴스- Vue로 화면 개발 시 필수적으로 생성해야 하는 기본 단위- 인스턴스는 객체를 소프트웨어에 실체화한것으로, 일반적으로 new 인스턴스명으로 선언하는데 객체를 메모리에 할당하는 것뷰 인스턴스의 옵션 속성- data의 바꿀 데이터명을 사용하여 값 변경이 가능하나, Object.freeze(바꿀 데이터명)을 사용하면 속성 값을 바꿀 수 없다.- computed는 getter함수와 같은 기능으로 사용되지만 사용에 따라 setter함수를 만들어 쓸 수 있다.(computed의 데이터명 안에 'get : function(){ getter내용 }, set : function(){ setter내용 }' 또는 'get() {내용}, set(바꿀값){내용}' 작성 )* comput.......

Naver Blog

Vue.js - 뷰 컴포넌트

Vue.js - 뷰 컴포넌트- 컴포넌트란 화면에 구성되는 특정 영역을 의미한다.- 미리 짜여진 컴포넌트로 일괄적인 패턴으로 개발하거나 재활용과 유지보수에 용이하다.- 특정 영역이란 설계적인 측면이 강조되며 부모 - 자식 구조를 따르고 분할 공간으로 사용되기에 안성맞춤인것 같다.(뿌리를 내리는 트리 구조)뷰 컴포넌트의 등록 방법- 컴포넌트 이름은 template 속성에서 사용할 HTML 태그 이름을 적어준다.- 컴포넌트 이름은 모두 소문자 또는 단어와 단어 사이를 '-'로 잇지 않아도 된다.1) 전역 컴포넌트 등록 방법- 뷰 컴포넌트에 내용을 가진 컴포넌트 이름을 설정한다.2) 지역 컴포넌트 등록 방법- Vue 객체에 c.......

Naver Blog

Git - 최신 버전으로 Commit하기

Git - 최신 버전으로 Commit하기- fetch를 통해 github에 등록된 데이터를 받아오고자 했으나, 위와 같이 commit이 모두 된 상태라고 뜬다. 아마 로컬 저장소의 내용과 차이가 없어서 그런듯 함- 필자는 로컬 저장소가 아닌 원격 저장소에 있는 최신버전을 commit하고자 하여 이 글을 작성개발환경 - OS : WINDOWS 10 64bit- 개발도구 : sts4 for Eclipsegithub repository 최신 commit버전으로 강제 변경1. github에 연동된 프로젝트 파일 위치로 이동하여 Git Bash Here 클릭2. 필자와 같이 fetch를 할 때 master를 찾을 수 없는 경우 뜨는 현상- 원격 저장소 : origin 확인- master를 갖고오고자 했으나 remote 저장소는 origin.......

Naver Blog

JavaScript - Cookie

*** JavaScript - Cookie- 사용자가 어떤 웹 사이트를 방문했을 때 남는 저장 기록 파일으로 사용자가...

Naver Blog

JavaScript - ProtoType(프로토타입)

*** JavaScript - ProtoType(프로토타입)- 클래스 개념이 없는 자바스크립트에서 여러 함수를 등록하...

Naver Blog

JQuery - 선택자 1(직접 선택자 / 인접 관계 선택자)

JQuery - 선택자- HTML 요소에서 CSS(정적 스타일)을 동적으로 적용할 수 있는 방법- 문서 객...

Naver Blog

JQuery - 선택자 2(탐색 선택자 - 위치 탐색 / 속성 탐색)

JQuery - 선택자- HTML 요소에서 CSS(정적 스타일)을 동적으로 적용할 수 있는 방법- 문서 객...

Naver Blog

JQuery - 객체 편집 메서드

JQuery - 객체 편집 메서드- 객체를 복제, 새 객체를 생성, 원하는 위치에 선택한 요소를 삽입, 선택 요소 삭제, 추가 등.. 말 그대로 편집과 관련된 기능** 객체 편집 메서드 종류 별 사용법, 설명- 객체 편집 메서드인만큼 객체 요소에서 어떤 메서드를 사용하느냐에 따라 새 요소를 추가, 삭제하거나 객체 요소를 변경, 삭제 등 여러가지를 조작할 수 있다.- before / after 와 관련된 메서드를 사용하면 선택 요소의 근처에 새 요소를 추가할 수 있다.- clone은 복제하다란 뜻이 있듯이, form에서 입력란을 복제할 때 쓰는걸로 보인다. 말 그대로 block 영역이나 inline-block영역을 복제하는 느낌?- remove나 empty는 form의 seri.......

Naver Blog

JQuery - 이벤트 등록 메서드

JQuery - 이벤트 등록 메서드- 이벤트란, 특정 행동에 의해 발생되는 현상을 의미한다.- 말 그대로 우리가 컴퓨터나 모바일과 같은 전자 기기에서 데이터 입력하는 특정 행동에 따라 데이터를 출력하는 방법이다.- 이벤트 등록 메서드는 사용자의 예상된 행동을 기반으로 어떤 이벤트를 발생 시킬 지 설정하는 메서드와 같다.** 이벤트 등록 메서드 종류 별 설명- 마우스 이벤트는 보통 자식 요소와 관련되어 나눠진다.- mouseover()와 mouseenter()의 차이는 자식 요소 영역의 포함 유무(over - 자식영역 포함 / enter - 자식영역 미 포함)이다.- mouseout()과 mouseleave()의 차이는 자식 영역에 들어가 요소를 빠져나갈 때 감지 여.......

Naver Blog

JQuery - 그룹 이벤트 등록 / 제거 메서드

JQuery - 그룹 이벤트 등록 / 제거 메서드- HTML 요소에서 그룹 이벤트 등록 메서드를 통해 1:1의 이벤트 발생이 아닌, 1:n형식의 이벤트를 발생할 수 있도록 등록 할 수 있음- 그룹으로 진행되는 만큼 동적 생성, 복제된 요소에도 이벤트를 적용할 수 있다.(특정 이벤트에 의해 생성 또는 복제된 요소도 등록 이벤트가 적용된다는 뜻)- 이벤트 등록이 있으면, 제거도 있듯이 on / off, bind / unbind, delegate / undelegate으로 나뉜다.** 그룹 이벤트 등록 종류 별 사용법, 설명- on과 bind의 차이는 사실상 동적 요소에도 이벤트를 등록하느냐이며, 제이쿼리 1.7 이상을 쓸 경우 bind보다 on을 쓰도록 권장하고 있다.(bind는 사라.......

Naver Blog

JQuery - AJAX

JQuery - AJAX- 자바스크립트에서 XML 데이터를 받기 위한 비동기 방식의 통신 기술- 비동기 방식이란, 서버에 신호를 보낸 후 응답 상태와 상관없이 다음 동작을 수행하는 것으로 필요 부분만 골라먹는 재미를 느낄 수 있다.- 자료 요청 > 서버 컴퓨터 > 자료 응답의 경로에서 페이지가 갱신되며 모두 완료되는 동안 클라이언트는 사용할 수 없는 게 동기 방식이다.- 클라이언트가 서버에 자료를 요청할 때 화면 전환 없이 요청 자료를 전송받는 것, 페이지 리로드가 필요 없다.- AJAX를 사용하기 위해선 웹 서버가 필요하다.** Ajax 장 / 단점 장점- HTML 화면에서 페이지 갱신 없이 DATA를 주고 받아 결과를 그대로 보.......

Naver Blog

Vue.js - Vue.js 개발 환경 설정

Vue.js - Vue.js 개발 환경 설정 개발 환경- OS : WINDOWS 10 64bit- IDE : ATOM 1.54.0 For 64-bit Windows 7 or laterVue.js - Vue.js 개발 환경 실습1-1. 아래 홈페이지로 이동1-2. Download를 클릭하여 다운로드받기1-3. ATOM Setup파일 실행1-4. Atom.exe 실행됨과 동시에 아이콘 생성- 우측 맨 위에 나온 내용은 url을 http://가 아닌 atom://으로 할지 선택하란 의미이며 torrent 다운로드 할때 앞에 marnet://이 있는 비슷한 맥락으로 http 프로토콜이 아닌 아톰 프로토콜을 사용하게 할 수 있는 부분이다.- atom 프로토콜을 쓰기 위해 나중에 바꿀 수 있으므로 yes를 눌러주자2-1. Atom theme 설정- File > Settin.......

Naver Blog

JQuery - 배열 관련 메서드

JQuery - 배열 관련 메서드- HTML 문서 내의 배열 요소를 다루는 메서드- 다중 체크 요소의 데이터를 쓰거나 배열 데이터를 HTML 문서 객체 요소로 반복 출력하는 등.. 배열 데이터를 다루는데 주로 사용한다.- 배열 관련 메서드의 처음 시작은 0부터 시작하며, 배열에 저장된 데이터 뿐만 아니라, 배열에 저장된 문서 객체만큼 반복 실행 할 수 있다.** 배열 관련 메서드 종류 별 사용법, 설명

Naver Blog

JQuery - 속성 조작 메서드

JQuery - 속성 조작 메서드- 요소의 속성을 조작할 때 사용하는 메서드로 선택 요소에 속성을 바꾼다- 선택한 요소에 새 요소를 생성, 복사, 삭제, 변환을 할 수 있다.** 속성 조작 메서드 종류 별 사용법, 설명- 전반적으로 속성 값을 생성, 수정, 복사, 삭제하는 기능을 수행하는 만큼, 특정 행동에 따라 속성 값이 변환되는 용도에 주로 쓰이는 걸로 보인다.- 특히, attr()과 prop()는 속성명과 상태 속성명이라는 차이를 가지고 있는 만큼 attr()은 요소가 가지고 있는 정보(속성명 ='정보'일 경우의 정보)와 prop()는 요소 상태의 활성화(버튼과 비슷한 맥락)쪽과 연관되어 있다.- class와 관련된 메서드는 특정 행.......

Naver Blog

Vue.js - Vue.js란?

Vue.js란?- 웹 페이지 화면을 개발하기 위한 front-end framework이다.- Evan You가 만든 점진적 프레임워크로 2014년 2월에 공식으로 배포됬다.- 화면단 데이터 표현에 관한 기능을 중점적으로 지원하며, 프레임워크의 기능은 라우터, 상태 관리, 테스팅 등을 쉽게 결합할 수 있는 형태로도 제공된다.- 컨트롤러 대신 뷰 모델을 가지는 MVVM(Model - View - ViewModel)패턴 기반이다. Vue.js의 특징1. MVVM 패턴으로 화면의 요소를 제어하는 코드, 데이터 제어 로직을 분리하여 코드를 더 직관적으로 이해할 수 있으며, 유지보수하기 용이하다.2. 컴포넌트 기반의 프레임워크, 뷰의 컴포넌트를 조합하여 화면을 구성할 수 있다........

Naver Blog

JQuery - 선택자 3(탐색 선택자 - 콘텐츠)

JQuery - 선택자- HTML 요소에서 CSS(정적 스타일)을 동적으로 적용할 수 있는 방법- 문서 객체 모델(DOM, Document Object Model)인 HTML문서 객체 구조에서 문서 객체를 선택하여 사용할 수 있다.- 문서 객체란, 우리가 HTML문서에서 보는 <body>, <div>, <span> 등의 태그를 의미한다.- 결국, 특정 태그를 선택해서 수정하거나 적용하는 용도로 사용하는 것** 탐색 선택자(콘텐츠) 종류 별 사용법, 설명- 배열 관련 메서드에 비해 선택 요소를 제외하거나 가져오는 만큼 데이터를 가져오는 것보다 css를 변형하는 용도로 쓰이는 것으로 보인다.- 쓴다면 쓰겠지만.. 배열 관련 메서드를 쓰는게 바람직해보.......

Naver Blog

Spring - Spring Config Editor가 안 나올 경우

- 현재 진행중인 프로젝트에서 root-context.xml과 servlet-context.xml파일이 xml파일로 되어 있어, namespace를 쓰려고 하는데..? namespace가 없다?* 다른 사람들의 내용은 파일 우클릭 - open with - others - spring config editor 클릭할 경우 되는 것을 봐야했는데.. 내가 찾는 건 2시간 넘게 안 보인다...(집단 지성의 힘이 여기서 끝나는줄 알았다.)- 분명 window - eclipse marketplace에서 spring을 설치하라고 해서 했는데 안된다.. 왜 안될까..?- 계속 찾아보니 구글링 결과 sts4 버전에 namespace는 없어서 3을 다운받으면 자연스레 생긴다고 한다. - 그래서 기존 스프링과 관련된 걸 다 uninstall 한 뒤 sts3 버전으.......

Naver Blog

Spring - Spring / MyBatis / Oracle 연동하여 회원정보관리 - 로그인, 회원목록 (log4j.xml사용)

*** Spring Framework / MyBatis / Oracle을 연동하여 회원정보관리 - 로그인, 회원목록- Spring Framework / MyBatis / Oracle를 연동하여 로그인, 회원목록 구현을 목표로 둔다.** 준비사항 java- OS : WINDOWS 10 64bit- 개발도구 : sts4 for Eclipse- DBMS : Oracle 11g- JDK : JAVA JDK 1.8- 웹서버 : apache-tomcat 8.5.59- SPRING VERSION : 5.2.9.RELEASE- 연동하기 전 DB, JDK, 개발도구가 설치되어 있어야한다.** 파일 구조(더 추가될 예정)1. Oracle 11g2. pom.xml (21.02.09 기준 ojdbc6 설정) 내용 추가* log4j.xml을 사용안할 경우 아래의 내용은 추가하지 않아도 됨3. log4j.xml(안할 경우 바로 4번으로 이동.......

Naver Blog

Spring - Spring / MyBatis / Oracle 연동하여 회원정보관리 - 회원가입(log4j.xml, BootStrap v4.4.1 사용)

*** Spring Framework / MyBatis / Oracle을 연동하여 회원정보관리 - 회원가입- Spring Framework / MyBatis / Oracle를 연동하여 회원가입 구현을 목표로 둔다.** 준비사항 java- OS : WINDOWS 10 64bit- 개발도구 : sts4 for Eclipse- DBMS : Oracle 11g- JDK : JAVA JDK 1.8- 웹서버 : apache-tomcat 8.5.59- SPRING VERSION : 5.2.9.RELEASE- 연동하기 전 DB, JDK, 개발도구가 설치되어 있어야한다.** 파일 구조(더 추가될 예정)1. Oracle 11g ( 로그인, 회원목록 글 수정사항)- 날짜를 사용하기 위해 to_date()로 문자열 변환하는데, format 환경 확인을 하자(중요하다. 필자는 이걸 통해 2시간을 넘게 날렸다.)- 이전 글.......

Naver Blog

Spring - MyBatis - Oracle 연동 1 (Maven / root-context / mybatis-context, mapper / oracle table)

*** Spring - MyBatis 연동- 오늘은 Spring - MyBatis 연동에 대해 설명하고자 한다.** JDBC와 MyBatis 차이** 준비사항- OS : WINDOWS 10 64bit- 개발도구 : sts4 for Eclipse- DBMS : Oracle 11g- JDK : JAVA JDK 1.8- 웹서버 : apache-tomcat 8.5.59- SPRING VERSION : 5.2.9.RELEASE- 연동하기 전 DB, JDK, 개발도구가 설치되어 있어야한다.* DBMS - 오라클 * 개발도구 - STS4* JDK - 1.8* APACHE-TOMCAT 모든 버전(버전 - bin - 원하는 버전 선택)** Spring - MyBatis 연동 1. Oracle DBMS의 Mybatis를 사용하기 위해 pom.xml에 Mybatis를 추가* POM.XML에 해당 dependency를 작성해주자2. MyBatis 설.......

Naver Blog

DB(Oracle 기준) - Trigger(트리거)

*** Trigger(트리거)- 방아쇠와 같은 의미로, DB에서 특정 이벤트 발생 시 동작** 사용 이유1. DB테이블 생성 시 참조 무결성, 데이터 무결성 등의 복잡한 제약 조건을 생성하기 위해2. DB 테이블의 데이터가 생기는 작업에 대한 감시, 보완과 생긴 변화에 따라 필요한 다른 프로그램을 실행하는 경우3. 불필요한 트랜잭션 방지4. 컬럼 값 자동 생성5. 복잡한 뷰 생성* 작성법** 트리거 옵션 설명** 트리거 사용 시 주의사항- 트리거를 걸어놨기 때문에, DDL문장에 의해 변경될 가능성이 있다.- 트리거 내에서는 TCL을 사용할 수 없다.- 큰 테이블의 트리거는 수행속도에 영향을 미친다.

Naver Blog

USB 디스크 인식 불가(포맷 오류)

*** USB 디스크 인식 불가(포맷 오류 및 DISK CLEAN 오류)- 이 글은 WINDOW10 부팅 USB를 만들기 위해 작성한 글이다.- 대부분 DISK리스트를 보고 포맷할 USB를 선택해 CLEAN하란 얘기만 있다. 하지만, 나처럼 안 된 사람들을 위해 글을 작성했다.1. CMD(관리자로 열기)창을 통해 입력- 이와 같이 CLEAN이 안됨2. 그 다음 포맷 유도하지만 당연히 안됨- 좌측(기본값)에서 우측(변경값)을 하려나, 용량을 알 수 없음이 뜬다.- 해당 디스크를 볼륨을 넣어도 포맷을 못함 드라이버는 있고 범용 직렬 버스 컨트롤러에서 보여도 안 되서 너무 화가 나지만, 계속 검색해본 결과 해당 아이템을 발견했다!3. SD Card Formmater 사용 - 아래의.......

Naver Blog

Windows 10 usb 부팅 디스크 생성

*** Windows 10 usb 부팅 디스크 생성 - 이 글은 Windows 10 usb 부팅 디스크 생성을 목표로 한다.- Windows 초기화를 하느니, 부팅디스크를 만들어서 설치하는게 좋다.** 필요사항- 반드시 OS설치할 PC를 백업해놓기(필수)- 포맷되어 있는 8GB 이상의 USB** 절차1. 먼저 포맷된 8GB 이상의 USB를 꽃아두자.- 참고로 아래와 같이 USB를 인식하지 못할 경우 아래의 링크를 참조하자2. 해당 홈페이지에 가서 지금 도구 다운로드 클릭 3. 해당 파일을 실행하여 다운로드하기- 동의 클릭 - 다음 클릭- 설치 버전 선택 후 다음 클릭- 우린 usb 부팅 디스크를 만들기 때문에 USB 플래시 드라이브 선택 후 다음 클릭- 부팅 디스크로.......

Naver Blog

DB - Optimizer(옵티마이저)

*** Optimizer(옵티마이저)- SQL개발자가 SQL 실행계획을 수립하고 SQL을 실행하는 DBMS의 소프트웨어- SQL 실행계획은 SQL 성능에 아주 중요한 역할을 한다.** 특징 - 옵티마이저는 데이터 딕셔너리에 있는 오브젝트 통계, 시스템 통계 등의 정보를 사용해서 예상되는 비용을 산정한다.- 여러 실행계획 중에서 최저 비용을 가진 계획을 선택, SQL을 실행한다.- 즉, 효율적인 업무방안을 제시하여 SQL를 최적화 하는 점** 옵티마이저 종류1) 규칙 기반 옵티마이저(Heuristic Optimizer)- 미리 정해놓은 규칙에 맞춰 엑세스 경로를 평가, 실행계획을 선택- 엑세스 경로 별 인덱스 구조, 연산자, 조건절 형태를 중요시 한다.2) 비.......

Naver Blog

SQL(Oracle 기준) - SYNONYM

*** SYNONYM- 오라클 객체(TABLE이나 SEQUENCE 등)에 대한 별칭(Alias)을 의미한다.- SYNONYM 사용자는 객체들의 소유자, 이름, 스키마를 알 수 없고 SYNONYM 이름으로 DML 문장을 실행하여 보안성이 좋다.- 긴 객체의 이름을 줄여 DB 사용자를 위해 SQL문을 단순화할 수 있다.- SYNONYM을 참조해서 사용할 경우 이름을 바꾸거나 이동할 때 SQL문에 사용할 SYNONYM만 다시 정의하면 수정할 필요 없이 사용할 수 있다.- 장점이 보안성, 편의성인 것 같다.(약간 캡슐화, 다형성이 보이는 건 기분탓이다.)** SYNONYM 종류- PUBLIC SYNONYM : 모든 사용자가 사용할 수 있으며 공유한다.- PRIVATE SYNONYM : 생성한 사용자(특정 사용자)만 사.......

Naver Blog

Spring - MyBatis - Oracle 연동2(controller / DAO(impl) / DTO / Service(impl) / view(jsp) - 회원목록 출력 )

*** Spring - MyBatis 연동 2(controller / DAO(impl) / DTO / Service(impl) / view(jsp) - 회원목록 출력 )- 이전의 내용에 이어서 Spring - MyBatis 연동한 다음, 내용을 출력하고자 한다** 준비사항- OS : WINDOWS 10 64bit- 개발도구 : sts4 for Eclipse- DBMS : Oracle 11g- JDK : JAVA JDK 1.8- 웹서버 : apache-tomcat 8.5.59- SPRING VERSION : 5.2.9.RELEASE- 연동하기 전 DB, JDK, 개발도구가 설치되어 있어야한다.* DBMS - 오라클 * 개발도구 - STS4* JDK - 1.8* APACHE-TOMCAT 모든 버전(버전 - bin - 원하는 버전 선택)** Spring - MyBatis 연동 2(controller / DAO(impl) / DTO / Service(impl) / view(jsp.......

Naver Blog

파이썬 기초 15 (bool)

*** bool- True(참), False(거짓)을 나타내는 자료형 - 대체로 자료형에서 빈값은 False로 나타낸다.** 자료형 bool 판별** bool 연산- bool 내장 함수를 사용(작성 : bool(판별할 값))- 참과 거짓을 판별할 수 있다.** bool 예제* 결과

Naver Blog

파이썬 기초 16 (Package)

*** Package(패키지)- 파이썬 모듈을 디렉터리 구조(계층형)로 관리할 수 있게 만든 방법- 패키지 구조로 작성 하는 것이 협업과 유지 보수 면에서 좋다.** 개발 환경- OS : WINDOWS 10 64bit- 개발도구 : visual studio code 1.53.0- Python version : 3.8.7** 패키지 설치, 삭제 방법- 먼저, 패키지를 확인하기 위해 pip(패키지 라이브러리 관리 시스템)에 import한 패키지가 없는 것을 확인해야한다.1) 확인하는 방법은 간단하다 'pip list'를 입력, 2) 설치 방법- 'pip install 패키지이름'을 통해 설치하기* numpy 패키지를 설치한 뒤 확인3) 삭제 방법- 'pip uninstall 패키지이름'을 통해.......

Naver Blog

SQL(Oracle 기준) - Window Function(윈도우 함수), FIRST_VALUE(), LAST_VALUE(), LAG(), LEAD() - 그룹 내 행 순서 함수

*** Window Function- 행과 행간의 관계를 정의하는 함수- 순위, 합계, 평균, 행 위치 등을 조작할 수 있다.- GROUP BY 구문과 같이 사용할 수 없다.- 중첩 사용은 불가능하지만, 서브쿼리에서 사용 가능하다.** WINDOW 함수 구조* 기본 작성 방법** WINDOWING 구조* BETWEEN 사용 / 미 사용 타입** 그룹 내 관련 함수** 그룹 내 행 순서 관련 함수- 그룹 내 행 순서를 지정할 수 있다.- 기준행에서부터 범위를 지정하여 특정 범위의 값을 가져오거나 위치에 따라 가져오는 값이 다르다.- SQL SERVER에서 지원하지 않는다.- FIRST_VALUE : 파티션 별 윈도우에서 가장 먼저 나온 값을 구할 수 있다.- LAST_VALUE : 파티션 별 윈도.......

Naver Blog

SQL(Oracle 기준) - Window Function(윈도우 함수), CUME_DIST(), PERCENT_RANK(), NTILE(), RATIO_TO_REPORT()

*** Window Function- 행과 행간의 관계를 정의하는 함수- 순위, 합계, 평균, 행 위치 등을 조작할 수 있다.- GROUP BY 구문과 같이 사용할 수 없다.- 중첩 사용은 불가능하지만, 서브쿼리에서 사용 가능하다.** WINDOW 함수 구조* 기본 작성 방법** WINDOWING 구조* BETWEEN 사용 / 미 사용 타입** 그룹 내 관련 함수그룹 내 비율 관련 함수** 그룹 내 비율 관련 함수- 말 그대로 그룹 내에서 찾고자 하는 값의 비율을 나타낸다.* CUME_DIST- 주어진 그룹에서 상대적인 누적 분포도 값을 반환한다.- 구하는 값보다 작거나 같은 값을 가진 ROW수를 총 ROW수로 나눈 값을 상대적으로 나타내며, 범위는 0보다 크고 1보다 작거나 같다.......

Naver Blog

DB - Schema(스키마)

*** Schema- DB의 가장 기본적인 요소- 데이터들간의 논리적 구조 및 관계를 기술한 것- 개체(ENTITY), 속성(ATTRIBUTE), 관계(RELATIONSHIP), 제약 조건(CONSTRAINT) 등이 포함된 개념의 오브젝트- 사용자, 설계자, 개발자가 DB를 보는 관점에 따라 DB를 기술하고 이들간의 관계를 정의한 ANSI 표준인 3층 스키마(외부 / 개념 / 내부)가 있다.- 3층 스키마는 DB의 독립성을 확보하기 위한 방법이다.** Schema의 구조 내부 스키마- 개발자 관점에서 보는 DB의 물리적 저장 구조- 물리적 스키마로 불리며, 데이터 저장구조, 레코드 구조 등을 의미 외부 스키마 - 사용자 관점에서 보는 업무와 관련된 데이터 접근- 서브 스키마로 불리며.......

Naver Blog

SQL(Oracle 기준) - Merge(병합)

*** Merge(병합)- 처리 대상 테이블과 목표 테이블의 조건에 따라 데이터를 수정, 등록, 삭제- 데이터가 존재하면 업데이트, 존재하지 않으면 입력을 하는 용도로 사용- ON 조건 >> 조건에 사용된 칼럼은 update가 불가능하다.- Oracle 9i부터 사용 가능하지만, delete는 오라클 10g버전부터 사용 가능하다.* 작성 방법** Merge(병합) 예제1. EMP 테이블과 비교할 타깃 테이블을 작성(EMP의 DEPTNO가 10인 데이터)한 다음 EMP_TEMP과 EMP를 비교, 데이터가 있을 시 급여 50% 인상 없으면 EMP테이블의 레코드를 타깃 테이블로 INSERT 한 값 출력- EMP_TEMP 테이블 생성CREATE TABLE EMP_TEMP NOLOGGING AS SELECT * FROM EMP WHERE DEPT.......

Naver Blog

인프런(Inflearn) - 예제로 배우는 스프링 입문(개정판), 스프링 공부 1

*** 백기선 개발자님의 스프링 사용 입문(수업 13개, 총 2시간 26분, 초급 수준, 무료, 스프링 부트 사용)- 정말 간단한 수업 내용으로, 스프링에서 제공하는 예제 PetClinic을 기반으로 수업 내용을 진행- 스프링이 낯선 사람들은 대부분 프로젝트 설정에서 애를 먹는 경우가 많지만, 해결할 시 가장 빠르게 수업 내용을 진행해나갈수 있음 - 기본에 충실한 내용이 바탕인만큼 정말 기초를 배우는 수업에 적합하며, 자바 기초 지식을 필요로 함- 메이븐으로 다운 받은 jar파일을 실행하는만큼 빠르게 실행할 수 있지만, 가끔 css가 깨지는 경우가 발생하므로 그땐 메이븐 재빌드를 하면 해결이 되는 것을 확인- 스프링 IOC, AOP, PSA .......

Naver Blog

SQL(Oracle 기준) - PROCEDURE(프로시저)

*** PROCEDURE- PL/SQL 을 통해 만들어지고 특정 작업을 수행하는 프로그램- PL/SQL의 FUNCTION은 리턴값을 반환하지만, 프로시저는 지정된 작업을 수행한 이후에 반환여부를 선택할 수 있다.- 프로시저는 EXEC 또는 EXECUTE의 실행문을 통해 사용된다.- 처음 생성 시 컴파일으로 DB에 오브젝트로 저장되며 반복적으로 사용할 수 있고, 다시 컴파일을 할 필요가 없기에 재사용에 용이하다.* 생성 방법- 생성 시 사용 법- 삭제 방법** 프로시저 예제* EMP의 EMPNO값과 비교하여 파라미터 값이 숫자를 넣었을 경우 해당 번호에 맞춰서 업데이트, 숫자가 아닐 시 숫자가 아닌 값을 넣었다고 출력1. 일단EMP 테이블의 EMPNO의 타입 확인.......

Naver Blog

Github(깃허브) - 프로젝트 올리기 / 프로젝트 등록된 저장소 삭제

*** Github 프로젝트 올리기1. 일단 Git을 다운받자- 필자는 os가 64bit기 때문에 64bit 사용2. 다운 받았으면 이제 Github에 아이디를 생성한 뒤, 저장소를 만들자- 우측 위의 '+' > New repository 클릭 3. 클릭한 다음 나오는 페이지에서 저장소 이름과 설명란을 입력한 다음 밑의 생성 버튼을 클릭해준다.- 사적으로 할지, 공용으로 할지 선택이 가능하다.- 설명 아래엔 설명파일이나 라이센스를 고르는 등의 선택사항이 있다.- 필자는 사적으로 commit할거4. 이제 생성된 github공간의 HTTPS/SSH의 오른쪽 주소를 복사해주자(우측 버튼 클릭 시 자동 복사된다.)5. 이제 자신이 올리고자 할 프로젝트에 우클릭.......

Naver Blog

Spring - Oracle 연동

*** Spring - Oracle 연동- 오늘은 Oracle 연동에 대해 설명하고자 한다.** 준비사항- OS : WINDOWS 10 64bit- 개발도구 : sts4 for Eclipse- DBMS : Oracle 11g- JDK : JAVA JDK 1.8- 웹서버 : apache-tomcat 8.5.59- SPRING VERSION : 5.2.9.RELEASE- 연동하기 전 DB, JDK, 개발도구가 설치되어 있어야한다.* DBMS - 오라클 * 개발도구 - STS4* JDK - 1.8* APACHE-TOMCAT 모든 버전(버전 - bin - 원하는 버전 선택)** Spring - oracle 연동 1. 일단 오라클을 사용하기 위해 jdbc를 설치해줘야한다. jdbc는 압축파일을 넣거나 온라인으로 다운받아서 사용할 수 있는데, 필자는 maven으로 간단히 했다.- pom.xml에 넣을 내용.......

Naver Blog

사용자 폴더명 변경 관련 메모

이글을 보는 사람에게 먼저 얘기하자면.. 이 글을 본 시점에서 한 사람이 있을거 같진 않지만, 백업은 미리 해놓자.. 레지스트리는 가급적 건드리면 안된다. 필자는 여러개 건드리다가 c, d드라이브 내용은 가졌지만, 5년치 다른 폴더 내용은 다 날렸다. 이 글은 사용자 계정명만 건드렸으며, 내가 망한거와 전혀 상관없으니 찾으실분은 보셔도 상관없다.(누군가에게 도움이 되길..)1. 명령어 입력바로 아래 내용은 cmd창 > 관리자 권한에서 실행에서 명령어를 입력하는데, 관리자가 사용자로 등록인데.. 그냥 사용자 계정을 봤을 때 administrator가 있을경우 할 필요 없이 바로 2번부터 시작하자.2. 안전부팅 이동 - 안전부팅을 해.......

Naver Blog

SQL(Oracle 기준) - GROUPING(그룹함수)

*** 그룹함수- 내장형 함수의 그룹함수는 집계 함수에 불과하여, 범위가 제한적이지만 그룹 함수를 사용하면 소계, 합계 등의 정보를 모아 보고서를 만들 수 있다.** 그룹 함수 종류** GROUPING 예제1) Oracle Developer 또는 sqlplus창에서 SCOTT 계정 접속2) 출력!- 부서별 직업의 연봉과 부서별, 직업별, 모든 사람 연봉합계 출력 SELECT DECODE(B.DNAME,NULL,'합계',B.DNAME) "부서", DECODE(A.JOB,NULL,'합계',A.JOB) "직업", SUM(A.SAL) SAL, COUNT(A.EMPNO) EMP_COUNT,GROUPING(B.DNAME) "합계",GROUPING(A.JOB) "총합"FROM EMP A, DEPT BWHERE A.DEPTNO = B.......

Naver Blog

SQL(Oracle 기준) - GROUPING SETS(그룹함수)

*** 그룹함수- 내장형 함수의 그룹함수는 집계 함수에 불과하여, 범위가 제한적이지만 그룹 함수를 사용하면 소계, 합계 등의 정보를 모아 보고서를 만들 수 있다.** 그룹 함수 종류** GROUPING SETS 예제1) Oracle Developer 또는 sqlplus 창에서 SCOTT 계정 접속2. 출력~- 부서 번호와 직업별 합계 조회SELECT DECODE(DEPTNO,NULL,'합계',DEPTNO) "부서번호", DECODE(JOB,NULL,'합계',JOB) "직업", SUM(SAL) "연봉"FROM EMP GROUP BY GROUPING SETS(DEPTNO, JOB);SELECT DECODE(DEPTNO,NULL,'합계',DEPTNO) "부서번호", DECODE(JOB,NULL,'합계',JO.......

Naver Blog

SQL(Oracle 기준) - CUBE(그룹함수)

*** 그룹함수- 내장형 함수의 그룹함수는 집계 함수에 불과하여, 범위가 제한적이지만 그룹 함수를 사용하면 소계, 합계 등의 정보를 모아 보고서를 만들 수 있다.** 그룹 함수 종류** CUBE 예제1) Oracle Developer 또는 sqlplus창에서 SCOTT 계정 접속2. 프린트~- CUBE를 이용한 합계의 모든 경우의 수 조회SELECT DECODE(DEPTNO,NULL,'합계',DEPTNO) "부서번호", DECODE(JOB,NULL,'합계',JOB) "직업",SUM(SAL) "연봉"FROM EMP GROUP BY CUBE(DEPTNO, JOB)ORDER BY DEPTNO, JOB ASC;- 부서별 / 직업별 / 부서별 직업별 / 전체합계가 출력되는 것을 볼 수 있다.

Naver Blog

SQL(Oracle 기준) - List Partition(파티션 테이블)

*** Partition- 대용량의 테이블을 여러 개의 데이터 파일에 분리해서 저장하는 방법- 하나의 큰 테이블을 물리적으로 나누고, 논리적으론 한 개의 테이블- 물리적으로 나눠진 만큼, 분리된 파일의 입력, 수정 ,삭제, 조회 성능이 좋아진다.- 각 파티션 별로 독립적으로 관리할 수 있어, 백업과 복구가 보다 빠르고, 해당 파티션의 전용 인덱스를 사용할 수 있다.** Partition 종류** List Partition- 여러 데이터가 균등하게 분포 되었을 때 특정 값을 골라서 분할하는 방법- 순서에 맞지 않고 연관되지 않은 데이터를 그룹화 할 수 있다.- 파티션 키가 하나의 칼럼으로만 구성되며, NULL값 또한 명시 가능하다.- 대소문자를 구분하며.......