다른 사람의 github 소스를 clone(복제) 하였기 때문에

 

현재 remote repository는 clone(복제) 했던 사람의 github repository URL 이다.

 

그렇기 때문에  URL 주소를 변경해주면 된다.

 

 

git remote set-url origin 'your github repo'

 

url를 변경해주고

 

작업을 한 뒤

 

add, commit 을 하고 push 를 하면

 

나의  github repo에 소스가 올라가 있는 것을 볼 수 있다!!

'github' 카테고리의 다른 글

markdown 문법  (0) 2021.01.12
자주쓰는 git 명령어  (0) 2020.12.22
eclipse 프로젝트와 Github 연결  (0) 2020.12.19

 

vetur

 

Material Icon Theme

 

 

Night Owl

 

 

코드강조 플러그인

 

 

 

 

Live Server

 

 

ESLint

 

 

 

Prettier - Code formatter

 

 

 

Auto Close Tag

 

 

 

 

 

 

Atom Keymap

설치

 

pm2.keymetrics.io/

 

PM2 - Home

Advanced process manager for production Node.js applications. Load balancer, logs facility, startup script, micro service management, at a glance.

pm2.keymetrics.io

 

npm install pm2 -g

 

 

 

 

활용

pm2 start 파일

 

저는 vscode에 있는 main.js를 실행 시켜보았습니다.

 

pm2 start main.js

 

 

 

PM2 =>

ADVANCED, PRODUCTION PROCESS MANAGER FOR NODE.JS

 

Node.js에서 만든 프로그램 (위에 있는 main.js ) 을 실행하다 보면

 

node main.js

 

프로그램이 꺼질수도 있다. 

 

이때 PM2 프로그램이 프로세스를 감시하고 있다가 꺼지면 다시 켜주는 역할을 한다.

또한, 프로그램을 작동하다 변경된 사항이 있으면 node를 껐다가 다시 켜는 번거로움이 있었는데,

PM2은 파일이 변경되면 것을 감지하여 자동으로 프로그램을 껐다가 켜준다.

 

 

 

pm2 monit

 

pm2가 실행하고 있는 프로그램을 보여준다.

 

 

 

 

pm2 list

 

목록을 보여준다.

 

 

 

 

pm2 stop main.js

잠시 멈추는 기능

 

 

 

pm2 start main.js --watch

 

 

서버를 껐다가 키지 않고 

리로드(새로고침)만 해주면 웹에 변경사항이 반영된다.

 

 

pm2 log

 

오류와 같은 것들을 확인 할수있다.

오류

pm2 : 이 시스템에서 스크립트를 실행할 수 없으므로 파일을 로드할 수 없습니다. 자세한 내용은 about_Execution_Policies(https://go.microsoft.com/fwlink/?LinkID=135170)를를 참조하십시오.
위치 줄:1 문자:1

 

 

 

 

해결

 

  • windows PowerShell을 관리자 권한으로 실행
  • Get-ExecutionPolicy 입력하여 자신의 권한 상태 확인
  • 권한이 RemoteSigned가 아니라면 Set-ExecutionPolicy RemotedSigned 입력

 

 

 

 

'

 

 

Restricted로 확인

 

 

권한

  • Restricted  :  PowerShell의 실행 권한 정책 중 기본적으로 적용되어있는 옵션. ps1 스크립트 파일을 로드하여 실행할 수 없는 정책
  • AllSigned  :  신뢰된 배포자에 의해 서명된 스크립트만 실행 할 수 있는 정책
  • RemoteSigned  :  로컬 컴튜퍼에서 본인이 생성한 스크립트만 실행 가능 또는 인터넷에서 다운로드 받은 스크립트는 신뢰된 배포자에 의해 서명된 것만 실행 가능한 정책
  • Unrestricted  :  제한 없이 모든 스크립트 실행 가능한 정책
  • ByPass  :  어떤 것도 차단하지 않고 경고 없이 실행 가능한 정책
  • Undefined  :  정책 적용 안함

 

 

 

설정완료!!!!

 

 

 

 

확인

오류 해결!!!

'Node.js' 카테고리의 다른 글

[Node.js] PM2 설치 및 활용  (0) 2021.01.15

의존성 설정

build.gradle

dependencies {
implementation 'org.springframework.boot:spring-boot-starter-thymeleaf'
implementation 'org.springframework.boot:spring-boot-starter-web'
testImplementation('org.springframework.boot:spring-boot-starter-test') {
exclude group: 'org.junit.vintage', module: 'junit-vintage-engine'
}
}

스프링 부트 라이브러리

  • spring-boot-starter-web

    • spring-boot-starter-tomcat: 톰캣(웹서버)
    • spring-webmvc: 스프링 웹 MVC
  • spring-boot-starter-thymeleaf : 타임리프 템플릿 엔진(view)

  • spring-boot-starter(공통) : 스프링 부트 + 스프링 코어 + 로깅

    • spring-boot
      • spring-core
    • spring-boot-starter-logging
      • logback,slf4j

테스트 라이브러리

  • spring-boot-starter-test
    • junit: 테스트 프레임워크
    • mockito : 목 라이브러리
    • assertj : 테스트 코드를 좀 더 편하게 작성하게 도와주는 라이브러리
    • spring-test : 스프링 통합 테스트 지원

 

 


 

 

기본 view

 

  Welcome Page

   

resources/static/index.html

 

 

 

index.html

<!DOCTYPE HTML>
<html>
<head>
    <title>Hello</title>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
</head>
<body>
Hello Spring
</body>
</html>

 

http://localhost:8080/

 

 

@Controller

 

 

HelloController.java

@Controller
public class HelloController {

    @GetMapping("hello") //http://localhost:8080/hello
    public String hello(Model model){
        model.addAttribute("data","hello");
 
        return "hello";    //   resources/templates/hello.html
    }
    
    
    }

 

resources/templates/hello.html

 

 

hello.html

<!DOCTYPE HTML>
<html xmlns:th="http://www.thymeleaf.org">
<head>
    <title>Hello</title>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
</head>
<body>
<p th:text="'안녕하세요. ' + ${data}" >안녕하세요</p>
</body>
</html>

 

${data}  <=  HelloContrller 에 Model model 에 있는 key 값  (value는 hello)

 

 

 

 

 

 

 


 

MVC와 템플릿엔진

 

HelloController.java

 
 @Controller
public class HelloController {
 
 @GetMapping("hello-mvc")
    public String helloMvc(@RequestParam("NAME") String name , Model model){

         model.addAttribute("name", name);

        return "hello-template";  //resources/templates/hello-template.html
    }
    
   }

 

 

http://localhost:8080/hello-mvc?NAME=""

 

@RequestParam("NAME")  <=  ( ?NAME= )

 

 

@RequestParam의 값이 Model 의 value가 된다.

 

 

 

resources/templates/hello-template.html

 

hello-template.html

<html xmlns:th="http://www.thymleaf.org" >
<body>

<p th:text="'안녕 내이름은' +${name} + '야!!'" >hello! empty</p>

</body>

</html>

 

실행

http://localhost:8080/hello-mvc?NAME=park

 

 

 

 

 

 

 

출처 www.inflearn.com/course/%EC%8A%A4%ED%94%84%EB%A7%81-%EC%9E%85%EB%AC%B8-%EC%8A%A4%ED%94%84%EB%A7%81%EB%B6%80%ED%8A%B8

정적콘텐츠

 

공식 문서

Spring Boot Feature

 

resoureces/static/**

 

 

 

resources/static/hello-static.html

 

hello-static.html

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
<p> 정적 컨텐츠</p>
</body>
</html>

 

실행  => http://localhost:8080/hello.static.html

 

 

 

 

 

출처: https://www.inflearn.com/course/%EC%8A%A4%ED%94%84%EB%A7%81-%EC%9E%85%EB%AC%B8-%EC%8A%A4%ED%94%84%EB%A7%81%EB%B6%80%ED%8A%B8

 

제목

 

# 제목1
## 제목2
### 제목3
#### 제목4
##### 제목5

 

목록

 

순서가 없는 목록에 사용하는 것 '-' , '*' , '+'

- 목록1
- 목록2
- 목록3

* 목록4
* 목록5
* 목록6

+ 목록7
+ 목록8
+ 목록9

 

순서가 필요한 목록에 사용하는것 '숫자.'
1. list1
1. list2
1. list3

1. list4
2. list5
3. list6

3. list7
3. list8
3. list9

 

 

링크

[google](http://www.google.com)

[네이버](http://www.naver.com)

[상대참조](../member/controller)


일반 url 이나 < > 를 사용하면 링크를 바로 사용함

네이버 : http://www.naver.com

네이버 : <http://www.naver.com>

강조

 

이텔릭체는 별표 , 언더바 사용

안녕하세요 *반갑습니다.* , 안녕하세요 _반갑습니다_


진한글씨(bold) 별표2개 ,언더바 2개 사용

안녕하세요 **반갑습니다** , 안녕하세요 __반갑습니다__

 

'github' 카테고리의 다른 글

[git] git clone(복제) 한 뒤 나의 github에 push 하기  (0) 2021.01.16
자주쓰는 git 명령어  (0) 2020.12.22
eclipse 프로젝트와 Github 연결  (0) 2020.12.19

Button 속성

 

<button class="btn btn-success" >1</button>
<button class="btn btn-info" >2</button>
<button class="btn btn-block" >3</button>
<button class="btn btn-block btn-defalut" >4</button>
<button class="btn-primary" >5</button>
<button class="btn btn-primary" >6</button>
<button class="btn btn-block btn-danger">7</button>
 

 

com.mysql.jdbc.exceptions.jdbc4.MySQLIntegrityConstraintViolationException: Duplicate entry 'gunny111111' for key 'user.userId_UNIQUE'
	at java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
	at java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
	at java.base/jdk.internal.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
	at java.base/java.lang.reflect.Constructor.newInstanceWithCaller(Constructor.java:500)
	at java.base/java.lang.reflect.Constructor.newInstance(Constructor.java:481)
	at com.mysql.jdbc.Util.handleNewInstance(Util.java:403)
	at com.mysql.jdbc.Util.getInstance(Util.java:386)
	at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:936)
	at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3933)
	at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3869)
	at com.mysql.jdbc.MysqlIO.sendCommand(MysqlIO.java:2524)
	at com.mysql.jdbc.MysqlIO.sqlQueryDirect(MysqlIO.java:2675)
	at com.mysql.jdbc.ConnectionImpl.execSQL(ConnectionImpl.java:2465)
	at com.mysql.jdbc.PreparedStatement.executeInternal(PreparedStatement.java:1915)
	at com.mysql.jdbc.PreparedStatement.executeUpdateInternal(PreparedStatement.java:2136)
	at com.mysql.jdbc.PreparedStatement.executeUpdateInternal(PreparedStatement.java:2070)
	at com.mysql.jdbc.PreparedStatement.executeLargeUpdate(PreparedStatement.java:5187)
	at com.mysql.jdbc.PreparedStatement.executeUpdate(PreparedStatement.java:2055)
	at user.UserDAO.join(UserDAO.java:34)
	at org.apache.jsp.user.userRegisterAction_jsp._jspService(userRegisterAction_jsp.java:187)
	at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:71)
	at javax.servlet.http.HttpServlet.service(HttpServlet.java:733)
	at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:477)
	at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:385)
	at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:329)
	at javax.servlet.http.HttpServlet.service(HttpServlet.java:733)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:231)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
	at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:53)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
	at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:202)
	at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:97)
	at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:542)
	at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:143)
	at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:92)
	at org.apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:690)
	at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:78)
	at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:343)
	at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:374)
	at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:65)
	at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:880)
	at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1601)
	at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49)
	at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1130)
	at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:630)
	at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
	at java.base/java.lang.Thread.run(Thread.java:832)

 

Duplicate entry 'gunny111111' for key 'user.userId_UNIQUE'

 

회원가입 로직 수행 중

해당 에러가 발생하였다.

 

회원가입시 아이디 중복을 방지하기 위해

mysql에서 아이디에 해당하는 컬럼에 unique 제약 조건을 설정하였다.

 

그래서 회원가입시 아이디가 중복 되지 않게 값을 입력 했는데도

해당 에러가 발생하였다.

 

 

원인은.. 

pstmt.executeUpdate() 문의 결과 값을 알고 싶어

console 창에 입력했는데,

 

그것 또한 실행 되어

 

콘솔에서 한 번

 

return 값에서 한 번  총 2번 실행 되기 때문에

 

아이디가 중복 된것으로 나온다..

 

어쩐지..

mysql DB를 확인해보니 값은 들어가 있는데 

UI에서 작동하지 않았던 것이다..

 

 

혹시나 해서 제약조건에 unique 설정을 제거 해보니

 

DB에 데이터가 2개나 들어가 있는 것을 볼 수 있었다.

 

 

 

'JSP' 카테고리의 다른 글

JSP - JSTL 설치 및 사용 방법  (0) 2020.12.29

justify-content

 

flext 컨테이너 안에 있는 요소에 간격을 지정하는 것!

 

속성

  • flex-start : 기본값으로 justify-content가 지정 되지 않은 경우 이것이 기본정렬
  • flex-end : flext 컨테이너의 끝에 요소를 정렬한다. 행의 경우 오른쪽 끝, 열의 경우 하단 끝 
  • space-between : 요소사이에 추가 공간을 두고 첫 번째 요소와 마지막 요소는 가장 자리로 밀려난다. 예를 들어 첫번째 항목은 컨테이너의 왼쪽에, 마지막 항목은 컨테이너의 오른쪽에 나머지 공간은 다른 요소에 균등하게 배분
  • space-around : space-between와 비슷하지만 첫번째 요소와 마지막 요소가 컨테이너의 가장자리에 고정되어 있지 않다. 공간은 flex 컨테이너의 양쪽 끝에 절반의 공간을 두고 모든 항목 주위에 분산 된다.
  • space-evenly : flex 컨테이너의 양쪽 끝에 전체 공간을 두고 flex 요소 사이에 공간을 균등하게 분배
  • space-center : 모든 flex 요소를 flex 컨테이너 내부 중앙에 정렬!!

 

<style>
  #box-container {
    background: gray;
    display: flex;
    height: 500px;
   

  }
  #box-1 {
    background-color: dodgerblue;
    width: 25%;
    height: 100%;
  }

  #box-2 {
    background-color: orangered;
    width: 25%;
    height: 100%;
  }
</style>

<div id="box-container">
  <div id="box-1"></div>
  <div id="box-2"></div>
</div>


justify-content : flex-end

<style>
  #box-container {
    background: gray;
    display: flex;
    height: 500px;
    justify-content: flex-end;
   

  }
  #box-1 {
    background-color: dodgerblue;
    width: 25%;
    height: 100%;
  }

  #box-2 {
    background-color: orangered;
    width: 25%;
    height: 100%;
  }
</style>

<div id="box-container">
  <div id="box-1"></div>
  <div id="box-2"></div>
</div>


justify-content : space-between

<style>
  #box-container {
    background: gray;
    height: 500px;
    display:flex;
    justify-content: space-between;
    
   

  }
  #box-1 {
    background-color: dodgerblue;
    width: 25%;
    height: 100%;
  }

  #box-2 {
    background-color: orangered;
    width: 25%;
    height: 100%;
  }
</style>

<div id="box-container">
  <div id="box-1"></div>
  <div id="box-2"></div>
</div>


 

justify-content : space-around

<style>
  #box-container {
    background: gray;
    height: 500px;
    display:flex;
    justify-content: space-around;
    
   

  }
  #box-1 {
    background-color: dodgerblue;
    width: 25%;
    height: 100%;
  }

  #box-2 {
    background-color: orangered;
    width: 25%;
    height: 100%;
  }
</style>

<div id="box-container">
  <div id="box-1"></div>
  <div id="box-2"></div>
</div>


justify-content : space-evenly

 

<style>
  #box-container {
    background: gray;
    height: 500px;
    display:flex;
    justify-content: space-evenly;
    
   

  }
  #box-1 {
    background-color: dodgerblue;
    width: 25%;
    height: 100%;
  }

  #box-2 {
    background-color: orangered;
    width: 25%;
    height: 100%;
  }
</style>

<div id="box-container">
  <div id="box-1"></div>
  <div id="box-2"></div>
</div>


justify-content : center

<style>
  #box-container {
    background: gray;
    height: 500px;
    display:flex;
    justify-content: center;
    
   

  }
  #box-1 {
    background-color: dodgerblue;
    width: 25%;
    height: 100%;
  }

  #box-2 {
    background-color: orangered;
    width: 25%;
    height: 100%;
  }
 
</style>

<div id="box-container">
  <div id="box-1"></div>
  <div id="box-2"></div>
 
 
</div>

+ Recent posts