묻고 답해요
164만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결[아파치 카프카 애플리케이션 프로그래밍] 개념부터 컨슈머, 프로듀서, 커넥트, 스트림즈까지!
강의자료 PDF랑 순서가 다른것같습니다
강의자료 PDF 에는 유지보수하기 좋은 토픽이름 정하기 카프카 브로커와 클라이언트가 통신하는 방법 레코드 상세히 살펴보기 순서대로 되어있는데, 강의순서랑 다른것 같아서 문의드립니다!
-
해결됨[리뉴얼] 처음하는 파이썬 데이터 분석 (쉽게! 전처리, pandas, 시각화 전과정 익히기) [데이터분석/과학 Part1]
바뀐 국기 사이트에 대하여
- 기존 사이트였던 www.countryflags.io 가 flagcdn.com 로 대체되면서 직접 따라해보니, 2가지 문제점이 있는 걸 발견했습니다. 1. 대문자로는 404 Not Found가 뜹니다. - 따라서 이미지 링크를 만들 때는 .lower() 로 소문자 변경 처리를 해줘야 합니다. - ex) https://flagcdn.com/48x36/US.png -> https://flagcdn.com/48x36/us.png 2. 국기 매칭 오류 - iso2와 Country_Region 를 매칭할 때부터 오류가 있는 것을 확인했습니다. - 시각화를 하면서 US가 워낙 인구가 많기에 눈에 보였지만 다른 것들도 제대로 매칭되었는 지는 확신할 수 없습니다. - 강의 자료를 바탕으로하면, US의 경우 AS로 매칭이 되어서 https://flagcdn.com/48x36/as.png 국기가 뜨더라구요. - 물론 강사님 말씀처럼, 이미지는 참고용이므로 크게 신경쓰지 않아도 될 문제같습니다. 그래서 저는 만들어진 데이터 프레임 값 중 US만 변경하려고 다음과 같이 허접하게 함수를 만들어서 보정했습니다. ㅎㅎ;; def test_func(row): if(row['Country_Region'] == 'US'): row['Country_Flag'] = 'https://flagcdn.com/48x36/us.png' return row doc_final_country = doc_final_country.apply(test_func, axis=1) 대강 국기가 잘 나오는 것 같네요. 혹시나 이 수업을 들으시는 누군가에게 도움이 될까..? 하여 간단히 기록 남겨봅니다..!
-
미해결스프링 DB 2편 - 데이터 접근 활용 기술
비즈니스로직을 Runtime 예외로 두고, @Transactional 옵션의 noRollbackFor을 사용하여 롤백되지 않도록 하는 방법"을 사용하는 것은 어떤가요?
안녕하세요. 영한님의 여러 강의들과 이번 강의들을 보면서 궁금한 점이 생겨 질문드립니다. 물론, 상황과 조직에 따라 구현하는 방법은 여러 가지 있겠지만 실무에서는 어떻게 쓰시는지 궁금합니다. 질문은. 강의에서 말씀하신 방법과는 반대로, 비즈니스로직을 Runtime 예외로 두고, @Transactional 옵션의 noRollbackFor을 사용하여 롤백되지 않도록 하는 방법"을 사용하는 것은 어떤가요? 그 이유는, OrderService의 메소드 시그니쳐에 throws 구문을 강제하고 싶지 않습니다. 첫 번째, OrderController가 OrderService 인터페이스에만 의존하고 있다고 가정하고, OrderService의 구현체들마다 예외를 throw할 수도 안할수도 있다고 가정한다면 비즈니스로직을 Exception 타입으로 정의하여 메소드 시그니쳐에 throws 구문을 강제하는 방법이 문제가 될 수 있습니다. (인터페이스 메소드 시그니쳐에도 throws가 추가되어야 하기 때문에) => 추가) 여기에 대한 저 스스로에 대한 답은, 실제로 운영을 하며 서비스 계층의 구현체를 변경할 일도 많지 않고 이에 따라 컨트롤러가 인터페이스가 아닌 구현체에 의존해도 큰 상관은 없을 것 같다. 입니다. 두 번째, 제가 이해하는 개념으로는 예외를 throw 한다는 것은, 자신을 호출한 상위 메소드에서 해당 예외를 적절히 처리하게끔 책임을 위임하는 것이라고 생각합니다. 즉, Controller 계층에서 NotEnoughMoneyException를 처리하도록 하는 것입니다. 물론, Controller 계층에서 해당 예외를 catch하여 "잔고가 부족합니다"와 같이 정상적인 흐름과 다른 응답을 클라이언트에게 응답으로 돌려준다면 적절한 상황(?) 이겠지만 @ExceptionHandler를 이용해서 NotEnoughMoneyException을 핸들링하고 있는 상황에서도 OrderController의 메소드에 throws을 명시하여야 합니다. 그래서, 비즈니스로직을 RuntimException 타입으로 지정하고 무의미할 수도있는 메소드 시그니쳐에 throws는 생략한체로noRollbackFor 옵션을 사용하는 것이 코드를 더 깔끔하게 작성할 수 있지 않을까 생각했습니다. 물론, 스프링이 예외를 바라보는 시선(런타임은 시스템 에러, checked는 비즈니스 에러)과는 반대로 코드를 작성한다는 부담(?)이 있긴 합니다... 영한님의 의견을 들려주시면 감사하겠습니다.
-
미해결Vue.js 시작하기 - Age of Vue.js
vue devtools 질문입니다. 이벤트가 안 보여요
다른분이 올린 질문은 봤지만, 한번 더 업데이트 됐나봅니다 보이지 않아요
-
미해결윤재성의 만들면서 배우는 Spring MVC 5
글번호 질문드립니다.
위에 사진처럼 게시판별 글번호가 다 합쳐져서 나옵니다. 어느쪽을 만져야할지몰라 Mapper부터해서 게시판쪽 코드는 거의 다 확인한거같은데 해결책을 모르겠네요 ㅠㅠ 어디부분코드를 봐야 해결책이 나올까요?
-
미해결[개념은 호옹~, 실습 빡] 스프링 부트, 입문!
12강 데이터 목록보기 질문드립니다.
아래와 같이 오류가 나옵니다. 2022-06-02 01:56:50.380 WARN 1420 --- [nio-8080-exec-5] .w.s.m.s.DefaultHandlerExceptionResolver : Resolved [org.springframework.web.method.annotation.MethodArgumentTypeMismatchException: Failed to convert value of type 'java.lang.String' to required type 'java.lang.Long'; nested exception is java.lang.NumberFormatException: For input string: "index"]
-
미해결스프링 DB 2편 - 데이터 접근 활용 기술
readOnly 옵션에 대한 질문
안녕하세요. readOnly 옵션에 대해 질문이 있습니다. readOnly 옵션을 true로 주면 읽기(조회) 트랜잭션만 한다고 알고 있습니다. 그런데 데이터를 롤백할 때는 insert, update, delete했던 데이터들에 대해서만 되돌릴텐데 '읽기 트랜잭션'만 하는 과정에서 롤백을 신경써줘야 할까요? 간단하게 말씀드리면, @Transactional(readOnly = true)이 옵션을 준다면, rollbackFor={Exception.class} 를 주던 디폴트 rollbackFor 옵션을 유지하던 아무 신경을 안써도 되는지 궁금합니다. (롤백이란게 C, U, D에만 해당되니까)
-
미해결스프링 DB 2편 - 데이터 접근 활용 기술
테스트시 사전에 필요한 데이터 세팅 방법 문의드립니다.
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오) 예2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 예3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) 아니오[질문 내용]영한님 안녕하세요, 요번에도 강의 알차게 듣고 있습니다. 아리마님이 올려주신 질문에 답변 해주신 내용중에 '각 테스트에 따른 데이터를 추가하는 별도의 도구들을 사용' 요기서 말씀하시는 별도의 도구가 어떤것들인지 궁금합니다! 인메모리 db를 사용한다면 제가생각한 방법은 아래와 같습니다. 1. test/resources/data.sql에 테스트에 필요한 모든 사전 데이터에 대한 insert쿼리 세팅 (schema.sql도 세팅) 2. 각 테스트마다 필요한 데이터만 save() 메소드 호출 로컬 DB나 별도의 테스트용 외부 DB를 쓴다면 사전 데이터를 한번만 세팅하면 되겠지만 각자 로컬 DB에 모두 세팅해야되고 리소스 고려(테스트용 외부 DB) 등 번거로울거 같아서요.. 언급해주신 도구를 쓴다면 위 2가지 방법들보다 더 간편하게 데이터를 세팅할수 있는지요 ㅠㅠ 제가 생각한 방법말고도 다른방법들이 있으면 그것도 알고싶습니다! 참고 질문 https://www.inflearn.com/questions/553577
-
미해결냉동코더의 알기 쉬운 Modern Android Development 입문
saveState 관련 질문입니다..!!
안녕하세요 초보인데 보면서 공부 잘하고 있어요 :) 저는 에뮬레이터 아니고 핸드폰 연결해서 쓰고 있거든요 그래서 쌤처럼 터미널에서 종료하지않고 설정>애플리케이션에서 앱 강제종료 하거나,백그라운드 태스크에서 지웠는데숫자가 다시 100으로 돌아오는데 그게 맞는건가요..ㅎ; 코드는 똑같이 썼구용 .. 단순히 백그라운드 갔다가 돌아오면 숫자는 그대로인데 ,, 앱을 종료했다가 돌아오면 100으로 돌아옵니다 ㅠㅠ 잘못된걸까요
-
미해결Vue.js 끝장내기 - 실무에 필요한 모든 것
안녕하세요 질문있습니다.
강사님 저는 1_setup이 안나오는데 어떻게 해야 나오는건가요? 그리고 제 Vscode Source Control이 10k라고 나오는데 어떻게 해결해야하는지 궁금합니다 ㅜㅜ
-
미해결[리뉴얼] Node.js 교과서 - 기본부터 프로젝트 실습까지
12장 웹소켓 데이터베이스 질문입니다.
혹시 데이터베이스를 처음부터 MySQL을 사용해도 될까요? 아니면 몽고DB로 한번 해본 이후 MySQL로 교체해야 하나요? 사실 이게 가장 중요한 질문인데, MySQL로 해도 크게 달라질것 같진 않지만 이해하거나 코드분석하는 것에 어려움이 많을까요?
-
미해결[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part3: 유니티 엔진
디자인 패턴 관련해서 질문드립니다!
다름이 아니라 싱글톤 이외의 디자인 패턴들이 많을 텐데 책을 통해서 배우면 되는지 여러 디자인 패턴들의 존재(?)를 어떻게 알고 검색해서 공부하는 지 궁금합니다! 루키스님은 어떻게 하셨나요? 만약에 책을 통해서 배운다면 유니티 디자인패턴으로 검색하니 책이 안나와서 디자인 패턴으로 검색한 뒤 나오는 책으로 공부하면 될까요?
-
미해결운영체제 공룡책 강의
7.1 Classic Problems of Synchronization 질문이 있습니다
안녕하세요 교수님 좋은 강의 언제나 감사드립니다 7단원의 동시성 제어의 고전적 문제들의 강의 예제에 대해 질문이 있습니다.PThread solution to the Bounded Buffer Problem의 35:25초에서 질문이 있는데, 해당 버퍼가 1인 경우인 해당 예제에서는 consumer가 연속으로 2회 실행이 되고 있습니다.하지만 설명을 해주실때에는 '적어도 동기화 문제는 해결 해준다'고 말씀해주셨는데 consumer가 2회 연속으로 실행 되는 것은 동기화의 문제는 아닌건가요?저는 full과 empty가 동기화가 제대로 되지 않은 경우로 이해가 됩니다 혹시 제 이해가 잘못된건지, 혹은 코드의 어느 부분을 수정하면 되는 것인지 궁금합니다
-
미해결파이썬/장고 웹서비스 개발 완벽 가이드 with 리액트
안녕하세요 강사님 강의 수강완료 후 복습 중 페이지 구성에 질문이 있어 글남깁니다.!
안녕하세요 강사님. 복습 중에 질문이 있어 문의드립니다. 현재 복습을 목적으로 개인 페이지를 만들어보고 있는데.. 회원가입 버튼을 위 사진과 같이 구성을 하였고, 회원가입의 url은 localhost:3000/accounts/signup 으로 지정한 상태입니다. 제가 질의드리고 싶은것 Create Account 아이콘에 회원가입 url으로 링크를 걸어 버튼이 클릭되면 회원 가입 Form을 호출하는 방식도 가능한지 문의드립니다. 추가로 태그를 포스트 하단에 아래와 같이 자동으로 입력되게 하기 위해.. 아래 코드만들었고 작동을 잘 하지만.. 좀더 간단한 방법도 있는지... 같이 문의드립니다. - 작업 결과 장고 / Post, Tag 모델, content에서 #으로 시작하는 문자열 추출후 Tag 생성/저장 # models.py class Post(BaseModel): author = models.ForeignKey(settings.AUTH_USER_MODEL, on_delete=models.CASCADE, related_name='post_author') category = models.CharField(max_length=100, default='all') title = models.CharField(max_length=100) content = models.TextField() attached_file = models.FileField(blank=True, upload_to="shareinfo/post/cover/%Y/%m/%d") cover_img = models.ImageField(blank=True, upload_to="shareinfo/post/cover/%Y/%m/%d") post_tag_set = models.ManyToManyField('Tag', blank=True) like_user_set = models.ManyToManyField(settings.AUTH_USER_MODEL, blank=True, related_name='post_likes') ip = models.GenericIPAddressField(null=True, editable=False) class Meta: ordering = ['-id'] def __str__(self): return self.title + ' | ' + str(self.author) def cover_img_url(self): if self.cover_img: return self.cover_img.url else: return self.title def get_absolute_url(self): return reverse('shareinfo:post_detail', args=[self.pk]) def extract_tag_list(self): tag_name_list = re.findall(r"#([a-zA-Z\dㄱ-힣]+)", self.content) tag_list = [] for tag_name in tag_name_list: tag, _ = Tag.objects.get_or_create(name=tag_name) # tag 반환값, 반환결과에 대한 불리언 값 tag_list.append(tag) return tag_list def is_like_user(self, user): return self.like_user_set.filter(pk=user.pk).exists() class Tag(models.Model): name = models.CharField(max_length=20, unique=True) def __str__(self): return self.name #serializer class PostSerializer(ModelSerializer): author = AuthorSerializer(read_only=True) is_like = serializers.SerializerMethodField("post_likes_field") post_tag_set = serializers.CharField(source='extract_tag_list') class Meta: model = Post fields = '__all__' React / post_tag_set을 받아서 문자열을 배열 형태로 변경 후 map함수를 활용하여 태그 컴포넌트 생성 import * as React from 'react'; import Chip from '@mui/material/Chip'; export default function ChipsArray({post}) { const handleClick = () => { console.info('You clicked the Tag.'); }; // 문자열로 받은 post_tag_set을 replace와 map을 활용하여 태그 추출 -> 새로운 배열 생성 const tag_set = post.post_tag_set const string_to_array = tag_set.replace(/ /g, '').replace(/\[/, '').replace(/\]/, '').split(',') const tag_set_array = string_to_array.map(tag => tag.slice(5, -1)) // 생성 후 map을 이용한 태그 컴포넌트 생성 return ( tag_set_array.map((data) => { return ( <Chip label={data} onClick={handleClick} key={data} sx={{fontSize: '15px', marginRight: 1, marginTop: 1}}/> ); }) ); }
-
미해결실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발
relfective 관련 에러
안녕하세요 강사님 강의 너무너무 잘듣고있습니다. 다름이 아니라 배운 JPA와 스프링부트로 프로젝트를 진행중입니다. 근데 제가 오류 해결 하다가 잘못건들인 것같은데 vm에 옵션을 추가하고 스프링 버전관련인것 같은데 도저히 해결이안되서 에러 코드와 프로젝트 첨부하려합니다.. 어떻게 해결해야할가요...? https://drive.google.com/drive/u/0/folders/1_5jCY-UPoVkrdk7kP-W5OnDM6xeqIQtW
-
미해결[초급편] 안드로이드 커뮤니티 앱 만들기(Android Kotlin)
처음 04:35초 메인패스트 부분부터 난관이네요..
MainFast에서 splashActivity 부분에 <intent-filter> 을 넣으니까 오류가 막 엄청뜨네요. 버전도 같은데 코드또한 약간 다릅니다. 강의에 안보이는 <activity 부분에 android:exported="ture" /> 도 저는 보입니다.. ERROR:C:\Users\i\AndroidStudioProjects\MySoloLife2\app\build\intermediates\packaged_manifests\debug\AndroidManifest.xml:25: AAPT: error: unexpected element <intent-filter> found in <manifest><application>. 라고 에러코드는 나와있습니다.
-
미해결스프링 DB 2편 - 데이터 접근 활용 기술
테스트 DB 설정 문의드립니다.
영한님 안녕하세요. 이번 강의도 재밌게 잘 듣고 있습니다. 섹션3의 테스트 과정을 들으면서 궁금한 점이 생겼는데요. 실무에서는 로컬DB 와 테스트DB 를 어떻게 운영하는지 궁금합니다. 강의에서는 임베디드 DB 의 경우 schema 파일 활용해서 DDL 관리하고, 데이터가 하나도 없는 상태에서 테스트를 하는 과정들을 보여주셨는데요. 실무에서는 테이블도 워낙 많고 schema 에 추가/수정도 자주 일어날테고, 무엇보다 이미 데이터가 있는 상황에서 테스트를 해야하는 케이스도 상당히 많을 것이기때문에 항상 데이터가 없는 상태에서만 테스트하기는 어려울텐데요. 이런 부분을 감안했을 때, 로컬DB 나 임베디드DB 를 실무 환경에서도 제대로 활용을 할 수 있는 편인지 궁금합니다.
-
해결됨초간단 초스피드 데이터 수집 (파이썬 크롤링)
개발자님 도와주세요
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 import requests from bs4 import BeautifulSoup req = requests.get('https://www.cheonyu.com/product/view.html?qIDX=42562') soup = BeautifulSoup(req.text, 'html.parser') print(soup.select("#tab_01 > div.pic")) 여기서 상세페이지 이미지 url을 추출하고 싶은데 [<div class="pic" id="viewPcontent"> </div>] 이런식으로만 뜨고 끝이네요ㅜㅜ 뭐가 문제인지 모르겠어요 ㅠㅠ
-
미해결데이터 분석 SQL Fundamentals
다운로드 오류
postgre 설치시 홈페이지에서 나오는 오류인데 해결방법이 있을까요..?
-
미해결함수형 프로그래밍과 JavaScript ES6+
여기부터 막혀서 진도가 안나갑니다 ㅠㅠ 왜 하필 products 가 사라졌는데..
포기했다가 다시 시작하는데 도와주십시오~ products 이 사라진 이유가 궁금합니다 ^^; go( products, products => filter((p) => p.price < 20000)(products), map((p) => p.price), reduce(add), log );