728x90
반응형
728x90
반응형

JavaScript

 

JavaScript는 웹페이지를 동적으로, 프로그래밍적으로 제어하기 위해서 고안된 언어입니다. 그렇기 때문에 오늘날 가장 중요한 플랫폼이라고 할 수 있는 웹브라우저에서 유일하게 사용할 수 있는 프로그래밍 언어입니다. 최근에 HTML5의 적용이 가속화되면서 지금까지 모바일 환경에서 네이티브 앱(안드로이드, IOS)으로 구현해왔던 기능이 웹에서도 대부분 구현할 수 있게 되고 있습니다. 웹이 크로스플랫폼이라는 점, 검색 가능하다는 점, 네이티브 디바이스를 제어할 수 있는 하드브리드 시스템(phonegap )이 존재한다는 점에서 웹의 중요함은 더욱 확대될 것입니다. 자연스럽게 웹에서 구동되는 유일한 언어인 JavaScript의 중요함도 점점 커질 것으로 예상됩니다.



자바스크립트의 문자 표현 방식

alert(“coding everybody”); 또는 alert(‘coding everybody’);

alert(“coding everybody’); -> 문법에러

 

typleof는 값의 데이터형을 알려주는 기능입니다.

typeof 1 = “number”

typeof “1” = “string”

 

문자에 대한 명령들

alert(“coding\neverybody”); : \n은 줄바꿈의 의미를 갖습니다.

alert(“coding”+”everybody”); : 문자와 문자를 더할 때 +를 이용합니다.

alert("coding everybody".length); : 자의 길이를 구할 때는 문자 뒤에 .length를 붙입니다.


변수

JavaScript에서 변수는 var로 시작합니다. (문자나 숫자 같은) 값을 담는 컨테이너로 값을 유지할 필요가 있을 때 사용합니다. 여기에 담겨진 값은 다른 값으로 바꿀 수 있습니다. 변수는 마치 (사람이 쓰는 언어인) 자연어에서 대명사와 비슷한 역할을 합니다.

var a = 1; alert(a+1);  //2

var a = 2; alert(a+1);  //3

 

var first = "coding";

alert(first+" everybody");

변수는 코드의 재활용성을 높여줍니다.

alert(100+10);

alert((100+10)/10);

alert(((100+10)/10)-10);

alert((((100+10)/10)-10)*10);

그런데 계산해야 할 값을 100이 아니라 1000으로 바꿔야 한다면 위의 코드를 모두 수정해야 합니다. 변수를 적용 사용한 코드입니다.

a = 100;

a = a + 10;

alert(a);

a = a / 10;

alert(a);

a = a - 10;

alert(a);

a = a * 10;     

alert(a);


출처 : 생활코딩 강의


728x90
반응형
728x90
반응형

깃을 사용하다보면 커밋 메시지가 중요한데요. 메시지를 수정하고 싶을 때는 간단합니다.

커밋을 클릭하고 커밋 옵션-마지막 커밋 정정의 옵션을 선택합니다.



선택하면 아래와 같은 메시지가 뜹니다. 'Yes'



메시지를 변경하고 커밋 메시지를 누르면 끝!




방법2. ===========================================================

커밋 메시지 변경하는 2번째 방법입니다.

우선 아래 화면에 표시된 터미널 버튼을 누릅니다!



아래와 같은 cmd창이 나타나면 git commit --amend 명령어를 입력합니다.



명령어를 입력하셨다면 텍스트 편집기를 실행하여 마지막 커밋했던 파일을 불러옵니다.



저처럼 cmd창이 익숙하지 않으신 분들 계실 것 같은데.. 저도 친해지려고 노력하고 있습니다..ㅎㅎ

아래 화면처럼 변경하고자 하는 메시지를 입력해주세요!

그리고 저장을 위해 esc 키를 눌러줍니다.

:wq! 를 입력하고 엔터를 누르면 저장이 완료됩니다.



편집기를 나오셨다면 명령어 실행화면으로 돌아갑니다. 



메시지 변경을 완료했다면 pull을 눌러주세요. 메시지 변경했다는 데이터를 받아왔으니 다시 push를 해서 저장된 깃 허브에 저장해야겠죠. push를 완료하셨다면 아래와 같이 메시지가 변경되셨을 겁니다.





728x90
반응형

'프로그래밍 > Git' 카테고리의 다른 글

SourceTree 프로그램을 사용한 Git hub 시작!!  (0) 2017.10.31
728x90
반응형

스프링 프레임워크를 사용하면서 root-context.xml와 servlet-context.xml 차이에 대한 궁금증에 생겨 포스팅합니다.

root-context.xml와 servlet-context.xml는 두 파일 모두 객체(bean)를 정의한다는 공통점이 있습니다.


root-context.xml 는 

 -jsp와 관련이 없는 객체(bean)를 설정해줍니다. 아래 그림과 같이(service, repository)

 -비즈니스 로직을 위한 설정입니다.


servlet-context.xml 는 

 -jsp와 관련 있는 객체(bean)를 설정해줍니다. (controller, MultipartResolver(파일 업로드), Interceptor(로그인) 등),  

 -URI와 관련 설정을 담는 클래스는 servlet-context.xml에 들어가야 합니다.

 -WEB Application에서 Client의 요청을 받기 위한 설정입니다.




https://docs.spring.io/spring/docs/current/spring-framework-reference/web.html#mvc


root-context.xml


	
		
	
	
	
	<context:component-scan base-package="org.zerock.persistence"/>
	
	
	<context:component-scan base-package="org.zerock.service"/>
	
	>
	<context:component-scan base-package="org.zerock.aop"/>
	<aop:config/>
	
	
	<aop:aspectj-autoproxy></aop:aspectj-autoproxy>
	
	
	
			
	<tx:annotation-driven/> 
  

servlet-context.xml

  
  <context:component-scan base-package="org.zerock.controller" />
	
	<!-- 17.11.1 파일 저장 경로 설정 -->
	<beans:bean id="uploadPath" class="java.lang.String">
		<beans:constructor-arg value="C:\\springUploadTest\\upload"/>
	</beans:bean>
	
	<beans:bean id="multipartResolver" 
	class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
		 
	</beans:bean>
	
	
	
	
	
	
	
	
		
			<mapping path="/user/loginPost" />
			<beans:ref bean="loginInterceptor" />
		
		
		
			<mapping path="/sboard/register "/>
			<mapping path="/sboard/modifyPage" />
			<mapping path="/sboard/removePage" />
			<beans:ref bean="authInterceptor"/>
    
		
	
 

  


728x90
반응형
728x90
반응형

1. https://git-scm.com/ 먼저 깃 홈페이지에 들어갑니다.



2. 자신의 OS에 맞는 파일을 다운로드 합니다.



3. https://github.com/ 깃 허브에 접속하여 회원가입을 합니다.



4. 회원가입을 하셨다면 로그인 후 아래와 같은 화면이 나타납니다

Start a project 혹은 new repository 버튼을 눌러 형상관리할 프로젝트를 생성합니다.



5. 다음은 저장소의 이름을 설정하는 부분인데요. 프로젝트에 관련된 이름을 저장해주면 좋을 것 같네요.

이름 작성 후에 Create repository 버튼을 누릅니다.



6. 저장소를 만드셨다면 아래와 같은 화면이 나타날 것입니다. 아래 화면은 SourceTree와 git hub를 연동할 때 사용됩니다. 도메인 주소로 사용되니 기억해주세요!



7. 저장소를 만들었으니 소스트리 다운하겠습니다. 소스트리는 GUI(Graphic User Interface) 환경에서 git을 사용하여 편리성을 주는 프로그램입니다.  https://www.sourcetreeapp.com URL로 들어가  Download free 버튼을 눌러 다운합니다.



8. 다운하셨다면 순서대로 설치해주시면 됩니다.



9. 설치를 완료하셨다면 아래와 같은 화면이 나타납니다. Clone 버튼을 눌러 계정을 추가해줍니다. 위에 저장한 도메인 주소를 복사 붙여넣기를 해주세요. 그러면 자동으로 목적지 경로를 설정해줍니다. 완료하셨다면 클론 버튼을 누릅니다.



10. 파란색 저장소(R) - 저장소 설정 버튼을 눌러주면 아래와 같은 화면이 나옵니다.

URL 표시되어 있다면 확인 버튼을 눌러주세요.



11. 예제로 저장소 폴더에 gitTest 텍스트 파일을 생성합니다. git hub에 잘 저장되는 지 확인하기 위함입니다.



12. 만드셨다면 커밋 버튼을 눌러줍니다.



13. gitTest 텍스트 파일을 git hub에 저장하기 위해 Push 버튼을 누릅니다. master 항목을 체크하고 OK버튼을 클릭합니다.



14. git hub 홈페이지에 만들었던 저장소로 접속하면 gitTest 텍스트 파일이 정상적으로 push된 것을 확인할 수 있습니다.








728x90
반응형

'프로그래밍 > Git' 카테고리의 다른 글

소스트리에서 마지막 커밋 메시지 수정하기!!  (1) 2017.11.10
728x90
반응형

REST는 'Representational State Transfer'의 약어로 하나의 URI는 하나의 고유한 리소스(Resource)를 대표하도록 설계된다는 개념입니다.

최근 서버에 접근하는 기기의 종류가 다양해 지면서 다양한 기기에 공통으로 데이터를 처리할 수 이쓴 규칙을 만드는 것이 REST방식입니다.

REST API 설계 시 중요한 점

1. URI는 정보의 자원을 표현해야 합니다.

2. 자원에 대한 방식은 HTTP Method(GET, POST, PUT, DELETE)로 표현합니다.


스프링은 3버전부터 @ResponseBody 어노테이션을 지원하며 REST방식의 처리를 지원했고

@ResponseBody 어노테이션은 메소드나 리턴 타입에 사용할 수 있는 어노테이션으로 자동화된 처리 방식입니다.

최근 4버전 부터는 @RestController 어노테이션이 사용가능해졌습니다.

@RestController 어노테이션의 경우 기존의 특정한 JSP와 같은 뷰를 만들어 내는 것이 아닌 REST 방식의 데이터 처리(데이터 자체를 반환)를 위해 사용하는 어노테이션입니다. 문자열 데이터는 브라우저에서 'text/html' 타입으로 처리됩니다.


<dependency>

<groupId>com.fasterxml.jackson.core</groupId>

<artifactId>jackson-databind</artifactId>

<version>2.8.4</version>

</dependency>    


스프링에서 jackson-databind 라이브러리를 pom.xml에 추가해줘야 합니다. jackson-databind 라이브러리는 객체를 JSON 타입의 데이터로 변환하거나, 반대의 작업을 할 때 사용합니다. JSON을 사용해야 하는 프로젝트에 반드시 필요한 라이브러리입니다.


REST 방식은 다양한 디바이스(Android나 iPhone과 같은 모바일 환경에서 서버의 데이터, HTML5, Ajax 등을 사용하는 경우)로부터 서버에 데이터와 작업을 요청하고, 결과를 받는다는 점에서 유용하지만, 일반적인 웹 페이지와는 달리 화면을 제작하지 않는 형태로 처리되기 때문에, 결과를 체크하면서 개발하기에는 적합하지 않습니다.


하지만 좀 더 쉽게 결과를 테스트 할 수 있도록 REST 클라이언트 프로그램이 존재합니다

Chrome 브라우저의 앱으로 존재하는 Advanced REST Client입니다. 

먼저 크롬에 Advanced REST Client 키워드를 검새합니다.


저는 이미 설치가 되어있는데요. 설치가 되지 않은 분들은 아래 빨간 화면에 앱 추가 버튼을 눌러주세요!





설치가 되었다면 아래와 같이 ARC 프로그램이 웹 스토어에 등록됩니다.



사용하는 방법은 RequestURL에 URL을 입력하고 전송 방식을 선택하면 됩니다.  전송 방식에 따라 추가적인 데이터를 입력할 수 있습니다.

SEND버튼을 누르면 아래와 같은 화면이 보여집니다.




728x90
반응형
728x90
반응형


런타임 오류 내용입니다.

 
org.springframework.validation.BeanPropertyBindingResult: 2 errors Field error in object 'cri' on field 'page': rejected 
value []; codes [typeMismatch.cri.page,typeMismatch.page,typeMismatch.int,typeMismatch]; arguments 
[org.springframework.context.support.DefaultMessageSourceResolvable: codes [cri.page,page]; arguments []; default 
message [page]]; default message [Failed to convert property value of type 'java.lang.String' to required type 'int' for 
property 'page'; nested exception is java.lang.NumberFormatException: For input string: ""] Field error in object 'cri' on 
field 'perPageNum': rejected value []; codes
[typeMismatch.cri.perPageNum,typeMismatch.perPageNum,typeMismatch.int,typeMismatch]; arguments 
[org.springframework.context.support.DefaultMessageSourceResolvable: codes [cri.perPageNum,perPageNum]; 
arguments []; default message [perPageNum]]; default message [Failed to convert property value of type 
'java.lang.String' to required type 'int' for property 'perPageNum'; nested exception is 
java.lang.NumberFormatException: For input string: ""]

 


게시판 수정 중 컨트롤러에서 value=""빈칸으로 발생하여 sumbit시에 값을 읽지 못해 발생한 오류입니다.

컨트롤러에서 @ModelAttribute를 명시해주지 않아서 생긴 오류였습니다.

@RequestParam이나 @MddelAttribute 어노테이션을 사용하면 메소드의 길이가 길어지고 복잡하다고 느낄 수 있습니다.

하지만 이를 생략하는 것은 저처럼 오류를 범할 수 있으니 꼭 명시해주는게 좋습니다.


728x90
반응형
728x90
반응형


jsp파일에서 pageEncoding 변경하는 방법에 대해 알려드릴까해요!

이클립스 메뉴에서 Windows -> Preferences -> Web -> JSP Files -> Encoding

원하는 언어를 선택해주시면 됩니다!

저는 UTF-8로 변경하였습니다.



728x90
반응형
728x90
반응형

문제는 다음과 같습니다.

https://www.acmicpc.net/problem/14502

 
import java.util.Scanner;

public class Test14502 {
	static int N, M;
	static int totalCNT;
	static int[] dx = {0, -1, 0, 1};
	static int[] dy = {-1, 0, 1, 0};
	static int[][] adMatrix, visit;
	
	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		N = sc.nextInt();
		M = sc.nextInt();
		adMatrix = new int[N][M];
		visit = new int[N][M];
		for(int i=0; i<N; i++) {
			for(int j=0; j<M; j++) {
				adMatrix[i][j] = sc.nextInt();
			}
		}
		//알고리즘 풀이
		for(int i=0; i<N*M; i++) {
			int row = i/M;
			int col = i%M;
			if(adMatrix[row][col]==0) {
				adMatrix[row][col]=1;
				DFS(i, 1);
				adMatrix[row][col]=0;
			}
		}
		System.out.println(totalCNT);
	}
	//벽 3개 세우기
	static void DFS(int v, int cnt) {
		int row = v/M;
		int col = v%M;
		if(cnt==3) {
			for(int i=0; i<N; i++) {
				for(int j=0; j<M; j++) {
					visit[i][j]=adMatrix[i][j];
				}
			}
			for(int i=0; i<N; i++) {
				for(int j=0; j<M; j++) {
					if(visit[i][j]==2) {
						spreadVirus(i, j);
					}
				}
			}
			safetyArea();
		}else {
			for(int i=v+1; i<N*M; i++) {
				int row2 = i/M;
				int col2 = i%M;
				if(adMatrix[row2][col2]==0) {
					adMatrix[row2][col2]=1;
					DFS(i, cnt+1);
				}
			}
		}
		adMatrix[row][col]=0;
	}
	//바이러스 확산 메소드
	static void spreadVirus(int row, int col) {
		for(int i=0; i<4; i++) {
			int nextRow = dx[i]+row;
			int nextCol = dy[i]+col;
			if(nextRow>=0 && nextRow<N && nextCol>=0 && nextCol<M) {
				if(visit[nextRow][nextCol]==0) {
					visit[nextRow][nextCol]=2;
					spreadVirus(nextRow, nextCol);
				}
			}
		}
	}
	//안정 영역 크기 구하기
	static void safetyArea() {
		int cnt=0;
		for(int i=0; i<N; i++) {
			for(int j=0; j<M; j++) {
				if(visit[i][j]==0) {
					cnt++;
				}
			}
		}
		if(totalCNT<cnt) {
			totalCNT = cnt;
		}
	}
}

 





결과입니다.


728x90
반응형
728x90
반응형

+ Recent posts