묻고 답해요
158만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결[2024 업데이트] UX/UI 시작하기 : Figma 입문 (Inflearn Original)
저만 섹션1의 5번째, 6번째, 7번째 영상이 안보이는건가요? @_@
강의가 안나옵니당 @_@? 저만 그런것일까유?
-
미해결데이터 분석 SQL Fundamentals
직원 별 가장 높은 매출
14:38초 예제에서 직원별 개별 상품 매출액, 직원별로 가장 높은 매출 대비 개별 상품 매출 비율 구하기 with temp_01 as( select employee_id ,sum(amount)as sum_by_emp_prod --직원별 개별 상품 매출액 -- ,max (amount) as max_emp --직원 별 가장 높은 매출 from orders a join order_items b on a.order_id=b.order_id group by employee_id )select sum_by_emp_prod,sum_by_emp_prod/max(sum_by_emp_prod)over(partition by employee_id) from temp_01; group by할때 왜 product_id도 group by하나요? 직원별 개별 상품인데 employee_id와 그룹바이 하면 되는거 아닌가여 ? 직원별로 가장 높은 매출을 max(sum_by_emp_prod)over(partition by employee_id) 이렇게 구하셧는데 with절에서 group by로 해서 with temp_01 as( select employee_id ,sum(amount)as sum_by_emp_prod --직원별 개별 상품 매출액 ,max (amount) as max_emp --직원 별 가장 높은 매출 from orders a join order_items b on a.order_id=b.order_id group by employee_id ) 이렇게 구하면 안되나여?
-
미해결[리뉴얼] 파이썬입문과 크롤링기초 부트캠프 [파이썬, 웹, 데이터 이해 기본까지] (업데이트)
주피터 노트북 관련해서 궁금한게 있습니다!
안녕하세요.주피터 노트북을 다운받았는데 강사님 인터페이스에서는 In []이렇게 나오는데 저는 In이 나오지 않아서요..혹시 제가 잘못 설치한건가 싶어서 여쭤봅니다
-
미해결처음하는 플러터(Flutter) 기초부터 실전까지 [풀스택 Part4] (쉽고 견고하게 단계별로 다양한 프로젝트까지)
강의할때 쓰이는 문서는 어디서 확인할 수 있나욧?
강의에서 쓰이는 문서는 어디서 받아볼 수 있나요?강의해서 쓰이는 파일이 아래와 같은 이름으로 되어 있는 것 같은데요~05_BASIC_WIDGETS.md- 강의 영상에 대한 질문이 있으시면, 주말/휴일 제외, 2~3일 내에 답변드립니다 - 강의 답변이 도움이 안되셨다면, dream@fun-coding.org 로 메일 주시면 재검토하겠습니다.- 괜찮으시면 질문전에 챗GPT 와 구글 검색을 꼭 활용해보세요~
-
해결됨김영한의 실전 자바 - 고급 2편, I/O, 네트워크, 리플렉션
채팅 프로그램 구현완료 이후, 보완해야할거
[질문 내용]안녕하세요, 영한님 강의 잘 이용하고있습니다. 감사합니다.다름이아니라, 이번에 채팅프로그램을 구현하고나서 구현한 기능들에 대해서 보완할게 있는지 여쭤보고싶어서 글 남깁니다. 전체코드는 아래와 같습니다. ==================우선 구현한기능들은 잘 작동합니다./ 유저리스트 / 가입 / 메세지전송 / 메세지리드 / 제가 느끼기에는, 서버파일쪽에서 가독성이 크게 떨어지는거같은데 -> if / else / try / catch ... 때문에 ... 질문은 가독성 관련입니다.가독성? --> if / else if 쪽을 어떻게 보완해야 가독성이 높아질 수 있을까요? ( 메서드 ? ) =================== [ close() 부분쪽은 따로 해결 완료했습니다! ] 서버파일입니다.package chat; import java.io.DataInputStream; import java.io.DataOutputStream; import java.io.IOException; import java.net.ServerSocket; import java.net.Socket; import java.util.ArrayList; import java.util.List; import static util.MyLogger.log; public class Server { public static final int SERVER_PORT = 12345; public static void main(String[] args) throws IOException { log("서버를 시작합니다. 포트 번호 : " + SERVER_PORT); ServerSocket serverSocket = new ServerSocket(SERVER_PORT); Thread acceptAndChat = new Thread(new AcceptThread(serverSocket)); acceptAndChat.start(); } static class AcceptThread implements Runnable{ public ServerSocket serverSocket; public AcceptThread(ServerSocket serverSocket) { this.serverSocket = serverSocket; } @Override public void run() { Socket socket = null; DataInputStream input = null; DataOutputStream output = null; while ( true ){ try { socket = serverSocket.accept(); Sockets.addSocket(socket); input = new DataInputStream(socket.getInputStream()); output = new DataOutputStream(socket.getOutputStream()); Thread chatThread = new Thread(new ChatThread(socket, input, output)); // 채팅관련 로직을 진행하는 스레드입니다. chatThread.start(); } catch (IOException e) { log("서버 연결 도중에 문제가 발생했습니다 : " + e.getMessage() + " 프로그램을 종료합니다."); try { output.close(); input.close(); socket.close(); serverSocket.close(); } catch (IOException ee) { log("자원정리도중 에러발생 : " + ee.getMessage()); } } } } } static class ChatThread implements Runnable{ public Socket socket; public DataInputStream input; public DataOutputStream output; public ChatThread(Socket socket, DataInputStream input, DataOutputStream output) { this.socket = socket; this.input = input; this.output = output; } @Override public void run() { String currentThreadName; List<String> threadsNames = new ArrayList<>(); boolean isFirst; while ( true ) { String received = ""; try { received = input.readUTF(); } catch (IOException e) { if ( e.equals("Connection reset") ){ log("사용자가 연결을 종료했습니다. 해당 사용자의 세션을 삭제합니다."); Sockets.removeSocket(socket); break; } log("클라이언트로부터 전송된 메세지를 받는도중, 에러가 발생했습니다 : " + e.getMessage()); break; } if ( received.equals("exit") ){ log("프로그램 종료 - 유저 요청"); break; } else if ( received.equals("list") ){ List<String> userNames = Users.getUserNames(); log("사용자가 목록 조회를 했습니다."); try { output.writeUTF(String.valueOf(userNames)); } catch (IOException e) { log("사용자 목록을 유저에게 보내는도중, 에러가 발생했습니다"); } } else { // 유저가 처음 채팅방에 입장했을때, 유저 닉네임을 참여자목록에 넣어주는 과정입니다. currentThreadName = Thread.currentThread().getName(); isFirst = threadsNames.contains(currentThreadName); if ( !isFirst ){ log("사용자 : " + received + " 님이 채팅방에 입장했습니다."); Users.addUserName(received); log("유저를 추가했습니다."); threadsNames.add(currentThreadName); System.out.println(threadsNames); log("스레드를 추가했습니다."); } // 유저가 입장하고나서, 메세지를 전송하면 서버가 메세지를 받아서 메세지를 Sockets 에 있는 Socket 들에 전송하는 과정입니다. else { log("클라이언트로부터 메세지가 도착했습니다 : " + received); // 메세지를 Sockets 에 있는 Socket 들에 전송 try { Sockets.sendMessage(received); } catch (IOException e) { log("서버에서 클라이언트로 메세지를 전송하는 도중, 에러 발생 : " + e.getMessage()); } } log("테스트"); } } } } } 클라이언트 파일입니다.package chat; import java.io.DataInputStream; import java.io.DataOutputStream; import java.io.IOException; import java.net.Socket; import java.util.Scanner; import static chat.Server.SERVER_PORT; import static util.MyLogger.log; public class Client { public static void main(String[] args) throws IOException, InterruptedException { Socket socket = new Socket("localhost", SERVER_PORT); // 서버와 연결 DataOutputStream output = new DataOutputStream(socket.getOutputStream()); DataInputStream input = new DataInputStream(socket.getInputStream()); Scanner scanner = new Scanner(System.in); System.out.print("/join 을 입력해서 채팅방에 입장하세요 :"); String toJoin = scanner.nextLine(); if ( !toJoin.equals("/join") ){ System.out.println("명령어를 정확하게 입력해주세요. 재시작합니다."); } else { System.out.print("채팅방에서 사용할 닉네임을 입력해주세요 : "); String userName = scanner.nextLine(); // 닉네임입력 -> 채팅방 입장 // 닉네임 -> 서버에 전송 -> 서버가 유저모음집에 유저닉네임을 넣어줌 log(userName + " 채팅방에 입장했습니다."); output.writeUTF(userName); Thread sendThread = new Thread(() -> { while ( true ){ System.out.print("전송할 메세지를 입력해주세요 ( 종료 : exit ) : "); String toSend = scanner.nextLine(); if (toSend.equals("exit")) { System.out.println("프로그램을 종료합니다."); return; } try { output.writeUTF(toSend); // 전송할 메세지를 서버에 전송 } catch (IOException e) { log("메세지 전송도중 에러발생"); } } }); Thread receiveThread = new Thread(() -> { while ( true ) { String received = null; try { received = input.readUTF(); } catch (IOException e) { log("메세지를 읽는도중 에러발생 : " + e.getMessage()); } log("메세지가 도착했습니다 : " + received); } }); sendThread.start(); receiveThread.start(); sendThread.join(); receiveThread.join(); } // 채팅 프로그램을 종료했으니, 자원을 정리하고 종료합니다. log("채팅 프로그램 종료, 자원을 정리하고 종료합니다."); input.close(); output.close(); socket.close(); } } ======= 아래 두개는 서버 / 클라이언트 파일이아닌 도움을 주는 파일입니다.서버와 클라이언트간에 소켓이 연결되고나서, 클라이언트 정보들이 담겨져있는 소켓들을 저장하는 공간입니다. package chat; import java.io.DataOutputStream; import java.io.IOException; import java.net.Socket; import java.util.HashMap; import java.util.Map; public class Sockets { private static Map<Socket, Boolean> sockets = new HashMap<>(); public static void addSocket(Socket socket){ sockets.put(socket, true); } public static void sendMessage(String message) throws IOException { for (Socket socket : sockets.keySet()) { DataOutputStream output = new DataOutputStream(socket.getOutputStream()); output.writeUTF(message); } } public static void removeSocket(Socket socket){ sockets.remove(socket); } public static Boolean getValue(Socket socket) { return sockets.get(socket); } public static boolean changeValue(Socket socket){ return sockets.get(socket); } } 채팅방에 접속한 유저들을 모아놓은 공간입니다.package chat; import java.util.ArrayList; import java.util.List; public class Users { private static List<String> userNames = new ArrayList<>(); public static void addUserName(String userName){ userNames.add(userName); } public static List<String> getUserNames() { return userNames; } }
-
미해결OpenCV 강좌 - 컴퓨터 비전
안녕하세요 맥 cuda 관련해서 질문 올립니다.
안녕하세요 opencv 필요성을 느껴 찾게 되었습니다.제가 맥북프로 사용하고 있는데 cuda 설치가 안 되는데 설치 안해도 괜찮을까요??
-
해결됨한 번에 끝내는 자바스크립트: 바닐라 자바스크립트로 SPA 개발까지
API 관련 질문
안녕하세요 !해당 강의를 듣고 기능은 비슷한데 내용은 조금 다른 홈페이지를 제작해보고 싶어져서 질문 드립니다 !API를 호출하는 기능은 이해했는데, 강사님이 만드신 API 처럼 저도 직접 간단한 정보를 담은 api 를 만들어보고 싶은데 이 부분은 어떻게 제작하는 지 알 수 있을까요?!
-
해결됨한 입 크기로 잘라 먹는 리액트(React.js) : 기초부터 실전까지
API 관련 질문
안녕하세요 ! 해당 리액트 강의에서 했던 실습에서는 기능위주? 로 진행해서 궁금증이 생겼습니다 !만약 리액트를 사용해서 간단한 정보 공유 웹 사이트를 만든다면 텍스트의 양이 많아지는데이런 경우에는 파일 내부에 내용을 작성하면 코드가 길어지니, 직접 api 제작하고, 연동하는 게 맞는 거겠죠!?
-
미해결이득우의 언리얼 프로그래밍 Part4 - 게임플레이 어빌리티 시스템
NPC HpBar 설정
Player HpBar는 이상이 없었는데 NPC HpBar를 만들 때 ensure를 그대로 사용하면 null값이 나와서 에러가 나더라구요.Player와 NPC가 생성되는 시점이 다른 게 원인인가요?
-
해결됨김영한의 실전 자바 - 고급 2편, I/O, 네트워크, 리플렉션
채팅프로그램 사용자 입력 받기 do-while 사용
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문 전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? 예2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? 예3. 질문 잘하기 메뉴얼을 읽어보셨나요? 예[질문 내용] 단순히 한번 입력 받는 게 아닌 do-while문을 사용하신 이유가 궁금합니다!
-
미해결[코드캠프] 부트캠프에서 만든 고농축 프론트엔드 코스
기존강의 새 강의
새 강의 구매 할인 어떻게 진행하면 되는건가여ㅛ?방법을 몰라서 문의드립니다.,
-
미해결퀀트 투자를 위한 파이썬 트레이딩룸 만들기 - Part 1
MACD & 오실레이터 with EXCEL 강의 데이터 문의
Mt = w * Pt + (1-w) * Mt-1 에서날짜가 과거시점으로 가야하는것 같은데..강의 및 엑셀자료는 미래시점으로 계산된것 같습니다.데이터를 역순으로 바꿔서 계산을 해야 할 것 같은데 확인 부탁드리겠습니다.감사합니다.
-
미해결Three.js로 시작하는 3D 인터랙티브 웹
블렌더 texture paint 시 미러모드
눈을 하나씩 그리고 싶은데 그릴 때 마다 미러모드가 작동하는 것 처럼 그려져요
-
미해결
Repository 상속 받은 자식 Repository의 Method 로깅
안녕하세요. Repository를 상속 받은 자식 Repository의 호출 Method를 로깅하려고 합니다.@Around("execution(* ewkim83.me..repository..*Repository.*(..))") public Object logAroundRepository(ProceedingJoinPoint joinPoint) throws Throwable { var signature = joinPoint.getSignature(); log.info("{}.{}", signature.getDeclaringTypeName(), signature.getName()); return joinPoint.proceed(); } package ewkim83.me.spring.rest.repository; import ewkim83.me.spring.rest.model.entity.Item; import org.springframework.data.repository.CrudRepository; import org.springframework.stereotype.Repository; @Repository public interface ItemRepository extends CrudRepository<Item, String> { }로그에 아래와 같이 출력됩니다.findById 메소드가 부모인 CrudRepository의 것을 사용하기 때문에 아래와 같은 로그를 이해하고 있습니다.org.springframework.data.repository.CrudRepository.findById 그런데 로그 분석을 위해 상속 받은 자식 인터페이스 이름을 로깅하고 싶습니다.CrudRepository를 상속 받은 자식 인터페이스가 무수히 많기 때문에 실제 어디에서 호출된 것인지 확인이 필요합니다.아래와 같이 자식 인터페이스의 이름을 알아낼 방법이 있을까요?ewkim83.me.spring.rest.repository.ItemRepository.findById 감사합니다.
-
미해결3분만에 만드는 깃헙 블로그
메뉴바
메뉴바에 메뉴 추가하는건 잘 나와있어서 잘 했는데 blog처럼 여러개의 글을 올리는 메뉴는 어떻게 만드나요? config.yml?인가 그 파일은 안보여서요
-
미해결ASP.NET Core MVC +ASP.NET Core +REST API +.NET 8.0
EF로 만든 프로젝트를 개발서버에 올리니, 처음 로딩속도가 많이 느리네요.
EF로 생성해서 개발서버에 올려놓았는데, 첫 로딩속도가 많이 느리네요. 개발사이트에 출근해서 접속하거나, IIS의 응용프로그램풀을 재시작후에 접근하면 5~6초 정도 걸립니다.하지만 일단 연결이 되고 나면, 이후에는 1초 이내에 응답이 바로바로 옵니다. 접근도메인이 문제인가 싶어서, IP로 바꾸어도 동일하네요.이런 현상이 나타나는 이유와, 해결 방법을 알고 싶습니다.
-
미해결데이터 분석 SQL Fundamentals
강의순서대로 실습코드순알려주세요.
복습할려는데..실습코드순서를 모르겟어요
-
해결됨Flutter 앱 개발 기초
동기.. 비동기? 쓰는 상황에 대한 추가 질문
강사님 dart에서 비동기를 동기로 다루는 법 강의 7분 20초 쯤에 개발 시 비동기 방식으로 작동하는 상황들로 예시를 "네트워크 요청, 파일읽기쓰기, 데이터베이스 쓰기"를 들어주셨는데 이렇게 시간이 걸리는 일은 async / await 을 써서 동기 방식으로 이용하란 말씀이신거죠?
-
미해결
팀 프로젝트했는데 면접 관련 질문있습니다
제가 국비교육을 들었는데 한달 전쯤에 수료했습니다. 당연히 팀 프로젝트도 진행했는데, 이 팀 프로젝트에서 제가 맡은 파트의 비중, 중요도, 난이도 등등에 걱정되는 부분이 있어서 글작성하게 됐습니다. 이번 국비교육 팀프로젝트에서 역할분담을 하다보니 제가 맡은 부분들이 생각보다 큰 비중을 차지하지않아서(저희 팀은 api를 사용해서 웹소설, 웹툰, 도서 리뷰 플랫폼을 통합적으로 제공하는 웹페이지를 제작했습니다. 그런데도 저는 api를 사용하는 기술도 없고, 감정분석이나 스프링 시큐리티를 사용한 기술도 없습니다.) 제가 구현한 기능들은 공지사항 관련 CRUD나 공지사항 목록의 검색, 정렬 및 페이지네이션 구현과 페이지 간의 이동 정도로 요약할 수 있어, 포트폴리오나 이력서에 제출할 때 조금 부실하지않을까 염려되어 질문드리게 됐습니다.면접때, 이런 프로젝트 내용들로 질문이 들어오고 답변도 해야할텐데, 이럴땐 어떻게 하는게 좋을까요?정말 현실적으로 댓글 달아주시면 감사하겠습니다.
-
미해결[입문자를 위한 UE5] Part4. 언리얼 엔진 C++
Animation Event영상에서 Notify 대신 Received_Notify()사용
Animation Event 강의 영상에서는 Notify()함수를 사용하셨는데, Received_Notify()함수를 사용하고 싶은데 어떻게 해야할까요? 보니까 Received_Notify()는 가상함수가 아니라서 다형성 부여를 못해서 질문합니다.