본문 바로가기

Project/교내 프로젝트

[python week 일지] #4. 새로운 것 공부 + 웹 컴포넌트 작성

반응형

파이프라인을 이해한 후 몇 가지를 공부했다.

우선 아나콘다.

파이썬 가상환경이라고 한다. 가상환경에 대한 글 반나절 쓰다가 날라갔다 씨... 가상환경이 뭔지 대충 이해하자면 프로젝트 별로 사용하는 파이썬 패키지의 버전이 다르기 때문에 이를 일일히 관리하기 어려워서, 이 버전 관리를 용이하게 해주는 폴더인 것 같다. 가상환경 == 폴더 이렇게 이해하면 되겠지?!? 이걸 이용하기 위해(아마..?) 동방 컴을 원격조정해서 접속하게 되었다. (사실 왜 동방 컴으로 하는지는 모르겠다....)
해서 cmd로 "conda activate clip"이라고 명령하면 그 뒤에 입력하는 명령어 앞에 (clip)이게 붙는다. 그리고 python main.py라고 입력하면 사진이 임의로 불러와지고 그 사진의 클래스 예측 값을 출력한다. 신기하다... 이게 어떻게 돌아가는 건지 모르겠다. clip이 어떻게 이뤄진 건지 손에 안 잡힌다.ㅠ

그리고 플라스크.

플라스크는 구름 ide에서 이용 가능한 것 같다. 어떤 강의는 vsc 이용하던데 그건 컴 사양마다 다른 건가? 잘 모르겠는데 일단 구름 ide를 이용하기로 했다. 처음에 만든 페이지가 무한 로딩 되다가 324 err_empty_response 이것만 계속 떴다. 더 쾌적한 컴으로 옮겨서도 해보고 포트 옮겨서도 해봐도 안 되길래 몇 시간 쌩쇼하고 포기했었다. 그러다가 다시 또 구글링하고 코드를 고쳐가며 어찌어찌 해보니까 또 되더라... 손 댄 것은 마지막 줄을

application.run(host='0.0.0.0', port=8000, debug=True)

이렇게 바꾼 것 빼고는 없다. 이게 왜? 했지만 됐다. ㅋㅋㅋㅋㅋ 쉼표하고 뛰어야 하고 한 줄이 아니라 두 줄을 띄어야 하는 등 별 이상한 문법이 다 있었다.
그 뒤로 CLIP을 불러와야 했는데 CLIP을 불러오기 위한 문법을 알아내기 위해 어떻게 검색해야 하는지 알 수 없었다. 플라스크에 AI 넣는 법, 플라스크 콜랩 코드 넣는 법 이런 식으로 검색 해봤는데 안 나왔다. 내가 뭘 잘못 이해하고 검색하고 있는지.... 여러 방향으로 검색하다가 https://docs.microsoft.com/ko-kr/learn/modules/python-flask-build-ai-web-app/4-translation 이 글도 플라스크에 번역기 서비스 집어넣는 거길래 이거 보면서 좀 해봤는데 여기는 VSC를 사용해서 그 뒤로 따라하질 못했다. 빙글빙글 뭐가 뭔지 모르겠는. 우어엉...
쨌든 플라스크의 결을 좀 느끼는 것으로 만족했다. 우리가 원하는 웹을 만들기 위해서는 flask에서 clip을 request해서 사용해야 하는데 clip이 너무 추상적이게 느껴진다. 이걸 우짜징. 아마 CLIP이 python 파일인 듯하다.
이 부분은 선배가 좀 봐주시기로 했다.

그 외

그 외에 cmd 사용에 대해 알아봐야 할 것 같았다. 파이썬 idle의 인터프리터 환경을 처음 사용해봤다. 신기하더라. 여러가지 기본적으로 제공하는 명령어도 있는 반면, 새로운 변수에 할당도 가능했다. 인터프리터에서 그런 게 가능한 것이 신기했다. 아직 인터프리터 사용을 왜 하는지도 모르겠고 그렇다.

인터프리터

요약 프로그램을 해석하는 방법 중 하나로, 사람이 이해할 수 있는 고급언어로 작성된 코드를 한 단계씩 해석하여 실행시키는 방법을 말한다.

사람이 이해할 수 있는 고급언어로 작성된 프로그램은 기계가 알아들을 수 있는 언어로 해석되어야만 한다. 이때 크게 두 가지 방법을 통해 기계언어로 해석될 수 있는데, 일반적인 방법으로는 컴파일 과정을 거쳐 실행하는 것이 있으며 다른 방법으로는 고급 언어코드를 한 줄 한 줄, 한 단계씩 해석하여 실행하는 것이 있다. 이때 이러한 일들을 처리하는 것이 인터프리터이다. 이것은 고급 언어를 중간 형태로 먼저 번역을 한 다음에 실행하는 방법으로 진행되는데, 컴파일러를 사용하여 실행하는 것보다는 느리게 실행된다.
컴파일러와 인터프리터는 대부분의 고급언어에 적용하여 실행이 가능하지만 LISP과 같은 몇 개의 언어들은 인터프리터에서만 실행되도록 설계되어 있다. 특히 인터프리터는 프로그래밍 언어를 새롭게 설계하였을 때 설계한 언어의 함수적인 정확성을 입증할 때에 인터프리터를 구현하는 방법 등을 사용하여 입증하기도한다.

네이버 땡큥.

또 모듈과 패키지라는 것도 이번에 처음알게 되었다. 모듈은 아마 함수의 개념과 비슷한 것 같다. import해서 쓰이는 파이썬 파일인데, 자주 쓰는 재사용 가능한 툴인 것 같다. 패키지는 모듈의 묶음이라고 한다. 덩치가 큰 프로그램을 개발하는 과정에서 다양한 모듈이 만들어지는데, 이 모듈을 그냥 한 개에 폴더(디렉토리)에 넣어두면 헷갈리잖아? 그래서 종류별/용도별로 묶어 별도의 폴더(디렉토리)에 보관한다고 한다. 이 때 모듈들을 분류해서 가지고 있는 각 디렉토리를 패키지라고 한다.

처음엔 디렉토리는 또 뭔가 어질어질했는데 그냥 폴더인 것 같다. 어려운 말 넘 많군.... 파일의 상하 관계?에 따라 단어를 구별해서 쓰는 듯.
암튼 그렇다. 생소한 것 투성이라 갈피를 못 잡는 부분도 있는 것 같다. 그러는 게 싫어서 계속해서 알아보고 있긴 하지만.

손 놓고 있기는 그래서 웹 컴포넌트를 작성해보았다.

웹 컴포넌트

1. Index page: 웹 사이트 접속 시 뜨는 page

2-1. correct: 정답일 시 띄울 페이지

2-2. Wrong: 오답일 시 띄울 페이지


일단 이렇다. 만들면서 달라질 수 있지만 머리를 정리하기 위해 만들어 봤다. 앞으로 활동이 원활히 이루어지길 바란다.
아즈아

반응형