안녕하세요! 좋은 강의와 답변 감사드립니다 추석잘보내시구요! HTTPS부분에 관하여 약간 헷갈리는 부분이 있어 질문드립니다 클라이언트에서 사이퍼슈트를 전달한 다는 게, 서버가 사이퍼슈트셋에 맞게 암호화가 가능한지를 먼저따지는 건가요?? 예를 들어 강의에서 설명한 'TLS_AES_128_GCM_SHA256'를 전달하는 건, 서버가 TLS프로토콜 & AES_128_GCM & SHA256방식으로 암호화를, 즉 HTTPS를 지원할 수 있는지를 먼저따져보는 건가요?? 해싱알고리즘은 최초에 발생하는 1-rtt이후, 실질적 통신단계에서 데이터를 전송할때 암호화하는 방식을 말하는 건가요?? 강의에서 해주신 말씀에 따르면, 실질적 통신이 발생하기전에 HTTPS를 위한 한 번의 통신(1-rtt)가 발생하는데요 이때 사이퍼 슈트도 전달하고 > 서버에서 해당 알고리즘을 서빙할 수 있을 경우에 인증서를 보내고(??), 키교환 알고리즘, 해싱알고리즘, 보안세션 생성까지가 완료되는 것인가요??? 약간 이해가 안가는 부분이 인증서를 보낸다는 건데.. 한 번의 RTT에서 인증서를 보내고 추가적인 작업(키교환 알고리즘.. )을 어떻게 한다는 건지 잘 모르겠습니다... 비슷한 맥락으로, 키교환 알고리즘 같은 경우도 최소한 한번의 교환이 있어야 PSK가 만들어지는 것 같은데 한번의 교환안에서 이모든 게 어떻게 가능한지 모르겠습니다ㅠㅠ 아니면 혹시 1-RTT에서 서버가 클라이언트에게 통신을 보낼때, 인증서와 PSK생성을 위한 혼합키도 보내고 해서 문제가 없다면 한번의 통신만으로 인증메커니즘, 키교환, 보안세션생성까지 단번에 완성시켜버리는 건가요?? 그렇다면 이 경우에도 데이터가 암호화되어야 하니, 여기에 해싱알고리즘이 적용되는건가요?? 디피헬만 알고리즘에 대해서 궁금합니다.. g,x,p를 알면 y값을 구하기 쉬운 반면, g,y,p를 알아도 x를 구하기 어렵다는 방식이라고 말씀해주셨는데요, 여기서 비밀키가 x에 해당하는 것 같은데 맞을까요? 결국 디피헬만 알고리즘이 적용된 결과, 제가 생각할때의 장점은 '서버와 클라이언트가 서로의 비밀키를 공유하지 않고' + '서로만 아는 특정 키(PSK)를 안전하게 생성'인 것 같은데 맞을까요?? 감사합니다!!!
강사님 안녕하세요? 수정까지는 잘 완료 되었습니다 그러나 boardUpdate.jsp에서 list로 가는 페이지 누르면 WARN : org.springframework.web.servlet.mvc.support .DefaultHandlerExceptionResolver - Failed to bind request element: org.springframework.web.method.annotation.MethodArgumentTypeMismatchException: Failed to convert value of type 'java.lang.String' to required type 'int'; nested exception is java.lang.NumberFormatException: For input string: " boardList.do " 해당 오류가 나옵니다 밑에 a태그로 해도 그렇고, 컨트롤러쪽에 리스트 보는거에 throws Exception 넣어도 해당 오류가 뜹니다. boardContent.jsp에 있는거 그대로 가지고 와도 이런데 혹시 가르침을 좀 얻을 수 있을까요?
우선 강의 잘 듣고 있습니다 :) 간단한 질문인데 파생 테이블과 CTE는 무조건 하나를 골라서 사용하는 것이 아닌건 강의를 통해서 알겠는데 이 두 기능의 유의미한 성능 차이는 없나요? 지금까지는 계속 파생 테이블 형태로 쿼리를 짜왔는데 성능 차이가 없거나 CTE가 우위에 있다면 불필요하게 파생 테이블로 중복 작성되어있던 쿼리를 CTE로 바꾸려고요
Rotation 강의에서 마지막 회전과 이동을 하는 코드에 대해서 마지막에 캐릭터 이동을 transform.position += Vector3.forward Time.deltaTime _speed; 사용해서 캐릭터의 월드 좌표를 이동하는데 이전에 transform.position += transform.TransformDirection(Vector3.forward Time.deltaTime _speed); 코드를 사용해서 캐릭터를 움직인 코드를 사용해보았더니 엉퉁한 방향으로 이동을 하더라고요.. TransformDirection를 제대로 이해가 안되서 그런지 많이 헷갈리고 정확히 차이가 무언인지 잘 모르겠습니다.ㅠ
그렇게 큰 문제는 아닙니다. 다만 걱정이 되어서 질문을 작성해봅니다. 첫번째 예제 강의에서 교수님께서 원하는 첫글자에서 원하는 마지막 글자까지 출력을 하고, 그 전체 출력도 원하는 횟수만큼 반복하여 출력하라고 말씀하셨습니다. 제가 생각하기에는, 프로그래머가 원하는 첫글자와 마지막 글자, 원하는 횟수라면 입력을 받아야 그것을 컴퓨터가 인지해서 출력하게되지 않을까 싶어서 맨 앞에 원하는 첫글자, 마지막 글자, 횟수를 입력받도록 하였습니다. #define CRT SECURE_NO_WARNINGS #include <stdio.h> int main() { char start; //원하는 시작 문자 int int_start; //시작 문자 정수 취급 변수 char end; //원하는 종료 문자 char int_end = 0; //종료 문자 정수 취급 변수 int repeat_char = 0; //반복할 횟수 입력받는 변수 int i; //전체 출력을 counting해주는 변수 scanf("%c %c %d", &start, &end, &repeat_char); int_start = start; int_end = end; //입력한 start에서 end까지 순서대로 출력, 전체 출력 횟수가 입력한 repeat_char만큼 반복해서 출력 //repeat_char 반복 출력 안에 start~end까지 순서대로 출력하는 문장이 있어야 할 것 같다 //문자로 입력받는 start와 end를 문자 그대로 취급하면 안될 것 같고, 내부에서 입력받은 문자를 '정수'로 취급하는 일련의 과정이 있어야 할 듯 for (i = 1; i <= repeat_char; i++) { for (start = int_start; start <= end; start++) { printf("%c ", start); } printf("\n"); } return 0; } 이렇게 작성을 했고, 맨 위 입력받는 부분을 제외하면 교수님께서 보여주신 예제대로 정상적으로 출력되었습니다. 가끔 백준 문제나 강의에 나온 예제 등을 풀 때 출제자의 의도대로 문제를 풀지 못하는 경우가 종종 있습니다. 이전 강의에서 교수님께서 '학생들이 주입식 교육을 받아서인지 종종 출제자의 의도부터 파악하려는 경향이 있다. 어떻게든 풀어보면서 의도와 원리 파악만 하면 충분하다'라고 하셨었는데, 지금 저처럼 아예 결과부터 다르게 나오도록 , 문제를 잘못 이해하고 판단하여 문제를 푸는 행위는 괜찮을까요? 이게 제가 이해를 잘 못하는 것도 있고, 다른쪽으로 확장해서 생각하기 힘든( 구현해내는 방법을 잘 생각하지 못하는 ).. 꽉 막힌 것도 있을 것이라고 생각합니다. 이것들은 문제를 많이 풀수록 나아지는 부분인지 궁금합니다.
안녕하세요 강의를 듣고 혼자서 프로젝트를 작성해보다가 궁금한 점이 생겨서 글을 남기게 되었습니다. controller 에서 @RequestBody XXXDto 로 json 데이터를 넘겨받고 validation 처리를 하여 제약을 주었습니다. 그리고 이 데이터를 service 계층의 메서드 호출할때 넘기려 하는데 XXXDto 에 데이터 종류가 많아서 메서드에 하나하나 나눠서 넣기보다는 Dto 형태로 전달하려 합니다. 하지만 전에 영한님께서 controller 계층에서 service 계층에 접근하는 형태는 되지만 반대의 경우는 의존성적 측면 등 이유로 안된다고 하셨던게 기억이 나서 service 계층(패키지)에 YYYDTO 를 새로 만들고 controller 에서 XXXDto 를 YYYDto 로 변환하고 service 계층 메서드에 인자로 넘겨주는 형태로 작성했습니다. 이렇게 작성하는게 맞을까요?
query index.d.ts 파일에는 export = jQuery; jQuery만 export하고 있는데 $ 변수를 외부에서 사용할 수 있는 이유가 무엇일까요? 예상으로는 declare const $: JQueryStatic; 이 부분 때문일 것 같은데 맞을까요? 또한 jQuery를 사용할 때 import를 굳이 하지 않아도 사용할 수 있는 이유가 무엇일까요?
[C++과 언리얼로 만드는 MMORPG 게임 개발 시리즈] Part1: C++ 프로그래밍 입문
안녕하세요, 추석 잘 보내고 계신가요? 다름이 아니라, 여쭤볼 것이 있어서, 제가 UE4 C++을 코딩하면서 여러 습관들이 있는데, 그 중 하나가 제가 거의 포인터가 아닌 참조를 선호하고, Data를 Write가 아닌 Read일때 const 참조로 도배를 해버리는데, 심지어 불가피하게 포인터를 사용할 경우 예를들어, Human* const human = 객체 주소; 이렇게 const 를 중간에 박아서, 어셈블리어를 까볼때 참조형이랑 같게 한다든지 const Human* const human = 객체 주소; 이런식으로 하면 const Human& human = 객체; 와 동의어라고 생각하여 const Human* const human; 이런식으로 사용합니다. 첫번째 질문 ] 함수의 매개변수 / 함수의 반환값을 받을 때 데이터가 순전히 Read용도로 사용할 경우 그냥 습관적으로 const 자료형& 을 사용합니다. 이런 습관이 맞는지에 대해서 여쭤봅니다. 함수 내부에 지역 변수를 리턴하는 값을 const 참조형으로 받는게 좋은지 일반적으로 Value로 받는게 좋은지에 대해서 여쭤봅니다. 물론 함수 지역 변수를 리턴하는 것을 그냥 참조로 받으면 해당 줄이 끝나면 리턴을 하는 함수의 CallStack 에서 해당 함수 프레임이 pop 되면서 사라지기 때문에 VC가 잡아주어 빨간줄이 나겠지만, 그냥 참조가 아닌 저는 const 참조로 받는게 습관입니다. vector<Human> GetHumanVector() { vector<Human> HumanVector = '동적할당 해서 배열 값 세팅 전부하고' return HumanVector; // 지역 변수 동적 배열을 리턴 } int main() { const vector<Human>& HumanVec = GetHumanVector(); // 1번째 경우 : 저의 스타일 const vector<Human> HumanVec = GetHumanVector(); // 2번째 경우 : 값으로 Receive 하는 것 } 1번째 경우와 2번째 경우, 저는 1번째 경우를 사용하는데 2번째 경우로 저렇게 받아버리면 값 복사가 되면서 GetHumanVector(); 이 const vector<Human> HumanVec 전달 해줄때 순간적으로 메모리 사용량이 2배가 되지 않을 까 생각이 되어 무조건 참조로 받는 것이 옳다라고 생각합니다. 만약에 저 배열의 크기가 500MB라고 가정을 해봤을때 2번째 경우처럼 값으로 받을 경우 컴파일러가 해당 줄을 실행을하고 값을 전달을 할때 1GB가 메모리가 사용될 것이다. 라고 어디서 선생님이었나 책이었나 본 것 같아서 메모리 효율적 사용이라는 이러한 당위성으로 인해 저는 습관적으로 저렇게 사용하는데 혹시 제 기억이 틀린건지 적어놓은 공책이 있었는데 없어지고 검색을 해봐도 딱히 비슷한 예제가 안올라와서 R.V.O 리턴 값 최적화 정도로 함수 리턴할떄 값으로 리턴해도 된다. 이 정도 내용 밖에 없네요 1) const vector<Human>& HumanVec = : const 참조로 받는 게 좋을지 2) const vector<Human> HumanVec = : const로 받는게 좋을지 선생님의 의견은 어떠신지요 두번째 질문 ] 혹시 1)을 사용할때 간헐적으로 버그가 날 수 있나요? 저는 없다고 보는데 일단 참조는 컴파일 타임에 생성과 동시에 초기화가 되고, 일단 const로 받아서 빌드 돌릴때는 문제가 없는데 런타임때 버그가 날 확률이 조금이라도 있을까요???
You are running a development build of Vue. Make sure to use the production build (*.prod.js) when deploying for production. 배포를 하기 위해서는 *prod.js 를 이용하라고 하는데 실제 운영되는 서비스는 cdn으로 Vue를 이용하는 것이 좋은 방법이 아닌걸까요? 지금처럼 Client 코드(html/css/js)는 최대한 간단하게 구성하고 싶은데 배포할 때 어떻게 하는 것이 좋을 까요? (패키지 툴을 이용해 클라이언트 쪽 코드들을 build 하는 작업이 없었으면 좋겠습니다)
안녕하세요 😃 신선한 그리드를 이용한 정렬 을 재미있게 잘 보았습니다. 몇가지 궁금한 점이 있어서 질문 드려요~ Q1. 보통 이러한 정렬은 자바스크립트를 이용하여 정렬하는 것이 일반적이라고 생각됩니다.(리액트나 기타 프레임워크를 보았을때..) 그럼에도, 이와 같이 CSS를 이용하여 정렬한다고 했을때, 어떠한 장점을 얻을 수 있을까요?? 🤔 Q2. 1분코딩님의 샘플 코드를 보면 큰 그리드 컨테이너 안에서 header, footer, 각각의 cards(section), 상단 버튼들이 위치하고 있습니다. 저 같은 경우는 큰 그리드 컨테이너를 잡고 그 안에 button-container, header, card-section, footer 이런 식으로 분류한후 card-section 안에서 다시 그리드를 잡아서 사용하게되었습니다. 이렇게 구조를 잡게되니, CSS만을 이용한 체크박스 이벤트를 활용할 수 없게 되었습니다.😅 제가 궁금한 점은, 그리드 레이아웃을 활용할 때는 (저처럼) 그리드 안에 섹션별로 컨테이너를 잡고 사용하지는 않고 바로 각각을 그리드 아이템으로서 위치를 잡아서 사용하게 되나요? 혹은 어느 방식을 많이 사용하게 되는지 궁금하네요. ( 질문드리고 나서 생각해보니, 캐바캐일거라는 생각이 들긴하네여. 😅)