CS50이란?  David Malan 교수의 하버드 대학교 컴퓨터과학 입문 강좌

말란 교수님의 말씀처럼 이 강의를 듣기 전과 비교하여 자신이 얼마나 성장했는지가 중요


컴퓨터 과학

  • 컴퓨터 과학은 문제 해결에 대한 학문
  • 문제 해결은 입력(input)을 전달받아 출력(output)을 만들어내는 과정. 그 중간에 있는 과정이 바로 컴퓨터 과학
  • 이러한 입력과 출력을 표현하기 위해선 우선 모두가 동의할 약속(표준)이 필요
  • 따라서 컴퓨터 과학의 가장 첫 번째 개념은 어떻게 표현하는지에 대한 표현 방법

 

1) 2진법

0과 1로만 표현하는 것을 2진법이라고 합니다.
컴퓨터는 신기하게도 오로지 0과 1만으로 숫자 뿐만 아니라 글자, 사진, 영상, 소리 등을 저장할 수 있습니다.


2진법에서는 두 개의 숫자만 있으므로 각 자리수가 2의 거듭제곱을 의미합니다.

 

그럼 이 방법으로 10진법의 3을 2진법으로 표현하면 어떻게 될까요? 바로 11입니다.

표를 보시면 2진법에서는 두 번째 자리는 2¹로 2입니다.

 

이와 같은 2진법은 전기를 통해 연산하는, 즉 전기를 켜고 끄는 방식으로 작동하는 컴퓨터에게 적합한 방법입니다.

컴퓨터에는 굉장히 많은 스위치(트렌지스터)가 있고 on/off 상태를 통해 0과 1을 표현합니다.

 

① 비트

  • 컴퓨터에서 2진법에서 하나의 자릿수를 표현하는 단위 = 비트(bit)
  • 정보를 저장하고 연산을 수행하기 위해 컴퓨터는 비트(bit)라는 측정 단위를 사용
  • 비트는 이진 숫자라는 뜻을 가진 “binary digit”의 줄임말
  • 0과 1, 두 가지 값만 가질 수 있는 측정 단위
  • 컴퓨터 내부에서 물리적 표현될 때는, 켜고 끌 수 있는 스위치라고 보면 됨 (켜기= 1 = True, 끄기= 0 = False)

 

② 비트열

  • 비트 한 개는 많은 양의 데이터를 나타내기에 턱없이 부족
  • 그렇기 때문에 여러 숫자 조합을 컴퓨터에 나타내기 위해 비트열을 사용
  • 바이트(byte)는 여덟 개의 비트가 모여 만들어진 것
  • 하나의 바이트에 여덟 개의 비트가 있고, 비트 하나는 0과 1로 표현될 수 있기 때문에 2^8 = 256 개의 서로 다른 바이트가 존재

 

 

2) 정보의 표현

① 문자의 표현

  • 컴퓨터가 스위치를 ON/OFF하면서 숫자를 표현
  • 문자는? 문자를 숫자로 표현 할 수 있도록 정해진 약속(표준)이 있음
  • 그 중 하나는 설명미국정보교환표준부호 ASCII(아스키코드/American Standard Code for Information Interchange)
  • 총 128개의 부호로 정의되어 있는데, 알파벳 A는 10진수 기준으로 65, 알파벳 B는 66 (아래 표 참조)

  • Unicode : 더 많은 비트를 사용하여 더 다양한 다른 문자들도 표현가능 하도록 지원. (ASCII로는 문자들을 표현하기에 충분하지 않았기 때문) → Unicode는 😂(기쁨의 눈물) 이런 이모티콘 까지 표현이 가능 ! 

 

② 그림, 영상, 음악의 표현

  • 문자와 같이 그림도 역시 숫자로 표현이 가능
  • 우리가 스크린을 통해 보는 그림을 자세히 살펴 보면 수많은 작은 점들이 빨간색, 초록색, 파란색을 띄고 있다.
  • 이런 작은 점을 픽셀이라고 하는데, 각각의 픽셀은 세 가지 색을 서로 다른 비율로 조합하여 특정한 색을 갖게 된다.
  • 예를 들어 빨간색 72, 초록색 72, 파란색 33을 섞게 되면 노란색이 되는 것과 같은 방식
  • 이 숫자들을 표현하는 방식 : RGB(Red, Green, Blue)
  • 영상 또한 수많은 그림을 빠르게 연속적으로 이어 붙여놓은 것이기 때문에 숫자로 표현이 가능
  • 음악도 마찬가지로 각 음표를 숫자로 표현

 

3) 알고리즘

  • 알고리즘은 입력(input)에서 받은 자료를 출력(output)형태로 만드는 처리 과정
  • 즉, 알고리즘이란 입력값을 출력값의 형태로 바꾸기 위해 어떤 명령들이 수행되어야 하는지에 대한 규칙들의 순서적 나열이다.
  • 같은 출력값이라도 알고리즘에 따라 출력을 하기까지의 시간이 다를 수 있음 
  • 알고리즘의 평가할 때는 정확성도 중요하지만, 효율성도 중요합니다.

알고리즘

 

※ 의사 코드

 

: 의사코드는 필요한 행동이나 조건을 잘 설정하여 컴퓨터가 수행해야 하는 일을 절차적으로 파악할 수 있게 도와준다.

 

 

※ 의사코드를 보면 C언어나 파이썬과 같은 언어에서도 볼 수 있는 여러가지 공통점이 있다.

  • 함수(functions) : 함수는 컴퓨터에게 이 경우에는 사람에게 무엇을 할지 알려주는 동사
  • 조건 : 여러 선택지 중 하나를 고르는 것 (if / else if/ else)
  • 불리언(Boolean) : 답이 Yes(예) 또는 No(아니오) / True(참) 또는 False(거짓) / 2진법에서 0또는 1로 나오는 질문
  • 루프(loop): 뭔가를 계속해서 반복하는 순환

출처

https://www.boostcourse.org/cs112/lecture/119001/?isDesc=false 

 

모두를 위한 컴퓨터 과학 (CS50 2019)

부스트코스 무료 강의

www.boostcourse.org

 

 

 

1. ls - 현재 위치의 파일 목록 조회

2. cd - 디렉터리 이동

3. touch - 0바이트 파일 생성, 파일의 날짜와 시간을 수정

4. mkdir - 디렉터리 생성

5. cp - 파일 복사

6. mv - 파일 이동

7. rm - 파일 삭제

8. cat - 파일의 내용을 화면에 출력, 리다이렉션 기호('>')를 사용하여 새로운 파일 생성

9. redirection - 화면의 출력 결과를 파일로 저장

10. alias - 자주 사용하는 명령어들을 별명으로 정의하여 쉽게 사용할 수 있도록 설정

 

 

 

 

 

 

 

 

 

 

※ pdf 출처 : 구글 검색을 통해 다운받았는데, 어디서 가져왔는지 모르겠네요 ㅠ 혹시 아시는 분들은 댓글 남겨주세요 ! 

Basic_command.pdf
0.09MB

 

 

※ 출처 : https://cocoon1787.tistory.com/717

 

[Linux] 리눅스 기본 명령어 정리

🚀 프로젝트를 진행하다 보면 서버를 띄우면서 혹은 다른 작업들을 하면서 리눅스 명령어를 써야 할 일이 많이 생기는 것 같습니다. 그럴 때마다 명령어를 검색해보면서 정보를 찾는데 매번 찾

cocoon1787.tistory.com

 

 

 

 

이 글이 나와 같이 완전 제로베이스에 가장 기초라는 웹 개발 종합반을 수강하면서 본인의 부족함과 시작도 하지 않은 공부에 대한 막막함을 느낄 누군가에게 위로가 되길 바라며 적어보려 한다.

 

일단 웹개발 종합반이라는 강의는 항해99 부트캠프에 참여하려는 사람이라면 누구나 들어야 하는 사전과제이다. 나는 강의를 3번 돌리고 나서야 그나마 이 회고록을 작성할 수 있었다. 누군가에게는 너무나 쉬운 강의겠지만, 나처럼 아예 코딩이라는 것이 처음인 사람에게는 이마저도 한 번에 이해가 쉽지 않은 강의였다.

 

강의를 3번 돌렸다고 해서 아직 완전히 모든 부분이 이해되는 것은 아니다. 11월 9일에 부트캠프에 참가할 자격을 결정하는 사전시험이 있는데, 그것을 통과하려면 꼭 이해하고 넘어가야 하는 강의이기 때문에 아마 앞으로 최소 1번 혹은 두 번은 더 완강을 해야 그나마 80프로는 이해가 될 것 같다.

 

이렇게 코딩에 대해 아무것도 모르고 다른 사람에 비해 너무나 낮은 실력에 막막한 마음을 갖고 있는 사람이 여기도 있다. 그래도 강의를 듣기 전의 나와 지금의 나를 생각해 보면 분명히 많은 발전이 있다고 생각한다. 그러니 어쩌다 이 글을 보게 될 나와 같은 분도 끝까지 용기를 잃지 마시고! 의지를 잃지 마시고! 천천히 성장하는 개발자가 되셨으면 좋겠다. 

 

모두 화잇팅 !!! 

 

 

[수업 목표]

  1. Flask 프레임워크를 활용해서 API를 만들 수 있다.
  2. '버킷리스트'를 완성한다.
  3. EC2에 내 프로젝트를 올리고, 자랑한다!

웹페이지 배포하기

그 단계를 위해 필요한 프로그램과 사이트를 먼저 정리해 보려 한다.

① Filezilla 설치하기

https://filezilla-project.org/download.php

② 가비아 가입 및 도메인 구매

https://www.gabia.com

 

웹을 넘어 클라우드로. 가비아

그룹웨어부터 멀티클라우드까지 하나의 클라우드 허브

www.gabia.com

③ AWS EC2 서버 사기

https://ap-northeast-2.console.aws.amazon.com/ec2/v2/home?region=ap-northeast-2 

 

https://ap-northeast-2.console.aws.amazon.com/ec2/v2/home?region=ap-northeast-2

 

ap-northeast-2.console.aws.amazon.com

1) 버킷리스트 

오늘 다시 한번 연습해본 [POST], [GET] 요청하기. 그중 추가할 부분만 정리해보려 한다.

※아마 이 부분은 강의를 듣지 않으신 분들은 무슨말인지 헷갈리실 수 있기 때문에 그냥 넘어가 주셔도 괜찮습니다 :)

 

① 서버를 만들때 버킷리스트마다 번호를 부여했는데, 그 번호가 [완료 버튼 POST] 서버를 만들 때는 문자열로 인식이 되기 때문에 num_receive 형식을 int(num_receive)로 바꿔주는 작업이 필요했다. 

@app.route("/bucket/done", methods=["POST"])
def bucket_done():
    num_receive = request.form["num_give"]
    db.bucket.update_one({'num': int(num_receive)}, {'$set': {'done': 1}})
    return jsonify({'msg': '버킷 완료!'})

② 그리고 위의 코드에서 보듯이 완료하지 않은 상태일때 0 값을 갖게 되는 'done'을 완료 버튼을 눌렀을 때 1로 업데이트하도록 만들었다.

 

 

2) 내 프로젝트를 서버에 올리기

  • 웹 서비스를 런칭하기 위해 클라이언트의 요청에 항상 응답해줄 수 있는 서버에 프로젝트를 실행시켜줘야 한다
  • 언제나 요청에 응답하려면, 1) 컴퓨터가 항상 켜져있고 프로그램이 실행되어 있어야 하고, 2) 모두가 접근할 수 있는 공개 주소인 공개 IP 주소(Public IP Address)로 나의 웹 서비스에 접근할 수 있도록 해야 함
  • AWS 라는 클라우드 서비스에서 편하게 서버를 관리하기 위해서 항상 켜 놓을 수 있는 컴퓨터인 EC2 사용권을 구입해 서버로 사용

 

AWS 서버 구매하기 (링크는 제일 상단 참고!)

  • 여러 개의 OS 중 오픈소스인 리눅스의 Ubuntu를 설치
  • Name을 설정해 주고, Ubuntu를 선택한 뒤 프리티어 중 최신 버전을 선택해 준다!

출처 : 스파르타코딩클럽 웹개발 종합반 강의

 

  • KEY 생성하기(Create new key pair)를 클릭 후, key를 발급 (서버 접속 시 매우 중요!!!)

  • 나머지 체크리스트들을 체크 후, Launch instance를 클릭

 

② 서버 세팅하기

  • 서버 환경 통일하기 (※ 실제 업무에서는 인프라 엔지니어 또는 개발 팀장님이 해두시는 경우가 많다.)
  • 아래와 같은 코드를 터미널 창에 입력해서 필요한 프로그램들을 미리 다운받고 서버를 세팅해 주어야 한다.
# python3 -> python
sudo update-alternatives --install /usr/bin/python python /usr/bin/python3 10

# pip3 -> pip
sudo apt-get update
sudo apt-get install -y python3-pip
sudo update-alternatives --install /usr/bin/pip pip /usr/bin/pip3 1

# port forwarding
sudo iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 80 -j REDIRECT --to-port 5002

 

③ 터미널창과 파이질라를 이용해 웹페이지 배포하기

 

이 부분이 가장 헷갈렸던 부분이다. 리눅스 언어를 이용하여 Terminal 창에 입력을 해서 진행시켜야 했는데, 이번이 세 번째 웹 배포다 보니까 뭔가 자꾸 오류가 생기고 할 때마다 헤매는 것 같다. 참고로 오늘 포스팅은 이미 모든 프로그램이 설치되어있고 배포가 되어있는 상태에서 하다 보니 생략된 부분이 많다. (예를 들면, 파이썬 설치 등..)

 

일단 내가 이해한 부분을 차래대로 정리해 보자면,

 

1. Mac 인 경우 Spotlight 검색을 켜고(오른쪽 상단 돋보기 모양 아이콘 클릭) Terminal을 검색 실행시켜준다.

2. Terminal 창이 뜨면, 다음과 같이 입력한다

sudo chmod 400 (여기엔 다운로드하였던 키페어 드래그해서 붙여 넣기) 그리고 엔터!

3. 다음과 같은 화면이 뜨면 맥북 개인 비밀번호를 입력하고 엔터!

4. ssh -i (다시 한번 키페어 드래그) ubuntu@(여기는 AWS 퍼블릭 주소 복붙) 엔터!

저기 퍼블릭 IPv4 주소 숫자부분을 복사해서 @뒤에 붙여주기

5. 중간 과정은 이미 내가 폴더를 만들어 놓고 배포한 상태라 스크린 샷이 없는데 mkdir spart을 입력해서 sparta 폴더를 생성해 준다. 참고로 mkdir 은 폴더를 생성하는 리눅스 언어인데 다음번에 리눅스 관련 언어 정리 포스트를 하면서 다시 정리하도록 하겠다.

 

6. 그런 다음 ls를 입력하면 아래와 같이 sparta 가 뜨는 것을 확인할 수 있다. ls는 현재 위치에서 디렉터리(폴더) 내용물을 보여주는 리눅스 명령어이다.

 

 

7. 이렇게 파일이 만들어진 것을 확인했으면 파이질라를 실행시킨다.

    왼쪽 상단의 스크린 세계 모양 아이콘을 클릭하면 다음과 같은 창이 뜬다.

 

8. My Sites에 myec2라는 파일을 만들어 준 뒤, 다음과 같이 설정을 맞춰 준다. 참고로 Host에는 각자 AWS에 갖고 있는 아까도 복붙 하면서 사용했던 퍼플릭 아이피 주소를 넣어주면 된다.

9. 그렇게 하면 다음과 같은 창이 뜨는데, 왼쪽이 내 컴퓨터 오른쪽이 방금 내가 산 컴퓨터가 된다.

방금 터미널 창을 통해 만들어 두었던 스파르타 폴더에(오른쪽) 내가 올리고자 하는 웹페이지 소스인 static, templates, app.py를 드래그해서 옮겨준다.

 

 

10. 그다음 다시 터미널 창으로 돌아와 아래와 같은 순서로 입력! 

    - cd sparta (sparta 폴더로 들어감)

    - ls (폴더 내용물을 보여줌)

    - python app.py (만들어 뒀던 서버를 실행시켬줌)

    - 그리고 마지막으로 스크린샷에는 없지만 nohup python app.py & 를 치고 엔터를 하면 배포가 완료된다.

 

※ 나의 페이지가 이미 배포가 되어있는 상태에서 정리하려다 보니 뭔가 과정이 깔끔하지 않은 점 양해 부탁드립니다! 

 

11. 이 과정을 마무리하고 브라우저에 [http://내 AWS아이피/]를 입력하면 내가 만들어 두었던 웹페이지가 화면에 뜨는 것을 확인할 수 있다.

 

 

3) 도메인 연결하기

① 도메인 구입/연결

  • 도메인을 구매한다는 것은 네임서버를 운영해주는 업체에 IP와 도메인 매칭 유지비를 내는 것.
  • 가비아라는 사이트를 이용해 도메인을 구입해 놓았다.

 

  • 가비아에서 내 아이피 주소에 원하는 도메인 이름을 설정해 준다.

 

 

4) 웹페이지 수정하고 다시 업로드하는 방법

※ 나는 이미 이전에 같은 도메인에 첫 과제로 만들었던 팬명록 페이지를 올려놓은 상태였기 때문에 다시 새로 만든 웹페이지를 업로드하는 과정이 가장 많이 헷갈렸다. 이 부분을 내가 이해한 방식대로 정리해 보자면!

 

 

1. 위에 정리해 둔 [2) 내 프로젝트 서버에 올리기 -②서버 세팅하기] 과정을 참고하여 1번부터 6번까지 실행시켜 sparta 폴더에 접속해 준다. 그다음 cd spart 엔터, 그 후 다시 python app.py 엔터 실행. 

 

2. 여기가 중요하다! 실행시켜 놓았던 웹페이지를 잠시 꺼주는 역할을 하는 코드를 입력한다. 

ps -ef | grep 'python app.py' | awk '{print $2}' | xargs kill 엔터

 

3. 이제 브라우저에 웹페이지 주소를 쳐보면 꺼져있는 것을 확인할 수 있을 것이다.

 

4. 파이질라를 실행시키고 오른쪽 컴퓨터 부분에 있는 원래 있던 파일을 삭제하고, 다시 왼쪽 내 컴퓨터 부분에서 새롭게 업로드할 파일의 static, templates, app.py를 오른쪽 컴퓨터로 드래그해준다.

 

5. 다시 터미널 창으로 돌아와 

nohup python app.py & 엔터 

 

6. 이제 다시 브라우저에서 도메인을 입력해보면 수정된 웹페이지가 배포되었음을 확인할 수 있다.

 

 

5) 과제

내가 만든 도메인 leejincha.shop 을 브라우저에서 열어주면 결과물을 확인할 수 있다.

웹버전
<meta>태그를 통해 만들어 준 og : image

 

 

 


아 쉽지 않다 쉽지 않아! 리눅스 명령어를 입력하는 과정이 너무나 생소하고 헷갈리고 또 commend not found 등과 같은 다양한 에러를 구글링을 통해 해결하며 따라가야 했던 수업이다. 이 부분은 차라리 첫 강의를 수강했을 때 따라만 했기 때문에 오류가 없었는데, 만들어 놓았던 도메인에 똑같은 작업을 반복하려다 보니까 자꾸만 에러가 났던 것 같다.

 

아마도 제 3자의 눈으로 오늘 나의 포스트를 보자면 스킵되어있는 부분이 많아서 (스크린샷을 일일이 하지 못함 ㅠ) 이해하기 어렵게 느껴지실 것 같다. 일단 중요한 부분은 원래 만들었던 웹페이지를 내리고 수정하는 과정이라고 생각하는데, 리눅스 명령어를 잘 입력해서 원하는 폴더에 접근을 해주고, 삭제 코드를 입력해서 페이지를 내려주고, 파이질라에 다시 새로운 파일을 업데이트해주고, 다시 nohup코드로 페이지를 다시 배포해주는 이 과정! (헥헥) 그것을 잘 기억해 주면 될 것 같다.

먼저 글쓰기에 앞서, 너무나 나에게 필요했던 부분의 강의를 제공해 주신 [스파르타코딩클럽] 이범규대표님한테 감사의 말씀을 전하며,

글에 사용된 모든 사진파일의 출처는 스파르타코딩클럽 강의자료에서 가져왔습니다 ! 무료강의니까 필요하신 분들은 수강 추천 !!

또 중간에 보충 개념이 필요한 부분은 [네이버 지식백과]에서 정보를 가져왔다는 점을 알려드립니다 :) 


1.컴퓨터와 인터넷

컴퓨터 : 기본적으로 기계를 모아둔 것

운영체제(OS) : 인간이 기계와 소통할 수 있게 만드는 기반 프로그램. 예) Android, ios, Window10, Linux

참고로 리눅스는 무료, 즉 오픈소스 이기 때문에 기업에서 많이 활용한다.

코딩 : 이 운영체제(OS)에 명령을 내리는 것, 프로그래밍과 같은 말.

프로그래밍 언어 : 코딩을 할 때 사용되는 언어. 예) 파이썬, 자바, 자바스크립트, C++ 등

참고로 언어는 좋고 나쁨이 있다기 보다 각자 갖고있는 특성이 다를 뿐

프로그램 : 코딩을 통해 만들어서 명령을 입력했을 때 매번 똑같이 움직이게 하는 것 그래서 코딩을 다른말로 프로그래밍이라고 함

인터넷 : 컴퓨터끼리 대화를 주고 받는 것

http : 컴퓨터끼리의 대화에 필요한 규칙 중 하나

https : 암구호 표를 서로 가져서 보안을 지키는 것. 월드 와이드 웹 통신 프로토콜인 HTTP의 보안이 강화된 버전

 

2. 웹서비스 동작 방식

서버: 컴퓨터들 가운데서 데이터를 저장하고 주는 곳. 컴퓨터 네트워크에서 다른 컴퓨터에 서비스를 제공하기 위한 컴퓨터 또는 소프트웨어를 가리키는 용어.

클라이언트: 서버에서 보내 주는 정보 서비스를 받는 측 또는 요구하는 측의 컴퓨터 또는 소프트웨어

HTML: (Hyper Text Markup Language) 웹 문서를 만들기 위하여 사용하는 기본적인 웹 언어의 한 종류이다. = 뼈대

CSS: (Cascading style sheets) 웹 문서의 전반적인 스타일을 미리 저장해 둔 스타일시트 = 꾸미기

Javascript: 자바스크립트는 크로스 플랫폼(cross platform), 객체지향 스크립트 언어로 웹페이지의 동작을 담당한다

Json: 웹과 컴퓨터 프로그램에서 용량이 적은 데이터를 교환하기 위해 데이터 객체를 속성 · 값의 쌍 형태(= ket : value)로 표현하는 형식. 자바스크립트(JavaScript) 토대로 개발되었다

IDE: (Integrated Development Environment : 통합 개발 환경) 프로그램 개발을 위한 작업들을 하나의 프로그램 안에서 처리할 수 있는 환경을 만들어 제공하는 소프트웨어. 소프트웨어 개발에 관련된 모든 작업, 즉 패키지 인클루딩, 문서 편집, 컴파일, 디버그, 원격 서버 액세스, 바이너리 배포 등을 하나의 프로그램 안에서 모두 처리하는 환경을 제공하는 툴. 비슷한 말로는 고속 개발 도구가 있다. 반대말은 날코딩

 

3. 서버-클라이언트

라이브러리 : 라이브러리는 함수들의 집합이라 할 수 있는데 미리 만든 함수를 모아 놓은 곳

API: 라이브러리에 접근하기 위한 규칙들을 정의한 것을 API라고 하는데 Application Program Interface 즉, 프로그래머가 라이브러리가 제공하는 여러 함수를 이용하여 프로그램을 작성할 때 해당 함수의 내부 구조는 알 필요없이 단순히 API에 정의된 입력 값을 주고 결과 값을 사용할 수 있게 해줍니다.

API 명세서: 헷갈리니까 문서로 써두는 것

Open API: 인터넷 이용자가 일방적으로 웹 검색 결과 및 사용자인터페이스(UI) 등을 제공받는 데 그치지 않고 직접 응용 프로그램과 서비스를 개발할 수 있도록 공개된 API를 말한다.

 

4. 개발 언어, 프레임 워크

프레임워크: 소프트웨어 어플리케이션이나 솔루션의 개발을 수월하게 하기 위해 소프트웨어의 구체적 기능들에 해당하는 부분의 설계와 구현을 재사용 가능하도록 협업화된 형태로 제공하는 소프트웨어 환경

일종의 코드 집합. 보편적으로 라이브러리와 비교되는데, 라이브러리는 특별한 규칙없이 사용할 수 있는 코드 집합이라면, 프레임워크는 규칙에 따라 작서되어야 한다는 점이 다르다.

프론트엔드: 프런트 엔드(Front-end)는 UI(User-Interface)를 가지고 동작하며 백엔드(Back-end)는 UI없이 프로세스 형태로만 존재

프론트엔드 응용프로그램은 사용자와 직접 인터페이스할 수 있으며, 요구된 데이터를 얻거나 요구된 서비스를 수행하기 위하여 원격지의 다른 컴퓨터에 위치한 백엔드 프로그램으로 요구를 전달한다. 클라이언트/서버 컴퓨팅 모델과 비교한다면, 프론트엔드는 클라이언트로, 백엔드는 서버로 이해할 수 있다.

백엔드: Back-End는 클라이언트와는 직접 대면하지는 않으나, Front-End프로그램과 연동하여 기술적인 기능을 하는 프로그램을 말한다. 

 

 

 

 

프론트엔드 개발자들이 사용하는 프로그램 1

 

프론트엔드 개발자들이 사용하는 프로그램 2
백엔드개발자들이 사용하는 프로그램

 

참고자료, 참고로 C언어는 현업에서 사용 거의 하지 않음

 

이것을 참고하여 배우고자 하는 기술을 익히면 되겠다.

5. 아키텍쳐/DB

클라우드: 데이터를 인터넷과 연결된 중앙컴퓨터에 저장해서 인터넷에 접속하기만 하면 언제 어디서든 데이터를 이용할 수 있는 것.

데이버베이스: 기존의 파일시스템에서는 중복된 정보를 효율적으로 처리하는 것이 관점 연구 분야였다. 이 중복을 피하여 정보를 일원화(一元化)하여 처리를 효율적으로 수행하기 위해서 서로 관련성을 가지며 중복이 없는 데이터의 집합을 유지하는 것을 데이터베이스라고 한다.


6. 협업(git)

GitHub: 개발자들이 서로 정보를 공유하는 사이트

GitHub is where over 83 million developers shape the future of software, together. Contribute to the open source community, manage your Git repositories, review code like a pro, track bugs and features, power your CI/CD and DevOps workflows, and secure code before you commit it.

commit: 분산 트랜잭션 처리(DTP)에서, 하나의 트랜잭션에 포함되는 조작이 모두 실행되고 그에 따른 데이터베이스의 갱신 내용이 작업 영역(기억 장치)에 기록되어 트랜잭션의 적용이 완료되었다고 판단되는 시점에서 그 종료를 요구하는 동작. 이 시점을 커밋 시점이라고 한다. 커밋이 실행되면 갱신 데이터가 실제로 데이터베이스(자기 디스크)에 기록되고, 관련된 잠금이 해제되어 갱신된 내용이 다른 트랜잭션으로부터 접근할 수 있다.

push: 인터넷에서 클라이언트 측 사용자의 검색 조작에 의하지 않고 서버의 작용에 의해서 서버상에 있는 정보를 클라이언트로 자동 배포(전송)하는 것.

pull: 인터넷에서 클라이언트 측 사용자의 조작에 의해서 서버로부터 정보를 검색하는 것.

브랜치 따기: 내 코드를 작성하는 것

머지하기: 내 코드를 팀원의 코드와 합치는 작업.

협업을 할 때 위의 과정이 서로 겹치지 않게 주의해야 한다.

 

+ Recent posts