강의록 오타 제보
해결됨
김영한의 실전 자바 - 중급 1편
[제보 내용] 대상 강의록: 7. 중첩 클래스, 내부 클래스1.pdf 위치: p.3 의 두 번째 코드 블록(= process() 있는 곳) 오타 내용: 수정 전: int lcoalVar = 0; 수정 후: int localVar = 0; 궁금한 내용이 생겨 복습하러 왔다가 겸사겸사 오타도 발견하고 가네요. 항상 좋은 강의 감사합니다!
- java
- 객체지향
172만명의 커뮤니티!! 함께 토론해봐요.
해결됨
김영한의 실전 자바 - 중급 1편
[제보 내용] 대상 강의록: 7. 중첩 클래스, 내부 클래스1.pdf 위치: p.3 의 두 번째 코드 블록(= process() 있는 곳) 오타 내용: 수정 전: int lcoalVar = 0; 수정 후: int localVar = 0; 궁금한 내용이 생겨 복습하러 왔다가 겸사겸사 오타도 발견하고 가네요. 항상 좋은 강의 감사합니다!
미해결
RAG를 활용한 LLM Application 개발 (feat. LangChain)
국정자원 화재로 인해... docs 파일을 내려받을수가 없네요 ㅠ 어떻게 해야할까요?
해결됨
(2026 최신!) 일주일만에 합격하는 정보처리기사 실기
강의 앞부분에서는 JAVA에서는 print 뒤에 ln을 붙여서 개행한다고 설명해 주셨습니다. 그런데 뒷부분 예제에 Systenm.out.print("Character:"+ch+"\n"); 이런 명령문구가 있는데 정답 해설하실 때도 \n에 대해서는 설명 안해주시네요. 작성해 주신 출력 결과를 보면 Character:A가 출력되고 개행이 되는 것 같은데, JAVA에서 +"\n"으로도 개행을 할 수 있는건가요?
미해결
스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
[질문 내용] build까지 성공했는데 해당 경로로 들어갔을 때 libs가 없네요 이런 경우에는 빌드가 제대로 되지 않은건가요?
해결됨
2026 벼락치기 합격! 기출문제 집중 정보처리기사 실기
best에서 어떤 연유로 t부터 출력이 되는것인가요 이해가 안가네요
해결됨
(2026 최신!) 일주일만에 합격하는 정보처리기사 실기
6:57 에서 printf("%c\n", *ptr_a); 만약 이렇게 배열을 포인터로 선언한 배열 포인터 변수를 넣는다면, 출력은 hello가 되는게 맞을까요??
미해결
죽음의 Spring Batch: 새벽 3시의 처절한 공포는 이제 끝이다.
강의를 보다보니 궁금한 점이 있어 질문 남깁니다. 첫번째로 궁금한 점은 AbstractPagingItemReader의 코드를 doRead 함수 안에서 lock을 잡고 있으며, doReadPage가 끝난 후 lock을 푸는 것을 확인할 수 있었습니다.. doReadPage에 실제로 paging 로직이 존재하니 사실상 paging 로직은 직렬로 수행되는 것과 다를 바 없을 것이며, 성능적으로 크게 증가하지 않을 것 같다는 생각이 드는데요.. (거의 직렬 처리와 유사할 것 같다는 생각이 드네요..) 사실상 병렬 처리라해도 Reader쪽에서 성능 향상이 거의 없다고 보면 될까요? 두번째로 궁금한 점은 AbstractPagingItemReader 상위 클래스인 AbstractItemCountingItemStreamItemReader의 read 함수를 보니 멤버 변수인 currentItemCount를 증가시키는 로직이 존재하더라구요.. 이 부분도 병렬처리에 문제가 될 것 같다는 생각이 들고 해당 클래스의 주석에도 "Subclasses are inherently <b>not</b> thread-safe." 라고 적혀있는 것으로 봐서는 문제가 존재하는 것 같은데요.. 그럼에도 불구하고 기능상 영향이 없으니 하위 클래스인 AbstractPagingItemReader는 thread-safe하다고 나와있는 것이라고 생각하면될까요??
해결됨
(2026 최신!) 일주일만에 합격하는 정보처리기사 실기
함수와 재귀함수 (v2) 챕터에서 31:05 int size - sizeof(myAraay) / sizeof(myArray[0]); 값이 왜 5개 나오는지 설명 부탁드립니다.
해결됨
(2026 최신!) 일주일만에 합격하는 정보처리기사 실기
안녕하세요. 방금 결제하고 여기저기 찾아봐도 이론 요약본 pdf파일을 어디서 다운받는지 잘 모르겠네요. 제가 인프런 사용이 처음이라서 번거로우시겠지만 답변 부탁드립니다, 감사합니다.
해결됨
2026 벼락치기 합격! 기출문제 집중 정보처리기사 실기
대기시간 구할 때 대기시간 = 도착시간+실행시간인데 만일 P4의 도착시간이 5초라고하면 계산이 달라지는 것 같습니다. P1이 그전에 종료가 되서.. 이럴 땐 어떻해야할까요
해결됨
스프링부트로 직접 만들면서 배우는 대규모 시스템 설계 - 게시판
안녕하세요 COUNT 쿼리에 LIMIT 를 지정하는 이유가 있을까요? 설명해주셨는데 놓친건지 모르겠네요ㅜ
해결됨
(2026 최신!) 일주일만에 합격하는 정보처리기사 실기
앞선 코드에서는 구조체의 name(char x[]배열)에 데이터를 넣고 널문자를 넣지 않았는데 넣나 안넣나 상관이 없나요?
해결됨
2026 벼락치기 합격! 기출문제 집중 정보처리기사 실기
9분48초에서 첫번째 ref.x(2)는 child로 가고 ref.id()는 parent로 가는지 다시 정확하게 설명부탁드립니다
해결됨
(2026 최신!) 일주일만에 합격하는 정보처리기사 실기
포인터 조작과 출제 패턴 (2. 포인터 증가/감소, 이중 포인터) 9:35 printf("%c\n", *(ptr_a+1)); 여기서 ptr은 str[] 배열이기 때문에 H값이 온다는 것은 이해를 했는데 printf할 때 배열 단위로 오면 printf("%c\n", *(ptr_a+1)) 오는 것 같고 배열에서 특정 위치를 표현하는 printf("%c\n", ptr_a[1])가 오는 것 같은데 같은 배열을 이용하는 건데 * 사용 대해서 차이가 위 설명이 맞을까요?
해결됨
(2026 최신!) 일주일만에 합격하는 정보처리기사 실기
포인터 조작과 출제 패턴 (2. 포인터 증가/감소, 이중 포인터) 3:36 배열의 경우는 메모리 주소와 같은 개념이라고 이해했는데 char *ptr_a=a; 경우 a는 배열 내 첫번째 요소를 의미하는 것으로 "H"로 지정된다는 것을 이해를 했습니다. 다만, printf("%c/n", * ptr_a);에서 변수 앞에 출력하고자하는 변수 앞에 *가 있으면 해당 메모리 주소의 값으로 출력이 된다고 하였는데 배열일 경우, printf("%c/n", *ptr_a) 값과 printf("%c/n", ptr_a) 값은 같은건가요? 일반적으로 *가 없으면 메모리 주소를 출력하는 것으로 알고 있습니다.
미해결
RAG를 활용한 LLM Application 개발 (feat. LangChain)
연봉 1억4천만원 소득세가 다르게 나와서 문서 확인하니 테이블에 있는 값이 오타네요...ㅜㅜ 1536만원인데 3706만원으로 된부분과 42퍼센트도 오타...제가 발견한건 두군데임
미해결
토비의 클린 스프링 - 도메인 모델 패턴과 헥사고날 아키텍처 Part 1
안녕하세요 토비님. 강의 잘 수강하고 있습니다. 아직 강의 초반부만 들었지만, 아주 감명깊게 수강중입니다. 혹시 다음강의 오픈은 언제쯤 예상하고 계실까요?
해결됨
(2026 최신!) 일주일만에 합격하는 정보처리기사 실기
포인터의 개념과 활용 (1.메모리 주소에 접근하자) 챕터에서 10:21 챕터 화면에는 printf("%d\n", pointer); 교재에는 printf("%d\n", *pointer); 서로 달라서 뭐가 맞는건지 모르겠습니다.
미해결
재고시스템으로 알아보는 동시성이슈 해결방법
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요. final Stock stock = stockRepository.getByProductId(productId); stock.decrease(quantity); stockRepository.save(stock) public void decrease(final Long quantity) { if (this.quantity - quantity < 0) { throw new RuntimeException("재고 부족"); } this.quantity -= quantity; } 락을 건 이유는 decrease 로직에서 quantity를 줄이고 다시 저장했기 때문이라 생각했습니다. stock 상태가 코드레벨 에서 변하기 때문에 발생하기 때문입니다. 다만 코드레벨에서 변경하지 않고 디비에서 직접 변경한다면(update stock quantity=quantity-1 과 같이) update 자체가 배타락이기 때문에 굳이 락을 걸지 않아도 된다고 판단하였습니다. 그래서 단일 연산으로 해결할 수 없는 상황은 quantity 필드 뿐만 아니라 다른 필드에도 영향이 미칠 때라 생각했습니다. stock 필드에 soft delete 필드 delYn을 추가하고, 코드 상에서 만약 재고가 0이면 delYn=True 로 바꾼다 이런 경우일 것 같은데 제가 생각한게 맞을까요? 단일 연산으로도 정합성을 유지할 수 있는데 왜 stock을 다시 저장하는지 모르겠습니다
미해결
RAG를 활용한 LLM Application 개발 (feat. LangChain)
안녕하세요. 강의에서 나오는 BitsAndBytesConfig 를 통한 양자화 예시에서 CUDA 가 필수로 요구되어 macbook에서 진행할 수 있는 방안을 찾다가 mlx_lm 을 통해서 MPS(mac의 gpu)를 활용하여 양자화가 가능하단 사실을 알게되어 공유드리고자 합니다. 아마 맥북 사용자도 꽤 많을 것으로 예상됩니다. langchain에서 MLXPipeline 을 제공하지만 이를 사용했을 때 현재 invoke시 호출되는 _call 메서드 내부에서 generate_step 이 mlx_lm에서 제공은 하지만 MLXPipeline 에서 제대로 불러올 수 없어 RunnableLambda 를 통해서 에러를 우회해봤습니다.(Q? 강사님은 혹시 해결 방법을 알고 계실까요? 공홈 코드가 다 안 되네요 ㅜㅜ 오류 코드는 맨 아래 첨부하겠습니다. ) 먼저 양자화 진행하는 방식입니다. cli를 통한 command 또는 python-api 를 활용하는 방법 두 가지가 있습니다. 자세한건 링크 첨부하겠습니다. 양자화 개념에 대해서 자세히 나오니 참고하면 좋으실 듯 합니다. 링크: [quantization with xlm_lm]( https://developer.apple.com/kr/videos/play/wwdc2025/298/?time=187 ) mlx_lm을 통한 양자화 먼저 양자화한 model을 local path에 저장합니다. 그 전에 apple의 gpu를 확인할 수 있는 코드 부분은 처음 부분에서 확인하실 수 있습니다. 사실 python코드를 싸는 것보다 command로 양자화 진행하는게 편한 것 같습니다. 전 projection layer와 embedding layer는 다른 layer보다 높은 bit로 해주는게 좋다고 하여 python으로 진행했습니다. dequantize on-the-fly(게산 추론) 시 더 좋다고 합니다. # mac에서 mps를 사용한 예제 import torch from mlx_lm.convert import convert print("MPS available on this device =>", torch.backends.mps.is_available()) # projection layer & embedding layer는 6bit, 양자화 가능한 layer는 4bit, 양자화 불가능은 False return def mixed_quantization(layer_path, layer): if "lm_head" in layer_path or 'embed_tokens' in layer_path: return {"bits": 6, "group_size": 64} elif hasattr(layer, "to_quantized"): return {"bits": 4, "group_size": 64} else: return False # quantization 진행 convert( hf_path="microsoft/Phi-3-mini-4k-instruct", mlx_path="./models/microsoft-Phi-3-mini-4k-instruct-mixed-4-6-bit", dtype="float16", quantize=True, q_bits=4, q_group_size=64, quant_predicate=mixed_quantization ) $) mlx_lm.convert --hf-path "mistralai/Mistral-7B-Instruct-v0.3" \ --mlx-path "./mistral-7b-v0.3-4bit" \ --dtype float16 \ --quantize --q-bits 4 --q-group-size 64 --upload-repo "my-name/mistral-7b-v0.3-4bit" Langchain과 연계하기 from functools import wraps from langchain_core.runnables import RunnableLambda from langchain_core.output_parsers import StrOutputParser from mlx_lm import generate, load quantized_model_path = "./models/microsoft-Phi-3-mini-4k-instruct-mixed-4-6-bit" model, tokenizer = load(quantized_model_path) def runnable_wrapper(func): """RunnableLambda wrapper function""" @wraps(func) def wrapper(*args, **kwargs): return RunnableLambda(func) return wrapper @runnable_wrapper def create_chat_prompt(question): messages = [ { "role": "system", "content": """ You are an expert in information retrieval and summarization. Your job is to read the provided text and produce a precise, faithful, and concise summary. Prioritize the author’s main claim, key evidence, and conclusions. Use plain English and avoid filler. Do not invent facts that aren’t present in the input. """ }, { "role": "user", "content": f""" Question: {question} """ } ] prompt_without_tokenized = tokenizer.apply_chat_template(messages, add_generation_prompt=True, tokenize=False) prompt_with_tokenized = tokenizer.apply_chat_template(messages, add_generation_prompt=True) print("생성된 prompt👇\n", prompt_without_tokenized) return prompt_with_tokenized @runnable_wrapper def run_llm_with_mlx(prompt): return generate(model=model, tokenizer=tokenizer, prompt=prompt) @runnable_wrapper def output_parser(answer): return answer.replace("<|end|>", "") chain = create_chat_prompt() | run_llm_with_mlx() | output_parser() 오류 코드 llm.invoke 에서 에러가 발생하며 TypeError: generate_step() got an unexpected keyword argument 'formatter' 라는 에러가 발생합니다. from langchain_community.llms.mlx_pipeline import MLXPipeline from mlx_lm import load model_path = "./models/microsoft-Phi-3-mini-4k-instruct-mixed-4-6-bit" model, tokenizer = load(model_path) llm = MLXPipeline( model=model, tokenizer=tokenizer ) llm.invoke("what's my name?")