• 학생인증이 되면 intellij Ultimate버전을 1년동안 무료로 사용이 가능
  • 매년 갱신해야함
  • 졸업 후더라도 학교메일계정이 살아있으면 인증가능
  • 학생인증에는 깃헙 및 다른 방법도 있다고함..

1. Jetbrains 접속 → Apply now 

https://www.jetbrains.com/community/education/#students

 

2. 정보입력 - 학교이메일 계정입력

입력을 완료하면 인증을 위한 메일을 발송했다고 메세지가 뜬다.

3. 학교 이메일 확인 → follow this link 클릭

 

4. 최종인증 → I accept 클릭

 

5. 회원가입 → Sign up →  메일주소 기입

 

6. 가입 이메일 확인   Confirm your account 클릭  정보기입

7. 로그인하면 학생 라이센스 확인 가능

유효 기간 및 라이센스번호가 확인된다.

 


IntelliJ IDEA 다운로드 

https://www.jetbrains.com/idea/download/#section=windows

명령어 Windows CMD Max OS Terminal
현재 디렉토리 cd pwd
현재 디렉토리 파일 리스트보기 dir ls
디렉토리 이동 cd cd
디렉토리 생성 mkdir mkdir
디렉토리 삭제 rmdir rmdir
화면 클리어 cls clear
null 파일 생성 type NUL> touch
파일삭제 del rm
파일이동 move mv
파일/디렉토리 이름바꾸기 ren mv
Explorer / Finder 에서 열기 start open

In Powershell, you can use the ni command, for example: ni test.js

-톰캣구동시 오류발생

[Tomcat 에러]Several ports (8005, 8080, 8009) required by Tomcat v9.0 Server at localhost are already in use. The server may already be running in another process, or a system process may be using the port. 

 

-기본포트 (8080,800,8005)가 이미 사용중이라 발생

-cmd창에서 pid 삭제하기

 


netstat -p tcp -ano :연결된 pid 확인

-로컬주소 8080, 8009, 8005찾기

-해당 포트 pid 번호확인 : 9608

-9608삭제 taskkill /f/pid 9608

-pid 목록 재확인 

 

DIRTY WORKTREE

merge된 worktree가 바르지않다면 오류가 발생.

 

수정된내용을 STAGED CHAGNES로 옮기기 -> COMMIT

프로젝트명 옆 화살표 - commit -push -non-fast forward발생

다시  team - pull (fetch+merge)

fetch(bring data) -merge(into workspace)

 

아예 브랜치를 새로 만들어야하는 경우가 발생할 수있다.


rejected non fast forward

기존업데이트에다가 머지하면 오류

충돌발생

commit-push(오류) non fast (또다른 최신버전존재)-> 화살표안내 (머지필요) pull

최신상태에서 commit-push

서버와 클라이언트 :

게임(클라이언트: 사용자의 입/출력) ↔ [서버]

문서를 요청(클라이언트) 하고 읽는 클라이언트  문서제공(서버) 웹서버

                                                                 게임/미세먼지/ 날씨/ 문서(프로그램:자바/C/..)

 

  • 서버의 변화 : 농구게임, 시합,미세먼지에대한 요청이올때 마다 문서를 만들게됨->프로그램으로바뀌었다. 요청타임에 사용자에게 돌려준다.
  • 서버의 변화 : 게임중인 결과 페이지 3:1 받아서 읽고있다 
  • 서버의 변화 :  3:3 ....5:4 똑같은 페이지인데, 새로고침할때마다 달라지고 다시요청하게된다. 
  • 똑같은문서인데, 문서를 새로만드는것에 대한 부담  → 점수만줘 ~ 데이터만 제공하는쪽으로 바뀜
  • 점수만교체하는 작업: 클라이언트에서 프로그램으로 문서를 살짝바꾸는 코드가 들어간다. 자바스크립트등장
  • 서버에서는 데이터만 준다. 문서만드는작업X

페이지를 새로고침하지않는 장점 ?

e.g 싸이월드 : 댓글클릭하면 bgm이 꺼진다. (페이지새로고침)

페이지를 고정시키면서 데이터를 바꿀 수있다는것의 장점이크다.

스크립트언어를 이용해서 화면갱신없이 데이터만 요청하고 데이터만 바꾸는것

 

서버가 문서를 다 제공해주는것 : 백엔드로만 이루어짐

서버가 문서가아니라 데이터를 제공하고 나머지 문서를 바꾸는것은 클라이언트 : 프론트와 백엔드로 나누어짐.

1. 컴퓨터의 의미와 그것을 이용하는 방법

 

컴퓨터란 프로그래밍이 가능하며 고성능의 계산 능력을 가진 기계를 말하며 다음과 같은 부품으로 구성되어 있다.

(1) - 연산처리와 실행을 담당하는 CPU

(2) - 프로그램 전체 코드를 담고 있으며 계산 결과 값을 보관할 수 있는 주기억장치

(3) - 컴퓨터 전원이 꺼져도 유지되어야 할 데이터를 영구적으로 저장하도록 도와주는 보조기억장치-하드디스크 

(5) - 사용자와 상호작용을 도와주는 모니터와 키보드

(4) - 위의 모든 장치들을 하나로 연결해주는 메인 보드

 

컴퓨터는 이렇게 최소  5가지의 구성으로 이루어져 있다.

 

이 중에서 가장 중요한 역할을 하는 부품은 CPU(Central Processing Unit - 중앙처리장치)이며 연산 기능과 실행 기능을 담당한다. 

 

1-1 계산 능력을 가진 기계

CPU는 컴퓨터에서 가장 중요한 부품이며 대부분 다음과 같은 구조로 이루어져 있다.

 반도체 집적도가 높아지면서 과거에는 하나의 온전한 CPU가 지금은 코어(Core)라는 블록으로 CPU 안에 포함되어 있다.  따라서 요즘 CPU는 과거로 보면 여러 CPU가 합쳐진 CPU라고 할 수 있다.

 

코어 하나에는 ALU(Arithmetic Logic Unit-산술논리연산장치)와 CU(Control Unit-실행 흐름장치)를 가지고 있으며, ALU가 바로 계산을 담당하는 유닛이며 CU는 실행을 담당한다.

 

1-2 CPU를 이용해 계산하기

 

우리가 컴퓨터를 이용해서 3+4와 같은 계산을 하려면 어떻게 해야할까?

우리는 컴퓨터의 실행을 담당하는 CU(Controll Unit)에게 3+4를 계산해 달라고 해야 한다.

 

 

그런데 CU는 기계이기 때문에 3+4가 무슨 의미인지를 모른다. 다만 ALU를 조작하기 위한 스위치 정보를 알려주면 그 정보를 이용해 전기선에 전원은 넣어주는 정도는 수행할 수 있다.

따라서 컴퓨터를 이용해 3+4를 계산하려면 ALU를 조작하는 스위치 상태를  우리가 작성해서 알려주어야만 한다.

 

1-2 컴퓨터에게는 왜 0과 1로 된 기호로 알려주어야 하는가?

 

CPU의 ALU는 기계장치이다. 기계 장치를 이용하는 방법은 장난감 자동차를 이용하는 방법과 별반 다르지 않다.

위의 장난감에는 모터에 연결된 스위치가 2개 있다. 이 두개 선을 조작하면 탱크를 직진, 좌회전,우회전 할 수 있다. 이 것이 이 장난감이 가지는 기능집합이고 장치에 내장된 명령어(=어셈블리어)이다. 

 

어셈블리어는 문자로 되어 있어서 인간이 장치의 기능을 이해하기에는 편하지만 실제 실행하려면 스위치를 조작하는 방법을 알아야만 한다.

 

직진은 1 1,  좌회전은 0 1 이다. 이런 스위치 조작 방식으로 탱크를 위의 그림처럼 움직이게 하려면 스위치를 어떤 순서로 조작해야 할까?

위의 그림처럼 1과 0로 나열한 순서에 따라서 스위치를 조작하면 탱크는 예정된 경로대로 잘 움직일 것이다.

 

만약에 장난감 탱크에 위의 절차를 기억시킬 수 있는 메모리가 존재하고 그것을 수행시켜주는 CU(Control Unit)이 존재한다면 프로그래밍이 가능한 장난감이 되는 것이다.

 

 

1-3 컴퓨터를 이용해 3+4 계산하기

 

이해를 돕기 위해서 앞에서는 장난감을 예시로 들었지만 컴퓨터 또한 스위치를 조작하는 방식으로 동작시키기 때문에 1과 0로 실행 코드를 작성해야만 한다.

 

그렇다면 컴퓨터의 ALU는 어떤식으로 조작을 하면 될까? (꼭 알아야 되는 내용은 아니므로 상식선에서 호기심을 살짝 해결할 정도로만 보도록하자)

 

 

위의 그림처럼 ALU도 스위치를 가지고 있다. 이 스위치를 이용해서 ALU를 다음과 같은 순서로 ALU를 조작해야 3+4를 연산할 수 있다.

 

3+4를 계산하기 위한 ALU와 Register의 조작순서

 

1. 값 3을 왼쪽 레지스터에 옮기고

2. 값 4를 오른쪽 레지스터에 옮긴 후에 

3. 두 레지스터에 있는 값 더한다.

 

위의 같이 ALU를 조작하기 위해 다음처럼 스위치를 순차적으로 조작한다.

 

1. 값 3을 왼쪽 레지스터에 옮긴다.



2. 값 4를 오른쪽 레지스터에 옮긴다.

 

3. 두 레지스터에 있는 값 더한다



이런 스위치 조작 상태를 순차적으로 적으면 다음과 같다.

 

010 011

110 100

001

 

이 절차가 바로 3+4를 계산하기 위한 수행절차이다. 이 절차를 메모리에 옮겨 놓으면 CU가 알아서 하나씩 수행을 해준다.

2. 컴퓨터 프로그램을 만드는 방법

 

앞서 봤던 것처럼 컴퓨터 프로그램은 스위치 조작상태를 직접 우리가 작성하는 것을 말한다. 하지만 요즘에 그런 방식으로 컴퓨터 프로그램을 만드는 일은 거의 없다. 왜냐하면 번역기가 있기 때문이다.

 

2-1 1세대 번역기와 2세대 언어

0과 1로 코드를 작성해야만 CPU가 실행할 수 있지만 그렇다고 인간이 0과 1을 직접 사용해서 코드를 작성할 필요는 없다.

 

 

위의 그림에서 010 이 MOV와 동일한 의미라면 우리는 010보다 이해하기 쉬운 MOV를 이용해서 코드를 작성하면 된다. 대신에 그것을 010으로 변경해주는 번역기를 만들어 사용하면 되는 것이 아닌가?

 

 

그래서 번역기를 활용하는 프로그래밍 방식이 등장하게 되었다. 이 번역기는 어셈블리어(기계 내장 명령어)기계어(기계 실행코드)로 변경해주는 번역기로 어셈블러(Assembler)라고 한다.

 

2-2 2세대 번역기와 3세대 언어

2세대 언어인 어셈블리어는 CPU에 종속된 언어이다. 그래서 이기종의 CPU 두개가 있을 경우에는 각 CPU 별로 코드를 따로 작성해주어야만 한다. 

 

 

다행스럽게도 이런 문제를 단번에 해결해주는 컴파일러라는 번역기가 등장하였다.

 

 

이 번역기는 자신이 정해놓은 연산자를 이용해서 코드를 작성하고 번역기를 돌리면 현재 CPU용에 맞는 어셈블리어 코드를 만들어준다.

 

이렇게 또 다른 번역기가 등장하면서 우리가 컴퓨터 프로그램을 만드는 방법은 크게 3가지 방법이 생겼다.

 

 

1세대-기계어를 이용하거나 2세대-어셈블리어를 이용하거나 3세대-컴파일언어를 이용해서 코드를 작성할 수 있다.



3. 컴파일 언어와 인터프리터 언어

 

최근에 프로그램을 만들 때는 3세대 언어를 이용하여 프로그램을 만든다. 3세대 언어의 특징은CPU가 제공하는 명령어를 이용하는 것이 아니라 컴파일러(번역기)가 제공하는 명령어를 이용한다.

 

3-1 컴파일 언어

 

컴파일러를 만드는 회사는 여러 곳이 있으며 컴파일러마다 제공하는 키워드나 구문 규칙이 조금씩 다르다. 다음은 컴파일 언어의 3가지 예를 보이고 있다.

 

 

자바 언어도 자바 컴파일러가 제공하는 키워드와 구문규칙을 이용해서 코드를 작성하는데 위의 코드에서 오른쪽의 코드가 자바 언어로 작성된 코드이다.

 

프로그래머와 개발자의 차이

 

-개발자: 아키덱처 + 방법론 + 검색능력 (거시적) + 사용자요구사항

            해결이 된 노하우를 엮어서 제품을 만든다.

 

-프로그래머: 이론 + 수학 + 알고리즘

                절차를 사전에 기록하는사람, Before + Write ,문제해결에 포커스

 

-개발자에게 코딩테스트가 필수는 아니지만 나만의 유니크한 제품을 만들려면 알고리즘공부가 필요할때가 있다.   

 

-내가 만들고자하는 제품이 있어야하고 관련된 이론, 알고리즘 공부

 

-코딩테스트는 모든 알고리즘의 공통분모를 묻는것

 

 

+ Recent posts