inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

묻고 답해요

172만명의 커뮤니티!! 함께 토론해봐요.

러스트로 파이썬 패키지 만들기 실습을 해보면 에러가 발생합니다

해결됨

세상에서 제일 쉬운 러스트 프로그래밍

pipenv shell 환경에서 maturin develop 을 하면 아래와 같이 오류가 뜹니다 (pyo3-9vp6XEz5) D:\D\Work\study\Rust\inflean\easy-rust\pyo3>maturin develop 🔗 Found pyo3 bindings 🐍 Found CPython 3.12 at C:\Users\INNO-A-1328\.virtualenvs\pyo3-9vp6XEz5\Scripts\python.exe 📡 Using build options features from pyproject.toml Compiling once_cell v1.20.2 Compiling unindent v0.2.3 Compiling cfg-if v1.0.0 Compiling libc v0.2.169 Compiling pyo3-build-config v0.23.3 Compiling memoffset v0.9.1 Compiling pyo3-ffi v0.23.3 Compiling pyo3-macros-backend v0.23.3 Compiling pyo3 v0.23.3 Compiling pyo3-macros v0.23.3 Compiling fibonacci v0.1.0 (D:\D\Work\study\Rust\inflean\easy-rust\pyo3) error[E0599]: no method named add_function found for reference &pyo3::types::PyModule in the current scope --> src\lib.rs:17:7 | 17 | m.add_function(wrap_pyfunction!(run, m)?)?; | ^^^^^^^^^^^^ method not found in &PyModule error[E0277]: the trait bound &pyo3::types::PyModule: WrapPyFunctionArg<'_, _> is not satisfied --> src\lib.rs:17:42 | 17 | m.add_function(wrap_pyfunction!(run, m)?)?; | ----------------------^- | | | | | the trait WrapPyFunctionArg<'_, _> is not implemented for &pyo3::types::PyModule | required by a bound introduced by this call | = help: the following other types implement trait WrapPyFunctionArg<'py, T> : &pyo3::Borrowed<'_, 'py, pyo3::types::PyModule> &pyo3::Bound<'py, pyo3::types::PyModule> pyo3::Borrowed<'_, 'py, pyo3::types::PyModule> pyo3::Bound<'py, pyo3::types::PyModule> pyo3::Python<'py> error[E0277]: the trait bound &pyo3::types::PyModule: From<BoundRef<'_, '_, pyo3::types::PyModule>> is not satisfied --> src\lib.rs:15:1 | 15 | #[pymodule] | ^^^^^^^^^^^ the trait From<BoundRef<'_, '_, pyo3::types::PyModule>> is not implemented for &pyo3::types::PyModule , which is required by BoundRef<'_, '_, pyo3::types::PyModule>: Into<_> | = note: required for BoundRef<'_, '_, pyo3::types::PyModule> to implement Into<&pyo3::types::PyModule> = note: this error originates in the attribute macro pymodule (in Nightly builds, run with -Z macro-backtrace for more info) Some errors have detailed explanations: E0277, E0599. For more information about an error, try rustc --explain E0277 . error: could not compile fibonacci (lib) due to 3 previous errors 💥 maturin failed #[pymodule] 이하 부분을 주석처리하면 아래 에러는 해결되나 python main.py 실행하면 fibonacci 를 찾을 수 없다는 에러가 발생합니다

  • python
  • rust
seunghun.baek 댓글 1 좋아요 1 조회수 233

코랩으로 수업을 진행해도 괜찮은지 궁금합니다.

미해결

[개정판] 파이썬 머신러닝 완벽 가이드

안녕하세요 강사님! 해당 강의에서 주피터로 코딩을 하는 것 같은데 혹시 주피터노트북 대신 코랩으로 실습을 진행해도 문제 없을까요?

  • python
  • 머신러닝
  • 통계
강하빈 댓글 1 좋아요 0 조회수 184

네이버지식인 gui 추출하기

미해결

[신규 개정판] 이것이 진짜 크롤링이다 - 실전편 (인공지능 수익화)

안녕하세요 맥으로 수강중인 사람입니다. 다름이아니라 네이버지식인gui를 vscode에서 코드 실행 후 저장버튼을 누르면 엑셀파일로 저장이 잘되었는데 실행파일로 만들고 추출한다음 저장버튼을 누르면 저장이 되지않습니다 이유를 알수있을가요? 코드를 다시봐도 문제는 없는데 이유를 못찾겠습니다ㅠㅠ

  • python
  • 웹-크롤링
김정학 댓글 1 좋아요 0 조회수 112

커널(★Python 3.12.8 ~~맞춤 vs Python 3.12.8 ~~ Global Env)이 서로 다른것인가요?

미해결

[신규 개정판] 이것이 진짜 크롤링이다 - 실전편 (인공지능 수익화)

안녕하세요 오늘 네이버지식인GUI.exe를 만드는데 성공하였습니다. 그런데 처음에는 실패했습니다. 그이유는 커널이 이미지에서 위에 것(★Python 3.12.8 ~~~ 맞춤)으로 되어 있었습니다. pip install pyinstaller 해도 설치가 안된것으로 나왔습니다.(pip --version으로 확인) 그런데 아래것(Python 3.12.8 ~~~Global Env) 선택하니 모든것이 잘 되었습니다. [문의사항] 위에것 아래것 모두 버전이 Python3.12.8로 동일한데 이 두개가 서로 다른것인가요? 만약 다르다면 저는 python을 오늘 삭제하고 Python3.12.8을 1번만 설치했습니다. 이렇게 두개가 보이는 이유는 무엇일까요? 감사합니다.

  • python
  • 웹-크롤링
saintchubby 댓글 2 좋아요 0 조회수 173

graphviz download

미해결

[개정판] 파이썬 머신러닝 완벽 가이드

안녕하세요. 현재 graphviz 버전이 12.2.1까지 나와있는데, 이 버전을 다운 받아도 문제 없이 수업 진행이 가능 한 건가요?

  • python
  • 머신러닝
  • 통계
grace 댓글 1 좋아요 0 조회수 103

영속성 전이(CASCADE)에 대하여 궁금한 게 있습니다^_^

미해결

자바 ORM 표준 JPA 프로그래밍 - 기본편

학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요. 1. 강의 내용과 관련된 질문을 남겨주세요. 2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요. (자주 하는 질문 링크: https://bit.ly/3fX6ygx) 3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요. (질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG) 질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요. ========================================= [질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? 비슷한게 있긴합니다. 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예) [질문 내용] 여기에 질문 내용을 남겨주세요. 안녕하세요, 영속성 전이(CASCADE)에 대하여 궁금한 게 있습니다. CASECADE.ALL 사용시 부모Parent(@OneToMnay) -> 자식Child(@ManyToOne) 이런식으로 양방향 관계시 하나의 부모가 자식들을 관리를 할때(소유자가 하나인 경우)는 사용을 해도 괜찮다고 말씀을 주셨는데근데 사용을 하면 안되는 경우를 이제 자식Child 엔터티가 Member 엔티티와 @ManyToOne 관계를 가지게 되는 이런 경우를 말씀 하신걸까요 ㅠㅠ?? 아니면 Child에서 Member로 단방향 관계일때는 상관이 없고 // Case 1: 단방향 @Entity public class Child { @ManyToOne private Parent parent; @ManyToOne private Member member; // 단방향 } // ==================================================================================== // Case 2: 양방향 @Entity public class Child { @ManyToOne private Parent parent; @ManyToOne private Member member; // 양방향 } @Entity public class Member { @OneToMany(mappedBy = "member", cascade = CascadeType.ALL) private List<Child> childList = new ArrayList<>(); } 멤버에서 차일드를 알게된 양방향 관계일때 문제가 생긴다는 걸까요 ?? 다른엔터티랑 CHILD랑 관계가 있다가 어떤 경우인지 이해가 안되서 그렇습니다ㅠ_ㅠ

  • java
  • jpa
한화이글짱짱 댓글 1 좋아요 0 조회수 199

양방향 연관관계 매핑 무한루프

미해결

자바 ORM 표준 JPA 프로그래밍 - 기본편

가급적이면 lombok라이브러리를 쓰지 마라고 하셨는데, @ToString(exclude = "members") 처럼 특정 필드를 제외하는 exclude 써서 무한 순환을 막을 수 있다는 것을 봤는데 이 방법을 실무에서 잘 안쓰나요? 그렇다고 롬복을 안쓰는건 더더욱 비효율적으로 보입니다 예시: @Entity @ToString(exclude = "members") public class Team { ... @OneToMany(mappedBy = "team") private List<MemberTest> members = new ArrayList<>(); ... }

  • java
  • jpa
이응이응 댓글 1 좋아요 0 조회수 119

강의 자료 질문입니다

해결됨

Prompt Engineering: 완벽 가이드

안녕하세요 실습하다 소설 스크립트 넣는 부분 듣는데 혹시 강의 자료에서 PPT 외에 프롬프트 실습 스크립트는 없나요?

  • python
  • 프롬프트엔지니어링
  • llm
코틀린자바 댓글 3 좋아요 0 조회수 211

JOSE 구성요소의 api에 관한 질문

해결됨

스프링 시큐리티 OAuth2

안녕하세요 jwt 강의에서 JOSE 구성요소 api들을 이용해서 토큰을 서명하고 검증을 하는도중에요 궁금한게 저희가 보통 가져다쓰는 토큰 발급 외부 라이브러리 jjwt 이런것 들도 결국엔 JWT, JWS, JwtDecoder 이런 것들을 가져다 사용한 건가요.?

  • java
  • spring
  • spring-boot
  • oauth
hoonseung 댓글 2 좋아요 0 조회수 157

3020번 풀이 코드관련 질문있어요

해결됨

세계 대회 진출자가 알려주는 코딩테스트 A to Z (with Python)

어느 파트 이분 탐색 알고리즘[문제풀이] :BOJ 3020 자신은 어떻게 이해했는지 이분탐색을 통해 top 과 bottom을 따로 나눠서 탐색하는 것 까지는 이해했습니다. 어떤 부분이 궁금한지 get_idx(bots, h - 1) + 1 과 get_idx(tops, h) + 1 이 부분에서 구하려고 하는 높이의 직전 index를 구하는 것 까지는 이해하였으나, 왜 1을 더하는 지는 이해가 잘 되질 않습니다. 해당 부분에 대해서 좀더 자세한 설명 부탁드리겠습니다.

  • python
  • 코딩-테스트
  • 알고리즘
gogo_ 댓글 2 좋아요 0 조회수 205

MemberRepository에 @Transactional

해결됨

실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발

[질문 내용] MemberRepository 클래스에서도 MeberService 처럼 JPA를 적용한 코드들이 있던데 왜 MemberRository에서는 @Transcational 를 사용하지 않는 건가요?

  • java
  • spring
  • 웹앱
  • spring-boot
  • jpa
soojinkimss 댓글 1 좋아요 0 조회수 152

안녕하세요 Slice Windoe 방식 질문입니다.

미해결

자바(Java) 알고리즘 문제풀이 입문: 코딩테스트 대비

import java.util.*; public class Main { public static void main(String[] args){ Scanner in=new Scanner(System.in); String s = in.nextLine(); String s2 = in.nextLine(); System.out.println(Solution.solution(s, s2)); } } class Solution{ public static int solution(String s , String s2){ int ans = 0; HashMap<Character, Integer> map = new HashMap<>(); HashMap<Character, Integer> map2 = new HashMap<>(); for(char c : s2.toCharArray()){ map2.put(c, map2.getOrDefault(c, 0) + 1); } for(int i = 0; i<s2.length(); i++){ map.put(s.charAt(i), map.getOrDefault(s.charAt(i), 0) + 1); } if(map.equals(map2)){ ans++; } for(int i = s2.length(); i < s.length(); i++){ map.put(s.charAt(i), map.getOrDefault(s.charAt(i), 0)+1); if(map.get(s.charAt(i- s2.length())) == 1){ map.remove(s.charAt(i- s2.length())); }else{ map.put(s.charAt(i-s2.length()), map.get(s.charAt(i-s2.length())) - 1); } if(map.equals(map2)){ ans++; } } return ans; } } 전 강의에서는 항상 기존 b의 길이만큼 먼저 계산을 해주고 비교를 한후에 하나를 추가해주고 기존꺼를 제거하는 방식으로 저는 이해해를 해서 그런식으로 풀고 있었는데 강사님 코드 결론은 마지막에 b길이를 채워 주고나서 비교하고 나서 이전껄 빼고 새로운걸 추가시키고 비교하는 방식으로 하시는거 같은데 방식이 달라 어떤걸 더 봐야할지 모르겠습니다.

  • java
  • 코딩-테스트
opnice12 댓글 1 좋아요 0 조회수 96

ProductOrderMain 질문입니다

해결됨

김영한의 실전 자바 - 기본편

질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요. ========================================= [질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예/아니오) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) [질문 내용] 여기에 질문 내용을 남겨주세요. 강의에서는 향상된 for문을 이용하여 문제를 풀어주셨는데 일반 for문을 사용해보고 싶어 풀어봤는데 여기서 for문에 orders.length에 빨간줄이 생기면서 (java: incompatible types: int cannot be converted to boolean) 실행이 안되는데 뭐가 문제인가요? package class1.ex; public class ProductOrderMain1 { public static void main(String[] args) { ProductOrder order1 = new ProductOrder(); order1.productName = "두부"; order1.price = 2000; order1.quantity = 2; ProductOrder order2 = new ProductOrder(); order2.productName = "김치"; order2.price = 5000; order2.quantity = 1; ProductOrder order3 = new ProductOrder(); order3.productName = "콜라"; order3.price = 1500; order3.quantity = 2; ProductOrder[] orders = new ProductOrder[]{order1, order2, order3}; int totalAmount = 0; for (int i = 0; orders.length; i++) { System.out.println("상품명: " + orders[i].productName + ", 가격: " + orders[i].price + ", 수량: " + orders[i].quantity); totalAmount += orders[i].price * orders[i].quantity; } System.out.println("총 결제: " + totalAmount); } }

  • java
  • 객체지향
강민서 댓글 1 좋아요 0 조회수 167

인텔리제이 한글 늦게 쳐짐

미해결

김영한의 자바 입문 - 코드로 시작하는 자바 첫걸음

학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요. 1. 강의 내용과 관련된 질문을 남겨주세요. 2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요. (자주 하는 질문 링크: https://bit.ly/3fX6ygx) 3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요. (질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG) 질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요. ========================================= [질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예/아니오) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) [질문 내용] 여기에 질문 내용을 남겨주세요. 인텔리제이에서 scanner로 입력받는거에서, 영어는 즉각즉각 빨리 쳐지고 잘 쳐지는데, 한글만 유독 다음글자를 입력해야 전의 입력한 글자가 그제서야 입력되는데 이거 어떻게 고치나요? 너무 답답해서 미칠 것 같은데, 한컴 입력기도 삭제했는데도 이러는데.. ㅠㅠㅠㅠㅠ

  • java
  • 객체지향
진우 댓글 2 좋아요 0 조회수 201

다중 스케줄러 실행 시 확인 방법 문의

미해결

Airflow 마스터 클래스

강사님, 안녕하세요. 다중 스케줄러 실행 시 정상적으로 동작하고 있는지 확인할 수 있는 방법에 대해 문의드립니다. 현재 Worker와 Scheduler를 다중으로 실행하여 고가용성 테스트를 진행 중입니다. Worker의 경우 Celery Flower를 통해 정상적으로 Sync가 이뤄지는 것을 확인하였습니다. 다만 Scheduler의 경우 뭔가 정확하게 확인이 안되는 것 같습니다. 우선 제가 찾은 방법으로는 메타 테이블 조회와 커맨드가 있습니다. 메타 테이블 조회 아래와 같이 조회하면 running인 상태의 host가 Scheduler 수만큼 조회됩니다. hostname도 모두 일치합니다. select * from job where job_type = 'SchedulerJob' and state = 'running'; 커맨드 아래와 같이 커맨드 실행 시 'Found one alive job.'이 출력됩니다. $ airflow jobs check --job-type SchedulerJob Found one alive job. Scheduler 로그 확인 시 모두 heartbeat은 계속 요청하고 있습니다. 혹시 Worker와 같이 명확하게 다중 스케줄러 환경인지 확인하는 방법이 있을까요?

  • python
  • 데이터-엔지니어링
  • airflow
kyou 댓글 1 좋아요 0 조회수 181

dag list가 안보이는 이유..

미해결

Airflow 마스터 클래스

variables 를 추가하는 강의에서 variables 추가하고, dags_bash_with_variable.py를 생성후, git push 하고 나중에 봣더니 그 많던 dag(examples + 강의때 따라한 dag) 들중에 딸랑 3개만 보이고 안보여요.. dags 폴더 하위를 찾아가보니 파일은 그대로 존재하는데.. 왜 3개만보이는건지 .. 혹시 확인해볼만한 로그들이나... 이유에 대해서 아실까요..? docker exec -it {스케줄러노드ID} bash 로 들어가서 dags도 확인해봤습니다.

  • python
  • 데이터-엔지니어링
  • airflow
임주아 댓글 1 좋아요 0 조회수 171

주피터 노트북 관련해서 궁금한게 있습니다!

미해결

[리뉴얼] 파이썬입문과 크롤링기초 부트캠프 [파이썬, 웹, 데이터 이해 기본까지] (업데이트)

안녕하세요. 주피터 노트북을 다운받았는데 강사님 인터페이스에서는 In []이렇게 나오는데 저는 In이 나오지 않아서요.. 혹시 제가 잘못 설치한건가 싶어서 여쭤봅니다

  • python
  • 웹-크롤링
올챙이 댓글 1 좋아요 0 조회수 85

채팅 프로그램 구현완료 이후, 보완해야할거

해결됨

김영한의 실전 자바 - 고급 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; } }

  • java
  • 네트워크
  • 객체지향
dhhhhoon 댓글 1 좋아요 0 조회수 316

채팅프로그램 사용자 입력 받기 do-while 사용

해결됨

김영한의 실전 자바 - 고급 2편, I/O, 네트워크, 리플렉션

학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문 전에 다음을 꼭 확인해주세요. 1. 강의 내용과 관련된 질문을 남겨주세요. 2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요. (자주 하는 질문 링크: https://bit.ly/3fX6ygx) 3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요. (질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG) 질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요. ========================================= [질문 템플릿] 1. 강의 내용과 관련된 질문인가요? 예 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? 예 3. 질문 잘하기 메뉴얼을 읽어보셨나요? 예 [질문 내용] 단순히 한번 입력 받는 게 아닌 do-while문을 사용하신 이유가 궁금합니다!

  • java
  • 네트워크
  • 객체지향
김철준 댓글 1 좋아요 0 조회수 187

MACD & 오실레이터 with EXCEL 강의 데이터 문의

미해결

퀀트 투자를 위한 파이썬 트레이딩룸 만들기 - Part 1

Mt = w * Pt + (1-w) * Mt-1 에서 날짜가 과거시점으로 가야하는것 같은데.. 강의 및 엑셀자료는 미래시점으로 계산된것 같습니다. 데이터를 역순으로 바꿔서 계산을 해야 할 것 같은데 확인 부탁드리겠습니다. 감사합니다.

  • python
  • 함수형-프로그래밍
  • 차트분석
  • 퀀트
plsch 댓글 1 좋아요 0 조회수 192

인기 태그

인프런 TOP Writers

주간 인기글