목록대학교 (257)
차근차근
0. 제목 백준 2667 단지번호붙이기 BOJ 2667 단지번호붙이기 C++ 2667 단지번호붙이기 1. 문제 https://www.acmicpc.net/problem/2667 2. 풀이 미로찾기와 비슷한 문제이다. 먼저 dx, dy는 좌,우,상,하 순으로 움직일 수 있도록 좌표설정을 한 배열이다. 이 문제에서 주의할 점이 입력을 받을 때 문자열로 받아야 한다는 것이다. 문자열로 받은 후 한글자마다 숫자로 만들어주었다. dfs함수를 보면 탐색을 할 때마다 cnt를 1씩 증가시켜준다. 그 후 visited의 원소를 true로 바꿔주고 반복문을 실시하게 된다. 이 반복문은 좌,우,상,하로 탐색을 실시하게 해주며 만약 좌표가 0보다 작아지거나 N보다 같거나 커지면 즉, 범위를 벗어나게 되면 건너뛰게 된다. 범..
0. 제목 백준 9466 텀 프로젝트 BOJ 9466 텀 프로젝트 C++ 9466 텀 프로젝트 1. 문제 https://www.acmicpc.net/problem/9466 2. 풀이 문제에서 프로젝트를 함께 하고 싶은 학생을 단 한 명만 선택할 수 있다고 하였다. 그렇기 때문에 vector를 이용할 필요가 없고 connect라는 배열을 선언해서 해결이 가능하다. connect[2] = 3; 의 의미는 2번 학생이 3번 학생을 가리키고 있다는 것이다. done은 이미 방문하였고 더 이상 볼 필요가 없는 점들을 표시하는 배열이다. visited는 방문 여부를 체크하는 배열이다. 먼저 여기서 dfs 함수는 사이클을 체크하는 함수로 쓰인다. 이 함수에 대해 설명해보면 다음과 같다. 처음에 방문하므로 visite..
0. 주소 문자열과 요청 파라미터 웹 사이트에 접속하기 위한 사이트 주소 정보는 노드에서 URL 객체로 만들 수 있다. 노드는 주소 문자열을 받으면 어디까지가 사이트 주소인지, 어떤 내용이 요청 파라미터인지 구별하도록 url 모듈이 있다. https://www.google.co.kr/?abcd=abc 라는 주소 문자열이 있다고 가정해보자. 노드는 URL객체로 만든다. protocol: 'https' host: 'www.google.co.kr' query: 'abcd=abc' 1. 주소 문자열을 URL 객체로 변환하기 parse() : 주소 문자열을 파싱하여 URL 객체를 만들어 준다. format() : URL 객체를 주소 문자열로 변환한다. url 모듈을 사용하기 위해 require() 메소드를 호출 ..
0. 노드란? 노드를 만든 이유는 그 당시 웹 서버에 파일을 업로드 할 때, 업로드가 완료되기 전까지 웹 서버에서 데이터를 조회한다던가 하는 등의 다른 작업을 할 수 없었다. 이 문제를 해결하기 위해 만든 새로운 서버 개발 도구가 노드이다. 웹 브라우저를 통해 내 PC에 있는 문서 파일 하나를 업로드 하고 싶다면 먼저 웹 서버에 업로드를 요청해야 한다. 이때 웹 서버에는 파일 업로드 기능을 담당하는 핸들러(Handler)하나를 만들어 둔다. 비동기 입출력 방식을 적용하였다. 프로그램에서 해당 파일의 내용을 처리할 수 있는 시점이 되면 콜백 함수가 호출된다. 자바스크립트에서는 변수에 함수를 할당할 수 있다. 따라서 변수에 할당된 함수를 다른 함수의 파라미터로 전달할 수 있다. 이렇게 파라미터로 전달된 함..
0. 서버 동작 방식 프로토콜이란 데이터를 서로 어떤 형태로 주고받을 것인지를 정한 것으로, 간단한 데이터의 형태이다. 웹브라우저에서 HTTP로 요청한 데이터를 받은 웹 서버는 필요한 작업을 수행한 후 HTTP로 응답을 보낸다. 웹 브라우저에서 볼 수 있는 웹 문서는 보통 HTML, CSS, JS를 이용해 만든 것이다. 스마트폰과 같은 모바일 단말에서는 웹 문서를 웹 서버가 아닌 단말 내부에 저장해 두었다가 화면에 띄운 후 웹 서버로 필요한 데이터만 요청하는 방식을 사용하기도 한다. 이때 에이잭스(Ajax)방식으로 데이터만 받아오는 경우가 많다. 이렇게 하면 매번 웹 문서를 가져오지 않고 필요한 데이터만 가져온 후 화면을 부분적으로 갱신할 수 있기 때문에 화면 처리 속도가 빨라지는 장점이 생긴다. 에이잭..
0. Cookie, Session 울랄라스파라는 곳이 있다. 울랄라스파는 회원등록을 하고 입장해서 내부 시설들을 맘껏 이용한 뒤 나올 때 한꺼번에 계산하는 방식이다. 우리가 브라우저로 어느 웹사이트를 이용하는 과정을 위 스파에 비유해 설명해보겠다. 이곳에서는 스파의 쿠폰북이 아닌 '쿠키북'이라는 수첩같은 것을 들고다니면서 이용하는 시설마다 이걸 보여주게 되어 있다. 이 '쿠키북'에는 시설 측에서, 혹은 내가 직접 뭔가 기록할 수도 있고 수정하고나 찢어서 버릴 수도 있다. 이 '쿠키북'의 핵심은 내가 들고다닌다는 것. 그리고 시설을 이용할 때마다 보여준다는 것이다. 쿠키는 사이트를 방문하고 이용할 때 브라우저에 저장되는 내용들이다. 브라우저는 내 컴퓨터에 있는것이므로 내가 갖고 있는 정보이다. 그런데 이 ..
0. Flask Flask는 프레임워크로 "마이크로프레임워크"라고도 한다. 플라스크는 기본적인 기능부터 시작해서 확장 가능하도록 설계됐다. virtual environment를 생성하고 flask라는 폴더를 홈디렉토리에 만들었다. pip install flask로 flask를 설치하고 python > import flask 하여 문제없는지 확인한다. 1. 초기화 모든 플라스크 애플리케이션은 애플리케이션 인스턴스를 생성해야 한다. 웹 서버는 클라이언트로부터 수신한 모든 request를 이 오브젝트에서 처리하는데 이때 웹 서버 게이트웨이 인터페이스(WSGI)라는 프로토콜을 사용한다. 애플리케이션 인스턴스는 Flask 클래스의 오브젝트이며 다음과 같이 생성된다. Flask 클래스 생성자에 필요한 한 가지 인수..
0. Web Server 동작원리 Web browser가 Web Server에게 정보를 요청한다. 어떤 요청은 Web Server가 직접 처리할 수 없다. 예를 들어 .py로 끝나는 것은 Web Server가 처리할 수 없다. 그래서 Web Server는 Python에게 CGI기술을 이용해서 위임한다. Python은 그 코드를 웹페이지로 바꿔준다. Python이 File을 읽고 다시 가져와서 Web Server로 보내준다. Web Server는 다시 Web browser로 보내준다. 1. 환경 구축 bitnami 설치 apache2 > conf > httpd.conf 에서 #LoadModule cgid_module modules/mod_cgid.so 찾은 후 주석으로 만들어주는 #을 지운다. 확장자가 ...
0. 무엇을 언제 써야할까? 파이썬의 양대 웹 프레임워크 두개 중에 고민하고 있다면 Flask를 쓰면된다.(초보자, 학습목적) 서비스를 제공하고 싶다면 django쓰면 된다.(서비스) Flask -> Micro Web Framework : 정말 필요한것만 제공해준다. pip install 을 통하여 추가적으로 설치해주는 것이다. Django -> 장고를 설치하게 되면 모든 것이 딸려온다. 보통 웹서비스를 만드는데 있어서 90~95퍼센트, 대부분의 경우는 모두 설치되어 있다.
0. 차이점 무엇을 빌드하느냐에 따라 다르다. 우선 CRUD(Create Read Update Delete)를 알아야 한다. 예를 들면, 인스타그램은 CRUD이다. 장고는 CRUD를 위한 최선의 옵션이다. 블로그, 인스타그램, 유튜브같은 것에 최적이다. 이와 같은 경우에는 파이썬 + 장고 조합을 선택할 것이다. 필요한 것을 다 갖추었다. 유저, 인증, 뷰, 템플릿 등등 최적화 되어 있다. 그러나 그런 경우가 아닌, 우버와 같이 CRUD외에 리얼타임이 필요하다거나 API를 사용해야하는데 그게 자바스크립트 베이스라던가 그런경우에는 nodeJS를 사용하면 좋다. 넷플릭스는 nodejs를 자주 사용한다. CURD이외에도 리얼타임을 자주 하기 때문이다. 결론을 말하면, CRUD를 활용한다? 파이썬 + 장고 조합을..