전체 글 98

Git & GitHub 기본

Git : 분산 버전 관리 툴 GitHub : Git을 클라우드 환경에서 사용할 수 있게 제공하는 서비스 Git 실습 Mac에는 기본적으로 Git이 설치되어있음 Git 버전 확인 git --version Git 사용자 정보 설정 git config --global user.name "KimDonghu" git config --global user.email ehdgn1022@naver.com 작업할 디렉토리에서 Git 저장소 만들기 git init README.md 추가하고 커밋하기 touch README.md git add README.md git commit -m 'GitPractice Start' Git 상태 확인하기 파일 상태 확인 git status Untracked(관리 대상이 아님) : 파일..

Git 2023.10.06

Django 실습(1) 핫딜 크롤링해서 상품 사이트 만들기

https://userdonghu.tistory.com/entry/Django-%ED%8A%9C%ED%86%A0%EB%A6%AC%EC%96%BC Django 튜토리얼 Python 설치 이후. Django 프로젝트 파일 열기. mkdir mysite 로 폴더 만들고 cd mysite로 이동하기. python -m venv venv # 가상환경 설정. 뒤가 이름 source ./venv/bin/activate # 가상환경 실행 pip install django # 장고 설 userdonghu.tistory.com Django 튜토리얼을 통해서 mysite 폴더 안에 가상환경을 구성하고 django 설치, startproject, runserver까지 하기. python manage.py startapp 으로..

Django 2023.10.05

Django 란 무엇인가

Django : 파이썬으로 웹 애플리케이션을 개발할 수 있는 무료 오픈 소스 웹 프레임 워크. Django 특징 ORM(object-Relational Mapping) : 데이터베이스와의 상호작용을 자동화해서 개발자가 SQL쿼리를 작성할 필요없이 데이터를 편리학세 다룰 수 있음. Admin 페이지 : 기본적인 CRUD 기능이 갖춰진 관리자 페이지를 자동으로 생성. MTV 패턴 : Model-Template-View 패턴을 가지고 있어서 기능들을 분리하여 개발 가능. Django 의 구성 요소 (MTV 패턴) Model : 데이터베이스와 상호작용을 하는 컴포넌트 Template : 사용자에게 보여지는 HTML, CSS, JS 등 View : HTTP 요청 처리 및 Model과 Template 연결 Djan..

Django 2023.10.05

Django 실습(0) 튜토리얼

Python 설치 이후. Django 프로젝트 파일 열기. mkdir mysite 로 폴더 만들고 cd mysite로 이동하기. python -m venv venv # 가상환경 설정. 뒤가 이름 source ./venv/bin/activate # 가상환경 실행 pip install django # 장고 설치 django-admin startproject tutorialdjango . # tutorialdjango라는 프로젝트 시작 "." 주의 python manage.py migrate # DB에 반영 python manage.py runserver # 서버 실행 settings.py에서 접속할 수 있는 사람 설정 ALLOWED_HOSTS = ['*'] # 접속할 수 있는 사람을 모든 사람으로 변경 py..

Django 2023.10.04

"향기나는 나"의 향수

예전에 셀린느 매장에서 가방을 샀을때 셀린느 코스메틱 런칭했다면서 셀러분이 끼워주신 향수 샘플이 너무 마음에 들고 향이 좋아서 조금씩 아껴쓰다가 결국 셀린느 매장으로 향했다. 가격이 너무 사악하지만 산뜻한 바닐라향이 너무 내 스타일이라서 마음에 든다. 사실 향수를 자주 쓰는편이 아니라서 죽을때까지 다 쓰지 못할 향수들이 집에 꽤나 있다.. 선물 받았지만 아직 포장도 뜯지 않은 남자다운 향이 물씬 풍기는 비싼 향수.. 지만 셀린느에 비하면 선녀같은 가격 마찬가지로 선물 받았지만 양이 줄어들지 않는 시원한 여름같은 향수 고등학생때 친구집에서 처음 맡아보고 너무 좋아서 바로 산 인생 첫 향수가 된 ck one. 근데 아직도 저만큼 남아있다.. ㅋㅋ 롭스였나 올리브영이었나 갑자기 향수가 사고싶어서 혼자 가서 산..

나의 일상 2023.10.04

밀루 유 떼베, <원스>

내가 제일 좋아하는 영화 감독 '존 카니' 의 음악 영화 시리즈 첫번째 작품이자 OST로 유명한 원스 유튜브 영화로 구매해놓고 봐야지 봐야지 하다가 추석 연휴때 짬이 좀 나서 봤다. 주인공들의 이름조차 알려주지 않지만, 영화의 스타일이나 분위기는 말할것도 없고 '그'와 '그녀'의 머리 끝부터 발 끝까지 스타일과 개성, 삶과 그 속에 낭만까지 전부 내 스타일이고 여운이 깊게 남는다. 무심하게 찍은듯한 영화의 구도, 정신없는 아일랜드의 거리, 조금 구린 화질 마저 영화를 완벽하게 만들었고 너무 마음에 들었다. 현실적이고 낭만없는 나에게 존 카니 감독의 영화들은 볼때마다 잊었던 향수를 불러일으키는듯한 착각을 주고 많은 영향을 준다. 정말 간만에 몰입해서 봤고, 이 영화를 끝으로 [원스] -> [비긴 어게인] ..

나의 일상 2023.10.02

투포인터 알고리즘 구현해보기

투포인터 알고리즘 : 배열의 인덱스를 나타내는 두개의 포인터를 설정하고, 이를 옮겨가면서 내가 원하는 값을 찾는 알고리즘 ex) [1, 5, 4, 6, 4] 에서 연속된 배열의 합이 10인 배열의 인덱스를 모두 찾아라. start : 0, end : 0, array : [1] , sum : 1 / sum이 10보다 작음. end 증가 start : 0, end : 1, array : [1, 5] , sum : 6 / sum이 10보다 작음. end 증가 start : 0, end : 2, array : [1, 5, 4] , sum : 10 / sum이 10 찾음. start 증가 start : 1, end : 2, array : [5, 4] , sum : 9 / sum이 10보다 작음. end 증가 st..

페이지 교체 알고리즘 (FIFO, LRU)

페이지 교체 알고리즘 : 메모리를 효율적으로 사용하기 위해서 어떤 데이터를 메모리에 적재할지 결정하는 알고리즘 FIFO : First In First Out 메모리에 가장 먼저 올라온 페이지를 가장 먼저 교체함. 메모리에 올라오는 순서가 0, 4, 6, 5, 4, 7, 8 이고 메모리의 크기가 3일때, [0] [0, 4] [0, 4, 6] [4, 6, 5] [4, 6, 5] # cache hit [6, 5, 7] [5, 7, 8] 이런식으로 메모리에 적재됨. LRU : Least Recently Used 가장 오랫동안 사용되지 않은 페이지를 먼저 교체. 메모리에 올라오는 순서가 0, 4, 6, 5, 4, 7, 8 이고 메모리의 크기가 3일때, [0] [4, 6] [4, 6, 5] [6, 5, 4] # c..

정렬 알고리즘 구현해보기

선택 정렬 배열에서 최솟값을 찾는다. 최솟값이 배열의 맨 앞 원소보다 작으면 자리를 교체한다. 맨 앞의 원소를 제외하고 반복한다. mylist = [199, 22, 33, 12, 32, 64, 72, 222, 233] def 선택정렬(mylist): min_index = 0 # 최소 인덱스 기본을 0으로 count = 0 # 몇번 반복했는지 for _ in range(len(mylist)): # 배열 길이 만큼 반복 for i in range(count, len(mylist)): # count부터 시작(1번 반복했으면 배열 0번째는 젤 작은 수이니 빼고 시작) if mylist[i] < mylist[min_index]: # 배열의 최솟값 인덱스 찾기 min_index = i mylist[count], m..

스택, 연결리스트 구현해보기

1학년때 c언어로 구현하면서 되게 어렵다고 생각했던 기억이 나네.. 노드 클래스 class Node: def __init__(self, data): self.data = data self.next = None def __str__(self): return str(self.data) def __repr__(self): return str(self.data) 스택 클래스 class Stack: def __init__(self, mylist): self.head = Node(mylist[0]) current = self.head for i in range(1, len(mylist)): if current.next == None: current.next = Node(mylist[i]) current = curr..