묻고 답해요
131만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결실전! 스프링부트 상품-주문 API 개발로 알아보는 TDD
POJO로 개발했는데 비즈니스 로직을 로깅해야 할 경우, 어떻게 해야 할까요?
강의 잘 듣고 있습니다! 강의 들으면서 문득 궁금한 점이 생겼는데요. POJO로 개발했는데, 도메인 클래스 내의 비즈니스 로직을 로깅을 해야하는 경우가 실무에서 많을까요? 만약, 그런 경우가 있다면, 어떻게 해야 할지 궁금합니다. 공통된 패턴이 있다면, AOP를 사용해볼 수 있을 것 같은데, 그렇지 않은 경우, 어쩔 수 없이 도메인 모델이 로깅 프레임워크에 의존하지 않나 라는 생각이 들어서요. 로깅하고 싶은게 클래스의 메서드의 매개변수와 리턴값이 아닌 내부 로직 함수일 경우가 특히 궁금합니다. 혹시, 이런 경우는 실무에서 잘 발생하지 않아 알 필요가 없을까요?
-
미해결[합격99%] A-F 유형 웹디자인기능사 실기 (2024년) + 1:1 과외
A-3 유형 코드
header nav li .lnb{position: absolute; width: 200px; background: #000; height: 0; overflow: hidden; transition: .3s; z-index: 5;} 안녕하세요? 선생님. 다름이 아니오라 실습하면서 A-3 유형 코드에 z-index 속성이 빠져 있어서 제가 추가 해보니 슬라이드 위로 메뉴가 보입니다. 확인 부탁 드립니다.
-
미해결코드로 배우는 React with 스프링부트 API서버
섹션3 목록처리(2) - 동일페이지 클릭 처리 부분에서 오류가 나서 문의드립니다.
import React from "react"; // 게시판 아래 페이징 처리 1페이지 2페이지 3페이지 <<prev page, next page>> function PageComponent({serverData, movePage}) { //serverData.prev, pageNumList, next return ( <div className='m-6 flex justify-center'> {/* 이전 데이터가 있다면 이전페이지로 이동할 수 있게끔 만드는 기능*/} {serverData.prev ? <div className='m-2 p-2 w-16 text-center font-bold text-blue-400' onClick={ () => movePage({page:serverData.prevPage} )} > Prev </div> : <></> } {/* 페이징 번호 순서대로 출력 */} {serverData.pageNumList.map(pageNum => <div key={pageNum} className={ `m-2 p-2 w-12 text-center rounded shadow-md text-white ${serverData.current === pageNum? 'bg-grev-500':'bg-blue-400'}`} onClick={ () => movePage( {page:pageNum}) }> {pageNum} </div> )} {/* 마지막 next */} {serverData.next ? <div className='m-2 p-2 w-16 text-center font-bold text-blue-400' onClick={ () => movePage( {page:serverData.nextPage} )}> Next </div> : <></> } </div> ); } export default PageComponent; 이렇게 입력을 똑같이 했는데 Prev </div> : <></> 이쪽 코드에서 아래 에러메세지가 발생을 하는데요 저만 이런건가요 ㅠ 서버쪽은 문제가 아니라고 구글링 해보니까 그러는데 여기서 뭐가 문제인지 도저히 모르겠습니다 ㅠ Uncaught TypeError: Cannot read properties of undefined (reading 'map')
-
해결됨[퇴근후딴짓] 빅데이터 분석기사 실기 (작업형1,2,3)
작업형1 모의고사 풀어보기 (columns명 추출)
작업형1-2s1, s2, s3, s4, s5, s6, 컬럼의 행(row)별 합을 구하고 그 합이 0.1보다 큰 값의 수를 구하시오풀이를 보면 문제에서 요구하는 컬럼명을 아래와 같이 수기로 입력하여 cols에 대입하였는데요.cols = ['s1', 's2', 's3', 's4', 's5', 's6']수기로 입력하지 않고 컬럼명을 추출하는 방법이 있는지 궁금합니다!
-
해결됨
파이참 판다스 오류
안녕하세요 파이참에서 import pandas as pd 를 실행시켰는데 다음과 같은 오류가 뜹니다. Traceback (most recent call last): File "C:\Program Files\JetBrains\PyCharm Community Edition 2023.3.4\plugins\python-ce\helpers\pydev\pydevconsole.py", line 364, in runcode coro = func() ^^^^^^ File "<input>", line 1, in <module> File "C:\Program Files\JetBrains\PyCharm Community Edition 2023.3.4\plugins\python-ce\helpers\pydev\_pydev_bundle\pydev_import_hook.py", line 21, in do_import module = self._system_import(name, args, *kwargs) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ModuleNotFoundError: No module named 'pandas' 다른 프로젝트 파일에서는 import pandas as pd 가 실행이 되는데 왜 여기서는 안 될까요 ㅠㅠ
-
해결됨디자인 시스템 with 피그마
dimmed 컬러 등록
토큰 스튜디오에서 black컬러에 opacity를 준 dimmed 컬러를 등록하고 싶은데 방법을 모르겠습니다 🥹
-
해결됨친절한 블렌더 - [LV.2] 모델링 연습
돌벽 ,가판대 질문드려요
막힌 부분의 시간(예를들면 3:24)과 안 되는 부분과 현상을 자세히 써주셔야 해결이 빠릅니다. 돌벽- 11:34(O) 어레이해서 여기까지는 되는데요밴드 하려고하면 360도 하면 이렇게 나오고 더 작게하면 맨 아래사진처럼 됩니다 뭘 잘못건드린걸까요? 스케일 로테이션은 다 1로 돌렸는데 뭘까요..?ㅠ 셋오리진해서 오리진투 지오메트리로 해뒀습니다 오리진 위치랑 관련이 있을까요? 그리고 가판대 미러했는데 이렇게 한쪽부분이 튀어나옵니다기준점이 잘못된건가요?? 왜 이러는걸까요..?
-
미해결스프링부트 시큐리티 & JWT 강의
특정 url필터 거는 방법 이슈
sign-in 이나 특정 몇개 url의 경우필터를 안타게 진행하고 싶어서 web.ignoreing으로 제외를 했는데 이는 정적인경우에 쓰는 거라고 하더라구요우선 문제는 스웨거에서는 저처릴 하더라도 동작이 제대로 되는데 프론트 단에서 axios전송시 동작이 제대로 안하는 이슈가 있습니다. 위 부분도 이상하고 다른 방법으로 필터를 안타게 하는 방법이 있는지 궁금합니다 @Bean public WebSecurityCustomizer webSecurityCustomizer() { return (web) -> web.ignoring() .requestMatchers(PathRequest.toStaticResources().atCommonLocations()) .requestMatchers("/api/v1/member/sign-in"); }
-
미해결쉬운 모바일 테스트 자동화 시작하기 : Appium Studio
iOS 단말 연결 및 에뮬레이터 실행 방법 문의드립니다.
iOS 단말 연결하는 방법도 Android 와 동일한 방법으로 설정해보면 되는 걸까요?만약 iOS 연결 방식이 다르다면, 어떻게 설정을 하면 될까요??
-
미해결Jenkins를 이용한 CI/CD Pipeline 구축
젠킨스 자바 버전에 대해
젠킨스 서버에 자바버전을 11로 설치하였는데요스프링 서버가 여러개인데, 각각 11, 8 ,17 이런식으로 자바 버전이 바뀌면 젠킨스 서버에서 각 서버를 빌드할때마다 자바버전이 다른데 어떻게 맞춰야할까요ㅠㅠ도커도 안쓴다는 가정에서요..
-
미해결
qwe
asdasdasd
-
미해결Nuxt.js 시작하기
공식홈페이지에 설치방법이 바뀐거같아요
npx nuxi@latest init <project-name>만 남아있고 npm설치방법은 안보이는데말씀주신 방법도 작동은하네요 공식홈페이지에 적힌 방법과 말씀주신방법으로 생성하는게 폴더구조가 완전히 다른데 괜찮은건가요?
-
미해결모던 안드로이드 - Jetpack Compose 입문
Material3로 바뀌면서 강의랑 다른 부분이 초반부터 있는데요.
질문글의 답글 중 "Material3의 실험적인 API"라는 말을 해주셨는데요. 그렇다는 것은 아직 안정적이지 않을 수 있다는 것인데요. 그러면 아직은 Material3를 사용하는 하는 것은 지양하는 것이 좋을까요? 강사님의 개인적인 의견이 궁금합니다.
-
미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
6-J ret-1 관련 질문 드립니다.
큰돌님 안녕하세요? http://boj.kr/bf56f9dfa3334722b3c4d22ac01f67da저는6-J 해당 문제에서ret=60000000004로 설정하고이분탐색에서ret = min(ret, mid);으로 최적의 ret을 찾는 방법을 사용하고 싶은데요,강의의 ret-1이 저는 아직 이해가 안가서 질문 드립니다. Q1. 해설에서는 ret=0;으로 설정하고 이분탐색에서ret=mid;로 min()함수 없이 사용하셨는데 상관 없는건가요? Q2.강의 8:16초 28명과 35명 중에서 35명를 찾는 과정을 먼저 한다고 하셨는데최적의 ret(mid)인 35 찾는건 이해했는데ret-1코드로 인해 (해설 코드 26 line, 또는 강의 7분 54초 부분)28부터 시작하는게 아니라 34(35-1은 34이므로)부터 하는것 아닌가요?이부분 궁금해서 질문 드립니다. 답변 미리 감사합니다.수강자 올림.
-
해결됨자바 ORM 표준 JPA 프로그래밍 - 기본편
준영속 상태로 만들기
[질문 템플릿]1. 예2. 예3. 예[질문 내용]Member member = em.find(Member.class, 150L); member.setName("AAAAA"); em.detach(member); tx.commit();이 코드에서 setName에서 영속성 컨텍스트에 있는 member에 수정이 발생했고, 이를 스냅샷과 비교하여 dirty checking을 합니다. UPDATE 쿼리는 쓰기 지연 SQL 저장소에 저장됩니다.위 과정이 모두 끝난 이후에 detach를 하더라도 UPDATE 쿼리는 쓰기 지연 SQL 저장소에 있을텐데, UPDATE 쿼리가 나가지 않는 이유는 flush할 때 영속성 컨텍스트에서 관리하는 엔티티가 아닌데 생성된 쿼리는 거르고 DB로 날리는 메커니즘으로 작동하는 건가요?
-
미해결피그마 배리어블을 활용한 디자인 시스템 구축하기
Color scoping 적용이 안되어 문의드립니다!
안녕하세요! 선생님색상 배리어블 등록하기 강의를 보며 실습하는 중입니다.Color scoping 적용이 안되어 문의드립니다!첨부 이미지 처럼 text에서는 Text, bg에서는 bg 만 체크, border, icon 각각 해당 항목만 체크하였습니다!이후 텍스트를 작성하고 등록한 배리어블 컬러를 적용해보니, 체크한 Text 외에 bg, border, icon 컬러가 모두 보이는 문제가 있습니다!Text에 적용할 때는 Text 컬러만 보여야 하는데요~ 1)번 설정 시, 추가로 더 체크해야될 부분이 있는 걸까요?도움 부탁 드립니다! 1) 2) 좋은 강의 감사드립니다!!
-
해결됨네이버(치지직)에서 대용량 채팅 TPS 처리를 위한 웹소켓 통신에 대해 알아보고 학습하기
채팅이 2번씩 전송되는 현상 질문
안녕하세요 go 서버 구축 이후 프론트 연결하여 채팅을 전송하면 같은 메시지가 두 번씩 전송되는 현상이 발생합니다.강의를 여러 번 체크하면서 봤는데 소스 코드가 다른 점은 찾지 못했습니다. 제가 작성한 socket.go 코드인데 어떤 부분이 문제가 있을까요package network import ( "chat_server_golang/types" "log" "net/http" "time" "github.com/gin-gonic/gin" "github.com/gorilla/websocket" ) var upgrader = &websocket.Upgrader{ReadBufferSize: types.SocketBufferSize, WriteBufferSize: types.MessageBufferSize, CheckOrigin: func(r *http.Request) bool {return true}, } // http 요청을 websocket 통신으로 업그레이드 해준다. type message struct { Name string Message string Time int64 } type Room struct { Forward chan *message Join chan *client Leave chan *client Clients map[*client]bool } type client struct { Send chan *message Room *Room Name string Socket *websocket.Conn } func NewRoom() *Room { return &Room { Forward: make(chan *message), Join: make(chan *client), Leave: make(chan *client), Clients: make(map[*client]bool), } } func (c *client) Read() { // 클라이언트가 들어오는 멧세지를 읽는 작업 defer c.Socket.Close() for { var msg message err := c.Socket.ReadJSON(&msg) if err != nil { if websocket.IsUnexpectedCloseError(err, websocket.CloseGoingAway) { break } panic(err) } else { log.Println("READ : ", msg, "client", c.Name) log.Println() msg.Time = time.Now().Unix() msg.Name = c.Name c.Room.Forward <- &msg } msg.Name = c.Name c.Room.Forward <- &msg } } func (c *client) Write() { // 클라이언트가 나가는 메시지를 전송하는 작업 defer c.Socket.Close() for msg := range c.Send { log.Println("WRITE : ", msg, "client", c.Name) log.Println() err := c.Socket.WriteJSON(msg) if err != nil { panic(err) } } } func (r *Room) RunInit() { // room 에 있는 모든 채널 값을 받는 작업 // join leave 등의 메시지 큐를 처리, 무한반복문을 돌면서 처리 for { log.Println(r.Clients) log.Println(r.Forward) select { case client := <-r.Join: r.Clients[client] = true case client := <-r.Leave: r.Clients[client] = false close(client.Send) delete(r.Clients, client) case msg := <-r.Forward: for client := range r.Clients { client.Send <- msg } } } } func (r *Room) SocketServe(c *gin.Context) { socket, err := upgrader.Upgrade(c.Writer, c.Request, nil) if err != nil { panic(err) } userCookie, err := c.Request.Cookie("auth") if err != nil { panic(err) } log.Println("userCookie", userCookie) client := &client{ Socket: socket, Send: make(chan *message, types.MessageBufferSize), Room: r, Name: userCookie.Value, } r.Join <- client // 채팅방에 클라이언트가 들어왔다고 알림 defer func() { r.Leave <- client }() // 클라이언트가 나갔다고 알림, 클라이언트가 나가면서 defer 함수가 실행된다. go client.Write() client.Read() }2024/05/20 01:39:17 userCookie auth=one 2024/05/20 01:39:17 map[0x14000512600:true] 2024/05/20 01:39:17 0x14000192600 2024/05/20 01:39:21 READ : { hi 0} client one 2024/05/20 01:39:21 2024/05/20 01:39:21 map[0x14000512600:true] 2024/05/20 01:39:21 0x14000192600 2024/05/20 01:39:21 map[0x14000512600:true] 2024/05/20 01:39:21 0x14000192600 2024/05/20 01:39:21 WRITE : &{one hi 1716136761} client one 2024/05/20 01:39:21 2024/05/20 01:39:21 WRITE : &{one hi 1716136761} client one 2024/05/20 01:39:21
-
미해결Next + React Query로 SNS 서비스 만들기
로그인 모달창 새로고침 시 배경 메인 페이지 사라지는 현상
로그인 버튼을 클릭하면 우선 '/login' 주소로 이동했다가 'i/flow/login'으로 이동하기 때문에 이때 '/login'에서 배경이 메인 컴포넌트를 보여줘야 메인 페이지가 바탕이 되고로그인 모달 창을 띄운다는 점은 이해했습니다.따라서 app/(beforeLogin)/login/page.tsx 에서 Main 컴포넌트를 보여주도록 했습니다.export default function Login() { const router = useRouter(); router.replace("/i/flow/login"); return <Main />; } 문제는 '/i/flow/login' 에서 새로고침하면 모달 창은 그대로지만 배경은 메인 페이지가 아닙니다. 이때 아래와 코드와 같이 따로 Main 컴포넌트를 불러오면 새로고침 시, 배경은 메인 페이지로 잘 나옵니다.그런데 강의와 깃허브 코드를 보니 LoginModal 컴포넌트만 보여주고 있습니다.LoginModal 컴포넌트만 있어도 app/(beforeLogin)/page.tsx에서 Main 컴포넌트를 보여주고 있으므로app/(beforeLogin)/layout.tsx에서 Main 컴포넌트가 {children}에 할당된다고 생각했습니다.따라서 아래 코드에서 Main 컴포넌트가 없어도 배경은 메인 페이지가 나온다고 생각했습니다. 아래 코드와 같이 Main 컴포넌트가 있으면 새로고침 시, 메인 페이지가 배경이 되고 그 위에 로그인 모달창이띄워지지만 Main 컴포넌트가 없으면 새로고침 시, 메인 페이지가 빈 페이지가 나옵니다. 여기서 Main 컴포넌트를 넣어서 해결해도 되는건지 의문이 들었습니다. 아래 코드에서 Main 컴포넌트를 넣지 않으면 Main 페이지가 어떻게 배경으로 보여지는 건지 알고 싶습니다!import LoginModal from "@/app/(beforeLogin)/@modal/(.)i/flow/login/page"; import Main from "@/app/(beforeLogin)/_component/Main"; export default function Page() { return ( <> <LoginModal /> <Main /> </> ); }
-
해결됨[퇴근후딴짓] 빅데이터 분석기사 실기 (작업형1,2,3)
3회 기출유형(작업형2)
RandomForestClassifier 에서pred=r.predict_proba(X_val)[:,1] 로 적혀있는데이전 회차까지는 (X_val)까지로만 공부했는데이번 문제에서는 [:,1]이 추가된 이유가 뭔지 궁금해요!
-
미해결김영한의 자바 입문 - 코드로 시작하는 자바 첫걸음
short, int
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오) 네2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]여기에 질문 내용을 남겨주세요.안녕하세요. 백엔드 개발을 하고 있는 주니어 개발자입니다.질문이 있습니다. short는 2byte이고 int는 4byte면 2byte 이상 4byte 이하 값에 대한 연산은 int보다 short를 사용하는 것이 메모리나 속도 측면에서 적합하지 않나요? 보통 int를 사용하는건 굳이 short를 사용할만한 메리트가 없어서 그런걸까요? 구글링 해봤을 땐 자바에서는 연산을 할 때 피연산자를 4byte로 저장하기 때문에 short는 오히려 int형으로 변환 후 연산을 한다고 하던데 정확히 이해하기가 쉽지 않아서요,,, 혹시 답변 가능하시다면 부탁드리겠습니다.. 감사합니다.