const MemoizedProvider = React.memo(TodosStateContext.Provider); TodosStateContent가 컴포넌트이니까 memoizedDispatch의 useMemo말고 아예 React.memo를 사용해서 최적화 해도 되나요? 이렇게 하면 안에 있는 객체 {onCreate, onUpdate, onDelete}도 재생성 안되지 않을까요..?
현재 Next.js Styling 부분까지 시청하였으나, 기존의 사전 렌더링 부분이 이해가 가지 않아 다시 수강한 후 질문드립니다. 일단, 제가 정리한 사전 렌더링 과정은 이와 같습니다. 유저가 브라우저를 통해 서버에게 초기 접속 요청을 보낸다. 서버는 서버 측에서 리엑트 앱을 실행시켜서 모든 리엑트 앱의 컴포넌트를 HTML로 변환한다. 이 변환된 HTML을 브라우저에게 보내준다. 변환된 HTML을 받은 브라우저는 HTML을 화면에 렌더링한다. 이때 유저는 완성된 화면을 볼 수 있다. 이렇게 유저가 요청후에 1차적으로 화면에 요소를 볼 수 있게 되는 시간을 FCP(First Contentful Paint)라고 한다. 그러나 지금은 html만 브라우저에게 보내진 상태이며, 페이지 이동, 버튼 클릭 등등의 상호작용을 수행하는 자바스크립트 코드는 아직 html에 담겨지지 않은 상태이다. 그러므로 유저에게 1차적으로 화면에 렌더링된 이후에 후속으로 서버에서 자바스크립트를 Bundling하여서 브라우저에게 보내준다. 브라우저는 이 번들링된 자바스크립트 파일을 실행한 후에 기존에 1차적으로 화면에 렌더링된 html과 자바스크립트의 로직을 연결하게 된다. 이러한 과정을 hydration이라고 한다. 유저가 초기 요청부터 hydration 까지 종료된 시간을 TTI(Time To Interact)라고 한다. 페이지 이동은 hydration 과정에서 받아온 bundle 자바스크립트 파일을 실행해서 현재 보여지는 컴포넌트를 교체하는 방식으로 CSR과 똑같은 방식으로 처리한다. 결론적으로 제가 궁금한 부분은, 처음에 html로 변환할때 "jsx 부분만" 변환하나요? 아니면 처음에 html로 변환할때 "jsx 부분만" 변환하지 않나요? 처음에 html로 변환할때 next.js의 "모든 Jsx 부분"을 변환하여 브라우저에게 전달하나요? 아니면, 처음에 html로 변환할때 next.js의 모든 Jsx 부분이 아니라, "지금 요청한 페이지의 부분의 jsx만" html 변환하여 브라우저에게 전달하나요? hydration이라는 과정에서는 자바스크립트 파일 뿐만 아니라 "스타일 코드나 다양한 이미지 파일, json 파일"도 전달하여 기존에 쏴준 html에 연결시켜 주는 것인가요? 아니면 지금 요청한 페이지에 연관된 "자바스크립트만" 번들링해서 hydration을 해주는 것인가요? 저의 질문이 조금 장황할 수도 있을 것 같지만 양해부탁드립니다.
안녕하세요 일코님 건강히 잘지내시나요? 최근에 협업할 일이 많이 생겨서 웹 한글(한컴독스)를 사용하기 시작했는데요. 웹 한글에 있는 파일에 접근할 수 있는 방법은 없을까요?(가령 웹한글에 있는 hwp를 불러와서 연다던지) 홈페이지의 개발자 페이지를 보면 위와 같이 한컴 계정 OAuth 인증을 하도록하고있는데, 이거 인증을 통해서 가능한 부분이 있을까요? 환절기 감기조심하세요 감사합니다 ^^
다른 분 질문에 올려주신 답글 해설을 보고도 이해가 안되어 다시 질문 남깁니다 강의 21:30을 보자면 print 3번은 ptr=arr인데 앞에서 바꿔진 print2에서 30으로 변경된 것을 사용하는게 아닌가요? 아니라면 print1에서 변경되었던 21에서 자신은 변경없이 다음 arr[1]을 지시하는 것으로 이해해도 되나요? 그런데 또 이상한게요 print 5번은 print4번이 31을 사용하는 것두 아니고 print2에서 바꿔놓은 30을 사용하는 것두 아니고 정말 정리가 안됩니다
mysql 과 mysql workbench를 설치하고 접속하려는데 안돼서 고생하고 있습니다. 코드는 아래와 같고 'code' from fastapi import FastAPI, Depends from sqlalchemy.orm import Session from sqlalchemy import Column, Integer, String, create_engine from sqlalchemy.ext.declarative import declarative_base from pydantic import BaseModel DATABASE_URL = "mysql+pymysql://newjeans:@gaius2127@localhost:3306/db_name" engine = create_engine(DATABASE_URL) Base = declarative_base() class User(Base): __tablename__ = 'users' id = Column(Integer, primary_key=True, index=True) username = Column(String(50), unique=True, index=True) email = Column(String(120)) class UserCreate(BaseModel): username: str email: str def get_db(): db = Session(bind=engine) try: yield db finally: db.close() Base.metadata.create_all(bind=engine) app = FastAPI() @app.get("/") def read_root(): return {"message": "Now, tackle with mySQL"} @app.post("/users/") def create_user(user: UserCreate, db: Session = Depends(get_db)): new_user = User(username=user.username, email=user.email) db.add(new_user) db.commit() db.refresh(new_user) return {"id": new_user.id, "username": new_user.username, "email": new_user.email} 터미널에 메세지는 PS C:\wonnho\fastapi> python -m uvicorn main:app --reload INFO: Will watch for changes in these directories: ['C:\\wonnho\\fastapi'] INFO: Uvicorn running on http://127.0.0.1:8000 (Press CTRL+C to quit) INFO: Started reloader process [20636] using StatReload Process SpawnProcess-1: Traceback (most recent call last): File "C:\Python312\Lib\site-packages\pymysql\connections.py", line 644, in connect sock = socket.create_connection( ^^^^^^^^^^^^^^^^^^^^^^^^^ File "C:\Python312\Lib\socket.py", line 828, in create_connection for res in getaddrinfo(host, port, 0, SOCK_STREAM): ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "C:\Python312\Lib\socket.py", line 963, in getaddrinfo for res in _socket.getaddrinfo(host, port, family, type, proto, flags): ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ socket.gaierror: [Errno 11003] getaddrinfo failed During handling of the above exception, another exception occurred: Traceback (most recent call last): File "C:\Python312\Lib\site-packages\sqlalchemy\engine\base.py", line 3280, in wrap pool_connect return fn() ^^^^ 중간 생략..... File "C:\Python312\Lib\site-packages\pymysql\connections.py", line 358, in init self.connect() File "C:\Python312\Lib\site-packages\pymysql\connections.py", line 711, in connect raise exc sqlalchemy.exc.OperationalError: (pymysql.err.OperationalError) (2003, "Can't connect to MySQL server on 'gaius2127@localhost' ([Errno 11003] getaddrinfo failed)") (Background on this error at: https://sqlalche.me/e/14/e3q8) 아이디와 패스워드가 문제인거 같은데 뭐가 문제인지 모르겠네요. 륀튼에게 물어보고 제미나이도 물어봤는데 해결이 안되어 힌트라도 얻을려고 질문합니다. 위에 newjeans라는 아이디가 있음.
강의 내용을 바탕으로 프로젝트를 하나 만들다 안되는 부분이 있어 질문드립니다. 제가 axios를 이용해서 데이터를 받는 함수를 만들었는데요 const [posts, setPosts] = useState(); const getAllPosts = async () => { try{ const {data} = await axios.get("/api/posts"); console.log("axios - getAllPosts: ", data); setPosts(data); } catch(error){ console.log("getAllPosts 에러: ",error); } } getAllPosts(); 이런 코드를 작성했을때 렌더링할때 axios를 이용해서 받은 데이터를 posts란 state에 저장하고 이를 리스트 형태로 렌더링하려고 하는데 저기서 그냥 getAllPosts(); 를 해버리면 콘솔창에 무한하게 posts 값이 찍히고 화면에는 렌더링이 되지 않더라고요 ㅠ 콘솔창에는 그래도 데이터가 찍히긴 하는데 말이죠..ㅠ getAllPosts메서드는 비동기 함수니깐 컴포넌트들이 렌더링되기 전에 실행되고 컴포넌트들이 렌더링되는거 아닌가요? 그럼 저 메서드를 호출하면 잘 렌더링이 되야하는거 아닌가요??ㅠㅠ 왜 저렇게 콘솔창에는 무한하게 데이터값이 찍히고 컴포넌트에는 왜 렌더링이 되지 않는건가요??
Q1) 2, 3, ..., N차원 맨해튼 거리에서 각 차원은 서로 독립적인게 맞나요? ex) 2차원인 x, y에서 x의 맨해튼 거리의 최소값과 y축 거리의 최소값은 서로 독립적이라 전체 최소값은 결국 x 맨해튼 거리 최솟값인 x좌표, y 맨해튼 거리가 최솟값인 y 좌표 Q2) N+1개 이상의 N차원 맨해튼 거리의 최솟값은 항상 주어진 점 위에 존재하게 되는건가요? ex) 점이 3개 혹은 4개가 주어진 2차원 맨해튼 거리 최소값은 무조건 주어진 점 위에 있는것인지?
안녕하세요! dag 생성 중에 문의가 있어서 질문드립니다. 저희가 dag파일을 생성할 때, 스케줄로 DAG 실행 주기를 설정하는데요. 매번 공부하고 나서 docker compose down으로 컨테이너를 내리면, 실행 주기에 맞춰서 dag가 실행되지 않는 것 같아서요. 컴퓨터를 off한 상황에서도 postgres DB로 데이터가 적재되도록 만든 dag가 작성한 스케줄에 맞춰서 실행되려면 어떻게 해야하나요? 감사합니다!
안녕하세요! 유튜브 API로 댓글 받아온 뒤, 텍스트 처리 후 postgres DB에 업로드하는 DAG 생성 py파일을 스터디 중에 있는데요. 텍스트 처리할 때 필요한 아래 패키지를 설치하려고 다음과 같은 시도를 했습니다. # wsl에서 root 계정으로 진입 sudo docker exec -u root -it <계정명>-airflow-webserver-1 /bin/bash # 필요한 패키지 설치 apt-get update apt-get install default-jdk -y #Airflow 사용자로 전환 su - airflow #패키지 설치 pip install JPype1 pip install konlpy #컨테이너 종료 및 재시작 sudo docker-compose down sudo docker-compose up 하지만 airflow UI에서는 다음과 같은 에러로 DAG를 만든 py파일이 보이지 않습니다. Broken DAG: [/opt/airflow/dags/youtube_to_ postgres.py ] Traceback (most recent call last): File "<frozen importlib._bootstrap>", line 488, in _call_with_frames_removed File "/opt/airflow/dags/youtube_to_ postgres.py ", line 5, in <module> from konlpy.tag import Okt ModuleNotFoundError: No module named 'konlpy' 필요한 패키지를 설치하는 방법이 잘못되었을까요? 제가 설치해야하는 것들을 설치하는 방법을 알려주시면 감사하겠습니다! apt-get install default-jdk -y pip install JPype1 pip install konlpy