#import

질문 3
해시태그 없이 키워드만 일치하는 질문은 개수에 포함되지 않아요.

6달 전 · 익명 님의 질문 업데이트

ReactNative Xcode 16. RCTAppDelegate.h not find

안녕하세요? 에러로 고통받다가 커리어리에 남겨봅니다. ReactNative 프로젝트로 테스트플라이트 배포상태에서 3주가 지나 지난주 Xcode 16으로 업데이트 되었는데요. 그 뒤 ios 버전, 라이브러리 버전 문제는 해결했는데. Xcode 에서 build /ios/프로젝트명/AppDelegate.h 파일에서 #import <RCTAppDelegate.h> 파일을 찾을 수 없다고 나옵니다. 사양 1. M2, Sequoia 2. react-native : 0.74.3 3. Xcode 16.1 문제 해결을 위해 시도한 방법 입니다. 1. #import <React/RCTAppDelegate.h> 바꿔봄 2. #import "AppDelegate.h" 바꿔봄 3. node_module/react-native/React/Base/에서 헤더파일 찾아봄 -> 없음 4. node_module/react-native/ReactCommon/에서 헤더파일 찾아봄 -> 없음 5. 대체할 수 있는 방법 찾아봄 GPT에서 제안한 방법으로 수정 -> 결과 : 파일 찾을 수 없음 #import <UIKit/UIKit.h> #import <React/RCTBridgeDelegate.h> @interface AppDelegate : UIResponder <UIApplicationDelegate, RCTBridgeDelegate> @property (nonatomic, strong) UIWindow *window; @end 6. Xcode에서 경로를 추가해봄 -> 결과 : 파일 찾을 수 없음 6-1. Xcode > BuildSetting > search header 에 경로를 추가했습니다. "$(SRCROOT)/../node_modules/react-native/React", "$(SRCROOT)/../node_modules/react-native/ReactCommon", "$(SRCROOT)/../node_modules/react-native/ReactCommon/cxxreact", "$(SRCROOT)/../node_modules/react-native/Libraries", 6-2. Xcode > BuildSetting > Frame search header에 경로를 추가했습니다. "$(inherited)", "$(SRCROOT)/../node_modules/react-native/React", "$(SRCROOT)/../node_modules/react-native/ReactCommon", 7. pod 재설치, react-native 재설치, 캐시 삭제 및 라이브러리 업데이트 등.. pod.lock, Podfile, node_module, build 파일, DerivedData 폴더 삭제 후 전부 재설치. pod install --repo-update 헤르메스 사용 설정 및 use_frameworks! :linkage => :static 설정 확인. 8. react-native 최신버전(0.76.3)으로 재설치 참고 사이트 및 GPT, Monica 질의응답 공유 링크 https://github.com/facebook/react-native/issues/36611 https://stackoverflow.com/questions/75822104/rctappdelegate-h-file-not-found https://chatgpt.com/share/674e6dcf-89f8-800f-b0e6-4fa2fe58419b https://monica.im/share/chat?shareId=CQ18cvvPvsMc0r3U ** 유의미한 정보를 주신분께 감사의 마음으로 많지는 않지만 스타벅스 커피쿠폰을 드립니다 살려주세요..

개발자

#reactnative-run-ios

#xcode

#appdelegate.h

답변 0

댓글 0

조회 203

7달 전 · 유길종 님의 답변 업데이트

Nextjs with tailwind기반 ui라이브러리 질문

프론트엔드 취업전인 학생입니다. Rollup으로 라이브러리 번들 관련하여 질문입니다. 제작 현시점은 사용자가 컴포넌트를 import 하였을때 사용자가 tailwind.config.ts에 node_module경로의 제 라이브러리를 경로를 설정해야 스타일이 적용이 되는상황입니다. 개발자도구 element에는 텍스트상 적용이돼있는데 해당 방법말고는 못찾았습니다. 개발자분들의 좋은의견 부탁드립니다. 아래는 현재 rollup.config.js입니다.

개발자

#next.js

#react

#tailwindcss

#rollup

#library

답변 1

댓글 0

보충이 필요해요 1

조회 72

7달 전 · 익명 님의 질문

파이참 코딩 질문입니다.

import pandas as pd import pyautogui score_A = 0 #쾌락 score_B = 0 #사회적환경 score_C = 0 #보복심리 score_D = 0 #B와C가 점수가 같을때를 위해 만듦. question1 = pyautogui.prompt('난 가정 폭력을 당한적 있다.') #질문1 if question1 == "o": #만약 질문1에 맞다고 대답 한다면 score_B += 1 #사회적환경에 1점 추가 score_C += 1 #보복심리에 1점추가 question2 = pyautogui.prompt('난 학교 폭력을 당한적 있다.') #질문2 if question2 == "o": #만약 질문2에 맞다고 대답한다면 score_B += 1 #사회적환경에 1점추가 score_C += 1 #보복심리에 1점추가 question3 = pyautogui.prompt('난 여아가 이성적 으로 좋다.') #질문3 if question3 == "o": #만약 질문3에 맞다고 대답한다면 score_A += 1 #쾌락에 1점추가 question4 = pyautogui.prompt('난 살인을 할때 쾌락을 느낀다.') #질문4 if question4 == "o": #만약 질문4에 맞다고 대답한다면 score_A += 1 #쾌락에 1점추가 question5 = pyautogui.prompt('나의 범죄는 충동적 이였다.') #질문5 if question5 == "o": score_A ++ 0 #딱히 아무 일 없음 question6 = pyautogui.prompt('난 반 사회적 인격 장애를 진단 받은적 있다.') #질문6 if question6 == "o": #질문6에 맞다고 대답한다면 score_A += 1 #쾌락에 1점추가 score_C += 1 #사회적환경에 1점추가 question7 = pyautogui.prompt('나의 인간관계는 좋지않다.') #질문7 if question7 == "o": #질문7에 맞다고 대답한다면 score_B += 1 #사회적환경에 1점추가 question8 = pyautogui.prompt('난 예전에 아동범죄 피해자였다.') #질문8 if question8 == "o": #만약 질문10에 맞다고 대답한다면 score_C += 1 #보복심리에 1점추가 question9 = pyautogui.prompt('나의 범죄는 계획적이였다.') #질문9 answer_list = [] #질문리스트 answer_list.append(question1) #질문리스트에 질문1~9를 추가하는것. answer_list.append(question2) # answer_list.append(question3) # answer_list.append(question4) # answer_list.append(question5) # answer_list.append(question6) # answer_list.append(question7) # answer_list.append(question8) # answer_list.append(question9) # print(answer_list) #질문리스트를 보여지게함 survey_dict= {'문항번호': [1,2,3,4,5,6,7,8,9], '내용': answer_list, } survey_df = pd.DataFrame(survey_dict).set_index("문항번호") #위의 survey_dict을 데이터프레임 형태로 변환. print(survey_df) #데이터프레임으로 변환한 survey_dict를 출력 if score_B == score_C: #만약 사회적환경과 보복심리의 점수가 같다면 score_D += 10 #스코어D에 점수 10점 추가 score_dict = {'A': score_A, 'B': score_B, 'C': score_C, 'D': score_D} #각각의 점수를 딕셔너리(dict)로 저장함. max_score = max(score_dict.values()) #딕셔너리값중 최댓값을 찾아냄. if max_score == score_A: #만약 최댓값이A라면 아래 문장을 출력 print("설문자는 단순한 쾌락을 위해 범죄를 저질렀을것으로 추정됩니다.") if max_score == score_B: #만약 최댓값이 B라면 아래 문장을 출력 print("설문자는 사회적인 환경으로 인해 범죄를 저질렀을것으로 추정됩니다.") if max_score == score_C: #만약 최댓값이 C라면 아래 문장을 출력 print("설문자는 어릴적환경으로 인한 보복심리때문에 범죄를 저질렀을것으로 추정됩니다.") if max_score == score_D: #만약 최댓값이 D라면 아래문장을 출력 print("설문자는 현재의 사회적환경과 어릴적환경으로 인한 보복심리로 인해 범죄를 저질렀을것으로 추정됩니다.") if question9 == "o": #질문9에 맞다고 대답했을때 if question5 == "o": #질문5에도 맞다고 대답한다면 print("설문자가 솔직하게 문항에 답하고있지 않습니다.") #설문자가 제대로 설문에 응하고 있지 않다고 판단. 라는 코드에서 pandas가 어떤 영향을 줬을까요?

개발자

#코딩

#파이참

#pandas

답변 0

댓글 0

조회 20

7달 전 · 성희 님의 질문

파이참 코딩 관련 질문

import pandas as pd #데이터를 쉽고 효율적으로 처리하기 위해 사용하는 라이브러리 import pyautogui #GUI automation 라이브러리로, 마우스 클릭, 키보드 입력 등의 작업을 자동화하는데 사용 score_A = 0 #쾌락 score_B = 0 #사회적환경 score_C = 0 #보복심리 score_D = 0 #B와C가 점수가 같을때를 위해 만듦. question1 = pyautogui.prompt('난 가정 폭력을 당한적 있다.') #질문1 if question1 == "o": #만약 질문1에 맞다고 대답 한다면 score_B += 1 #사회적환경에 1점 추가 score_C += 1 #보복심리에 1점추가 question2 = pyautogui.prompt('난 학교 폭력을 당한적 있다.') #질문2 if question2 == "o": #만약 질문2에 맞다고 대답한다면 score_B += 1 #사회적환경에 1점추가 score_C += 1 #보복심리에 1점추가 question3 = pyautogui.prompt('난 여아가 이성적 으로 좋다.') #질문3 if question3 == "o": #만약 질문3에 맞다고 대답한다면 score_A += 1 #쾌락에 1점추가 question4 = pyautogui.prompt('난 살인을 할때 쾌락을 느낀다.') #질문4 if question4 == "o": #만약 질문4에 맞다고 대답한다면 score_A += 1 #쾌락에 1점추가 question5 = pyautogui.prompt('나의 범죄는 충동적 이였다.') #질문5 if question5 == "o": score_A ++ 0 #딱히 아무 일 없음 question6 = pyautogui.prompt('난 반 사회적 인격 장애를 진단 받은적 있다.') #질문6 if question6 == "o": #질문6에 맞다고 대답한다면 score_A += 1 #쾌락에 1점추가 score_C += 1 #사회적환경에 1점추가 question7 = pyautogui.prompt('나의 인간관계는 좋지않다.') #질문7 if question7 == "o": #질문7에 맞다고 대답한다면 score_B += 1 #사회적환경에 1점추가 question8 = pyautogui.prompt('난 예전에 아동범죄 피해자였다.') #질문8 if question8 == "o": #만약 질문10에 맞다고 대답한다면 score_C += 1 #보복심리에 1점추가 question9 = pyautogui.prompt('나의 범죄는 계획적이였다.') #질문9 answer_list = [] #답변리스트 answer_list.append(question1) #답변리스트에 질문1~9를 추가하는것. answer_list.append(question2) # answer_list.append(question3) # answer_list.append(question4) # answer_list.append(question5) # answer_list.append(question6) # answer_list.append(question7) # answer_list.append(question8) # answer_list.append(question9) # print(answer_list) #질문리스트를 보여지게함 survey_dict= {'문항번호': [1,2,3,4,5,6,7,8,9], '내용': answer_list, } survey_df = pd.DataFrame(survey_dict).set_index("문항번호") #위의 survey_dict을 데이터프레임 형태로 변환. print(survey_df) #데이터프레임으로 변환한 survey_dict를 출력 if score_B == score_C: #만약 사회적환경과 보복심리의 점수가 같다면 score_D += 10 #스코어D에 점수 10점 추가 score_dict = {'A': score_A, 'B': score_B, 'C': score_C, 'D': score_D} #각각의 점수를 딕셔너리(dict)로 저장함. max_score = max(score_dict.values()) #딕셔너리값중 최댓값을 찾아냄. if max_score == score_A: #만약 최댓값이A라면 아래 문장을 출력 print("설문자는 단순한 쾌락을 위해 범죄를 저질렀을것으로 추정됩니다.") if max_score == score_B: #만약 최댓값이 B라면 아래 문장을 출력 print("설문자는 사회적인 환경으로 인해 범죄를 저질렀을것으로 추정됩니다.") if max_score == score_C: #만약 최댓값이 C라면 아래 문장을 출력 print("설문자는 어릴적환경으로 인한 보복심리때문에 범죄를 저질렀을것으로 추정됩니다.") if max_score == score_D: #만약 최댓값이 D라면 아래문장을 출력 print("설문자는 현재의 사회적환경과 어릴적환경으로 인한 보복심리로 인해 범죄를 저질렀을것으로 추정됩니다.") if question9 == "o": #질문9에 맞다고 대답했을때 if question5 == "o": #질문5에도 맞다고 대답한다면 print("설문자가 솔직하게 문항에 답하고있지 않습니다.") #설문자가 제대로 설문에 응하고 있지 않다고 판단. 여기서 score_dict = {'A': score_A, 'B': score_B, 'C': score_C, 'D': score_D} 가 하는 역할은 무엇일까요?

개발자

#코딩

#역할

#파이참

#파이썬

답변 0

댓글 0

조회 28

7달 전 · 익명 님의 질문

파이참 코딩 관련 질문

import pandas as pd #데이터를 쉽고 효율적으로 처리하기 위해 사용하는 라이브러리 import pyautogui #GUI automation 라이브러리로, 마우스 클릭, 키보드 입력 등의 작업을 자동화하는데 사용 score_A = 0 #쾌락 score_B = 0 #사회적환경 score_C = 0 #보복심리 score_D = 0 #B와C가 점수가 같을때를 위해 만듦. question1 = pyautogui.prompt('난 가정 폭력을 당한적 있다.') #질문1 if question1 == "o": #만약 질문1에 맞다고 대답 한다면 score_B += 1 #사회적환경에 1점 추가 score_C += 1 #보복심리에 1점추가 question2 = pyautogui.prompt('난 학교 폭력을 당한적 있다.') #질문2 if question2 == "o": #만약 질문2에 맞다고 대답한다면 score_B += 1 #사회적환경에 1점추가 score_C += 1 #보복심리에 1점추가 question3 = pyautogui.prompt('난 여아가 이성적 으로 좋다.') #질문3 if question3 == "o": #만약 질문3에 맞다고 대답한다면 score_A += 1 #쾌락에 1점추가 question4 = pyautogui.prompt('난 살인을 할때 쾌락을 느낀다.') #질문4 if question4 == "o": #만약 질문4에 맞다고 대답한다면 score_A += 1 #쾌락에 1점추가 question5 = pyautogui.prompt('나의 범죄는 충동적 이였다.') #질문5 if question5 == "o": score_A ++ 0 #딱히 아무 일 없음 question6 = pyautogui.prompt('난 반 사회적 인격 장애를 진단 받은적 있다.') #질문6 if question6 == "o": #질문6에 맞다고 대답한다면 score_A += 1 #쾌락에 1점추가 score_C += 1 #사회적환경에 1점추가 question7 = pyautogui.prompt('나의 인간관계는 좋지않다.') #질문7 if question7 == "o": #질문7에 맞다고 대답한다면 score_B += 1 #사회적환경에 1점추가 question8 = pyautogui.prompt('난 예전에 아동범죄 피해자였다.') #질문8 if question8 == "o": #만약 질문10에 맞다고 대답한다면 score_C += 1 #보복심리에 1점추가 question9 = pyautogui.prompt('나의 범죄는 계획적이였다.') #질문9 answer_list = [] #답변리스트 answer_list.append(question1) #답변리스트에 질문1~9를 추가하는것. answer_list.append(question2) # answer_list.append(question3) # answer_list.append(question4) # answer_list.append(question5) # answer_list.append(question6) # answer_list.append(question7) # answer_list.append(question8) # answer_list.append(question9) # print(answer_list) #질문리스트를 보여지게함 survey_dict= {'문항번호': [1,2,3,4,5,6,7,8,9], '내용': answer_list, } survey_df = pd.DataFrame(survey_dict).set_index("문항번호") #위의 survey_dict을 데이터프레임 형태로 변환. print(survey_df) #데이터프레임으로 변환한 survey_dict를 출력 if score_B == score_C: #만약 사회적환경과 보복심리의 점수가 같다면 score_D += 10 #스코어D에 점수 10점 추가 score_dict = {'A': score_A, 'B': score_B, 'C': score_C, 'D': score_D} #각각의 점수를 딕셔너리(dict)로 저장함. max_score = max(score_dict.values()) #딕셔너리값중 최댓값을 찾아냄. if max_score == score_A: #만약 최댓값이A라면 아래 문장을 출력 print("설문자는 단순한 쾌락을 위해 범죄를 저질렀을것으로 추정됩니다.") if max_score == score_B: #만약 최댓값이 B라면 아래 문장을 출력 print("설문자는 사회적인 환경으로 인해 범죄를 저질렀을것으로 추정됩니다.") if max_score == score_C: #만약 최댓값이 C라면 아래 문장을 출력 print("설문자는 어릴적환경으로 인한 보복심리때문에 범죄를 저질렀을것으로 추정됩니다.") if max_score == score_D: #만약 최댓값이 D라면 아래문장을 출력 print("설문자는 현재의 사회적환경과 어릴적환경으로 인한 보복심리로 인해 범죄를 저질렀을것으로 추정됩니다.") if question9 == "o": #질문9에 맞다고 대답했을때 if question5 == "o": #질문5에도 맞다고 대답한다면 print("설문자가 솔직하게 문항에 답하고있지 않습니다.") #설문자가 제대로 설문에 응하고 있지 않다고 판단. 에서 survey_dict= {'문항번호': [1,2,3,4,5,6,7,8,9], '내용': answer_list, } 이 어떤 역할을 할까요?

개발자

#코딩

#역할

#파이참

답변 0

댓글 0

조회 17

7달 전 · 성희 님의 질문

파이참 코딩 관련 질문

import pandas as pd #데이터를 쉽고 효율적으로 처리하기 위해 사용하는 라이브러리 import pyautogui #GUI automation 라이브러리로, 마우스 클릭, 키보드 입력 등의 작업을 자동화하는데 사용 score_A = 0 #쾌락 score_B = 0 #사회적환경 score_C = 0 #보복심리 score_D = 0 #B와C가 점수가 같을때를 위해 만듦. question1 = pyautogui.prompt('난 가정 폭력을 당한적 있다.') #질문1 if question1 == "o": #만약 질문1에 맞다고 대답 한다면 score_B += 1 #사회적환경에 1점 추가 score_C += 1 #보복심리에 1점추가 question2 = pyautogui.prompt('난 학교 폭력을 당한적 있다.') #질문2 if question2 == "o": #만약 질문2에 맞다고 대답한다면 score_B += 1 #사회적환경에 1점추가 score_C += 1 #보복심리에 1점추가 question3 = pyautogui.prompt('난 여아가 이성적 으로 좋다.') #질문3 if question3 == "o": #만약 질문3에 맞다고 대답한다면 score_A += 1 #쾌락에 1점추가 question4 = pyautogui.prompt('난 살인을 할때 쾌락을 느낀다.') #질문4 if question4 == "o": #만약 질문4에 맞다고 대답한다면 score_A += 1 #쾌락에 1점추가 question5 = pyautogui.prompt('나의 범죄는 충동적 이였다.') #질문5 if question5 == "o": score_A ++ 0 #딱히 아무 일 없음 question6 = pyautogui.prompt('난 반 사회적 인격 장애를 진단 받은적 있다.') #질문6 if question6 == "o": #질문6에 맞다고 대답한다면 score_A += 1 #쾌락에 1점추가 score_C += 1 #사회적환경에 1점추가 question7 = pyautogui.prompt('나의 인간관계는 좋지않다.') #질문7 if question7 == "o": #질문7에 맞다고 대답한다면 score_B += 1 #사회적환경에 1점추가 question8 = pyautogui.prompt('난 예전에 아동범죄 피해자였다.') #질문8 if question8 == "o": #만약 질문10에 맞다고 대답한다면 score_C += 1 #보복심리에 1점추가 question9 = pyautogui.prompt('나의 범죄는 계획적이였다.') #질문9 answer_list = [] #답변리스트 answer_list.append(question1) #답변리스트에 질문1~9를 추가하는것. answer_list.append(question2) # answer_list.append(question3) # answer_list.append(question4) # answer_list.append(question5) # answer_list.append(question6) # answer_list.append(question7) # answer_list.append(question8) # answer_list.append(question9) # 이 코드에서 answer_list.append(question)이 의미하는것은 무엇인가요?

개발자

#코딩

#파이참

#의미

답변 0

댓글 0

조회 13

7달 전 · 문종호 님의 답변 업데이트

파이참 코딩 관련 질문

import pandas as pd import pyautogui 이 두개가 의미하는게 뭔가요

개발자

#코딩

#파이참

#의미

답변 1

댓글 0

조회 24

7달 전 · 익명 님의 질문

파이참 코딩 관련 질문

import pandas as pd import pyautogui score_A = 0 #쾌락 score_B = 0 #사회적환경 score_C = 0 #보복심리 question1 = pyautogui.prompt('난 가정 폭력을 당한적 있다.') #질문1 if question1 == "o": #만약 질문1에 맞다고 대답 한다면 score_B += 1 #환경에 1점 추가 score_C += 1 #보복심리에 1점추가 question2 = pyautogui.prompt('난 학교 폭력을 당한적 있다.') #질문2 if question2 == "o": #만약 질문2에 맞다고 대답한다면 score_B += 1 #환경에 1점추가 score_C += 1 #보복심리에 1점추가 question3 = pyautogui.prompt('난 여아가 이성적 으로 좋다.') #질문3 if question3 == "o": #만약 질문3에 맞다고 대답한다면 score_A += 1 #쾌락에 1점추가 question4 = pyautogui.prompt('난 살인을 할때 쾌락을 느낀다.') #질문4 if question4 == "o": #만약 질문4에 맞다고 대답한다면 score_A += 1 #쾌락에 1점추가 question5 = pyautogui.prompt('나의 범죄는 충동적 이였다.') #질문5 if question5 == "o": score_A ++ 0 #딱히 아무 일 없음 question6 = pyautogui.prompt('난 반 사회적 인격 장애를 진단 받은적 있다.') #질문6 if question6 == "o": #질문6에 맞다고 대답한다면 score_A += 1 #쾌락에 1점추가 score_C += 1 #사회적환경에 1점추가 question7 = pyautogui.prompt('나의 인간관계는 좋지않다.') #질문7 if question7 == "o": #질문7에 맞다고 대답한다면 score_B += 1 #사회적환경에 1점추가 question8 = pyautogui.prompt('난 예전에 아동범죄 피해자였다.') #질문8 if question8 == "o": #만약 질문10에 맞다고 대답한다면 score_C += 1 #보복심리에 1점추가 question9 = pyautogui.prompt('나의 범죄는 계획적이였다.') #질문9 answer_list = [] answer_list.append(question1) answer_list.append(question2) answer_list.append(question3) answer_list.append(question4) answer_list.append(question5) answer_list.append(question6) answer_list.append(question7) answer_list.append(question8) answer_list.append(question9) print(answer_list) survey_dict= {'문항번호': [1,2,3,4,5,6,7,8,9], '내용': answer_list, } survey_df = pd.DataFrame(survey_dict).set_index("문항번호") print(survey_df) 이 코드에서 점수 결과값이 가장 높은 스코어만 프린트로 출력해내고싶은데 어떻게해야할까요?

개발자

#코딩

#파이참

답변 0

댓글 0

조회 12

7달 전 · 익명 님의 질문

파이참 관련 질문드립니다

import pandas as pd import pyautogui score_A = 0 #쾌락 score_B = 0 #사회적환경 score_C = 0 #보복심리 question1 = pyautogui.prompt('난 가정 폭력을 당한적 있다.') #질문1 if question1 == "o": #만약 질문1에 맞다고 대답 한다면 score_B += 1 #환경에 1점 추가 score_C += 1 #보복심리에 1점추가 question2 = pyautogui.prompt('난 학교 폭력을 당한적 있다.') #질문2 if question2 == "o": #만약 질문2에 맞다고 대답한다면 score_B += 1 #환경에 1점추가 score_C += 1 #보복심리에 1점추가 question3 = pyautogui.prompt('난 여아가 이성적 으로 좋다.') #질문3 if question3 == "o": #만약 질문3에 맞다고 대답한다면 score_A += 1 #쾌락에 1점추가 question4 = pyautogui.prompt('난 살인을 할때 쾌락을 느낀다.') #질문4 if question4 == "o": #만약 질문4에 맞다고 대답한다면 score_A += 1 #쾌락에 1점추가 question5 = pyautogui.prompt('나의 범죄는 충동적 이였다.') #질문5 if question5 == "o": question6 = pyautogui.prompt('난 반 사회적 인격 장애를 진단 받은적 있다.') #질문6 if question6 == "o": #질문6에 맞다고 대답한다면 score_A += 1 #쾌락에 1점추가 score_C += 1 #사회적환경에 1점추가 question7 = pyautogui.prompt('나의 인간관계는 좋지않다.') #질문7 if question7 == "o": #질문7에 맞다고 대답한다면 score_B += 1 #사회적환경에 1점추가 question8 = pyautogui.prompt('난 예전에 아동범죄 피해자였다.') #질문8 if question8 == "o": #만약 질문10에 맞다고 대답한다면 score_C += 1 #보복심리에 1점추가 question9 = pyautogui.prompt('나의 범죄는 계획적이였다.') #질문9 if question9 == "o": #질문9에 맞다고 대답했을때 if question5 == "o": #질문5에도 맞다고 대답한다면 print("설문자가 솔직하게 문항에 답하고있지 않습니다.") #설문자가 제대로 설문에 응하고 있지 않다고 판단. answer_list = [] answer_list.append(question1) answer_list.append(question2) answer_list.append(question3) answer_list.append(question4) answer_list.append(question5) answer_list.append(question6) answer_list.append(question7) answer_list.append(question8) answer_list.append(question9) answer_list.append(question10) print(answer_list) survey_dict= {'문항번호': [1,2,3,4,5,6,7,8,9,10], '내용': answer_list, } survey_df = pd.DataFrame(survey_dict).set_index("문항번호") print(survey_df) 이 코드에서 IndentationError: expected an indented block after 'if' statement on line 23 이런 오류코드가 뜨는데 어떤 이유때문일까요?

개발자

#코딩

#파이참

#오류코드

답변 0

댓글 0

조회 11

7달 전 · 익명 님의 질문

파이참 코딩 관련 질문

import pandas as pd import pyautogui score_A : 0 #단순 쾌락 score_B : 0 #경제 적압박 score_C : 0 #사회 적압박 score_D : 0 #유전 score_E : 0 #보복 score_F : 0 #환경 question1 = pyautogui.prompt('난 가정 폭력을 당한적 있다.') #질문1 if question1 == "o": #만약 질문1에 맞다고 대답 한다면 score_E += 1 #환경에 1점 추가 score_D += 1 #유전에 1점 추가 question2 = pyautogui.prompt('난 학교 폭력을 당한적 있다.') question3 = pyautogui.prompt('난 여아가 이성적 으로 좋다.') question4 = pyautogui.prompt('난 가정 형편 또는 개인 적인 형편이 좋지 않다.') question5 = pyautogui.prompt('나의 범죄는 충동적 이였다.') question6 = pyautogui.prompt('난 반 사회적 인격 장애를 진단 받은적 있다.') question7 = pyautogui.prompt('난 대인 관계에 능통치 못하다.') question8 = pyautogui.prompt('난 감정 기복이 심하다.') question9 = pyautogui.prompt('나의 범죄는 계획적 이였다.') question10 = pyautogui.prompt('난 주변에 친한 사람이 없다.') answer_list = [] answer_list.append(question1) answer_list.append(question2) answer_list.append(question3) answer_list.append(question4) answer_list.append(question5) answer_list.append(question6) answer_list.append(question7) answer_list.append(question8) answer_list.append(question9) answer_list.append(question10) print(answer_list) survey_dict= {'문항번호': [1,2,3,4,5,6,7,8,9,10], '내용': answer_list, } survey_df = pd.DataFrame(survey_dict).set_index("문항번호") print(survey_df) 이 코드에서 NameError: name 'score_E' is not defined 라는 오류가 자꾸 뜨는데 왜때문인가요??ㅠㅠ

개발자

#파이참

#코딩

#심리테스트

답변 0

댓글 0

조회 19

9달 전 · 유호준 님의 질문

NavigationContainer 중첩 오류

안녕하세요, RN(Expo)로 React Navigation을 적용하다 오류가 해결되지 않아서 질문드립니다. expo를 통해 다음과 같이 index.js에 React Navigation을 적용했습니다. import { store } from "@/redux/store"; import MainScreen from "./screens/MainScreen"; import { Provider } from "react-redux"; import { NavigationContainer } from "@react-navigation/native"; import { createNativeStackNavigator } from "@react-navigation/native-stack"; import LoginScreen from "./screens/LoginScreen"; export default function HomeScreen() { const Stack = createNativeStackNavigator(); return ( <Provider store={store}> <NavigationContainer> <Stack.Navigator> <Stack.Screen name="Main" component={MainScreen} /> <Stack.Screen name="Login" component={LoginScreen} />{" "} </Stack.Navigator> </NavigationContainer> </Provider> ); } 그러나 다음과 같은 오류가 뜨며 빈화면만 보이더라구요ㅠ Error: Looks like you have nested a 'NavigationContainer' inside another. Normally you need only one container at the root of the app, so this was probably an error. If this was intentional, pass 'independent={true}' explicitly. Note that this will make the child navigators disconnected from the parent and you won't be able to navigate between them. 찾아보니 NavigationContainer가 중첩되었다는 것 같은데, 저는 계속해서 그대로 강의를 따라가고 있었고, 따로 NavigationContainer를 적용한 파일이 존재하지 않습니다 ㅠ 다음 속성을 추가해도 오류가 해결되지 않습니다 ㅠ 아마 어디선가 부모에서 NavigationContainer가 적용된 것 같은데 찾을 수가 없네요 ㅠㅠ independent={true} 조금 더 찾아보니 expo-router랑 충돌이 난 거일 수도 있다는데 정확하게 모르겠네요 ㅠ

개발자

#react-native

#react-navigation

#expo

#navigationcontainer

답변 0

댓글 0

조회 107

9달 전 · 익명 님의 질문

리액트 네이티브 릴리즈로 배포 시 build.gradle 설정대로 동작 안하는 이유가 뭔지 궁긍합니다.

안녕하세요. 현재 리액트 네이티브로 프로젝트를 진행하고 있습니다. 막바지 단계에 거의 도달해서 이제 배포 준비를 하려고 하는데요, 마지막으로 테스트를 하기 위해 stagingRelease 로 apk 를 만들어서 테스트를 하려고 하니, .env.staging 을 읽지를 못하고 있네요. 이상한건 stagingDebug 로 할 때에는 이런 문제가 없었습니다. 지금 환경변수는 루트 디렉토리에 env 폴더가 있고, 해당 폴더 내에는 3개의 환경변수 파일이 존재합니다. .env.development .env.staging .env.production 이렇게 3개 입니다. project.ext.envConfigFiles = [ productiondebug: "env/.env.production", productionrelease: "env/.env.production", developmentrelease: "env/.env.development", developmentdebug: "env/.env.development", stagingrelease: "env/.env.staging", stagingdebug: "env/.env.staging" ] 위의 코드는 제가 설정한 환경변수 매핑하는 부분입니다. 실제로 stagingrelease 로 빌드 시에 flavor 값이 stagingrelease 로 뜨는 걸 확인했습니다. node_modules 에서 react-native-config 폴더를 찾아서 dotenv.gradle 에서 찍으니까 확인이 가능하더라고요. 제가 궁금한 점은 왜 루트에서 .env 파일만을 읽어서 BuildConfig.java 에서 사용하려고 하는걸까요? .env.staging 을 참조하지 않는 이유가 궁금합니다. 아래는 dotenv.gradle 파일입니다. import java.util.regex.Matcher import java.util.regex.Pattern def getCurrentFlavor() { Gradle gradle = getGradle() def pattern = Pattern.compile("(?:.*:)*[a-z]+([A-Z][A-Za-z0-9]+)") def flavor = "" gradle.getStartParameter().getTaskNames().any { name -> Matcher matcher = pattern.matcher(name) if (matcher.find()) { flavor = matcher.group(1).toLowerCase() return true } } println "Current flavor: $flavor" return flavor } def loadDotEnv(flavor = getCurrentFlavor()) { def envFile = project.hasProperty("defaultEnvFile") ? project.defaultEnvFile : ".env" if (System.env['ENVFILE']) { envFile = System.env['ENVFILE'] } else if (System.getProperty('ENVFILE')) { envFile = System.getProperty('ENVFILE') } else if (project.hasProperty("envConfigFiles")) { project.ext.envConfigFiles.any { pair -> if (flavor.startsWith(pair.key.toLowerCase())) { envFile = pair.value return true } } } println "Reading env from: $envFile" def env = [:] File f = new File("$project.rootDir/../$envFile"); if (!f.exists()) { f = new File("$envFile"); } if (f.exists()) { println "Found env file: $f" f.eachLine { line -> def matcher = (line =~ /^\s*(?:export\s+|)([\w\d\.\-_]+)\s*=\s*['"]?(.*?)?['"]?\s*$/) if (matcher.getCount() == 1 && matcher[0].size() == 3) { env.put(matcher[0][1], matcher[0][2].replace('"', '\\"')) // 각 환경 변수 키-값 쌍 출력 println "Loaded env variable: ${matcher[0][1]} = ${matcher[0][2]}" } } } else { println("**************************") println("*** Missing .env file ****") println("**************************") } project.ext.set("env", env) } loadDotEnv() android { defaultConfig { project.env.each { k, v -> def escaped = v.replaceAll("%","\\\\u0025") buildConfigField "String", k, "\"$v\"" resValue "string", k, "\"$escaped\"" println "Set buildConfigField and resValue: $k = $v" } } } 안드로이드 스튜디오 터미널에서 ./gradlew assembleStagingRelease 명령어를 치게 될 경우, Current flavor: stagingrelease Reading env from: .env.staging ************************** *** Missing .env file **** ************************** 이런 로그가 뜨고 있습니다.

개발자

#react-native

#react-native-config

#다중환경변수

#release

답변 0

댓글 0

조회 65

10달 전 · djdks 님의 새로운 댓글

자바 코딩테스트 import

자바 코딩테스트에서 import 써도 되나요?? 해봤자 java.util 같은 것만 할 것 같은데 다른 분들 풀이를 보니 util에 이미 구현되어 있는 걸 import 하지 않고 처음부터 직접 구현해서 쓰시더라구요? 코테 시작한지 얼마 안돼서 잘 모르는데, 혹시 코테에서 import하는 게 금지되어 있는지 궁금해서 질문 남깁니다!

개발자

#코딩테스트

답변 2

댓글 2

조회 159

일 년 전 · 지욱 님의 질문 업데이트

tensorflow.keras

import tensorflow.keras as keras from keras.models import load_model from tensorflow.keras.preprocessing.text import Tokenizer from tensorflow.keras.preprocessing.sequence import pad_sequences from hanspell import spell_checker tersorflow랑 keras를 설치했는데, 개별적으로 할 때는 잘 되는데 tensorflow.keras는 오류가 생기네요 ㅠㅠ 그리고 keras.models도 안되네요 ㅠㅠ 마지막으로 hanspell은 정확히 어떻게 설치해야 될까요

개발자

#tensorflow

답변 0

댓글 0

조회 48

일 년 전 · 최용빈 님의 답변 업데이트

파이썬 오류 좀 고쳐주세요 ㅠㅠ

import time import requests import streamlit as st API_BASE_URL = "http://localhost:8000/qna" # Fastapi로 api 생성 def request_chat_api(user_message: str) -> str: url = API_BASE_URL resp = requests.post( url, json={ "user_message": user_message, }, ) resp = resp.json() print(resp) return resp["answer"] def init_streamlit(): st.set_page_config(page_title='Dr. KHU', page_icon='🩺') if "messages" not in st.session_state: st.session_state.messages = [{"role": "assistant", "content": "안녕하세요! Dr.seo입니다🩺"}] # Initialize chat history if "messages" not in st.session_state: st.session_state.messages = [] # Display chat messages from history on app rerun for message in st.session_state.messages: with st.chat_message(message["role"]): st.markdown(message["content"]) def chat_main(): if message := st.chat_input(""): # Add user message to chat history st.session_state.messages.append({"role": "user", "content": message}) # Display user message in chat message container with st.chat_message("user"): st.markdown(message) # Display assistant response in chat message container assistant_response = request_chat_api(message) with st.chat_message("assistant"): message_placeholder = st.empty() full_response = "" for lines in assistant_response.split("\n"): for chunk in lines.split(): full_response += chunk + " " time.sleep(0.05) # Add a blinking cursor to simulate typing message_placeholder.markdown(full_response) full_response += "\n" message_placeholder.markdown(full_response) # Add assistant response to chat history st.session_state.messages.append( {"role": "assistant", "content": full_response} ) if __name__ == "__main__": init_streamlit() chat_main() 이 코드를 실행시키면 자꾸 AttributeError: st.session_state has no attribute "messages". Did you forget to initialize it? More info: https://docs.streamlit.io/library/advanced-features/session-state#initialization 라고 뜨네요..

개발자

#파이썬

#python

답변 2

댓글 1

보충이 필요해요 2

조회 347

일 년 전 · 문종호 님의 답변 업데이트

VS CODE import error

tensorflow는 이미 설치 완료한 상태인데 이 부분이 계속 문제 있다고 뜨는데 해결방법을 도저히 모르겠어요ㅠㅠ

개발자

#vscode

#python

#import

#tensorflow

답변 1

댓글 0

추천해요 1

조회 38

일 년 전 · 강병진 님의 답변 업데이트

Next.js에서 모든 컴포넌트를 dynamic import하는건 별로인가요?

안녕하세요. Next.js page router 방식으로 프로젝트 진행 중 질문이 있어 글 남깁니다. 현재 프로젝트의 크기가 커져서 최적화 작업을 진행중에 컴포넌트의 import 방식을 정적에서 동적으로 바꾸어 주려고 합니다. 그런데 만약 A 컴포넌트를 X컴포넌트에서 dynamic으로 import하고, Y컴포넌트에서는 정적으로 import하면 그만큼 중복된 코드를 불러온다고 이해하고 있는데, 그럼 프로젝트에서 사용되는 컴포넌트 중 2개 이상의 컴포넌트에서 사용되는 것들은 모두 dynamic import로 선언 해주어야 하나요? 만약 그렇다면 모든 파일에 import문을 dynamic으로 바꾸어 주어야 하나요 아니면 next.config.js에서 일괄적으로 설정하는 방법이 존재하나요?

개발자

#react

#next.js

답변 1

댓글 0

조회 387

일 년 전 · 정창록 님의 질문

Next.js 에서 fluent-ffmpeg 사용 시 에러 해결 가능할까요?

Next.js 에서 puppeteer를 사용해서 특정 url에 접속하여 애니메이션을 png로 100장 정도 캡처하여 생성하고, fluent-ffmpeg를 사용해서 해당 png 이미지들을 mp4 영상으로 만들려고 하는데요. yarn add puppeteer fluent-ffmpeg @ffmpeg-installer/ffmpeg yarn add --dev @types/fluent-ffmpeg 위와 같이 라이브러리들을 설치했구요. 아래 page.tsx 파일에서 코드를 구현했는데요. dev로 실행해서 해당 페이지에 접속을 하면 아래와 같은 에러가 발생하는데요. 해결이 가능할까요?? 다른 라이브러리를 써야할지 구현한 코드가 문제가 있는지 모르겠네요. 도움 부탁드립니다!! # 에러 코드 # 1 of 1 error Next.js (14.2.3) Server Error Error: Cannot find module '/Users/.../animation-capture/node_modules/@ffmpeg-installer/darwin-arm64/package.json' This error happened while generating the page. Any console logs will be displayed in the terminal window. Call Stack webpackEmptyContext file:///Users/.../animation-capture/.next/server/app/capture/page.js (22:10) eval node_modules/@ffmpeg-installer/ffmpeg/index.js (40:27) (rsc)/./node_modules/@ffmpeg-installer/ffmpeg/index.js file:///Users/.../animation-capture/.next/server/vendor-chunks/@ffmpeg-installer.js (20:1) Next.js eval /./src/app/capture/page.tsx (rsc)/./src/app/capture/page.tsx file:///Users/.../animation-capture/.next/server/app/capture/page.js (286:1) Next.js # 코드 구현부 # import { NextApiRequest, NextApiResponse } from 'next'; import puppeteer from 'puppeteer'; import fs from 'fs'; import path from 'path'; import ffmpeg from 'fluent-ffmpeg'; import ffmpegInstaller from '@ffmpeg-installer/ffmpeg'; ffmpeg.setFfmpegPath(ffmpegInstaller.path); .... 중략.... const outputFilePath = path.resolve("./screenshots/video.mp4"); ffmpeg() .addInput(`${folderPath}/screenshot-%d.png`) .inputFPS(10) .output(outputFilePath) .on("end", () => { res.status(200).send(`Video created successfully at ${outputFilePath}`); }) .on("error", (err) => { console.error("Error generating video:", err); res.status(500).send("Failed to generate video"); }) .run(); } catch (error) { console.error("Error capturing screenshots:", error); res.status(500).send("Failed to capture screenshots"); }

개발자

#next.js

#fluent-ffmpeg

#mp4

답변 0

댓글 0

조회 97

일 년 전 · 김민준 님의 새로운 댓글

왜 이렇게 나올까요 ㅠㅠ 도와주세요 ㅠㅠ

Fatal Python error: init_import_site: Failed to import the site module Python runtime state: initialized Traceback (most recent call last): File "<frozen importlib._bootstrap>", line 1176, in _find_and_load File "<frozen importlib._bootstrap>", line 1147, in _find_and_load_unlocked File "<frozen importlib._bootstrap>", line 690, in _load_unlocked File "<frozen importlib._bootstrap>", line 980, in exec_module File "<frozen site>", line 626, in <module> File "<frozen site>", line 612,

개발자

#python3

답변 1

댓글 1

보충이 필요해요 2

조회 209

일 년 전 · 익명 님의 질문

모노레포 프로젝트에서 tailwind intellisense

최근 시작한 프로젝트에 pnpm + turborepo 구성으로 모노레포 구조를 도입하여 진행중에 있습니다. packages/tailwind-config 에 tailwind에 대한 패키지를 구성하고, 다른 프로젝트에서 해당 패키지를 import해 사용중입니다. 이 때, tailwind css가 정상적으로 적용은 되나, tailwind intellisense 익스텐션이 작동을 안하는 문제가 있습니다만, 혹시 해결 방법이 있을까요 ?

개발자

#next

#tailwindcss

#monorepo

답변 0

댓글 0

조회 150

일 년 전 · 예빈 님의 새로운 댓글

타입스크립트 타입지정

리액트 쿼리로 OptimisticUpdate 를 구현했는데 onError 에서 context 타입 지정을 어떻게 해야할지 모르겠습니다 ㅠㅠ context : 타입 하면 오류나고, data : 타입 = context 해도 오류나고 as 를 쓰면 해결되긴 하는데 더 좋은 방법 없을까요? ㅠㅠㅠ 'use client'; import { useState } from 'react'; import { toast } from 'react-toastify'; import { usePostLikeCount } from '@/hooks'; interface LikeContextType { previousLikeCount: number; previousIsLike: boolean; } export const useOptimisticLike = ( boardId: number, initialLikeCount: number, initialIsLike: boolean, refetch: () => void ) => { const [optimisticLikeCount, setOptimisticLikeCount] = useState(initialLikeCount); const [optimisticIsLike, setOptimisticIsLike] = useState(initialIsLike); const { mutate: postMutate } = usePostLikeCount(boardId, { onMutate: async (): Promise<LikeContextType> => { setOptimisticLikeCount((prev) => optimisticIsLike ? prev - 1 : prev + 1 ); setOptimisticIsLike((prev) => !prev); return { previousLikeCount: optimisticLikeCount, previousIsLike: optimisticIsLike, }; }, onError: (err, variables, context) => { const data: LikeContextType = context; if (data) { setOptimisticLikeCount(data.previousLikeCount); setOptimisticIsLike(data.previousIsLike); } toast.error('좋아요 업데이트에 실패했습니다.'); }, onSuccess: () => { refetch(); }, }); const uploadLike = () => { postMutate(); }; return { optimisticLikeCount, optimisticIsLike, uploadLike, }; };

개발자

#react-query

#typescript

답변 1

댓글 1

조회 60

일 년 전 · 남현 님의 질문 업데이트

forwardRef 관련

안녕하세요. 질문이 있습니다! 현재 dynamic import 와 forwardRef를 사용하는 과정에서 forwardRef가 적용이 안되는 상황입니다. Canvas 컴포넌트에서는 ref값이 제대로 출력이 되는데 dynamic import와 forwardRef를 사용해 부모 컴포넌트 (DrawingPage)에서 ref값을 콘솔에 찍어보니 전달이 안됩니다. 정보를 찾아보고 수정을 해봐도 오랫동안 제자리 걸음이라 질문남깁니다! 하단은 코드입니다

개발자

#next.js

#react

#ref

답변 1

댓글 1

조회 207

일 년 전 · 익명 님의 질문

Next.js에서 코드 스플리팅을 적용할 예정인데 궁금한 점이 있습니다.

Next.js에서 제공해주는 dynamic을 사용해서 스플리팅을 할 건데 어떤 경우에 옵션을 사용하면 좋을 까요?? ProjectCardContainer에는 react-query로 api를 비동기적으로 호출받고 있습니다. const ProjectCardContainer = dynamic( () => import('@/components/container/ProjectCardContainer') ); 위의 부분처럼 받아오거나 const ProjectCardContainer = dynamic( () => import('@/components/container/ProjectCardContainer'), { ssr: false, } ); 그리고 위의 ssr을 해체하는 경우 ssr을 해체하는 경우에는 공식문서에서 window나 외부 API같은 작업을 할 때 사용한다 하는데 여기서 말하는 외부 API가 서버에서 가져오는 API가 맞나요??

개발자

#next.js

답변 0

댓글 0

조회 75

일 년 전 · 익명 님의 질문

백엔드 테스트 와 머신러닝 테스트가 따로 하면 잘되는데 같이 하면 오류가 발생합니다.

저희 프로젝트의 기본적인 골자는 osmd라고 하는 mxl포맷 파일을 악보 형태로 렌더링해주는 라이브러리를 사용하구요, 스트림되는 오디오를 듣고 그걸 머신러닝 파이썬 코드가 처리한 뒤 timestamp라는 값을 반환하면 그에 맞춰 악보의 현재 위치를 가리키는 cursor를 움직이는 프로젝트입니다. 또한 오디오 스트림을 넘겨받기 위해서 aws에다가 쿠렌토 미디어 서버를 만들었구요, 머신러닝 코드는 로컬에서 돌아가고 있습니다. 각기 따로 스트림을 처리했을때(stdin stdout) 잘 되는 것을 확인했습니다(https://github.com/Kurento/kurento-java 쿠렌토 서버의 구현은 이 레포를 참고해서 만들었습니다) 또한 import sys def main(): while True: line = sys.stdin.readline() if not line: break output = line.strip() + '2' print(output) if __name__ == "__main__": main() 이 예제를 활용해서 테스트해봤을 때 문제없이 작동했습니다(쿠렌토) 머신러닝 코드는 wav 파일을 버퍼 잘라서 stdin에 집어넣고 테스트해보았습니다 작동은 둘 다 문제없이 작동했지만 같이 이어서 하게되면 Failed to write data: The pipe is being closed라는 오류 로그가 찍힙니다. (요약) 1. 백엔드에서 Kurento Media Server(webrtc) 인풋 들어온거에 아무거나 붙여서 반환하는거로 테스트 해봤을 때 문제 없이 스트림 처리가 되는 것으로 확인 됨 2. 머신러닝 쪽에서 오디오 스트림 모드를 만들고 stdin으로 들어온 스트림에 대한 결과값을 stdout으로 반환하는 것이 확인 됨 3. 그렇지만 둘을 이제 갖다붙이면 위 에러 로그 발생 이유 아시는 분들은 알려주시면 감사드립니다. 두서없이 장문을 써서 이해가 안되는 부분들 말씀해주시면 설명드리겠습니다. 감사합니다.

개발자

#backend

#machinearning

답변 0

댓글 0

조회 52

일 년 전 · 백승훈 님의 답변 업데이트

Recoil Atom Effect 적용 기: 팀 내 설득 및 구현 조언

안녕하세요!! 현재 진행 중인 프로젝트에서 회원가입 시 필요한 정보를 입력하는 중 새로고침 시 session 및 localstorage를 이용하여 상태유지를 하려고하는데 recoil과 관련하여 atom effect를 사용하면 우아하게 처리할 수 있음을 알았습니다. 따라서, 각 atom에 effect를 하나하나 추가하는 방법을 생각했는데 동일한 logic을 행하는 코드의 양이 방대해지고 localstorage에 각 atom에 해당하는 key-value로 저장되므로 가독성 측면에서 좋지 않다고 판단하여 아래와 같은 과정을 생각했습니다. 각 atom을 하나로 묶어 객체로 관리하자. 객체로 관리하게 되면 불필요한 re-rendering이 촉발되므로 객체로 선언한 atom의 각 property에 접근 및 수정을 위한 selector를 정의하자. 객체에 내의 property에 1대1로 selector를 정의하면 객체로 묶기 전 atom의 갯수만큼 selector를 선언해주어야 하므로 selectorFamily를 사용하자. 이것저것 찾아보면서 1 → 2 → 3 단계로 생각을 정리했습니다. 아래는 현재 사용되는 atom입니다. <ATOM> // signup.store.ts 👇 회원가입에 대한 user state들 - SignUpProfileTypeAtom - SignUpProfileRentalTypeAtom - SignUpProfileRegionsAtom - SignUpProfileDepositPriceAtom - SignUpProfileTermAtom - SignUpProfileMonthlyPriceAtom - SignUpProfileSmokingAtom - SignUpProfilePetAtom - SignUpProfileAppealsAtom - SignUpProfileGenderAtom - SignUpProfileMatesNumberAtom - SignUpProfileMateAppealsAtom // 👇 위의 atom들을 한 번에 access 및 update - SignUpProfileSelector 하지만, 다른 팀원이 저렇게 atom을 구성한 상황 제 생각을 그대로 적용하고자하면 팀원의 코드를 마음대로 바꾸는 거 같아서 조심스럽습니다. 협업함에 있어 설득도 하나의 중요한 스킬임을 갈수록 깨닫게 됩니다.(다들 어떻게 설득하시나요?) 팀원이 기존의 코드는 안 바꿨으면 좋겠다 하면 각 atom에 effect를 추가하는 것이 맞겠죠???? 현재 현업에 계신 분들은 이러한 상황에서 어떻게 설득하며 어떻게 하는 것이 좋을까 자문을 구하고 싶어서 글 올려봅니다!!🥲🥲 짧지 않은 글이지만 읽어주셔서 감사하고 많은 의견 주시면 감사하겠습니다!!😄😄😄 ```typescript import { SignUpType } from '@/types/signUp.type'; // ? type 집 유형 0: 원룸/오피스텔, 1: 빌라/연립, 2: 아파트, 3: 단독주택 @number export const SignUpProfileTypeAtom = atom<SignUpType['type']>({ key: 'signUpProfileTypeAtom', default: undefined, }); // ? rental_type 집 대여 유형 0: 월세, 1: 전세, 2: 반 전세 @number export const SignUpProfileRentalTypeAtom = atom<SignUpType['rental_type']>({ key: 'signUpProfileRentalTypeAtom', default: undefined, }); // ? regions 유저가 찾는 지역 >도시 (region) + 구(district) 형태의 배열 @string[] export const SignUpProfileRegionsAtom = atom<SignUpType['regions']>({ key: 'signUpProfileRegionsAtom', default: [], }); // ? deposit_price 보증금 (전세 혹은 월세) 범위 [최소 금액, 최대 금액] (0만원~10000만원) @[number, number] export const SignUpProfileDepositPriceAtom = atom<SignUpType['deposit_price']>({ key: 'signUpProfileDepositPriceAtom', default: [0, 10000], }); // ? term 유저가 살 기간 [최소기간, 최대 기간] (0 ~ 24)범위 @[number, number] export const SignUpProfileTermAtom = atom<SignUpType['term']>({ key: 'signUpProfileTermAtom', default: [0, 24], }); // ? monthly_rental_price 월세 [최소 금액, 최대 금액] (0만원, 500만원) @[number, number] export const SignUpProfileMonthlyPriceAtom = atom<SignUpType['monthly_price']>({ key: 'signUpProfileMonthlyPriceAtom', default: [0, 500], }); // ? smoking 흡연 여부 @boolean export const SignUpProfileSmokingAtom = atom<SignUpType['smoking']>({ key: 'signUpProfileSmokingAtom', default: undefined, }); // ? pet 펫 여부 0: 상관없음, 1: 좋음, 2: 싫음 @number export const SignUpProfilePetAtom = atom<SignUpType['pet']>({ key: 'signUpProfilePetAtom', default: undefined, }); // ? appeals 유저의 어필할 매력(배열형태) @string[] export const SignUpProfileAppealsAtom = atom<SignUpType['appeals']>({ key: 'signUpProfileAppealsAtom', default: [], }); // ? gender 상대방의 성별 0: 상관없음, 1: 남성, 2: 여성 @number export const SignUpProfileGenderAtom = atom<SignUpType['gender']>({ key: 'signUpProfileGenderAtom', default: undefined, }); // ? mates_number 인원수 0: 상관없음, 1: 1명, 2: 2명, 3: 3명이상 @number export const SignUpProfileMatesNumberAtom = atom<SignUpType['mates_number']>({ key: 'signUpProfileMateNumberAtom', default: undefined, }); // ? mate_appeals 유저가 원하는 상대방의 매력 (배열형태) @string[] export const SignUpProfileMateAppealsAtom = atom<SignUpType['mate_appeals']>({ key: 'signUpProfileMateAppealsAtom', default: [], }); ```

개발자

#프론트

#협업

#recoil

답변 1

댓글 0

조회 91

일 년 전 · 허형준 님의 새로운 답변

리액트 네이티브 라이브러리가 안 돼요

gradient랑 fontawsome도 그렇고 대부분의 npm install 해야하는 라이브러리들이 안 돼요... install하고 import를 해줘도 안드로이드 에뮬레이터에서 Render Error requireNativeComponent: "(추가하려는것)" was not found in the UIManager라고 뜨네요 밑에 문제가 있는거 알려주는 source 부분에서는 node_modules\invariant\browser.js 여기를 가르키는데 또 그 파일 찾아가서 코드를 봐보면 어디가 잘못된건지 모르겠어요 혹시 몰라서 적자면 밑에 코드 부분이 잘못됐다고 나와요

개발자

#react-native

#리액트네이티브

#render_error

답변 1

댓글 0

조회 65

일 년 전 · 허니 님의 새로운 답변

리액트 로그인질문..

react + 파이어베이스만 써오다가 react + express 조합을 오랜만에 사용중인데 긴가민가한점이있어서 질문드립니다 ㅠㅠ import axios from 'axios'; const instance = axios.create({ baseURL: process.env.REACT_APP_API_BASE_URL, timeout: 2500, headers: { 'Content-Type': 'application/json', withCredential: true, }, }); instance.interceptors.request.use( (config) => { const token = localStorage.getItem('token'); if (token) { config.headers['Authorization'] = token; } else { delete config.headers['Authorization']; } return config; }, (error) => { return Promise.reject(error); } ); export default instance; 이렇게 인터셉터를주어서, 요청할 때마다 토큰을 전달하고있습니다. 그리고 프라이빗 라우터 + 유저정보 인증 훅을 사용해서 로그인사용자만 접근가능하게 페이지를 설정해줬습니다. 근데 질문 1. 네트워크탭 Request Headers 에서 Authorization을 확인해보면 토큰정보가 그대로 노출되고있는데요 원래 이렇게되나요? 질문 2. Bearer + token 이렇게 보내는 경우는 포스트맨이나 이런걸로 테스트할때만 Bearer 을 붙여서 보내주면될까요? 질문 3. 검색 키워드가 생각이안나서 질문으로 올립니다. 아주 옛날에는 (4년전) App.tsx에서 if(localstorage.token){ setAuthToekn(token); } 이런식으로 하고, setAuthToken함수는 import axios from 'axios'; const setAuthToken = (token) => { if (token) { axios.defaults.headers.common['x-auth-token'] = token; } else { delete axios.defaults.headers.common['x-auth-token']; } }; export default setAuthToken; 이런식으로 되어있었는데요, 요즘은 제가 짠 코드처럼 axios.인터셉터 식으로 하는게 맞나요? 질문 4. 그럼 요즘도 회원가입/로그인시 로컬스토리지에 유저 정보 (닉네임 이름 이메일, 토큰정보)만 저장해두고 로그인하면, 로그인버튼이 회원 닉네임으로 변하게 해준다던가.. 이런식으로 분기처리를 하나요? ( 저는 이렇게하고있어서요.. 로딩처리를 줄수도있겠지만 깜빡거리는게 싫고, 또 로컬스토리지로안하면 로그인버튼으로 잠깐바꼇다가 회원닉네임이 표시되더라구요) 질문5. (질문4와 이어집니다.) 만약 질문4처럼하면 사용자가 사이트에 계속 로그인중인데, 이 토큰이 끝났는지 판단하려는 코드를 따로 작성해줘야할까요? 예를들면, App.tsx에 서버 api/auth같은거에 요청보내는 로직을 작성해서, 토큰만보내서 유효한 토큰인지 아닌지, 유효하지않은토큰이면 에러를 리턴시켜준다던가, 리프레쉬토큰을 발급시켜서 연장시켜준다던가 이런식으로하면될까요? 마지막으로 질문이 좀 많고 중구난방인데 죄송스럽고 조심스럽네요..

개발자

#react

#login

#register

#local-storage

#jwt

답변 1

댓글 0

조회 114

일 년 전 · 털먹는토끼 님의 새로운 댓글

타입스크립트 'value' is possibly 'null' 에러 옵셔널체이닝으로 해결안되는 이슈

import DateRangePicker from "@wojtekmaj/react-daterange-picker"; import { useDispatch } from "react-redux"; import { dateFetch } from "components/feature/FetchSlice"; import styled from "styled-components"; type ValuePiece = Date | null; type Value = ValuePiece | [ValuePiece, ValuePiece]; export default function CustomCalendar() { const dispatch = useDispatch(); const [value, onChange] = useState<Value>([new Date(), new Date()]); return ( <CalendarBox> <Calendar>조회 기간</Calendar> <StlyedDateRangePicker onChange={onChange} value={value} onCalendarClose={() => { dispatch( dateFetch({ startDate: value[0]?.toISOString(), endDate: value[1]?.toISOString(), }) ); console.log(value); }} /> </CalendarBox> ); } <StlyedDateRangePicker>는 styled component로 만든 DateRangePicker 라이브러리 컴포넌트입니다. DateRangePicker 에서 날짜 2개를 선택하면 value라는 배열에 Date 객체 2개가 들어갑니다. 그리고 onCalendarClose 함수가 동작하면서 redux로 만들어놓은 startDate, endDate 객체에 각각 date를 toISOString() 처리한 값이 할당되는 로직입니다. 날짜를 선택하기 전에는 value={value}의 value 배열요소인 Date객체 값이 null 값이니까 type ValuePiece = Date | null; 타입지정을 해줬습니다. startDate: value[0]?.toISOString(), endDate: value[1]?.toISOString(), 근데 위 코드의 value[0], value[1] 에러가 나더라구요. 'value' is possibly 'null'.ts(18047) Element implicitly has an 'any' type because expression of type '0' can't be used to index type 'Date | [ValuePiece, ValuePiece]'. Property '0' does not exist on type 'Date | [ValuePiece, ValuePiece]'. null 값일 수도 있다길래 옵셔널체이닝을 줬는데 여전히 에러가 발생합니다.. 해결방법을 도무지 모르겠네요.. 도와주시면 진심으로 감사하겠습니다ㅠㅠㅠ

개발자

#react

#typescript

#optional-chaining

답변 3

댓글 3

조회 270

일 년 전 · 이동희동이 님의 질문

Next.js 14 서버액션을 사용한 폼 데이터 처리 중 질문입니다.

next.js 14의 서버액션을 사용해서 사용자로부터 form으로 데이터를 입력받아 DB에 저장하고 첨부파일을 서버에 업로드하는 모듈을 개발중입니다. 문제점은, 첨부파일을 input으로 입력받아 서버액션 함수로 formData로 넘겨주는데, 서버액션 함수에서 첨부파일의 파일명에 한글이 포함됐을 경우 파일명의 한글이 유니코드로 보이는 문자열로 찍히고 있습니다. // Form.jsx "use client"; // [other code] export default function Form() { const [formState, formAction] = useFormState(inquiryAction, { success: undefined, message: "", }); const { register, handleSubmit, reset, formState: { errors }, } = useForm(); const onSubmit = (data) => { const formData = new FormData(); const jsonData = JSON.stringify(data); formData.append("jsonData", jsonData); data.attachment[0] && formData.append("attachment", data.attachment[0]); formAction(formData); }; return ( <form action={handleSubmit(onSubmit)}> // [other code] <FileInput label="첨부파일" {...register("attachment")} error={errors} resetTrigger={resetTrigger} /> // [other code] </form> ); } // inquiryAction.js "use server"; import { connectDB } from "./connectDB"; export async function inquiryAction(prevState, formData) { const fields = JSON.parse(formData.get("jsonData")); const attachment = formData.get("attachment"); console.log(attachment); } Form 컴포넌트는 클라이언트 컴포넌트이고, react-hook-form과 next14의 서버액션을 사용하기 위해, form의 action에는 react-hook-form의 handleSubmit함수에 onSubmit 함수를 인자로 전달합니다. onSumbit 함수에서 서버액션 함수를 가져와 처리를 하고 있습니다. 그런데 여기서 서버함수쪽에서 첨부파일을 받을 때 한글 파일명이 다 깨지고 있네요... 기존에 api route와 fetch api를 사용했을 땐 문제가 없었는데.. 제가 놓치고 있는 부분이 있을까요?

개발자

#next.js

#server-action

답변 0

댓글 0

조회 533

일 년 전 · changwoo 님의 새로운 답변

vite에 관하여 질문드립니다.

프로덕션에 vite를 사용하여 개발환경을 구성하려고 공부 중인데, 궁금한 점이 생겼으나 정보가 파편화되어있어 정확한 이해가 어려워 질문 올립니다! 제가 vite 공식 가이드와 구글링하면서 이해한 바로는 “기존 브라우저 환경에서는 모듈화된 코드들을 브라우저가 읽을 수 없어 webpack과 같은 번들러를 이용해 하나의 파일로 합치는 과정을 거쳤고, 이것이 일반적인 번들러의 역할이었으나 브라우저가 ESM을 지원하면서 import, export를 별도의 도구 없이 브라우저 자체에서 해석할 수 있고 처리할 수 있게 되었으며 vite는 이 점을 활용하여 번들링 과정 없이 바로 실행하여 파일이 import되어 필요할 때 불러오는 방식을 사용한다. “ 라고 이해했는데 혹시 맞을까요? 추가로 vite의 공식 가이드에는 “프로덕션에서 번들 되지 않은 ESM을 가져오는 것은 중첩된 import로 인한 추가 네트워크 통신으로 인해 여전히 비효율적입니다” 라고 나와있는것을 보았을때, 위에 적힌 번들링없이 실행하는 것은 개발모드에만 사용되며, 프로덕션에는 여전히 webpack과같이 번들링을 진행하며 webpack대신 Rollup을 사용한다는 점만 다르다고 이해하였는데 이부분에서 틀린내용이 있을까요? 만약 그렇다면 vite가 강조하는 장점이 프로덕션에는 크게 작용하지않는다고 느껴져서요. 질문 자체가 잘못되었거나 ,틀린내용이 있다면 편하게 지적주시고 알려주시면 감사드리겠습니다!

개발자

#vite

답변 1

댓글 0

조회 354