풀스택을 위한 도커와 최신 서버 기술(리눅스, nginx, AWS, HTTPS, 배포까지) [풀스택 Part3]
안녕하세요 영상 11분부터 보시면 Dockerfile 생성 후 ( FROM alpine ) docker build --tag myimage . 하고나서 이미지 리스트를 확인하면 alpine이라는 이미지는 생기지 않고 myimage만 있습니다. 삭제하고 다시 만들어봐도 그렇구요 버전문제일까요 ?.. vi Dockerfile 이렇게 됩니다 ..
안녕하세요. 데이터 증강 부분에 대해서 궁금점이 있어서 질문드립니다. 가지고 있는 데이터가 1000개 라고 가정했을 때, tr.Compose를 적용시키면 '기존 이미지 1000개 + 증강된 추가 이미지 개수' 가 되는건가요?? 제가 간단하게 해봤을 때는 transform 했을 때 이미지 개수 증가가 아니라 단순 이미지 변환까지만 이루어지는 것 같은데, 제가 잘못된 부분이 있는건가 좀 헷갈려서 질문 드립니다. 만약 단순 이미지 변환만 이루어지는 것이라면 이미지 개수 증가를 위해서 추가적인 작업을 진행해주어야 하는지도 궁금하네요.
여기서 1,2번을 정리한건데 맞는 지 확인 해주세요 1. URL을 입력한다. (클라이언트의 요청) 2. DNS 서버로 IP를 찾아내고 생략된 PORT는 scheme로 찾아낸다 . ⇒ DNS에서 IP주소를 획득하는 과정은 3way handshake가 발생하지 않는다. 3.웹 브라우저가 HTTP 요청 메시지를 생성 4.애플리케이션에서 SOCKET 라이브러리를 사용해서 지시 ⇒ "커넥션을 TCP/IP로 맺으세요.! " 라고 지시 ⇒TCP/IP계층에서 이전에 찾은 IP와 PORT 정보를 통해 3 way handshake 방식으로 서버와 연결 먼저 1)이과정이 맞게 생각하고 있는 건지 궁금하고 2)두번째는 다른분의 질문답변에서 3 hand shake를 하면 클라이언트와 서버 모두 서로 IP, PORT를 알게 된다 라고 되있던데 이말은 3 hand shake를 하기위해서는 클라이언트는 서버의 IP, PORT를 알고 있어야하고 3 hand shake 이후에 서버도 클라이언트의 IP, PORT를알게된다는 의미인가요? 그러면 이 수업에서는 DNS 서버로 IP를 찾고 URL(클라이언트의 요청)의 scheme에서 생략된 port를 찾았다 고 배웠는데 그럼 이 과정은 필수 과정인가요?? ( 3 hand shake를 사용하기위한 필수과정 인가요? 클라이언트와 서버가 연결하기위한 필수과정인가요?) 답변 주시면 정말 감사하겠습니다.
[질문 템플릿] 1. 강의 내용과 관련된 질문인가요? 예 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? 예 3. 질문 잘하기 메뉴얼을 읽어보셨나요? 예 [질문 내용] https://www.inflearn.com/questions/112647 위 답변을 참고하였으나 이해하지 못해서 질문드립니다. Cache-Control: no-store, no-cache, must-revalidate no-cache, must-revalidate는 캐시를 검증할 때 사용되는데, 왜 캐시를 검증하는 값을 추가해야 하나요? no-store를 무시하고 캐시로 저장될 수 있다면 캐시를 사용할 때마다 원 서버에서 검증받고 정확한 리소스를 받아오는 것뿐, 결과적으로 완벽한 캐시 무효화가 아니지 않나요? 캐시 사용을 전제로 하는 no-cache, must-revalidate 값이 필요한 이유를 모르겠습니다.
패킷 트레이서 로그인이 안됩니다. 스텝: Cisco Packet Tracer를 연다 로그인 윈도우에서 [Keep Me Updated] 를 활성화시킨다 로그인 윈도우에서 [Skills For All] 버튼을 누른다 가입한 로그인 정보를 입력 후 로그인 한다 You have successfully logged in to Cisco Packet Tracer. You may close this tab. 창을 닫고 Cisco Packet Tracer로 돌아온다 Expected: 강의에선 Cisco Packet Tracer로 돌아오니 로그인 윈도우가 알아서 없어졌더라구요.. Current: 저는 로그인 윈도우 계속 떠 있고, - Back 버튼 누르면 [Skills For All] 버튼 있는 초기화면으로 돌아가고 - 로그인 윈도우를 닫으면 Login Failed. Cisco Packet Tracer is shutting down. 에러 메세지 끄면서 Cisco Packet Tracer자체가 꺼져버려요 추가 정보 1: 다운받은 Cisco Packet Tracer 버젼은 8.2.0.0162 입니다 추가 정보 2: 구글 검색 해보니 저 같은 분들이 있던데.. 인터넷 연결을 완전히 끊고 Cisco Packet Tracer를 열면 로그인 윈도우가 안나오고 Guest로 자동 로그인이 됩니다. 아마 Guest다 보니 기능적으로 제한이 있지 않을까 싶습니다. 몇시간째 매달려서 별 짓을 다해도 안되요. 도와주세요ㅠㅠㅠ
200여개의 csv 파일이 있습니다. (용량은 각각 1메가에서 120메가 - 최대 100만건 데이터 등등 ). 결측치 가 있어서 판다스 에서 불러들여서 정리하고 for 반복문으로 파일 개별적으로 읽어 들여와 장고 모델에 save() 로 입력시키는 작업을 진행하고 있습니다. 초반 10여개 파일까지는 제법 속도가 나오는데 (7만행 데이터 20분 소요) 이후로 속도가 급격하게 감소해서 24시간 돌려서 30메가 파일 겨우 저장 중입니다(1건에 1초씩 걸리네요 ㅠㅠ). 개발중이라 로컬에 있는 장고 내장 sqlite 사용 했습니다. 속도를 좀 더 빠르게 하는 방법이 있을까요? 3일째 검색 해봤는데 별다른 해결책이 보이지 않아서 질문 남겨 봅니다. app.py # new 폴더에 정리된 csv 파일을 읽어서 DB에 저장 import pandas as pd # django 프로젝트에 있는 settings.py 파일을 읽어서 환경변수로 설정 import os os.environ.setdefault("DJANGO_SETTINGS_MODULE", "dbking.settings") import django django.setup() #django 프로젝트에 있는 models.py 파일에서 BasicData 클래스를 읽어온다 from common.models import BasicData # new 폴더에 있는 파일명을 읽어서 product 변수에 리스트에 저장 product_list = os.listdir("./script/newdb") # product_list 에 csv 파일 정렬(오름차순) for x in product_list: # csv 파일 하나씩 읽어오기 df = pd.read_csv("./script/newdb/" + x, encoding="cp949") # 결측치를 0으로 채운다 df = df.fillna(0) for a in list_of_csv: # 파일마다 컬럼수가 달라서 remark1, remark2 라는 예비컬럼 2개 추가 # -> 인덱스 에러 나는 경우 0 으로 저장 if a[16] is None: a.insert(16, 0) a.insert(17, 0) elif a[17] is None: a.insert(17, 0) # DB에 저장 try: db_insert = BasicData( opnSvcId = a[2], opnSfTeamCode = a[3], mgtNo = a[4], fileNumber = fileNumber, businessType = businessType, opnSvcNm = a[1], apvPermYmd = a[5], confirmNumber = a[6], businessCondition = a[7], siteTel = a[8], sitePostNo = a[9], siteWhlAddr = a[10], rdnWhlAddr = a[11], rdnPostNo = a[12], bplcNm = a[13], latitude = a[14], longitude = a[15], remark1 = a[16], remark2 = a[17], ) i += 1 # print(i) except Exception as e: print("쿼리", e) continue #DB에 저장 입력 try: db_insert.save() except Exception as e: print("저장중에러",e) continue from django.db import models class BasicData(models.Model): # 개방서비스아이디 opnSvcId = models.CharField(max_length=100) #개방자치단체코드 opnSfTeamCode = models.CharField(max_length=10) # 관리번호 mgtNo = models.CharField(max_length=100) #파일번호 fileNumber = models.IntegerField() #업종명 businessType = models.CharField(max_length=100) #개방서비스명 opnSvcNm = models.CharField(max_length=100) #인허가일자 apvPermYmd = models.DateField() #영업상태구분코드(1-정상, 2-폐업, 3-휴업, 4-전환) confirmNumber = models.IntegerField() #영업상태명 businessCondition = models.CharField(max_length=100) #소재지전화 siteTel = models.CharField(max_length=100) #우편번호 sitePostNo = models.CharField(max_length=100) #주소 siteWhlAddr = models.CharField(max_length=100) #도로명주소 rdnWhlAddr = models.CharField(max_length=100) #도로명우편번호 rdnPostNo = models.CharField(max_length=100) #사업장명 bplcNm = models.CharField(max_length=100) # 위도 latitude = models.FloatField() # 경도 longitude = models.FloatField() #비고1 remark1 = models.CharField(max_length=100) #비고2 remark2 = models.CharField(max_length=100) # 생성시점 created = models.DateTimeField(auto_now_add=True) update = models.DateTimeField(auto_now=True) def save(self, *args, **kwargs): queryset = BasicData.objects.filter(mgtNo__exact=self.mgtNo) # 중복된 이름이 없을 때만 저장 if len(queryset) == 0: super().save(*args, **kwargs) print('> Created new category') # if '&' in self.addr: # self.addr = self.addr.replace('&', ' ') # self.save() # 중복된 카테고리 있을 시 저장 안함 else: print('> Cannot create category with existing name') def __str__(self): return self.name
안녕하세요. 어제부터 DeepingSauce님 로드맵을 갓 시작한 코린이 입니다. 금일 강의를 전부 결재하고 시작점에 섰는데 확인해보니 공부 환경상 Jupyter lab 활용이 불가능 하여 두가지 질문 드립니다. Colab 활용 가능성 수강 환경상 Jupyter Notebook은 쓸 수 있지만 Jupyter Lab의 사용이 불가능합니다. 그래서 Colab을 사용해볼까 하는데, 수업 진행에 무리가 없을런지 질문 드립니다. (수업내용을 보니 Jupyter에 Extention까지 설치해서 사용하던데 Colab이 해당 기능들을 다 지원할지 모르겠습니다.) Colab 설치 및 세팅방법 Colab이 활용 가능하다면 선생님 수업을 위해 (Jupyter Lab에서 했듯이) Colab의 설치 및 세팅방법도 알고 싶습니다. 혹시 가능하다면 안내 부탁 드립니다. 아는 지식이 짧아 있는 그대로 질문 드립니다.
a = {'Phone': '01095136634', 'birth': '910904', 'adress': 'Busan', 'rank': [1, 2, 3], 'test': 'test_dict'} a라는 딕셔너리에서 910904라는 value값을 통해 key 값을 찾아서 출력 하고 싶습니다. 제가 생각 해낸 방법은 딕셔너리에는 순서가 없음으로 리스트로 형 변환을 하여 해당하는 인덱스를 불러오는 방법을 사용했습니다. print(list(a.keys())[list(a.values()).index('910904')]) 이거보다 더 효율적이고 간결한 방법이 있을 가요?
unittest 기반의 Unit Test시 Celery 혹은 ProcessPoolExecutor을 이용하면 해당 Context에서 DB 접근 시, Test DB를 참조 하는 것이 아니라 settings의 Default로 설정해놓은 Exist DB에 접근하는 이슈가 있더군요. 해당하는 경우 어떻게 해야 Test DB로 붙어서 작업할 수 있을까요? with concurrent.futures.ProcessPoolExecutor() as executor:
소켓 프로그래밍 예제들을 찾아보다가 아래의 사진처럼 await/async 비동기 방식으로 소켓프로그래밍 하는 예제를 보았는데요, 강의에서 사용된 소켓 프로그래밍 코드와 await/async 비동기 방식을 사용한 소켓프로그래밍 코드의 차이점(생산성, 속도 등등)이 궁금합니다.
[질문 템플릿] 1. 강의 내용과 관련된 질문인가요? 예 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? 예 3. 질문 잘하기 메뉴얼을 읽어보셨나요? 예 [질문 내용] 영속 쿠키처럼 만료 날짜가 다 돼서 쿠키가 삭제되면 로그아웃이 이루어져야 할 텐데 어떻게 로그아웃을 요청하고, 서버에서 세션이 삭제되나요? 만료 날짜가 지난 후에 접근하면 다시 로그인 화면이 뜨는 건가요? 일정 시간 동안 아무런 요청이 없으면 세션이 만료되었다고 뜨면서 자동 로그아웃 되는 웹 사이트는 어떻게 동작하는 것인지 궁금합니다. 예) 화면에 '로그인 남은 시간 : 00:30'과 같이 출력되고 요청(서비스 이용)하면 다시 30:00으로 계속 초기화 되는 웹 사이트 브라우저 설정에서 인위적으로 해당 도메인에 관련된 쿠키를 삭제하면 세션id가 포함된 쿠키도 삭제돼서 결과적으로 로그인이 필요한 url에 접근하면 새로운 로그인 창이 뜨고, 홈 화면으로 새로고침하면 로그인이 끊어진 처음 화면이 나오는데 그럼 어떻게 로그아웃이 처리되고 서버는 브라우저에서 삭제된 쿠키의 세션id와 일치하는 관련된 세션 정보를 삭제하나요?(단순히 정상적으로 로그아웃 하는 경우와 달라서 궁금합니다)
수업 잘 듣고 있습니다. 자동화를 하고 싶으서 예전 영상 보다가 최근에 다시 올라와서 보는 중 강의 발견하고 바로 수강해서 듣고 있습니다. 궁금한 것이 하나 있는데요. 셀레니움에서 하나의 윈도우 창의 특정 태그 값을 찾아서 다른 윈도우 창을 오픈 한 후 특정 필드에 값을 넣을 수 있나요?
영상보고 도움 많이 받고 있습니다. 영상에서 naver.com 에 대한 DNS가 여러대 있을수도 있다고 했는데 DNS 서버를 여러대 두는 이유는 무엇인가요..? 제가 생각하는건 A 서비스를 서버 한대를 띄웠다고 했을때, 트래픽이 많아지면 서버의 대수를 늘려야한다고 생각하는데요. DNS서버도 이런 트래픽의 영향때문에 여러대를 두는 것일까요? 추가로 궁금한 점은 DNS 서버한테 요청을 할때도 L2 -> L3 이런식으로 다 거쳐서 올라가는건가요?? 질문이 허접한거 같지만 ㅠㅠ 잘 부탁드립니다