0%

로컬환경에서 웹 프로그램 개발시 다양한 도구들을 설치하게 된다.
그중 대표적으로 짜증나는 녀석은 DB 일것이다.

Oracle, Mysql, MariaDB 등을 훌륭한 것들이지만 문제는 설치시 손이 미끄러져 재대로 설치가 안되는경우가 간혹 있다.
또는 이미 설치된 DB를 삭제해야 하는경우가 종종 있는데

이때 이미 내 로컬 OS의 레지스터리는 더럽혀지기 때문에, 일일이 손을 봐야 할 곳이 많이 생기게 된다.
공부할것도 많고 개발할것도 많은데 이딴거 때문에 정력을 낭비하는건 여간 손해가 아니다.

위와 같은 문제를 방지하기 위해 로컬에 Docker 컨테이너 가상화 환경을 만들고 그 위에 DB를 설치해볼 생각이다.
Docker는 그 내용이 방대하기 때문에(사실 지금도 공부중)이만 넘어가고 바로 Windows10 pro 에 Docker를 설치해보자

Windows10 PRO에 Docker 설치 방법

이글은 Windows10 pro에 docker를 설치하는 방법이다.
Windows10 pro는 Docker Tool Box를 설치하지 않는다.
구글링 해보니 Windows10 pro와 일반 Windows10과 Docker설치 방법이 다른듯 하다.
아마도 Windows10 Pro 에서는 hyper-v기능이 있기 때문인듯 하다.
일반 Windows10은 Docker tool box를 설치해야 하는데, 여기에는 hyper-v를 대신할 vitualbox가 포함되어 있다.
Windows10 pro가 설치된 노트북에 Docker tool box 를 설치했었는데, 문제가 좀 있는지 정상동작을 하지 않았다.
Windows10 pro가 아닌 사람은 이 글을 더이상 읽지 말고, Docker tool box 설치방법을 구글에서 검색하기를 바란다.

1.Windows10 Pro에 Docker 설치 준비

윈도우에서 작업관리자를 열어 가상화 항목이 사용인지 확인하자.
사용이 아닌경우 본인의 CPU가 가상화 기능을 지원하는지 여부를 확인 해야 하며, 가상화를 지원한다면 컴퓨터 부팅시 Bios에 접근하여 해당 가상화 기능을 활성화 시켜야 한다.
만약 본인의 컴퓨터의 cpu가 가상화 기능이 없다면 Docker를 사용 할수 없을것이다.
아마도?…

일단 윈도우 작업관리자 - 성능 에서 가상화 여부가 사용으로 나오는지 확인하자
윈도우 작업관리자에서 가상화 여부 확인

그리고 윈도우 - 설정 에서 Windows 기능 창에서 Hyper-V항목을 활성화 하자.

윈도우키 - 설정 - windows 기능 검색

Hyper-V 활성화

Hyper-V를 활성화 하면 윈도우 리부팅을 하도록 하자.

2.Windows10 Pro용 Docker 설치파일 다운로드

https://docs.docker.com/ 이동 -> Get Docker -> Docker CE -> Windows -> Download from Docker Store -> Get Docker 버튼 클릭

Windows10 pro용 Docker 설치파일 다운로드

아래 링크를 클릭하면 바로 다운로드가 된다.
https://download.docker.com/win/stable/Docker%20for%20Windows%20Installer.exe

Docker for Windows Installer.exe 파일
다운로드한,위 파일을 설치하도록 하자.
설치를 진행하면 윈도우 로그아웃을 요청하며 윈도우 로그아웃후 다시 로그인 하면
다음과 같이 도커가 시작되고 있는것을 확인 할 수 있다.

Docker 설치 완료뒤 도커 시작화면1
Docker 설치 완료뒤 도커 시작화면2

Docker가 시작되는대 조금 시간이 걸리며, Docker가 시작되면 아래처럼 로그인 창이 열린다.
https://hub.docker.com/ 에서 간단히 이메일을 통해 계정을 만든 뒤, 그 계정을 통하여 로그인 하면 Docker를 사용 할 수 있다.
참고로 도커 허브는 도커에서 사용할 이미지들을 공유하는 공용 리파지토리이다.

Docker 로그인창

로그인 후 윈도우 숨겨진 아이콘에서 docker를 확인해보면 로그인 된것을 확인 할 수 있다.

Docker 로그인 확인

4.Kitematic 설치

도커가 설치되면 Kitematic를 설치해야 한다. Kitematic은 도커를 관리 할수 있는 GUI툴이다.

Kitematic를 클릭해보자
Kitematic 클릭

Docker최초 설치시에는 Kitematic가 설치되어 있지 않으므로 다운로드를 하라고 창이 뜬다. 다운로드를 하자.
Kitematic 다운로드 창

아래처럼 zip파일이 다운로드가 된다.
Kitematic.zip
zip파일을 앞축을 푼뒤 폴더명을 Kitematic로 변경하고
C드라이브 / Program Files / Doker 폴더로 이동 시키자.

Kitematic 폴더를 Docker설치 폴더로 이동

5.Windows10 Pro에 docker 동작 확인

이제 Windows10 pro에서 도커를 사용할수 있는 준비를 끝냈다. 다시 Kitematic를 클릭해보자.

Kitematic 실행 전 도커허브 계정 로그인
위 처럼 도커허브 계정을 로그인 하라고 나온다. 로그인 하자.

Kitematic 실행화면
로그인을 하면, 위처럼 Kitematic도구가 열리며 도커에 설치할 수 있는 이미지들이 나오는 것을 확인 할 수 있다.

아래처럼 Kitematic 좌측 하단의 Docker CLI를 클릭하면 윈도우 파워쉘이 열리며 Docker 명령어를 입력 할 수 있다.
Docker 터미널(파워쉘)

마무리

이로써 Windows10 pro에서 도커를 설치해 보았다.
주의할 점은 Windows10 pro에는 Docker tool box가 아니라 그냥 Docker for windows installer.exe 설치파일을 이용해야 한다.

개발환경: windows10, sts, jdk1.8, tomcat9


1.STS로 Spring 프레임워크 개발환경셋팅
2.Spring MVC 프로젝트를 생성하여 톰캣에서 실행하기
3.spring mvc 프로젝트 한글설정(utf8)

4.Windows10pro docker 설치하기
5.Docker에서 mysql설치하고 접속해보기

6.Spring 프로젝트 mysql접속 junit 테스트 하기
7.SpringFramework MyBatis MySQL 연동하기


스프링프로젝트 jsp에서 한글 깨짐현상

스프링 프로젝트를 새로 만들면 jsp에서 한글이 보통 위 이미지 처럼 깨진다.

UTF8 셋팅을 통해 jsp에서 한글 깨짐을 해결 할 수 있다.

1.jsp에 utf-8설정

한글이 깨지는 jsp의 최상단에 아래코드를 삽입하자

1
<%@ page language="java" contentType="text/html; charset=utf-8" pageEncoding="utf-8"%>

jsp에서 utf-8셋팅

jsp 한글동작 확인

1번 설정만 하면 일단 jsp에서 한글깨짐은 해결이 된다.
하지만 post, get 리퀘스트 등등 스프링 프로젝트는 다양한 부분에 utf-8설정이 필요하다.
나중에 하기 귀찮으니 미리 한꺼번에 설정해보도록 하자.

2.스프링 웹 프로젝트의 web.xml에 UTF-8 셋팅

아래 내용을 스프링 웹 프로젝트의 web.xml에 추가한다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
<!-- This is Filter -->
<filter>
<filter-name>encodingFilter</filter-name>
<filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
<init-param>
<param-name>encoding</param-name>
<param-value>UTF-8</param-value>
</init-param>
</filter>


<filter-mapping>
<filter-name>encodingFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>

스프링프로젝트의 web.xml에 utf-8셋팅

3.tomcat의 server.xml에 utf-8 셋팅

아래 내용을 아파치 톰캣의 server.xml에 적용하자. Connector port 태그를 찾아서 URIEncoding 프로퍼티를 추가해야 한다.

1
2
<Connector connectionTimeout="20000" port="8080" protocol="HTTP/1.1" redirectPort="8443" URIEncoding="UTF-8" />
<Connector port="8009" protocol="AJP/1.3" redirectPort="8443" URIEncoding="UTF-8" />

tomcat server.xml에 utf-8셋팅

4.html 파일에 utf-8 셋팅

html에도 utf-8 설정이 필요하다.
head 태그 영역을 아래처럼 설정하면 된다.

1
2
3
4
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Home</title>
</head>

지금까지 스프링 프로젝트의 UTF셋팅을 해보았다. 기타 라이브러리가 추가됨에 따라 추가로 설정이 필요할 수는 있지만, 보통 위 정도만 해도 어느정도 한글 깨짐등의 문제를 해결 할 수 있다.

Java
java 개발중 특히 VO 클래스를 만들때 getter(), setter(), toString(), equals(), hashCode() 함수등을 자주 재정의 해서 사용한다.

getter(), setter(), toString()은 그 자체로 의미가 명확하지만 equals(), hashCode()는 왜 재정의 하여 사용하는지, 왜 두 메소드는 항상 함께 사용하는지 모호하여 다시 공부하여 정리를 해보도록 하겠다.

미리 간단히 말한다면
equals()와 hashcode()를 재정의 하여 객체가 논리적으로 일치하는지 확인하는 용도로 사용된다

Object.equals() 란?

기본형태는 아래와 같다.

1
public boolean equals(Object obj){ ... }

Object 클래스의 equals() 메소드는 비교 연산자인 ==과 동일한 결과를 리턴한다.
즉 객체의 값의 일치여부를 비교하여 true, false를 리턴한다.

1
2
3
4
5
6
7
8
9
Object obj1 = new Object();
Object obj2 = new Object();

boolean result1 = obj1.equals(obj2);

boolean result2 = (obj1 == obj2);

System.out.println("equals결과 :"+result1); // 결과 false
System.out.println("==연산결과 :"+result2); // 결과 false

변수 obj1, obj2는 각각의 인스턴스의 메모리 주소값을 가지게 되며 equals()메소드와 ==연산자와 마찬가지로 그 값들이 일치 여부를 비교하게 되며, 일치한다면 true 불일치한다면 false를 반환하게 된다.

이번에는 String의 equlas메소드를 확인해보자

1
2
3
4
5
6
7
8
9
//새로운 문자열 객체 생성, new 연산자로 강제로 새로운 메모리 주소를 할당하게 했다.
String name3 = new String("가나다라");
String name4 = new String("가나다라");

boolean result5 = name1.equals(name3);
boolean result6 = (name1 == name4);

System.out.println("equals결과 :"+result5); // 결과 true
System.out.println("==연산결과 :"+result6); // 결과 false

String 예제는 Object 예제와 다르게 equals메소드는 true, ==연산자는 false를 리턴한다.
String의 equals 메소드는 Object의 equals메소드를 그대로 쓰는 것이 아니라, 재정의 되어 논리적인 문자열 비교를 하기 때문이다.

따라서 사용자가 String 클래스처럼 equlas를 논리적 일치여부를 검사하는 부분을 재정의 하여 사용하지 않는 이상, 객체의 메모리 값만 비교하게 된다.

Object.equals() 재정의 하기 feat.instancOF 메소드

바로 예제로 가보자. 문자열 id 하나만 프로퍼티로 갖는 간단한 VO 클래스이다.
앞서 말했듯이 MemberVO의 논리적 일치여부를 equals메소드에 재정의 하였다.
id가 일치하면 MemverVO는 동일한 객체로 여기기로 하였다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
class MemberVO{
public String id;

@Override
public boolean equals(Object obj) {
if(obj instanceof MemberVO){
MemberVO memberVO = (MemberVO) obj;
if(id.equals(memberVO.id)){
return true;
}//_if
}//_if

return false;
}//_equals
}

//어딘가의 main메소드 에서
MemberVO vo1 = new MemberVO();
MemberVO vo2 = new MemberVO();
vo1.id ="가나다";
vo2.id ="가나다";

System.out.println(vo1.equals(vo2)); // 결과 true

간단한 소스이다. 주의할 점은 instancOf메소드를 통해 equals메소드의 인자객체와 메소드를 호출주체 객체와 동일 타입인지를 확인해야 한다. 만약 id 프로퍼티를 갖는 다른 타입의 객체와 비교시 불일치 여부를 판단 할수 있어야 하기 때문이다.

자 대충 equlas메소드를 재정의 하여 객체의 논리적 일치여부를 확인하는 예제를 만들어 봤다. 하지만 equals메소드 하나만 가지고는 부족하다.
HashSet, HashMap, Hashtable의 컬랙션프레임워크의 객체 동등 비교시 hashCode()메소드를 실행하기 때문이다.

Object.hashCode() 란?

Object.hashCode() 메소드는 객체의 주소값을 이용하여 객체 고유의 해시코드를 리턴하는 함수이다.
이 hashCode()를 equals()와 함께 오버라이딩 해야 하는 이유는 HashSet, HashMap, Hashtable과 같은 프레임워크에서 객체의 비교시 hashCode() 결과값을 통해 해시코드 값이 다르면 다른 객체로 판단하기 때문이다.

HashSet, HashMap, Hashtable 프레임워크가 두 객체의 동등 비교 프로세스

1
2
3
4
5
6
7
8
9
if : hashCode() == true {
if : equals() == true{
해쉬 프레임워크는 이제서야 두 객체를 동등하다고 판단한다.
}else{
다른객체로 판단
}
}else{
다른객체로 판단
}

즉 객체의 동등 비교를 위해서는 Object의 equals() 메소드만 재정의하지 말고 hashCode() 메소드도 재정의해서 논리적 동등 객체일 경우 동일한 해시 코드가 리턴 되도록 해야 한다.

따라서 아래처럼 hashCode를 오버라이딩 해서 MemverVO의 id가 동일한 문자열인 경우 같은 해시 코드를 리턴하게 해야 한다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
class MemberVO{
public String id;

@Override
public boolean equals(Object obj) {
if(obj instanceof MemberVO){
MemberVO memberVO = (MemberVO) obj;
if(id.equals(memberVO.id)){
return true;
}//_if
}//_if

return false;
}//_equals

@Override
public int hashCode(){
return id.hasnCode(); //id가 동일한 문자열인 경우 같은 해시 코드를 리턴
}//_hashCode
}

실습환경

Windows10(64bit), java 1.8, STS


1.STS로 Spring 프레임워크 개발환경셋팅
2.Spring MVC 프로젝트를 생성하여 톰캣에서 실행하기
3.spring mvc 프로젝트 한글설정(utf8)

4.Windows10pro docker 설치하기
5.Docker에서 mysql설치하고 접속해보기

6.Spring 프로젝트 mysql접속 junit 테스트 하기
7.SpringFramework MyBatis MySQL 연동하기


Spring Lagacy Prject로 웹프로젝트를 만드는 이유

스프링 부트를 이용하여 간단하게 스프링 웹 프로젝트를 생성 할 수 있다.
하지만 지금은 공부단계이므로 세세한 설정을 본인이 직접 할 수 있는 Spring Lagacy Prject로 프로젝트를 생성하는 것을 추천한다.
개인적인 경험으로도 실무에서 Spring Lagacy Prject를 주로 사용했다.

이번에는 STS로 Spring Lagacy Prject - Spring MVC projcet 프로젝트를 생성하고, tomcat 을 연동시켜 기본 페이지를 동작 시켜보겠다.

Spring Stater Project(Spring Boot)의 장점
1.별도의 설정이 필요없다.
2.WAS없이 실행이 가능하다.
3.로딩 시간이 짧아서 테스트 하기 편하다.

Spring Stater Project(Spring Boot)의 단점
1.기존의 설정과 다른 방식으로 사용한다.
2.JSP 설정 등은 별도로 해야 한다.

Spring Legacy Project의 장점
1.현재까지 실무에서 많이 사용되고 있다.
2.다양한 자료가 존재한다.
3.기존 프로젝트를 이해하는데 도움이 된다.
4.모든 버전의 스프링에서 사용할 수 있다.

Spring Legacy Project의 단점
1.초반 테스트 환경 구성 등이 어렵다.
2.WAS와 연동하는 경우 결과 확인에 많은 리소스를 소모한다.

Spring Lagacy Prject로 웹프로젝트를 만들기

STS에서 File -> New -> Spring Legacy Project 클릭

Spring Legacy Prject 생성1

Project name을 입력하고 Spring MVC Project 를 선택하고 next 버튼을 클릭한다.

Spring Legacy Prject 생성2

Spring Legacy Prject 생성완료

Tomcat 다운로드하고 STS에 연동하기

https://tomcat.apache.org/ 이동 -> Donwload -> Tomcat9 클릭 자신에 맞는 톰캣 다운로드

Tomcat 다운로드

해당 압축파일을 C드라이브로 이동하고, 압축을 푼다.

Tomcat 압축풀기

STS를 다시 열고, window -> preference -> server -> runtime enviroments 로 이동

add버튼 클릭 Apache -> Apache Tomcat v9.0을 선택 -> Next 클릭

Tomcat Server를 STS에 연동1

Browse… 클릭 -> 압축을 푼 tomcat 폴더 선택후 확인 -> Finish -> Apply and Close 클릭

Tomcat Server를 STS에 연동2

STS에서 Servers 탭 클릭 -> No servers are available. Click this link to create a new server.. 선택

Apache -> Tomcat v9.0 Server 선택 -> Finish 클릭

Tomcat Server를 STS에 연동3

Spring 프로젝트 실행하기

방금 STS에 연동한 톰캣 서버에 스프링 프로젝트를 연동하여 스프링 프로젝트를 실행해보자

STS servers 탭에서 방금 등록한 톰캣을 마우스 우클릭 -> Add and Remove 클릭
자신이 만든 spring MVC Project를 add 버튼으로 우측으로 옮긴뒤 Finish 클릭

tomcat에 스프링프로젝트 add1
tomcat에 스프링프로젝트 add2

그 다음은 STS의 Package Explorer에 Servers에 Tomcat에서 Server.xml파일을 열어서 방금 등록된 프로젝트의 Base URL을 확인하자.
프로젝트 base url 확인

path에 /web 이라고 적혀 있는것을 확인 할수 있다. 따라서 http:localhost:8080/web 이 현재 프로젝트의 base url이 되겠다.

STS에 Servers탭에서 Tomcat을 우클릭하고 start를 클릭한뒤 브라우저에 http:localhost:8080/web 를 입력하여 프로젝트 실행을 확인하자.

스프링 프로젝트 실행 결과

참고자료

책: 코드로 배우는 스프링 웹 프로젝트(구멍가게 코딩단 지음|남가람북스|2015년 08월 16일 출간)

Spring 프로젝트를 개발하기 위해 STS(Spring tool suite)를 설치해보자.

개발환경

Windows10(64bit), java 1.8


1.STS로 Spring 프레임워크 개발환경셋팅
2.Spring MVC 프로젝트를 생성하여 톰캣에서 실행하기
3.spring mvc 프로젝트 한글설정(utf8)

4.Windows10pro docker 설치하기
5.Docker에서 mysql설치하고 접속해보기

6.Spring 프로젝트 mysql접속 junit 테스트 하기
7.SpringFramework MyBatis MySQL 연동하기


STS 다운로드

https://spring.io/tools 로 이동 Seel all versions 클릭 후 자신에 맞는 운영체제의 sts 를 다운받는다.

STS 홈페이지 이동

STS zip 버전 다운로드

Installer가 아니라 ZIP버전을 다운받았기에 OS에 설치되어 레지스터리를 더럽히지 않는 장점이 있어서 zip 방식을 선호한다.

STS 실행

해당 압축파일을 C 드라이브로 이동시키고 압축을 푼다.(개인적으로 편의상 C드라이브에 IDE를 설치하는 편이다.)

그리고 압축푼 폴더에 sts-xxx로 시작하는 폴더에 STS.exe 파일을 실행하면 STS가 실행된다.

STS 압축풀기
STS 실행

스프링 프로젝트 JDK 설정

나는 new project에서 spring lagacy project 에서 spring MVC project로 실습을 진행했다.
왜인지는 모르겠으나 STS에서 스프링 MVC 프로젝트을 생성하면 JDK 버전을 1.6버전으로 생성한다.
따라서 프로젝트의 jdk 버전을 jdk 1.8로 변경해야한다.

프로젝트를 선택하고 마우스 우클릭 -> Properties -> Project Facets 에서 변경이 가능하다.
STS 스프링 MVC프로젝트 jdk 설정1
자바 빌드패스에서도 확인차 jdk 버전을 확인해 보자.
STS 스프링 MVC프로젝트 jdk 설정2
자바 컴파일러에서도 확인차 jdk 버전을 확인해 보자.
STS 스프링 MVC프로젝트 jdk 설정3

스프링 프로젝트 pom.xml 설정

이제 pom.xml로 이동하자. pom.xml에는 jdk 버전과 spring 버전이 있는데, 기본설정은 너무 낮기때문에 자신에 환경에 맞게 수정해 주자.

STS 스프링 MVC프로젝트 pom.xml 설정
pom.xml의 java-version을 1.8로 올려주고, spring 버전도 4.x.x 버전대로 올려주었다.

오랜만에 hexo deploy를 하는데

기존포스트 에서 해결했다고 생각한 에러가 또 발생했다.

hexo deploy 오류

해결방법

구글링을 해보니 기존의 hexo의 github 배포방식을 http방식이 아닌 ssh방식으로 변경하라고 한다.

1.로컬 pc 윈도우에서 내 github 계정에 ssh로 접근할 pc의 ssh키 생성

일단 자신의 헥소 프로젝트에서 git bash를 열고 아래 명령을 입력하자.

1
ssh-keygen -t rsa -b 2096 -C "github계정메일" // 엔터

위 명령어를 입력하면 아래 메세지가 나오고 그냥 엔터를 눌러 진행하자

그 다음에는 Ehter passphrase (empy for no passphrase): 라고 나오는데,

ssh를 만들기 위한 기억할만한 비밀번호를 입력해주면 된다. 그리고 확인용으로 한번더 입력한다.

그리고 아래 명령어를 입력하자.

1
eval $(ssh-agent -s)

그리고 아래 명령어도 입력하자.

1
ssh-add ~/.ssh/id_rsa

위 명령어를 입력하고 엔터 -> 뭔가 나오면 그냥 엔터 -> 끝

이렇게 하면 ssh 개인키를 생성을 완료 한 것이다. 이제 생성된 키를 복사하여 자신의 github계정에 등록을 해야 한다.
아래 명령어를 입력하여 생성된 ssh키를 클립보드에 복사하자.

1
clip < ~/.ssh/id_rsa.pub

생성된 ssh키를 github 계정에 등록하자.

github 로그인 -> Settings -> 좌측 Personal settings 메뉴의 SSH and GPG keys 클릭

->new SSH key 버튼 클릭 -> Title에는 자신이 구별할수 있는 제목을 입력하고 Key에는 위에서 클립보드에 복사한 ssh키를 붙여넣기 한다.

-> Add SSH Key 버튼 클릭

hexp deploy 설정을 http에서 ssh로 변경

헥소의 _config.yml 파일에서 deploy의 repo를 기존의 http방식에서 ssh방식으로 수정해야한다.

일단 해당 핵소 프로젝트의 배포용 github 리파지토리로 이동한다.

Clone or download에서 Use ssh를 클릭한 뒤, 그 내용을 복사 한다.

로컬 핵소 프로젝트의 _config.yml 파일로 이동하여

deploy 영역의 repo항목에 붙여 넣고, 파일을 저장한다.

결과

위 작업을 순차적으로 끝냈다면, 헥소블로그의 github deploy 문제가 해결될것이다.

디플로이를 시도하면, 작은 모달창이 뜨며 ssh생성시 입력했던 키를 물어볼것이다.

Enter passphrase (empy for no passphrase): 이때 입력했던 비밀번호를 입력해주면 된다.

참고자료

github ssh 생성방법
해당이슈에 대한 깃허브 참고자료
github ssh 사용방법(윈도우)

기존포스트

swap 파일이란?

swap파일

위와 같이
리눅스 운영체제에서 숨김파일형태로 swap 확장자를 갖는 파일을 말한다.
swap 파일은 임시파일로서 vi로 특정 문서를 수정할때 자동 생성되며, 파일을 수정 중 정상적인 종료를 하지 않을시 자동으로 제거되지 않고 남아버린다.

만약 해당 수정내용이 필요 없다면, 생성된 swap 파일을 제거 해버리면 되지만 만약 복구를 하고 싶다면
아래와 같이 vi를 호출하면 된다.

1
vi -r 파일명

swap파일
다음화면이 나오면 엔터를 눌러 수정중이던 상태로 파일을 되돌릴 수 있다.
swap파일

파일을 정상적으로 수정한 뒤에 swap 파일은 자동으로 제거되지 않으므로, 아래와 같이 입력하여 swap 파일을 제거하면 된다.

1
rm .파일명.swap

swap파일

git에서는 .gitignore 라는 파일을 사용하여 형상 관리할 필요가 없는 로그,임시 파일등을 git의 파일추적에서 제외시킬수 있다.
즉 git으로 관리하고 싶지 않은 파일형식 모음을 저장하는 파일이다.

".gitignore 파일"

위 이미지는 현재 이 hexo 블로그의 루트폴더 이미지이며, 빨간 상자로 .gitignore 파일이 보이는 것을 확인 할 수있다.
git init과 같은 명령어로 .gitignore 파일은 생성되지 않으며 직접 텍스트 파일을 만들어 git저장소 루트폴더에 생성해야한다.
.gitignore 파일앞에 .(점)을 빼먹지 않도록 주의하자.

위 빨간상자의 .gitignore 내용은 다음과 같다.

".gitignore 파일내용"

간단하게 Windows, Node, Hexo 환경에 발생하는 기타 설정파일, 로그파일, 임시파일등을 제외한 내용이다.
하지만 위 같은 내용들 일일이 찾아 설정하긴 무리가 있다.

그래서 아래의 gitignore.io 사이트로 이동하여 필요한 내용얼 입력하면, 자동으로 .gitignore파일을 생성해준다.

https://www.gitignore.io/

"gitignore.io"

".gitignore 파일내용"

검색창에 Hexo입력 엔터, Node 입력 엔터, Windows 입력 엔터 후 create 버튼클 클릭하면 된다.

"gitignore.io에서 생성한 .gitignore 파일내용"

생성된 내용을 파일로 저장하여 사용하면 된다.

hexo 디플로이시 에러내용

컴파일(compile)이란 개발자들이 특정한 프로그래밍언어(예를들어 C, C++, Object-C등)을 사용해서 컴퓨터가 이해할 수 있는 기계어 코드(이진코드)로 변환하는 작업을 일컫는다. 좀더 정확하게 말하면, 컴퓨터와 그 컴퓨터에 설치되어 있는 운영체제가 이해할 수 있는 기계어 코드로 변환하는 일이다. 따라서 동일한 컴퓨터라 할지라도 윈도우가 설치되어 있는 컴퓨터와 리눅스가 설치되어 있는 컴퓨터는 같은 애플리케이션이라도 컴파일된 결과물은 다르다.

또한, 컴파일해서 생성된 기계어코드만으로 바로 컴퓨터에서 실행될 수는 없다. 그 이유는 대부분의 애플리케이션들은 사용자가 프로그래밍한 소스 코드도 있지만, 상당히 많은 부분들이 라이브러리 형태로 제공되기 때문이다. 예를들어, C프로그래밍을 할 때 키보드를 누르는 기능에 대해 프로그래밍할 필요가 없는 이유는 키보드를 누를 때 발생하는 이벤트나 작업에 대해 이미 표준 라이브러리(Standard library)로 만들어져 있기 때문이다. 바로 이러한 라이브러리를 내가 만든 애플리케이션과 연결해 주는 작업이 바로 링크(link)이다.

요즘은 컴파일과 링크를 합쳐 빌드(build)라는 표현을 자주 사용한다. 빌드를 해야 비로소 컴퓨터에서 실행할 수 있는 형태의 기계어 코드가 생성된다. 그러나 한번 프로그래밍을 빌드했다고 해서 자신이 원하는 프로그래밍이 만들어지지는 않는다. 프로그래밍의 신이 아닌 이상 오류가 발생한다. 이러한 오류들을 바로 잡는 작업이 디버깅(Debugging)이다. 프로그래머들이 가장 힘들어하는 작업은 소스코드를 코딩하는 단계나 빌드하는 단계가 아니라, 바로 디버깅하는 단계이다.

디버깅이란 그 이름에서 알 수 있듯이, 자신이 만든 프로그램 내부에 숨겨져 있는 논리적인 오류를 찾아내는 작업이다. 윈도우를 주로 사용하는 사람들도 간혹 컴퓨터를 사용하다가 ‘예기치 않은 오류로 인해 프로그램을 종료합니다.’라는 에러 메시지를 보았을 것이다. 바로 이러한 예지치 못한 에러를 잡아내어 수정하는 작업을 통칭하여 디버깅한다 라고 한다.

참고: Do it! bada 모바일 프로그래밍 by 여인춘

출처: http://hyogeun.tistory.com/96 [SW전공자의 Expert를 위하여]

hexo 디플로이시 에러내용

오랜만에 hexo 블로그에 글을 써볼까 하여 헥소 post를 만들어 디플로이를 해보았는데, 왠걸 해괴한 에러가 발생한다.

구글링을 해보니 Windows환경에서 git의 문제였다.

2018-02-26 일 기준으로 무언가 바뀌었다고 한다.

간단한 해결방법

위 문제는 실행파일 하나만 설치하면 말끔히 해결된다.

https://github.com/Microsoft/Git-Credential-Manager-for-Windows/releases/tag/v1.14.0

위 링크로 이동하자

오류 해결파일

위 빨간 상자에 있는 exe파일을 다운 받아서 설치하면 위 에러는 해결된다.

그냥 해결방법

직접 해보진 않았지만, Windows에 설치된 git을 지우고 최신 버전으로 설치해도 해결이 된다고 한다.