[Google Cloud Platform] GCP Cloud SQL 구축, 외부 접속
·
개발 | 프로젝트
오늘은 PBL 프로젝트에서 사용할 GCP 서버와 Cloud SQL로 데이터베이스를 구축하였다.Cloud SQL은 Google Cloud에서 제공하는 완전 관리형 SQL 데이터베이스 서비스이다. 사용할 데이터 베이스 엔진을 선택하고, 인스턴스 정보를 입력하면 DB 인스턴스가 생성된다. - 참고https://spacek82.tistory.com/66 인스턴스 만들기 -> 인스턴스 정보 입력 -> SQL 관련 정보 입력 (입력정보 중 "구성 옵션 표시"를 선택하면 SQL에 대한 스펙, 백업등에 대한 설정값을 입력할 수 있음" data-og-host="spacek82.tistory.com" data-og-source-url="https://spacek82.tistory.com/66" data-og-url=..
[Django] 장고의 MVT 패턴 (Model-View-Template)
·
개발 | 프로젝트/Python
장고는 기본적으로 MVT 패턴에 따라 애플리케이션을 개발하도록 유도합니다. MVT 패턴 데이터(Model), 사용자 인터페이스(View), 데이터를 처리하는 로직(Controller)을 구분해서 한 요소가 다른 요소들에 영향을 주지 않도록 설계하는 방식을 의미합니다.  이런 방식으로 개발을 진행하면 UI 디자이너는 데이터 관리나 애플리케이션 로직에 신경 쓰지 않고도 화면 UI를 설계할 수 있고 로직이나 데이터를 설계하는 개발자도 화면 디자인은 디자이너에게 맡기고 자신의 설계 및 개발 업무에만 집중할 수 있습니다.  장고 프레임워크에서는 View를 Template, Controller를 View라고 표현하여 MVT 패턴이라고 합니다.각각의 역할은 다음과 같습니다.Model -  데이터베이스에 저장되는 데이..
FastAPI로 RESTful API 구현하기
·
개발 | 프로젝트/API
이번에는 파이썬 프레임워크인 FastAPI로 RESTfulAPI를 구현해 보려고 합니다. FastAPI에 대한 설명과 설치 방법은 이전 글을 참고하시면 됩니다. Fast API란 / Fast API 설치Fast API란?파이썬 3.6부터 제공되는 트렌디하고 높은 성능을 가진 파이썬 프레임워크이다.기존에 대중적으로 사용되고 있는 Django, Flask와 더불어 성능적으로 우세함을 보장하는 FastAPI는 이름에 걸seulow-down.tistory.com  GET 기능 (전체 조회)/posts/ 엔드포인트를 추가합니다. GET 요청을 처리하며, 등록된 모든 블로그 포스트를 조회할 수 있습니다.get_all_posts 함수는 posts 딕셔너리에 저장된 모든 포스트를 리스트 형태로 반환합니다.  이렇게 하..
Fast API란 / Fast API 설치
·
개발 | 프로젝트/API
Fast API란?파이썬 3.6부터 제공되는 트렌디하고 높은 성능을 가진 파이썬 프레임워크이다.기존에 대중적으로 사용되고 있는 Django, Flask와 더불어 성능적으로 우세함을 보장하는 FastAPI는 이름에 걸맞게 빠른 속도를 자랑한다. 장고나 플라스크로 웹 서비스를 만들었다면 이에 대응하는 안드로이드, 아이폰 앱을 위한 API 개발을 따로 해야 하지만 FastAPI는 한번 만든 API를 여러 클라이언트에서 변경없이 사용할 수 있다는 장점이 있다.  Fast API 설치우선 FastAPI를 설치하기 위해선 3.6 이상의 파이썬이 설치되어야 한다.프로젝트를 진행할 폴더를 생성하고, 가상환경을 만들어준다.python -m venv [가상환경 이름]  가상환경 활성화하기call [가상환경 이름]/Scri..
[웹크롤링] 네이버지도 크롤링 (+ 유의점)
·
개발 | 프로젝트
프로젝트 중 네이버 지도 정보가 필요하여 크롤링하였다. 코드는 아래를 참고하였다. https://velog.io/@kimdy0915/Selenium%EC%9C%BC%EB%A1%9C-%EB%84%A4%EC%9D%B4%EB%B2%84-%EC%A7%80%EB%8F%84-%ED%81%AC%EB%A1%A4%EB%A7%81%ED%95%98%EA%B8%B0 하지만 아래와 같이 짝수번째 값만 에러가 발생하였고, 상호명은 출력되지만 주소만 출력이 되지않아서 addr을 따로 출력해보니 짝수번째만 리스트 값이 비어있었다. 네이버 지도에서 다시 도로명 주소를 확인했더니 홀수, 짝수별로 클래스명이 달랐다 .. 확인을 안 하고 짝수 클래스명으로 접근해서 에러가 났던 것이었다. 네이버 지도 크롤링 전체 코드추가적으로 위도, ..
[웹크롤링] 구글맵 크롤링하기 (Selenium)
·
개발 | 프로젝트
구글맵의 데이터를 크롤링하기 위해 필요한 라이브러리인 selenium과 BeautifulSoup을 설치합니다.conda install seleniumconda install BeautifulSoup chrome driver 설치 아래의 웹에서 크롬 버전에 맞는 크롬 드라이버를 설치합니다.https://sites.google.com/chromium.org/driver/ ChromeDriver - WebDriver for ChromeWebDriver is an open source tool for automated testing of webapps across many browsers. It provides capabilities for navigating to web pages, user input, J..
[android] 레이아웃 (LinearLayout / FrameLayout / RelativeLayout)
·
개발 | 프로젝트/Android
LinearLayout - 수평 또는 수직의 방향성을 가지고 있는 레이아웃 (객체를 만들면 겹치지 않고 수평 또는 수직으로 나열됨)- 은 방향성을 가지고 있기 때문에 속성을 항상 선언해주어야 한다 (horizontal, vertical) ​(width / height) 속성1) match_parent나를 포장하고 있는 부모(parent)의 너비에 꽉 채워서 작성하여 보여준다= 보여지는 화면 길이에 맞춰서 보여준다​2) wrap_content부모와 관계없이 text 속성의 작성한 내용만큼 보여준다= 객체의 이름의 길이 만큼 보여진다. FrameLayout- 수평/수직으로 정하는 방향성이 없다 ( 객체를 만들면 나열되지 않고 왼쪽 위에서 모두 겹쳐진다) (layout_gravity)객체의 위치를 지정하여 ..
[웹크롤링] 네이버 블로그 크롤링하는 법, 페이지 구분하는 법
·
개발 | 프로젝트
페이지가 나눠져 있는 경우가 아닌, 스크롤을 내리면 끝없이 페이지가 나오는 사이트에 대한 크롤링은 어떻게 할까? 네이버 블로그의 경우 페이지로 구분되어 있지 않고 스크롤을 내리면 계속해서 추가적인 정보가 뜬다. 이때 F12를 눌러 개발자 도구로 들어가서 네트워크 탭을 클릭하여 켠 상태에서 스크롤을 내리면 페이지가 업데이트되는 시점에 네트워크 탭도 같이 변경된다. 검색 후 스크롤을 내리지 않은 상태에서 현재 페이지에 해당하는 정보 값을 검색한다. 예시로 크롬확장프로그램을 검색하였다. Headers탭에 있는 Request URL이 해당 블로그의 주소이다. 이것이 1페이지에 해당하는 주소이고, 스크롤을 하여 새롭게 나온 페이지의 정보 값을 검색하여 나온 주소를 통해 2, 3페이지도 얻을 수 있다. 여..