1. 프로젝트는 적극적인 의견제시와 다양한 시각이 필요.
2. 팀내 소통도 중요하지만 외부 다른 팀과의 소통도 중요하다.
3. python도 좋으나,c++로 백엔드를 구성하는 목표를 갖자!
4. c++
> class,상속, 캡슐화, 다형성,
> priavte ,public
- 접근 지정자.
> vector
- 데이터의 크기가 동적 제어가 가능
- 단, 데이터의 자료형은 모두 같아야 한다.
- 주의사항 : 백터의 데이터 수정시, 반복자 상실(for문의 i값이라던지..) 발생
1.웹 페이지 미니 프로젝트의 작업물
2. C++ 복습 과정
3. [목표] C++로 백엔드 구상하기!
>MongoDB 데이터베이스 연결
1. 백엔드, 다채로운 결과물을 도출하기위해 팀원들과 토의 진행
2. C++의 class,vector 공부(자세한 코드는 하단에 작성하겠다.)
3. c++ mongodb 데이터 베이스 연결을 위한 시도
> visual studio code의 확장프로그램 c++설치.
> python과 다르게 설치 패키지가 따로 존재하지않아
내가 직접 mongodb와 연결하기 위한 프로그램을 설치해야하는데
이부분이 쉽지가 않다.
시도 1.
공식 웹 사이트(https://www.mongodb.com/try/download/community)에서 MongoDB Community Server
시도 2.
공식 MongoDB 웹 사이트(https://mongodb.github.io/mongo-cxx-driver/)에서 적절한 MongoDB C++ 드라이버를 다운로드
시도 3.
선택한 디렉토리에 다운로드한 아카이브의 압축을 해제.
추출된 아카이브의 경로를 PATH 환경 변수에 추가
현재 막힌 부분이 3번에 해당하는 경우인데
명령 프롬프트를 통해 (cmd)를 사용하여 cd로 해당하는 파일로 이동하고
tar 명령어를 사용해도 좀처럼 아카이브를 추출하려는데 계속해서 에러가 발생해
도통 해결방법을 모르겠다.
1.미니프로젝트의 경우, 여러 토의를 통해 해결 방안을 제시되었는데 다음과 같다.
1. 팀 프로젝트에 좀더 적극적인 의견 수집과 다양한 시각에서 바라보자.
2. 좀더 다채롭고 좋은 결과물을 도출하기위해 팀 내에서 소통뿐만 아니라
다른 팀과의 소통을 하는 시간을 가져보자.
c++의 데이터 베이스의 연결부분은 아직 해겨하지 못했다..
오늘 새로 알아낸것은 역시 c++의 중점이다
역시 내 주력언이이고 직관적인게 마음에 들어서 늘상 아쉬웠는데
c++의 장점은 얕은 데이터? 를 이용하여 빠른 처리속도이기에
광활하고 많은 데이터를 처리하기에 적합하다.
때문에 이런 c++로 앞으로의 캠프 진행과정에서 백엔드를 구상할 수 있다면.
이것 자체로 내 무기가 될 수 있지 않을까 싶다.
class Car {
private:
int speed;
class란? 객체 지향 oop, 즉 코드의 ' 재사용성 '을 다루기 위함이며
나아가, pirvate과 public을 통하여 접근 제한까지 다룰 수 있어
아마 내 생각엔 게임은 어떤 접근하면 안될 중요한 값 ( 예를들어 아이템의 상점 판매가)
웹의 백엔드 과정에서는 중요한 개인 회원의 정보값이 들어가지 않을까 싶다.
public:
// 외부에서 접근하여 수정
void setSpeed(int s) {
speed = s;
}
public, private과 달리 외부에서 접근 가능한 요소로
사실 private은 외부에서 무조건 값을 수정할 수 없는것이 아니다.
특정한 상황에서는 값을 수정하고 싶을때가 있을텐데
public으로 선언한 함수로 private 변수에 접근하여 값을 수정하는것이 가능하다
// 외부에서 접근하여 값을 받아옴
int getSpeed() {
return speed;
}
return 값으로 private 요소를 반환하는 함수
//
void setSpped(int s){
if(s>=0) speed = s;
}
// 값을 수정할때 음수가 되지 않게 함
이건 꽤나 감명깊은 함수인데, 전혀 이런 응용법을 생각 못했기 때문이다.
어떤 값은 음수가 되면 안되는 값이 있을 수 있는데
가령 상점 아이템의 구매가가 될 수 있다. 특정한 상황에서 할인이 되서 결과값을
출력해야하는데 -1의 가격이라면 되려 돈을 줘야하니 다소 이상할 수 있다.
따라서 외부에서 접근할때 값이 수정되야하는데 만약 이때 값이 음수가 된다면
값을 수정하지 않는다는 함수이다.
private:
void setSpped(int newSpeed){
speed = newspeed;
}
// 외부에서 수정은 불가능하지만 내부에서만 수정이 가능하게함
외부에서 접근하여 수정도 가능하니 내부에서 수정도 분명하지만
이함수의 의의점은 바로 함수 자체가 private에 위치하기에
외부에서는 접근하여 수정할 수 없다는점을 한번 다시 생각해봐야할 점이다.
friend void printA(MyClass obj);
// class의 에서 private으로 다음과 같은 함수가 작성되었다 가정하자.
// 클래스 내부에는 a라는 정수형 변수에 10의 값이 담겨있다.
void printA(MyClass obj) {
cout << "The value of a is: " << obj.a << endl;
// 출력은 10
}
int main() {
MyClass obj(10);
// Call the friend function
printA(obj);
return 0;
}
friend
private의 요소를 외부에서 접근하기 위한 어떠한 연결 방식이다.
음, 그런데 이 함수의 사용의 이유에 있어서 신중하게 생각해야할 점이 있다.
이는 public으로 접근하는 private요소도 마찬가지다.
private은 정말 꼭, 필요할때만 사용해야하는것이 적합하다.
외부에서 접근하는것을 방지하기 위해 만든 시스템을
이곳에서도, 저곳에서도 접근하게 된다면 어떤 의미가 있을까
이 점에 관해서는 조금더 깊이있는 생각과 다양한 사용방법에 관한 공부가 필요하다.