강사님 강의 잘 듣고 있습니다. docker 컨테이너 실행시, --network 옵션으로 네트워크를 지정해주지 않으면 디폴트로 'bridge' 라는 네트워크에 컨테이너가 실행되는건가요?? network 리스트에서 'bridge'라는 name을 찾아서 기본값으로 사용하는걸까요?
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요. 안녕하세요! 쌤 인프런, 유튜브 강의 보면서 잘 만들어 가고 있었는데 현재 코드에서 아무리 수정을 해도 css를 잘못 가져오는건지 오류가 생겨서 답답해서 질문 들고 왔습니다 현재 css 코드 찾기 좀 부탁드릴게요ㅠㅠ 안되는 항목 ✔ 연예뉴스 -> 내용을 못 가져옴 ✔ 스포츠뉴스 -> 제목, 날짜, 내용 다 못 가져옴 css를 여러개 바꿔서 넣어봐도 저는 자꾸 찾을 수 없다고 크롤링 됩니다 도와주세요,,,,,,, #네이버기사 크롤링 엑셀저장 import requests from bs4 import BeautifulSoup import time import pyautogui from openpyxl import Workbook #사용자입력 keyword = pyautogui.prompt("검색어를 입력하세요") lastpage = int(pyautogui.prompt("몇 페이지까지 크롤링 할까요?")) #엑셀 생성 wb = Workbook() #엑셀시트 생성 ws = wb.create_sheet(keyword) #열 너비 조절 ws.column_dimensions['A'].width = 60 ws.column_dimensions['B'].width = 30 ws.column_dimensions['C'].width = 60 ws.column_dimensions['D'].width = 150 #행 번호 row = 1 #페이지 번호 pageNum = 1 for i in range(1, lastpage*10, 10) : print(f"{pageNum}페이지 크롤링중입니다 =================") response = requests.get(f"https://search.naver.com/search.naver?where=news&query={keyword}&sm=tab_opt&sort=1&photo=0&field=0&pd=3&ds=2024.04.11&de=2024.15.20&news&query={keyword}&start={i}") html = response.text soup = BeautifulSoup(html, 'html.parser') articles = soup.select("div.info_group") #뉴스기사 div 10개 추출 for article in articles: links = article.select("a.info") #리스트 time.sleep(0.7) if len(links) >= 2: #링크가 2개 이상이면 url = links[1].attrs['href'] #두번째 링크의 href를 추출 response = requests.get(url, headers={'User-agent': 'Mozilla/5.0'}) html = response.text soup_sub = BeautifulSoup(html, 'html.parser') content = soup_sub.select_one("#newsct_article") if content: content_text = content.get_text(separator="\n") else: content_text = "내용을 찾을 수 없습니다." title = None date = None #만약 연예 뉴스라면 if "entertain" in response.url: title = soup_sub.select_one(".end_tit") date = soup_sub.select_one("div.article_info > span > em") content = soup.select_one("#articeBody") #만약 스포츠 뉴스라면 elif "sports" in response.url: title = soup_sub.select_one(".Main_article_title") content = soup.select_one("._article_content") else: title = soup_sub.select_one(".media_end_head_headline") date = soup_sub.select_one("span.media_end_head_info_datestamp_time._ARTICLE_DATE_TIME") #본문 내용안에 불필요한 div, p제거 divs = content.select("div") for div in divs: div.decompose() paragraphs = content.select("p") for p in paragraphs: p.decompose() print("=======제목======= \n", title.text.strip() if title else "제목을 찾을 수 없습니다.") print("=======날짜======= \n", date.text if date else "날짜를 찾을 수 없습니다.") print("=======URL======= \n", url) print("=======내용======= \n", content.text.strip() if content else "내용을 찾을 수 없습니다") # 'else' 블록에서 'date' 변수 정의는 여기서 끝나도록 수정 ws['A1'] = '제목' ws['B1'] = '날짜' ws['C1'] = 'URL' ws['D1'] = '내용' ws[f'A{row}'] = title.text.strip() if title else "제목을 찾을 수 없습니다." ws[f'B{row}'] = date.text.strip() if date else "날짜를 찾을 수 없습니다." ws[f'C{row}'] = url ws[f'D{row}'] = content_text.strip() if content else "내용을 찾을 수 없습니다." row=row+1 #마지막 페이지 여부 확인하기 next_button = soup.select_one("a.btn_next") if next_button: isLastPage = next_button.attrs.get('aria-disabled', None) if isLastPage == 'true': print("마지막 페이지 입니다.") break pageNum = pageNum+1 wb.save(f"{keyword}_4월_뉴스기사_크롤링(4)_내용까지_0411~0415(3).xlsx")
안녕하세요 궁금증이 생겨 질문드립니다! 강의 중 엔진엑스로 만든 이미지가 있는데 index.html이 다른 A가 있고 B가 있다라는 예시가 있었습니다. 이때 아래와 같이 설명해주셨는데요 이미지를 공유해서 사용하는거랑 컨테이너 생성속도랑 어떻게 연관이 있는건지 잘 이해가 가지 않아 질문드립니다. 동일한 이미지로 컨테이너를 아주 많이 만들어도 이 이미지로 실행된 모든 컨테이너가 하나의 이미지를 공유해서 읽어옵니다. 실제로 큰 부분을 차지하는 이미지를 하나로 유지할 수 있기 때문에 컨테이너를 생성할 때 속도가 빨라지는 것이죠. 또한 아래와 같이 설명해주셨는데요 컨테이너를 만들 때 사용된 이미지에 따라서 이미지의 읽기 전용 레이어 전체를 공유할수도 있고 일부만 공유할 수도 있습니다 이렇게 이미지의 읽기 전용 레이어를 활용하면 컨테이너를 실행할 때 전체 공간을 복사하지 않아도 되기 때문에 컨테이너를 빠르게 실행할 수 있습니다. 그리고 컨테이너가 늘어나면서 사용하는 공간을 최대한 작게 관리할 수 있습니다. 엔진엑스 이미지 A가 다운받아져있다 가졍하고 index.html이 다른 이미지 B를 다운 받는다 가정해보겠습니다. 이미지 B를 다운받을때 이미지 A와 레이어가 같은것은 다운받지 않고 레이어가 다른 index.html레이어만 다운받는걸까요? 컨테이너가 늘어나면서 사용하는 공간을 최대한 작게 관리할 수 있다라는게 어떤것인지 잘 이해가 되지 않아 질문드려봅니다 (레이어별로 파일이 나뉘어 있는걸까요) 혹시 위와 같은 부분을 실습으로 확인할 수 있는 것이나 공식문서 부분에서 확인할 수 있는게 있다면 같이 부탁드립니다!
안녕하세요 선생님 대학교에서 캡스톤디자인을 수행하고 있는 학생입니다. 판결문에서 사건의 원인,판결 결과,가중·감소 처벌 요소,키워드를 추출하고 싶은데 어떤 기술을 사용해야할지 막막하여 질문올리게 되었습니다. 거대언어모델은 지양하라고 교수님께서 말씀하셨습니다..ㅜ 조언을 주신다면 감사하겠습니다.
안녕하세요 강사님! dags_python_with_ templates.py 파일에서 show_templates 함수를 아무 인자도 넣지 않고 실행을 시키는데요, dag 실행시 출력되는 키워드 인자들은 에어플로우 태스크 객체에 기본으로 입력되는 값들인가요? 정확한 원리가 궁금하여 여쭤봅니다
저번에 질문했었던 사람입니다. 테스트로 인하여 코드가 계속 변경되어 새로 글 올립니다. 프론트엔드를 nextjs를 사용하고, 백엔드는 nestjs를 사용중입니다. nextjs에서 .env파일에 backend_url을 입력해놓고, nextjs에서 process.env.backend_url 을 통해서 사용중입니다. github 주소 : https://github.com/ababqw123/wedding-app 이고, 프론트엔드에서 .env파일에 backend 주소는 현재 로컬 테스트로 로 작성해서 localhost 의 8080 포트를 사용중이고, process.env.NEXT _PUBLIC_SERVER_URL을 통해서 가져오고 있습니다. docker compose에서도 8080포트로 지정을 따로 해주었습니다. docker로 연결했을 때 백엔드 주소를 어떻게 설정해야할지 정확하게 몰라서 문의 드립니다.
VM 을 전원 재기동 해서 쿠버네티스도 종료되어서 파드들이 다 죽는 것으로 생각했는데, 재기동 후 파드 조회를 해보니 하나씩 Running 상태로 되어가더라구요. 쿠버네티스 자체는 서버에서 데몬처럼 동작하고, 쿠버네티스들이 파드를 자동으로 Run 시켜주는 것으로 보이는데 해당 현상에 대한 해석이 맞는지 문의드립니다. 감사합니다.
안녕하세요. 백엔드 Dockerfile 내용 보고서 질문이 있습니다. 실제로 실습을 하다 보면 /build/libs에서 이렇게 jar 파일이 두개가 생기는데요. COPY --from=build /app/build/libs/*.jar /app/leafy.jar 이 명령어는 .jar 확장자 파일 모두 leafy.jar이름으로 복사한다는 의미인거 같은데요. 이렇게 2개의 파일이 있거나 또는 2개 이상의 파일이 있을때.. 1) 마지막 파일 기준으로 복사가 되는걸까요? 2) 아니면 두개의 파일이 합쳐져서 leafy.jar로 하나로 복사가 되는걸까요? 두개의 파일이 하나로 합쳐진다면 실행할때 잘 안될거 같은 느낌이 들어서요. 3) 추가적으로 -plain과 그냥 .jar파일 차이점도 궁금하고 왜 2개가 나오는지도 궁금합니다.
안녕하세요 네이버 메일 자동화 코드를 실행하면 메일 쓰기 버튼을 계속 찾지 못하고 있어 어떻게 수정하면 될지 문의드립니다. 메일함 이동까지는 정상적으로 되고 있으나 메일 쓰기 버튼만 찾지 못하고 있습니다. 코드는 다음과 같습니다. from selenium.webdriver import ChromeOptions from selenium import webdriver from selenium.webdriver.chrome.service import Service as ChromeService from webdriver_manager.chrome import ChromeDriverManager from selenium.webdriver.common.by import By import time import pyperclip import pyautogui from selenium.webdriver.support.ui import WebDriverWait from selenium.webdriver.support import expected_conditions as EC options = ChromeOptions() options.add_experimental_option("detach", True) driver = webdriver.Chrome(service=ChromeService(ChromeDriverManager().install()), options=options) driver.get('https://nid.naver.com/nidlogin.login?mode=form&url=https://www.naver.com/') driver.maximize_window() # 화면 최대화 # 아이디 입력창 id = driver.find_element(By.CSS_SELECTOR, '#id') id.click() pyperclip.copy('eooe5173') pyautogui.hotkey('ctrl', 'v') time.sleep(2) # 비밀번호 입력창 passward = driver.find_element(By.CSS_SELECTOR, '#pw') passward.click() pyperclip.copy('ssw471395~') pyautogui.hotkey('ctrl', 'v') time.sleep(2) # 로그인 버튼 driver.find_element(By.CSS_SELECTOR, '#log\.login').click() time.sleep(5) # 메일함으로 이동 mailbox = driver.find_element(By.CSS_SELECTOR,'#shortcutArea > ul > li:nth-child(1) > a').click() time.sleep(5) # 내게 쓰기 버튼 writeme_button =driver.find_element(By.CSS_SELECTOR, '#root > div > nav > div > div.lnb_header > div.lnb_task > a.item.button_write').click() # 메일 제목 입력창 및 입력 mailname = driver.find_element(By.CSS_SELECTOR, '#subject_title').click() pyperclip.copy('안녕하세요') pyautogui.hotkey('ctrl', 'v') time.sleep(5) # 메일 내용 입력창 및 입력 mailinfo = driver.find_element(By.CSS_SELECTOR, '#body > div > div.workseditor-content').click() pyperclip.copy('네이버 메일 자동화입니다.') pyautogui.hotkey('ctrl', 'v') time.sleep(5) # 메일 저장 mailsave = driver.find_element(By.CSS_SELECTOR, '#content > div.mail_toolbar.type_write > div:nth-child(1) > div > button.button_write_task').click() time.sleep(5) 에러는 동일하게 다음과 같이 노출되고 있습니다. selenium.common.exceptions.NoSuchElementException: Message: no such element: Unable to locate element: {"method":"css selector","selector":"#root > div > nav > div > div.lnb_header > div.lnb_task > a.item.button_write"} (Session info: chrome=123.0.6312.123) Stacktrace: GetHandleVerifier [0x00D14CA3+225091] (No symbol) [0x00C44DF1] (No symbol) [0x00AE9A7A] (No symbol) [0x00B2175B] (No symbol) [0x00B2188B] (No symbol) [0x00B57882] (No symbol) [0x00B3F5A4] (No symbol) [0x00B55CB0] (No symbol) [0x00B3F2F6] (No symbol) [0x00B179B9] (No symbol) [0x00B1879D] sqlite3_dbdata_init [0x01189A43+4064547] sqlite3_dbdata_init [0x0119104A+4094762] sqlite3_dbdata_init [0x0118B948+4072488] sqlite3_dbdata_init [0x00E8C9A9+930953] (No symbol) [0x00C507C4] (No symbol) [0x00C4ACE8] (No symbol) [0x00C4AE11] (No symbol) [0x00C3CA80] BaseThreadInitThunk [0x764EFCC9+25] RtlGetAppContainerNamedObjectPath [0x77DE7C5E+286] RtlGetAppContainerNamedObjectPath [0x77DE7C2E+238]
일단 유익한 강의 감사드립니다 !강의 리마인드 중 갑자기 의문이들어서 질문 드려봅니다.Redis, PostgreSQL 등 db가 서버와 같은 머신에 설치되지않고 따로 별도의 머신에 설치되고 있습니다.대부분의 아키텍쳐가 이런 형상인데 서버랑 분리해서 따로 운영하는 이유가 있을까요?
echo '======== [4] OpenJDK 설치 ========' # yum list --showduplicates java-17-openjdk yum install -y java-17-openjdk echo '======== [5] Gradle 설치 ========' yum -y install wget unzip wget https://services.gradle.org/distributions/gradle-7.6.1-bin.zip -P ~/ unzip -d /opt/gradle ~/gradle-*.zip cat <<EOF |tee /etc/profile.d/gradle.sh export GRADLE_HOME=/opt/gradle/gradle-7.6.1 export PATH=/opt/gradle/gradle-7.6.1/bin:${PATH} EOF chmod +x /etc/profile.d/gradle.sh source /etc/profile.d/gradle.sh echo '======== [6] Git 설치 ========' yum install -y git-2.39.3-1.el8_8 echo '======== [7] Jenkins 설치 ========' wget -O /etc/yum.repos.d/jenkins.repo https://pkg.jenkins.io/redhat-stable/jenkins.repo rpm --import https://pkg.jenkins.io/redhat-stable/jenkins.io-2023.key yum install -y java-11-openjdk jenkins-2.414.2-1.1 systemctl enable jenkins systemctl start jenkins 위 설치 스크립트를 바탕으로 jenkins를 설치 후에, 플러그인을 설치하고 있었는데 위와 같이 몇몇 플러그인이 설치가 되지 않았습니다 ㅠ 제가 이 강의하면서 jenkins를 거의 처음 써봐서 이런 경우 어떻게 대처해야할지 잘 모르겠습니다...! 추상적으로 여쭤봐 죄송하지만, 혹시 어떤 대처를 하면 될지 알려주시면 감사드리겠습니다. 혹시 자바 설치 버젼도 필요하실까봐 올려드립니다 ls /usr/lib/jvm/ java-11-openjdk-11.0.18.0.9-0.3.ea.el8.x86_64 jre-11-openjdk-11.0.18.0.9-0.3.ea.el8.x86_64 java-17-openjdk-17.0.6.0.9-0.3.ea.el8.x86_64 jre-17 jre jre-17-openjdk jre-11 jre-17-openjdk-17.0.6.0.9-0.3.ea.el8.x86_64 jre-11-openjdk jre-openjdk ## java --version openjdk 17.0.6-ea 2023-01-17 LTS OpenJDK Runtime Environment (Red_Hat-17.0.6.0.9-0.3.ea.el8) (build 17.0.6-ea+9-LTS) OpenJDK 64-Bit Server VM (Red_Hat-17.0.6.0.9-0.3.ea.el8) (build 17.0.6-ea+9-LTS, mixed mode, sharing) 젠킨스 로그인 후 dependency 오류 내용 Some plugins could not be loaded due to unsatisfied dependencies. Fix these issues and restart Jenkins to re-enable these plugins. Dependency errors: Timestamper (1.26) Plugin is missing: antisamy-markup-formatter (159.v25b_c67cd35fb_) Pipeline: Declarative Extension Points API (2.2150.v4cfd8916915c) Plugin is missing: workflow-cps (3791.va_c0338ea_b_59c) Pipeline Graph Analysis Plugin (216.vfd8b_ece330ca_) Plugin is missing: workflow-cps (3659.v582dc37621d8) Pipeline (596.v8c21c963d92d) Plugin is missing: workflow-cps (2660.vb_c0412dc4e6d) Plugin is missing: pipeline-groovy-lib (593.va_a_fc25d520e9) Pipeline: GitHub Groovy Libraries (42.v0739460cda_c4) Plugin is missing: pipeline-groovy-lib (629.vb_5627b_ee2104) Checks API plugin (2.0.2) Plugin is missing: plugin-util-api (3.3.0) Pipeline: Multibranch (770.v1a_d0708dd1f6) Plugin is missing: workflow-cps (3691.v28b_14c465a_b_b_) Gradle Plugin (2.10) Plugin is missing: workflow-cps (2660.vb_c0412dc4e6d) Bootstrap 5 API Plugin (5.3.2-3) Plugin is missing: font-awesome-api (6.4.2-1) Folders Plugin (6.858.v898218f3609d) Plugin is missing: ionicons-api (56.v1b_1c8c49374e) Some of the above failures also result in additional indirectly dependent plugins not being able to load. Indirectly dependent plugins: JUnit Plugin (1265.v65b_14fa_f12f0) Failed to load: Bootstrap 5 API Plugin (bootstrap5-api 5.3.2-3) Pipeline (596.v8c21c963d92d) Failed to load: Pipeline: Multibranch (workflow-multibranch 770.v1a_d0708dd1f6) Matrix Project Plugin (822.824.v14451b_c0fd42) Failed to load: JUnit Plugin (junit 1265.v65b_14fa_f12f0) Pipeline: REST API Plugin (2.34) Failed to load: Pipeline Graph Analysis Plugin (pipeline-graph-analysis 216.vfd8b_ece330ca_) Workspace Cleanup Plugin (0.45) Failed to load: Matrix Project Plugin (matrix-project 822.824.v14451b_c0fd42)