묻고 답해요
164만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결스프링 핵심 원리 - 기본편
Car 인터페이스에 대해 질문이 있습니다
안녕하세요 선생님 귀중한 강의 너무 잘 듣고있습니다 감사합니다. 한 가지 궁금한 점은 예시에서 설명해주신 자동차를 인터페이스로 구현하면 엑셀, 브레이크 등 자동차의 기능적인 측면의 것들이 선언될 것이라고 생각합니다. 기능이 아닌 자동차의 상태적인 측면(색깔, 경유차/휘발유차/전기차, 4륜/후륜 등)을 생각했을 때, 공통적인 속성들을 상속하는 구조가 좋을 것으로 생각하는데 그럼 실제 코드로 구현한다고 하면 Car라는 공통 속성들이 정의된 부모클래스에 엑셀, 브레이크 등이 선언된 인터페이스, 그 외에 다양한 기능들이 정의된 또 다른 인터페이스들이 implements 되고 Car 클래스를 K3, Avante 등의 클래스에서 extends 해서 엑셀, 브레이크 등의 메서드를 오버라이딩 한다고 생각해야 하는건가요 ?? 그런식이라면 애초에 Car를 추상클래스로 선언해야하는건가요 ?? 헷갈리네요. 즉, 인터페이스로 역할을 정의할 때, 속성에 관련된 측면들은 어떻게 처리되어야하는지 궁금합니다. 감사합니다
-
미해결따라하며 배우는 노드, 리액트 시리즈 - 유튜브 사이트 만들기
multer에서 filefilter 부분
filefilter부분에서 확장자명을 ext 변수로 뽑은 다음에 .mp4가 아니면 거절하게 만들었는데 png파일이나 다른 기타 등등의 파일이 필터가 안되는 이유가 뭘까요
-
미해결[개정판 2023-11-27] Spring Boot 3.x 를 이용한 RESTful Web Services 개발
마지막에 /search 관련해서 뭔말인지 잘 모르겠습니다.
검색관련 메소드를 만들때 uri 를 localhost:8080/search 이런식으로 GET Method 를 만들고 파라미터에 따라 유저든 포스트든 전부 통합해서 하는게 좋다는 말인가요 ? 그리고 추가적으로 웹사이트를 만들때 이런식으로 REST api 로 만든다면 뷰 부분은 보통 뭘로 만드나요 ?
-
미해결스프링 기반 REST API 개발
self-descrive messages 와 hateoas에 대해 질문이 있습니다.
질문1 self-descrive messages 기준에 대해 질문: front 에서 backend로 api 요청을 날려 응답을 받았을때 그 응답 데이터가 문서화 되어 제목을 통해 응답 데이터의 용도를 유추할수 있거나 아니면 응답 객체중 응답의 의미가 뭔지 알수 있게끔 하는 어떤 형식의 데이터가 포함되어 있으면 self-descrive messages 라는 기준을 만족하는건가요? 질문2:hateoas는 응답과 연관된 다른 요청을 프론트엔드에서 직접작성하는게 아니라 응답 내의 데이터를 이용해 바로 링크 설정을 할수 있게 한다는 의미인가요?
-
미해결따라하며 배우는 MySQL on Docker
다음 새로운 강의로는 AWS기반의 EKS, NLB, SSL, Nginx, Aurora for mysql을 활용한 쿠버네티스 강의를 만들어주시면 감사하겠습니다.
다음 새로운 강의로는 AWS기반의 EKS, NLB, SSL, Nginx, Aurora for mysql을 활용한 쿠버네티스 강의를 만들어주시면 감사하겠습니다. EKS(Elastic Kubernetes Service)로 node 구성시 multi-AZ으로 해주시고, ECR(Elastic Container Registry)사용법, ALB for Ingress로 할지 아니면 'NLB + Nginx for Ingress로 할지', SSL(혹은 TLS)인증서를 어디에 구성할지(Termination할지?), Jenkins 와 쿠버네티스 연동 그리고, 웹서버 혹은 WAS서버가 Scale-In될 때 웹클라이언트 세션 유지 용도로 ElasticCache for Redis도 추가 부탁 드립니다. 이 정도 커리큘럼이면 괜찮은 강의가 구성될 것 같습니다. 여력이 되신다면 쿠버네티스 모니터링용으로 프로메테우스와 그라파나, 그리고 로그서버로 fluentd도 부탁 드립니다.
-
미해결[리뉴얼] React로 NodeBird SNS 만들기
DB에는 해쉬태그가 등록됐는데... 프론트에서 나오지 않습니다.
. DB에는 해시태그가 잘 등록되어있는데, 프론트에서는 해시태그가 없네요;;
-
미해결비전공자를 위한 진짜 입문 올인원 개발 부트캠프
Send 눌러도 작동이안됩니다..
default example 저장 후 send눌러도 안되는데 무슨문제일까요?? ++ 눈 모양 이모티콘을 누르면 서버 URL이 안뜨고 setup environment 하라는 것처럼 나오는데 제가 놓친 부분이 있나요?
-
미해결우디의 포토샵 강좌
브러쉬
마스크누르고 브러쉬펜 적용하려는데 아무리 눌러도 브러쉬펜 효과가 안나타나요..ㅜ 이럴경우에 어떻게 해야하나요??
-
미해결모던 안드로이드 - 코틀린과 Jetpack 활용
/?m=5000 에 대해서 질문드립니다.
안녕하세요. 마스크 api 서비스가 종료되어서 백업으로 올려주신 url 로 강의를 따라가고 있습니다. sample.json 으로 진행할 때에도 url 에 /?m=5000 을 적용하면 위치 반경의 데이터를 먼저 보여주나요? 강의에서는 url에 /?m=5000 을 적용하시고 위도, 경도 데이터를 쿼리로 보내니 오산시 데이터를 먼저 보여주는데, 제 app 에서는 /?m=5000을 추가하기 전과 똑같이 순서변경없이 서울시 데이터를 보여주고 있습니다. 혹시나 하는 마음에 서울시의 특정 위치의 위도, 경도를 설정해서 진행해 보았지만, 순서 변경없이 출력되고 있었습니다. --- 결론--- 혹시 /?m=5000 은 api 서비스에서만 작동되는 건지 질문드립니다.
-
미해결[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part1: C# 기초 프로그래밍 입문
선생님이 쓰시는 vs 테마는 이름이 뭐에요?
선생님이 쓰시는 vs 테마 이름은 무엇인가요?
-
해결됨[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part1: C# 기초 프로그래밍 입문
질문이 여러개 있어요!
1.구조체는 어느 상황에 쓰이나요? 그냥 객체가 해줄 수 있는 역할이 구조체의 역할을 포괄하고 같은 계층의 비슷한 데이터를 묶는 역할은 열거형이 할 수 있으니까 구조체는 별로 안 쓰일것 같아서요..아,열거형은 문자열만 사용 가능한가요? 2.Knight Clone()도 함수인가요? 반환값이 객체인 함수라고 보면 되는 건가요? 3.얕은 복사는 그냥 한 객체를 다른 이름으로 참조하는 것이라 볼 수 있겠고 깊은 복사는 같은 값을 가진 아예 다른 객체를 만드는 거라고 보면 되나요?
-
해결됨스프링 기반 REST API 개발
질문있습니다.
좋은 강의 만들어주셔서 많이 배우고 있습니다. 감사합니다. 다름이 아니라 강의 수강 중 테스트가 실패하여 문의드립니다. 해당 강의 전까지는 메이븐 프로젝트로 생성하여 의존성 추가해서 강의의 스프링부트 버전(2.1.0.RELEASE)로 진행하여 문제 없이 진행하였는데 EventControllerTests - createEvent 테스트코드 작성시 mockMvc.perform(post("/api/events/") .contentType(MediaType.APPLICATION_JSON) .accept(MediaType.APPLICATION_JSON) .content(objectMapper.writeValueAsString(event))) .andDo(print()) .andExpect(status().isCreated()) .andExpect(jsonPath("id").exists()) .andExpect(jsonPath("$.id").exists()) .andExpect(header().exists(HttpHeaders.LOCATION)) .andExpect(header().string(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON_UTF8_VALUE)) .andExpect(jsonPath("free").value(false)) .andExpect(jsonPath("offline").value(true)) .andExpect(jsonPath("eventStatus").value(EventStatus.DRAFT.name())) .andExpect(jsonPath("_links.self").exists()) //.andExpect(jsonPath("$._links.self").exists()) .andExpect(jsonPath("_links.query-events").exists()) .andExpect(jsonPath("_links.update-event").exists()) .andDo(document("create-event", links( linkWithRel("self").description("link to self"), linkWithRel("query-events").description("link to query events"), linkWithRel("update-event").description("link to update an existing event") ) )); 위와 같이 작성하면 실패하고 org.springframework.restdocs.snippet.SnippetException: Links with the following relations were not found in the response: [self, update-event, query-events] .andDo(document("create-event", links(halLinks(), linkWithRel("self").description("link to self"), linkWithRel("query-events").description("link to query events"), linkWithRel("update-event").description("link to update an existing event") ) )); links의 첫번째 인자로 haLinks()를 주면 테스트가 성공하는 것을 확인하였습니다. 원인을 파악하기 위해 검색도 해보고 강의도 다시 보던 중에 KSUG에서 발표하셨다고 하던 이전 자료(해당 강의의 시작)를 보니 halLinks()가 있는 것을 보았고 해당 코드가 있는 깃랩(https://gitlab.com/whiteship/natural/-/blob/master/src/test/java/me/whiteship/natural/event/EventControllerTests.java)에서도 보니 halLinks()가 있는 것을 확인하였습니다. 메이븐 프로젝트로 생성해서 버전이랑 의존성 꼬이는 문제는 없을것 같은데 <artifactId>asciidoctor-maven-plugin</artifactId> <version>1.5.8</version> asciidoctor-maven-plugin의 버전이 제가 작성한 버전은 1.5.8이고 기선님이 사용한 버전은 1.5.3인 차이만 확인하였습니다. 무슨 차이로 인해 테스트가 실패하는 것인지 감이 안잡히는데 기선님은 두 가지 방식 다 진행하였고 성공하여서 질문드립니다. 테스트 실패 시 출력하는 요청,응답 헤더 MockHttpServletRequest: Headers = {Content-Type=[application/json;charset=UTF-8], Accept=[application/json]} MockHttpServletResponse: Headers = {Location=[http://localhost:8080/api/events/1], Content-Type[application/json;charset=UTF-8]} json 출력결과도 첨부합니다. { "id" : 1, "name" : Spring, "description" : REST API Development with Spring, "beginEnrollmentDateTime" : 2018-11-23T14:21:00, "closeEnrollmentDateTime" : 2018-11-24T14:21:00, "beginEventDateTime" : 2018-11-25T14:21:00, "endEventDateTime" : 2018-11-26T14:21:00, "location" : 강남역 D2 스타텁 팩토리, "basePrice" : 100, "maxPrice" : 200, "limitOfEnrollment" : 100, "offline" : true, "free" : false, "eventStatus" : DRAFT, "_links" : -{ "self" : -{ "href" : http://localhost:8080/api/events/1 }, "query-events" : -{ "href" : http://localhost:8080/api/events }, "update-event" : -{ "href" : http://localhost:8080/api/events/1 } } } 깃헙 링크도 첨부합니다!https://github.com/rshak8912/rest
-
미해결[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part1: C# 기초 프로그래밍 입문
enum 으로 Player나 Knight 같은 것 왜 일일히 지정해준 것이에요?
enum 으로 Player나 Knight 같은 것 왜 일일히 지정해준 것이에요? enum 중에 실제로 쓰인 것은 GameMode 밖에 없는 것 같아서요
-
미해결파이썬 무료 강의 (활용편2) - GUI 프로그래밍 (4시간)
설정값을 넣는 위치 기준을 모르겠어요
text, selectmode, height, width 이런건 root 옆에 넣는데 side, fill, expand이런건 pack()안에 넣어주는 이유가 뭔가요?? ㅜ
-
미해결[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part7: MMO 컨텐츠 구현 (Unity + C# 서버 연동 기초)
안되는 부분이 있어서 질문드립니다.
코드중 mc.CellPos = pos; 이 부분에서 NullReferenceException: Object reference not set to an instance of an object GameScene.Init () (at Assets/Scripts/Scenes/GameScene.cs:31) BaseScene.Awake () (at Assets/Scripts/Scenes/BaseScene.cs:12) 이런 에러가 나서 진행이 안됩니다. 찾아보니 널값을 가질수 없는 오브젝트에 널값을 할당해서 나는 오류라고 하여서, 명시적으로 mc.CellPos = new Vector3Int(10,10,0); mc.CellPos.set() 등으로 해보아도 같은 오류 메세지가 뜹니다.
-
해결됨[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part1: C# 기초 프로그래밍 입문
13:50초에요
여러 줄을 긁어서 한번에 주석처리 하시던데 이거 어떻게 하신건가요?????
-
해결됨[리뉴얼] Node.js 교과서 - 기본부터 프로젝트 실습까지
expect 질문입니다.
안녕하세요 expect관련 함수에 대해서 질문이 있습니다. describe('POST /join', () => { test('로그인 안 했으면 가입', (done) => { request(app) .post('/auth/join') .send({ email: 'zerohch0@gmail.com', nick: 'zerocho', password: 'nodejsbook', }) .expect('Location', '/') .expect(302, done); }); }); 위의 함수에서 expect들이 나타내는게 res.status(302).redirect(‘/’) 라는것은 알겠는데, 정확하게 이해를 못해서 질문을 드립니다. expect함수는 expect(value) 형태로 사용하는거라고 알고있는데 인수를 2개씩 써도 상관이 없는건가요??그리고 'location', '/', '302'의 순서는 상관이 없나요?
-
미해결[기초-응용] 다양한 환경을 앤서블(Ansible)로 관리하기 with 베이그런트(Vagrant)
다른 환경 질문
현재 rhel 8에서 ansible 및 vagrant를 진행중입니다. 아래 vagrant up 부분에서 오류가 나서 출력된 메세지를 첨부합니다. [root@master ~]# vagrant up Bringing machine 'default' up with 'libvirt' provider... ==> default: Checking if box 'generic/rhel8' version '3.2.10' is up to date... Traceback (most recent call last): 35: from /opt/vagrant/embedded/gems/2.2.14/gems/vagrant-2.2.14/lib/vagrant/batch_action.rb:86:in `block (2 levels) in run' 34: from /opt/vagrant/embedded/gems/2.2.14/gems/vagrant-2.2.14/lib/vagrant/machine.rb:201:in `action' 33: from /opt/vagrant/embedded/gems/2.2.14/gems/vagrant-2.2.14/lib/vagrant/machine.rb:201:in `call' 32: from /opt/vagrant/embedded/gems/2.2.14/gems/vagrant-2.2.14/lib/vagrant/environment.rb:613:in `lock' 31: from /opt/vagrant/embedded/gems/2.2.14/gems/vagrant-2.2.14/lib/vagrant/machine.rb:215:in `block in action' 30: from /opt/vagrant/embedded/gems/2.2.14/gems/vagrant-2.2.14/lib/vagrant/machine.rb:246:in `action_raw' 29: from /opt/vagrant/embedded/gems/2.2.14/gems/vagrant-2.2.14/lib/vagrant/action/runner.rb:89:in `run' 28: from /opt/vagrant/embedded/gems/2.2.14/gems/vagrant-2.2.14/lib/vagrant/util/busy.rb:19:in `busy' 27: from /opt/vagrant/embedded/gems/2.2.14/gems/vagrant-2.2.14/lib/vagrant/action/runner.rb:89:in `block in run' 26: from /opt/vagrant/embedded/gems/2.2.14/gems/vagrant-2.2.14/lib/vagrant/action/builder.rb:149:in `call' 25: from /opt/vagrant/embedded/gems/2.2.14/gems/vagrant-2.2.14/lib/vagrant/action/warden.rb:48:in `call' 24: from /opt/vagrant/embedded/gems/2.2.14/gems/vagrant-2.2.14/lib/vagrant/action/builtin/config_validate.rb:25:in `call' 23: from /opt/vagrant/embedded/gems/2.2.14/gems/vagrant-2.2.14/lib/vagrant/action/warden.rb:48:in `call' 22: from /opt/vagrant/embedded/gems/2.2.14/gems/vagrant-2.2.14/lib/vagrant/action/builtin/box_check_outdated.rb:92:in `call' 21: from /opt/vagrant/embedded/gems/2.2.14/gems/vagrant-2.2.14/lib/vagrant/action/warden.rb:48:in `call' 20: from /opt/vagrant/embedded/gems/2.2.14/gems/vagrant-2.2.14/lib/vagrant/action/builtin/call.rb:52:in `call' 19: from /opt/vagrant/embedded/gems/2.2.14/gems/vagrant-2.2.14/lib/vagrant/action/builder.rb:189:in `to_app' 18: from /opt/vagrant/embedded/gems/2.2.14/gems/vagrant-2.2.14/lib/vagrant/action/builder.rb:189:in `new' 17: from /opt/vagrant/embedded/gems/2.2.14/gems/vagrant-2.2.14/lib/vagrant/action/warden.rb:34:in `initialize' 16: from /opt/vagrant/embedded/gems/2.2.14/gems/vagrant-2.2.14/lib/vagrant/action/warden.rb:34:in `map' 15: from /opt/vagrant/embedded/gems/2.2.14/gems/vagrant-2.2.14/lib/vagrant/action/warden.rb:34:in `block in initialize' 14: from /opt/vagrant/embedded/gems/2.2.14/gems/vagrant-2.2.14/lib/vagrant/action/warden.rb:121:in `finalize_action' 13: from /opt/vagrant/embedded/gems/2.2.14/gems/vagrant-2.2.14/lib/vagrant/action/warden.rb:121:in `new' 12: from /root/.vagrant.d/gems/2.6.6/gems/vagrant-libvirt-0.3.0/lib/vagrant-libvirt/action/create_networks.rb:26:in `initialize' 11: from /root/.vagrant.d/gems/2.6.6/gems/vagrant-libvirt-0.3.0/lib/vagrant-libvirt/provider.rb:29:in `driver' 10: from /opt/vagrant/embedded/lib/ruby/2.6.0/rubygems/core_ext/kernel_require.rb:54:in `require' 9: from /opt/vagrant/embedded/lib/ruby/2.6.0/rubygems/core_ext/kernel_require.rb:54:in `require' 8: from /root/.vagrant.d/gems/2.6.6/gems/vagrant-libvirt-0.3.0/lib/vagrant-libvirt/driver.rb:1:in `<top (required)>' 7: from /opt/vagrant/embedded/lib/ruby/2.6.0/rubygems/core_ext/kernel_require.rb:54:in `require' 6: from /opt/vagrant/embedded/lib/ruby/2.6.0/rubygems/core_ext/kernel_require.rb:54:in `require' 5: from /root/.vagrant.d/gems/2.6.6/gems/fog-libvirt-0.8.0/lib/fog/libvirt.rb:4:in `<top (required)>' 4: from /opt/vagrant/embedded/lib/ruby/2.6.0/rubygems/core_ext/kernel_require.rb:54:in `require' 3: from /opt/vagrant/embedded/lib/ruby/2.6.0/rubygems/core_ext/kernel_require.rb:54:in `require' 2: from /root/.vagrant.d/gems/2.6.6/gems/ruby-libvirt-0.7.1/lib/libvirt.rb:11:in `<top (required)>' 1: from /opt/vagrant/embedded/lib/ruby/2.6.0/rubygems/core_ext/kernel_require.rb:54:in `require' /opt/vagrant/embedded/lib/ruby/2.6.0/rubygems/core_ext/kernel_require.rb:54:in `require': /usr/lib64/libk5crypto.so.3: undefined symbol: EVP_KDF_ctrl, version OPENSSL_1_1_1b - /root/.vagrant.d/gems/2.6.6/gems/ruby-libvirt-0.7.1/lib/_libvirt.so (LoadError) 실행 환경이 윈도우가 아니여서 죄송합니다. 현재 ANSIBLE 진행 환경이 꼭 CentOS, RHEL 이여야만 합니다. 만약 해결이 안된다면 초기화라도 해서 다시 시도 하고싶은데 도움을 꼭 받고싶습니다. 감사합니다. 환경 : RHEL 8.3 PROVIDER: kvm 방화벽 : dead
-
미해결피그마(Figma)를 활용한 UI디자인 입문부터 실전까지 A to Z
거리측정
조금 늦은 감이 있는데요 .. 그 직사각형을 이동하면서 그때그때 간격을 보려면 어떻게 해야하나요? 알트? 키가 맥북이라 없어서 뭔지 여쭤봅니다..!
-
미해결[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part4: 게임 서버
멀티 쓰레드 질문 드립니다.
멀티 쓰레드 질문 드립니다. GameRoom 이 JobQueue를 가지고 있어서 멀트 쓰레드에서 안전하다고 하셨는데 GameRoom 의 Broadcast , Enter,Leave 등은 JobQueue 를 이용 하니 멀티 쓰레드에서 안전 한거 같은데 GameRoom 의 Flush 는 어떻게 안전 할수가 있나요?