목록백 (43)
SOCO
![](http://i1.daumcdn.net/thumb/C150x150.fwebp.q85/?fname=https://blog.kakaocdn.net/dn/sazJ5/btrdo8dGdel/qrPUwDOwt8WorRuo8okj61/img.png)
가상환경, 가상머신, 도커에 대한 개념 비교는 추후에 링크 걸어두도록 하겠습니다. 해당 프로젝트를 실행하면서 사용한 라이브러리, 패키지 리스트는 pip list 를 통해 확인할 수 있습니다. 도커 컨테이너를 만들거나, 가상서버에 직접 파일을 올리는 경우 해당 패키지들을 일률적으로 설치해야합니다. 이러한 패키지 리스트를 requirements.txt 파일로 만들어 두면 한 번에 모든 패키지를 설치할 수 있어서 굉장히 편리합니다! pip freeze > requirements.txt 해당 명령어를 실행시키면 자동으로 requirement.txt 파일이 만들어지고, 해당 파일을 클릭하면 아래와 같이 나타납니다.
![](http://i1.daumcdn.net/thumb/C150x150.fwebp.q85/?fname=https://blog.kakaocdn.net/dn/8ENIB/btrcHEy7jWP/fHVJksafPyCVw9cMhqxlxK/img.png)
장고와 플라스크에 대한 경험이 아직 부족하지만, 지금까지 느낀 바로는 장고와 플라스크는 정말 서로의 색(장단점)이 뚜렷한 것 같습니다. 플라스크는 micro framework라는 이름에 걸맞게, python을 배웠다면 별도로 배울 내용이 적지만, 그만큼 신경써야할 것이 많고, 장고는 macro framework 답게 많은 기능을 제공해주지만, 그만큼 공부해야할 양이 많은 것 같습니다. 프로젝트를 시작하면 대부분 회원가입, 로그인 부분을 먼저 다루게 되는 것 같습니다. 프로젝트가 어느 정도 진행되고 나면 기능을 보완/보강하게 되는데 최근에 소셜 로그인에 관심이 생겨 django 프로젝트에 kakao 소셜 로그인 기능을 도입해보았습니다. 소셜로그인에 대한 설명은 간단하게 넘어가도록 하겠습니다. 해당 포스팅은..
* 참고 : 약수 구하는 과정 - 약수는 짝을 이루고 있음(ex. 6 : 1,6 & 2,3) - 따라서 자기자신을 제외한다면 약수는 n/2보다 클 수 없음 # n의 약수를 구하는 과정 divisor[] for i in range(1,(n//2+1)): if n%i == 0: divisor.append(i) divisor.append(n) print(divisor) 1. 공약수로 구성된 리스트에서 최댓값 찾기 # n, m의 최대공약수 찾는 과정 divisor=[] for i in range(1, (n//2+1)): if (n%i==0) and (m%i==0): divisor.append(i) # 공약수를 넣음 result = max(divisor) # 공약수 중 최댓값 : 최대공약수 print(result..
1. 장고 설치 전에 파이썬 가상환경에 어떠한 라이브러리가 설치되어있는지 보기 pip list 2-1. 장고 설치하기 pip install django 2-2. 장고로 할 수 있는 게 무엇인지 보기 django-admin 3. 장고로 새로운프로젝트 만들기 django-admin startproject [프로젝트이름] 새로운 프로젝트를 만들었으면 해당 프로젝트를 열어줍니다 (해당 프로젝트 안에 동일 이름의 폴더와 manage.py 파일이 있습니다) 4. file 탭 > settings *저는 file탭에 settings를 찾을 수 없어서 help에서 setting를 검색했습니다 Project:[해당파일명] -> Python Interpreter -> 톱니바퀴 Add클릭 -> ok => 파이참이 알아서 가상..
1. split - 공백(" ")을 기준으로 나누는 경우, 아무것도 넣지 않아도 된다! number = input() # 3 4 number.split() 2. 튜플 언패킹 number = input() # 3 4 n, m = number.split() print(n) # 3 print(m) # 4 3. 포매팅 - %02d : 빈 자리는 0으로 채우고 총 2자리를 차지한다는 뜻 print("%02d" %(3)) #03 4. &비트연산자 주의 파이썬은 and와 &가 다릅니다!! 주의 !! 5. print 기능 -프린트에 +,-*,%,/,// 등 계산연산자를 넣으면 계산 결과를 출력하고, - ==, !=, 등 비교연산자를 넣으면 해당 식을 판단해서 True, False를 출력합니다. print(2>3) # ..
1. restx는 api를 쉽게 만들 수 있도록 도와주는 라이브러리입니다! restx의 Namespace는 flask의 Blueprint와 같은 기능을 합니다. 2. 하나의 app.py파일로 path도 설정하고 이것저것 다 하는 경우에는 #app.py 파일 app = Flask(__name__) ...... if __name__ == "__main__" : app.run(host="0.0.0.0", debug=True, port=5000) 이렇게 하면 http://0.0.0.0:5000/ 에 들어가서 테스트를 해볼 수 있지만 restx의 Namespace를 사용해서 api를 만든 경우 해당 파일에서 실행을 하려고 하면 404에러가 계속 뜹니다ㅠㅠ 3. restx의 Api객체의 add_namespace()..
random모듈의 choice함수 : 아무 원소나 하나 뽑아주는 함수 문제 사용자가 원하는 음식 카테고리를 골라주면 그 중에서 랜덤으로 음식을 추천하는 프로그램! 카테고리 면류 : 짜장면, 라면, 파스타 밥류 : 볶음밥, 계란밥 육류 : 삼겹살, 소갈비살, 치킨 샐러드 : 치킨샐러드, 계란샐러드 시도1 #시도1 from random import * noodles = ["짜장면", "라면", "파스타"] rice = ["볶음밥", "계란밥"] meat = ["삼겹살", "소갈비살" , "치킨"] salad= ["치킨 샐러드", "계란 샐러드"] choice = input("noodles, rice, meat, salad 중에 하나를 고르시오") if choice == "rice" or "salad" : n..
1. virtualenv 라이브러리 설치 (+pip버전 업데이트 python -m pip install --upgrade pip 2. virtualenv 만들기 python이 실행되는 공간을 분리 독립적인 실행환경 작업폴더안에서 virtualenv venv 작업폴더의 하위폴더로 venv라는 폴더가 생기고 venv의 하위폴더 bin에 배치파일, 파이썬 등이 있음 3. activate source/venv/bin/acitvate 이제 입력하는 명령은 가상환경상에서 실행됨 비활성화 deactivate 4. view > command Palatte > python: select interpreter current인 ./venv/bin/python으로 선택 이렇게 하면 terminal >new terminal 한..
class Account : account_count = 0 #클래스 변수 ==> 모든 객체가 공유함 def __init__(self, name, rest) : #해당 객체의 이름, 잔고 self.name = name #self는 객체를 의미함 self.rest = rest #해당 객체의 계좌번호 num1 = random.randint(0,999) num2 = random.randint(0,99) num3 = random.randint(0,999999) num1 = str(num1).zfill(3) num2 = str(num2).zfill(2) num3 = str(num3).zfill(6) self.account = "{}-{}-{}".format(num1,num2,num3) self.bank = "SC..
클래스 과자 틀 : 똑같은 무엇인가를 계속해서 만들어낼 수 있는 설계도면 -> 클래스 (Cookie) 과자 틀에 의해서 만들어지는 과자 : 설계도면으로 만든 피조물 -> 객체이자 클래스의 인스턴스 (a) 객체와 인스턴스의 차이 a는 객체, a는 Cookie의 인스턴스 클래스 안에 구현된 함수 -> 메서드 함수와 매서드의 차이 일반적인 함수 def function_name(parameter) : sentence function_name(argument) 메서드 class Class_name : def method_name1(self, parameter) : self.parameter = parameter object_name = Class_name() #객체 생성 #호출방법1 : 객체로 호출하는 방법 =>..