728x90 반응형 Dev.115 Django : 웹 프로그래밍의 이해 웹 클라이언트 웹 서버에서 정보를 요청하고 수신하는 소프트웨어 프로그램 클라이언트 요청? 웹 브라우저를 사용한 요청 리눅스 curl 명령을 사용하여 요청 리눅스 telnet 을 사용하여 요청 직접 만든 클라이언트로 요청 프론트엔드와 백엔드 프론트엔드 - 웹 클라이언트 (브라우저, 디바이스 등) : 사용자 인터페이스 작성 등 + HTML, CSS, Javascript 등 사용 백엔드 - 서버 (네트워크로 연결되어 있는 원격지의 컴퓨터) : 사용자가 직접 볼 수 없는 사이트의 로직, 데이터 처리, 성능, 보안, 인증, 권한 기능 개발, 트래픽처리, 안정화 등등 + Python, Java, PHP, Node.js, Ruby 등 사용 풀스택 - 프론트 + 백 HTTP Hyper Text Transfer Prot.. Dev./Django & DRF 2023. 7. 21. Python - Mini project : Library Management System 4 도서 대출 기능 우선 도서를 대출 하는 과정을 상상해 보면, 조회해서 어떤 책들이 있는지 알고 있는 상태이다. 그런데 한권만 대출하나 ? 여러권도 가능할 것이다. , 로 구분 지어서 입력 받아서 리스트에 저장한뒤에 리스트에서 쭉 for 문을 돌려서 실행 시키도록 해보자 # 입력 받는 부분 테스트 해보기 def lend_book(): connection = psycopg2.connect(host=DATABASE_HOST, user=DATABASE_USER, password=DATABASE_PASSWORD, dbname=DATABASE_NAME, port=DATABASE_PORT) cursor = connection.cursor() input_ids = input("대출할 책의 id 들을 (,)로 구분하여 .. Dev./Python 2023. 7. 20. Python - Mini project : Library Management System 3 main 함수 def main(): # 기본적으로 다시 한번 DB 커넥션이 일어나게 헀다. # 왜냐하면 위에서 DB 설정이 끝나면 다시 끊어주게 설정했기 때문 create_connection() while True: # 유저가 동작을 선택할 수 있게 시각적인 부분을 행겨주는 함수 option = start_page() if option == 1: pass elif option == 2: pass elif option == 3: pass elif option == 4: pass elif option == 5: pass elif option == 6: break else: print("error") start_page() def start_page(): # 파이썬 실행 후 가장 처음 보여주는 print("-.. Dev./Python 2023. 7. 20. Python - Mini project : Library Management System 2 요구사항 분석 장고 사용금지, 콘솔에서 동작하는 프로그램 프로그램을 실행하면 → 파이썬 파일을 실행시킨다 → 사용자가 입력하는 대로 서비스 기능들에 접근해서 원하는 해당 기능을 요구 조건에 맞게 사용 가능 → 조건에 따라 실행기능들이 동작해야함 DB 는 postgresql 을 사용한다 → 설치후에 DB 를 생성해두고 파이썬 프로그램이 실행되면 연결 해주는 작업을 해야한다 실행중에 유저가 DB 에 접근하는 작업을 할 때마다 ORM 을 쓰든 직접 SQL 문을 실행시키든 DB 에 정보를 저장해야한다. postgreSQL 설치 서비스 확인하기 brew services list postgres 가 없다면, 설치하기 brew install postgresql@15 brew 에서 서비스 시작하기 brew servic.. Dev./Python 2023. 7. 19. Python - Mini project : Library Management System 1 프로젝트 개요 본 프로젝트는 파이썬을 활용하여 콘솔 기반의 도서관 관리 시스템을 개발하는 것을 목표로 한다. 이 시스템은 도서 대출, 반납, 그리고 회원 관리 기능을 제공한다. 기능 설명 0. CLI 기반 메뉴 (기본) (기본) 사용자는 콘솔을 통해 메뉴를 선택할 수 있습니다. (기본) 사용자가 선택한 메뉴에 따라 해당 기능을 실행합니다. (기본) 사용자는 메뉴를 통해 프로그램을 종료할 수 있습니다. (심화) 사용자는 메뉴를 통해 이전 메뉴로 돌아갈 수 있습니다. (심화) 메뉴 선택시 콘솔을 삭제하여 사용자가 선택한 메뉴만 출력합니다. 1. 데이터 입력 기능 (기본) (기본) 사용자는 콘솔을 통해 도서의 정보를 입력하여 데이터베이스에 저장합니다. (기본) 도서의 정보는 도서의 ID, 이름, 저자, 출판사.. Dev./Python 2023. 7. 19. Python - 알고리즘 : 힙 leetcode : Kth Largest Element in an Array 배열이 주어지면 k 번째로 큰 수를 반환하는 문제로 보인다. # leetcode : Kth Largest Element in an Array import heapq class Solution: def findKthLargest(self, nums: List[int], k: int) -> int: # 힙으로 만들기 위해 빈 배열 heap = [] # 루프를 돌면서 for num in nums: # -를 붙여서 순서를 뒤집자, 힙은 최소 힙으로 정렬되기 때문에 음수로 하게 되면 최대수가 맨앞으로! heapq.heappush(heap, -num) # k 번째 큰 수를 출력해야하니, k-1 만큼 루프를 돌면서 다 버려주고 for _ i.. Dev./Algorithm 2023. 7. 18. Python - 알고리즘 : 트리구조 leetcode : Maximum Depth of Binary Tree 이진트리의 최대 깊이를 구하는 문제로 보인다. 트리의 루트에서 가장 깊은 잎(leaf) 노드까지의 경로를 따라 노드의 수를 계산한다. # leetcode : Maximum Depth of Binary Tree - 트리 # Definition for a binary tree node. # class TreeNode: # def __init__(self, val=0, left=None, right=None): # self.val = val # self.left = left # self.right = right class Solution: def maxDepth(self, root: Optional[TreeNode]) -> int: # 가.. Dev./Algorithm 2023. 6. 22. Python - 알고리즘 : 자료구조, 그래프, 다익스트라 Leetcode : Letter Combinations of a Phone Number digits 가 들어오면 해당 딕셔너리 안에서 가능한 조합들을 모두 꺼내는 알고리즘 같다. 내용을 보면 전화 키패드에서 사용되는 숫자와 문자의 매핑을 사용해야 하는 백트래킹 문제로 보여진다. 문제는 가능한 모든 문자 조합을 반환하라고 요청하고 있다. 먼저, 숫자와 문자를 매핑하는 딕셔너리를 생성한다. 이 딕셔너리는 각 숫자를 문자들의 리스트로 매핑하며, 이것은 전화 키패드에 기반한 매핑이다. 두 번째로, 백트래킹 함수를 정의한다. 이 함수는 현재까지 구성된 조합과 다음으로 처리해야 하는 숫자 위치를 인자로 받는다. 백트래킹 함수 내에서, 만약 현재까지 구성된 조합이 입력된 숫자 문자열의 길이와 같다면, 이 조합은 완전.. Dev./Algorithm 2023. 6. 21. Python - 알고리즘 : 그래프 알고리즘 수학 안에서도 좀 더 구체적으로 그래프를 설명하자면, 그래프 이론에서 객체의 일부 쌍들이 연관되어 있는 개체 집합 구조를 말한다. 일반적으로는 정점(노드)과 간선(엣지)으로 이루어진 자료구조를 의미한다. 간선의 방향 유무에 따라서 단방향 그래프와 무방향 그래프(또는 양방향)로 나뉜다. 그래프의 표현은 크게 인접 행렬 그래프와 인접 리스트 그래프로 나눌 수 있다. 그래프 순회란, 그래프 탐색이라고도 불리우며 그래프의 각 정점을 방문하는 과정을 말한다. 탐색 기법에는, 너비 우선 탐색, 깊이 우선 탐색, 다익스트라, 플로이드 와샬 등이 있다. BFS 탐색 (Breadth First Search) 현재 정점과 연결된 점들에 대해 우선적으로 넓게 탐색 큐를 이용해 구현 DFS 탐색 (Depth First Sea.. Dev./Algorithm 2023. 6. 20. Python - 알고리즘 : 리스트, 딕셔너리 순서대로 저장하는 시퀀스이자 변경 가능한 목록(mutable list) 이다. 내부적으로는 동적 배열로 구현되어 있다. pop() 함수는 O(n) 이므로 주의한다. 데크(deque)와 같은 자료형을 사용해 성능을 높일 수 있다. 리스트 메소드의 시간 복잡도 # 리스트 메서드의 시간 복잡도 len(a) # 시간 복잡도 : O(1) - 전체 요소의 개수를 리턴한다. a[i] # 시간 복잡도 : O(1) - 인덱스 i의 요소를 가져온다. a[i:j] # 시간 복잡도 : O(k) - 인덱스 i 부터 j 까지 슬라이스의 길이만큼인 k 개의 요소를 가져온다. 이 경우 객체 1개에 대한 조회가 필요하므로 O(k) 이다. elem in a # 시간 복잡도 : O(n) - elem 요소가 존재하는지 확인한다. 처음부터 .. Dev./Algorithm 2023. 6. 19. Python - 알고리즘 기초 파이썬으로 알고리즘 문제를 풀기위한 기초 → 파이썬으로 코딩을 하기위한 기초로 생각해도 좋다. 알고리즘을 구현하고 어떤 문제에 대한 솔루션을 만들기 위한 언어로 선택했다면 그 언어의 문법은 확실하게 알아야 하기 때문이다. 인덴트(들여쓰기) 파이썬의 대표적인 특징이기도 한 인덴트는 공식 가이드인 PEP 8에 따라 공백 4칸을 원칙으로 한다. 파이썬에선 코드 구분을 위한 중괄호가 없기 때문에 이 들여쓰기로 구문을 구분하게 되니 반드시 잘 숙지해야 한다. class ParentClass: def __init__(self): # 들여쓰기 self.name = 'parent' self.number = 10 # 들여쓰기 def __str__(self): return f'ParentClass name : {self... Dev./Algorithm 2023. 6. 16. Python - 배열 Python 에서 배열은 하나의 식별자로 여러 데이터 항목을 저장할 수 있는 객체이다. 동일한 데이터 유형의 요소 집합을 저장해야 할 경우 배열이 유용하다. Python 에서 배열의 크기는 동적으로 증가하거나 감소할 수 있다. 배열과 리스트는 다르다. 배열은 리스트보다 적은 메모리를 사용한다. 1차원 배열 : 단일 행, 다중 열 다차원 배열 : 다중 행, 다중 열 배열 # 배열 생성 및 원소 접근 import array stu_roll = array.array("i", [101, 102, 103, 104, 105]) print(stu_roll[0]) print(stu_roll[1]) print(stu_roll[2]) print(stu_roll[3]) print(stu_roll[4]) # 101 # 102.. Dev./Python 2023. 6. 13. 이전 1 ··· 6 7 8 9 10 다음 728x90 반응형