172만명의 커뮤니티!! 함께 토론해봐요.
미해결
[신규 개정판] 이것이 진짜 크롤링이다 - 실전편 (인공지능 수익화)
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요. https://cafe.naver.com/f-e/cafes/31023030/menus/15?t=1751377938438 해당 주소로 접속했을 때, 강의와 다르게, iframe이 확인 안되는데요... 네이버 카페 html 구조가 바뀐걸까요... 특정 게시글 하나를 클릭해서 로드 되면, iframe ID는 보여요. 5개씩 버튼을 먼저클릭하고, 50개씩 버튼을 클릭하는 방법으로 해야될까요? driver.find_element(By.CSS_SELECTOR, "#menuLink15").click() # 50개씩 클릭 driver.find_element(By.CSS_SELECTOR, ".option_list > li:nth-of-type(7) button").click()
ottplus
2025-07-01T13:58:08.514Z
댓글 4
좋아요 0
조회수 479
해결됨
윤파고의 정보처리기사 DB/프로그래밍 All-In-One
업데이트 명령어 설명해주실때 name=test 라고 되어있는데 test에 작은따옴표가 붙어야되는거 아닌가요?? 다른 예시에서는 그렇게 나와서요.
python java c dbms/rdbms 정보처리기사
john1129sk
2025-07-01T13:29:55.126Z
댓글 1
좋아요 0
조회수 103
해결됨
(2026 최신!) 일주일만에 합격하는 정보처리기사 실기
해당 문제는 코드를 i, j=1부터 노가다로 푸는게 아니라, 코드해석으로 풀어서 결과값이 i=10, j=21이렇게 바로 나오는걸까요?
강네오
2025-07-01T13:29:13.460Z
댓글 2
좋아요 0
조회수 75
해결됨
(2026 최신!) 일주일만에 합격하는 정보처리기사 실기
int p = &n; 이면 변수 n의 주소를 p의 값에 넣는 것이라서 p는 주소값이 되고 *p는 p가 가리키고 있는 주소의 값 즉 n의 값이 되는데 int array[] = {10,20,30,40,50}; int *ptr = array;인 상황에서 *ptr은 배열의 첫번째 값을 가리키는 것이면 ptr은 무엇을 갖는 건가요? array의 첫번째 값의 주소를 갖게되나요?
dbndus0024
2025-07-01T11:27:22.018Z
댓글 2
좋아요 0
조회수 52
해결됨
(2026 최신!) 일주일만에 합격하는 정보처리기사 실기
혹시 강의 중 추가된 내용이 있는 강의 있을까요? 없으면 간단히 훑어보고 코드 문제 위주로 풀려고 합니다
김연재
2025-07-01T10:46:07.797Z
댓글 2
좋아요 0
조회수 50
해결됨
(2026 최신!) 일주일만에 합격하는 정보처리기사 실기
안녕하세요 수업자료 질문 업로드 일정 문의드립니다 정적 변수, 정적 메서드 (static) v2 해당 수업 수업자료 언제쯤 올라올까요?? 6월30일까지 업로드한다고 써져있긴합니다!
Charlie
2025-07-01T08:55:34.738Z
댓글 2
좋아요 1
조회수 52
해결됨
6주 완성! 백엔드 이력서 차별화 전략 4가지 - 똑같은 이력서 속에서 돋보이는 법
1. 현재 학습 진도 몇 챕터/몇 강을 수강 중이신가요? 4강 트랜잭션과 락 트랜잭션과 락 관련 챕터를 수강 중입니다. 쿠폰 동시성 발급 사례를 보여주셨는데, 락이 필요하고, 왜 동시성 문제가 일어나고 어떻게 해결하는지에 대해 이해하고 있습니다. 쿠폰 동시성 발급 사례에서 코드를 보면 단순히 max값을 보고 current값을 증가하는 코드를 이용해 "락이 걸려있지 않아 의도대로 동작하지 않음"을 보여주시는 것 같습니다. 이런 사례 관련해서 많은 사람들이 "낙관적 락", "비관적 락"에 대해 공부하고, "비관적 락으로 해결"로 마무리를 하는 것 같습니다. 근데 저는 비관적 락이 아니라, query를 직접 작성해서 SELECT와 UPDATE를 한번에 사용할 수 있지 않을까 라는 관점에서 "원자적 업데이트"를 사용했습니다. 비관적 락: select + for update -> update 원자적 업데이트: update + where current < n 물론 select와 update를 한 번에 해결하는 상황이 아니라, 로직이 중간에 추가되면 비관적 락을 써야된다는 것을 알고 있습니다. 하지만 다른 사람들의 블로그를 보면 하나의 쿼리로 해결할 수 있는 상황을 비관적 락으로 해결하는 게 맞는건가 라는 의문이 들었습니다. 아무튼 이런 배경에서 질문은 아래와 같습니다. 비관적 락이 아니라 원자적 업데이트 라는 말을 이력서에 쓰면 더 도움이 될까요? 실제는 SQL 쿼리 하나 작성한건데, 비관적 락이 더 있어보이는 느낌인 거 같다...? 비관적 락으로 해결해야 되는 상황을 만들고 싶은데, select와 update 사이에 어떤 로직을 추가해야할까요? 기획을 변경 가능한 상황입니다! 외부 API: 결제말고 다른 거... 문자 알림? 다른 테이블 조회 또는 업데이트: SQL join문 잘 짜면 해결되는 거 아닌가... 위 내용과 관련해서 작성한 블로그 글입니다. https://velog.io/@suhwani/QRworld-동시성-해결-원자적-업데이트 감사합니다!
정수환
2025-07-01T07:50:09.771Z
댓글 2
좋아요 0
조회수 338
미해결
코딩테스트 [ ALL IN ONE ]
어제 노션 공유 신청했는데 아직 안와서.. 메일로 오는 거 맞나요?
khcho1492
2025-07-01T07:29:40.038Z
댓글 2
좋아요 0
조회수 99
해결됨
스프링부트로 직접 만들면서 배우는 대규모 시스템 설계 - 게시판
안녕하세요 ! 좋은 강의 해주셔서 감사합니다. hot article 부분에서 헷갈리는 부분이 있어서 질문 남깁니다. hot article 을 저장할때, article 의 생성 날짜 기준으로 저장하기 때문에, 생성 시간이 아닌 다른 날짜에 hot article이 되더라도, 생성 시간이 key가 되어 그 생성 시간 날짜에 저장이 되는 것이 맞나요 ?
java mysql spring-boot kafka redis
김태우
2025-07-01T06:50:17.975Z
댓글 2
좋아요 0
조회수 111
미해결
(2026 업데이트)Cursor와 ChatGPT로 시작하는 바이브코딩
커서 기능 서령에서 이미 폴더랑 파일들이 세팅되어있는데 강의에서 안 보여요 ㅜ 커서 설치 끝 부분은 프로젝트 액티베이트 하는 거에서 끝나고, 6. 기능 설명 강의가 이어지는데 그 사이 폴더랑 파일 세팅 하는 부분이 안나와있어요 ㅠ
python FastAPI cursor chatgpt 바이브코딩
lshsai
2025-07-01T03:10:28.941Z
댓글 2
좋아요 0
조회수 180
미해결
OpenAI API 실전 마스터: 중급자를 위한 고성능 AI 서비스 설계 및 배포
실습 - Vision API 활용 방법 이해에서 아래와 같은 코드를 실행하게 되면 url = "https://upload.wikimedia.org/wikipedia/commons/thumb/d/dd/Gfp-wisconsin-madison-the-nature-boardwalk.jpg/2560px-Gfp-wisconsin-madison-the-nature-boardwalk.jpg" response = client.chat.completions.create( model=Model, messages=[ { "role": "user", "content": [ {"type": "text", "text": "이 이미지의 내용을 설명해줘. 한국어로 설명해줘."}, {"type": "image_url", "image_url": {"url": url}}, ] } ], max_tokens=300, ) response.to_dict() 결과가 아래와 같이 나오는데 {'id': 'chatcmpl-BnxBjLVQUG5mlJJA9i9YhADGfCe2u', 'choices': [{'finish_reason': 'stop', 'index': 0, 'logprobs': None, 'message': {'content': '이미지는 푸른 풀밭과 하늘이 넓게 펼쳐진 풍경을 보여주고 있습니다. 중앙에는 나무 판자로 된 산책로가 놓여 있어 풀밭을 따라 걷는 길처럼 보입니다. 하늘은 맑고 파란색으로 구름이 흩어져 있으며, 주변에는 나무와 덤불이 자생하고 있습니다. 전체적으로 자연의 평화롭고 고요한 분위기를 느낄 수 있는 장면입니다.', 'refusal': None, 'role': 'assistant', 'annotations': []}}], 'created': 1751245291, 'model': 'gpt-4o-mini-2024-07-18', 'object': 'chat.completion', 'service_tier': 'default', 'system_fingerprint': 'fp_62a23a81ef', 'usage': {'completion_tokens': 108, 'prompt_tokens': 36857, 'total_tokens': 36965, 'completion_tokens_details': {'accepted_prediction_tokens': 0, 'audio_tokens': 0, 'reasoning_tokens': 0, 'rejected_prediction_tokens': 0}, 'prompt_tokens_details': {'audio_tokens': 0, 'cached_tokens': 0}}} max_tokens으로 준 인자값은 completion_token 의 상한 limit를 정하는건가요? prompt_tokens 의 값이 강의의 내용과 비교해서 너무 큰거 같아서 질문을 드리는 겁니다.
python NLP chatgpt openai-api 생성형ai
SoulKey
2025-07-01T00:28:44.688Z
댓글 2
좋아요 0
조회수 226
해결됨
(2026 최신!) 일주일만에 합격하는 정보처리기사 실기
25년 1회 SQL문제나 어려운 문제는 따로 강의하신게 있으신가요? 유튜브에서 확인했을 땐 안보여서요. 구매한 영상은 전 기출문제위주같습니다
D K
2025-06-30T23:56:46.509Z
댓글 3
좋아요 0
조회수 105
미해결
15일간의 빅데이터 파일럿 프로젝트
주제 1,2에선 문제 없이 됐었는데 주제 3에서 예약을 실행하니 테이블은 생성 되는데 그 이후 데이터 삽입이 안됩니다. chat gpt 통해 여러가지 시도 해봤는데 해결이 안되네요. 어떻게 해결 가능할까요? 하이브 쿼리는 강사님 쿼리 복붙 했습니다. jar 파일 돌렸을 때 날짜는 20250625였고 강의 내용대로 20200322을 다 넣었었습니다. 워크플로우 매개변수 설정도 즉시실행으로 20200322 값을 넣었습니다. JOB - 예약 - LOG 2025-07-01 08:19:11,671 INFO org.apache.oozie.command.coord.CoordActionInputCheckXCommand: SERVER[server02.hadoop.com] USER[admin] GROUP[-] TOKEN[] APP[Subject 3 - 예약] JOB[0000141-250701040825040-oozie-oozi-C] ACTION[0000141-250701040825040-oozie-oozi-C@131] [0000141-250701040825040-oozie-oozi-C@131]::CoordActionInputCheck:: Missing deps: 2025-07-01 08:19:11,673 WARN org.apache.oozie.util.DateUtils: SERVER[server02.hadoop.com] USER[admin] GROUP[-] TOKEN[] APP[Subject 3 - 예약] JOB[0000141-250701040825040-oozie-oozi-C] ACTION[0000141-250701040825040-oozie-oozi-C@131] GMT, UTC or Region/City Timezone formats are preferred instead of Asia/Seoul 2025-07-01 08:19:11,673 WARN org.apache.oozie.util.DateUtils: SERVER[server02.hadoop.com] USER[admin] GROUP[-] TOKEN[] APP[Subject 3 - 예약] JOB[0000141-250701040825040-oozie-oozi-C] ACTION[0000141-250701040825040-oozie-oozi-C@131] GMT, UTC or Region/City Timezone formats are preferred instead of Asia/Seoul 2025-07-01 08:19:11,678 INFO org.apache.oozie.command.coord.CoordActionReadyXCommand: SERVER[server02.hadoop.com] USER[admin] GROUP[-] TOKEN[] APP[Subject 3 - 예약] JOB[0000141-250701040825040-oozie-oozi-C] ACTION[] Not starting any additional actions because max concurrency [1] for coordinator [0000141-250701040825040-oozie-oozi-C] has been reached. 2025-07-01 08:19:11,790 INFO org.apache.oozie.command.coord.CoordActionInputCheckXCommand: SERVER[server02.hadoop.com] USER[admin] GROUP[-] TOKEN[] APP[Subject 3 - 예약] JOB[0000141-250701040825040-oozie-oozi-C] ACTION[0000141-250701040825040-oozie-oozi-C@132] [0000141-250701040825040-oozie-oozi-C@132]::CoordActionInputCheck:: Missing deps: 2025-07-01 08:19:11,792 WARN org.apache.oozie.util.DateUtils: SERVER[server02.hadoop.com] USER[admin] GROUP[-] TOKEN[] APP[Subject 3 - 예약] JOB[0000141-250701040825040-oozie-oozi-C] ACTION[0000141-250701040825040-oozie-oozi-C@132] GMT, UTC or Region/City Timezone formats are preferred instead of Asia/Seoul 2025-07-01 08:19:11,792 WARN org.apache.oozie.util.DateUtils: SERVER[server02.hadoop.com] USER[admin] GROUP[-] TOKEN[] APP[Subject 3 - 예약] JOB[0000141-250701040825040-oozie-oozi-C] ACTION[0000141-250701040825040-oozie-oozi-C@132] GMT, UTC or Region/City Timezone formats are preferred instead of Asia/Seoul 2025-07-01 08:19:11,796 INFO org.apache.oozie.command.coord.CoordActionReadyXCommand: SERVER[server02.hadoop.com] USER[admin] GROUP[-] TOKEN[] APP[Subject 3 - 예약] JOB[0000141-250701040825040-oozie-oozi-C] ACTION[] Not starting any additional actions because max concurrency [1] for coordinator [0000141-250701040825040-oozie-oozi-C] has been reached. 2025-07-01 08:19:18,058 INFO org.apache.oozie.command.coord.CoordActionReadyXCommand: SERVER[server02.hadoop.com] USER[admin] GROUP[-] TOKEN[] APP[Subject 3 - 예약] JOB[0000141-250701040825040-oozie-oozi-C] ACTION[] Not starting any additional actions because max concurrency [1] for coordinator [0000141-250701040825040-oozie-oozi-C] has been reached. 2025-07-01 08:19:30,847 INFO org.apache.oozie.service.StatusTransitService$StatusTransitRunnable: SERVER[server02.hadoop.com] USER[admin] GROUP[-] TOKEN[] APP[Subject 3 - 예약] JOB[0000141-250701040825040-oozie-oozi-C] ACTION[-] Running bundle status service from last instance time = 2025-06-30T23:18Z 2025-07-01 08:19:30,848 INFO org.apache.oozie.service.StatusTransitService$StatusTransitRunnable: SERVER[server02.hadoop.com] USER[admin] GROUP[-] TOKEN[] APP[Subject 3 - 예약] JOB[0000141-250701040825040-oozie-oozi-C] ACTION[-] Released lock for [org.apache.oozie.service.StatusTransitService] 2025-07-01 08:20:18,064 INFO org.apache.oozie.command.coord.CoordActionReadyXCommand: SERVER[server02.hadoop.com] USER[admin] GROUP[-] TOKEN[] APP[Subject 3 - 예약] JOB[0000141-250701040825040-oozie-oozi-C] ACTION[] Not starting any additional actions because max concurrency [1] for coordinator [0000141-250701040825040-oozie-oozi-C] has been reached. JOB - 워크플로우 - LOG 2025-07-01 08:12:00,094 INFO org.apache.oozie.action.hadoop.Hive2ActionExecutor: SERVER[server02.hadoop.com] USER[admin] GROUP[-] TOKEN[] APP[Subject 3 - Workflow] JOB[0000143-250701040825040-oozie-oozi-W] ACTION[0000143-250701040825040-oozie-oozi-W@hive-6885] Starting action. Getting Action File System 2025-07-01 08:12:02,264 WARN org.apache.oozie.action.hadoop.Hive2ActionExecutor: SERVER[server02.hadoop.com] USER[admin] GROUP[-] TOKEN[] APP[Subject 3 - Workflow] JOB[0000143-250701040825040-oozie-oozi-W] ACTION[0000143-250701040825040-oozie-oozi-W@hive-6885] Invalid configuration value [null] defined for launcher max attempts count, using default [2]. 2025-07-01 08:12:02,264 INFO org.apache.oozie.action.hadoop.YarnACLHandler: SERVER[server02.hadoop.com] USER[admin] GROUP[-] TOKEN[] APP[Subject 3 - Workflow] JOB[0000143-250701040825040-oozie-oozi-W] ACTION[0000143-250701040825040-oozie-oozi-W@hive-6885] Not setting ACLs because mapreduce.cluster.acls.enabled is set to false 2025-07-01 08:12:02,911 INFO org.apache.oozie.action.hadoop.Hive2ActionExecutor: SERVER[server02.hadoop.com] USER[admin] GROUP[-] TOKEN[] APP[Subject 3 - Workflow] JOB[0000143-250701040825040-oozie-oozi-W] ACTION[0000143-250701040825040-oozie-oozi-W@hive-6885] checking action, hadoop job ID [application_1751310527212_0157] status [RUNNING] 2025-07-01 08:12:02,914 INFO org.apache.oozie.command.wf.ActionStartXCommand: SERVER[server02.hadoop.com] USER[admin] GROUP[-] TOKEN[] APP[Subject 3 - Workflow] JOB[0000143-250701040825040-oozie-oozi-W] ACTION[0000143-250701040825040-oozie-oozi-W@hive-6885] [***0000143-250701040825040-oozie-oozi-W@hive-6885***]Action status=RUNNING 2025-07-01 08:12:02,914 INFO org.apache.oozie.command.wf.ActionStartXCommand: SERVER[server02.hadoop.com] USER[admin] GROUP[-] TOKEN[] APP[Subject 3 - Workflow] JOB[0000143-250701040825040-oozie-oozi-W] ACTION[0000143-250701040825040-oozie-oozi-W@hive-6885] [***0000143-250701040825040-oozie-oozi-W@hive-6885***]Action updated in DB! 2025-07-01 08:12:02,917 INFO org.apache.oozie.command.wf.WorkflowNotificationXCommand: SERVER[server02.hadoop.com] USER[-] GROUP[-] TOKEN[-] APP[-] JOB[0000143-250701040825040-oozie-oozi-W] ACTION[0000143-250701040825040-oozie-oozi-W@hive-6885] No Notification URL is defined. Therefore nothing to notify for job 0000143-250701040825040-oozie-oozi-W@hive-6885 2025-07-01 08:22:13,932 INFO org.apache.oozie.action.hadoop.Hive2ActionExecutor: SERVER[server02.hadoop.com] USER[admin] GROUP[-] TOKEN[] APP[Subject 3 - Workflow] JOB[0000143-250701040825040-oozie-oozi-W] ACTION[0000143-250701040825040-oozie-oozi-W@hive-6885] checking action, hadoop job ID [application_1751310527212_0157] status [RUNNING] 용량 CM 상태
빅데이터 hadoop kafka zookeeper redis flume impala 데이터-엔지니어링
이유진
2025-06-30T23:26:25.318Z
댓글 2
좋아요 0
조회수 113
해결됨
38군데 합격 비법, 2026 코딩테스트 필수 알고리즘
최빈수 풀고 있는데 문제들을 앞으로 풀면서 몇분정도 고민하고 풀이를 보면 좋을 지 여쭤봅니다. 감사합니다!!
python 코테 준비 같이 해요! algorithm data-structure
Estados Unidos
2025-06-30T22:35:55.090Z
댓글 1
좋아요 0
조회수 296
미해결
[퇴근후딴짓] 빅데이터 분석기사 실기 (작업형1,2,3)
안녕하세요! 10회 시험치고 난 후 복기하여 혹시 여기서 감점사항이 있을지 여쭤보고 싶습니다!! 제가 작성한 코드는 배운내용중 레이블 인코더를 작성한후 제출하였으며, rmse값은 500후반대가 나왔습니다! (lightbgm으로 했을때 수치가 600대 이상으로 높게 나와서 최종적으론 randomforest로 제출) 코드는 아래와 같은데.. 고견 남겨주심 감사하겠습니다!! (복기코드내용중 혹시 오타가 있다면 실제 시험에서는 없다고 가정) import pandas as pd train = pd.read _csv("train.csv") test = pd.read _csv("test.csv") print("\n ===데이터크기===") print("Train shape:", train.shape) print("Test shape:", test.shape) print( "\n ===데이터자료형===") print( train.info ()) print("\n ===결측치수===") print(train.isnull().sum()) print(test.isnull().sum()) #train['GAS_TOTL'].nunique() print("\n ===target기술통계===") print(train['GAS_TOTL'].describe()) target = train.pop('GAS_TOTL') from sklearn.preprocessing import LabelEncoder cols = train.select _dtypes(include='object').columns for col in cols: le = LabelEncoder() train[col] = le.fit _transform(train[col]) test[col] = le.transform(test[col]) from sklearn.model_selection import train_test_split X_tr, X_val, y_tr, y_val = train_test_split(train, target, test_size=0.2, random_state=0) from sklearn.ensemble import RandomForestRegressor rf = RandomForestRegressor(random_state=0) rf.fit (X_tr, y_tr) pred = rf.predict(X_val) #import lightgbm as lgb #lg = lgb.LGBMRegressor(random_state=0, verbose=-1) # lg.fit (X_tr, y_tr) #pred = lg.predict(X_val) #print(mean_squared_error(y_val, pred) from sklearn.metrics import mean_squared_error rmse=mean_squared_error(y_val, pred)**0.5 print(rmse) pred = rf.predict(test) result = pd.DataFrame({'pred': pred}) result.to _csv("result.csv", index=False) print(pred.shape) print( pd.read _csv("result.csv").head())
python 머신러닝 빅데이터 pandas 빅데이터분석기사
인코더
2025-06-30T12:49:21.286Z
댓글 2
좋아요 1
조회수 163
해결됨
베개 투자법: 자면서 돈 버는 AI 주식 자동 매매 머신
안녕하세요 강의 자료를 못 찾겠어서 어디에 있는지 알고 싶습니다 다른 비슷한 질문들을 봤는데 동영상 들어가서 스크롤를 내려도 수업자료가 보이지 않습니다. 따로 강의자료 링크도 못 찾겠어서 강의 자료 어디 있는지 다시 설명 부탁드립니다
python 딥러닝 빅데이터 FastAPI 데이터-엔지니어링
yengmo
2025-06-30T12:46:33.758Z
댓글 3
좋아요 0
조회수 137
해결됨
(2026 최신!) 일주일만에 합격하는 정보처리기사 실기
6분에있는 출력값중에 1,2,3출력값앞에 어떤이유로 dict_keys,dic_values,dict_items이런 이름이 붙는지 궁금합니다. 어떤규칙성을 가지나요?
alsrb4367
2025-06-30T12:10:06.847Z
댓글 2
좋아요 0
조회수 56
해결됨
(2026 최신!) 일주일만에 합격하는 정보처리기사 실기
int arr[] = {10, 20, 30,40,50}; int *p = arr; printf("%d", *p++); printf("%d", (*p)++); printf("%d", ++(*p)); printf("%d", *++p); printf("%d", ++*p); 다음과같이 포인터가 존재한다면 어떻게 출력이 되는지와 그 이유를 알 수 있을까요?
alsrb4367
2025-06-30T08:46:20.500Z
댓글 2
좋아요 0
조회수 90
해결됨
(2026 최신!) 일주일만에 합격하는 정보처리기사 실기
이번 1회 시험봤는데 53점으로 아쉬운듯 아쉽지 않게 떨어져서 1회 기출을 계속 풀어보기 위해 결제한 사람입니다. 어디에도 1회를 복원하고, 제대로 풀어주는 분이 주말코딩님 밖에 없더라고요ㅠ 1회 끝나고 2달 만에 공부하는데 지난 기출들은 계속 풀어보면서(좀 까먹어서,,) 1회 문제들만 집중적으로 풀면 될까요?? 어떻게 하는게 좋을까요?
이동근
2025-06-30T05:59:27.107Z
댓글 2
좋아요 0
조회수 169
해결됨
(2026 최신!) 일주일만에 합격하는 정보처리기사 실기
전에 말씀드린 정답을 제외한 기출문제들 묶음에 대해서 언제쯤 올라오는지 궁금합니다. 정보처리기사 2회시험이 한달도 남지않아서요....
alsrb4367
2025-06-30T03:26:16.772Z
댓글 2
좋아요 0
조회수 60