묻고 답해요
147만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결김영한의 실전 자바 - 중급 2편
UnitPrinter.printV2 와일드카드 작성 시
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]public static void printV2(Shuttle<? extends BioUnit> shuttle) { shuttle.showInfo(); } 이 부분에 와일드카드가 BioUnit 을 extends 해야 한다고 명시적으로 작성해 주고 있는데 Shuttle 클래스에서 이미 <T extends BioUnit> 을 하고 있기 때문에 와일드카드는 단순하게 ? 만 사용해도 괜찮은 걸까요?다른 개발자가 사용할 경우에 좀 더 명시적으로 확인시켜주기 위해 적은거라고 이해해도 되는 건지 궁금합니다. public static void printV2(Shuttle<?> shuttle) { shuttle.showInfo(); }이렇게 코드를 작성한 이후에 여러 테스트를 해봤는데 Shuttle 클래스를 만들때 <T extends BioUnit> 에 걸려서 Integer나 Object 등 다른 타입은 사용할 수 없더라구요.
-
미해결비전공자도 이해할 수 있는 Docker 입문/실전
.dockerignore
[실습] 백엔드 프로젝트(Nest.js)를 Docker로 실행시키기 강의에서.dockerignore에 node_modules를 지정해주었는데 컨테이너 내부에 node_modules가 들어가져있습니다.영상에서 강사님 컨테이너에도 node_modules가 있는데 맞는건가요?- 추가.dockerignore에 README.md 파일을 지정하고 빌드하니 README.md는 제외된 것 같습니다. node_modules는 파일이 아니라 디렉토리라 /를 붙여줘야하는 걸까요?아! 생각해보니 node_modules는 COPY한게 아니라 npm install의 결과물이군요!
-
미해결Flutter 고급 - 현업 수준의 아키텍처
BigButton 만들때.
BigButton 컴포넌트 만들때elevatedButton을 사용하지않고container위젯을 사용하는 이유가있을까요?
-
미해결한 입 크기로 잘라먹는 Next.js(v15)
시간 기반의 ISR 사용 시 revalidate가 트리거 되는 시점
안녕하세요, 선생님. 강의 잘듣고 있습니다.시간 기반의 ISR 렌더링을 사용할 때 헷갈리는 부분이 있어서 질문 남깁니다.저번 시간까지는 revalidate 시간을 설정하면 유저가 웹 페이지에 유입된 시점부터 지정한 시간 주기로 페이지를 재생성한다고 생각했습니다.근데 이번 강의의 1:47초 부분을 보니까 클라이언트의 요청과는 관계없이 빌드된 시점부터 revalidate 되는 것인지 헷갈리더라고요.예를 들어 revalidate를 60초로 설정하면 빌드된 시점부터 60초 주기로 페이지가 재성성되며 API를 호출하게 되는 것으로 이해해도 괜찮을까요?
-
미해결
시나공 2025 빅데이터 분석기사 실기
페이지 446: y_train['Reached.on.Time_Y.N'],이 부분에 시리즈가 아니라 다음과 같이 데이터 프레임으로 값을 넣어야 하는 것 같습니다.y_train[['Reached.on.Time_Y.N']], 페이지 339:데이터 프레임 입력값 중에 2532 -> 121로 수정해야 합니다.
-
미해결Practical Testing: 실용적인 테스트 가이드
Spring Rest Docs request에 List 타입이 포함된 경우
학습 관련 질문을 남겨주세요. 어떤 부분이 고민인지, 무엇이 문제인지 상세히 작성하면 더 좋아요!먼저 유사한 질문이 있었는지 검색해 보세요.서로 예의를 지키며 존중하는 문화를 만들어가요. 안녕하세요. 강의 너무 잘 듣고 있습니다! 현재까지 진행해온 프로젝트의 OrderController에도 Spring Rest Docs를 적용해보는 와중에 몇가지 질문이 생겼습니다!public class OrderControllerDocsTest extends RestDocsSupport { private final OrderService orderService = mock(OrderService.class); private static List<ProductResponse> productResponses; @Override protected Object initController() { return new OrderController(orderService); } @BeforeEach void init() throws Exception { ProductResponse productResponse1 = ProductResponse.builder() .id(1L) .price(1000) .sellingStatus(SELLING) .productNumber("001") .type(HANDMADE) .name("상품명1") .build(); ProductResponse productResponse2 = ProductResponse.builder() .id(2L) .price(3000) .sellingStatus(SELLING) .productNumber("002") .type(HANDMADE) .name("상품명2") .build(); productResponses = List.of(productResponse1, productResponse2); } @DisplayName("새로운 주문을 생성한다.") @Test void createOrder() throws Exception { //given LocalDateTime now = LocalDateTime.of(2025, 1, 28, 0, 50); List<String> productNumbers = List.of("001", "002"); OrderCreateRequest request = OrderCreateRequest.builder() .productNumbers(productNumbers) .build(); int totalPrice = productResponses.stream().mapToInt(ProductResponse::getPrice).sum(); OrderResponse orderResponse = OrderResponse.builder() .id(1L) .registeredDateTime(now) .products(productResponses) .totalPrice(totalPrice) .build(); given(orderService.createOrder(any(OrderCreateServiceRequest.class), any(LocalDateTime.class))) .willReturn(orderResponse); //when mockMvc.perform(post("/api/v1/orders/new") .content(mapper.writeValueAsString(request)) .contentType(MediaType.APPLICATION_JSON)) .andDo(print()) .andExpect(status().isOk()) .andDo(document("order-create", preprocessRequest(prettyPrint()), // adoc에서 json 형태를 보기 좋게 만들어줌 preprocessResponse(prettyPrint()), requestFields( fieldWithPath("productNumbers").type(JsonFieldType.ARRAY) .description("상품 리스트") ), responseFields( fieldWithPath("code").type(JsonFieldType.NUMBER) .description("코드"), fieldWithPath("status").type(JsonFieldType.STRING) .description("상태"), fieldWithPath("message").type(JsonFieldType.STRING) .description("메시지"), fieldWithPath("data").type(JsonFieldType.OBJECT) .description("응답 데이터"), fieldWithPath("data.id").type(JsonFieldType.NUMBER) .description("주문 ID"), fieldWithPath("data.totalPrice").type(JsonFieldType.NUMBER) .description("총 주문 가격"), fieldWithPath("data.registeredDateTime").type(JsonFieldType.ARRAY) // 반환타입 ARRAY ? .description("주문 시간"), fieldWithPath("data.products").type(JsonFieldType.ARRAY) .description("주문 상품 리스트"), fieldWithPath("data.products[].id").type(JsonFieldType.NUMBER) .description("주문 상품 ID"), fieldWithPath("data.products[].productNumber").type(JsonFieldType.STRING) .description("주문 상품 번호"), fieldWithPath("data.products[].type").type(JsonFieldType.STRING) .description("주문 상품 타입"), fieldWithPath("data.products[].sellingStatus").type(JsonFieldType.STRING) .description("주문 상품 상태"), fieldWithPath("data.products[].name").type(JsonFieldType.STRING) .description("주문 상품명"), fieldWithPath("data.products[].price").type(JsonFieldType.NUMBER) .description("주문 상품 가격") )) ); } }OrderService.createOrder() 메서드 반환 값 OrderResponse를 생성하기 위해선 ProductResponse 객체가 필요합니다. 이러한 경우가 강사님이 말씀하신 @BeforeEach의 적용시점인가? 라는 생각이 들어 위와 같이 작성해봤습니다. 제가 이해한 바가 맞을까요?? requestFields( fieldWithPath("productNumbers").type(JsonFieldType.ARRAY) .description("상품 리스트") ),위 코드에서 productNumbers에 있는 각 원소의 타입이 String 인것을 API 문서에 나타내고 싶어 fieldWithPath("productNumbers[]").type(JsonFieldType.STRING과 같이 작성해봤지만 타입 미스매칭 오류가 발생했습니다. responseFields에는 동일한 방법으로 List 순회에 성공했지만 requestFields 순회 문제는 해결하지 못했습니다.혹시 방법이 있다면 알려주시면 감사하겠습니다!
-
미해결실전! 스프링 부트와 JPA 활용2 - API 개발과 성능 최적화
Hibernate5JakartaModule 오류
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]build.gradle에 Hibernate5JakartaModule을 잘 등록하여 라이브러리 목록도 확인했습니다. 그런데 이렇게 오류가 뜹니다ㅠㅠ빨간 줄에는 "Cannot return a value from a method with void result type" 라고 뜨는데 이유가 뭘까요..ㅠㅠ
-
해결됨한 입 크기로 잘라 먹는 리액트(React.js) : 기초부터 실전까지
Editor 컴포넌트 리렌더링
아래 질문들을 보던 중 Editor 부분이 리렌더링 된다는 글을 보고 제 화면도 확인한 결과 리렌더링 된 걸 확인해서 Editor.jsx 또한 아래와 같이 memo메서드를 감싸줬더니 리렌더링 되지 않는 것을 확인했습니다.import "./Editor.css"; import { useState, useRef, memo } from "react"; const Editor = ({ onCreate }) => { const [content, setContent] = useState(""); const contentRef = useRef(); const onChangeContent = (e) => { setContent(e.target.value); }; const onKeyDown = (e) => { if (e.keyCode === 13) { onSubmit(); } }; const onSubmit = () => { if (content.trim() === "") { contentRef.current.focus(); return; } onCreate(content.trim()); setContent(""); }; return ( <div className="Editor"> <input ref={contentRef} value={content} onKeyDown={onKeyDown} onChange={onChangeContent} placeholder="새로운 Todo..." /> <button onClick={onSubmit}>추가</button> </div> ); }; export default memo(Editor); Editor.jsx의 props가 onCreate 메서드인데 이를 App.jsx에서 useCallback 처리를 해줘서 그냥 export default memo(Editor); 을 해줘도 리렌더링 방지가 가능했던 것인지 궁금해서 질문 남깁니다! App.jsx 코드입니다!import "./App.css"; import { useState, useRef, useReducer, useCallback } from "react"; import Header from "./components/Header"; import Editor from "./components/Editor"; import List from "./components/List"; const mockData = [ { id: 0, isDone: false, content: "운동하기", date: new Date().getTime(), }, { id: 1, isDone: false, content: "풋살하기", date: new Date().getTime(), }, { id: 2, isDone: false, content: "게임하기", date: new Date().getTime(), }, ]; function reducer(state, action) { switch (action.type) { case "CREATE": return [action.data, ...state]; case "UPDATE": return state.map((item) => item.id === action.targetId ? { ...item, isDone: !item.isDone } : item ); case "DELETE": return state.filter((item) => item.id !== action.targetId); default: return state; } } function App() { const [todos, dispatch] = useReducer(reducer, mockData); const idRef = useRef(3); const onCreate = useCallback((content) => { dispatch({ type: "CREATE", data: { id: idRef.current++, isDone: false, content: content, date: new Date().getTime(), }, }); }, []); const onUpdate = useCallback((targetId) => { dispatch({ type: "UPDATE", targetId: targetId, }); }, []); const onDelete = useCallback((targetId) => { dispatch({ type: "DELETE", targetId: targetId, }); }, []); return ( <div className="App"> <Header /> <Editor onCreate={onCreate} /> <List todos={todos} onUpdate={onUpdate} onDelete={onDelete} /> </div> ); } export default App;
-
미해결[2024 최신] [코드팩토리] [초급] Flutter 3.0 앱 개발 - 10개의 프로젝트로 오늘 초보 탈출!
vid_player Project의 ImageSource.gallary 실행 오류
Lost connection to device. the Dart Compiler exited unexpectedly. 문제로 simulator가 종료됐습니다. 해당 문제건에 대해 질문&답변 코너를 찾아봤지만, 같은 이슈로 올라온 글이 없어 정보 공유 드립니다. 😊😊이 문제는 ios 권한으로 인해 발생하는 오류 입니다. [vid_player > ios > Runner > Info.plist] 파일 실행. 맨 밑에 </dick> 위에 아래의 문구 작성______________________________________________________<key>NSPhotoLibraryUsageDescription</key><string>사진을 선택하기 위해 라이브러리에 접근합니다.</string>______________________________________________________ 행복 코딩하세요.🙆🙆
-
미해결스프링 핵심 원리 - 기본편
테스트 두개를 동시에 돌렸을 경우 왜 밸류값이 달라지는 건가요??
public class ApplicationContextInfoTest { AnnotationConfigApplicationContext ac = new AnnotationConfigApplicationContext(AppConfig.class); @Test @DisplayName("모든 빈 출력하기") void findAllBean() { String[] beanDefinitionNames = ac.getBeanDefinitionNames(); for (String beanDefinitionName : beanDefinitionNames) { Object bean = ac.getBean(beanDefinitionName); System.out.println("name = " + beanDefinitionName + " Object = " + bean); } } @Test @DisplayName("모든 빈 출력하기") void findApplicationAllBean() { String[] beanDefinitionNames = ac.getBeanDefinitionNames(); for (String beanDefinitionName : beanDefinitionNames) { BeanDefinition beanDefinition = ac.getBeanDefinition(beanDefinitionName); if (beanDefinition.getRole() == BeanDefinition.ROLE_APPLICATION) { Object bean = ac.getBean(beanDefinitionName); System.out.println("name = " + beanDefinitionName + " Object = " + bean); } } } }테스트 코드를 이렇게 짠 후 같이 돌리면 오브젝트로 나오는 애들 코드가 각각 다르게 나옵니다.스프링 컨테이너는 초기에 한 번만 생성/등록되고 각각의 테스트에서 같은 것을 가져오는 건줄 알았는데 아닌가요..??
-
미해결자바 ORM 표준 JPA 프로그래밍 - 기본편
양방향 연관관계와 기본키 전략
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예)[질문 내용]여기에 질문 내용을 남겨주세요. 연관관계 양방향에 값을 입력해주는 부분에 대해서 이해한 것 같습니다. 아직 1차 캐시에만 존재하고 영속성 엔티티에 반영이 되지 않았기 때문에 객체로는 조회가 되지 않는 것으로 이해했습니다. 다만 궁금한 점이 기본키 전략을 auto_increment 같은 방식으로 한 경우에는 미리 한번 쿼리가 나간다고 이전 강의에서 배운 것이 생각났습니다. 강의에서도 기본키 전략은 동일한 것 같습니다. 기본키 전략 때문에 나간 쿼리가 반영이 안되는 이유가 따로 있을가요?
-
미해결
채팅에 대해서 질문이 있습니다. ㅠㅠ
... // WebSocket 연결 및 STOMP 클라이언트 설정 useEffect(() => { const token = sessionStorage.getItem("accessToken"); // 세션에서 액세스 토큰을 가져옴 const socket = new SockJS(`http://localhost:8080/ws/chat`); // WebSocket 연결 const client = Stomp.over(socket); stompClientRef.current = client; // STOMP 연결 client.connect( { Authorization: `Bearer ${token}` }, (frame) => { setConnected(true); console.log("STOMP 연결 성공", frame); // 해당 채팅방에 대한 메시지 구독 client.subscribe(`/exchange/chat.exchange/room.${roomId}`, (msg) => { const receivedMessage = JSON.parse(msg.body); if (receivedMessage.type === "PLACE") { const place = JSON.parse(receivedMessage.message); setMessages((prev) => [...prev, { type: "PLACE", place }]); } else { setMessages((prev) => [...prev, receivedMessage]); } }); }, (error) => { console.error("STOMP 연결 실패:", error); alert("STOMP 연결 실패! 서버가 실행 중인지 확인하세요."); } ); // 채팅방 목록 가져오기 fetch(`${BASE_URL}/chat/rooms`, { headers: { Authorization: `Bearer ${token}`, }, }) .then((res) => res.json()) .then((data) => setChatRooms(data)) .catch((error) => console.error("채팅방 목록 가져오기 실패:", error)); return () => { if (client.connected) client.disconnect(); }; }, [roomId]); // 메시지 보내는 기능 const sendMessage = (message, type = "TALK") => { const token = localStorage.getItem("accessToken"); stompClientRef.current?.send( `/pub/chat.message.${roomId}`, { Authorization: `Bearer ${token}` }, JSON.stringify({ sender: currentUser, message, roomId, type, timestamp: new Date().toISOString(), }) ); if (type === "TALK") setNewMessage(""); }; ...리액트는 다음과 같이 구성하고 @Controller @RequiredArgsConstructor @Log4j2 public class ChatController implements ChatControllerDocs { private static final String CHAT_EXCHANGE_NAME = "chat.exchange"; private final static String CHAT_QUEUE_NAME = "chat.queue"; private final ChatService chatService; private final RabbitTemplate rabbitTemplate; @Override // 클라이언트에서 서버로 보낸 메시지를 메시지를 라우팅 // @MessageMapping("chat.message")로 설정하여 클라이언트로부터 /pub/chat.message 목적지로 전송된 STOMP 메시지를 처리한다. /*RabbitMQ*/ @MessageMapping("chat.message.{roomId}") /*STOMP*/ // @MessageMapping("/{roomId}") // 구독한 클라이언트에게 response를 제공할 url 정의 // @SendTo("/topic/{roomId}") public ResponseEntity<?> sendMessage( // @Payload: 메시지의 body를 정의한 객체에 매핑합니다. @Payload ChatMessageDTO message, // @DestinationVariable: 구독 및 메시징의 동적 url 변수를 설정. RestAPI의 @PathValue와 같다. @DestinationVariable int roomId) { try { ChatMessageDTO msg = chatService.sendMessage(message); log.info("Sent message: {}", msg); if (msg != null) { // RabbitMQ으로 메시지 전송 // template.convertAndSend() 메소드를 사용하여 메시지를 RabbitMQ로 전송한다. // 메시지는 chat.exchange로 전송되며, 라우팅 키는 room. + 메시지의 방 ID로 구성된다. rabbitTemplate.convertAndSend(CHAT_EXCHANGE_NAME, "room." + roomId, message); } else { log.error("Failed to create chat message. User might not be in the chat room. User: {}, Room: {}", message.getSender(), message.getRoomId()); } return ResponseEntity.ok().body(msg); } catch (Exception e) { log.error("Error processing message: ", e); throw new ChatException(e.getMessage()); } } @Configuration @EnableRabbit @RequiredArgsConstructor public class RabbitConfig { // Queue (큐): RabbitMQ에서 메시지를 저장하는 장소 private static final String CHAT_QUEUE_NAME = "chat.queue"; // Exchange (교환기): 메시지를 Queue로 라우팅(보내는) 역할 private static final String CHAT_EXCHANGE_NAME = "chat.exchange"; // Routing Key (라우팅 키): Exchange가 메시지를 어떤 Queue로 보낼지를 결정하는 데 사용 private static final String ROUTING_KEY = "room.*"; @Value("${spring.rabbitmq.host}") private String host; @Value("${spring.rabbitmq.port}") private int port; @Value("${spring.rabbitmq.username}") private String userName; @Value("${spring.rabbitmq.password}") private String password; // Queue 등록 @Bean public Queue queue() { return new Queue(CHAT_QUEUE_NAME, true); } // Exchange 등록 @Bean public TopicExchange exchange() { return new TopicExchange(CHAT_EXCHANGE_NAME); } // Exchange와 Queue바인딩 @Bean public Binding binding(Queue queue, TopicExchange exchange) { return BindingBuilder .bind(queue) .to(exchange) .with(ROUTING_KEY); } // RabbitMQ와의 메시지 통신을 담당하는 클래스 @Bean public RabbitTemplate rabbitTemplate() { RabbitTemplate rabbitTemplate = new RabbitTemplate(connectionFactory()); rabbitTemplate.setMessageConverter(jsonMessageConverter()); rabbitTemplate.setRoutingKey(ROUTING_KEY); return rabbitTemplate; } // RabbitMQ와의 연결을 관리하는 클래스 @Bean public ConnectionFactory connectionFactory() { CachingConnectionFactory factory = new CachingConnectionFactory(); factory.setHost(host); factory.setPort(port); factory.setVirtualHost("/"); factory.setUsername(userName); factory.setPassword(password); return factory; } // Queue를 구독(Subscribe)하는 걸 어떻게 처리하느냐에 따라 필요함. 당장은 없어도 됨. @Bean public SimpleRabbitListenerContainerFactory simpleRabbitListenerContainerFactory(ConnectionFactory connectionFactory, MessageConverter messageConverter) { SimpleRabbitListenerContainerFactory factory = new SimpleRabbitListenerContainerFactory(); factory.setConnectionFactory(connectionFactory); factory.setMessageConverter(messageConverter); return factory; } @Bean public RabbitMessagingTemplate rabbitMessagingTemplate(RabbitTemplate rabbitTemplate) { return new RabbitMessagingTemplate(rabbitTemplate); } // 메시지를 JSON형식으로 직렬화하고 역직렬화하는데 사용되는 변환기 // RabbitMQ 메시지를 JSON형식으로 보내고 받을 수 있음 @Bean public Jackson2JsonMessageConverter jsonMessageConverter() { //LocalDateTime serializable을 위해 ObjectMapper objectMapper = new ObjectMapper(); objectMapper.configure(SerializationFeature.WRITE_DATES_AS_TIMESTAMPS, true); objectMapper.registerModule(dateTimeModule()); Jackson2JsonMessageConverter converter = new Jackson2JsonMessageConverter(objectMapper); return converter; } @Bean public Module dateTimeModule() { return new JavaTimeModule(); } }... @Override public void registerStompEndpoints(StompEndpointRegistry registry) { registry .setErrorHandler(stompExceptionHandler) // 소켓 연결 URI다. 소켓을 연결할 때 다음과 같은 통신이 이루어짐 .addEndpoint("/ws/chat") .setAllowedOriginPatterns("http://localhost:5173") // SocketJS를 통해 연결 지원 .withSockJS(); } @Override public void configureClientInboundChannel(ChannelRegistration registration) { log.info("--------------"); log.info("동작함"); registration.interceptors(stompHandler); } @Override public void configureMessageBroker(MessageBrokerRegistry registry) { // url을 chat/room/3 -> chat.room.3으로 참조하기 위한 설정 registry.setPathMatcher(new AntPathMatcher(".")); registry.setUserDestinationPrefix("/sub"); // 클라이언트 구독 경로 // RabbitMQ 브로커 리레이 설정 registry.enableStompBrokerRelay("/exchange", "/queue", "/topic") .setRelayHost(host) .setRelayPort(61613) .setClientLogin(userName) .setSystemPasscode(password) .setSystemLogin(userName) .setSystemPasscode(password); } ... }이렇게 구성했는데 rabbitMQ는 도커 컴포즈로 구성했습니다.근데 다음과 같은 문제가 발생했는데Chat.jsx:31 GET http://localhost:8080/ws/chat/285/4mxcvol4/jsonp?c=_jp.apvvzrr net::ERR_ABORTED 404 (Not Found)chat:1 Refused to execute script from 'http://localhost:8080/ws/chat/285/4mxcvol4/jsonp?c=_jp.apvvzrr' because its MIME type ('') is not executable, and strict MIME type checking is enabled.이렇게 계속해서 연결이 끊깁니다 어떻게 해야하나요?
-
해결됨10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
왜 당연히 n=8일때 아래 가지가 2개씩 늘어나나요?
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요. 강의 1주차 개념 #5-2의 1분 59초 안녕하세요 큰돌님 n=4일때는 그냥 2n-1으로 7번 반복됨을 아는데 왜 당연하게 n=8일때는 아래 8개가 늘어나는지가 궁금합니다. 물론 직접 해보면 저렇게 되는것을 알고 있긴한데 어떤 이유에서 저렇게 당연하게 말씀하신게 궁금합니다.
-
미해결
할인이벤트 관련 질문
친절한 블렌더 시리즈를 구매하려고 했는데오전까지 할인 프로모션을 했던가 같은데 경제 하려고 보니 지금은 할인 적용이 안되네요. 어제까지였는데 제가 착각한건가요?막상 하려고 마음먹었는데 갑자기 금약이 올라있으니 쉽사리 결제가 안되네요ㅠ혹시 다음 프로모션 계획이나 할인 쿠폰을 구할 수 있는 방법등이 없을까요?답변 부탁드립니다ㅡ
-
미해결피그마 배리어블을 활용한 디자인 시스템 구축하기
NavBar 인스턴스 컴포넌트 셀렉티드 불린 프로퍼티 ON/OFF 시 아이콘 컬러 변경
강의처럼 NavBar 인스턴스 컴포넌트에서 Selected 불린 프로퍼티를 끄고 켬에 따라 컬러의 변경을 주고싶은데 아이콘 인스턴스 스왑한 아이콘들은 컬러가 안바뀝니다ㅠ디자인 패널에서 NavBarItems-1은 셀렉트에 따라 바뀌는데 2번같이 아이콘을 Person 아이콘으로 스왑한 아이콘에 대해선 셀렉트 상태에도 컬러가 변하지 않는데요, 원래 이런건가요?
-
미해결워드프레스(WordPress) 완전정복
블로그 페이지 게시물 페이지 오류
선생님 강의 잘 듣고 있습니다. 수업 중 난관에 부딪혀서 질문 남깁니다.문제 1현재 content.php 에서 커스텀 쿼리를 생성 후 posts_per_page => 6 의 값을 넣고 난 후/blog/page/6/ 에서부터 404 오류 페이지로 이동 됩니다.(1, 2, 3, 4, 5 페이지까지는 페이지가 나오는데 6, 7 을 404 페이지를 보여줍니다.)구글링 해본 결과 : 1. 워드프레스 탭에서 설정 고유주소 변경 : 실패2. 설정 -> 읽기 페이지당 보여줄 글의 수 를 posts_per_page과 동일하게 6으로 맞춤 -> 모든 페이지(blog/page) 완벽하게 작동됨, 하지만 프론트 페이지에 front-latest posts도 6으로 나옴: 실패 <?php // $paged = get_query_var('paged') ? get_query_var('paged') : 1; $commonQuery = new WP_Query(array( 'post_type' => 'post', 'posts_per_page' => 3, 'category__not_in' => array(32), 'paged' => get_query_var('paged', 1) )); 문제 2 : 블로그 페이지 topBanner는 타이틀 및 서브 타이틀이 text-align이 수정되지 않음(다른 페이지는 작동)그리고 블로그 페이지의 title이 블로그 게시물의 text-align에 따라 같이 움직임 (최근 블로그 게시물의 텍스트 얼라인을 왼쪽으로 작성하면 블로그 페이지의 타이틀도 왼쪽으로 이동됨)
-
해결됨피그마 배리어블을 활용한 디자인 시스템 구축하기
navbar 인스턴스 selected on/off
강의처럼 NavBar 인스턴스 컴포넌트에서 Selected 불린 프로퍼티를 끄고 켬에 따라 컬러의 변경을 주고싶은데 아이콘 인스턴스 스왑한 아이콘들은 컬러가 안바뀝니다ㅠ디자인 패널에서 NavBarItems-1은 셀렉트에 따라 바뀌는데 2번같이 아이콘을 Person 아이콘으로 스왑한 아이콘에 대해선 셀렉트 상태에도 컬러가 변하지 않는데요, 원래 이런건가요?
-
미해결스프링 DB 2편 - 데이터 접근 활용 기술
물리 트랜잭션과 논리 트랙잭션
=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오) 예2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 예3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) 예[질문 내용]물리 트랜잭션과 논리 트랜잭션 중 물리 트랜잭션 만이 데이터베이스에 직접 커밋과 롤백 같은 영향력을 행사할 수 있음을 이해했습니다.그렇다면 만약 아래와 같은 코드가 존재할 때, 트랜잭션 동작 방식에 대해서 제가 이해한 것이 맞는 지 질문 드리고 싶습니다.// AuthPacade 클래스의 메서드 public void withdraw(final long userId, final String code) { User user = userFinder.getUser(userId); externalService.revoke(user.getPlatform(), code, user.getSerialId()); authService.deleteUser(user); }위의 코드는 userFinder.getUser() 메서드에서 @Transactional 이 걸려있고 authService.deleteUser() 메서드에서 @Transactional 이 걸려있는 상태입니다. 두 함수 모두 외부 호출이며 externalService.revoke 역시 외부 호출이지만 @Transactional이 적용되지 않는 상태입니다.그렇다면 이 경우에는 userFinder.getUser() 을 실행할 때, 하나의 물리 트랜잭션이 실행되어 종료(커밋)된 후 revoke()를 수행한 후에 다시 authService.deleteUser() 를 실행하면서 또 다른 물리 트랜잭션이 실행되는 것으로 저는 이해했습니다.즉, externalService.revoke() 메서드를 호출할 때는 트랜잭션이 적용되지 않고 그 외의 다른 2개의 메서드에는 서로 다른 물리 트랜잭션이 적용되는게 맞는지 궁금합니다!!공부를 해보니 외부 네트워크와 통신하는 것은 트랜잭션 범위에서 제거하는 것이 좋다는 것을 깨달아서 배운 바를 토대로 개인 프로젝트에 적용해보는 중인데, 맞는 지 궁금합니다.. 특히, 실무에서는 어떤 방식으로 처리하는 지도 함께 궁금합니다!감사합니다:)
-
미해결독하게 C를 배운 사람을 위한 선형 자료구조
예제는 어디서 다운로드 받을 수 있나요?
안녕하세요 강사님, 현제 자료구조 강의를 수강하고 있습니다. 동영상에서 예제에 대해서 설명하시는데, 혹시 예제 코드는 어디서 다운받을 수 있을까요?
-
미해결자바와 스프링 부트로 생애 최초 서버 만들기, 누구나 쉽게 개발부터 배포까지! [서버 개발 올인원 패키지]
H2 콘솔에 접속했을 때 테이블
강의따라서 H2접속하면 자동으로 BOOK, FRUIT, PERSON, USER, USER_LOAN_HISTORY 테이블이 있는데 어떻게 자동으로 만들어져 있는 건가요.?? mysql에서 테이블 만들었는데 h2는 mysql과 다른거 아닌가요..? 기존의 자바 entity 코드를 다 읽어서 얘네가 알고있는건가요???ps. 강의 너무 잘듣고 있습니다! 이때까지 완강해본 강의가 손에꼽는데 완강을 앞두고 있어서 너무 설레는 맘입니다..! 좋은 강의 만들어주셔서 감사합니다.