묻고 답해요
164만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결풀스택을 위한 도커와 최신 서버 기술(리눅스, nginx, AWS, HTTPS, 배포까지) [풀스택 Part3]
nginxproxy 설정 부분에서 질문있습니다!
안녕하세요. 강사님 정말 좋은 강의 만들어주셔서 너무 감사드립니다. 다름이 아니라 강의를 듣던 중 nginx.conf 설정 부분에서 upstream 으로 실행중인 container 를 지칭하는 부분에 대해 이해가 되지 않는 부분이 있어 질문드립니다! 질문 내용은 1. 다음과 같은 환경에서 - nginxproxy, react를 띄우는 docker-compose.yaml version: "3" services: nginxproxy: depends_on: - client image: nginx:latest ports: - "80:80" - "443:443" restart: always volumes: - ./nginx/nginx.conf:/etc/nginx/nginx.conf - ./certbot-etc:/etc/letsencrypt - ./myweb:/usr/share/nginx/html container_name: nginxproxy certbot: depends_on: - nginxproxy - client image: certbot/certbot container_name: certbot volumes: - ./certbot-etc:/etc/letsencrypt - ./myweb:/usr/share/nginx/html command: certonly --webroot --webroot-path=/usr/share/nginx/html --email example@gamil.com --agree-tos --no-eff-email --keep-until-expiring -d example.com -d www.example.com front: restart: always build: context: /home/ubuntu/client dockerfile: Dockerfile ports: - "4000:80" # if want direct access container_name: client - Front의 DockerFile로 실행되는 서버는 80포트로 요청을 받고 있습니다. - 80 포트 /client 으로 들어오는 요청 front:4000 으로 전달하고 있는 nginx.proxy upstream docker-client { server front:4000; } server { listen 80; server_name example.com www.example.com; location ~ /.well-known/acme-challenge { allow all; root /usr/share/nginx/html; try_files $uri =404; #try_files $uri /index.tsx; } # Redirection location / { return 301 https://$host$request_uri; } } server { listen 443 ssl; server_name example.com www.example.com; ssl_certificate /etc/letsencrypt/live/example.com/fullchain.pem; ssl_certificate_key /etc/letsencrypt/live/example.com/privkey.pem; include /etc/letsencrypt/options-ssl-nginx.conf; ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem; proxy_connect_timeout 1d; proxy_send_timeout 1d; proxy_read_timeout 1d; location /client/ { proxy_pass http://docker-client; proxy_http_version 1.1; proxy_redirect off; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Host $server_name; proxy_set_header X-Forwarded-Proto $scheme; } 2. client Browser 에서 http://example.com 으로 요청했을 때 3. 예상되는 결과는 아래와 같습니다. --------------- 4. 그러나 결과적으로 정상적으로 요청이 처리되고 있는데 제가 놓치고 있는 부분이 어디인지 알 수있을까요? + upstream 부분을 아래로 바꾸어도 정상동작합니다 upstream docker-client { server front; }
-
해결됨설계독학맛비's 실전 FPGA를 이용한 HW 가속기 설계 (LED 제어부터 Fully Connected Layer 가속기 설계까지)
FSM 코드 리뷰 중 질문드립니다
안녕하세요, fsm_counter_test 코드 리뷰 중 의문점이 생겨 질문 드립니다. line81 ~line87을 보시면 o_done을 always 문 안에서 값을 넣어주고 있습니다. 그러나 line90 ~ line91을 보면 o_idle, o_running의 경우 단순히 assign을 통해서 값을 넣어주고 있습니다. 이 둘의 차이는 어디로부터 기인한 것인가요? assign o_done = (c_state == S_DONE) 으로 하면 안되는 이유가 있나요? 코드를 쭉 리뷰해봐도 이부분에 대한 clue를 잡기가 어렵네요. 감사합니다.
-
미해결[리뉴얼] 파이썬입문과 크롤링기초 부트캠프 [파이썬, 웹, 데이터 이해 기본까지] (업데이트)
안녕하세요! 질문드립니다.
현재 네이버 국내증시(https://finance.naver.com/sise/)에서 "상승, 하락"파트에 대한 HTML코드는 <img height="6" width="7" alt="하락"src="https://ssl.pstatic.net/static/nfinance/ico_down.gif"> 과 같이 나와있는데요, 이렇게 되면 꺽쇄안에 있는 저 "하락"을 가져와야됩니다. 이 상태에서는 import requests from bs4 import BeautifulSoup res = requests.get('https://finance.naver.com/sise/') soup = BeautifulSoup(res.content, 'html.parser') data = soup.select("#popularItemList > li ") for item in data: print (item.find('img').get_text()) 이 코드를 사용해도 에러가 뜨고 "상승", "하락"에 대한 데이터를 수집하지 못합니다. 이렇게 꺽쇠< (여기) > 안에 있는 정보는 어떻게 뽑아올 수 있나요?
-
미해결[C++과 언리얼로 만드는 MMORPG 게임 개발 시리즈] Part1: C++ 프로그래밍 입문
마지막 부분에서 push rax, rbx 부분 질문드립니다.
안녕하세요! 좋은 수업 해주셔서 감사합니다. 마지막 부분에서 push rax, rbx와 pop rbx, rax를 해준 부분은 rax와 rbx의 값에 주소를 할당하여 저장을 해주고 MAX 함수에서 rax rbx를 사용하고 난 뒤 함수가 끝나면 pop을 이용하여 rax , rbx의 값을 주소를 이용하여 다시 원래 갖고있던 중요한 값으로 되돌린다는 의미가 맞을까요?
-
미해결팀 개발을 위한 Git, GitHub 입문
add 시 지정하지 않은 파일도 올라갈 때
안녕하세요 유림님! 똑같이 코드를 작성했는데 add 에 넣은 readme.md 파일 뿐 아니라 다른 html 도 같이 올라가네요ㅜ 아래 git bash 명령어를 그대로 복사해왔는데 혹시 제가 잘못한 것이 있을까요? 감사합니다! USER@DESKTOP-MG9F3FB MINGW64 ~/Desktop/gitprac/boxiting-cat $ git init Initialized empty Git repository in C:/Users/USER/Desktop/gitprac/boxiting-cat/.git/ USER@DESKTOP-MG9F3FB MINGW64 ~/Desktop/gitprac/boxiting-cat (master) $ ls index.html readme.md USER@DESKTOP-MG9F3FB MINGW64 ~/Desktop/gitprac/boxiting-cat (master) $ ls -al total 9 drwxr-xr-x 1 USER 197121 0 Oct 2 21:47 ./ drwxr-xr-x 1 USER 197121 0 Oct 2 21:28 ../ drwxr-xr-x 1 USER 197121 0 Oct 2 21:47 .git/ -rw-r--r-- 1 USER 197121 132 Oct 2 21:47 index.html -rw-r--r-- 1 USER 197121 0 Oct 2 21:47 readme.md USER@DESKTOP-MG9F3FB MINGW64 ~/Desktop/gitprac/boxiting-cat (master) $ git add readme.md USER@DESKTOP-MG9F3FB MINGW64 ~/Desktop/gitprac/boxiting-cat (master) $ git commit -m "description added" [master (root-commit) d916d11] description added 2 files changed, 10 insertions(+) create mode 100644 index.html create mode 100644 readme.md USER@DESKTOP-MG9F3FB MINGW64 ~/Desktop/gitprac/boxiting-cat (master) $
-
미해결따라하며 배우는 노드, 리액트 시리즈 - 쇼핑몰 사이트 만들기[전체 리뉴얼]
보일러 플레이트 네비바 부분 강의가 없어서 아쉽네요.
첫번째 강의 잘 들었습니다. 강의 연계성을 위해서 두번째인 지금 강의도 듣고있는 중인데.. 첫번째 강의때 만든 보일러플레이트를 사실상 폐기하고 지금 강의를 위해 강사님께서 업로드한 보일러플레이트 프로젝트를 다운받아 그 위에 작업을 해야하는거군요.. 물론 빠진부분이 단순히 위에 네비게이션바와 로그인 폼등 CSS나 간단한 부분이라 올려주신 프로젝트를 다운받아 취합하며 첫번째 강의에서 작업하던 프로젝트에 추가하는건 그리 어렵진 않긴 한데 그부분에서 연계성이 살짝 떨어지는 기분이 드네요. 원래 토이프로젝트나 따라하기같은건 밑바닥 A부터 Z까지 같이 만들어야 성취감이 좋은건데 ㅠ
-
해결됨게임 프로그래머 취업 전략 가이드
면접 볼 회사가 남았는데 다른 회사에서 합격 통보를 받으면 기다려 주나요?
회사마다 채용 기간이 다른데 여러 회사에 지원하고 한 회사에서 합격 통보를 받았을 때 다른 회사 면접도 보고 싶을 때는 어떻게 해야 하나요?
-
미해결스프링 핵심 원리 - 기본편
[혹시]스프링 배치프로그램 강의 예정은 없는지요 ?
[혹시]스프링 배치프로그램 강의 예정은 없는지요 ?
-
미해결실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발
Junit4와 Junit5에서 테이스 차이 질문입니다
Junit5와 Junit4 에서의 회원가입테스트에서 Junit5는 Long savedId = memberService.join(member); 에서 NullPoniterException이 터지게 되는데 Junit4에서는 정상적으로 테스트가 완료됩니다. 야생형코스로 하고있는데 이러한 테스트 결과에서 도저히 이해가 안되서 이렇게 질문 남깁니다...
-
미해결단 두 장의 문서로 데이터 분석과 시각화 뽀개기
15강 질문
밑에 있는 코드가 특정값만을 지정해줬을때인데 밑에 이름 추가로 표시된거 말고는 값이 동일한데, 두번째 코드기준으로 실린더 기준에다가 하우스파워를 추가로 특별히 지정해줘도 첫번째 코드기준으로 실린더 기준으로만 했을때랑 값이 동일해서 그런건가요?? 두번째 코드가 특정값을 지정해주신것이라고 하셨는데 위의 지정하지 않았을 때랑 뭐가 확실히 달라졌는지 모르겠습니다!
-
미해결스프링 핵심 원리 - 기본편
IncludeFilters의 존재 이유 문의
질문이 몇개 있어서 드립니다! 1. 컴포넌트스캔이라는 어노테이션을 붙이면 어차피 기본적(default)으로 컴포넌트 어노테이션 붙은 것들은 모두 빈으로 등록해주게 될 텐데요. IncludeFilters를 붙여야하는 이유가 있을까요? 2. IncludeFilters는 말하자면 화이트리스트이고 excludeFilters는 말하자면 블랙리스트일 텐데요. 동일한 곳에 IncludeFilters와 excludeFilters를 동시 적용하면 누가 이길까요? * 예상해보자면.. IncludeFilters > excludeFilters > 나머지(디폴트) 의 우선순위를 가질 것 같은 예감이 드네요..
-
미해결단 두 장의 문서로 데이터 분석과 시각화 뽀개기
14강에서 on의 역할 질문
선생님, 여기에서 on이 쿼리에서 키값이랑 비슷한 역할이라고 하셨는데, 정확히 on에는 무엇을 적어주는건가요? (c.f.저는 스퀄을 아직 안 배워서 잘 모릅니다) 강의에서 x1으로 적어서했는데 아마 컬럼 x1을 의미하는 것 같은데, 왜 x2라고 치고 실행하면 왜 키에러가 뜨는지 궁금합니다. 감사합니다.
-
미해결파이썬 알고리즘 문제풀이 입문(코딩테스트 대비)
case 4, 5 에러
안녕하세요. 주사위 게임 알고리즘 문제 강사님께서 가르쳐주신대로 똑같이 코드 작성한 것 같은데 케이스 4,5번에서 에러가 뜹니다 ㅠ 왜그런 걸까요..? import sys #sys.stdin=open("input.txt", "rt") n=int(input()) res=0 for i in range(n): tmp=input().split() #문자로 리스트로 들어감 tmp.sort() #세번째 규칙 때문 a, b, c=map(int,tmp) #if는 가장 좋은 것 부터. 맨 위가 참이 되면 밑에 구문은 하지 않으므로 if a == b and b==c: money=10000+a*1000 elif a==b or a==c: money=10000+a*100 elif b==c: money=10000+b*100 else: money=c*100 if money>res: res=money print(res)
-
미해결스프링 핵심 원리 - 기본편
basePackages의 범위 질문
예컨대 basePackages에 hello.core라는 식으로 기본 스캔 대상을 설정해주는데, 만약 제 애플리케이션에서 의존중인 라이브러리 내에도 마침 hello.core라는 클래스패스를 가진 게 있으면 그것도 다 컴포넌트 스캔 대상이 되나요?(아닐 것 같긴 한데.. 궁금해서 질문드려요)
-
미해결스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
안드로이드 + 스프링
웹이 아닌 안드로이드 기반 스프링 사용에 있어서 질문이 있습니다. 스프링의 대부분의 강의나 예제들이 웹을 기반으로 하고 있는데, 선생님의 강의로 공부를 하여도 안드로이드 스튜디오에 적용이 가능할까요? 입문 강의를 수강중인데 매우 만족하며 듣고 있어서, 추가 강의 결제를 고민 중에 있습니다.추가적으로 큰 차이가 없다면 강의는 어디까지 수강하는 것을 추천하시는지 궁금합니다.
-
미해결스프링 핵심 원리 - 기본편
@Configuration 없이 @Bean만 사용할 때에 대한 질문
안녕하세요! 진짜 영한님 강의는 최고네요. 감사합니다. 듣다가 질문이 생겼는데요. `@Configuration`을 주석처리하고 `@Bean`만 남겼을 때 빈으로 등록되긴 하는데 여러개가 등록(싱글톤 X)된다고 하셨잖아요. 여기서 헷갈리는 이유는, "Bean은 스프링컨테이너에서 관리되는 싱글톤 객체이다."라는 이론적 내용과, "같은 이름의 Bean이 여러개 생성되기도 한다"라는 이 강의의 실험 결과과 충돌해서인데요. 엄밀한 정리를 하고 싶어서 질문드려요. 일단은 "같은 이름의 Bean이 여러개 생성되기도 한다"가 먼저 가능성 측면에서 맞는 얘기고, "Bean은 스프링컨테이너에서 관리되는 싱글톤 객체이다."는 정상적(일반적)인 방식으로 Bean을 등록한다면이라는 전제가 깔렸을 때 맞는 얘기일 거로 생각 됩니다. 그럼, 아래 내용중에는 무엇이 맞는 걸까요? 영한님이 보여주신 실험처럼, `@Configuration`을 누락하면 동일한 Bean이 여러번 생성되는 경우가 있는데 이 때, 1. `memberRepository`라는 메서드가 3번이나 호출되었는데, 새로 생성될 때마다 기존에 먼저 생성되었던 빈을 덮어쓰기(override)한다. 고로 생성만 N번 될 뿐이지, 결과적으로는 스프링 내에서는 싱글톤으로 존재한다.(* 만일 이게 맞다면 컴파일타임/런타임 모두 에러가 안나고, 동작 자체에는 문제가 없겠네요. 리소스는 많이 잡아먹겠지만요.) 2. `memberRepository`라는 메서드가 3번이나 호출되어 총 3개의 인스턴스가 빈으로 각각 등록되었다. 고로 이름을 같지만 3개의 빈이 실제로 모두 존재한다. (* 만일 이게 맞다면, 이 경우 빈을 사용하기 위해 주입할 때 컴포넌트 스캔 결과, ConflictingBeanDefinitionException이 뜨게 되겠네요.) --- 앗. 질문이 잘못된 부분이 있어서 수정했습니다.
-
미해결따라하며 익히는 크롤링 마스터 with데이터공방
넷플릭스 크롤링 데이터 엑셀파일저장
! pip install selenium from selenium import webdriver browser = webdriver.Chrome('c:/인프라수업자료/chromedriver') url = 'https://www.netflix.com/kr/browse/genre/839338' browser.get(url) html = browser.page_source from bs4 import BeautifulSoup soup = BeautifulSoup(html,'html.parser') section_list = soup.select('section') results = [] for section in section_list: section_title = section.select('h2')[0].text program_list = section.select('li') for program in program_list: program_title = program.select('span.nm-collections-title-name')[0].text program_img = program.select('img')[0]['src'] program_link = program.select('a')[0]['href'] data = [section_title,program_title, program_img, program_link] results.append(data) import pandas as pd df = pd.DataFrame(results) df.columns = ['카테고리', '프로그램명', '이미지', '링크'] df.to_excel('c:/인프라수업자료/엑셀파일저장하기.xlsx') section_title설정해줄 때 [0].text를 해줬는데도 엑셀파일 상에서 카테고리명이 저렇게 나타나요. 그리고 데이터 이미지도 일부분은 주소가 잘 써져있는데 일부분은 저렇게 나타나는데 왜그럴까요..??
-
미해결고수가 되는 파이썬 : 동시성과 병렬성 문법 배우기 Feat. 멀티스레딩 vs 멀티프로세싱 (Inflearn Original)
Thread(4) - Lock, Deadlock 강의를 듣다가 질문드립니다.
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요. 안녕하세요. Thread(4) - Lock, Deadlock 강의를 듣다가 궁금한 점이 생겨서요. 파이썬은 GIL로 한번에 한 스레드만 실행되도록 하고, 제가 멀티스레드를 생성해도 결국 한 스레드만 실행되게 한다고 배웠습니다. 그런데 보여주신 아래 예제에서는 값이 제대로 반영안되는 걸 보여주셨는데요.. local_copy = self.value local_copy += 1 time.sleep(0.1) self.value = local_copy 어차피 GIL때문에 락이 잠겨서 한번에 한 스레드밖에 실행되지 않는데, 이게 값이 왜 제대로 반영안되는건지 궁금합니다. 여러 스레드들은 내부적으로 큐로 관리되고, 한 스레드가 제대로 끝나기 전에는 다른 스레드는 실행되지 않을테니 저 부분이 실행되고 나서야 다른 스레드가 접근할텐데요.. GIL자체가 공유자원에 대한 thread safe하지 않기때문에 그걸 보장하기 위해 인터프리터를 잠가버리는거라고 이해했는데 제 이해가 틀린걸까요 ㅠ GIL이 reference count를 thread safe하게 유지시키기 위해 필요하다고 알고있는데, GIL이 있음으로써 보호해주는건 reference count 하나뿐일까요? GIL이 있음에도 불구하고 멀티스레딩을 thread safe하게 구현할 때는 개발자가 lock을 매번 걸어줘야하는걸까요?
-
미해결스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술
redirectAttributes.addAttribute 관련 질문
item edit 할 때 post 매핑에서는 return 에 {itemId} 를 사용 가능 했는데, add에서는 redirectAttributes.addAttribute 에 안쓰면 안되더라구요. 그럼 item edit 은 redirectAttributes.addAttribute 를 안해줬는데도 사용 가능한 이유가 Postmapping url을 통해 들어온 {itemId} 를 스프링에서 자동으로 redirectAttributes.addAttribute에 넣어주는 건가요 ?? @PostMapping("/add")public String addItemV6(@ModelAttribute Item item, RedirectAttributes redirectAttributes) { Item savedItem = itemRepository.save(item); redirectAttributes.addAttribute("itemId", savedItem.getId()); redirectAttributes.addAttribute("status", true); return "redirect:/basic/items/{itemId}";} @PostMapping("/{itemId}/edit")public String edit(@PathVariable Long itemId, @ModelAttribute Item item) { itemRepository.update(itemId, item); return "redirect:/basic/items/{itemId}";}
-
미해결Vue.js 끝장내기 - 실무에 필요한 모든 것
브랜치 전환
브랜치 전환할때 전에 헷갈리는 부분들을 주석으로 정리했었는데 브랜치로 전환하면 다 날라가서 혹시 다시 돌리는 코드를 알 수 있을까요?