묻고 답해요
164만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결인터랙티브 웹 개발 제대로 시작하기
3개의 문에서 질문드려요
3개의 문 현재의 순서값에 클래스가 붙는걸 활용해서 텝 메뉴를 만들고자 합니다. 순서값을 .box에 어떻게 전달해야 할까요? jquery에서는 간단히 this.index()로 알아냈는데 javascript로는 어렵네요. 팁을 알려주시면 감사하겠습니다. <div id="wrap"> <div class="content"> <ul class="menu"> <li ><a href="#" class="btn"> 0menu</a></li> <li><a href="#" class="btn"> 1menu</a></li> <li><a href="#" class="btn"> 2menu</a></li> <li><a href="#" class="btn"> 3menu</a></li> </ul> <ul class="box"> <li class="inner b01 Active">content01</li> <li class="inner b02">content02</li> <li class="inner b03">content03</li> <li class="inner b04">content04</li> </ul> </div> </div> <script> (function(){ const menuList = document.querySelector('.menu'); let currentItem; const content=document.querySelector('.box'); function handler(e){ const targetElem = e.target; // console.log(targetElem); if(currentItem){ currentItem.classList.remove('On'); } if(targetElem.classList.contains('btn')){ targetElem.parentNode.classList.add('On'); currentItem= targetElem.parentNode; } } menuList.addEventListener('click',handler); })() </script>
-
미해결[리뉴얼] React로 NodeBird SNS 만들기
리덕스 스토어와 리액트 리렌더링 관련된 질문입니다.
안녕하세요. 제로초님! 현재 프로젝트에서 팔로잉, 팔로워 리스트를 모달창을 띄워 노출되도록 구현중입니다. 그런데 `USER`라는 리듀서안에서 너무 많은`state`를 가지고 있어서 생기는 문제인지.. 팔로워 팔로잉 리스트를 따로 분리를 해야 문제가 해결되는지 논의 드리고 싶어서 질문글 남겼습니다. 일단 먼저 고민중인 부분에 대해 먼저 말씀드리겠습니다! 무한스크롤 기능 구현을 위해 코드를 아래와 같이 작성하였습니다. const onIntersect = (entries, observer) => { entries.forEach(entry => { if (scroll && entry.isIntersecting) { console.log('api 호출'); mode === 'followings' ? dispatch(getFollowingsRequest({ userId, offset: followList.length })) : dispatch(getFollowersRequest({ userId, offset: followList.length })); observer.unobserve(entry.target); // api를 불러왔다면 타겟 엘리먼트에 대한 관찰을 멈춘다 } }); }; useEffect(() => { let observer; if (target) { console.log('target 있음'); observer = new IntersectionObserver(onIntersect, { threshold: 1 }); observer.observe(target); } return () => observer && observer.disconnect(); }, [target, followList]); // 무한스크롤 구현부분 return ( <FollowList title={titleShow ? followListTitle : ''} padding={padding ? 1 : 0} bordered={false} scroll={scroll} > {followList?.map(user => { const { id, lastname, firstname, MyProfile } = user; return ( // 팔로우리스트 그리는 부분 ); })} <div ref={setTarget} /> {/* // 페이지 끝 감지 */} </FollowList> ); 위와같이 코드를 작성하고 화면으로 돌아가 스크롤을 내리다가 `<div ref={setTarget} />` 이 부분이 화면에 노출되는 시점에 `follower` 또는 `following` 리스트를 가져오게 되는데 여기서 `follower`, `following` 리스트를 잘 가져오지만 문제가 생겼습니다. 위와같이 `follower`, `following` 리스트를 모달에서 보여주고 있습니다. 그리고 `follower`, `following` 스테이트들을 아래와같이 관리해주고 있습니다. `follower`, `following` 리스트 관련된 `state` 이름은 `followerList` `followingList`입니다. 그런데 무한스크롤을 했을때 새로운 `followerList`, `followingList` 가져와 추가해주게 되어서 `state`가 변경되는 바람에 `USER` 리듀서 안에 있는 `state`를 참조하는 모든 컴포넌트가 리렌더링되어 팔로잉, 팔로워 모달의 부모컴포넌트 또한 리렌더링되는 바람에 모달창도 리렌더링되는 문제가 생겼습니다. 다시 이유를 정리해서 말해보자면, 1. `USER` 리듀서 안에 `followerList`, `followingList`가 변경됨 2. `USER`안에 있는 `state`를 참조하는 모든 컴포넌트가 리렌더링 됨 3. `USER` 리듀서안에 존재하는 `me`, `userInfo`를 사용하는 팔로잉, 팔로워 모달의 부모컴포넌트 또한 리렌더링됨 부모컴포넌트에서 자식컴포넌트로 `visible={followerVisible}` 해당 `props`를 넘겨주게 되는데 기본값이 `false`입니다. // 팔로우 모달창의 부모컴포넌트 입니다. const [followVisible, setFollowVisible] = useState(false); (... 생략...) <Modal title="Followings" visible={followVisible} onCancel={modalCancleButtonHandler} okButtonProps={{ style: { display: 'none' } }} > 위와같은 이유로 팔로워 모달창 안에서 팔로워 리스트가 업데이트되면 팔로워 모달창의 부모컴포넌트가 리렌더링되어 모달창이 닫겨버리는데.. 팔로워 리스트를 `USER` 리듀서에서 빼서 따로 관리를 해야 문제가 해결될까요?..
-
미해결데브옵스(DevOps)를 위한 쿠버네티스 마스터
선생님 질문있습니다.
sudo ETCDTL_API~~~~save snapshotdb 과정에서 cacert랑 cert 지정해주고 연결해주는데 Eroor: open /etc/kubernetes/pki/etcd/server.crt: permission denied 뜹니다. 그래서 권한 설정을 다시 해주었는데도 계속 뜨는데 무엇이 문제인지 잘 모르겠습니다. ;;;
-
미해결단 두 장의 문서로 데이터 분석과 시각화 뽀개기
df[df.b == 7] & df[df.a == 5] 일 때 오류가 뜹니다.
df[df.b == 7] & df[df.a == 5] 를 하는데 동영상 처럼 정상 작동이 안되고 아래와 같은 오류가 떠요 --------------------------------------------------------------------------- TypeError Traceback (most recent call last) C:\ProgramData\Anaconda3\lib\site-packages\pandas\core\ops\array_ops.py in na_logical_op(x, y, op) 273 # (xint or xbool) and (yint or bool) --> 274 result = op(x, y) 275 except TypeError: TypeError: unsupported operand type(s) for &: 'float' and 'bool' During handling of the above exception, another exception occurred: TypeError Traceback (most recent call last) <ipython-input-115-a484abd3f4bf> in <module> ----> 1 df[df.b == 7] & df[df.a == 5] C:\ProgramData\Anaconda3\lib\site-packages\pandas\core\ops\__init__.py in f(self, other, axis, level, fill_value) 765 766 left, right = self.align(other, join="outer", level=level, copy=False) --> 767 new_data = left._combine_frame(right, pass_op, fill_value) 768 return left._construct_result(new_data) 769 C:\ProgramData\Anaconda3\lib\site-packages\pandas\core\frame.py in _combine_frame(self, other, func, fill_value, level) 5298 if ops.should_series_dispatch(self, other, func): 5299 # iterate over columns -> 5300 new_data = ops.dispatch_to_series(self, other, _arith_op) 5301 else: 5302 with np.errstate(all="ignore"): C:\ProgramData\Anaconda3\lib\site-packages\pandas\core\ops\__init__.py in dispatch_to_series(left, right, func, str_rep, axis) 417 raise NotImplementedError(right) 418 --> 419 new_data = expressions.evaluate(column_op, str_rep, left, right) 420 return new_data 421 C:\ProgramData\Anaconda3\lib\site-packages\pandas\core\computation\expressions.py in evaluate(op, op_str, a, b, use_numexpr) 206 use_numexpr = use_numexpr and _bool_arith_check(op_str, a, b) 207 if use_numexpr: --> 208 return _evaluate(op, op_str, a, b) 209 return _evaluate_standard(op, op_str, a, b) 210 C:\ProgramData\Anaconda3\lib\site-packages\pandas\core\computation\expressions.py in _evaluate_numexpr(op, op_str, a, b) 119 120 if result is None: --> 121 result = _evaluate_standard(op, op_str, a, b) 122 123 return result C:\ProgramData\Anaconda3\lib\site-packages\pandas\core\computation\expressions.py in _evaluate_standard(op, op_str, a, b) 68 _store_test_result(False) 69 with np.errstate(all="ignore"): ---> 70 return op(a, b) 71 72 C:\ProgramData\Anaconda3\lib\site-packages\pandas\core\ops\__init__.py in column_op(a, b) 386 387 def column_op(a, b): --> 388 return {i: func(a.iloc[:, i], b.iloc[:, i]) for i in range(len(a.columns))} 389 390 elif isinstance(right, ABCSeries) and axis == "columns": C:\ProgramData\Anaconda3\lib\site-packages\pandas\core\ops\__init__.py in <dictcomp>(.0) 386 387 def column_op(a, b): --> 388 return {i: func(a.iloc[:, i], b.iloc[:, i]) for i in range(len(a.columns))} 389 390 elif isinstance(right, ABCSeries) and axis == "columns": C:\ProgramData\Anaconda3\lib\site-packages\pandas\core\ops\common.py in new_method(self, other) 62 other = item_from_zerodim(other) 63 ---> 64 return method(self, other) 65 66 return new_method C:\ProgramData\Anaconda3\lib\site-packages\pandas\core\ops\__init__.py in wrapper(self, other) 550 rvalues = extract_array(other, extract_numpy=True) 551 --> 552 res_values = logical_op(lvalues, rvalues, op) 553 return _construct_result(self, res_values, index=self.index, name=res_name) 554 C:\ProgramData\Anaconda3\lib\site-packages\pandas\core\ops\array_ops.py in logical_op(left, right, op) 364 filler = fill_int if is_self_int_dtype and is_other_int_dtype else fill_bool 365 --> 366 res_values = na_logical_op(lvalues, rvalues, op) 367 res_values = filler(res_values) # type: ignore 368 C:\ProgramData\Anaconda3\lib\site-packages\pandas\core\ops\array_ops.py in na_logical_op(x, y, op) 279 x = ensure_object(x) 280 y = ensure_object(y) --> 281 result = libops.vec_binop(x, y, op) 282 else: 283 # let null fall thru pandas\_libs\ops.pyx in pandas._libs.ops.vec_binop() pandas\_libs\ops.pyx in pandas._libs.ops.vec_binop() TypeError: unsupported operand type(s) for &: 'float' and 'bool'
-
미해결파이썬 무료 강의 (활용편1) - 추억의 오락실 게임 만들기 (3시간)
캐릭터의 가로방향 움직임
캐릭터가 좌우로는 키를 눌렀을 때만 움직이는데 상하로는 키를 눌렀다가 때도 움직입니다. 코딩 어느 부분이 다른건지 모르겠네요. (파이참을 써서 하고 있기는 한데 그게 이유는 아니겠죠?) import pygame pygame.init() # screen screen_width = 480 screen_height = 640 screen = pygame.display.set_mode((screen_width, screen_height)) # title pygame.display.set_caption("MyGame") # import background image background = pygame.image.load("C:/Users/eagle/Desktop/PythonWorkspace/background.png") # import sprite(character) character = pygame.image.load("C:/Users/eagle/Desktop/PythonWorkspace/character.png") character_size = character.get_rect().size character_width = character_size[0] character_height = character_size[1] character_x_pos = (screen_width / 2) - (character_width / 2) character_y_pos = screen_height - character_height # moving position to_x = 0 to_y = 0 # event loop running = True # is the game running? while running: for event in pygame.event.get(): if event.type == pygame.QUIT: running = False if event.type == pygame.KEYDOWN: if event.key == pygame.K_LEFT: to_x -= 5 elif event.key == pygame.K_RIGHT: to_x += 5 elif event.key == pygame.K_UP: to_y -= 5 elif event.key == pygame.K_DOWN: to_y += 5 if event.type == pygame.KEYUP: if event.key == pygame.K_LEFT or event.key == pygame.K_RIGHT: to_x = 0 elif event.key == pygame.K_UP or event.key == pygame.K_DOWN: tp_y = 0 character_x_pos += to_x character_y_pos += to_y if character_x_pos < 0: character_x_pos = 0 elif character_x_pos > screen_width - character_width: character_x_pos = screen_width - character_width if character_y_pos < 0: character_y_pos = 0 elif character_y_pos > screen_height - character_height: character_y_pos = screen_height - character_height screen.blit(background, (0, 0)) screen.blit(character, (int(character_x_pos), int(character_y_pos))) pygame.display.update() # exit pygame.quit()
-
미해결리눅스 커맨드라인 툴 (Full ver.)
안녕하세요! 질문이 있습니다.
etc폴더에 passwd 파일로 텍스트변환 명령어를 연습해도 되는건가요??
-
해결됨스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
assertj 관련 질문드립니다(재질문)
Assertions 클래스를 사용할 수가 없습니다 ㅜㅜ 프로젝트 익스플로러의 maven 항목에도 추가되어있지 않은 것 같습니다.
-
미해결캐글 Advanced 머신러닝 실전 박치기
'application 데이터 세트 기본 Preprocessing 수행' 부분 관련 질문이 있습니다.
안녕하세요. 'application 데이터 세트 기본 Preprocessing 수행' 을 듣다가 질문이 있어 남깁니다. 파이썬 머신러닝 완벽가이드 책에서 LightGBM은 카테고리형 피처가 최적으로 변환이 된다고 나와있는데 레이블 인코딩을 하신 특별한 이유가 있나요?
-
해결됨스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
인텔리제이 처음 깔아서 프로젝트 첨만들어실행시 오류...
인텔레제이 커뮤니티버젼 처음 설치해서 실행했는데 오류납니다. https://start.spring.io 에서 프로젝트 압축파일 만들고 해제해서 프로젝트 불러와서 import 까지하고 메인메서드 실행했는데 자구 이렇게만 나오네요 ㅠㅜ 첫강의부터 왜 이런지 이해가안가네요....무슨 문제일까요? 제가 기존에 쓰던 자바 1.8버젼. ...즉 8버젼만 계속써왔는데 8버젼을 써서 그런가요? 강의에서는 11버젼쓰신거같은데....버젼문제는 아닌거같구요ㅠㅜ 콘솔창 에러메시지가 이렇게 나옵니다....>>> Execution failed for task ':HelloSpringApplication.main()'. > Process 'command 'C:/Program Files/Java/jdk1.8.0_261/bin/java.exe'' finished with non-zero exit value 1 * Try: Run with --stacktrace option to get the stack trace. Run with --info or --debug option to get more log output. Run with --scan to get full insights. 제발 답변좀 부탁드립니다.....강의내용보고 하란대로 다 고대로 따라했는데도 이럽니다....
-
미해결스프링 핵심 원리 - 기본편
AppConfig와 @Component 관련 질문있습니다~
1. 웹 서비스 개발할 때 Spring MVC 에서도 AppConfig 처럼 config를 만들어서 사용하나요?(controller, service, dao 만 만들었던 기억이 있어서용..) 2. @Component 대신 @Service , @Repository 사용가능 한 것으로 알고있는데, 쌤은 왜 @Component로 설명해주신건지 궁금합니다.
-
미해결리눅스 쉘 스크립트 마스터
정규 표현식 비교 질문
정규 표현식부터 난이도가 높아져서 이해가 잘 안되고 있습니다. Bash는 여러 특수 문자의 조합들이 의미하는것이 어려운데요...... 아래 2가지 질문에 다시 한번 설명해주시면 감사하겠습니다. 1. if [[ $LANG =~ $locale ]] : =~ 우측 표현식($locale)이 좌측 표현식($LANG)을 포함할때 사용이 가능한건가요? 부연 설명 드리자면, $LANG 입력시 "en_US.UTF-8" 결괏값이 나오는데, locale 명령어에 이 결괏값이 포함되어 있어야만 정규 표현식 비교가 가능한지 궁금합니다. 2. =~ 는 그냥 일반적인 산술 연산시 = 와 같은 일종의 문법인건가요?
-
미해결스프링 부트 개념과 활용
Failed to start component
7070 7080 8090도 다 해봤는데 안되는데 어떻게 해야되나요 ㅠㅠ 혹시나 포트가 안죽어서 안되나해서 포트도 다 죽였는데 이렇게 뜨네요 ㅠㅠ 이클립스로 하고 있습니다.
-
미해결리눅스 쉘 스크립트 마스터
if [[ ! $REPLY =~ ^[Yy]$ ]]; then exit1; fi 질문
안녕하세요. 강사님. if [[ ! $REPLY =~ ^[Yy]$ ]]; then exit1; fi 위 명령어가 이해가 가지 않습니다. 특히, ^[Yy]$ <--- 이 부분이 양 옆으로 왜 ^, $ 으로 감싸야하는건지 디테일한 설명 부탁드립니다.
-
미해결모의해킹 실무자가 알려주는, 파일 업로드 취약점 공격 기법과 실무 사례 분석 : PART 1
웹쉘을 탐지하는 것이 매우 어렵다고 말씀하셨는데..
웹쉘을 탐지하는 것이 매우 어렵다고 말씀하셨는데, 혹시 정확히 어떤 부분때문에 탐지가 어려운 것인지 추가설명해주실수 있을까요?
-
미해결스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
빌드시 오류가 납니다..
안녕하세요. 김영한강사님! 지금까지 잘 따라오다가 빌드에서 막혀서 질문드립니다 ERROR: JAVA_HOME is set to an invalid directory: C:\Program Files\Java\jdk1.8.0_241 오류메시지입니다.. ㅠㅠ JAVA 11버전을 받고 환경변수에서 JAVA_HOME 및 Path 설정까지 완료하고 java -version, javac -version 하면 정상적으로 버전이 나오는데 ./grawdlew.bat 을 하면 저 에러메시지가 표시됩니다.. 구글링해봤는데 환경변수에 bin 폴더를 포함하지 말라는 글이 대부분이라서 어디가 문제인지 잘 모르겠습니다.(환경변수에는 bin 폴더가 포함되어있지 않습니다.)
-
미해결HTML+CSS+JS 포트폴리오 실전 퍼블리싱(시즌1)
영상길이에 대해서 질문하고 싶습니다.
[완성본 제작노트] HTML+CSS 실전 퍼블리싱 제작(Part 2) 를 보고 있는데 27분 짜리 영상이 15분 40초 쯤부터 까만화면이더라구요 원래 그런건가요? 오류인가해서용
-
미해결스프링 기반 REST API 개발
asciidoctor 에러
html 파일로 만들어주는 build 중 Execution failed for task ':asciidoctor'. >(LoadError) no such file to load -- asciidoctor 라는 오류가 뜹니다. 어디 부분이 문제길레 로드에러가 뜨는지 알고싶습니다...
-
미해결따라하며 배우는 도커와 CI환경 [2023.11 업데이트]
FROM 관련 질문드립니다.
전 강의에서 FROM은 OS라고 생각하라고 하셨는데 알파인은 리눅스 배포판으로 알고 있습니다. 그리고 도커는 기본 리눅스 위에서 돌고 있다고 배운걸로 기억하고요. 그렇다면 리눅스 위에 리눅스가 컨테이너에 들어가는 건가요? 그리고 컨테이너에 OS가 들어간다는 설명도 VM과의 차이점 중에 하나가 게스트OS라고 배웠는데 컨테이너에 OS가 들어간다고 하시니까 헷갈리네요,, 답변 부탁 드립니다.
-
미해결따라하며 배우는 도커와 CI환경 [2023.11 업데이트]
CMD 관련 질문 드립니다
CMD ["node", "server.js"] 위와 같이 나누어서 명령어를 나누어서 써야 하는 규칙이 있습니까? 아래와 같이 하나로 명령어를 쓰는건 안되는건지요? CMD ["node server.js"]
-
미해결남박사의 파이썬으로 실전 웹사이트 만들기
jinja2 오류
글 리스트 강의 보고 있는 중입니다. list.html 짜고 있는데 이상하게 jinja2가 작동하지 않네요...;; {% if datas|length > 0 %}<table> <thead> <tr> <td>번호</td> <td>제목</td> <td>이름</td> <td>날짜</td> <td>조회수</td> </tr> </thead> <tbody> <!--반복되는 구간--> <% for data in datas %> <tr> <td></td> <td>{{datas.name}}</td> <td>{{datas.pubdate | formatdatetime}}</td> <td>{{datas.view}}</td> </tr> <% endfor %> <!--반복되는 구간 끝--> </tbody></table>{% else %} <h4> NO DATAS!!</h4>{% endif %} 위처럼 datas.count() 가 안되서 datas|length 이렇게 바꿨습니다. 그리고 <% for data in datas %> 이부분도 for문이 실행안되고 그냥 화면에 저 코드가 그대로 노출됩니다. 당연히 for문이 안돌아서 datas.title에 있던 idx=data._id도 안되서 지웠습니다..ㅜㅜ jinja2 버전은 2.11.2 입니다...ㅜㅜ 왜 이러는 걸까요..?ㅜㅜ