자동 생성(@GeneratedValue)에서 DB를 ORACLE로 사용시 SEQUENCE로 안하고 AUTO로하면 방언에 따라 기본값이 자동 지정 되긴하는데 그럴경우 SEQUENCE 생성시 의미없는? 이름이 생성돼 DB 운영/관리 측면에서는 관리가 어려워 잘 사용하지 않을 것 같은데 어떤 경우에 사용하는지요? AUTO로하면 DB에 종속적이지 않은 장점이 있으나 일반적으로 운영하는 DB에 맞춰서 예를 들어 ORACLE일 경우 미리 스크립트로 MEMBER_SEQ를 생성하고 @SequenceGenerator로 맵핑해서 개발될것 같은데 맞을지요?
안녕하세요 Rookiss님! 양질의 강의를 제공해주셔서 정말 감사드립니다! 질문) GameRoom class에서는 lock을 사용하지 않아도 멀티스레드 환경에서 안전할까요? public void Flush() { foreach (ClientSession s in _sessions) s.Send(_pendingList); //Console.WriteLine($"Flushed {_pendingList.Count} items"); _pendingList.Clear(); } public void Broadcast(ArraySegment<byte> segment) { _pendingList.Add(segment); } 제 생각에 lock을 사용하지 않으면 _pendingList가 Clear되기 직전에 추가된 segment는 Send되지 못하고 삭제당하는 등 올바르지 못하게 동작하는 상황이 발생할 수 있을것 같았습니다. (Flush method는 main Thread, BroadCast method는 background Thread. 서로 다른 Thread에서 동작한다고 생각했습니다.) public void Flush() { lock(_lock) { foreach (ClientSession s in _sessions) s.Send(_pendingList); //Console.WriteLine($"Flushed {_pendingList.Count} items"); _pendingList.Clear(); } } public void Broadcast(ArraySegment<byte> segment) { lock(_lock) { _pendingList.Add(segment); } } 그래서 위처럼 lock을 걸어주는게 좋을것 같다고 생각했는데 걸지 않아도 괜찮은건가요? 걸어주는게 맞는건가요? 혹시 제가 놓쳤거나 틀린 부분있으면 알려주시면 감사하겠습니다!! 감사합니다!!
from pytube import YouTube yt = pytube.YouTube("https://www.youtube.com/watch?v=x6MeeKwt92E") #다운 받을 동영상 URL 지정 videos = yt.stream.all() for i in range(len(videos)) : print(i, ',' , videos[i]) down_dir = "/Users/sophia/myworkspace/youtube" videos[0].download(down_dir)
명강의 늘 감사합니다. 바로 본론으로 들어가겠습니다. 다음과 같이 관계를 관리하는 method를 컨비니언스 method라고 하셨습니다. public void addStudy (Study study) { this .getStudies().add(study) ; study.setOwner( this ) ; } public void removeStudy (Study study) { this .getStudies().remove(study) ; study.setOwner( null ) ; } 1. 관계를 설정하기 위해 만든 컨비니언스 method는 관계의 주인이 아닌 @OneToMany(mappedBy="") 선언된 Collections 필드를 가진 class에서 구현하는 관계설정 method라고 생각하면 되겠습니까? 2. 이렇게 선언되면 Account와 Study는 N:N 다:다 관계라고 볼 수 있을까요? 3. 그렇다면 모든 데이터를 가지고 올 경우, findAll 하는 경우 현재 상황에선 N+1 위험이 있는 상황인가요? 4. private Set<Study> studies = new HashSet<>(); private Set<Study> studies; 의 차이가 무엇인가요? 필드값을 미리 생성자로 생성하여 타입을 선언했다고 봐야하나요? 두서 없는 질문이지만 확실한 정보를 통한 정리가 필요하여 요청드립니다. 감사합니다.
자바 개발을 주업무로 하다가 어쩌다 웹 개발로 끌려와 막 배워 자란 웹 개발자 1인으로서 여쭤봅니다. 저는 개인적으로 html에서 form tag를 전혀 사용하지 않고 있는데요. 딱히 form tag의 필요성을 느껴보지 못했고, 코드를 읽는데도 조금 불편함이 있어서 사용하기가 꺼려집니다. 그런데 이번 강좌에서도 그렇고 form을 적극적으로 사용하시는 분들도 굉장히 많으신거 같더라구요. form tag를 사용하는게 form tag를 사용하지 않는 것보다 어떤 장점이 있나요? 단지 submit 하나 뿐인건가요?
vue cli 버전은 4.5.11 입니다. vue cretate vue-todo로 이상없이 프로젝트 생성됩니다. npm run serve 이후, localhost:8080 으로 접속도 됩니다. 그런데, index.html 파일이 보이지 않습니다. 그런데, vue init webpack-simple vue-todo cd vue-todo npm install 하면, 취약점 경고들이 잔뜩 뜨지만, 어쨌든 npm run dev 로 실행 후, localhost:8080 으로 접속됩니다. 위 2가지의 차이가 뭔지 잘 모르겠습니다. 첫번째가 정상 구성이라면, index.html 에 설정하는 viewport 이나 shortcut icon 은 어디에 설정해야 하는지요?
안녕하세요 강사님. 강의 잘 듣고있습니다! 다름이 아니라 jpashop 프로젝트의 home.html에서 img 태그로 이미지를 넣어보고 싶은데요..! 이미지 파일을 resources 디렉토리에 넣고, home.html 기준으로 상대 경로를 img 태그의 src에 넣어주면 되는거 아닌가요? 이미지 경로를 못찾는지 이미지가 뜨질 않네요ㅠㅠ 강의 수강 완료하고 개인 프로젝트로 진행해보고 싶은 것이 이미지를 띄우는게 포함되어 있어서 꼭 알려주시면 감사하겠습니다ㅠㅠ
안녕하세요 늘 강의 잘 듣고 있습니다. GetHeight함수 관련해서.. foreach 내부에 height = Math.Max(height, newHeight); 으로 큰 값을 height에 저장한다고 하셨잖아요, 그렇지만 결국 재귀함수를 계속해서 불러내는 과정에서 최초 int height = 0; 에 의해 값을 몇을 넣어놨던지간에 결국 마지막에 가서는 0으로 초기화가 될 테고 마지막 subtree, 즉 이 경우에는 "아트팀" 의 height 만 반영이 되는 것이 아닌가요? (근데 또 돌려보면 2가 나오는 것은 신기...) 재귀함수 내부에서 계속해서 height를 초기화해대고 있는데 어떻게 height 가 계속 값을 들고 있을수가 있는건지 이해가 안 됩니다. 도와주세요 ㅠㅠ!
[C++과 언리얼로 만드는 MMORPG 게임 개발 시리즈] Part1: C++ 프로그래밍 입문
이번 강의에서 loop [라벨]이라는 문법중에서 이 라벨로 되돌아 갈때 ecx가 0이 될때까지 계속 반복하신다고 하셧는데 혹, 이때 반드시 ecx가 0이 될때만 가능한것인지 즉, 루프 전용 변수가 ecx이여서 이것만 써야되는 부분인지(나눗셈 할때도 마찬가지로 ah,al만 몫과 나머지를 저장하는지)에대해 질문드립니다.
[C++과 언리얼로 만드는 MMORPG 게임 개발 시리즈] Part1: C++ 프로그래밍 입문
제가 유니티, c# 자료구조 수업 듣다가 벨만포드 알고리즘까지 넘어가서 c++코드를 보고있는데요 vector 기능이 이해가 잘 안가서 질문 드립니다 ㅠㅠ 저는 adj 벡터를 페어를 502개 담을 수 있는 일차원 벡터라고 이해했는데요 21번째 줄은 u번째 인덱스로 접근해서 거기 있는 vector에 페어 { v, w } 를 집어넣어라 라는 뜻이잖아요? 그러데 이게 작동하려면 adj[u] 가 벡터여야 하는데 그렇게 되면 adj는 vector< vector < pair<int, int> > > 이런 형식으로, 벡터를 품고있는 2차원 벡터가 되어야 하는것 아닌가요? 근데 이렇게 코드를 쓰면 오류가 발생하네요 제가 어디를 잘못 이해하고 있는건지 잘 모르겠습니다.