Simulate internet TV – Python tutorial

여러분 안녕하세요, 파이썬 튜토리얼에 오신 것을 환영합니다 이 튜토리얼에서는 인터넷 TV

먼저 두 개의 클래스를 만들어야합니다 하나는 네트워크라고합니다 NetworkDevice, 두 번째는 텔레비전 클래스라고합니다

그리고 각각에 대한 몇 가지 방법을 만들 것입니다 수업 중 그런 다음 위의 클래스에서 InternetTV 클래스를 파생시킵니다 또한 InternetTV에만 관련된 몇 가지 새로운 방법을 추가하겠습니다 먼저 우리는 만들어야합니다 NetworkDevice 클래스 먼저 이니셜 라이저를 작성하겠습니다 mac_number 및 cache_size NetworkDevice 객체를 초기화하는 데 필요한 2 개의 변수 간단히 NetworkDevice 객체에 대해 두 개의 인스턴스 변수를 만듭니다

여기서 mac_number와 캐시 크기는 NetworkDevice 객체의 두 가지 인스턴스 변수입니다 그래서이 두 변수는 이니셜 라이저로 전달 된 변수와 동일한 값을 갖습니다 그런 다음 네트워크 장치에 대한 방법을 만들어서 네트워크 장치에 데이터 전송을 지시 할 수 있습니다 네트워크 장치에 전송하도록 지시하려면 다운로드를 요청합니다 데이터 그 네트워크 장치는 또한 데이터를 수신 할 수 있습니다 receive 메소드에 전달할 변수가 있습니다 데이터를받는 데 필요한 데이터가 네트워크의 캐시 크기보다 큰 경우 장치, 우리는 무언가를해야 패킷 크기가 너무 커서 데이터 수신을 중지했습니다 False도 반환합니다 즉,이 receive 메소드는 리턴 값을 갖습니다 부울 변수 유형입니다 그렇지 않으면, 우리는 무언가를합니다

이 receive 메소드의 값으로 True를 리턴합니다 자, 이것으로 NetworkDevice 클래스가 완성되었습니다 텔레비전 클래스도 비슷하게 만들 수 있습니다 이니셜 라이저를 먼저 설정해야합니다 텔레비전에는 화면과 볼륨 튜너가 있습니다 자아는 텔레비전을 말합니다 목적 나중에 객체를 만들면이 객체가 자동으로 전달되어 이니셜 라이저 따라서 실제로 클래스를 호출 할 때 처리 해야하는 변수가 아닙니다

객체를 생성합니다 나중에 객체 인스턴스화 프로세스를 보게됩니다 알았어 screen 및 volume tuner라는 Television 객체의 인스턴스 변수 그리고 이것들 두 개의 인스턴스 변수에는 이니셜 라이저에서 얻은 값이 있습니다 텔레비전 캔 비디오를 표시합니다

어떻게해야합니까? TV로 비디오를 표시하고 싶을 때 진술 디스플레이 에서 제공하는 특정 화면에 비디오 표시 Television 객체의 이니셜 라이저

텔레비전도 음량을 변경할 수 있습니다 그것은 내가 의미 텔레비전에서 더 크거나 더 조용한 소리를 낼 수 있습니다 change_volume 매개 변수가 0보다 작은 경우 다음과 같이하면됩니다 소리를 어느 정도 줄이려고합니다 승인 금액이 음수이면 문을 인쇄하여 사용자에게 특정 단위로 소리가 줄어 듭니다 문장을 약간 만들고 싶어서 더 자연스럽게, 나는 change_volume 메소드로부터받은 음의 양을 바꿀 것입니다 양 변수 앞에 음수 부호를 추가하여 양수입니다

그래서 만약에 금액이라면 부정적입니다,이 부분은 긍정적이 될 것입니다 금액이 0보다 큰 경우 비슷한 문구를 인쇄합니다 하지만 이번에는 여기에서받은 금액 때문에 마이너스 부호가 필요하지 않습니다 user

change_volume 메소드는 이미 양수입니다 승인 이 두 클래스에서 텔레비전, 네트워크 장치의 조합 인 인터넷 TV를 만들 수 있습니다 그리고 텔레비전

어떻게해야합니까? 다음은 클래스 선언입니다 Television 클래스와 NetworkDevice 클래스를 넣어야합니다 InternetTv 클래스의 매개 변수 목록에 있습니다 그런 다음 초기화를 설정할 수 있습니다 InternetTv InternetTv는 텔레비전과 네트워크 장치의 모든 구성 요소를 갖습니다 또한 InternetTv에는 중앙 처리 장치가 있습니다

새 매개 변수를 추가해야합니다 InternetTv 클래스의 이니셜 라이저에 여기서 CPU는 새로운 인스턴스 변수입니다 InternetTv 객체 승인 InternetTv에는 NetworkDevice와 유사한 구성 요소가 있습니다 간단히 NetworkDevice 초기화 프로그램을 호출 할 수 있습니다

InternetTv 객체를 인스턴스화하는 데 도움이됩니다 문법은 이렇습니다 NetworkDevice __ init__ 그리고 나는 통과 mac_number 및 cache_size는 NetworkDevice의 초기화 프로그램에 적용됩니다 이 두 변수 실제로 위 코드에 표시된 NetworkDevice의 이니셜 라이저입니다 그래서 내가 이것을 통과하면 NetworkDevice 이니셜 라이저에 두 값을 입력하면 간단히이 두 줄을 사용할 것입니다

InternetTv의 텔레비전 구성 요소에 대한 동일한 아이디어 텔레비전을 추가하고 싶다면 구성 요소를 InternetTv에 연결하려면 텔레비전 초기화 프로그램을 사용합니다 그리고 당신은 확인할 수 있습니다 Television 클래스에는 이니셜 라이저에 대한 두 개의 매개 변수가 있습니다 내가 사용할 때 텔레비전 이니셜 라이저는이 두 매개 변수를 이니셜 라이저 부분에 넣습니다 따라서 InternetTv에는 5 개의 인스턴스 변수가 있습니다

그리고 텔레비전의 경우 그것에 대한 특정 방법 네트워크에서 직접 TV 프로그램을 볼 수 있습니다 나는 단순히 NetworkDevicetransmit를 호출 컴퓨터 연결 방법 승인 전송이 완료되면 네트워크 TV가 리모컨에서 데이터를 수신합니다 대지 따라서 NetworkDevice

receive 메소드를 사용하여 데이터 수신을 수행 할 수 있습니다 물론이야 이 메서드는 부울 값 True 또는 False를 반환한다는 것을 알고 있습니다 변수를 사용할 수 있습니다 NetworkDevicereceives 메소드에서 오는 결과를 저장하려면 여기에 is_received is_received가 True이면 다음과 같이합니다 Television 클래스에서 Television

display_video 메소드를 호출하여 비디오를 표시합니다 승인 여기서 InternetTv를 인스턴스화하겠습니다 a_tv는 InternetTv입니다 숫자가 있습니다 구성 요소의 따라서 InternetTv에 대한 다섯 가지 주장이 있습니다

우리가 이것을 통과하면 InternetTv의 이니셜 라이저에 대한 다섯 개의 인수,이 세 가지 역할이 모두 실행됩니다 승인 인수 값 1을 전달하여 a_tv에게 네트워크 TV를 보도록 지시 할 수 있습니다 따라서 데이터 크기는 하나의 단위입니다 그런 다음 a_tv에 볼륨을 변경하도록 지시 할 수 있습니다 인수는 마이너스 1입니다

볼륨을 줄이려고합니다 그런 다음 a_tv 객체에 시청하도록 요청합니다 다시 네트워크 TV 이 때 데이터 크기는 3 단위입니다 코드를 실행 해 봅시다 승인 우리가 watch_network_tv 메소드를 처음 호출하면 a_tv는 다운로드

그리고 일부 데이터 패킷을 수신 할 것입니다 화면은 LED 화면이며 소리를 한 단위 씩 줄입니다 그리고 두 번째 전화 watch_network_tv 메소드가 비슷한 일을하고 있습니다 다운로드를 요청합니다 먼저 그러나 패킷 크기가 너무 커서 데이터 수신이 중단됩니다

그래서 캐시는 2 단위의 메모리이므로 인터넷 TV에 3 단위의 데이터를 넣을 수 없습니다 3을 인수로했을 때 "수신이 중단되었습니다"프롬프트가 표시되지만 인수로 하나만있는 첫 번째 호출 내 구현은 직관적이고 간단합니다 그러나 가장 효율적인 솔루션이 아닐 수 있습니다 문제에 내 코드를 향상시킬 아이디어가 있다면 언제든지 게시하십시오 동영상 아래의 댓글 섹션에 코드를 추가하십시오 이 비디오가 마음에 드신다면 좋아하고 내 채널을 구독하십시오

시청 해주셔서 감사합니다

Python Face Recognition | OpenCV Python Tutorial | Intellipaat

안녕하세요 Intellipaat에 오신 것을 환영합니다

컴퓨터 비전은 인공 분야입니다 시각적 세계를 해석하고 이해하도록 컴퓨터를 훈련시키는 지능 얼굴 인식에서 축구 게임, 컴퓨터의 라이브 액션 처리까지 비전은 많은 영역에서 인간의 시각 능력을 능가합니다 이 비디오에서 우리는 컴퓨터 비전을 이용한 얼굴 인식에 관한이 프로젝트를 생각해 봅시다 에 이 매우 흥미로운 분야에서 시작하는 데 도움이됩니다 이제 시작하기 전에 놓치지 마십시오 Intellipaat의 YouTube 채널을 구독하십시오

다가오는 비디오 엔드 투 엔드 인증을 찾고 있다면 인공 지능에 관한 강의 이 분야의 마스터가 될 수 있도록 도와줍니다 더 이상 지연되기 전에 시작하자 컴퓨터 비전 엔지니어이자 클라이언트라고 가정 해 봅시다 감지해야하는 문제 설명을 통해 접근했습니다

그들이 제공 할 이미지 세트의 얼굴 이 프로젝트는 다음과 같은 단계를 거쳐야합니다 이 프로젝트를 구축합니다 이것들은 그들이 제공 한 이미지입니다 당신은 이것들의 데이터 세트에서 가져온 이미지 중 일부입니다 이 프로젝트에서 OpenCV를 사용하여 Python을 작업 할 것입니다 여러 이미지에서 얼굴을 먼저 감지하는 HAR 관 분류기 HAR 캐스케이드 시스템의 다운로드 부분을 수행해야합니다

그래서 여기 있습니다 그녀의 관 정면 얼굴 기본 도트 XML 과이 원시 github 코드 작성 이것들은 단순히 단순히 다음과 같이 저장 해야하는 HAR 상자에 대한 원시 데이터입니다 그리고 당신은 그것을 바탕 화면으로 저장할 수 있습니다 그리고 당신은 지금, 당신은 HAR 상자가 분류기 이제 다음으로 CV를 전 세계로 가져옵니다 이제 우리는 목성 노트북에서 연습 할 것이므로 먼저 CV 도구 기능과 지구본을 가져옵니다 지구본이 우리가 쓸 파일 이름의 배열을 반환하는 함수 다음 줄에서 우리는 그 이미지들에 대해 얼굴 검출을 수행해야합니다 도트 JPG 확장자를 가진

그래서 저는 G 이미지를 glob과 동일하게 쓸 것입니다 도트 글로브 자, 여기서는 객체 glob라고 부르고 glob에 함수가 있고 여기에 함수 안에 별점 jpg 따라서 확장 점 jpg가있는 모든 이미지를 차지합니다 그 후, 우리는 이제 glob 이미지를 얻은 후에 감지 할 것입니다

캐스케이드 분류기를 사용하면 얼굴을 얻는 데 도움이됩니다 감지 코, 귀, 얼굴, 물체와 같은 이미지의 모든 기능을 포함합니다 이것들은 이미지의 특징 중 일부입니다 여기, 우리는 감지를 작성합니다 C v2 도트 캐스케이드 분류기와 같으며 중괄호 안에서 어떤 분류기를 작성하고 있는지, HAR 캐스케이드 정면을 다운로드했습니다 우리는 동일한 이름의 HAR 캐스케이드를 언급 할 것입니다

괜찮아, 캐스케이드 정면면 기본 도트 XML 이제 HAR 캐스케이드를 생성 한 후 정면 얼굴 기본 XML 파일, 우리가 할 일, 이제 지구본을 뒤집을 것입니다 이미지 얼굴을 감지 할 수 있습니다 트래버스를 위해 트래버스를위한 for 루프 또는 트래버스를 위해 t 이미지, t 이미지를 쓸 수도 있습니다

G 이미지의 이미지 t 이미지 글로브 이미지가 정상입니다 이제 하나의 이미지가 필요합니다 한 번에 이제 for 루프에서 이미지를 특정 이미지로 읽습니다 그래서 C v2 도트와 같은 이미지를 찍은 것처럼 쓸 이미지를 읽습니다 납과 이것이 T 이미지를 읽는 것입니다

알았어 G 이미지에서 특정 이미지를 읽은 후 이미지는 컬러 이미지입니다 그것이 빨간색 인 이미지는 컬러 이미지 따라서이 위상 검출에서 먼저 변환해야합니다 컬러 이미지를 그레이 스케일 이미지로 따라서 분류 기가 더 쉽습니다 이미지를 처리하고 이미지에서 얼굴을 감지합니다 따라서 이미지를 변환하여 컬러 이미지를 회색조 이미지 우리는 회색 이미지를 쓸 것입니다이 회색 이미지를 썼습니다 C v2 dot cvt Color와 같으며 중괄호에는 그레이 스케일로 변환해야하는 이미지입니다

C v2 도트 색상과 밑줄 BGR2GREY를 작성하십시오 알았어 그레이 스케일로 변환하면 이미지에서 얼굴을 감지합니다 그래서 얼굴 감지 나는 얼굴 감지를 감지하는 것과 같습니다 여기 에이 객체를 호출하고 함수가 멀티 스케일을 감지하면 세 개의 매개 변수가 있습니다 첫 번째는 어떤 이미지를 감지 하려는지 얼굴

우리는이 회색 이미지를 쓸 것입니다 여기이 회색 이미지와 다음 매개 변수는 배율입니다 그래서 우리는 더 많아 질 것입니다 따라서 스케일 팩터의 가치를보아야합니다 이 스케일 팩터는 전체 그레이 스케일 이미지의 볼륨을 5 % 감소시키는 값 얼굴이 감지 될 때까지 기본적으로 무엇을 하는가 이미지에서 얼굴을 찾을 수 있도록 이미지의 값을 줄입니다

그래서 나는 값이 작을수록 2 ~ 5를 작게 씁니다 정확성 그래서 나는 1 점 2 5를 쓰고 다음 매개 변수는 이 값을 귀찮게 할 필요가 없습니다 이제 그 후 이제 얼굴을 감지하여 얼굴 그래서이 중괄호에서 for 루프를 작성하면 X 쉼표 Y 쉼표 W 쉼표 H와 같은 직사각형의 모든 치수, 길이 너비, 높이 및 너비

자 이제 매개 변수 다음에 실제로 얼굴을 감지했지만 얼굴을 감지했지만 이제는 사각형 모양으로 그면을 정의하십시오 그래서, 우리는 점을 사용할 것입니다 사각형 기능 그래서 여기에 C v2 점 사각형을 작성하고 있습니다 이 네 가지 매개 변수가 있습니다 첫 번째 매개 변수는 감지해야 할 이미지입니다

얼굴 이미지,이 이미지를 읽었습니다 두 번째 매개 변수는 RGB 값입니다 RGB 값은 색상 값을 의미합니다 그래서 여기 X 쉼표 Y를 쓴 다음 사각형의 다른 매개 변수를 작성합니다 우리 기본적으로 사각형의 매개 변수를 정의하는 방법은 이미지를 작성하여 X를 작성합니다 플러스 W 쉼표 Y 플러스, 미안 Y 플러스 H, 이제 사각형의 매개 변수를 정의한 후 우리는 사각형의 색을 볼 것이므로 여기서는 초록색입니다

이것은 초록색의 코드입니다 0 쉼표 2 5 5 쉼표 0 좋아요 이제 이제 우리는 마지막 매개 변수는 그 엉킴의 두께 때문에 2를주고 있습니다 이제 사각형을 정의한 후 이미지 만 표시하겠습니다 그래서 우리가 쓸 괄호 안에 도트 C 쇼에 이미지 CV 표시 당신이 괜찮아 이미지를 감지하고 혼수 어떤 이미지처럼 쓸 수있는 메시지를 감지 이 이미지는 이미지입니다 자 이제 이미지를 표시 한 후 대기 키 기능을 정의하는 것은 대기 키의 기능입니다

이미지 사이에 약간의 간격을 정의하십시오 CV to dot wait key와 몇 개의 사진을 찍었는지 200 밀리 초 죄송합니다 2,000 밀리 초이며 C v2를 작성합니다 점은 모든 창문을 파괴합니다 따라서 모든 창문을 파괴하면 모든 창문이 닫힙니다 키 대기 매개 변수를 기반으로합니다

여기 2,000 밀리 초를 쓰고 있습니다 그것을 위해 그것을 파괴 할 것입니다 자, 여기 괜찮아 그래서 여기 에이 코드를 실행하고 있습니다 모든 얼굴이 감지되고 있음을 알 수 있습니다 좋아요,이 세션이 마음에 드셨기를 바랍니다 당신은 질문이있는 경우 비디오 유익한, 의견에 알려주십시오 아래 섹션을 시청 해 주셔서 감사합니다

Configuración VPS y despliegue web con Ubuntu, Django, Nginx y Postgresql (English subtitles)

모두에게 인사합니다 저는 Frank Mascarell입니다

이 비디오는 원래 용도로만 만든 비디오입니다 VPS를 재구성해야 할 때 상담 할 수있었습니다 많은 단계가 필요하기 때문에 누군가가 유용 할 수 있다면 공유하는 것에 대해 생각했습니다 음, 먼저 낮은 음질로 사과드립니다 편집했지만 에코가 있지만 더 이상 수행 할 수 없습니다

마이크로가 나빠 테스트를 위해 샀습니다 비디오 제작에 전념하려는 것이 아닙니다 그러나 그것은 그 목적을 달성 할 것입니다 이 모든 것을 말하면서 나는 주제에 갈 것입니다 나는 빨리 준비했다 방법에 대한 일반적인 아이디어를 보여주는 그래픽 VPS를 구성 할 수 있습니다

Digital Ocean 서비스를 기반으로 아주 좋고 경제적입니다 VPS가 계약되면 우리는 VPS로 나눌 수 있습니다 예를 들어 개별 및 자율 공간 우리는 봉사 할 공간을 구성 할 수 있습니다 동적 웹 페이지, 다른 공간이있는 다른 공간 웹 페이지 및 정적 데이터 저장소로 DO는이 공간을 물방울이라고 부릅니다 바다에 많은 "방울"이 있다는 비유로 말입니다 이 이미지 예에는 두 개의 물방울이있는 VPS가 있습니다 액적 런던은 OS로 설치되었습니다 우분투 16

04 및 글로벌 패키지 Pip, postgres, virtualenv 및 PyFilter 동시에이 방울에는 로컬 패키지가 설치된 두 개의 가상 환경 다른 버전과 django의 웹 애플리케이션, 격리 된 환경에서 새 버전을 테스트하는 데 유용합니다 독립 또는 가상 환경 이전 버전은 유지하지만 기능은 유지합니다 물방울 암스테르담에는 정확히 포함되어 있습니다 가상 환경이 하나 뿐이지 만 동일합니다 이러한 접근 방식을 염두에두고 추론 할 수 있습니다 우리가 달성 할 수있는 뛰어난 확장 성 예를 들어 동일한 웹 페이지를 다른 방울과 다음로드를 사용 트래픽을 직접 전달하는 밸런서 예를 들어 우리의 편의에 따라 런던 서버에 너무 많은 경우 요청을 서버로 리디렉션 할 수 있습니다 암스테르담은 두 서버 사이의 부하를 공유합니다

이 모든 것을 준비하기 위해 시나리오를 썼습니다 이 비디오에서 내가 할 일에 대해 설명을하겠습니다 우리가 쉘에서 코드를 클릭하는 동안 모든 단계 원하는 경우 비디오를 일시 중지하고 살펴보십시오 아래에 필요한 링크를 남겨 두겠습니다 대부분은 Digital Ocean 문서에 있습니다 PuTTY는 작은 응용 프로그램입니다 SSH 인증을 통해 서버에 하나의 공개 키와 하나의 키로 구성 암호화 된 데이터 전송

SSH는 현재 가장 안전한 시스템입니다 최신 버전의 PuTTY를 다운로드하십시오 PuTTYgen 및 Pageant도 설치하는 msi 패키지 Windows에 PuTTY를 설치 한 후 PuTTygen으로 키 쌍을 생성하고 저장합니다 이렇게하려면 기본 키 유형 (RSA 2048)을 그대로 두십시오

생성을 누르고 커서를 공간 위로 이동하십시오 키가 생성 될 때까지 비 웁니다 공개 키와 개인 키를 유지하고 이 마지막 문장에서 우리는 비밀 문구없이 그것을 유지하고 싶다면 경고합니다 일부 자동 서비스 때문에 넣지 않는 것이 좋습니다 DO의 비밀 문구를 입력 할 수 없습니다 적절한 인증을 위해 또 다른 설명; 물방울이 우분투를 설치했을 때 차례로 OpenSSH를 통합했으며 PuTTY 형식과 다른 공개 키 형식 DO 계정에 업로드하려면 PuTTYgen에서 공개 키를 복사해야합니다 PuTTY가 사용하는 형식의

txt 파일이 아닙니다 PuTTY를 닫은 경우 공개 키를 복사하기위한 개인 키 이제 드롭 릿을 등록하고 만들 차례입니다 계정에 보안을 강화하기위한 2 단계 인증을 권장합니다 테스트를 위해 지금은 비활성화 할 것이므로 기다릴 필요가 없습니다

당신이 입력 할 때마다 모바일 메시지에 복사하여 붙여 넣기하여 SSH 키를 추가합니다 PuTTYgen에서 공개 키를 복사해야합니다 확장자가 txt 인 파일이 아닙니다

액 적을 만들기 위해 패널 내에서 최신 LTS 버전의 Ubuntu를 OS로 선택하겠습니다 현재는 1804입니다 LTS 또는 장기 지원 버전 2 년마다 릴리스되고 5 년 동안 지원을 제공합니다 생산에 가장 권장됩니다

이미지에서는 변경되지 않은 것으로 보입니다 그러나 내부적으로는 그렇습니다 그런 다음 확인하겠습니다 이제 액 적에 가장 작은 크기를 선택합니다 테스트를위한 것이기 때문에 런던이 될 데이터 센터의 스페인과 가장 가까운 이론적으로 낮은 대기 시간, 즉 일반적으로 시간 서버가 이후에 우리에게 답변을 제공하는 데 걸리는 웹 서비스와 같은 요청을 보냅니다

계정에서 이전에 생성 한 SSH 키를 포함합니다 새 호스트에 이름을 넣습니다 물방울을 만든 후 속성이 어떻게되는지 보자 우리는 오른쪽에 IP 주소를 가지고 있습니다 서버 구성에서 대부분의 작업

보시다시피 올바른 Ubuntu 버전으로 생성되었습니다 PuTTY를 사용하여 액 적에 연결합니다 아주 간단합니다 먼저 액 적의 IP 주소를 여기에 넣습니다 SSH 인증 섹션으로 이동하여 DO 계정에 추가 할 때 사용하는 것과 동일한 개인 키

터미널 모양을 구성 할 수도 있습니다 내가 한 것처럼 텍스트의 글꼴과 색상을 변경하십시오 일단 우리가 원하는대로 모든 것을 구성하면 세션의 새 이름을 삽입하고 저장합니다 나중에 우리는 빨리 연결할 수 있습니다 세션 이름을 두 번 클릭하십시오 터미널이나 쉘을 열면 우리는 액세스 할 루트 사용자로 로그인 모든 권한으로 서버에 루트 사용자와 일상적으로 작업하는 것은 권장되지 않습니다

어떤 명령에서는 잘못 될 위험이 있기 때문에 우리는 일부 파일이나 더 나쁜 것을 삭제할 수 있습니다 일반적으로 권한이있는 다른 사용자를 만드는 것입니다 우분투가 기본적으로 제공하는 최소값 예를 들어 패키지를 설치해야 할 때 원칙적으로 루트 사용자 만이 할 수 있습니다 우리는 이제 보게 될 sudo 명령을 사용할 것입니다 루트로 로그인 할 때 알 수 있듯이 우리는 암호를 요구하지 않습니다 PuTTY에서 SSH를 통해 연결 그는 첫 번째 줄에 그것을 지정합니다 서버가 저장된 공개 키를 사용하고 있음을 나타냅니다

다음 단계는 최소한의 권한으로 다른 사용자를 만드는 것입니다 비밀번호 및 기타 선택적 정보를 요청합니다 이제 우분투에게 사용자 솔직하다고 말할 수 있습니다 루트 권한으로 명령을 실행할 수 있습니다 명령에 sudo 명령을 넣습니다

우리는 모든 패키지를 확인할 수 있습니다 apt 목록을 통해 시스템을 설치했습니다 이제 우분투에서 사용할 수있는 패키지 목록을 업데이트하겠습니다 sudo apt 업데이트 및 모든 패키지 업데이트 sudo apt 업그레이드를 사용하여 설치되었습니다 중요한 설명; 액 적을 만들 때 내장 된 SSH 키로 서버에 알려줍니다 비밀번호를 사용하는 인증은 인정하지 않으며 SSH 만 사용합니다 사용자 프랭크를 만든 후 일부는 PuTTY를 사용하여 연결하고 frank로 로그인 이전에 제공된 비밀번호를 입력하십시오

이것은 작동하지 않으며 서버는 거부합니다 논리적으로, 우리는 해커가 공격하는 것을 원하지 않습니다 파괴하기 쉬운 인증 시스템 암호 인증을 활성화 할 수 있습니다 DO 제어판이지만 권장하지 않습니다 사용자 솔직한 입장은 먼저 root로 로그인 한 다음 frank로 전환하십시오 su-frank 명령을 사용하면 우리는 관리자에게 암호를 요구하기 때문에 암호를 요구하지 않습니다 모든 권한을 가진 서버의 암호는 필요하지 않습니다

다른 사용자 그러나 로그인하면 루트 사용자가 아닌 다른 사용자와 마찬가지로 시스템이 자동으로 비활성화 할 수 있습니다 일정 기간 동안 사용하지 않으면 안전을위한 것입니다 이 경우 해당 사용자의 비밀번호를 묻습니다 다른 때는 물론 안전을 위해서 우분투는 예를 들어 비밀번호를 묻습니다

중요한 명령을 실행할 때 패키지 설치 방법 이제 우분투에 포함 된 기본 방화벽을 구성하겠습니다 기본적으로 비활성화되어 있습니다 ufw status를 입력하여이를 확인할 수 있습니다 보시다시피 방화벽에 대한 액세스는 루트 사용자 만 사용할 수 있습니다

그래서 우리는 그에게 sudo를 말해야 할 것입니다 방화벽이 비활성화되었습니다 활성화하기 전에 허용 할 규칙을 추가합니다 Ubuntu에 통합 된 OpenSSH를 통한 SSH 연결 이 유형의 연결 관리를 담당합니다 이제 방화벽을 활성화 할 수 있습니다 자신을 막을 위험이 없습니다 우리는 다시 확인하고 그들이 추가되었는지 확인 OpenSSH에 대한 두 가지 규칙

우분투 패키지 목록에서 pip3을 설치합니다 어떤 이유로 든 마지막 버전이 아닌 버전 9를 설치하지만 우리는 약간의 트릭을 할 것입니다 설치하려고하기 때문에 루트 사용자 내부에 머무를 것입니다 파이썬에 필요한 일부 패키지 pip 패키지 관리자를 사용하여 설치했습니다 이미 설치했기 때문에 그렇게하지 않을 것입니다

이제 freeze로 설치된 모든 python 패키지를 나열 할 수 있습니다 액 적을 만들 때 설치된 패키지입니다 그런 다음 pip-review를 설치하여 우리를 도울 것입니다 모든 적중 패키지를 업데이트하십시오 대화식으로하는 방법입니다 패키지를 하나씩 검토 할 수 있습니다

이미 업데이트했지만 여전히 표시됩니다 여전히 업데이트 될 패키지 다른 패키지와의 종속성이 있다고해서 업데이트되지는 않습니다 pip3 check로 깨진 패키지가 없는지 확인할 수 있습니다 다음 단계는 PyFilter를 설치하는 것입니다 SSH 공격으로부터 보호합니다 우리는 솔직한 사용자로부터이 패키지를 설치할 것입니다

클라우드에서 자식 저장소 복제 이 첫 단계는 이미 보여 드렸습니다 그러나 나는 그들을 실행하지 않을 것입니다 그런 다음 생성 된 PyFilter 폴더를 usr / local로 이동합니다 우리는이 폴더로 가서 내부에 다른 폴더가 있습니다 configdefault

json 파일이있는 Config 우리는 사본을 수정할 것이므로 사본을 만들 것입니다 Config 폴더에 들어가면 두 개의 파일이 나타납니다 사본과 원본 PyFilter 폴더로 돌아갑니다 내부에는 run

sh 파일이 있습니다 이것은 PyFilter의 실행 파일이며 권한을 부여하고 실행할 것입니다 제대로 작동하는 것으로 확인되면 PyFilter에 대한 서비스를 만듭니다 우리는 PyFilter 폴더로 돌아갑니다 서비스를 작성하고 사용 가능하게하는 install

sh 파일 시스템의 시작 부분에서 실행합니다 상태를 확인하면 서비스가 올바르게 작동하는 것을 볼 수 있습니다 다음 단계는 선택 사항입니다 루트에서 패키지를 설치하겠습니다 PyFilter는 또한 공격의 위치를 ​​기록합니다

PyFilter가 패키지를 인식하도록 다시 시작하십시오 PyFilter의 Config 폴더 안에는 블랙리스트가 있습니다 PyFilter가 무기한 차단 한 IP 중 PyFilter는 기본적으로 IP를 차단하도록 구성되어 있습니다 5 초 이내에 시도가 실패한 경우 대부분 로봇이 될 것입니다 이것은 여기에서 감지되었습니다 PyFilter는 iptables 방화벽에 적절한 규칙을 추가합니다

Postgres를 엔진으로 설치 및 구성합니다 장고 데이터베이스를 권장합니다 기본적으로 postgres는 원격 연결을 허용하지 않습니다 프로젝트에 필요하지 않습니다 Nginx 서버를 통해 DB에 연결하므로 장고 응용 프로그램이므로 필요하지 않습니다 postgres에 의한 보호가 없습니다

패키지 인덱스를 업데이트하고 확인합니다 업데이트 및 업데이트가 필요한 패키지 우리는 postgres를 설치합니다 콘솔을 통해 콘솔에 액세스 할 수 있는지 확인합니다 기본 사용자 postgres의 솔직한 사용자에 대한 수퍼 유저 권한이있는 새로운 역할을 만들었습니다 마지막으로 LibrosWeb이라는 DB를 만듭니다

로컬 테스트 프로젝트의 DB와 동일한 이름을 갖도록 문제없이 연결할 수 있는지 확인합니다 이것이 우리가 DB로 할 모든 일이 될 것입니다 나중에 로컬 장고 프로젝트가 서버에 업로드되면 DB 마이그레이션을 자동으로 수행합니다 모든 테이블과 레코드와 함께 가상 환경을 관리하는 데 필요한 패키지를 설치하고 첫 번째의 확장 인 virtualenv 및 virtualenvwrapper는 그리고 더 실용적인 새로운 명령으로 동일하게 수행됩니다

자동으로도 자동으로 가상화 virtualenv 및 기타 필요한 패키지를 설치합니다 우분투 패키지 관리자에서 설치하겠습니다 pip3에서 설치하면 제대로 작동하도록 일부 파일을 수정하려면 이런 식으로 필요하지 않습니다 이미 설치했습니다 이제 보안 사용자를 변경할 수 있습니다 mkvirtualenv 및 환경 이름으로 가상 환경을 작성합니다

동시에 생성 및 활성화됩니다 보시다시피, 실행 파일이있는 가상 환경이 생성되었습니다 파이썬의 버전을 나타내지 않으면 시스템과 동일한 시스템을 설치합니다 (이 경우 365) 환경 내에 다른 패키지를 설치할 수 있도록 pip를 설치했습니다

예를 들어 장고는 다음에 설치할 것입니다 이제 환경 "envDjango20"이 활성화되었으며 프롬프트에서 알려줍니다 중요한 설명; 활성화 된 가상 환경 내 pip3가 아닌 pip로 패키지를 설치합니다 환경 내에 패키지가 설치되어 있지 않다는 것을 알 수 있습니다 시스템과 독립적이기 때문에 예상대로

"workon"을 통해 사용 가능한 가상 환경을 나열합니다 그런 다음 환경에 django를 설치하지만 먼저 장고 프로젝트를 LibrosWeb이라고하는 폴더입니다 패키지를 설치하려면 환경을 활성화해야합니다 그렇지 않으면 전 세계 시스템에 설치하고 우리가 원하는 것이 아니라 별도의 가상 환경을 원합니다 Django 또는 Python의 각 버전에 대해 최신 버전이 설치 될 것이라고 말하지 않으면 현재 2

06입니다 다음으로 방화벽에 규칙을 추가합니다 django 웹 서버가 사용하는 포트 8000을 엽니 다 startproject로 장고 프로젝트를 만들겠습니다 LibrosWeb 폴더 안에 있습니다

프로젝트 이름으로 다른 폴더를 만듭니다 이 안에는 managepy 파일이 있습니다 나머지 파일이있는 다른 LibrosWeb 폴더 우리는 settingspy를 수정할 것입니다

나노 텍스트 편집기를 사용하겠습니다 허용 된 호스트에 VPS의 IP 주소를 추가하는 것보다 Django의 또 다른 중요한 권장 사항은 암호화하는 데 사용되는 비밀 키를 저장하는 것입니다 프로덕션 데이터 전송 환경 변수에서 이를 위해 bash_profile 파일에 명령을 추가합니다

사용자 Frank로 로그인 할 때마다 변수를로드하십시오 그런 다음 사용자를 다시 시작하여 bash_profile을 다시 실행하십시오 SECRET_KEY를 읽도록 settingspy 파일을 수정하십시오

방금 만든 환경 변수에서 마지막으로 runserver를 사용하여 django 웹 서버를 시작했습니다 응용 프로그램을 테스트합니다 이제 브라우저 클라이언트에서 액세스 할 수 있습니다 장고의 응용에 다음 단계는 DB LibrosWeb을 연결하는 것입니다 장고 응용 프로그램과 함께 frank의 역할을 위해 django가 권장하는 몇 가지 구성을 적용 할 것입니다

postgres 사용자로 연결하고 다음 사용자를 수정합니다 솔직한 역할의 속성 그런 다음 가상 환경을 활성화하여 다른 패키지를 설치합니다 django는 postgres에 연결해야합니다 이제 settingspy 파일을 편집하여 매개 변수를 알려줍니다

연결해야 할 DB의 createuser 명령으로 솔직한 역할을 만들었을 때 프랭크로 로그인 한 이후로 비밀번호를 묻지 않았습니다 그는 자동으로 하나를 만들었습니다 settingspy에 넣은 것과 같은 것을 넣습니다 이제 장고에서 마이그레이션 할 수 있습니다 postgres에 대한 올바른 DB의 구조

그런 다음 django 애플리케이션에 대한 관리 수퍼 유저를 작성했습니다 서버를 시작하여 응용 프로그램을 테스트합니다 브라우저의 IP 주소 끝에 / admin을 추가하면 우리는 응용 프로그램의 관리 인터페이스를 입력합니다 django를 위해 만든 수퍼 유저로 로그인합니다 따라서 우리는 DB에 대한 모든 액세스 권한을 가지게되는데, 이제는 비어 있습니다 테이블이나 레코드는없고 골격 만 있습니다

지금까지 기본적으로 서버를 구성했습니다 django를 테스트 모드에서 안전하게 사용할 수 있습니다 장고에 통합 된 웹 서버는 매우 좋습니다 웹 사이트의 테스트를 수행하기 위해 그러나 생산을 위해서는보다 강력하고 안전한 웹 서버가 필요합니다 잘 알려진 아파치 (Apache) 또는 소설 응 닉스 (Ngnix)와 같이 처음부터 자리를 잡았습니다 필자의 경우 Nginx를 사용하고 설치하고 구성합니다 이것은 다음 단계입니다

하지만 먼저이 구성에서 단락을 만들고 싶습니다 관리 웹 사이트에 더 많은 보안을 추가하고 싶습니다 회사 관리자가 DB에 액세스하는 데 사용할 웹 페이지 처음에는 관리 웹이 인터넷을 통해 구현됩니다 액세스하려면 컴퓨터에서 브라우저를 열고 준비된 URL을 입력하고 인증의 첫 페이지를 입력합니다 사용자 이름과 비밀번호를 묻습니다

두 단계로 인증을 추가 할 수도 있습니다 두 번째 단계는 모바일에 코드를 전송하는 것입니다 로그인 과정에 넣고 https 프로토콜을 사용하여 연결되면 SSH 암호화 및 인증서를 통해 안전하게 연결됩니다 우리가 문을 열어도 이것은 안전합니다 해커 나 로봇이 무차별 적으로 암호를 해독하려고 시도합니다 회사 데이터베이스에 액세스 할 수 있습니다 따라서 배경 아이디어는 다음과 같습니다

관리자 PuTTY-SSH를 사용하여 서버에 직접 연결합니다 서버가이 관리자가 연결되었음을 감지하면 다음 작업을 수행하는 스크립트 : 먼저 가상 환경을 활성화하고 두 번째는 시작합니다 runserver를 사용하는 django 웹 서버 마지막으로 Chrome 브라우저를 원격으로 실행하십시오 즉, 관리자 팀에서 관리 웹 페이지를 엽니 다 이런 식으로 SSH + 사용자 및 비밀번호 인증을받습니다 더 많은 컬을 말리려면 더 많은 보안을 추가하십시오 관리자가 쉽게 할 수 있도록 서버 나 응용 프로그램에 대한 컴퓨터 경험이 없다고 가정하면, 펜 드라이브를 만들어 키 체인에 가져갈 수있는 것이 이상적입니다

펜 드라이브 만 랩탑이나 모바일에 연결하면됩니다 관리 웹 사이트에서 자동으로 브라우저를 엽니 다 Es menos 가능한 perder o que te roben las llaves de casa, 노트북이나 모바일보다 개인 키가 후자 중 하나에없는 것이 좋습니다 그러나 여전히 고객이 펜 드라이브를 휴대하지 않으려는 경우 랩톱을 연결하여 사용하고 해킹 위험을 감수하십시오 개인 키를 훔친 다음 프로세스를 지금 할 때와 똑같습니다 유일한 차이점은 전체 구현이 USB 대신 컴퓨터에서

가장 먼저해야 할 일은 사용자의 SSH 구성을 변경하는 것입니다 sshd_config 파일을 수정하면 포트 22가 변경됩니다 이것이 기본값이며 우리는 다른 것을 넣습니다 X11 사용을 활성화 한 후 저장하고 다시 시작합니다 sshd 서비스 이제 Xming을 다운로드하여 Windows에 설치합니다 ssh 포트의 방화벽에 권한을 부여하십시오

관리 사용자를 만들고 앞으로 작업 할 것입니다 이 사용자를 위해 몇 개의 키를 만들어 보관했습니다 우리는 공개 키를 authorized_keys에 넣었습니다 그런 다음 모든 데이터로 새 세션을 만들었습니다 해당 섹션에서 X11을 활성화하십시오

이제 크롬을 시작하여 모든 것이 정상인지 테스트 할 수 있습니다 브라우저가 컴퓨터에서 열립니다 우리는 계속해서 새로운 사용자를 구성하고 솔직히했던 것과 동일한 애플리케이션으로 가상 환경을 만들었습니다 또한 WebWeb 테스트 프로젝트를 복사합니다 Windows에서 Xming을 시작하고 google-chrome을 원격으로 테스트했습니다

크롬이 필요하기 때문에 오류가 발생합니다 서버에없는 GPU의 일부 기능 중 그러나 잘 작동합니다 다음은 사용자의 bashrc를 변경하여 프로세스를 자동화하는 것입니다 연결할 때 가상 환경이 활성화되도록 그런 다음 3 개의 하위 프로세스를 사용하여 Python 스크립트를 작성했습니다 첫 번째 교황은 비동기식이며 완료를 기다리지 않습니다 다음 명령을 실행하려면 django 웹 서버가 항상 실행 중이기 때문에

두 번째는 원하는 지정된 URL로 크롬을 엽니 다 논리적 인 것은 로그인 창에서 여는 것입니다 이것은 완료되기를 기다리는 실행 스레드입니다 프로세스를 죽이는 것에 관한 다음 명령을 실행하는 것 장고 서버를 시작한 연결을 닫은 후에도 계속 실행되지 않습니다 마지막으로 퍼티와 연결할 때 브라우저가 마침내 열립니다

이제 우리는이 자동화를 pendrive에 구현할 것입니다 이를 위해 우리는 퍼티 포터블을 시작하는 pendrive에 autoruninf 파일이 필요합니다 Windows 7 버전부터 프로그램이 자동으로 자동 실행될 가능성을 비활성화했습니다 보안상의 이유로 설치해야합니다 연결할 때 장치를 모니터링하는 작은 프로그램 APO USB 자동 실행과 같은 먼저 우리는 pendrive에 퍼티 포터블을 다운로드하여 설치합니다

루트 디렉토리에 설치하는 것이 중요합니다 그렇지 않으면 작동하지 않습니다 우리는 그것을 시작했고 실질적으로 동일한 세션을 만들고 저장했습니다 창문에 퍼티를 설치하고 유일한 변형은 개인 키가 pendrive 자체에 있다는 것입니다 하드 드라이브가 아닙니다 그런 다음 autorun

inf 파일을 생성하여 셸에서 실행되도록합니다 퍼티가 세션의 매개 변수를 전달하기 시작하는 명령 이전에 저장 한 관리자 중 마지막으로 APO USB 자동 실행을 설치 한 후 Windows 시작 폴더에 배치합니다 Windows가 시작될 때 둘 다 시작되도록 Xming과 함께 모든 것이 잘되고 두 프로그램이 진행 중이라면 이제 우리는 모든 것을 시작할 수 있도록 pendrive를 소개 할 수 있습니다 우리는 다른 사람들이 부르듯이 EN-gin-ex 또는 EN-gai-nex를 계속 사용합니다 프로덕션 환경에서 작동하는 최종 웹 서버가됩니다 테스트 용으로 만 사용되는 django 웹 서버는 생략하겠습니다

Nginx가 Gunicorn에 요청을 보내려면 우리는 시작할 유닉스 소켓을 통해 그것을 할 것입니다 시작과 함께 때까지 듣고 계속 요청을 받으면 gunicorn으로 보냅니다 시스템 업데이트를 시작하겠습니다 우리는 nginx를 설치하고 컬합니다 컬은 Nginx와의 연결을 테스트하는 데 도움이되는 유틸리티입니다 또한 pip-review를 설치하고 pip를 업데이트합니다

그것은 그것이 구식이라고 우리에게 말하고 있습니다 장고도 업데이트하겠습니다 다른 패키지는 오래된 패키지입니다 django 테스트 서버를보다 편안하게 시작하기 위해 별칭을 만들 것입니다 마지막으로 환경에 gunicorn을 설치했습니다

프로젝트를 수행 할 수 있는지 확인하기 위해 시작하여 시도합니다 이제 소켓 파일과 시스템 서비스를 만듭니다 우리는 처음에 만든 PyFilter 서비스와 sshd 서비스를 가지고 있음을 알 수 있습니다 각 소켓 파일마다 서비스 파일이 존재해야합니다 서비스를 설명하는 확장명을 제외하고 동일한 이름으로 소켓에서 들어오는 트래픽을 시작합니다

우리는 소켓을 시작하고 시작하도록 활성화합니다 시작할 때 자동으로 우리는 소켓이 활성화되어 있고 듣는 것을 보았습니다 서비스가 비활성 상태이며 컬을 시도하라는 요청으로 활성화됩니다 그리고 서비스는 그것을 응답하는 gunicorn에게 보냅니다 django 응용 프로그램의 HTML로

마지막으로 nginx를 설정하고 새로운 서버 블록을 엽니 다 사이트에서 사용 가능한 디렉토리를 찾은 다음 사이트에서 사용 가능한 디렉토리에 연결합니다 방화벽 만 구성하여 권한을 제거하는 것입니다 테스트를 위해 django 웹 서버 만 사용하는 포트 8000에서 nginx에 새로운 권한을 부여합니다 정적 파일을 찾을 수 없기 때문에 오류가 발생합니다 nginx가 정적 파일을 제공하지 않기 때문입니다

https로 연결되지 않았다는 경고도 있습니다 안전한 방법은 아닙니다 이것이 우리가 보게 될 것입니다 정적 파일의 문제를 해결하려면 Whitenoise 패키지를 설치하는 것이 가장 좋습니다 우리의 웹 응용 프로그램은 nginx에 의존하지 않고 자신의 정적 파일을 제공합니다

나중에 화이트 노이즈와 함께 작동하도록 django를 구성해야합니다 정적 파일을 아래에 추가합니다 반드시 필요한 것은 아니지만 Brotli 패키지도 추가합니다 https의 압축 형식으로 파일을 관리하기 위해 gzip에 대한 로딩 속도를 줄입니다 자동적으로 배치하기 위해 collectstatic을 실행 django의 / static / 폴더에 포함 된 필수 정적 파일 settingspy 설정에서 정의한대로 이제 그는 스타일 시트 등을 인식하고 적용합니다

https를 통해 연결되어 있지 않으며 안전하지 않다고 경고합니다 그러나 지금 이것을 변경합시다 HTTPS를 통해 웹 애플리케이션을 제공하려면 SSL 인증서가 필요합니다 이를 테스트하기 위해 자체 서명 된 SSL 인증서를 작성합니다 도메인이 필요하지 않은 클라이언트와의 연결을 강화하는 강력한 그룹 일부 개발자는 nano bash 편집기를 사용하여 편안함을 느낄 수 있습니다 텍스트 파일을 만들고 수정하지만보다 편안하고 관리하기 쉬운 그래픽 인터페이스를 선호합니다

이를 위해 우리는 응용 프로그램 인 WinSCP를 사용할 수 있습니다 SFTP-SSH를 통해 서버에 연결하고 파일을 관리합니다 작업 창에는 두 가지 모드가 있으며 이제는 Windows 탐색기로 사용하고 있습니다 여기에서 변경할 수 있습니다 파일의 속성을 쉽게보고 변경할 수 있습니다 텍스트 파일을 편집하려면 마우스 오른쪽 버튼을 클릭하거나 두 번 클릭하십시오

ko mi caso uso el 메모장 ++ journalctl 구성 변수를 변경하겠습니다 지난 4 일 동안의 기록 만 저장합니다 ya quego + 400Mg ocupados solo con el diario, 모든 시스템 이벤트 및 서비스의 모든 레코드를 유지합니다 사용량이 많은 크기와 다른 매개 변수로 필터링 할 수도 있습니다 아래에는 저널에 대한 자세한 내용을 보여주는 링크가 있습니다

파일을 저장하고 WinSCP가 서버로 전송하는 방법을 확인합니다 이를 적용하려면 시스템을 다시 시작해야합니다 Digital Ocean에 VPS가있는 경우 다시 연결할 때 문제가 발생할 수 있습니다 서버 연결을 거부합니다 이것은 정상이며 쉬운 해결책이 있습니다

보안을 위해해야 ​​할 일은 재부팅 할 때마다 방화벽을 활성화하는 것입니다 재부팅 전에 이전에 비활성화했지만 이를 통해 DO 계정을 입력해야합니다 액 적의 콘솔을 열고 sudo 권한을 가진 루트 또는 다른 사용자로 연결 방화벽을 비활성화합니다 그런 다음 퍼티에서 연결하고 방화벽을 활성화 할 수 있습니다 디스크에서 저널의 점령을 보는 두 가지 명령 마지막 이틀을 제외한 모든 것을 비우는 또 다른 하나

프로젝트를위한 시작 응용 프로그램을 만들 것입니다 폴더의 구조와 appspy 파일을 생성 한 방법을 볼 수 있습니다 응용 프로그램 이름으로 수업을 추가 한 곳 settingspy 파일에 복사하여 붙여 넣습니다 그런 다음이 작은 텍스트를 반환 할 뷰를 만듭니다

이제 애플리케이션에서 urlspy 파일을 만들어 요청을 관리합니다 사용자가 IP 주소만으로 다른 것을 요청하면 홈페이지가 표시됩니다 그리고 이것은 프로젝트 urlspy 파일입니다

홈페이지로 연결됩니다 주목해야 할 것은 django 프로젝트에서 파일을 수정할 때마다 변경 사항을 적용하려면 gunicorn의 wsgi 서버를 다시 시작해야합니다 그리고 nginx 구성 파일도 수정하면 같은 이유로 다시 시작해야합니다 먼저 우리는 오류 테스트를하고 모든 것이 정확하다면 서버를 다시 시작합니다 http를 통해 신청을하면 nginx는 안전 모드 https로 리디렉션합니다

IP 이후에 요청에 다른 내용이없는 경우 그런 다음 홈 응용 프로그램으로 리디렉션합니다 테스트를위한 html 페이지를 만들고 모든 템플릿을 새 디렉토리에 배치합니다 메모장과 악센트가있는 문자를 사용하는 경우 UTF-8 인코딩을 활성화하십시오 정적 파일 폴더 안에도 생성합니다 홈 애플리케이션의 컨텐츠를위한 새 폴더 애플리케이션 아이콘으로 사용할 이미지를 배치합니다

settingspy 파일을 수정하여 루트 템플릿 폴더의 위치를 ​​알려줍니다 시작보기의 파일에서 더 이상 이전 메시지를 표시하지 않습니다 indexhtml 템플릿에 연결하십시오

펜 드라이브를 유일한 수단으로 사용하고자하는 사람들을 위해 관리자로서 응용 프로그램에 연결하려면 URL 15151515/admin/에서 요청을 리디렉션하도록 nginx를 재구성 IP 로컬 1270

01에서만 액세스 할 수 있습니다 응용 프로그램 아이콘 확인 체크 아웃을 제거했습니다 이미 템플릿이 있고 템플릿에서 찾을 위치를 표시하기 때문입니다 모든 요청을 알려주는 새로운 서버 정책 인터넷에서 / admin을 사용하여 홈 페이지로 리디렉션합니다 localhost에서 gunicorn 소켓으로의 모든 요청

변경 사항을 적용하려면 다시 시작해야합니다 URL 15151515/admin이 우리를 리디렉션하는지 확인합니다

라파지나 드 이니시오 코모 에스타 바 프리 비스토 더 이상 인터넷에서 액세스 할 수 없습니다 아이콘이 없어서 오류 메시지가 없습니다 페이지 이름과 함께 여기에 있습니다 마지막으로 시작하는 startpy 파일을 수정해야합니다 젤라 사용자로 서버에 연결하면 Google 크롬 브라우저를 로컬에서 엽니 다

django 테스트 서버를 시작하는 줄을 주석 처리합니다 더 이상 사용하지 않으며이 프로세스를 중단시키는 줄입니다 그리고 우리는 포트를 443으로 변경했습니다 이제 우리는 pendrive를 소개하려고 할 수 있습니다 기본 관리 페이지가 나타납니다 입력 할 수있는 로그인은 무엇입니까? 이 템플릿에 아이콘을 추가하지 않았으므로 아이콘이 없다는 오류가 다시 발생합니다 그러나 우리는 이미 그것을 해결하는 방법을 알고 있습니까? 이 시점에서 이미 Windows에서 VPS를 구성했습니다

웹 애플리케이션을 제작할 준비가되었습니다 시작하고 이해하기에는 긴 길이었습니다 웹 서버에 통합 된 각 구성 요소 이제 백업 사본으로 스냅 샷을 만들 수 있습니다 우리가 만들고자하는 다른 웹 사이트의 기초로 이 비디오는 생각보다 훨씬 더 많이 퍼졌습니다 너무 많이 지내지 않기를 바랍니다 다음 시간까지 인사드립니다

Desarrollo web en Windows 10, con Python, Django, PostgreSQL y LiClipse (English subtitles)

다시 한번 안녕하세요 제 이름은 Frank Mascarell이며 이전 비디오에서는 VPS에서 프로덕션 환경을 설정했습니다 또는 Linux 운영 체제가있는 개인 가상 서버 이 비디오에서는 Windows 10에서 동일한 환경을 구성합니다

개발 목적으로 우리는 이미 몇 가지 도구를 설치했습니다 이전 비디오에서 설명한 PuTTY 및 WinSCP와 같은 파이썬 설치부터 시작하겠습니다 이 프로젝트를 위해서는 계정을 사용해야합니다 모든 관리자 권한이있는 Windows 공식 Python 웹 사이트에서 최신 버전을 다운로드합니다 올바른 프로세서 유형을 선택하는 오늘은 3

73입니다 내 경우에는 x64입니다 어떤 것이 있는지 잘 모르겠다면 제어판> 시스템 및 보안> 시스템에서 볼 수 있습니다 관리자로서 실행 파일을 시작하고 설치가 시작됩니다

상자를 체크하여 파이썬 실행 파일의 경로를 추가합니다 PATH 환경 변수에서 이런 식으로 모든 폴더의 명령 콘솔에서 Python을 실행할 수 있습니다 기본적으로 Windows는 260자를 제한합니다 전체 경로를 포함한 최대 파일 이름 길이 여기를 클릭하여이 제한을 제거하십시오 그런 다음 데스크톱에 Python Shell 링크를 만들고 우리는 그것을 더 잘 갖기 위해 모든 것이 잘 진행되고 있는지 확인합니다 그리고 이것은 파이썬과 관련이 있습니다

PostgreSQL을 다운로드하여 관리자 계정으로 설치합니다 Stack Builder를 설치하는 옵션을 비활성화합니다 우리는 그것을 필요로하지 않기 때문입니다 이 응용 프로그램은 postgres를 확장하는 패키지 관리자입니다 그런 다음 Postgres Shell을 열고 postgres라는 샘플 데이터베이스에 연결할 수 있는지 확인합니다 설치를 만든 이런 경고를 우리에게 보여 주면 문자 유형이 일치하지 않음을 나타냅니다 Windows가 설치된 postgres 콘솔의 이 줄을 runpsql

bat 파일에 추가해야합니다 이제 PgAdmin을 입력하고 처음으로 마스터 비밀번호를 요청합니다 우리는 이미 연결되어 있으며 탐색 패널에서 BD postgres를 볼 수 있습니다 이제 슈퍼 유저 권한으로 다른 postgres 역할을 만들 수 있습니다 cmd에서 postgres 명령을 사용하려면 실행 파일의 경로를 추가해야합니다 PATH 환경 변수에서 Windows에서 로그 아웃 또는 다시 시작 새 경로로 변수를 다시로드하십시오

파이썬에서했던 것처럼 이것은 설치 옵션을 제공하지만 개발 환경에서는 postgres가 항상 실행되고있을 필요는 없습니다 장비 자원 소비 Windows 서비스가 실행 중이고 8 ​​개의 프로세스가 있습니다 postgres 서버를 시작하는 것이 좋습니다 우리가 그와 함께 일하고 그만 멈출 때만 이전 버전의 postgres에서는 박쥐 파일이 포함되었습니다 한 번의 클릭으로 서버를 시작하고 중지 할 수 있습니다 하지만이 버전에서는 그래서 우리는 그들 스스로 준비 할 것입니다

매우 쉽습니다 항상 그렇듯이 관리 계정에서 탐색기를 열고이 postgres 설치 폴더로갑니다 Startbat와 같은 이름을 가진 파일을 만듭니다 이 코드 줄로

NET 명령을 사용하여 서비스를 시작하고 중지합니다 우리는 바탕 화면에 바로 가기를 만들고 아이콘을 변경하고 짜잔 다 같은 방법으로 다른 박쥐를 만들어 cmd를 시작할 수 있습니다 postgres API에 필요한 환경 변수를로드합니다 명령을보다 편안하게 사용할 수 있습니다

이러한 변수는 이 특정 창에만 유용합니다 일단 닫히면 변수가 파괴됩니다 예를 들어, PGDATA 변수는 경로를 포함합니다 postgres 데이터가 저장되는 위치 이 변수는 대부분의 pg_ctl 명령에 필요합니다 무엇보다도, 우리는 확인할 수 있습니다 status 명령으로 서버의 상태 서버를 제어하는 ​​더 유용한 기능

아래에는 pg_ctl 문서에 대한 링크가 있습니다 서버가 Windows에서 자동으로 시작되므로 수동으로 바꾸어도 Windows 시작 프로그램에 Stopbat 실행 파일을 포함시키는 것이 좋습니다 이를 위해이 폴더로 이동하여 데스크탑 아이콘을 복사하여 붙여 넣습니다 Windows를 다시 시작하고 작동 방식을 확인할 수 있습니다

서비스를 비활성화하지 않는 것이 좋습니다 Startbat 실행 파일로 서버를 시작할 수 없기 때문에 다시 활성화해야합니다 이것은 필요의 문제입니다 postgres의 용도에 따라 다릅니다

가상 환경 준비를 시작하겠습니다 최신 버전의 Python을 설치 한 후 이들은 전 세계적으로 Windows에 설치된 기본 패키지입니다 업데이트가 누락 된 pip가 포함되었습니다 다음으로 virtualenvwrapper-win을 설치합니다 가상 환경을 관리합니다 이 버전은 virtualenvwrapper를 확장합니다 (virtualenv를 확장합니다) Windows 용 새 스크립트가 있습니다

아래에서 문서 링크를 떠납니다 또한 전체 시스템에 대해 pip-review를 설치합니다 패키지를 쉽게 업데이트 할 수 있습니다 이 시점에서 저는 중요한 설명을하고 싶습니다 –local 옵션없이 시스템에서 pip-review로 업데이트 할 때 그것이 할 일은 시스템 패키지를 업데이트하는 것입니다 기존의 모든 가상 환경

경우에 따라 유용 할 수 있습니다 그러나 더 많이 사용할수록 가상 환경 내에 있습니다 이제 mkvirtualenv 명령으로 가상 환경을 만듭니다 새로운 개발 환경의 이름 이를 생성 한 다음 활성화합니다 우리는 이미 환경 내에 있음을 나타냅니다

일부 도구가 자동으로 설치되었습니다 deactivate 명령으로 비활성화 할 수 있습니다 workon 명령 및 환경 이름으로 다시 활성화하십시오 가상 환경을 만들 때 –python 옵션을 표시하지 않으면 시스템에 설치 한 최신 버전을 설치합니다 Windows에 여러 버전의 Python을 설치할 수 있으므로 mkvirtualenv 명령으로 특정 버전의 Python으로 이미 작성된 경우 시스템에 이미 설치된 버전입니다

우리가 설치할 첫 번째 패키지는 pip-review입니다 활성화 된 환경에서 pip-review를 실행하면 로컬 옵션을 표시 할 필요는 없습니다 이 격리 된 환경의 패키지 만 업데이트합니다 두 번째 패키지는 Django의 최신 버전입니다 현재 2

22 django-admin –version 응용 프로그램을 실행하여 설치를 확인합니다 환경이 활성화되면 장고 프로젝트를 만드는 것이 매우 쉽습니다 django-admin startproject projectname 명령을 사용하십시오

그런 다음 새 폴더를 입력하여 managepy 파일에 액세스하십시오 python managepy runserver 명령으로 django 테스트 서버를 시작하십시오 이 서버는 로컬 호스트 모드에서 포트 8000에서 시작합니다

또는 로컬 주소 127001과 동일한 것입니다 서버를 중지하려면 중단 (Ctrl + C)을 사용하십시오

우리는 두 개의 패키지를 더 설치할 것이다 : 장고가 postgres에 연결할 수 있도록 psycopg2 정적 파일을 독립적으로 처리하는 whitenoise 개발 단계에서는 화이트 노이즈가 필요하지 않지만 장고 테스트 서버는 정적 파일을 자체 방식으로 처리하므로 그것으로 테스트를 수행하는 것이 편리합니다 프로덕션 환경의 서버에서 환경을 유지할 수 있기 때문에 이러한 방식이 될 것입니다 프로젝트를 구성하는 두 가지 방법을 설명하겠습니다 화이트 노이즈를 사용하지 않는 개발 형태 정적 파일을 처리하는 whitenoise와 함께 생산 방식

BooksWeb 테스트 프로젝트를 다운로드하여 시도해 보겠습니다 이전 비디오에서 사용한 VPS에 프로덕션 환경에서 작동하도록 설정되어 있습니다 사본을 어디서나 저장할 수 있습니다 프로젝트가 특정 폴더에있을 필요는 없습니다 첫 번째는 PgAdmin의 postgres에 BooksWeb 데이터베이스를 만드는 것입니다

프로젝트의 settingspy 파일입니다 화이트 노이즈를 사용하지 않고 구성하려면 일부 줄을 수정해야합니다 첫 번째는 SECRET_KEY 변수의로드에 대해 언급하는 것입니다 환경 변수에 저장되어 있지 않기 때문에 비밀 키를 직접 할당합니다 DEBUG 변수를 활성화하고 오류 발생시 메시지를 표시합니다

MIDDLEWARE 변수도 수정합니다 우리는 whitenoise가 통합 된 라인에 대해 언급합니다 매개 변수에 따라 DATABASES 변수를 조정합니다 방금 만든 테스트를 위해 로컬 BD에서 그것이 지금 연결될 곳입니다 서버 데이터베이스가 아니라 다르게 구성합니다 마지막으로,이 두 변수는 정적 파일 용으로 남겨두고 whitenoise에 대한 STATICFILES_DIRS 변수의로드에 대해 설명하십시오 whitenoise 버전 4

0부터 settingspy 파일에서 프로젝트를 구성해야합니다 wsgipy 파일에서 whitenoise에 대한 참조를 삭제하십시오 이 줄에 주석을 달거나 삭제합니다 이것들은 모두 필요한 구성 변경입니다 정적 파일을 사용하여 화이트 노이즈없이 작업 그리고 django 테스트 서버와 로컬로

잊지 말아야 할 또 다른 중요한 단계는 프로젝트 모델을 로컬 postgres BD로 마이그레이션하는 것입니다 django가 프로젝트의 BD 구조를 올바르게 작성합니다 그리고 makemigrations 및 migrate 명령으로이 작업을 수행합니다 그는 자신이 변화를 감지하지 못했다고 말하고 있습니다 이전에 마이그레이션을 수행했기 때문입니다

이제 테스트 서버를 시작하고 브라우저에서 결과를 확인하십시오 정적 파일이 제대로로드되었는지 확인할 수 있습니다 브라우저에서 오류가 발생하지 않습니다 페이지 스타일도 적용됩니다 정적 파일 인 CSS 스타일 시트를 통해 아직 기록은 없지만 postgres의 BD 구조는 PgAdmin에서 볼 수 있듯이 작성 및 준비됩니다 그런 다음 프로젝트를 구성하여 정적 파일에 whitenoise 서버를 사용하십시오

이전에 변경 한 줄을 주석 해제하십시오 –nostatic 매개 변수를 사용하여 테스트 서버를 시작합니다 장고 테스트 서버에 알리기 위해 정적 파일 관리를 중지하고 이제 whitenoise는 새로운 settingspy 설정에 따라이를 수행합니다 이렇게 변경하면 정적 파일과 관련된 브라우저 캐시를 비워야합니다 또는 반대로 페이지가 캐시에 저장된 오래된 파일과 함께 페이지를 잘못 표시하거나 오류로 표시합니다

이런 식으로 캐시를 재생성합니다 정적 파일 알고리즘이 변경 될 때마다 django가 생성 한 페이지를 확인할 수 있습니다 잘 작동하고 오류가 발생하지 않습니다 이제 whitenoise는 개발 모드에서 정적 파일을 제공하고 있습니다 VPS의 프로덕션 모드에서와 동일합니다 비어있는 __init__py 파일을 추가하여 시작해 보겠습니다 ( settings

py 파일이있는 위치 이것은 파이썬 에게이 폴더를 알려줍니다 모든 내용을 담은 패키지로 취급 할 수 있습니다 지금 만들 새 파일을 가져올 수 있습니다 먼저 settingspy 사본을 만듭니다

이름을 basepy로 바꿉니다 그런 다음 developmentpy 및 produccionpy 파일을 만듭니다

이제 우리는 수정 될 변수를 제거했습니다 STATIC_URL 변수는 일반적이기 때문에 그대로 두겠습니다 개발 및 생산 모드 개발 구성 파일에서 기본 모듈을 가져 와서 그대로 둡니다 생산 파일에서 우리는 whitenoise를 추가합니다 그리고 당신이 일 해야하는 변수

이제 우리는 어떻게 활성화 할 것인지 알아야합니다 개발 방식 또는 생산 방식 managepy 파일을보십시오 프로젝트를 시작한 첫 번째입니다 그것은 설정하는 기능을 포함 DJANGO_SETTINGS_MODULE 환경 변수 프로젝트 시작시 존재하지 않는 경우 settings

py 파일의 기본값을 할당합니다 이것이 우리가 할당해야 할 변수입니다 django 서버를 시작하기 전에 Windows에서는 SET 명령을 사용하여 변수를 할당합니다 생산 모드로 전환 할 때 브라우저 캐시를 지우는 것이 중요합니다 또한 문제없이 작동한다는 것을 알았습니다

이제 두 가지 구성이 준비되었습니다 하나의 변수 만 할당하면 쉽게 교환 할 수 있습니다 장고의 다음 버전이 나오면 새 버전으로 환경을 만들 수 있습니다 VPS에서 최종 변경을 수행하기 전에 로컬에서 테스트 웹 사이트 충돌의 위험없이 새 버전의 오작동으로 인해 가상 환경을 테스트하려면 다른 버전의 django로이 프로젝트를 시도해 볼 수 있습니다 예를 들어 2

0입니다 새로운 환경을 만들고 필요한 패키지를 설치합니다 따라서 우리는 우리의 프로젝트가 Django 버전 20에서도 작동합니다 실용? 개인적인 용도로 작은 응용 프로그램을 만들 겠다는 이점을 활용하면서 django의 모델, 뷰 및 템플릿을 신속하게 검토합니다

쓰레기로 가득 찬 보관실이 있기 때문에 그리고 나는 대다수를 팔고 싶다 두 개의 테이블이있는 작은 데이터베이스를 작성합니다 책을 담을 책, 다른 기사와 다른 또한 데이터베이스를 관리하기위한 사용자 지정 관리 페이지를 만듭니다 첫 번째는 비어 있고 구조화되지 않은 데이터베이스를 만드는 것입니다

로컬 연결로 PgAdmin에서 그런 다음이 연결의 속성을 수정합니다 기본적으로 BD 저장소에 연결하려면 Frank_local 연결과 연결할 때 서버를 테스트하고 연결을 끊었다가 다시 연결합니다 이제 django로 돌아가서 프로젝트와 응용 프로그램을 만듭니다 설정 파일을 조정합니다

우리는 응용 프로그램을 등록 화이트 노이즈를 사용하여 개발 모드를 구성합니다 postgres에 대한 연결 구성 정적 파일을위한 정적 폴더를 만듭니다 그런 다음 필요한 URL을 매핑합니다 브라우저에서 URL 카탈로그 /를 입력하면 catalogo

urls 파일로 리디렉션됩니다 이 애플리케이션의 URL이 맵핑되는 위치입니다 빈 URL을 입력하면 URL 카탈로그 /로 리디렉션됩니다 카탈로그 폴더에 urlspy 파일을 만들고 나중에 뷰를 만들면 urlpatterns 변수를 채 웁니다 다음은 postgres 마이그레이션을 수행하는 것입니다

여기에 구문 오류가 발생합니다 그리고 include 함수를 포함하는 것을 잊었 기 때문에 여기에 또 다른 오류가 있습니다 이제 네 PgAdmin을 체크인하면 django가 필요한 모든 테이블을 만드는 방법 관리, 사용자 및 인증을 위해 우리는 응용 프로그램을 테스트했으며 장고는 예상대로 작동합니다 URL 카탈로그에 대한 관련보기가 없기 때문에 오류가 발생합니다

/, 그러나 장고는 잘 작동합니다 카탈로그 애플리케이션의 모델을 작성합니다 Book 모델에 필요한 기본 모델부터 시작하겠습니다 full_name 필드 만있는 작성자 모델 모든 저자가 포함 된 별도의 모델을 만들어야합니다

책 모델의 저자 필드 이후 여러 저자가 포함될 수 있습니다 순서를 정의하는 메타 클래스 복수형의 변수 이름을 반환하는 방법은 인스턴스가 참조 될 때 게시자를 먼저 만들기 위해 광고 문안 모델 책 모델에서 읽어보십시오 책 또는 기사의 상태를 표시하는 데 사용할 모델 상태 세 가지 가능한 불변 값 중 하나이므로 상수와 choices 속성을 사용할 것입니다

두 가지 가능한 값으로 모델을 인쇄하십시오 기사의 사진을 저장할 미디어라는 폴더를 준비합니다 나는 그것들을 두 가지 범주로 분류 할 것이다; 책의 사진과 기사의 나머지 사진 이제 책 사진을위한 PhotoBook 모델을 만들고 데이터베이스에 저장 될 ImageField 필드와 함께 책의 사진이 저장 될 경로 (이미지가 아닌) settings

py 파일에 일부 변수 만 추가하면됩니다 그래서 장고는 사진을 잘 관리합니다 우리는 기사의 사진에 대한 다른 유사한 모델을 만듭니다 다른 폴더에 저장합니다 컬렉션 모델도 필요합니다

그러면 모든 책 모음이 저장됩니다 그리고 해당 필드에 다른 모델이 포함될 책 모델 콜렉션 필드는 콜렉션 모델과 일대 다 관계 (ForegeinKey)를 갖습니다 즉, 책 모델의 각 레코드는 컬렉션 모델의 레코드를 포함 할 수 있습니다 저자 필드는 다 대다 관계 (ManyToManyField)를 갖습니다

즉, 동일한 레코드에 Author 모델의 여러 레코드가 포함될 수 있습니다 숫자 필드의 경우 작은 양의 정수가 있습니다 지금은이 모델 내에 상수 값의 모델을 배치하겠습니다 발행물의 URL을 저장하려면 다른 모델이 필요합니다 TextField가있는 설명 필드 양식에서 TextArea 요소로 표시됩니다

보시다시피 일부 분야에서는 비어있을 수 있다고 말합니다 BD의 경우 null = True이고 양식의 경우 blank = True입니다 기사를 만들 때 마지막으로 사진과 간행물을 남길 것입니다 수집 필드도 비워 둘 수 있습니다 모든 책이 컬렉션에 속하는 것은 아니기 때문입니다

마지막으로, 나머지 기사를 포함 할 모델 기사입니다 이 모델에는 책 모델에 대한 몇 가지 공통 필드가 있으므로 우리는 파이썬 프로그래밍의 원칙 중 하나를 고려하여 이것을 코딩 할 것이다; 반복적이고 불필요한 코드를 생성하지 마십시오 우리는이 공통 분야를 새로운 추상 클래스로 추상화 할 것입니다 그런 다음 다른 모델에서 상속합니다 BD에서는 추상 모델이 생성되지 않습니다

코드 저장에만 도움이됩니다 Django에서는이 모델을 Mixin이라고합니다 명령 콘솔로 돌아가서 환경을 활성화하고 이미지 처리를위한 특정 라이브러리 인 다른 Pillow 패키지를 설치합니다 ImageField 필드 유형을 사용할 수 있어야합니다 이제 마이그레이션을 만들어 봅시다

오류가 발생합니다 ForeignKey 필드에 null 값을 포함 시키려면 on_delete 속성을 추가해야합니다 연결된 레코드를 삭제하는 경우 빈 필드가 표시됩니다 BD의 ManyToManyField 필드는 null 일 수 없습니다 그러나 양식이 비어있을 수 있습니다

null이 아닌 경우 ImageField 필드 기본값을 요구하므로 null로 설정합니다 마이그레이션을 다시 시도하십시오 이제는 PgAdmin에서 BD의 상태를 확인하십시오 해당 필드를 사용하여 모든 테이블을 생성 한 방법을 확인합니다 이 관리 응용 프로그램은 startproject로 프로젝트를 만들 때 Django가 만들었습니다

그런 다음 관리 사이트의 모델 만 등록하면됩니다 이것이 가장 기본적인 방법입니다 추상 클래스는 등록하지 않아야합니다 또한 모델에 액세스 할 수있는 권한이있는 관리 계정이 필요합니다 이제 관리자로 로그인하고 로그인 할 수 있습니다

기본적으로 모든 모델에 액세스 할 수 있는지 확인합니다 첫 번째 레코드를 추가합니다 먼저 책을 추가하려고합니다 필드 이름을 보면 비어 있거나 널이 될 수있는 필드가 다른 색상인지 확인합니다 기사를 등록한 다음이 필드를 채울 수 있습니다

사진을 찍어 게시 할 때 여기에서 그는 레코드가 올바르게 저장되었다는 메시지를 보여줍니다 BD에서 확인해 봅시다 저자, 컬렉션 및 출판사에 대한 기록도 만들었습니다 이 애플리케이션은 로컬에서만 작동하지만 디자인이 다른 홈페이지와 다른 페이지를 만들 것입니다 이를 위해 해당 뷰도 생성합니다

원하는 데이터가 노출됩니다 카탈로그 / 뒤에 빈 URL을 추가합니다 indexhtml 페이지로 리디렉션됩니다 views

py에서 필요한 뷰를 선언합니다 필요한 모델을 가져옵니다 템플릿 옆에 데이터를 반환하는 함수를 만듭니다 템플릿을 저장할 폴더를 만들고 그리고 홈페이지의 기본 템플릿 또한 정적 내부에 두 개의 폴더를 더 만듭니다

스타일 시트와 자바 스크립트 파일을 저장합니다 디자인에 Bootstrap을 사용할 것입니다 다운로드 한 모든 파일 중에서 두 가지 컴팩트 파일 만 필요합니다 minjs 및 min

css, 다른 사람이 삭제할 수 있습니다 basehtml 템플릿에는 모든 템플릿에 대한 공통 헤더가 포함되어 있습니다 그리고 네비게이션 바 index

html 템플릿에는 각 모델의 총 레코드 목록이 포함되어 있습니다 PubURLs 모델의 이름을 Publications로 변경하겠습니다 그런 다음 변경 사항을 postgres로 마이그레이션하십시오 다시 시도하면이 오류를 예측할 수있었습니다 해당 URL이 아직 정의되어 있지 않기 때문입니다

단계를 밟아 봅시다 다음은 각 템플릿에 필요한 모든 뷰를 만드는 것입니다 우리는 완전히 새로운 관리 인터페이스를 만들고 있음을 기억하십시오 Django가 기본적으로 제공하는 관리 인터페이스와 유사합니다 localhost / admin으로 입력 한 것 하지만 우리와 함께 더 설명적인 다른 URL을 입력하겠습니다

그리고 우리는 원하는대로 인터페이스 디자인을 할 것입니다 물론 장고가 많은 시간을 절약 할 수는 있지만 모든 것이 제대로 작동합니다 각 모델마다 두 개의 클래스를 만듭니다 하나는 모든 모델 레코드를 나열하고 다른 하나는 모델의 특정 레코드의 세부 사항을 보여줍니다 각 클래스마다 세 가지 변수를 할당합니다

하나는이 뷰가 연결되는 모델을 나타냅니다 새 변수 이름을 나타내는 또 다른 옵션 모델에서 추출한 데이터를 참조합니다 클래스가 ListView에서 파생되면 모든 레코드를 반환합니다 클래스가 DetailView에서 파생되면 특정 레코드를 반환합니다 우리가 당시에 표시 할 마지막으로 HTML 템플릿을 나타내는 다른 변수 이 모든 데이터를 나타냅니다

여기에 뷰에 대해 정의 된 클래스에서 Django가 사용하는 MVT 패턴을 더 잘 이해할 수 있습니다 뷰가 (urlspy 파일로부터) 요청을 받으면, 해당보기에서 처리됩니다 액세스 권한을 준비합니다 (있는 경우) 모델에서 (models

py 파일에서) 요청 된 데이터를 추출합니다 클라이언트의 브라우저로 응답을 보냅니다 지금까지 간단한 읽기 전용보기를 만들었습니다 허가가 필요없는 이제 BD에 액세스 할 수있는 뷰를 추가하겠습니다 따라서 로그인해야합니다

우리는 또한 해당 양식이 필요합니다 모델 필드를 편집 할 수 있습니다 CreateView, UpdateView 또는 DeleteView 클래스를 상속하면 Django는 해당 Form 클래스를 자동으로 생성합니다 양식과 상호 작용하는 데 관련된 모든 논리를 데이터의 유효성을 검사하고 보안을 통합합니다 모델마다 3 개의 클래스를 만들고 레코드 작성, 업데이트 및 삭제 조치에 해당합니다 처음 두 클래스는 같은 템플릿을 가리 킵니다

마지막 클래스는 다른 삭제 확인 템플릿을 가리 킵니다 해당 URL에보기를 지정하십시오 나는 그것들을 여러 그룹으로 나누었다 처음 두 그룹은 읽기 전용 액세스를위한 URL (목록 및 세부 정보)입니다 나머지 세 그룹은 전체 액세스를위한 URL입니다

이제이 URL에 대한 템플릿을 만들어야합니다 모델을 나열하기 위해 템플릿으로 시작해 봅시다 먼저 각 모델마다 방법이 필요합니다 주어진 레코드의 URL을 반환하려면 템플릿 링크를 만들 수 있습니다 첫 번째 템플리트는 항목 모델의 레코드를 나열합니다 다른 모델의 레코드를 나열하는 다른 템플릿 그것들은 매우 비슷하며 복사 만하면됩니다

해당 변수를 변경하십시오 이제 레코드의 세부 사항에 대한 템플리트를 사용합니다 처음 두 개의 템플릿과 더 많은 작업이있는 기사 및 책 모델의 세부 사항에 대한 템플리트입니다 더 많은 필드가있는 모델이기 때문입니다 그리고 마지막으로 데이터베이스에 대한 전체 액세스 권한이있는 템플릿; 양식

이것으로 우리는 빨리 끝날 것입니다 장고가 자동으로 코드를 생성하기 때문입니다 동일한 템플릿 이름을 사용하므로 template_name 변수를 통해 Django가 기본적으로 할당 한 것보다 할당 할 필요가 없으므로 모든보기에서 삭제합니다 우리는 몇 줄의 코드를 저장합니다 첫 번째 양식은 기사 모델의 레코드를 작성하고 업데이트하는 데 도움이됩니다

매우 기본적인 형태입니다 Django가 블록 컨텐츠의 컨텐츠를 생성하는 곳, 각 모델 필드에 대한 입력 필드를 만듭니다 양식을 만드는 가장 빠른 방법입니다 같은 템플릿을 사용할 수도 있습니다 나머지 모델의 다른 모든 형태에 대해 그것들을 구별하는 자신의 변수를 사용하지 않기 때문입니다 그러나 우리는 이것을하지 않을 것입니다

각 모델에 대한 사본을 작성하고 프로젝트 디자인 단계에서 페이지 디자인에 유연성을 높이기 위해 필드를 수동으로 추가합니다 그러나 이것으로 우리는 도착할 것입니다 첫 번째는 백엔드가 제대로 작동하는지 확인하는 것입니다 작업 할 모든 변수를 인식하고 모든 페이지와 원활하게 상호 작용할 수 있습니다 또한 레코드 삭제 확인 템플릿이 필요합니다

다른 모델의 경우 Django가 기본적으로 할당 한 이름으로 계속 template_name 변수의 뷰에 우리는 article_confirm_deletehtml을 사용하여 시작할 것입니다 그런 다음 나머지 템플릿을 만듭니다 코드를 디버깅하고 오류를 수정하며 테스트합니다

명령 콘솔을 위해 Windows에서 별명을 작성합니다 알다시피, 우리는 개발 단계에 있습니다 우리는 같은 명령을 여러 번 반복합니다 가상 환경을 활성화 한 다음 테스트 서버를 시작하십시오 쉽게 해보자 먼저 Alias

bat라는 파일을 원하는 위치에 만듭니다 여기에는 DOSKEY 명령이 포함됩니다 언급 된 두 프로세스를 실행합니다 그런 다음 Autorun이라는 문자열 값을 추가합니다 레지스트리의 HKEY_CURRENT_USER Software Microsoft Command Processor 폴더 안에 콘솔이 시작될 때

bat 파일이 실행되도록하려면 정의 된 매크로를 사용할 수 있습니다 메모장 ++는 우리가 본 것처럼 기능을 수행하는 범용 편집기입니다 하지만 프로젝트가 성장함에 따라 예를 들어 고급 편집기가없는 경우 프로젝트 파일의 탐색 패널을 포함하거나 코딩하는 동안 추가 도움말이 통합되어 있습니다 메모장에서 감지하지 못하는 일반적인 구문 오류를 피하기 위해 변수 나 함수의 이름을 기억하도록 돕기 위해 더 유용한 것들 중 하나입니다 LiClipse는 Python으로 프로그래밍하기에 이상적인 편집기입니다

특히 Django에서는 무료입니다 LiClipse는 PyDev가 통합 된 Eclipse의 확장입니다 파이썬으로 개발하기위한 모듈입니다 그래서 다운로드하여 설치하겠습니다 아래에 사이트의 링크를 배치하겠습니다

이 테마로 LiClipse를 구성했습니다 또한 내가 원하는 것을 다운로드 할 것입니다 시력이 떨어지기 때문에 어두운 배경을 선호합니다 스토리지 프로젝트도로드했습니다 인터페이스에 대한 개요를 갖습니다 그런 다음 세부 사항으로 이동합니다

지금은 왼쪽의 탐색 패널을 볼 수 있습니다 프로젝트 파일을 표시하고 클래스를 볼 수있는 곳, 그리고 이것들 안에서 변수와 함수 요소를 두 번 클릭하면 직접 요소로 이동합니다 빨간색 밑줄이있는 LiClipse는 코드의 오류를 나타냅니다 탐색 아이콘에는 경고 아이콘이 있습니다

이 오류를 비활성화하려면 문제 패널에서 경고 메시지를 삭제합니다 LiClipse는이 오류를 발생시킵니다 BOM으로 UTF-8 문자 세트를 감지합니다 그러나 그것은 중요하지 않으며 모든 것이 정확합니다 더 나은 작업을 위해 두 파일을 병렬로 배치 할 수도 있습니다

창문을 원하는대로 나누거나 해당 탭을 누르고 드래그하면됩니다 LiClipse 설치는 영어로만 이루어 지므로 맞춤법 검사기라는 점을 명심해야합니다 모든 단어를 잘못된 것으로 표시 사전에없는 영어 이외의 사전을 스페인어로 설치하겠습니다 인터페이스가 아닌 교정자 전용입니다 구성을 계속합니다

인쇄 선은 텍스트 편집기에서 숨길 수 있습니다 인쇄 여백 표시를 선택 취소합니다 다음으로 PyDev를 구성합니다 올바른 Python 실행 파일을 사용하십시오 이곳은 다른 통역사를 나타내는 곳입니다 각 가상 환경에 해당 우리가 만들고 시도하고 싶은 프로젝트 속성에서 그중 하나를 할당 할 것입니다

목록의 첫 번째가 기본값입니다 이제 새로운 장고 프로젝트를 만들어 기존 프로젝트에 연결하겠습니다 어떤 이유로 LiClipse는 BooksWeb 폴더에서 파일을 추출했습니다 이것은 우리가 원하는 것이 아니므로 다시 넣습니다 manage

py 파일은 프로젝트의 루트 폴더에 있어야합니다 이러한 오류는 postgres 서버가 중지되어 BD를 찾을 수 없기 때문에 발생합니다 자,이 브라우저 오류는 정적 파일을 찾을 수 없기 때문입니다 PyDev가 Django 테스트 서버를 실행하고 있기 때문입니다 정적 파일을 관리하고 있습니다

그게 우리가 원하는 것이 아니고, 화이트 노이즈가 그것들을 관리하기를 원합니다 위의 프로젝트 구성에서 변경된대로 프로덕션 모드에서와 같이 –nostatic 매개 변수를 추가하겠습니다 글쎄, 우리는 이미 더 나은 작업을 계속할 LiClipse를 준비했습니다 각 프로젝트마다 다른 실행 파일을 구성해야합니다 각 프로젝트의 manage

py 파일을 참조합니다 여기서는 다른 프로젝트가 닫혀 있기 때문에 Trastero 프로젝트 만 볼 수 있습니다 Test라는 새로운 장고 프로젝트를 만들겠습니다 보시다시피 PyDev는 콘솔에서 managepy startproject 명령을 사용할 때; 모든 기본 파일을 사용하여 프로젝트의 골격을 만들고 거의 갈 준비가되었습니다

PyDev는 Run에 대한 새로운 구성을 자동으로 생성합니다 테스트 프로젝트를 위해 지금부터 사용할 것입니다 이제 프로젝트 내에서 응용 프로그램을 만들고 카탈로그라고 부르겠습니다 콘솔에서 managepy startapp 명령을 실행하는 것과 같습니다

LiClipse에서 Django의 모든 것을 실제로 할 수 있습니다 BD의 마이그레이션과 프로젝트 테스트를 수행 할 수 있습니다 또한보고있는 것처럼 오류를 즉시 디버그 할 수 있습니다 약간의 조정과 준비가 될 것입니다 마지막으로 테스트 프로젝트의 복사본을 기본 프로젝트로 만들고 향후 프로젝트를 위해 저장하겠습니다

콘솔에서와 같이 여기에서 명령을 실행할 수 있습니다 예를 들어, collectstatic 명령을 작성하여 LiClipse에서 실행합니다 여기에서 매개 변수와 함께 모든 명령을 작성할 수 있습니다 TTY가 필요한 명령을 제외하고 createuperuser 명령과 같은 명령 콘솔입니다 LiClipse와의이 검토 후 Trastero 프로젝트로 돌아가서 디테일 뷰에서 약간의 오류가 발생했습니다

pk 매개 변수 캡처가 올바르게 수행하지 않기 때문입니다 정규식은 매우 강력합니다 학습하기 어려운 구문이 있지만 이를 통해 거의 모든 URL을 매우 정확하게 필터링 할 수 있습니다 그러나이 프로젝트에서는 복잡한 URL을 사용할 수 없습니다 re_paths를 경로로 바꾸겠습니다

더 간단하고 널리 사용되는 옵션이 있습니다 꺾쇠 괄호와 같이 이미 Django에 의해 생성되었습니다 정수 또는 숫자의 캡처 <입력 : pk> 관리자 권한이있는 사용자로 로그인해야합니다 기본 제공 LoginRequired 클래스로보기에 액세스합니다

앞서 만든 사용자와 함께 Django의 기본 관리 응용 프로그램에서 여기에서는 성공한 경우 애플리케이션을 리디렉션하기 위해 URL이 누락되었음을 알려줍니다 레코드를 삭제 한 후 우리는 이미 프로젝트가 제대로 작동하고 있다는 근거를 가지고 있습니다 다음은 일부 분야를 개선하는 것입니다 기사의 사진을 표시하기 위해 회전식 슬라이드 쇼를 추가하는 방법

먼저, 세션 제어를위한 로직을 추가하겠습니다 응용 프로그램의 보안 수준이 가장 낮습니다 로컬에서만 작동하도록되어 있지만 아마도 당신이 사용하는 장치는 그것은 다른 사람들과 공유되는 장치이므로 너무 많이 오지 않을 것입니다 먼저 사용자 계정에 대한 매핑을 추가합니다 그런 다음 설정 파일에서 LOGIN_REDIRECT 변수를 정의합니다

로그인 한 후 응용 프로그램이 홈 페이지로 리디렉션됩니다 템플릿 폴더 안에 이름 등록이있는 다른 폴더를 만듭니다 django가 인증 템플릿을 찾는 곳입니다 이 폴더 안에 템플릿을 만듭니다 여기에 표시된 것과 정확히 동일한 이름으로 우리는 또한 로그인 및 로그 아웃 링크를 추가 탐색 메뉴에서 템플릿 경로를 수정했습니다

비밀번호 재설정시이 오류는 Django는 도메인이나 호스트를 할당하지 않았기 때문에 우리에게 제공합니다 비밀번호 변경 링크가 포함 된 메일 발송 위치 호스팅 할 Gmail 계정을 만들겠습니다 Google API에 연결하려면 16 자리 애플리케이션 비밀번호가 필요합니다 이를 위해서는 두 단계로 인증을 통해 계정을 설정해야합니다 Google에서 생성 한이 애플리케이션 비밀번호를 설정에서 복사하여 테스트합니다

LOGIN_REDIRECT 및 LOGOUT_REDIRECT 변수를 다시 추가합니다 암호를 변경하면 암호를 가져 가면 오류가 발생하는 것 같습니다 이제 사진이 포함 된 모델의 필드를 수정하고 제대로 표시되도록 먼저 프로젝트 루트에 폴더를 만들고 managepy 파일은 어디에 있습니까? 여기서 django는 사용자가 업로드 한 파일 (이 경우 이미지)을 배치합니다 나는 그것을 반으로 불렀지 만 우리는 그것을 우리가 원하는 것으로 부를 수 있습니다

또한 정적 파일 폴더 내에 다른 미디어 폴더를 만들고 파비콘이나 로고와 같은 정적 이미지를 포함 할 수 있습니다 다음은 설정에 변수를 추가하는 것입니다 정적 미디어 파일이 아닌 동적 미디어 파일의 경우 그런 다음 urlspy 파일에서 다음 행을 추가합니다 미디어 파일의 URL이 개발 단계에만 할당되도록합니다 생산 단계에서 이러한 파일은 Gunicorn 서버에서 관리합니다 이 프로젝트는 로컬에서 작동하도록 설계되었지만 VPS에 업로드하고 온라인으로 응용 프로그램에 액세스 할 수 있습니다

양식에이 속성을 추가해야합니다 사용자가 파일을 업로드해야하는 위치 예, 우리는 응용 프로그램을 테스트 테스트 이미지가 이미 표시되어 있습니다 템플릿에서 객체 끝에 URL을 추가해야합니다 BD에서 모든 것이 잘 등록되었는지 확인합니다 그리고 이것으로 신청서가 완성됩니다

당신이 바꾸고 싶은 디자인은 당신의 것입니다 프로젝트의 다음 단계는이 장고 애플리케이션을 BD로 전송하는 것입니다 Android 또는 iOS 시스템의 경우 모바일에 적용되지만이 동영상에서는 더 이상 설명하지 않습니다 그러나 이것은 웹 개발자가해야 할 단계입니다 모바일 기술의 광범위한 사용을 고려할 때 일부 개발자조차도 먼저 모바일 응용 프로그램을 만든 다음 다른 장치를 만듭니다

이 시나리오에서 몇 가지 옵션이 있습니다 우리가 구현하고자하는 응용 프로그램의 유형에 따라 덜 일반적인 응용 프로그램 모바일에서 로컬로 작동하는 애플리케이션 즉, 인터넷 연결이 필요하지 않습니다 저장실 프로젝트처럼 다운로드하는 것 이상 로컬에서만 작동합니다 이 시나리오에서 내가 선호하는 솔루션은 Android 용 QPython을 설치하는 것입니다

이것은 실제로 네이티브 파이썬과 동일합니다 그리고 이전과 마찬가지로 가상 파이썬 환경에서 장고와 필요한 패키지를 설치하겠습니다 그런 다음 프로젝트를 업로드하고 runserver로 시작합니다 localhost를 사용하여 브라우저에서 액세스하십시오 이 환경에서는 더 가벼운 SQLite BD를 사용하는 것이 좋습니다

Trastero 프로젝트에는 많은 수의 사용자가 필요하지 않습니다 또는 수천 개의 레코드를 처리하십시오 다른 시나리오에서 가장 일반적인 응용 프로그램은 서버를 통해 인터넷에 연결되어 있습니다 그것은 그녀를 섬기고 있습니다 모바일 기기에 브라우저가 설치되어 있으면 Chrome이면 충분합니다

이 프로젝트는 부트 스트랩을 통한 반응 형 디자인입니다 또한 모든 화면 크기에 완벽하게 맞습니다 이 시나리오의 또 다른 대안은 프론트 엔드에 Flutter를 사용하는 것입니다 백엔드를위한 Django REST 프레임 워크 이런 식으로 우리의 응용 프로그램은 모바일 기술에 더 잘 통합 될 것입니다

안드로이드와 iOS 모두를위한 멀티 플랫폼 애플리케이션이기 때문입니다 Flutter는 Google 사용자 인터페이스 툴킷입니다 아래에서 전체 프로젝트 링크 옆에 링크를 남겨 두겠습니다 재활용을 시작하고 동시에 돈을 벌 수 있습니다 글쎄,이게 바로 여기에 작별 인사를하고 이 비디오가 여러분에게 도움이 되길 바랍니다

모두에게 인사합니다

Importing Libraries | Learn to Code with Python #19

여러분 안녕하세요,이 튜토리얼에 다시 오신 것을 환영합니다 그리고 지금 우리가 뭘 할 일은 파이썬 3의 import 함수를 살펴볼 것입니다

다른 모듈을 가져올 수 있기 때문에 모듈을 가져 오는 것은 매우 중요합니다 파이썬 프로그램을 우리 자신의 프로그램으로 만들어서 다른 것을 사용할 수 있습니다 특정 프로그램의 함수, 메소드 이제 우리는 기능을 다루지 않았습니다 그러나 기본적으로 함수는 무언가를 수행하는 모든 것입니다 그래서, 예를 들어, 인쇄는 함수이고 입력은 함수입니다

우리는 커버하고 나중에 우리 자신의 함수를 코딩하지만 지금은 우리가 그 함수를 어떻게 사용할 수 있는지 봅시다 파이썬 3이 제공하는 다른 라이브러리의 함수 그래서, 당신을 열어 유휴입니다 그리고 가져 오기 위해 기본적으로 실제 라이브러리와 같이 필요한 라이브러리 프로그램에는 일부 라이브러리가 필요합니다 예를 들어, OS 라이브러리, sys 라이브러리, 서브 프로세스 라이브러리, 네트워킹 용 소켓 라이브러리 등

그것들을 가져 오려면 여기에 import를 입력하면됩니다 그리고, 그 후, 공간과 라이브러리 자체의 이름 예를 들어 먼저 OS 라이브러리를 가져옵니다 이제 라이브러리는 항상 진행되고 있습니다 프로그램 시작 부분에서 맨 위쪽으로 가져 오면 필요한 모든 라이브러리를 찾은 다음 아래에서 자체 코드를 수행하십시오 지금 이 OS에서 실제로 얻을 수있는 실제 기능 중 일부를 보도록하겠습니다 도서관

예를 들어,이 특정 기능에서 액세스하려면 라이브러리의 경우 먼저 라이브러리 자체의 이름을 지정해야합니다 그래서 우리 OS 인 경우 OS를 입력하고 점을 입력 한 다음 기능 여기 보시면 바로 여기로 가겠습니다 기본적으로 파이썬 인터프리터는 모든 함수의 이름을 줄 것입니다 OS 라이브러리에 있습니다 따라서 실제로 기억할 필요는 없습니다 하지만 맞아 이제 우리가 찾고있는 것은 시스템 라이브러리입니다

시스템 기능을 용서해주세요 이 기능으로 우리가 할 수있는 것은 실제로, 예를 들어 파일 작성, 파일 삭제 및 작업 수행 또는 기본적으로 전송 시스템에 대한 모든 명령 예를 들어, 'cd'명령을 실행 해 봅시다 여기에 입력하면 실제로 입력하겠습니다 신경 쓰지 않기 위해 실제로는 할 수 없지만 다음과 같은 일을 할 수 있습니다 이 이 라이브러리를 서브 프로세스 라이브러리로 착각했습니다

잠깐만 요 바로 여기로 가면 새 폴더를 만들어서 테스트하고 osremove를 수행 한 다음 폴더 자체의 이름을 시도하십시오 그래서 만약 작은 따옴표 'test'사이를 지정하고 Enter 키를 누르십시오 시스템이 지정된 파일 테스트를 찾을 수 없습니다 예, 물론 이죠 실제 폴더의 실제 경로가 아니기 때문입니다

그래서 그냥 새 파일로 바로 이동하여 os를 가져온 다음 osremove를 사용하고 작은 따옴표 유형 'test'사이 이것을 바탕 화면에 저장하거나 테스트 디렉토리가있는 동일한 폴더 저장, 여기에 바로 저장하고 싶습니다 removepy를 저장하면 프로그램이 그냥 찾으십시오

우리의 removepy는 어디에 있습니까? 알았어 여기있어 우리가 그것을 실행하고 모듈을 실행하면 테스트를 위해 액세스가 거부됩니다

일부 액세스 권한을 얻는 이유가 거부되었습니다 신경 쓰지 마, 그냥 이렇게 해보세요 어떤 이유로 우리는 액세스 할 수 있습니다 거부되었지만 중요하지 않습니다 내가 방금 일어 났을 때 어떻게되는지 확인해 보자 시스템을 사용하고 예를 들어 사이에 dir을 사용하십시오 바로 여기에 나열 되나요? 예, 아마 아닐 것입니다

그것은 단지 그것을 실행할 것입니다 상관없이 출력을 확인합니다 하위 프로세스 라이브러리 중요한 것은 실제로 그것으로 디렉토리 다시 한 번 다시 저장하겠습니다 하지만 이 프로그램에서 우리는 새로운 것을 만들고 싶고 우리와 같은 일을하고 싶습니다 다른 디렉토리에 넣었습니다

따라서 os를 가져온 다음 파일을 다른 이름으로 저장하십시오 하자 실제 디렉토리를 만들어보십시오 그래서 우리는 ossystem을 사용할 것입니다 그래도 이것은 파일을 생성하는 방법이 아니며 'mkdir test'로 시도해 볼 수 있습니다

우리 app / data / local / python / python 37에있는 바로 여기에 저장하십시오 여기서 테스트는 실제로 저장되어야합니다 그냥 저장하겠습니다 바로 여기에 같은 디렉토리에 있지 않기 때문에 removepy라고하겠습니다

그렇게 부르면 명령 프롬프트에서 실행할 것입니다 그래서 cd AppData, cd Roaming, cd Programs, 프로그램, cd Local에있을 수 있습니다 cd 프로그램, cd Python 및 디렉토리를 Python37로 변경하십시오 만약 여기에 dir을 입력하면 removepy를 제거해야합니다

pythonexe를 입력하면 removepy를 입력하고 dir을 다시 한 번 입력하면 여기에서 볼 수 있듯이 테스트 디렉토리가 생성되었습니다 테스트 디렉토리가 있습니다 우리가 여기서 갈 수 있는지 확인합시다

예, 여기 있습니다 테스트 디렉토리가 생성되었습니다 물론 비어 있습니다 그래서 우리는 성공적으로 removepy 프로그램이있는 디렉토리

좋아, 그래서 우리 우리가 실제로 본 첫 번째 도서관 이제 이걸 닫겠습니다 지금 다른 도서관을 시험해 보자 랜덤이라는 라이브러리가 있습니다 무작위 가져 오기

이 도서관이 기본적으로 할 수있는 것은 난수, 난수 값 이 라이브러리를 우리가 전에 다루었던 루프 따라서 범위가 5에 해당하므로 주사위는 1에서 5로 가고, 우리는 randomrandint와 같이 인쇄하고 싶습니다 이것은 우리가 임의의 함수 라이브러리에서 사용하고 있음을 의미합니다

randint라고 불리는 기본적으로 임의의 정수를 선택합니다 예를 들어 1에서 100 사이의 숫자입니다 이렇게 지정할 수 있습니다 내가 방금 여기에 엔터를 누르면이 기능이 아닌이 기능을 볼 수 있습니다 for loop 바로 여기에 범위 내에있는 5 개의 난수가 인쇄됩니다

1에서 백까지 범위 5의 i 범위에 대한 것은 기본적으로 우리는 5 개의 숫자를 인쇄 할 것입니다이 인쇄 임의의 정수는 기본적으로 우리가 for 루프에 있기 때문에 5 번 수행하는 난수 그래서 그것은 우리가 사용할 수있는 또 다른 예이며 실제 라이브러리입니다 우리도 보자 하위 프로세스 라이브러리를 사용하여 명령 프롬프트 명령의 출력을 확인하십시오

따라서 하위 프로세스를 가져옵니다 물론, 이것에 익숙하지 않다면 내 말을 들으면서 실제로 혼란스러워 걱정하지 마세요 우리는이 모든 것을 아주 자세하게 다룰 것입니다 지금 난 너만 보여주고있어 다른 라이브러리를 가져 와서 사용하는 예 기능 하위 프로세스 라이브러리에는 check output이라는 함수가 있습니다

특정 명령의 실제 출력을 확인할 수 있습니다 PC에서 실행됩니다 예를 들어 명령 프롬프트로 이동하면 명령 프롬프트와 dir을 입력하면 실제로 모든 파일이 나열되어 있음을 알 수 있습니다 현재 디렉토리, 여기이 디렉토리가 있습니다 이것들은 현재 디렉토리에있는 모든 파일입니다

우리가하고 싶은 것은 파이썬에서 같은 결과를 얻고 싶습니다 그러기 위해서 우리는 여기에 입력 할 수 있습니다 출력은 하위 프로세스와 같습니다 하위 프로세스에서 사용할 함수 인 _output 라이브러리, 열기 및 닫기 괄호, 그리고 여기에 작은 따옴표 사이 실행하려는 명령을 지정해야합니다 우리는 Windows에서 idr을 실행하려고합니다

Linux를 사용하는 경우 LS는 Linux의 현재 디렉토리에있는 모든 파일을 나열하므로 LS를 실행하십시오 이제 쉘을 true로 지정해야합니다 기본적으로 그렇습니다 만약 당신은 여기에 입력하면 이것을 실행하고 출력을 인쇄하면 출력됩니다 오히려 다른 형식으로 인쇄하지만 여전히 현재를 인쇄합니다

이 프로그램의 디렉토리 이제 다른 것을 할 수도 있습니다 예를 들어 다른 명령을 실행할 수 있습니다 그러니 그냥 cd 명령을 사용할 수 있습니다 이제 출력은 subprocess

check_output cd와 cd는 기본적으로 Windows는 현재 작업중인 디렉토리를 인쇄합니다 Linux에서 Linux를 사용하는 경우 여기에 pwd를 입력하십시오 인쇄 작업 디렉토리 다시 한번, shell은 true와 같으며, 우리는 우리의 프로그램이 어느 디렉토리에 있는지보기 위해 출력 우리는 볼 수있다 우리는 현재 데스크탑 디렉토리에 있습니다

그리고 지금 서브 프로세스 예를 들어, 다른 것을 실행할 수도 있습니다 그래서 우리는 실제로 할 수 있습니다 이 실제 프로그램으로 파일을 작성하십시오 그러니 그냥 하위 프로세스를 확인하십시오 우리는 그냥 Popen 할 수 있다고 생각합니다 아니면 우리 실제로 이전과 같이 실제 액세스가 거부 될 수 있지만 시도는 중요하지 않습니다

이 창에서 Shell은 true입니다 여기서이 기능에 대해 지정할 수있는 모든 것을 볼 수 있습니다 지금 당장 지정하지 않을 것입니다 지금은 실제로 신경 쓰지 않습니다 그래서 여기를 클릭하여 들어가서 테스트를 성공적으로 만들었습니다

예배 규칙서 나는 그것이 여기에 없었는지, 아마도 여기에 없었는지 확실하지 않지만 중요하지 않습니다 데스크탑에서 테스트 파일을 성공적으로 만들었습니다 지금 이것은 실제로 파일을 만드는 적절한 방법이 아닙니다 나중에 보여 드리겠습니다

파일 섹션에 도달하면 생성, 조작, 쓰기 및 읽기 방법 파일에서 그러나 지금은이 튜토리얼에 관한 것입니다 나는 당신을 희망합니다 다른 라이브러리 가져 오기에 대한이 작은 데모를 즐겼으며 다음 튜토리얼에서 우리는 코딩을 계속할 것입니다 나는 당신이 그것을 즐기시기 바랍니다 다음 강의에서 hope기를 바랍니다 안녕!

Break Statement | Learn to Code with Python #16

여러분 안녕하세요,이 튜토리얼에 다시 오신 것을 환영합니다 그리고 지금 우리는 while true 루프에 대한 다른 접근 방식을 살펴보십시오

무한 루프 우리는 그것들을 어떻게 다룰 수 있는지, 어떻게 할 수 있는지 배울 것입니다 그들은 무한하지만 실제로 그들을 닫고 간단한 명령 우리가하려는 것은 동일한 프로그램을 이전 비디오 그것이 내가 보여주고 싶지 않기 때문에 내가 너무 혼란 한 이유입니다 실제로 break 문에 도달 할 때까지 올바르게 코딩하는 방법 바로 여기에 그리고 지금 우리는 암호 검사기를 실제 동안 진정한 루프 이 작업은 실제로 사용자에게 메시지를 표시합니다

올바른 비밀번호를 지정하지 않는 한 비밀번호를 입력하십시오 프로그램 우선, 간단한 프로그램을 작성해 봅시다 우리는 새로운 것을 열고 싶다 파일을 열려면 여기를여십시오 바로 저장하겠습니다

데스크탑은 4thprogrampy라고 부를 수 있습니다 좋아, 우리는 그것을 저장했다 이제 실제로 어떻게 할 수 있는지 보자 이제 이것은 조금 될 것입니다 이전 비디오 나 이전에 수행했던 이전 프로그램보다 우리는 우리가하지 않은 것을 할 것이기 때문에 초보자를 위해 if-else 문을 while true 루프에 포함시킬 것입니다

그래서 당신은 볼 것입니다, 그것은 정말로 그렇게 어렵지는 않지만 오히려 쉽습니다 당신이 그것을 가능한 한 잘 이해하도록 노력하십시오 우선, 우리는 실제로 평소와 동일하게 암호를 설정하여 시작하십시오 우리가 원하는 것 우리는 그것을 같게 설정할 수 있습니다 지금 당장 바꾸겠습니다

rainbow이 비밀번호입니다 이제 실제로 여기에 자본 R을 추가합시다 스릴 만 그리고 바로 여기서 우리는 실제로 여기에 실제 비밀번호를 입력하라는 메시지가 표시됩니다 while true 루프 자체에 비밀번호를 입력하십시오 이전 비디오에서 우리는 실제로 사용자에게 입력하라는 메시지를 표시했습니다 while 루프 외부의 비밀번호이며 여기서 바로 입력하고 싶습니다 true를 입력 한 다음 사용자에게 비밀번호를 묻습니다

그래서 진실한 동안 : inputted_password는 같습니다 확인 만하겠습니다 입력과 동일하고 사용자가 비밀번호를 입력하도록 지정하려고합니다 괜찮아, 따라서 while true 루프에서 사용자에게 비밀번호를 입력하라는 메시지를 표시합니다 지금 당신이 이 프로그램을 지금 바로 실행했습니다

기본적으로 프롬프트가 표시됩니다 사용자는 영원히 암호를 입력합니다 그러나 우리는 그것을 원하지 않습니다 우리는 사용자를 원한다 실제로 액세스 권한이 부여 된 문자열을 한 번 인쇄합니다 실제로 비밀번호가 정확합니다

우리는 if-else로 그렇게 할 수 있습니다 성명서 만약 inputted_password라면 inputted_password는 암호에 ==이므로 우리는 이미 잘 알고 있습니다 inputted_password == password 인 경우 실제로 여기에서 설명합니다 루프에서 벗어나고 싶습니다 기본적으로 우리가 여기서하는 일은 우리는 루프에서 벗어나고 있습니다

다른 경우에는 우리는 깨지 않을 것입니다 루프에서 그냥 여기로 돌아가서 여부를 확인합니다 입력 된 비밀번호는 비밀번호와 같습니다 그렇지 않으면 올바르게 진행됩니다 여기, 그리고 while true 루프의 시작 부분으로 돌아가서 비밀번호를 다시 한 번 입력하십시오 그리고 우리가 그것을 얻는다면 우리는 바로 인쇄하고 싶습니다 여기에 'Password Correct!'가 표시되고 다음 줄에 'Access Granted !!!'가 표시됩니다

다시 한 번 살펴 보도록하겠습니다 다소 짧은 프로그램입니다 우리는 암호 변수를 사용하여 암호 자체를 보유한 다음 while true 루프를 입력합니다 무한 루프입니다 그런 다음 사용자에게 실제 비밀번호를 입력하라는 메시지를 표시합니다

이 두 비밀번호를 비교하여 입력 한 비밀번호가 사용자는 프로그램 자체에 지정된 비밀번호와 같습니다 그렇다면, 우리는 break라는 기능을 수행 할 것입니다 지금, 내가 전에 말했듯이, 휴식 함수는 단순히이 루프에서 벗어나지 만 프로그램을 유발하지는 않습니다 프로그램을 닫는 것과 혼동하지 마십시오 종료됩니다

while true 루프 그리고 계속해서 다음 단계는 암호를 올바르게 인쇄하고 액세스 권한을 부여합니다 우리가 실제로 이것을 여기에서 인쇄하는 이유는이 부분 때문입니다 비밀번호가 올바른 경우에만 여기에 액세스 할 수 있습니다 비밀번호가 수정하지 않으면 영원히 실행됩니다

이것이 어떻게 작동하는지 봅시다 내가 그냥 가면 바로 여기 또는 먼저 저장하겠습니다 저장 한 다음 실행합니다 암호를 입력하라는 메시지가 나타납니다 여기에 비밀번호를 입력하면 나에게 묻습니다

다시 123, 비밀번호 123, helloworld, 아무것도 실제로 작동하지 않습니다 소문자 무지개조차도 작동하지 않습니다 무지개가 작동하지 않습니다 그러나 일단 우리가 실제로 레인보우, 암호가 정확하고 액세스 권한이 부여되었습니다! 그래서 우리는 실제로 암호 검사기를 잠시 동안 코딩 할 수있었습니다

if 문이있는 진정한 루프 그래서 이것은 더 적절한 방법이 될 것입니다 실제로 이전 비디오보다 암호 검사기를 코딩합니다 우리가 무엇인지 다음 비디오에서 할 것입니다 파이썬 3에서 함수를 계속 사용하면 루프에 도움이됩니다 그들 자신

자, 그것은이 튜토리얼에 관한 것입니다 나는 당신이 그것을 즐기시기 바랍니다 다음에 봐요 안녕!

Python Workshop in Münster – Interview mit CTO Andre Cimander

안녕하세요 제 이름은 롤랜드입니다 Never Code에 대한 impactrDB와 함께 있습니다

혼자 이벤트 및 이제 안드레 CTO 및 소셜 미디어 APP와 함께 앉아 있습니다 어떻게 당신의 기술 스택 때문에? 우리는 이제 10 자리입니다 가는 길에 10 억의 범위에 있고 그것은 항상 더 많다 데이터는 다루기 어려웠다 지금까지 우리는 하나 기술 스택으로 설정된 Elasticsearch 클러스터 빅 데이터 주제의 경우 불행히도 우리는 할 수있는 것과 할 수있는 것의 한계에 도달했습니다 클라우드로 이동하고 곧 DB 클러스터를 사용합니다 번짐과 흥분, 재미와 놀이를 말합니다

여기에서 코드를 작성하면 코드가 어떻게 생깁니 까? 기능 분기를 가질 수있는 표준 Git Way를 따르십시오 기능 분기를 개발했습니다 풀 요청이 완료되면 그때 우선 자동 테스트를 통과 한 경우 자동 테스트를 실행하십시오 어쨌든 개발자를위한 피드백이 포함 된 코드 검토입니다 그후 그렇다면 희망적으로 필요하지 않은 모든 수정 사항이 있다면 모든 것이 마스터에서 보석 화되고 출시일을 일주일에 두 번 생산으로 푸시 화요일과 목요일

코드 검토 및 노하우 전송 기능 당신을 위해 위치를 위해? 이것은 우리와 함께 매우 높습니다 우선 순위 노하우 이전이 전체 팀임을 확신합니다 개발하는 데 도움이됩니다 모든 팀원은 다른 팀원의 지식을 활용하고 개인적으로 성장합니다 스트레이트 코드 리뷰는 노련한 지식을위한 훌륭한 도구입니다 이민자에게도 기회를 제공 할뿐만 아니라 이민자에게도 기회를 낡은 새로운 트릭을 가르치기 위해 좋은 인터뷰에 감사드립니다

한번보세요 페이지에 직업 설명과 우리의 이벤트에 온다