묻고 답해요
161만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part4: 게임 서버
ArraySegment<byte>
public ArraySegment<byte> ReadSegment { get { return null; } } public ArraySegment<byte> WriteSegment { get { return null; } } 심각도 코드 설명 프로젝트 파일 줄 비표시 오류(Suppression) 상태오류 CS0037 'ArraySegment<byte>'은(는) null을 허용하지 않는 값 형식이므로 null을 이 형식으로 변환할 수 없습니다. ServerCore 저는 null을 넣을때 오류가 뜨는데 무슨 이유일까요?
-
해결됨따라하며 배우는 리액트 A-Z[19버전 반영]
Lists.js에서 List컴포넌트로 프롭스 보내줄때,
<List key={data.id} id={data.id} title={data.title} completed={data.completed} todoData={todoData} setTodoData={setTodoData} provided={provided} snapshot={snapshot} />List에 프롭스 key를 넘겨주었는데왜 List.js에서는 key를 받지 않은 건가요?
-
미해결실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발
logging
로깅에서 이거 자체가 안 나오는데 무엇 때문일까요? 전 이렇게만 나옵니다ㅜㅜyml 복붙했는데도 안됩니다ㅜ
-
미해결언리얼 엔진4 입문 (C++ 기반)
빌드 속도 관련 문의
안녕하세요 루키님.여쭤보고 싶은 문제가 있어서 질문 남깁니다.현재 제 언리얼 엔진상에서의 컴파일 ,VS상 빌드 속도가 너무 오래걸리는 문제점이 있어서 문의드려요..기본 빌드 시간이 2분이상 걸리거나 길면 5분 넘게 걸리는 현상이 있어서 구글링 후에 Incredi build agent 다운도 받아서 빌드하고 있는데도 강의 도중 나오는 빌드 속도를 따라 갈 수가 없네요 ㅠㅠ 어떠한 방법으로 빌드 속도를 향상 시킬 수 있을까요..컴퓨터 성능 문제인걸까요?
-
미해결[리뉴얼] 처음하는 SQL과 데이터베이스(MySQL) 부트캠프 [입문부터 활용까지]
pymysql db data입력시 부터 진행이...
안녕하세요검색도 많이 해보고 지우고 깔고 3일간 별거 다해봤지만 해결이 안되 도움 요청드립니다 ㅠ선생님 flask강의 듣다 db에서 막혀서 이 강의 듣고 잇는데 같은곳에서 또 부딛혔어요 ㅠ 제가 뭘 잘못하고 있을까요...==test code==import pymysqlimport pymysql db = pymysql.connect(host='localhost', port=3306, user='root', passwd='funcoding', db= 'ecommerce', charset= 'utf8') # ecommerce = db.cursor() db ==error ===raise errorclass(errno, errval) pymysql.err.OperationalError: (1045, "Access denied for user 'root'@'localhost' (using password: YES)")비번 수정방법 등등 알아보다가 다시 깔고 mysql설정시 비번 funcoding 으로 바꿔서 다시 깔았는데도 똑같습니다 ㅠ iterm 에서 해본거➜ ~ cd /usr/local/mysql ➜ mysql cd bin ➜ bin ls ibd2sdi mysql_upgrade innochecksum mysqladmin libprotobuf-lite.3.19.4.dylib mysqlbinlog libprotobuf.3.19.4.dylib mysqlcheck lz4_decompress mysqld my_print_defaults mysqld-debug myisam_ftdump mysqld_multi myisamchk mysqld_safe myisamlog mysqldump myisampack mysqldumpslow mysql mysqlimport mysql_config mysqlpump mysql_config_editor mysqlshow mysql_migrate_keyring mysqlslap mysql_secure_installation perror mysql_ssl_rsa_setup zlib_decompress mysql_tzinfo_to_sql ➜ bin ./mysql ERROR 1045 (28000): Access denied for user 'hyun'@'localhost' (using password: NO) ➜ bin ./mysql -u root -p Enter password: ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: YES) 도와주세요 ㅠ
-
미해결
Unit Testing 을 위해서 Repository를 Mock했는데 먹지를 않습니다.
안녕하세요.Unit Testing 을 처음 해보는데 일단 Service의 로직을 먼저 테스트하기 위해 Repository를 Mock해서 Service 내에 @InsertMocks 어노테이션을 걸어서 when 조건을 삽입했습니다.이후 Service 내에서 findById(1L)을 실행하면 when문에서 걸어준대로 User 객체를 반환해야 한다고 생각했으나, 계속 Optional이 비어있다고 나오네요.그래서 Service로 들어간것이 아니라 직접 Test 내에서 Repository를 불러본 결과 Mock가 문제없이 잘 되고 있었습니다. 제가 Configuration 한 것에 문제가 있는지 고견 부탁드립니다.UserServiceTest import com.politicia.coreservice.domain.User; import com.politicia.coreservice.dto.request.UserRequestDto; import com.politicia.coreservice.dto.response.UserResponseDto; import com.politicia.coreservice.repository.UserRepository; import org.junit.jupiter.api.Assertions; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; import org.junit.jupiter.api.extension.ExtendWith; import org.mockito.InjectMocks; import org.mockito.Mock; import org.mockito.MockitoAnnotations; import org.mockito.junit.jupiter.MockitoExtension; import java.util.ArrayList; import java.util.List; import java.util.Optional; import static org.junit.jupiter.api.Assertions.*; import static org.mockito.ArgumentMatchers.any; import static org.mockito.Mockito.when; @ExtendWith(MockitoExtension.class) class UserServiceTest { @InjectMocks UserServiceImpl userService; @Mock private UserRepository userRepository; @BeforeEach public void setUp() { MockitoAnnotations.initMocks(this); } @Test void testSignUp() { //given UserRequestDto newUser = UserRequestDto.builder() .name("newUser") .profilePic("https://profile.pic") .nationality("korea") .build(); User expectedUser = User.builder() .id(1L) .name("newUser") .nationality("korea") .profilePic("https://profile.pic") .build(); UserResponseDto expectedUserDto = UserResponseDto.builder() .id(1L) .name("newUser") .nationality("korea") .profilePic("https://profile.pic") .createdAt(expectedUser.getCreatedAt()) .updatedAt(expectedUser.getUpdatedAt()) .build(); when(userRepository.save(any(User.class))).thenReturn(expectedUser); //when UserResponseDto actualUser = userService.createUser(newUser); // Verify assertEquals(expectedUserDto, actualUser); } @Test void testGetUser() { //given User user = User.builder() .id(1L) .name("user") .nationality("korea") .profilePic("profilePic") .build(); List<User> userList = new ArrayList<>(); userList.add(user); when(userRepository.findById(any(Long.class))).thenReturn(Optional.of(user)); UserResponseDto expectedUserDto = UserResponseDto.builder() .id(1L) .name("user") .nationality("korea") .profilePic("profilePic") .createdAt(user.getCreatedAt()) .updatedAt(user.getUpdatedAt()) .build(); //when UserResponseDto actualUserDto = userService.getUser(1L); //then Assertions.assertEquals(actualUserDto, expectedUserDto); } } UserServiceImplpackage com.politicia.coreservice.service; import com.politicia.coreservice.domain.User; import com.politicia.coreservice.dto.request.UserRequestDto; import com.politicia.coreservice.dto.response.UserResponseDto; import com.politicia.coreservice.repository.UserRepository; import lombok.RequiredArgsConstructor; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import java.util.List; @Service @RequiredArgsConstructor public class UserServiceImpl implements UserService { private final UserRepository userRepository; @Override public UserResponseDto createUser(UserRequestDto userRequestDto) { User user = userRequestDto.toEntity(); User newUser = userRepository.save(user); return UserResponseDto.builder() .id(newUser.getId()) .name(newUser.getName()) .nationality(newUser.getNationality()) .profilePic(newUser.getProfilePic()) .createdAt(newUser.getCreatedAt()) .updatedAt(newUser.getUpdatedAt()) .build(); } @Override public UserResponseDto getUser(Long userId) { User foundUser = userRepository.findById(userId).get(); return UserResponseDto.builder() .id(foundUser.getId()) .name(foundUser.getName()) .nationality(foundUser.getNationality()) .profilePic(foundUser.getProfilePic()) .createdAt(foundUser.getCreatedAt()) .updatedAt(foundUser.getUpdatedAt()) .build(); } }에러문구
-
해결됨[C++과 언리얼로 만드는 MMORPG 게임 개발 시리즈] Part1: C++ 프로그래밍 입문
delete[] 할때 소멸자 실행 순서
delete[]를 통해 다수의 클래스를 지울 때 실행되는 소멸자의 실행순서는 고정인가요?제 컴퓨터 환경에서의 한 간단한 실험에서는 생성순서의 역순으로 소멸자가 실행었습니다만 다른 상황에서도 그러한 방식이 유지될것이라는 확신을 얻을수는 없었습니다.delete의 내부동작방식이 cpu에 따라, 컴파일러에 따라 상이하게 동작할 여지가 있나요? 다시 말해 delete는 자기결정적인가요?
-
해결됨모의해킹 실무자가 알려주는, SQL Injection 공격 기법과 시큐어 코딩 : PART 1
배우기 시작하면서 드는 궁금증
안녕하세요, 이제 막 강의를 신청하고 2시간 가량 들었습니다.초반 두시간 정도는 실습 환경 구축 위주의 내용인데요, 이후 수업에서 배우는 내용에 대해 두 가지 궁금증이 생겨 질문드리게 되었습니다.1. 한정된 분량의 강의 특성상 대체로 많이 사용되는 mysql, mssql, oracle 이 셋 db를 대상으로 수업을 진행하시는 것 같습니다. 혹시 mongo, dynamodb처럼 nosql을 사용하는 웹 어플리케이션의 경우 injection 수행 시 쿼리 문법만 바뀌는건지, 아니면 injection 방법 자체가 바뀌는건지 궁금합니다.2. 현재 초급 수준이라 그런지 게시판을 injection 대상으로 삼아서 실습하는 걸로 예상이 되는데요, 게시판이 없고 회원가입/로그인 창 정도만 있는 웹 어플리케이션도 많은 것으로 알고있습니다. 저는 part1, part2 모두를 수강할 예정인데 게시판이 존재하지않고 회원가입/로그인 폼 정도만 있는 웹 어플리케이션에 대해서도 다양한 공격기법을 배울 수 있게되나요~?감사합니다.
-
해결됨스프링 DB 1편 - 데이터 접근 핵심 원리
select ~ for update 락
안녕하세요 좋은 강의 항상 감사합니다.해당 강의에서 조회 락을 위해서 세션1에서 select ~ for update 을 사용하잖아요? 해당 쿼리를 사용해서 lock을 얻은 상태인데요.그런데 조회 중에 세션1(세션2 말고) 에서 바로 update 문을 날리게 된다면 바로 수정이 이루어지는데, 위 쿼리를 통해서 lock을 얻은 것은 update문을 날리게 되면 자동으로 반납이 됨과 동시에 update 문이 실행이 되는 것인가요? 감사합니다.
-
미해결[초급편] 안드로이드 커뮤니티 앱 만들기(Android Kotlin)
댓글 ListView BaseAdapter position 버그 질문
한사람이 게시글을 작성하면 그 아래 여러사람이 댓글을달고 댓글을 쓴 본인만 댓글을 삭제할수 있도록 구현하려고 합니다. 문제는 한 게시글에 여러사람이 댓글을 달았을때 listView의 getView 메서드의 position이 해당 인덱스의 위치를 잘못된 값을 나타냅니다.Log로 찍어봤을때 해당 댓글들의 키 배열들은 정상적으로 있으나 두 댓글다 position을 찍어봤을때 0을 찍고 있습니다.(제 생각대로는 첫번째 댓글을 찍으면 0, 두번째 댓글을 찍으면 1이 로그에 찍힘) 왜 리스트뷰가 해당 position이 제대로 찍히지 않는 이유가 궁금합니다! 해당 코드입니다.게시글 내부 댓글부분 코드var commentlist = ArrayList<CommentModel>() var commentKeyList = ArrayList<String>() var commentLV = binding.commentLV var lvAdpater = CommentAdapter(commentlist , commentKeyList , key ) commentLV.adapter = lvAdpater val postListener = object : ValueEventListener { override fun onDataChange(dataSnapshot: DataSnapshot) { commentlist.clear() commentKeyList.clear() for(dataModel in dataSnapshot.children){ val item = dataModel.getValue(CommentModel::class.java) if (item != null) { commentlist.add(item) commentKeyList.add(dataModel.key.toString()) } } lvAdpater.notifyDataSetChanged() // ... } override fun onCancelled(databaseError: DatabaseError) { // Getting Post failed, log a message Log.w(TAG, "loadPost:onCancelled", databaseError.toException()) } } FBRef.commentRef.child(key).addValueEventListener(postListener)class CommentAdapter(var list : ArrayList<CommentModel> , var keyList : ArrayList<String>, var key : String): BaseAdapter() { var applicantID : String = "" override fun getCount(): Int { return list.size } override fun getItem(p0: Int): Any { return list[p0] } override fun getItemId(p0: Int): Long { return p0.toLong() } override fun getView(position: Int, p1: View?, p2: ViewGroup?): View { var view = p1 if(p1 == null){ view = LayoutInflater.from(p2?.context).inflate(R.layout.comment_item, p2, false) } val applicant = view?.findViewById<TextView>(R.id.applicant) val content = view?.findViewById<TextView>(R.id.contentArea) val time = view?.findViewById<TextView>(R.id.timeArea) applicant?.text = list[position].applicant applicantID = list[position].applicantID content?.text = list[position].comment time?.text = list[position].time var removeBtn = view!!.findViewById<ImageView>(R.id.removeBtn) // var inviteBtn = view!!.findViewById<Button>(R.id.inviteBtn) if(FBAuth.getUid().equals(applicantID)){ removeBtn.isVisible = true removeBtn.setOnClickListener { var commentKey = keyList[position] Log.e("key",keyList.toString()) Log.e("key", position.toString()) var dlg = AlertDialog.Builder(view.context) dlg.setTitle("댓글을 삭제하겠습니까?") dlg.setPositiveButton("확인", DialogInterface.OnClickListener { dialogInterface, i -> FBRef.commentRef.child(key).child(commentKey).removeValue() }) dlg.setNegativeButton("취소",null) dlg.show() } } return view!! } }
-
미해결바닥부터 시작하는 STM32 드론 개발의 모든 것
10-2/3 강의 따라 할때, P게인을 50으로 설정하면, 쓰로틀을 건들면 리셋됩니다.
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요. 10-2, 10-3 강의 따라 할때, P게인을 50으로 설정하면, 아밍상태에서 아주 조금만 쓰로틀을 건들면 리셋됩니다.(*ST-Link를 빼고 해도 마찬가지 입니다) P게인을 20으로 설정하고 쓰로틀링하면 잘 작동됩니다. 혹시 어느 부분을 검토해 보아야 할지 문의 드립니다.
-
해결됨스프링 DB 1편 - 데이터 접근 핵심 원리
SET LOCK_TIMEOUT 10000;
안녕하세요 좋은 강의 항상 감사합니다. 해당 강의에서 2번째 세션에서만 SET LOCK_TIMEOUT 10000; 을 실행하는데, 락 타임아웃은 세션마다 다르게 설정을 할 수가 있는 것인가요?실습에서 SET LOCK_TIMEOUT 10000; 명령어만 세션1로 옮겨서 (순서, query 다 그대로 세션1, 세션2 각각 다 수행) 실행하니 같은 에러가 발생하는데요. 그렇다면 세션마다 설정하는 것이 아니라 더 큰 개념인 DB에 설정하는 것이라고 볼 수 있는, h2 시간이 정확하지 않아 단정짓기가 좀 어렵네요. 답변 미리 감사드립니다.
-
해결됨자바 ORM 표준 JPA 프로그래밍 - 기본편
일대다 연관관계 referenceColumnName 질문
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예)안녕하세요. 다름이 아니라 @JoinColumn 에서는 name 속성으로 외래키 컬럼의 컬럼명을 지정하고, 생략된 referenceColumName 속성을 통해 해당 외래키가 대상 테이블의 어떤 컬럼과 연결되는지 정하는 것으로 알고 있습니다.@OneToMany @JoinColumn(name = "TEAM_ID") private List<Member> members = new ArrayList<>();그런데 일대다 연관관계에서 다음과 같이 일 쪽에서 joinColumn을 넣어줄 경우 referenceColumnName 속성은 디폴트 값으로 어떤 컬럼과 연결되는지 궁금합니다. 영한 선생님의 답변글에서는 디폴트 값으로 해당 필드의 타입을 확인하고 해당 타입의 pk컬럼과 연결시켜준다고 봤는데 위 경우는 List가 나와서 어떻게 되는지 궁금합니다.
-
해결됨그림으로 쉽게 배우는 운영체제
교재는 어디서 다운 받을 수 있나요?
교재는 어디서 다운 받을 수 있나요?
-
미해결[코드팩토리] [중급] Flutter 진짜 실전! 상태관리, 캐시관리, Code Generation, GoRouter, 인증로직 등 중수가 되기 위한 필수 스킬들!
initState 에서 provider.read 를 해서 초기 데이타를 가져오고 싶은데 가능 한지요?
안녕하세요.중급 강의 잘 듣고 많은 도움이 되었습니다.한가지 질문이 있는데요. view의 initState 에서 provider read 를 통해 데이타를 가져와 state 에 넣어주고,View 의 widget tree 내에서 watch 해서 쓰고 싶습니다.아래처럼 provider.read 를 쓸 수는 없을까요? 꼭 onClick 같은 이벤트 내에서만 쓸 수 있는 것인가요? @overridevoid initState() {// TODO: implement initStatesuper.initState();ref.read(floorNoProvider.notifier).getData();} 그럴 경우 아래와 같은 에러가 발생하는데요.Tried to modify a provider while the widget tree was building. 방법이 없을까요?
-
해결됨React 기반 Gatsby로 기술 블로그 개발하기
[17강 25강] Cannot query field "html" on type "MarkdownRemark" 오류
안녕하세요 본 강의를 통해 블로그를 만들고 있습니다.17강을 진행하는 중에 이 메세지가 발생했고, 이로 인해 게시글을 조회할 수 없었습니다. 공식문서를 찾아 봐도 뭐가 문제인지 몰랐습니다.일단 쿼리에서 html부분을 주석 처리하고 24강까지 진행했습니다. 주석처리하니 "게시글 상단부분 구현"같은 것은 잘 됩니다. 왜 html 쿼리가 진행되지 않는지 도저히 모르겠습니다.도움이 필요합니다.제 깃허브 주소는 아래와 같습니다.https://github.com/Test-Of-LEE/Test-Of-LEE-BlogProject/tree/main/BlogProject 감사합니다.
-
해결됨Slack 클론 코딩[백엔드 with NestJS + TypeORM]
webstorm과 vscode
강의에서는 webstorm이 사용되던데,vscode로 강의를 따라가는데 어려움이 없을까요?
-
미해결<M.B.I.T> 테스트 페이지 만들기! with Django
결과 페이지 만들기 -js편 execCommand를 더이상 지원하지 않습니다.
프론트엔드 마지막편을 보고 있는데 더이상 execCommand 명령어를 지원하지 않는다고 하여 다른 명령어를 찾아봤는데 옳은 코드 인가요?현재 url을 복사하는 함수를 작성한 것입니다.function copyUrl(){ let url = window.location.href; navigator.clipboard.writeText(url) .then(()=>{ alert('URL을 클립보드에 복사했습니다.'); }); }
-
미해결스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술
localhost:8080/hello Whitelabel Error Page 오류
안녕하세요 강사님 다름이 아니고 강의 초반에 나오는localhost:8080/hello 를 입력했을때 콘솔창에도 HelloServlet.service가 나타나지 않고 페이지도 여전히 Whitelabel Error Page 가 나타납니다.아래 비슷한 질문들의 해결방법은 모두 실행해 보았습니다!먼저 저의 intelliJ 설정을 말씀드리자면1.war 설정2.버전 3.0.33.jdk17 사용그리고 제가 작성한 코드입니다. ServletApplicationServletInitializerHelloServlet 혹시 몰라 패키지 사진도 올리겠습니다.어플실행시 콘솔창 화면입니다.(아무것도 출력되지 않습니다.)+추가해결방법으로 OMG서포터즈님의 파일 다운로드 후 코드 복붙을 해도 해결이 되지 않고몇몇 학생들의 해결방법으로 jdk17을 correcto-11로 변경하면 해결된다고 하였지만 이도 오류로 이어집니다.
-
미해결Jenkins를 이용한 CI/CD Pipeline 구축
k8s 섹션
궁금한 것이 있습니다. k8s 관련된 섹션이 있는데, 해당 섹션을 보지 않아도 뒤에 있는 강좌들을 수강할 때 문제가 없을까요? 당장은 젠킨스만 하려고 하는데