안녕하세요 제로초님! 제로초님의 강의를 듣고 난 이후로 여러가지 프로젝트를 진행하다가 middleware.ts 와 NextRequest 에 대해 궁금한게 생겼고 공식문서를 찾아봐도 관련 내용을 제가 못 찾는 것 같아서 이렇게 질문드리게 되었습니다. NextRequest NextRequest는 제가 보내는 요청(페이지에 대한 요청, api에 대한 요청 등)의 정보를 가지고 있는 것으로 알고 있습니다. 만약 클라이언트 컴포넌트 에서 (route handler가 아닌)외부 백엔드 api 로 요청을 보냈을 때, 그 "요청의 헤더에 담긴 쿠키를 제거하고 싶다 " 라는 요구사항이 있을 때 다음과 같이 구현을 했습니다. import { NextRequest, NextResponse } from 'next/server'; export async function middleware(request: NextRequest) { request.cookies.delete('accessToken'); request.cookies.delete('refreshToken'); console.log(request.cookies.getAll()); // 쿠키가 삭제된게 확인됨 } 이렇게 한다면 요청을 보내고 -> middleware에서 받은 뒤, 쿠키를 지우고 -> 이어서 요청을 진행 이렇게 되는 것으로 알고 있는데, 실제로는 401이 발생하지 않고 브라우저 network탭을 보면 헤더에 여전히 쿠키가 담겨 있습니다. 이걸 보고 NextRequest에서 삭제 및 수정한 쿠키는, 그 요청이 처리되는 동안만 (=Next.js 서버 내에서 처리될 때만) 유효하고 외부 백엔드 api로 나가는 요청엔 적용되지 않는건가? 라는 생각이 드는데 이게 맞는건가요? middleware 정확히 middleware가 동작하는 시점이 궁금합니다. 저는 웹에서 진행되는 모든 요청 ( '페이지가 요청될 때' , 'api가 호출될 때' 등) 마다 미들웨어가 작동하는 것으로 알고 있습니다. 근데, 서버 컴포넌트(page.tsx)를 실행했을 경우에 다음과 같은 순서로 진행됩니다. page.tsx에 해당하는 URL 요청 - middleware 실행 이후, page.tsx에 존재하는 데이터 패칭 진행 - middleware 실행 x 클라이언트 컴포넌트에서는 url요청과 데이터 패칭 2가지 경우 모두 middleware가 실행 됐었는데, 왜 서버 컴포넌트에서의 데이터 패칭을 할 때는 middleware가 실행 되지 않는건가요..?
import java.util.*; public class Main { public static void main(String[] args) { Scanner sc = new Scanner(System.in); int n = sc.nextInt(); int[] x = new int[1000001]; int[] y = new int[1000001]; // 첫 번째 꼭짓점 int firstW = sc.nextInt() + 500000; int prevH = sc.nextInt() + 500000; int prevW = firstW; // 나머지 꼭짓점 for (int i = 1; i < n; i++) { int w = sc.nextInt() + 500000; int h = sc.nextInt() + 500000; if (prevW == w) { // 수직선 y[Math.min(prevH, h)]++; y[Math.max(prevH, h)]--; } else { // 수평선 x[Math.min(prevW, w)]++; x[Math.max(prevW, w)]--; } prevW = w; prevH = h; } // 마지막 꼭짓점과 첫 번째 꼭짓점 연결 if (prevW == firstW) { // 수직선 y[Math.min(prevH, firstW)]++; y[Math.max(prevH, firstW)]--; } else { // 수평선 x[Math.min(prevW, firstW)]++; x[Math.max(prevW, firstW)]--; } // 큰 값 찾기 int xMax = 0; int yMax = 0; for (int i = 1; i < 1000001; i++) { x[i] += x[i - 1]; // 이전 값이랑 누적합 y[i] += y[i - 1]; xMax = Math.max(x[i], xMax); // 큰 값 비교 yMax = Math.max(y[i], yMax); } System.out.println(Math.max(xMax, yMax)); } } 안녕하세요 17611번 문제 자바로 풀고있습니다. 백준 게시판과 인터넷에 공유된 풀이가 거의 없어 커뮤니티에 질문 올리게 되었습니다. 문제에서 주어진 예를 테스트 했을 때는 잘 작동하는데, 제출시에(40%쯤) '틀렸습니다' 라고 나옵니다. 해당 코드로는 작동하지 않는 반례 또는 식의 오류를 알려주세요. 감사합니다.
train = pd.DataFrame({ '과일': ['사과', '배', '포도'], '색상': ['빨강', '노랑', '보라'], '가격': [5000, 7000, 10000] }) test = pd.DataFrame({ '과일': ['딸기', '배', '포도'], '색상': ['빨강', '노랑', '보라'], '가격': [15000, 7000, 10000] }) 이 상태에서, Label Encoding을 진행할 경우 ValueError : y contains previously unseen labels: '딸기' 라는 오류 문구가 뜹니다. 선생님께서는 이렇게, train과 test의 카테고리가 다를 경우, train과 test의 데이터를 합친 이후, Label Encoding을 진행하고, 그 후 분리하라고 강의에서 설명하셨습니다. 하지만 해당 방법을 시험에서 적용하지 못할 경우, 그 대안으로, 차라리 train과 test의 과일 컬럼을 아이에 삭제하고 수행해도, 문제 풀이에는 큰 지장이 없을까요? roc_auc_score, accuracy, 등의 평가지표가 조금 낮게 나오고, 정상적으로 제출에는 이상이 없는지, 아니면 제출 자체에도 이상이 생기는지 궁금합니다.
강의 내용 외 개인적인 실습 사이트의 질문은 답변이 제공되지 않습니다. 문제가 생긴 코드, 에러 메세지 등을 꼭 같이 올려주셔야 빠른 답변이 가능합니다. 코드를 이미지로 올려주시면 실행이 불가능하기 때문에 답변이 어렵습니다. 답변은 바로 제공되지 않을 수 있습니다. 실력 향상을 위해서는 직접 고민하고 검색해가며 해결하는 게 가장 좋습니다. 쿠팡 아이템 리스트를 html로 작성해서 호스팅 주소에 올리는 과정입니다. 파이썬 파일 돌리면 로그인 과정에서 실패합니다. 주소 id pw는 제대로 입력한 것 확인 했는데 무엇이 문제인지 알려주세요...
문제에서 데이터수를 구하라고 할 때, sum이나 len을 사용하곤 하는데요. 어떨때 보면 sum으로 구할때와 len으로 구할때의 값이 다릅니다. 실례를 들어보면 [캐글 , 작업형1, 26번에서] menu컬럼에 "라떼" 키워드가 있는 데이터의 수는? df['menu'].str.contains('라떼').sum() len(df['menu'].str.contains('라떼')) 이렇게 sum과 len으로 구할 때 답이 다르게 나옵니다. 혹시 어떨 때 sum과 len을 써야할까요? 둘다 같은 의미로 알고 있는데.. 제가 잘못 이해하고 있는걸까요.?
#1.문제정의 #평가:ROC-AUC #target:'성별' 1 #최종파일:"result.csv"(컬럼 1개 pred, 1확률값) #2.라이브러리 및 데이터 불러오기 import pandas as pd train = pd.read _csv("data/customer_train.csv") test = pd.read _csv("data/customer_test.csv") #3.탐색적 데이터분석(EDA). shape head info isnull.sum. value_counts. describe target pd.set_option('display.max_columns', None) print(train.shape, test.shape) print(train.head(2)) print(test.head(2)) print( train.info ()) print( test.info ()) print(train.isnull().sum()) print(test.isnull().sum()) print(train['성별'].value_counts()) #결측치채우기 train = train.fillna(0) test = test.fillna(0) print(train.isnull().sum()) print(test.isnull().sum()) # 4.데이터전처리 - object데이터를 인코딩 df = pd.concat([train,test]) df = pd.get_dummies(df) train = df[:len(train)].copy() test = df[len(train):].copy() print(train.shape, test.shape) #5. 검증 데이터 분할 from sklearn.model_selection import train_test_split X_tr, X_val, y_tr, y_val = train_test_split(train.drop('성별', axis=1), train['성별'], test_size=0.2, random_state=10) print(X_tr.shape, X_val.shape, y_tr.shape, y_val.shape) #6. 머신러닝 학습 및 평가 from sklearn.ensemble import RandomForestClassifier from sklearn.metrics import roc_auc_score model = RandomForestClassifier(random_state=0) model.fit (X_tr, y_tr) pred = model.predict_proba(X_val) score = roc_auc_score(y_val, pred[:,1]) print(score) # 7. 예측 및 평가 파일 생성 pred = model.predict_proba(test) submit = pd.DataFrame({'pred':pred[:,1]}) submit.to _csv("result.csv") print( pd.read _csv("result.csv")) 이렇게 했는데요. pred = model.predict_proba(test)만 작성하면 오류가 나는 이유가 뭘까요?? Makefile:6: recipe for target 'py3_run' failed make: *** [py3_run] Error 1 Traceback (most recent call last): File "/goorm/Main.out", line 64, in <module> pred = model.predict_proba(test) File "/usr/local/lib/python3.9/dist-packages/sklearn/ensemble/_forest.py", line 674, in predict_proba X = self._validate_X_predict(X) File "/usr/local/lib/python3.9/dist-packages/sklearn/ensemble/_forest.py", line 422, in validate X_predict return self.estimators_[0]._validate_X_predict(X, check_input=True) File "/usr/local/lib/python3.9/dist-packages/sklearn/tree/_classes.py", line 407, in validate X_predict X = self._validate_data(X, dtype=DTYPE, accept_sparse="csr", File "/usr/local/lib/python3.9/dist-packages/sklearn/base.py", line 421, in validate data X = check_array(X, **check_params) File "/usr/local/lib/python3.9/dist-packages/sklearn/utils/validation.py", line 63, in inner_f return f(*args, **kwargs) File "/usr/local/lib/python3.9/dist-packages/sklearn/utils/validation.py", line 720, in check_array assert all_finite(array, File "/usr/local/lib/python3.9/dist-packages/sklearn/utils/validation.py", line 103, in assert all_finite raise ValueError( ValueError: Input contains NaN, infinity or a value too large for dtype('float32').
안녕하세요 선생님, 작업형3 범주형 변수 인코딩 질문드립니다. [예시문제 작업형3(신버전)]의 6:37 부분을 보면 Gender는 인코딩이 되지않아서 C로 감싸주시더라구요. 근데 [시험응시전략] 강의에서는 '회귀, 로지스틱 회귀에서 숫자이지만, 범주형 변수로 명시된 것이 있다면 C()로 감싸서 처리할 것, 범주형 변수 object 값이 문자로 있다면 알아서 바꿔준다'라고 말씀하셨어요. 이부분이 헷갈립니다. 1) [시험응시전략]에서 말씀대로라면 [예시문제 작업형3]의 Gender는 C 처리할 필요없이, 알아서 바뀌는게 아닌가요? 2) 캐글에 T3-2-example-py 을 보면, 여기서는 gender를 C로 감싸서 인코딩 해주지 않으셨더라구요. 기준이 헷갈립니다.
'age'컬럼의 이상치를 모두 더하시오! print(sum(df['age']<lower) + sum(df['age']>upper)) 컬럼의 이상치를 다 더한다는 의미를 이렇게 해석했는데,, # 이상치 age합 print(df[cond1|cond2]['age'].sum()) 왜 선생님은 '또는'이라는 조건을 사용하셨나요?
안녕하세요. 섹션12 3회 기출유형 작업형 1 강의 9:54 경에서 '하드코딩 하지말라' 라는 메시지가 나오는데, 정답이 있는 작업형 1, 3은 정답만 맞으면 만점처리 되는거 아닌가요? 하드코딩을 하거나 눈으로 세거나 혹시 채점하면서 코드문(풀이과정)까지 봐서, 답은 맞아도 풀이가 정답이 아니라면 틀릴수도 있나요...? 아래 비슷한 질문이 있는거같은데, 응시자 유의사항 보면 정답만 맞추라는 뉘앙스인데, 이번 8회 실기는 어떻게 해야하나요?