Git ignore란?

프로젝트를 git으로 관리할 때 설정 파일 이나 build된 파일이나 commit하고 싶지 않은 파일을  제외하고 commit하게 해주는 기능이라고 할 수 있다.

Git ignore 설정하기

설정하는 방법은 매우 간단하다 .
파일명이 .gitignore인 파일을 생성한 뒤에 아래 설명하는 문법에 맞춰서 무시하고자 하는 파일들을 작성해주면 된다.
ignore 파일이 위치한 directory 아래에 있는 파일들을 제외시킨다
한가지 예를 들어보겠다. 만약에 아래와 같은 구조를 가진 프로젝트라면

맨 왼쪽의 dir이 프로젝트의 root dir 이라고 하자
만약에 root의 .gitignore은 빈파일이고
dir1의 gitignore 파일에 file* 이라고 적혀있었다고 치면
file 1, 2, 3 은 dir1에 있는 .gitignore 파일에 영향을 받지 않는다.

Git ignore 문법

# 주석
* 무엇이든 올 수 있음
! 예외적으로 포함시킴

예를 들어 파일의 내용이 아래와 같다고 해보자
*.txt
!abc.txt
.hellogitignore
이 gitignore의 의미는 확장자가 .txt인 파일중 abc.txt만 포함시키고 모두 제외시킨다는 뜻이다.
그리고 마지막 줄의 .hellogitignore 이부분은 확장자를 제외하는것이 아니라 파일자체 즉 .hellogitignore을 제외시킨다는 뜻이다.

적용하기

프로젝트에 .gitignore 파일을 포함시킨후에 commit & push해주면 된다.

 

출처: git-scm.com/docs/gitignore

Copyleft와 Copyright

  • Copyleft 
    저작권(Copyright)에 반대되는 개념으로, 저작권에 기반을 둔 사용제한이 아니라 저작권을 기반으로 한
    정보의 공유를 위한 조치이다.
    즉, 소프트웨어의 실행, 공유, 수정 등을 허가하지만 이를 통해 파생된 소프트웨어또한 Copyleft를 따라야한다.
    GNU가 여기에 속한다.
  • Copyright
    말 그대로 저작권에 대한 용어로 창작자들의 창작물을 보호하는 권리이다.
    창작자의 허가없이 사용, 공유, 수정등이 불가하다.

BSD(Berkely Software Distribution) License

해당 소프트웨어는 아무나 개작할 수 있고, 수정한 것을 제한없이 배포할 수 있다. 다만 수정본의 재배포는 의무사항이 아니며 이를 공개하지 않아도 되는 상용 소프트웨어에서도 사용할 수 있다.

GNU(General Public License) GPL

GPL

General Public License 는 GNU GPL 또는 GPL로 불리며 free software재단에서
만든 free software license로 실행, 연구, 공유, 수정의 자유를 최종 사용자에게 보장한다
대표적으로 리눅스 커널이 이용하는 license이다.

 




요구사항
수정한 소스코드 또는 이를 활용한 소프트웨어 모두 GPL로 공개하여하 한다
- 라이선스 및 저작권 명시
- 변경사항 명시

MIT License

MIT에서 개발한 소프트웨어 라이센스로 BSD 라이센스에 기반하고 있다.
BSD와 마찬가지로 소프트웨어 수정, 배포, 상업적 이용, 공개에 대해서 자유롭다

 

 

 

'기타' 카테고리의 다른 글

[Wireshark] Download files from captured packets  (0) 2021.01.20
[Git] Git ignore 설정하기  (0) 2020.12.04

Homebrew?

homebrew는 Ubuntu의 apt, CentOs Fedora의 yum등과 같은 macOs용 패키지 관리자입니다.

Homebrew를 이용하면 java, tomcat, docker 등등 사용자가 직접 설치후 환경설정을 해야하는 패키지들을 손쉽게 설치할 수 있습니다.

설치하기

terminal 을 열고 아래의 text를 입력후 install 합니다.

/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install.sh)"

 

 

페이지 내 에서 발생되는 XHR Response를 모니터링 하는 방법

두가지 방법을 소개하고자한다.

XHRHttpRequest 선언시 EventHandler에 등록하는 방법

const xhr = new XMLHttpRequest(),
    method = "GET",
    url = "https://developer.mozilla.org/";

xhr.open(method, url, true);
xhr.onreadystatechange = function () {
  // In local files, status is 0 upon success in Mozilla Firefox
  if(xhr.readyState === XMLHttpRequest.DONE) {
    var status = xhr.status;
    if (status === 0 || (status >= 200 && status < 400)) {
      // The request has been completed successfully
      console.log(xhr.responseText);
    } else {
      // Oh no! There has been an error with the request!
    }
  }
};
xhr.send();
//출처
//https://wiki.developer.mozilla.org/ko/docs/Web/API/XMLHttpRequest/onreadystatechange

이 방법은 XHR을 선언하면서 이벤트 등록을 통해 해당 xhr의 이벤트롤 콘솔로 감시할수 있습니다.

XHRHttpRequest 를 재정의 하는 방법

let oldXHROpen = window.XMLHttpRequest.prototype.open;
window.XMLHttpRequest.prototype.open = function(method, url, async, user, password) {
    this.addEventListener('load', function() {
        console.log(this.response);
    });
    return oldXHROpen.apply(this, arguments);
}

 

'WEB > JS' 카테고리의 다른 글

XMLHttpRequest(XHR) 란 무엇인가.  (0) 2020.10.06

XHR은 무엇일까?

XHR은 XMLHttpRequest의 약자로 말 그대로 http 프로토콜을 통해 서버에 자원을 요청하기 위해 사용한다.

페이지 전체를 새로고침 할 필요 없이 원하는 데이터를 url에서 제공받을 수 있다.

대표적인 예로 Ajax가 있다.

Methods

  • abort이미 전송된 request를 중단
  • getAllResponseHeaders모든 ResponseHeader를 문자열로 반환합니다. response가 없는경우는 null 을 반환합니다.
  • getResponseHeader(headerName)header의 값들 중 해당하는 입력으로 들어온 이름과 일치하는 값을 반환합니다.
  • open(method, url[, async[, user[, password]]])request를 초기화 합니다
    url, 요청방법, 비동기 여부, 인증목적의 user, password 등을 포함합니다
  • send(body)
    request를 서버에 보냅니다.
    Document, Blob, BufferSource, FormData, URLSerchParams, USVString 등이 포함될 수 있습니다.
  • setRequestHeader(header, value)
    request header의 값을 지정합니다.
    open 과 send 사이에 call해야하며, 여러번 call할시에는 기존의 header's content에 더해지게 됩니다.

Example

 

5) Spring - 회원가입(ajax를 이용한 id 중복체크)

json을 이용하기 위한 lib 추가 pom.xml에 아래 코드를 추가해 줍니다. com.googlecode.json-simple json-simple 1.1 org.codehaus.jackson jackson-mapper-asl 1.9.13 Register.jsp 수정 ajax를 이용하기위해 jqu..

migusdn.tistory.com

에서 Jquery를 이용한 ajax를 XMLHttpRequest로 바꿔보겠다.

//Jquery

id = $("#user_id").val();
	
$.ajax({
    url: 'ID_Check',
    type: 'POST',
    dataType: 'text', //서버로부터 내가 받는 데이터의 타입
    contentType : 'text/plain; charset=utf-8;',//내가 서버로 보내는 데이터의 타입
    data: id ,
    success: function(data){
         if(data == 0){
         console.log("아이디 없음");
         alert("사용하실 수 있는 아이디입니다.");
         }else{
         	console.log("아이디 있음");
         	alert("중복된 아이디가 존재합니다.");
         }
    },
 });
 
//XMLHttpRequest

const id = document.getElementById("user_id").val();

var checkRequest = new XMLHttpRequest();

checkRequest.onload = function(){
	if(checkRequest.status === 200 || checkRequest.status === 201) {
		if(checkRequest.responseText == 0){
			console.log("아이디 없음");
			alert("사용하실 수 있는 아이디입니다.");
		} else {
			console.log("아이디 있음");
			alert("중복된 아이디가 존재합니다.");
		} 
	} else {
		console.log("error");
	}
};

checkRequest.open("POST", "ID_Check");
checkRequest.setRequestHeader("Content-Type", "text/plain; charset=utf-8;");
checkRequest.setRequestHeader("dataType", "text");
checkRequest.send(id);

출처: https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest, https://xhr.spec.whatwg.org/

'WEB > JS' 카테고리의 다른 글

XHR response Monitering  (0) 2020.11.07

기존에 작성한 bbs_detail 페이지의 삭제 버튼에 대한 기능구현을 하려합니다.

먼저 삭제를 위해 BDao, BbsDao에 삭제관련된 인터페이스를 추가해주고 mapper/BDao.xml 에서는 삭제 쿼리문 작성 이들을 이용해 컨트롤로에서 삭제 수행 메소드를 작성하는 순서로 쓰겠습니다.


Dao/BDao.java 와 BbsDao.java의 수정


BDao.java

아래 메소드를 추가해줍니다.

public void Delete(String bbs_id);

BbsDao.java

	@Override
	public void Delete(String bbs_id) {
	}

mapper/BDao.xml의 수정


BDao.xml에 아래 쿼리문을 등록해줍니다.

	<delete id="Delete">
	DELETE
	FROM bbs
	WHERE bbs_id = #{bbs_id}
	</delete>

BbsController 의 수정


BbsController 의 하단에 아래 메소드를 추가해줍니다

	@ResponseBody
	@RequestMapping("/Delete")
	public String bbs_delete(HttpServletRequest request, Model model) {
		BDao dao = sqlSession.getMapper(BDao.class);
		dao.Delete(request.getParameter("bbs_id"));
		String str="<script>";
		str+="location.href='/app/bbs/';";
		str+="</script>";
		return str;
	}

위와 같이 작성하면 삭제가 잘 수행되는 것을 볼 수있다

'WEB > Spring' 카테고리의 다른 글

11) Spring - 게시글 수정  (0) 2019.11.18
10) Spring - 게시글 보기 구현  (0) 2019.11.01
9) Spring - 게시글 목록 구현  (0) 2019.11.01
8) Spring - 게시판 글쓰기 구현  (0) 2019.10.12
7) Spring - 로그아웃  (0) 2019.10.12

bbs_detail.jsp 수정


게시글 수정을 위해 게시글 상세 페이지에 버튼을 추가합니다.

기존 테이블 하단에 새로운 행을 생성하고 버튼을 추가해줍니다

<table width=80% height=500px border=1 align=center>
	<tr height=30px>
	<td align="center" colspan="1">제목</td>
	<td align="center" colspan="3"><c:out value="${detail.bbs_title}"/></td>
	</tr>
	<tr>
	<td align="center" width=25%>작성자</td>
	<td align="center" width=25%><c:out value="${detail.author}"/></td>
	<td align="center" width=25%>작성일</td>
	<td align="center" width=25%><c:out value="${detail.date}"/></td>
	</tr>
	<tr>
	<td align="center" colspan="4">내 용</td>
	</tr>
	<tr height = 500px>
	<td colspan="4"><c:out value="${detail.bbs_content}"/></td>
	</tr>
	<tr>
	<td colspan="2">
	<button onclick="location.href='/app/bbs/edit/${detail.bbs_id}';">수정</button>
	</td>
	<td colspan="2">
	<button>삭제</button>
	</td>
	</tr>
</table>

수정을 위한 bbs_edit.jsp 작성


<%@ page language="java" contentType="text/html; charset=UTF-8"
	pageEncoding="UTF-8"%>
	
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
	<form method="post" action="/app/EditAct">
		<table>
			<tr>
				<td>
					<table width="100%" cellpadding="0" cellspacing="0" border="0">
						<tr>
							<td>글쓰기</td>
						</tr>
					</table>
					<table>
						<tr>
							<td>&nbsp;</td>
							<td align="center">제목</td>
							<td><input name="bbs_title" size="50" maxlength="100" value="<c:out value="${detail.bbs_title}"/>"></td>
							<td>&nbsp;</td>
						</tr>
						<tr height="1">
							<td colspan="4"></td>
						</tr>
						<tr>
							<td>&nbsp;</td>
							<td align="center">내용</td>
							<td><textarea name="bbs_content" cols="50" rows="13"><c:out value="${detail.bbs_content}"/></textarea></td>
							<td>&nbsp;</td>
						</tr>
						<tr height="1">
							<td colspan="4"></td>
						</tr>
						<tr height="1">
							<td colspan="4"></td>
						</tr>
						<tr align="center">
							<td>&nbsp;</td>
							<td colspan="2"><input type="submit" value="수정">
							<td>&nbsp;</td>
						</tr>
						<input type="hidden" name="bbs_id" value="<c:out value="${detail.bbs_id}"/>">
					</table>
				</td>
			</tr>
		</table>
	</form>
</body>
</html>

위 코드는 게시글 보기 페이지 구현을 할때 사용한 jstl을 이용하여 구성하였습니다.

컨트롤러에서 model Attribute로 심어준 데이터를 html상에서 뿌려주는 역할을 합니다.


Dao/BbsDao.java 와 BDao.java 수정


BbsDao와 BDao에 수정을 위한 메소드 Edit을 추가해줍니다.

BDao

public interface BDao {
	public void Write(Map map);
	public ArrayList<BbsDto> list();
	public BbsDto detail(String bbs_id);
	public void Edit(Map map);
}

BbsDao

	public void Edit(Map map) {
		// TODO Auto-generated method stub
		
	}

mapper/BDao.xml 수정


BDao.xml에 UPDATE 쿼리를 등록합니다.

	<update id="Edit">
	UPDATE bbs
	SET
		bbs_title = #{bbs_title},
		bbs_content = #{bbs_content}
	WHERE bbs_id = #{bbs_id}
	</update>

 

BbsController 수정


bbsController에 이전 포스트에서 사용했던 PathVariable을 이용하여 수정 페이지에 접속하는 매핑 메소드를 생성해줍니다.

	@RequestMapping("/bbs/edit/{bbs_id}")
	public String bbs_edit(@PathVariable String bbs_id, Model model) {
		BDao dao = sqlSession.getMapper(BDao.class);
		BbsDto detail = dao.detail(bbs_id);
		model.addAttribute("detail", detail);
		return "bbs_edit";
	}

게시글의 수정이 이루어지는 메소드 입니다

	@ResponseBody
	@RequestMapping("/EditAct")
	public String EditAct(HttpSession session, HttpServletRequest request) throws UnsupportedEncodingException {
		request.setCharacterEncoding("utf-8");
		Map map = new HashMap();
		map.put("bbs_title", request.getParameter("bbs_title"));
		map.put("bbs_content", request.getParameter("bbs_content"));
		map.put("bbs_id", request.getParameter("bbs_id"));
		BDao dao = sqlSession.getMapper(BDao.class);
		dao.Edit(map);
		String str="<script>";
		str+="location.href='/app/bbs/';";
		str+="</script>";
		return str;
	}

위와 같이 작성하고 직접 접속하여 확인해보면 잘 수정되는 것을 볼 수 있습니다.

'WEB > Spring' 카테고리의 다른 글

12) Spring - 게시글 삭제  (0) 2019.11.19
10) Spring - 게시글 보기 구현  (0) 2019.11.01
9) Spring - 게시글 목록 구현  (0) 2019.11.01
8) Spring - 게시판 글쓰기 구현  (0) 2019.10.12
7) Spring - 로그아웃  (0) 2019.10.12

이전 글에서 게시글 목록까지 구현하였고, 이제 게시글 목록에서 게시글을 클릭하여 내용을 볼 수 있는 페이지를 만드려고한다.

먼저 게시글을 보기위한 jsp 부터 작성해주도록 한다.


bbs_detail.jsp 작성


<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>bbs_detail</title>
</head>
<body>

<table width=80% height=500px border=1 align=center>
	<tr height=30px>
	<td align="center" colspan="1">제목</td>
	<td align="center" colspan="3"><c:out value="${detail.bbs_title}"/></td>
	</tr>
	<tr>
	<td align="center" width=25%>작성자</td>
	<td align="center" width=25%><c:out value="${detail.author}"/></td>
	<td align="center" width=25%>작성일</td>
	<td align="center" width=25%><c:out value="${detail.date}"/></td>
	</tr>
	<tr>
	<td align="center" colspan="4">내 용</td>
	</tr>
	<tr height = 500px>
	<td colspan="4"><c:out value="${detail.bbs_content}"/></td>
	</tr>
</table>
</body>
</html>

BbsDao, BDao 수정


BbsDao와 BDao에 아래 메소드를 추가해준다.

public BbsDto detail(String bbs_id);

mapper/BDao.xml 수정


아래 쿼리문을 추가해준다.

<select id="detail" resultType="com.app.app.Dto.BbsDto">
	SELECT *
		FROM bbs
		WHERE bbs_id = #{bbs_id}
</select>

위 쿼리문은 BbsController가 넘겨운 bbs_id를 통해 DB의 bbs테이블에서 해당 아이디를 가진 게시글을 BbsDto로 리턴해준다.


BbsController - bbs_detail 메소드 추가


	@RequestMapping("/bbs/{bbs_id}")
	public String bbs_detail(@PathVariable String bbs_id, Model model) {
		BDao dao = sqlSession.getMapper(BDao.class);
		BbsDto detail = dao.detail(bbs_id);
		model.addAttribute("detail", detail);
		return "bbs_detail";
	}

위의 코드에서

	@RequestMapping("/bbs/{bbs_id}")
	public String bbs_detail(@PathVariable String bbs_id, Model model) {

위 부분은 url /bbs/뒤에 들어오는 게시글 번호를 변수로 사용할 수 있게 해준다.

ex) http://~/app/bbs/5 -> 게시글 번호가 5번인 게시글 조회

PathVariable로 지정된 {bbs_id}는 DB에서 게시글 조회를 위한 키 넘버로 쓰인다.


 위와 같이 다 작성한 후 게시글 조회를 시도해보자.

위와 같이 나온다면 제대로 한 것이다.

'WEB > Spring' 카테고리의 다른 글

12) Spring - 게시글 삭제  (0) 2019.11.19
11) Spring - 게시글 수정  (0) 2019.11.18
9) Spring - 게시글 목록 구현  (0) 2019.11.01
8) Spring - 게시판 글쓰기 구현  (0) 2019.10.12
7) Spring - 로그아웃  (0) 2019.10.12

+ Recent posts