Java CMD에서 클리어하기


1
2
3
4
5
final String os = System.getProperty("os.name");
if(os.contains("Windows"))
    new ProcessBuilder("cmd", "/c", "cls").inheritIO().start().waitFor();
else
    Runtime.getRuntime().exec("clear");
cs

CMD화면에서 자바프로그램을 실행했을 때 화면을 새롭게 지우고 싶으면 위의 코드를 삽입하면 됩니다.



'Language > Java' 카테고리의 다른 글

1. 자바 입력버퍼 오류  (0) 2019.02.03

문제) nextInt() 사용 후 입력이 제대로 되지 않는 문제를 확인


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
public static void main(String[] args) {
    
    boolean loop = true;
    Scanner sc = new Scanner(System.in);
    int number;
    
    while(loop) {
        System.out.print("숫자입력:");
        try {
            number = sc.nextInt();
 
            if(number == 0) {
                loop = false;
            }
        } catch (Exception e) {
        }
    }
}

cs

문제 발생 이유) nextInt()로 입력을 받을시 입력한 숫자까지만 입력을 받게되서 다음에 입력할 때 문제가 발생하게 된다.


해결 방법)  nextLine()을 삽입해서 Scanner의 입력버퍼를 한번 비워주도록 만들었다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
public static void main(String[] args) {
    
    boolean loop = true;
    Scanner sc = new Scanner(System.in);
    int number;
    
    while(loop) {
        System.out.print("숫자입력:");
        try {
            number = sc.nextInt();
 
            if(number == 0) {
                loop = false;
            }
        } catch (Exception e) {
            sc.nextLine();
        }
    }
}
cs


'Language > Java' 카테고리의 다른 글

2. Java CMD Clear  (0) 2019.02.03


오늘은 간단하게 태그들과 태그에서 사용할 수 있는 속성들을 살펴보도록 하겠습니다.



  • <body> : 웹페이지의 내용물들이 위치하는 태그
    <Body 속성="속성값" 속성="속성값">

                 웹 페이지 내용물
    </body>
  •  속성

    설명 

     TOPMARGIN="수치"

     상단 여백 지정 (수치의 단위는 픽셀) 

     LEFTMARGIN="수치"

     왼쪽 여백 지정 (수치의 단위는 픽셀)

     BACKGROUND="주소"

     배경 이미지 지정

     BGCOLOR="색상" 

     배경 색상 지정 (색상은 16진수의 6자리이거나 )

     TEXT="색상"

     글자 색상 지정 (특정 색상 지정 )     ex) TEXT="#ff00ff" or TEXT="red"

     LINK="색상"

     하이퍼 링크 색상 지정

     ALINK="색상" 

     하이퍼 링크를 마우스로 클릭할 때 색상 지정 (누르고 있으면 색상을 확인해 볼 수 있다)

     VLINK="색상" 

     이미 방문한 링크의 색상 지정


  • <!--   내용  --> : 주석처리하고 싶은 내용을 <!--       안쪽에 써주면 인식하지 못합니다        --> 

  • <font> : 글씨의 크기, 색상 글꼴 지정
  •  속성

    설명 

    SIZE="수치" 

    글자 크기 지정  ( 수치 범위 : 1~7 ,  Default : 3)

    COLOR="색상" 

    글자 색상 지정 

    FACE="글꼴" 

    글꼴 종류 지정 


  • <br> : 줄 바꾸기 (line break),  보통 글을 작성할 때 Enter친 것과 같은 효과입니다.
    내용 <br>

  • <p> : 단락(Paragraph)을 구분합니다.
        <p 속성="값">  내용 </p>
    <pre> : 작성한 형식을 그대로 유지합니다.
        <pre 속성="값"> 내용 </pre>
  •  속성

    설명 

    ALIGN 

     정렬시킵니다





'Language > Javascript' 카테고리의 다른 글

7.javascript배열  (0) 2017.09.22
6.javascript 반복문  (0) 2017.09.22
5.javascript객체  (0) 2017.09.22
3.javascript 조건문  (0) 2017.09.19
2.Javascript 연산자  (0) 2017.09.19

이번에는 배열에 대해서 알아보겠습니다.


배열(Array)은 많은 데이터를 순번을 가지고 저장할 때 사용됩니다. 배열에는 원소라는 index번호를 할당받은 저장소가 있으며, 배열의 원소에 index로 접근하여 할당된 값을 읽어 올 수 있습니다. 많은 양의 데이터를 보관해야 할 때 배열을 사용하면 효율적으로 데이터를 관리할 수 있습니다. 


배열 생성

배열은 객체의 생성 방법과 유사합니다. 그럼 배열의 생성방법을 보겠습니다.

1
2
var arr = [];
var arr = new Array();
cs


배열 원소에 값을 할당하기

배열 원소의 index를 통해서 값을 할당해 주거나 배열을 생성하면서 동시에 값을 할당하는 것도 가능합니다. 

배열을 생성하고 값 넣기

1번 라인에서 []배열을 생성시켜 변수 fruits에 할당합니다. 그리고 변수 fruits를 통해서 배열의 원소 0~2index에 값을 각각 할당합니다. 

배열의 index는 0부터 시작하기 때문에 2번 라인에서 index0 에 값을 할당했습니다.

1
2
3
4
var fruits = [];
fruits[0] = "사과";
fruits[1] = "배";
fruits[2] = "바나나";
cs


배열을 생성하면서 값 넣기

1
var fruits = ["사과", "배", "바나나"];
cs

위의 두개의 배열의 값은 같습니다. 


fruits배열

  fruits[0]

  fruits[1]

 fruits[2] 

 사과

배 

바나나 


배열 원소의 값과 원소 갯수 얻어오기


1번 라인에서 배열을 생성해 주었고, 2번 라인에서 index 0에 해당하는 원소를 읽어왔습니다. 그리고 3번라인에서 length프로퍼티로 원소의 갯수를 변수 len에 할당하고 document에 출력합니다.

1
2
3
4
5
var fruits = ["사과", "배", "바나나"];
var apple = fruits[0];
var len = fruits.length;
document.write(apple);
document.write(len);
cs




'Language > Javascript' 카테고리의 다른 글

HTML 태그 설명  (0) 2018.03.12
6.javascript 반복문  (0) 2017.09.22
5.javascript객체  (0) 2017.09.22
3.javascript 조건문  (0) 2017.09.19
2.Javascript 연산자  (0) 2017.09.19

안녕하세요 백자까입니다. 이번에 반복문에 대해서 알아보도록 하겠습니다. 

반복문(for, while, for in등)을 사용하면 동일한 일을 반복적으로 처리해야 되는 경우 한 번에 처리할 수 있습니다. 

반복문을 사용하면 코드양도 줄일 수 있고 개발의 효율성도 높일 수 있습니다. 반복문을 사용하면 코드양도 줄일 수 있고 개발의 효율성도 높일 수 있습니다. 또한 소스 수정 시 한번만 수정하면 모두 반영이 되기 때문에 작업이 수월합니다. 반복문에는 여러 종류가 있는데, 그 중 for문을 가장 많이 사용합니다. 그 외 while문과 for in문도 많이 사용합니다.


for문

for문의 기본 사용법은 다음과 같습니다. for()문을 선언하고 ()안에 시작값을 설정합니다. 그리고 비교 연산자를 통해서 마지막 값을 설정하고 증가 또는 감소연산자가 사용하고 세미콜론(;)으로 구분합니다. 

for(시작; 끝; 증가 or 감소) {

}


for문을 사용하여 변수 i의 값을 2씩 5번 증가 시켜 document에 출력하기

for()문을 선언하고 시작값으로 변수i에 숫자2를 할당하고 변수i가 10보다 작거나 같은동안 i를 2씩 증가시키며 출력합니다.

1
2
3
for(var i=2; i <=10; i+=2) {
    document.write(i);
}
cs


while문

while문은 for문과 비슷한 역할을 하지만 마지막 값만 설정해 준다는 점에서 차이가 있습니다. 

while(조건) {

}


while문을 사용하여 변수 i의 값을 1씩 증가시켜 document에 출력하기

시작 값인 변수i를 while문 밖에서 선언합니다.

while문을 선언해주고 i가 5보다 작으면 반복하도록 조건을 설정합니다. {}안의 내용을 조건이 마족하면 계속 반복하게 되는데, 증가 연산자를 while안에 넣어 while문이 무한 루프(loop)에 빠지지 않도록 주의합니다.

1
2
3
4
5
var i = 0;
while(i<5) {
    document.write(i);
    i++;
}
cs


for in문

for in문은 객체를 순회하면서 객체의 프로퍼티명을 넘겨줍니다. 또한 뒤에 나올 배열의 원소를 순회하면서 배열의 index를 넘겨주기도 합니다. for in문의 기본 사용법은 다음과 같습니다. 

for(변수 in 객체 또는 배열) {

}

for문을 선언하고 객체 또는 배열을 순회하면서 넘어오는 객체의 프로퍼티나 배열의 원소를 담을 변수를 넣은 후 in 다음에 객체 또는 배열이 들어갑니다. 그 결과 객체의 프로퍼티 갯수나 배열의 원소 갯수만큼 {}안을 반복합니다.


baby라는 객체를 생성하여 프로퍼티 3개를 추가합니다. 스리고 7번 라인에서 baby객체르르 순회하면서 변수 property에 추가시켜준 프로퍼티의 이름이 순차적으로 넘어옵니다. 8번 라인에서 넘어온 프로퍼티명의 객체 baby에 해당 프로퍼티의 값을 읽어와 document에 출력합니다.

실행하면 "2살", "남자", "9월22일"이란 값이 순차적으로 출력됩니다.

1
2
3
4
5
6
7
8
9
var baby = {
    age:"2살",
    sex:"남자",
    birthday:"9월22일"
}
 
for(var propety in baby) {
    document.write(baby[property]);
}
cs


break로 반복문에서 빠져 나오기

break는 반복문이 반복적으로 구문을 수행하는 과정에서 어떠한 조건에 만족했을 때 반복을 멈추고 반복문을 빠져 나올 수 있게 만듭니다.

반복문으로 0부터 9까지 i값을 증가시키는 중에 i가 5값이 되었을 때 break문이 실행되어 반복문을 벗어나게 됩니다.

1
2
3
for(var i=0; i<10; i++) {
    if(i==5) break;
}
cs


참고서적 : JavaScript+jQuery입문+실전북

'Language > Javascript' 카테고리의 다른 글

HTML 태그 설명  (0) 2018.03.12
7.javascript배열  (0) 2017.09.22
5.javascript객체  (0) 2017.09.22
3.javascript 조건문  (0) 2017.09.19
2.Javascript 연산자  (0) 2017.09.19

이번에는 객체에 대해서 알아보도록 하겠습니다.

 

객체(Object) 변수와 함수가 모여 만든 하나의 꾸러미라고 볼 수 있습니다. 빈 객체를 생성하여 변수와 함수를 그 안에 추가하여 만들 수 있는데

이때 선언된 변수를 '프로퍼티'라고 부르고, 함수는 '메서드'라고 합니다. 객체 자체는 프로퍼티와 메서드를 갖는 역할만 합니다.

그럼 코드로 확인해보도록 하겠습니다.

 

객체생성해보도록 하겠습니다.

객체는 New Object() 또는 {} 등 두 가지의 방법으로 생성할 수 있습니다.

1
2
var obj = new Object();
var obj = {};
cs

 

객체를 생성했으면 프로퍼티추가하고 읽어보도록 하겠습니다.

먼저 baby라는 객체를 생성합니다. 그리고 2~4번 라인에서 age, sex, birthday라는 프로퍼티를 추가하고 값을 할당합니다.

6번 라인에서는 baby객체의 age값인 '2살'을 읽어 출력하고 7번 라인에서는 "남자"라는 값을 읽어 출력합니다.

1
2
3
4
5
6
7
var baby = {};
baby.age = "2살";
baby.sex = "남자";
baby.birthday = "9월22일";
 
document.write(baby.age);
document.write(baby.sex);

cs


이번에는 객체 생성시 동시에 프로퍼티를 추가하는 방법에 대해서 알아보겠습니다.
baby객체를 생성하면서 {}안에 프로퍼티를 넣어주면되는데요 콤마(,)로 나누고, 세미콜론(;)을 사용해서 값을 넣어줍니다.
1
2
3
4
5
6
7
8
var baby = {
                age:"2살",
                sex:"남자",
                birthday:"9월22일"
            };
 
document.write(baby.age);
document.write(baby.sex);
cs



객체에 메서드를 추가하는 방법도 프로퍼티를 생성하는 방법과 유사합니다.

baby객체에 getAge() 라는 메서드를 추가합니다. 값으로 함수(function)선언과 동시에 할당합니다.

10번 라인에서 baby객체에 getAge()메서드를 호출하여 5번라인에 등록한 메서드가 호출되어 함수가 동작하게 됩니다.

여기서 주의깊게 살펴볼 사항은 this입니다. 여기서 this는 baby객체가 됩니다. 메서드를 호출하면 this를 통해서 메서드를 가지고 있는 객체가 넘어 옵니다. 

그렇기 때문에 this에서 age프로퍼티의 값을 읽어서 반환(return)해준 것입니다. 그럼 반환된 값은 10번라인에 age변수에 할당되고 11번 라인에서 변수 age를 documnet에 출력해주면 "2살"이라는 값이 출력됩니다.

이러한 개발 패턴은 jQuery나 자바스크립트 개발에서 자주 사용되는 형태이기 때문에 반드시 숙지해야 합니다.

메서드는 미리 선언한 함수를 참조할 수도 있습니다.

1
2
3
4
5
6
7
8
9
10
11
var baby = {
                age:"2살",
                sex:"남자",
                birthday:"9월22일"
                getAge:function(){
                    return this.age;
                }
            };
 
var age = baby.getAge();
document.write(age);
cs


이번에는 미리 선언되어 있는 함수를 메서드로 넣는 방법에 대해서 살펴보겠습니다.

8번 라인에 getAge()함수를 미리 선언하고, 5번 라인에서 객체에 함수명을 차조하여 메소드로 추가시켰습니다. 

12~13번 라인의 수행결과는 위와 동일합니다.

1
2
3
4
5
6
7
8
9
10
11
12
13
var baby = {
                age:"2살",
                sex:"남자",
                birthday:"9월22일"
                getAge:getAge
            };
 
function getAge(){
    return this.age;
}
 
var age = baby.getAge();
document.write(age);
cs


참고서적 : JavaScript+jQuery입문+실전북

'Language > Javascript' 카테고리의 다른 글

7.javascript배열  (0) 2017.09.22
6.javascript 반복문  (0) 2017.09.22
3.javascript 조건문  (0) 2017.09.19
2.Javascript 연산자  (0) 2017.09.19
1.Javascript변수  (0) 2017.08.15

HTTP 서버 생성

HTTP 서버를 생성할 때는 각 HTTP 요청을 어떻게 처리해야 하는지 정의한 콜백 역할을 하는 익명함수가 createServer에 이자로 전달됩니다. 콜백 함수는 request 와 response 두개의 인자를 받습니다. 콜백이 실행될 때 HTTP 서버는 두개의 인자로 사용될 객체를 생성해 전달하게 되는데 이를 이용해 세부적인 요청사항에 대한 처리와 응답을 보내게 됩니다. server.js 파일에 아래의 코드를 추가해 줍니다.

 server.js

1
2
3
4
5
6
7
8
9
10
var server = http.createServer(function(request, response) {
  var filePath = false;
  if(request.url == '/') {
    filePath = 'public/index.html';
  } else {
    filePath = 'public' + request.url;
  }
  var absPath = './' + filePath;
  serveStatic(response, cache, absPath);
});
cs

 

▷HTTP 서버 시작

지금까지 HTTP 서버를 생성하는 코드를 작성했지만, 아직 서버를 구동하는데 필요한 로직을 추가하지 않았습니다. TCP/IP 3000번 포트로 요청받는 서버를 구동할 수 있게 로직을 추가해보겠습니다. 3000번 포트는 임의로 선택한 숫자입니다. 1024보다 큰 숫자중에서 사용되지 않는 번호를 선택해 포트로 사용할 수 있습니다.  server.js 파일에 다음의 코드를 추가해보겠습니다.

 server.js

1
2
3
server.listen(3000, function() {
  console.log("Server listening on port 3000.");
});
cs

 

이제 어플리케이션이 어떻게 동작하는지 보기 위해 다음 명령을 명령행 프롬프트(CMD)에 입력해 서버를 구동해보겠습니다.

먼저 CMD창을 열어줍니다. (윈도우키 + R 을 눌러 실행창에 cmd라고 입력 or 윈도우키를 누르고 명령 프롬프트 찾기) 

그리고 프로젝트 폴더로 이동한뒤에 node server.js 라고 입력해줍니다.

 

그럼 서버가 시작되었을텐데요 이 상태에서 웹 브라우저에서 'http://127.0.0.1:3000 ' or 'http://localhost:3000' 에 방문하면 404 오류 함수가 실행돼 "Error 404 : resource not found" 라는 메시지가 출력될 것입니다. 정적 파일을 처리하는 로직을 추가했지만, 아직 정적 파일을 추가하지 않았기 때문입니다. 실행 중인 서버는 Ctrl-C 를 눌러 중단할 수 있습니다.

 

 

▷HTML, CSS 파일 추가

이제 가장 먼저 추가할 정적 파일은 기본 HTML파일 입니다. public 디렉토리에 index.html 파일을 생성하고 코드를 작성하겠습니다.

HTML은 CSS 파일을 가져오고 어플리케이션 내용을 표시할 HTML div 요소를 만들며, 여러 개의 클라이언트 측 자바스크립트 파일을 불러옵니다.

불러온 자바스크립트 파일은 클라이언트 측의 Socket.IO 기능, 쉬운 DOM 조작을 위한 jQuery, 어플리케이션에 적합한 채팅 기능을 제공하기 위한 파일입니다.

index.html

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
<!DOCTYPE html>
<html>
  <head>
    <meta charset="utf-8">
    <title>Chat</title>
    <link rel='stylesheet' href="stylesheets/style.css"></link>
  </head>
  <body>
    <div id='content'>
      <div id='room'></div>
      <div id="room-list"></div>
      <div id="messages"></div>
 
      <form action="" id="send-form">
        <input type="text" id="send-message"/>
        <input type="submit" id="send-button" value="Send"/>
        <div id="help">
          Chat commands:
          <ul>
            <li>Change nickname:<code>/nick [username]</code></li>
            <li>Join/create room:<code>join [room name]</code></li>
          </ul>
        </div>
      </form>
    </div>
    <script src="/socket.io/socket.io.js" type="text/javascript"></script>
    <script src="http://code.jquery.com/jquery-1.8.0.min.js" type="text/javascript"></script>
    <script src="/javascripts/caht.js" type="text/javascript'/"></script>
    <script src="javascripts/chat_ui.js" type="text/javascript"></script>
  </body>
</html>
cs

 

10행 : 현재 채팅방 이름을 표시할 div

11행 : 참여할 수 있는 채팅방 목록을 표시할 div

12행 : 채팅 메시지를 표시할 div

15행 : 사용자가 명령어와 메시지를 입력하라 Form 구성요소

 

 

다음으로 추가할 파일은 어플리케이션의 CSS 스타일을 정의한 파일입니다. public/stylesheets 디렉토리에 style.css 파일을 만들어줍니다.

style.css

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
body {
  padding: 50px;
  font: 14px "Lucida Grande", Helvetica, Arial, sans-serif;
}
{
  color: #00B7FF;
}
#content {
  width: 800px;
  margin-left: auto;
  margin-right: auto;
}
#room {
  background-color: #ddd;
  margin-bottom: 1em;
}
#messages {
  width: 690px;
  height: 300px;
  overflow: auto;
  background-color: #eee;
  margin-bottom: 1em;
  margin-right: 10px;
}
 
cs

 

10행 : 어플리케이션은 800픽셀 너비에 가로로 중앙 정렬

15행 : 현재 참여하고 있는 채팅방 이름을 표시하는 영역의 CSS

19행 : 메시지 표시 영역은 가로 690픽셀, 세로 300픽셀 크기로 지정

 

HTML과 CSS작성이 완료되면 어플리케이션을 실행해 웹 브라우저에서 확인해봅니다. 

 

 

어플리케이션의 기능은 아직 구현되지 않았지만, 정적 파일이 서비스되고 기본적인 외형을 갖췄습니다. 이제 서버측에서 채팅 메시지를 전달하는 부분을 만들어 보겠습니다.

 

▷Socket.IO를 이용한 채팅 관련 메시지 처리방법

1부에서 말했던 필수기능 3가지 중 첫번재 항목인 정적 파일 서비스를 완료했습니다. 이제 두번째 항목인 브라우저와 서버 간 통신을 시작할 차례입니다.

최신 브라우저는 웹소켓을 사용해 브라우저와 서버 사이의 통신을 처리합니다.

Socket.IO는 노드와 클라이언트 측 자바스크립트 모두에서 사용하는 웹소켓과 그 외 다른 전송 방식을 위한 추상화된 계층을 제공합니다. Socket.IO는 웹소켓이 브라우저에 구현돼 있지 않더라도 같은 API를 사용할 수 있도록 적절한 전송 방식으로 대체합니다.

▶ Socket.IO가 제공하는 가상 채널을 이용하면 접속한 모든 사용자에게 메시지를 뿌리지 않고 특정 채널을 구독하는 사용자에게만 메시지를 전송할 수 있습니다. 이 기능을 이용하면 채팅 어플리케이션의 채팅방 기능을 매우 간단하게 구현할 수 있습니다.

그리고 Socket.IO는 이벤트 발생자의 유용함을 보여주는 좋은 예입니다. 이벤트 발생자는 원래 편리하게 비동기 롲기을 관리하기 위한 디자인 패턴입니다.

 

 

▷Socket.IO 서버 구성

다음 두 줄을 server.js 에 추가해줍니다. 첫번째 줄은 서버 측에서 Socket.IO 기반으로 대화 기능에 대한 로직을 제공하는 커스텀 모듈을 가져옵니다.

다음 줄은 Socket.IO 서버 기능을 시작합니다. 이미 정의한 HTTP 서버를 이용하므로 같은 TCP/IP 포트를 공유할 수 있습니다.

server.js

1
2
var chatServer = require('./lib/chat_server');
chatServer.listen(server);
cs

이제 lib디렉토리에 chat_server.js 파일을 생성하고 다음 변수 선언문을 가장 앞에 추가합니다. 이 선언문은 Socket.IO의 사용과 상태를 정의하는 여러 변수의 초기화와 관련된 내용입니다.

chat_server.js

1
2
3
4
5
6
7
var socketio = rerquire('socket.io');
var io;
var guestNumber = 1;
var nickNames = {};
var namesUsed = [];
var currentRoom = {};
 
cs

 

▷연결 맺기 로직

이제 로직을 추가해 서버 함수인 listen을 정의합니다. 이 함수는 server.js에서 호출하며 Socket.IO 서버를 시작하고 Socket.IO가 콘솔에 출력하는 로깅을 제한하며 유입되는 연결을 처리하는 방법을 담고있습니다. 연결 처리 로직은 수많은 헬퍼 함수를 호출하며 chat_server.js에 바로 추가할 수 있습니다.

chat_server.js

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
exports.listen = function(server) {
  io = socketio.listen(server);
  io.set('log level', 1);
 
  io.sockets.on('connection', function(socket){
    guestNumber = assignGuestName(socket, guestNumber, nickNames, namesUsed);
    joinRoom(socket, 'Lobby');
 
    handleMessageBroadcasting(socket, nickNames);
    handleNameChangeAttempts(socket, nickNames, namesUsed);
    handleRoomJoining(socket);
 
    socket.on('rooms', function() {
      socket.emit('rooms', io.sockets.manager.rooms);
    });
    handleClientDisconnection(socket, nickNames, namesUsed);
  });
};
cs

 

2행 : 기존의 HTTP 서버에 피기백방식으로 SocketIO서버를 시작

5행 : 각 연결을 어떻게 처리해야 할지 정의

6행 : 사용자가 접속하면 손님 닉네임을 부여

9~11행 : 사용자의 메시지, 닉네임 변경, 채팅방 생성이나 변경에 관한 처리를 수행

13행 : 요청 시 이미 생성된 채팅방 목록을 사용자에게 제공

16행 : 사용자가 접속을 끊었을 때 관련 데이터 정리를 위한 로직을 정의

 

연결 처리에 관한 내용을 완료했다면 이제 어플리케이션의 요구 사항을 처리할 수 있는 각 헬퍼 함수를 추가해야 합니다.


출처 : Node.js 인 액션 

(3부에서 계속)

 

 

 


'Language > Node' 카테고리의 다른 글

2.다중 채팅방 만들기  (0) 2017.08.29
1.Node(노드)란? (2부)  (0) 2017.08.29
1.Node(노드)란?  (0) 2017.08.28

안녕하세요 백자까입니다. 이번에는 javascript의 조건문에 대해서 알아보겠습니다.


조건문은 특정한 조건을 만족하는지 여부를 계산하여 조건을 만족한다면 프로그램 구문을 수행되도록 설정할 수 있습니다. 또한 여러 조건을 설정한 후 그 중 만족하는 조건을 찾을 수 있으며 모든 조건을 만족하지 않을 때 구문이 수행되도록 설정할 수 있습니다.



if문

1
2
3
4
5
6
var a = 10;
var b = 20;
 
if(a < b) {
    documnet.write("a가 b보다 작습니다.");
}
cs


if()를 호출하고 a가 b보다 작다면 이라는 조건을 만족한다면 {}안에 구문이 호출됩니다. a는 b보다 작기 때문에 그 아래 조건을 만족하여 document에 "a가 b보다 작습니다."라고 출력됩니다.



if, else문

1
2
3
4
5
6
7
8
var a = 10;
var b = 20;
 
if(a > b) {
    document.write("a가 b보다 큽니다.");
} else {
    document.write("a가 b보다 작습니다.");
}
cs


if()를 호출하고 a가 b보다 작다는 조건을 만족한다면 {} 안에 구문이 호출되고 그렇지 않으면 else의 {}가 호출됩니다. a는 b보다 작기 때문에 if의 조건을 만족하지 않아 else구문이 호출되어 document에 "a가 b보다 작습니다."라는 메시지가 출력됩니다.



if, else if, else문

1
2
3
4
5
6
7
8
9
10
11
var a = 10;
var b = 20;
var c = 30;
 
if(a > b) {
    document.write("a가 b보다 큽니다.");
} else if( b > c) {
    document.write("b가 c보다 큽니다.");
} else {
    document.write("모든 조건을 만족하지 않습니다.");
}

cs


5, 7라인의 조건은 만족하지 않기 때문에 조건문안의 구문이 실행되지 않습니다. 9, 11번은 조건을 만족하지만 9번의 조건문 안의 구문만 호출됩니다. 그 이유는 조건은 위부터 순차적으로 조건을 비교하며 만족하는 조건이 있으며 더 이상 비교하지 않기 때문에 위의 예를 실행 하면 10번 라인의 구문만 실행됩니다.



조금 특별한 조건문 ?


조건문을 조금 더 간결하게 사용할 수 있습니다. else if없이 if와 else만 사용한다면 조금 더 간결하게 작성할 수 있습니다.

1
(a > b) ? document.write("a는 b보다 큽니다.") : document.write("a는 b보다 작습니다.");
cs
위의 예는 if와 else문을 좀 더 간결하게 작성합니다. '?' 뒤가 조건을 만족할 때 이고, ':' 뒤가 조건을 만족하지 않을 때입니다.



참고서적 : JavaScript+jQuery입문+실전북


'Language > Javascript' 카테고리의 다른 글

6.javascript 반복문  (0) 2017.09.22
5.javascript객체  (0) 2017.09.22
2.Javascript 연산자  (0) 2017.09.19
1.Javascript변수  (0) 2017.08.15
Window 객체  (0) 2017.07.20



이번에는 연산자에 대해서 알아보겠습니다.


연산자는 값을 계산하거나 증가 또는 감소 그리고 문자열을 이어 붙이는 등 다양한 연산을 처리합니다.

다음은 연산자들을 정리한 표 입니다.


종류 

설명 

예시 

+,-,*,/ 

숫자 연산 

사칙연산을 수행합니다.

 +

문자열 연산 

문자열을 이어줍니다. 

%

숫자 연산 

나머지 값을 구합니다. 

++ 

숫자 연산 

1씩 증가합니다.

--

숫자 연산 

1씩 감소합니다. 

 +=,-=,*=,/=,%=

숫자 연산 

연사을 수행하고 값을 대입합니다.


그럼 연산자를 사용한 예를 들어 보겠습니다.

1.사칙 연산

1
2
3
4
5
6
var a = 10;
var b = 20;
var c = 30;
var d = 40;
var e = 50;
var result = a + b - c*d/e;
cs

결과 값 : 10 + 20 - 30*40/50 = 6



2.문자열 연산

1
2
3
var a = "baekjakka";
var b = "tistory";
var result = a + b;
cs

결과 값 : baekjakkatistory



3. 문자열 + 숫자 연산

1
2
3
4
var a = "baekjakka";
var b = 1;
var c = "tistory";
var result = a + b + c;
cs

결과 값 : baekjakka1tistory 

문자열과 숫자를 +연산하면 문자열끼리 연산하는 겻과 같이 연산합니다.


비교 연산자

조건문의 조건을 만들기 위해서는 비교연산자를 사용해야 합니다.


연산자

사용 예 

설명 

 ==

 a == b 

 a와 b가 같다면 

 != 

 a != b 

 a와 b가 다르면 

 && 

 a == b && a == c 

 a와 b가 같고 a 와 c가 같다면, 두 조건이 모두 참이어야 합니다. 

 ||

 a == b || a == c 

 a와 b가 같거나 a 와 c가 같다면, 두 조건 중 하나라도 만족해야 합니다. 

 >

 a > b 

 a 가 b보다 크다면 

 < 

 a < b 

 a가 b보다 작으면 

 >= 

 a >= b  

 a가 b보다 크거나 같으면 

 <=  

 a <= b 

 a가 b보다 작거나 같으면 



** 논리곱과 논리합 연산 부가 설명 **

논리곱(&&) 와 논리합(||)


&& 논리곱은 좌측 표현식의 평가가 false일 경우 우측 표현식은 실행되지 않는다.

|| 논리합은 좌측 표현식의 평가가 true일 경우 우측 표현식은 실행되지 않는다.


실습 예제로 살펴 보겠습니다.


1
2
3
4
5
6
7
8
9
10
11
12
13
14
&& 와 ||을 이용한 조건문
 
var arr;
 
//arr이 undefined일 경우 비어있는 배열 객체를 대입합니다.
arr=arr || [];
 
arr[0] = "홍길동";
arr[1] = "홍길서";
arr[2] = "홍길남";
arr[3] = "홍길북";
 
//arr이 배열 객체가 존재할 경우 arr 배열의 길이를 출력합니다.
arr && document.writeln("arr.length: " + arr.length + "<br/>");
cs







참고서적 : JavaScript+jQuery입문+실전북

코드작성 : https://colorscripter.com/

'Language > Javascript' 카테고리의 다른 글

5.javascript객체  (0) 2017.09.22
3.javascript 조건문  (0) 2017.09.19
1.Javascript변수  (0) 2017.08.15
Window 객체  (0) 2017.07.20
오브젝트모델(Object Model)  (0) 2017.07.20

C# 맛보기입니다.

 

먼저 C#의 특징에 대해서 알아보겠습니다.

형식 안정적객체 지향 언어입니다.

○ 기존 프로그래밍언어의 생산성을 개선하여 성능이 굉장히 높습니다.

○ 현재 윈도, 맥, 리눅스, 안드로이드, 아이폰 등의 다양한 운영체제나 플랫폼에서 동작합니다.

○ 윈도에서 동작하는 닷넷 플랫폼과 대부분의 운영체제에서 동작하는 모노 플랫폼에서 작동하는 프로그램을 만들 수 있습니다.

 

라이브러리 vs 프레임 워크

라이브러리

코드를 쉽게 사용할 수 있게 미리 만들어준 코드

프로그램 소프트웨어를 만들 때 사용하는 클래스 또는 서부루틴의 집합

 

프레임 워크

제어 역전이 있는 대규모의 라이브러리

  ※제어 역전 : 원래 개발자가 제어하던 코드를 프레임워크가 제어하는 것

C#으로 할 수 있는 일 GUI개발, 웹 개발(ASP.NET 프레임워크, ASP.NET MVC), 게임 개발, IoT개발 등 여러 작업을 할 수 있습니다. 그런데 과연 C#이란 프로그래밍의 문법만을 배워서 개발을 할 수 있을까요? 아닙니다. 개발 도구도 필요하고 실행환경(Platform)도 필요합니다. 최소한 이 3가지가 있어야 개발을 할 수 있습니다. 그럼 개발도구에는 어떤 기능이 있을까요? 편집기능, 디버거, 컴파일/링크, 배포 등의 기능이 있습니다. 저는 개발도구로 Visual Studio2017 을 사용하며 실습을 진행하도록 하겠습니다.

그럼, Visual Studio를 사용할 때 솔루션과 프로젝트가 만들어지는데요. 솔루션과 프로젝트의 차이가 무엇이 있을까요? 프로젝트는 하나의 실행파일(exe)를 만들어내기 위해서 필요한 여러 개의 소스파일과 헤더 파일등을 하나로 묶어 놓는 것을 말합니다. 솔루션은

왜 솔루션이 있을까요? 작업을 할 때 파일이 이곳 저곳 여러군데에 나눠져 있다면 작업을 하는데 있어서 많은 불편함이 생깁니다. 그래서 관련있는 작업을 하는 프로젝트들을 모아서 하나의 솔루션에 담아두면 작업을 하는데 불편함을 줄여줄 수 있기 때문입니다. 그럼 가장 먼저 Hello World를 출력하는 방법에 대해서 알아보도록 하겠습니다.

 

Hello World 출력하기

program.cs

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace Hello
{
    class Program
    {
        static void Main(string[] args)
        {
            //한줄 주석입니다.
            Console.WriteLine("Hello World");

            /* 여

               러

               줄

               주

               석

            */

        }
    }
}

cs

 

콘솔창에 Hello World를 출력해보는 간단한 에제입니다. 콘솔창에 출력을 할 때에는 Console.Write()또는 Console.WriteLine()을 이용해서 출력할 수 있는데요 Console.WriteLine의 경우에는 출력이 끝난후 줄바꿈이 자동으로 실행되는 차이가 있습니다.

 

주석

주석의 방법은 두가지가 있습니다.

1. 한줄 주석 : //

2. 여러줄 주석 : /* 주석할 내용 */
1번의 경우 //뒤에 쓰여진 내용들이 주석처리 되고, 2번의 경우 /* 이 선언되고  */을 만나기 전까지의 내용들 모두를 주석처리해줍니다.

 

연산할 때 주의사항

정수끼리의 연산을 할 때 생각해야 할 부분이 있습니다. 예를 들어 10/4를 계산하면 2.5 의 값이 나오는데요 C#에서 정수끼리의 연산은 정수만 나올 수 있습니다. 그래서 2.5가아닌 2라는 정수라는 결과값을 가지게 됩니다. 그럼 정리해 보겠습니다.

정수+정수 = 정수, 정수 - 정수 = 정수, 정수*정수 = 정수, 정수/정수 = 정수 모두 결과값이 정수가 나옵니다

 

 

'Language > C#' 카테고리의 다른 글

1.C# 변수선언  (0) 2017.08.07

+ Recent posts