[질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예/아니오) 예 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 예 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) 아니오 [질문 내용] 안녕하세요. 트랜잭션을 시작한 후 CUD 쿼리를 사용하는 경우 자동으로 DB 락을 획득하게 되는걸까요? 혹시 원한다면 락을 걸지 않고 사용하는 설정도 있을 지 궁금합니다. 스프링을 사용할 때 @Lock 과 같은 애노테이션으로 락을 설정하는 것으로 기억하는데 설정을 하지 않아도 CUD 에서는 자동으로 락을 획득하게 되는걸까요?
Execution failed for task ':test'. > There were failing tests. See the report at: file:///C:/Users/kimta/Desktop/김영한%20강의자료/mvc2/message/build/reports/tests/test/index.html * Try: Run with --stacktrace option to get the stack trace. Run with --info or --debug option to get more log output. Run with --scan to get full insights.
안녕하세요 앨런(Allen)님! 수강 중 질문이 생겨 처음 인사드립니다. [섹션0.GCD - 1.GCD/Operation에 앞서] 강의까지 듣고 동기(Sync)는 동시성 프로그래밍(Concurreny Programming)이 아닌 건지 질문 드립니다. - 2개 이상의 프로세스가 동시에 작업 하는 것이 ‘동시성 프로그래밍(Concurreny Programming)’ 이고 IOS에서 이러한 동시성 프로그래밍을 사용하기 위해 작업을 대기행렬(Queue)에 보내며, 대기행렬(Queue)은 직렬(Serial)과 동시(Concurrency)이라는 특성 을 가지고 있다고 이해했습니다. 이 과정에서 동기(Sync) 는 작업을 다른 스레드(Thread)에서 하도록 시킨 후, 기다렸다가 다음 일을 진행한다고 설명해 주셨는데 그렇다면 동기(Sync)는 동시성 프로그래밍(Concurreny Programming)이 아닌 건지 확실하게 확인하고 넘어가면 좋을 것 같아 질문을 드리게 되었습니다. 추가로 대기행렬(Queue)의 특성 중 직렬(Serial) 은 작업을 분산시킨 *메인 스레드(Thread)가 있기 때문에 동시성 프로그래밍(Concurreny Programming)으로 볼 수 있다고 이해했는데 이해한 내용이 맞는지도 함께 답변 주시면 큰 도움이 될 것 같습니다. *강의 영상에서 말하는 Thread1을 작성한 것입니다. - 혹시 제가 잘못 이해한 부분이 있으면 함께 답변 남겨주시면 감사하겠습니다 :)
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요. 1. 강의 내용과 관련된 질문을 남겨주세요. 2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요. (자주 하는 질문 링크: https://bit.ly/3fX6ygx) 3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요. (질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG) 질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요. ========================================= [질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예/아니오) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) [질문 내용] 여기에 질문 내용을 남겨주세요. findByName에서 자꾸 오류가 뜹니다 ㅠㅠ 근데 그게 정확한 이유가 뭔지 모르겠어요 Member.java package hwang.hwangspring.domain; public class Member { private Long id; //시스템이 정해줌 private String name; //고객이 회원가입할 때 적는 이름 public Long getId() { return id; } public void setId(Long id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; } } MemoryMemberRepository.java package hwang.hwangspring.repository; import hwang.hwangspring.domain.Member; import java.util.*; public class MemoryMemberRepository implements MemberRepository{ private static Map<Long,Member> store = new HashMap<>(); private static long sequence= 0L; //0,1,2 키값을 생성 @Override public Member save(Member member) { member.setId(++sequence); store.put(member.getId(), member); return member; } @Override public Optional<Member> findById(Long id) { return Optional.ofNullable(store.get(id)); } @Override public Optional<Member> findByName(String name) { return store.values().stream() .filter(member -> member.getName().equals(name)) .findAny(); } @Override public List<Member> findAll() { //실무에서 List 많이 씀 return new ArrayList<>(store.values()); } } package hwang.hwangspring.repository; import hwang.hwangspring.domain.Member; import org.junit.jupiter.api.Assertions; import org.junit.jupiter.api.Test; import static org.assertj.core.api.Assertions.*; class MemoryMemberRepositoryTest { //굳이 public x, 따른데서 갖다쓸게 아니니까.. MemberRepository repository = new MemoryMemberRepository(); @Test public void save(){ Member member = new Member(); //멤버 생성 member.setName("Hwang"); repository.save(member); Member result = repository.findById(member.getId()).get(); //System.out.println("result = "+(result==member)); //Assertions.assertEquals(member,result); //expected, actual assertThat(result).isEqualTo(member); } @Test public void findByName(){ Member member1 = new Member(); member1.setName("seo"); repository.save(member1); Member member2 = new Member(); member1.setName("hyun"); repository.save(member2); Member result= repository.findByName("seo").get(); assertThat(result).isEqualTo(member1); } }
웹 제작 에디터(아임웹)에서 해당 기능을 사용하려고 합니다. 수업에서는 파일을 불러오는데.. 웹 에디터에서는 그런 기능을 지원하지 않아 전체를 복사해서 붙여 넣었는데 오류가 발생합니다. 외부 기능을 쓰는 web-animations 기능은 cdn으로 적용이 잘 되었습니다. 혹시 scroll-timeline.js 내용도 cdn으로 불러올 수 있는 방법이 있을까요?? 검색해도 찾을 수가 없어 문의드립니다. ^^a
안녕하세요! 배포 강좌를 보면서 궁금한점이 생겨서 질문을 남깁니다. 배포를 할때 nest build 명령어로 빌드를 하고 서버에 풀을 받아서 서버를 start를 하게 되는데요 그런데 npm run start:dev를 하면 개발시에 dist 파일이 생기는데 왜 한번 더 빌드를 해주는건가요?
안녕하세요. 커스텀 유저 모델을 만들어 잘 적용하였습니다. 템플릿 쪽에서는 로그인된 유저의 {{ user }} 형태로 접근하여 커스텀으로 만든 필드들의 값에 접근이 잘 됩니다. views에서 request.user 를 할 경우, 커스텀 된 필드들의 값을 사용할 수 없고 기본 유저 모델의 필드값만 나오고 있습니다. 어떤 장치를 해주어야 커스텀 된 필드 값들을 모두 사용할 수 있는지 찾아보았지만 정확히 알아내지 못하였습니다... 임시로 request.user를 통해 현재 로그인 된 사용자 정보를 가져오고 커스텀 유저 모델에서 동일한 유저를 찾아서 정보를 사용하는 형태로 해두었는데, 좋은 방향이 아닌듯하여 도움을 얻고자 질문을 남기게 되었습니다. def home(request): login_user = request.user user_site = User.objects.filter(email=login_user).get().site site_id = SiteInfo.objects.filter(site_name=user_site).get().pk boat_info = BoatInfo.objects.filter(site=site_id) return render(request, 'monitoring/home.html', { 'boat_info': boat_info, }) 번외로 템플릿에서 DB 데이터 갯수만큼만 DIV를 행렬로 만들어야 하는데, 짧은 지식으로 아래와 같이 구현해 보았습니다만, 좋은 방향으로 보이진 않아서 계속 고민 중에 있습니다. 한번 살펴봐 주시면 감사하겠습니다(꾸벅) {% for boat in boat_info %} {% if forloop.counter0 != 0 and forloop.counter0|divisibleby:3 %} </div> {% endif %} {% if forloop.counter0|divisibleby:3 %} <div class="row"> {% endif %} <div class="col">{{ boat }}}</div> {% if forloop.last %} </div> {% endif %} {% endfor %}
언리얼 입문을 블프 튜토리얼로 입문하고나서 이득우님의 강의를 보고 있는데요, 블프로 하면 시각적인 환경에서 간단한 클릭들로 액터를 만들고 메쉬를 지정할수 있는데, 액터를 c++로 만드는 이유가 궁금합니다. 단순히 c++에서의 원리도 알겸 하는건지, c++로 액터를 생성하는게 실무적인 측면에서 더 좋은건지 궁금합니다.