안녕하세요. 강의전 IntelliJ IDEA Ultimate 학생 라이센스 가능하다고 해서 수강신청을 하게 되었는데요. 해당 툴에 대한 설치 가이드가 보이지 않습니다. 학생신분이 아니기에 웹메일 인증이 어려울꺼 같은데요. 무료라이센스 사용가능한 방법을 알려주시면 감사하겠습니다.
안녕하세요! 강의 잘 듣고 있습니다. module이 붙어있으면 각 페이지에서 쓰는 left, right를 구별해준다고 하셨는데 page.module.css 가 app 폴더 안에 있어서 전부 다 적용이 되고 있는데 만약 login파일에서 left를 쓰고 signup파일에서도 다른 css를 적용하는 left를 쓰고 싶다면 이 둘은 어떻게 구분을 하나요? page.module.css에 left를 두번 작성하나요..?
안녕하세요. 로직이 바뀐 것 같아서요. 확인 부탁드립니다 ~ 그리고 최종 코드보면 새그룹을 만드는게 프로그램 시작되면 로긴 후 바로 새그룹을 만들고 시작을 하더라고요. 서이추를 하던중에 그룹인원이 꽉차면 만든다고 강의에서 본 것 같거든요~ 로긴 후 바로 새그룹을 만들고 서이추가 시작되니까 프로그램 시작할 때 마다 새그룹이 생겨서 빈 새그룹만 수십개가 되어버리고 있어요.
import time import pandas as pd def get_item_info(item_code): item_url = f' https://finance.naver.com/item/main.naver?code={item_code} ' tables = pd.read _html(item_url, encoding='cp949') # if len(tables) == 13: # 코넥스를 거르기 위해 추가함 # continue item_info = [] # 빈 리스트 생성 finance_info = tables[3].iloc[:,[0,-2]] finance_info.columns = [0,1] # 합치기 전 칼럼명 일치시켜주기 item_info.append(finance_info) for t in tables: if t.shape[1] == 2: item_info.append(t) df_item = pd.concat(item_info) df_item = df_item.set_index(0).T time.sleep(0.2) # 과부하 막기 위한 지연 조회, 최소 0.1 이상. return df_item import numpy as np import seaborn as sns import matplotlib.pyplot as plt # 한글폰트 위함 import datetime plt.style .use("seaborn-v0_8-talk") font_family = "Malgun Gothic" plt.rc("font", family = font_family) plt.rc("axes", unicode_minus=False) url = ' https://finance.naver.com/sise/sise_group_detail.naver?type=upjong&no=282 ' table = pd.read _html(url, encoding='cp949') raw = table[2] raw = raw.dropna(how='all').dropna(axis=1, how='all') #추가해서 칼럼도 모두 결측치시 삭제. today = datetime.datetime.today () today = today.strftime('%y%m%d') raw['종목명전처리'] = raw['종목명'].str.replace('*','', regex=True) # 문자치환 raw['종목명전처리'] = raw['종목명전처리'].str.strip() # 앞뒤 공백 제거 import FinanceDataReader as fdr df_krx = fdr.StockListing('KRX') # print(df_krx[['Code','Name']]) df_item_code_name = df_krx[['Code','Name']] # 위의 종목명_전처리 칼럼과 Name 칼럼을 연결지어서 코드 잡아준다. df_item_code_name.columns = ['종목코드', '종목명전처리'] raw = raw.merge(df_item_code_name) # 강의에서 df에 해당함 # progress_apply는 map의 사용방법을 되짚어보면서 봐라. 일괄적으로 함수 적용시 사용. # 진행사항을 보려면 progress_apply을 사용하면 된다. from tqdm.auto import tqdm tqdm.pandas() result = raw['종목코드'].progress_apply(get_item_info) # result로 받아서 데이터프레임 형식으로 concat 해줘야해서 tolist() 사용함 df_item_info = pd.concat(result.tolist()) # print(df_item_info['종목코드']) # 출력해보면 종목코드가 없다. 그래서 넣기 # df_item_info['종목코드'] = raw['종목코드'] # 아래의 reset_index를 위해 비활성화함 # print(df_item_info['종목코드']) # 위에서 index값이 1로 모두 같아 종목코드가 모두 동일 하므로 아래처럼 인덱스 다시 적용 df_item_info = df_item_info.reset_index() df_item_info['종목코드'] = raw['종목코드'] # print(df_item_info['종목코드']) # 위와 같이 작업 후 index라는 칼럼을 삭제해 준다. del df_item_info['index'] # print(raw.shape) df_info = raw.merge(df_item_info) # 따로 지정 안해줘도 종목코드가 같기에 합쳐진다. # 파일명 만들기 file_name_1 = url.split('=')[1].replace('&','_') file_name_2 = url.split('=')[2] file_name = f'{file_name_1}_{file_name_2}.csv' # 저장하기 df_ info.to _csv(file_name, index=False, encoding='cp949') 위와 같이 코드를 작성하고 실행 했는데요. 제목과 같은 오류가 발생 했습니다. 원인을 찾아 본 결과. 코넥스 종목이 포함되어 있어서 칼럼명이 맞지 않아 발생하는 것으로 보입니다. 위의 이미지와 같이 코넥스 종목은 코스닥, 코스피 종목 처럼 table 개수 13개 보다 적게 나오므로 if문으로 table개수가 13개 이하이면 건너띄어 데이터를 받게 하면 오류가 발생하지 않을 것 같은데요. if 문을 함수 어느 위치에 넣으면 좋을지 모르겠어서 질문 드립니다. 어느 위치에 if문을 넣어서 해결하면 좋을까요?
전체 에러 로그: 8fbc4f9f281a *** Found local files: *** * /opt/airflow/logs/dag_id=dags_python_with_custom_hook_bulk_load/run_id=manual__2024-03-06T03:55:34.102649+00:00/task_id=insrt_postgres/attempt=1.log [2024-03-06T03:55:35.452+0000] {taskinstance.py:1979} INFO - Dependencies all met for dep_context=non-requeueable deps ti=<TaskInstance: dags_python_with_custom_hook_bulk_load.insrt_postgres manual__2024-03-06T03:55:34.102649+00:00 [queued]> [2024-03-06T03:55:35.456+0000] {taskinstance.py:1979} INFO - Dependencies all met for dep_context=requeueable deps ti=<TaskInstance: dags_python_with_custom_hook_bulk_load.insrt_postgres manual__2024-03-06T03:55:34.102649+00:00 [queued]> [2024-03-06T03:55:35.456+0000] {taskinstance.py:2193} INFO - Starting attempt 1 of 1 [2024-03-06T03:55:35.464+0000] {taskinstance.py:2214} INFO - Executing <Task(PythonOperator): insrt_postgres> on 2024-03-06 03:55:34.102649+00:00 [2024-03-06T03:55:35.469+0000] {standard_task_runner.py:60} INFO - Started process 262 to run task [2024-03-06T03:55:35.471+0000] {standard_task_runner.py:87} INFO - Running: ['***', 'tasks', 'run', 'dags_python_with_custom_hook_bulk_load', 'insrt_postgres', 'manual__2024-03-06T03:55:34.102649+00:00', '--job-id', '620', '--raw', '--subdir', 'DAGS_FOLDER/dags_python_with custom_hook_bulk_load.py', '--cfg-path', '/tmp/tmp0zav_1t7'] [2024-03-06T03:55:35.472+0000] {standard_task_runner.py:88} INFO - Job 620: Subtask insrt_postgres [2024-03-06T03:55:35.504+0000] {task_command.py:423} INFO - Running <TaskInstance: dags_python_with_custom_hook_bulk_load.insrt_postgres manual__2024-03-06T03:55:34.102649+00:00 [running]> on host 8fbc4f9f281a [2024-03-06T03:55:35.555+0000] {taskinstance.py:2510} INFO - Exporting env vars: AIRFLOW_CTX_DAG_OWNER='***' AIRFLOW_CTX_DAG_ID='dags_python_with_custom_hook_bulk_load' AIRFLOW_CTX_TASK_ID='insrt_postgres' AIRFLOW_CTX_EXECUTION_DATE='2024-03-06T03:55:34.102649+00:00' AIRFLOW_CTX_TRY_NUMBER='1' AIRFLOW_CTX_DAG_RUN_ID='manual__2024-03-06T03:55:34.102649+00:00' [2024-03-06T03:55:35.556+0000] {custom_postgres_hook.py:24} INFO - 적재 대상 파일: /opt/***/files/TbCorona19CountStatus/20240306/TbCorona19CountStatus.csv [2024-03-06T03:55:35.556+0000] {custom_postgres_hook.py:25} INFO - 테이블 :TbCorona19CountStatus_bulk2 [2024-03-06T03:55:35.562+0000] {base.py:83} INFO - Using connection ID 'conn-db-postgres-custom' for task execution. [2024-03-06T03:55:35.582+0000] {custom_postgres_hook.py:34} INFO - TbCorona19CountStatus_bulk2.S_DT: 개행문자 제거 [2024-03-06T03:55:35.583+0000] {custom_postgres_hook.py:34} INFO - TbCorona19CountStatus_bulk2.T_DT: 개행문자 제거 [2024-03-06T03:55:35.583+0000] {custom_postgres_hook.py:38} INFO - 적재 건수:1212 [2024-03-06T03:55:35.583+0000] {custom_postgres_hook.py:40} INFO - postgresql://***:***@172.28.0.3/*** [2024-03-06T03:55:35.587+0000] {warnings.py:110} WARNING - /opt/***/plugins/hooks/custom_postgres_hook.py:43: UserWarning: pandas only supports SQLAlchemy connectable (engine/connection) or database string URI or sqlite3 DBAPI2 connection. Other DBAPI2 objects are not tested. Please consider using SQLAlchemy. file_df.to_sql(name = table_name, [2024-03-06T03:55:35.589+0000] {taskinstance.py:2728} ERROR - Task failed with exception Traceback (most recent call last): File "/home/airflow/.local/lib/python3.11/site-packages/airflow/models/taskinstance.py", line 444, in execute task result = execute callable(context=context, **execute_callable_kwargs) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/home/airflow/.local/lib/python3.11/site-packages/airflow/models/taskinstance.py", line 414, in execute callable return execute_callable(context=context, **execute_callable_kwargs) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/home/airflow/.local/lib/python3.11/site-packages/airflow/operators/python.py", line 200, in execute return_value = self.execute_callable() ^^^^^^^^^^^^^^^^^^^^^^^ File "/home/airflow/.local/lib/python3.11/site-packages/airflow/operators/python.py", line 217, in execute_callable return self.python_callable(*self.op_args, **self.op_kwargs) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/opt/airflow/dags/dags_python_with custom_hook_bulk_load.py", line 14, in insrt_postgres custom_postgres_hook.bulk_load(table_name=tbl_nm, file_name=file_nm, delimiter=',', File "/opt/airflow/plugins/hooks/custom_postgres_hook.py", line 43, in bulk_load file_df.to_sql(name = table_name, File "/home/airflow/.local/lib/python3.11/site-packages/pandas/util/_decorators.py", line 333, in wrapper return func(*args, **kwargs) ^^^^^^^^^^^^^^^^^^^^^ File "/home/airflow/.local/lib/python3.11/site-packages/pandas/core/generic.py", line 3084, in to_sql return sql.to_sql( ^^^^^^^^^^^ File "/home/airflow/.local/lib/python3.11/site-packages/pandas/io/sql.py", line 842, in to_sql return pandas_sql.to_sql( ^^^^^^^^^^^^^^^^^^ File "/home/airflow/.local/lib/python3.11/site-packages/pandas/io/sql.py", line 2848, in to_sql table.create() File "/home/airflow/.local/lib/python3.11/site-packages/pandas/io/sql.py", line 984, in create if self.exists(): ^^^^^^^^^^^^^ File "/home/airflow/.local/lib/python3.11/site-packages/pandas/io/sql.py", line 970, in exists return self.pd_sql.has_table(self.name, self.schema) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/home/airflow/.local/lib/python3.11/site-packages/pandas/io/sql.py", line 2863, in has_table return len(self.execute(query, [name]).fetchall()) > 0 ^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/home/airflow/.local/lib/python3.11/site-packages/pandas/io/sql.py", line 2670, in execute cur = self.con.cursor() ^^^^^^^^^^^^^^^ AttributeError: 'Engine' object has no attribute 'cursor' [2024-03-06T03:55:35.597+0000] {taskinstance.py:1149} INFO - Marking task as FAILED. dag_id=dags_python_with_custom_hook_bulk_load, task_id=insrt_postgres, execution_date=20240306T035534, start_date=20240306T035535, end_date=20240306T035535 [2024-03-06T03:55:35.605+0000] {standard_task_runner.py:107} ERROR - Failed to execute job 620 for task insrt_postgres ('Engine' object has no attribute 'cursor'; 262) [2024-03-06T03:55:35.643+0000] {local_task_job_runner.py:234} INFO - Task exited with return code 1 [2024-03-06T03:55:35.655+0000] {taskinstance.py:3309} INFO - 0 downstream tasks scheduled from follow-on schedule check 결과로 cursor가 attribute로 없다는 오류가 발생합니다. 기존에 있던 이후 글은 글자수 제한으로 삭제합니다.
동강 14:52쯤 진행하고 있는데요 github에서 강사님이 올려주신 스크립트까지 정상적으로 가져왔고 서버에 설치(?)된걸 확인 하였습니다. cd VWS_vagrant_script 들어가서 vagrant up 명령어를 입력 후 실행하니 명령어를 찾을수없다고 하여 실행이 안되는데 왜그런지 좀 알고 싶습니다.. 참고로 저는 vmware workstation15버전을 쓰고있는데...이거랑 상관이 있을까요...? cent1~3 전부 정상 접속까지 확인되었는데.... 답변 주심 감사하겠습니다.
nGrinder에서 script를 작성하고 validate하면 정상적으로 수행 되는 것이 아닌 아래와 같은 오류가 발생합니다. 구글링을 통해서 얻은 정보로는 자바 11버전을 사용하라 하였지만 현재 자바 11 버전을 사용하고 있기에 기존에 다른 분들의 오류 해결과는 맞지 않아 질문을 남깁니다.
알찬 강의 항상 감사드립니다. 작업 위치1 (vsc상에서 작성하고 git push를 하는 위치) : [~/Desktop/airflow강의] 작업 위치2 (WSL에서 git pull을 하는 위치) : [~/airflow] 저는 위와 같은 경로상에서 수업 실습을 진행하고 있으며, '외부 파이썬 함수 수행하기' 강의에서 .env 파일을 다음과 같이 작성했습니다. WORKSPACE_FOLDER=/Users/hpsm5187/Desktop/airflow강의 airflow가 인식하는 작업 폴더는 '작업 위치2'인 걸로 아는데, .env파일 내의 경로는 '작업 위치1'의 경로임에도 이상 없이 작동이 되는 부분이 의아합니다. .env파일을 git에서 인식하지 않도록 처리했는데 .env에서 정의해준 경로는 어떻게 반영이 되는건가요?
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요. 1. 강의 내용과 관련된 질문을 남겨주세요. 2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요. (자주 하는 질문 링크: https://bit.ly/3fX6ygx) 3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요. (질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG) 질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요. ========================================= [질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예/아니오) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) [질문 내용] 안녕하세요. 컴포넌트 스캔과 자동 의존관계 설정 영상 학습중 강사님은 메서드에 파란 밑줄이 그어져 클릭하면 구현부로 바로 이동 하는 걸 봤는데 제 인텔리제이 코드에는 밑줄이 그어지지 않아 클릭을 해도 이동이 안됩니다. 저는 command + b 단축키로 이동하는데 혹시 저렇게 뜨게 할려면 어떻게 해야 하는지 알 수 있을까요 저는 ultimate 버전을 사용중인데도 안 뜨네요