특정한 sub folder 제외하고 모두 복사하기 은근 종종 써야 하는데 쓸 때마다 찾아보기 귀찮은 명령(eg. 어디에 소스코드 제출해야 할 때 노드 모듈 빼기) $ rsync -av [project_name]/ to [copy_project_name] --exclude=node_modules/ # project_name 하위 내용을 copy_project_name 디렉토리로 노드모듈 빼고 전부 복사하기 rsync가 원래는 동기화용 이라고 하는데 스택오버플로우에서 검색한 결과 복사용으로도 사용되는 듯 하다. 여기서 / 를 주의해야 하는데 [project_name] 뒤에 / 를 붙이지 않으면 [copy_project_name] 내에 [project_name] 디렉토리 자체가 통째로 포함돼 버린다.
컴퓨터 메모리에 뭔가를 저장해야 할 때 컴퓨터에게 저장 공간을 요청한다. 컴퓨터는 뭔가를 저장할 수 있는 주소를 알려준다. 이 때 여러 개의 원소를 저장해야 한다면 여러 개의 주소가 필요할 텐데, 선형적으로 저장한다고 가정하면 배열이나 리스트 중 하나로 저장하게 된다. (선형적이지 않은 저장 방법으로는 트리나 그래프 등이 있다) 배열(Array) 만약 10개의 원소를 배열로 저장해야 한다면, 메모리에 연달아 있는 10개 공간을 할당한다. 배열의 장점 인덱스가 주어지므로 빠르게 접근할 수 있다. 배열의 단점 처음에 3개의 공간만 요청했다가 공간이 1개 더 필요하게 되면, 이 때 공간 4개를 재요청해야 한다. 즉 사전에 할당한 공간 내에서만 저장이 가능하고 이 공간 범위를 벗어날 경우 재요청이 필요하다. 이..
모델 폼 만들기 폼클래스 정의하는 법을 배웠는데, 모델 폼은 그보다 더 간단하다. 폼을 만들 때에 DB 업데이트가 목적이라면 모델 폼을 쓰는 것이 훨씬 편하다. 폼클래스를 만드려면 원래 필드를 다 지정해줘야 한다. 하지만 모델폼을 사용하면 모델에 있는 필드를 가져다가 쓸 수 있다. from django import forms from .models import Score, Movie # class ScoreForm(forms.Form): # content = forms.CharField( # max_length=100, # label='한줄평', # widget=forms.TextInput(attrs={ # 'class': 'score-content', # &#..
폼 클래스 만들기 장고에서 기본적으로 폼을 처리할 때에는 html 템플릿에서 form 태그 통해서 요청을 보내고, URL conf로 연결된 뷰에서 데이터를 받아서 리다이렉트하는 식이다. 그런데 html 템플릿에서 이 데이터를 받을 input을 일일이 만드는게 번거롭다. 받을 항목 수가 많을 수록 더욱 귀찮은 작업이 된다. 이를 조금 더 간단하게 할 수 있는 방법이 폼 클래스를 만드는 것이다. 우리가 모델 클래스 필드를 정의해서 데이터베이스 필드와 매핑하듯이, 폼 클래스 필드도 HTML input 엘리먼트에 매핑된다. 즉 모델 클래스를 만들면 SQL문을 직접 적지 않아도 데이터베이스 필드가 생성되는 것처럼, 폼 클래스를 만들면 HTML input 엘리먼트를 직접 일일이 만들지 않아도 생성할 수 있다. 폼 ..
DB에 테이블 생성하기 DB에 테이블 생성하는 작업은 models.py 에 테이블 정의 admins.py에 테이블 등록 python manage.py makmigrations python manage.py migrate 이런 순서로 이루어진다. 순서대로 하나씩 보자. 테이블 정의 장고에서 테이블은 클래스로 정의한다. from django.db import models class Question(models.Model): question_text = modesl.CharField(max_length=200) pub_date = models.DateTimeField('date published') def __str__(self): return self.question_text class Choice(mode..
프로젝트 및 앱 생성 장고에서 쓰이는 프로젝트와 앱은 일반적으로 쓰이는 의미와 다르다. 프로젝트 는 전체 프로그램을 의미하며, 이를 몇 개 기능으로 나누었을 때의 서브 프로그램을 어플리케이션(앱) 을 의미한다. 즉 하나의 프로그램(프로젝트)는 여러 개의 앱으로 구성된다. 먼저 장고 프로젝트를 만드려면 장고를 설치해야 한다. python -V # 파이썬 설치여부 확인 pip install Django # pip는 파이썬 3.x버전을 설치하면 같이 설치됨 나는 맥북에 miniconda를 설치해놓은 상태였는데, pip3 는 인식하는데 pip 는 zsh command not found 에러가 났다. .zshrc 파일을 열어서 .bash_profile에 있는 miniconda PATH를 복붙해주니 해결되었다. 장..
장고의 어플리케이션 개발 방식 MVT 패턴 일반적인 MVC 패턴과 용어가 조금 다르다. 기존 MVC에서는 M이 MODEL, V가 VIEW, C가 CONTROLLER를 의미하는 반면, 장고의 MVT에서 M은 MODEL V는 VIEW(하지만 실질적으로 CONTROLLER 역할) T는 TEMPLATE(실질적으로 VIEW) 을 나타낸다. 각 요소들은 다음과 같이 연결된다. 웹 클라이언트로부터 Request 요청을 받으면 URLconf를 이용하여 URL을 분석 분석 결과를 통해 담당 뷰를 결정(로직) 뷰는 로직을 실행하며 DB처리가 필요하면 모델을 통해 처리하고 결과를 반환받음 뷰는 로직 처리가 끝나면 템플릿을 사용하여 클라이언트에 보낼 HTML 파일을 생성함 뷰는 최종 결과로 HTML 파일을 클라이언트에 보내 ..
The following untracked working tree files would be overwritten by merge 상황 컨트리뷰트 작업 하기 전에 여러 커미터가 있는 upstream의 업데이트 사항을 내 origin에 pull(fetch & merge)하고자 함. (즉 동기화) 여느때와 같이 git remote update, git pull —rebase upstream master를 치는 순간 아, 멘토님이 리베이스 말고 머지하라고 하셨지, 라는 생각이 들었다. 황급하게 ctrl+c로 프로세스를 종료한 뒤에 다시 git merge upstream/master를 시도했으나 그때부터 계속 에러가 났다... 주요 에러는 merging is not possible because you have..
[Git] stash Stash the changes in a dirty working directory away 지저분한 워킹디렉토리의 변경사항을 잠시 치워두세요 (Stash: 살며시 치우다, 감추다, 은닉처) git stash가 수행하는 2가지 git stash 는 현재 commit 되지 않은 변경사항들을 임시적으로 저장하고 HEAD commit의 워킹디렉토리를 복구한다. 스테시는 로컬 깃 레포지토리에 한정된다. 리모트에 푸시할 때 같이 이동하는 것이 아니다. 왜 쓸까? 현재 작업하고 있는 내용을 기억하고 싶기는 한데(위에서 1번 작업) 현재 워킹 디렉토리가 지저분한 경우 깨끗한 워킹 디렉토리로 돌아가고 싶을 때(위에서 2번 작업) 즉 현재 작업 내용을 기억하고 싶기는 한데 커밋해서 반영하기는 싫을 ..
this this란? this는 단어 자체에서 유추할 수 있듯이, 뭔가를 가리키는 대명사다. 이 this가 무엇을 가리키는지 유추하려면 앞뒤 문맥을 알아야 할 것이다. 프로그래밍에서 또한 this는 어떤 컨텍스트(문맥) 내에서 특정 객체나 변수를 가리킨다. Context is always the value of the "this" keyword which is a reference to the object that owns the currently executing code. 컨텍스트는 항상 현재 실행 중인 코드를 소유한 객체를 가리키는 this 키워드의 값이다. * 다만 strict모드를 배제하고 정리하였으며 내가 이해한 부분에 한하여 정리한 것이므로 오류가 있을 수 있음 자바스크립트 this의 특징 ..
.zshrc 파일 열기 문제 뭔가를 설치하고 나서 잘 설치되었는지 확인하기 위해서 명령어를 쳤을 때에 쉘이 이를 인식하지 못하는 경우가 있다. 예를 들어 nvm을 설치하고 나서 nvm —version 했는데 command not found가 나오는 경우라든가. 그럴 때에는 .zshrc파일(bash면 bash_profile)에 스크립트를 추가해줘야 되는데 문제는 .zshrc 파일이 안 열릴때.(후… ) 해결 방법은 간단하다. 그냥 에디터로 열면 된다! 나는 vscode를 사용하므로 code ~/.zshrc 를 쳤더니 에디터로 열렸다! 열어서 스크립트 추가 및 저장하고 터미널 다시 열었더니 nvm 명령어를 잘 인식하였다:)
스코프란 스코프(Scope, 유효범위)란 식별자(identifier)를 찾아내기 위한 규칙이다. 식별자란 사람으로 따지면 이름, 주민등록번호 같은 것이 될 수 있겠다. 주민등록번호는 단 한개도 겹칠 수 없지만, 이름은 똑같은 사람이 있을 수 있다. 그러면 그 이름이 같은 사람은 어떻게 구별해야 할까? 컴퓨터는 이름이 같은 사람을 어떻게 다르게 구분할 수 있을까? 예를 들어서 강남구에 사는 김나라와 관악구에 사는 김나라는 다르다고 인식할 수 있지 않을까? 프로그래밍할 때도 변수명이나 함수명이 겹칠 수도 있다. 예를 들어 i 같이 흔한 변수명을 사용하는데 모든 코드를 통틀어 i 를 단 한 번밖에 못 쓴다는 건 좀 당황스럽다. 그렇다면 영역을 분리할 수 있지 않을까? 마치 디렉토리 구조를 나누면 각각의 디렉토..
React-Native Tutorial ClickThePaintings Code ClickThePaintingsWithRedux Code 컨트리뷰톤을 통해 RN팀에 참여하였고, RN iOS 예제 앱을 만들어 보게 되었다. RN은 처음이고, 짧은 시간 내에 예제 앱을 구현한 것이기에 기능은 매우 간단하다. 그림 데이터를 가져와서 클릭하면 그림의 세부 정보를 보여주는 것 리액트만 적용한 앱(ClickThePaintings)과 리액트, 리덕스, 리덕스 썽크를 적용한 앱(ClickThePaintingsWithRedux)을 별도로 구현했다. 기본적인 레이아웃은 두 앱 모두 동일하며, 리덕스를 적용한 앱에서는 API를 사용했기에 데이터를 fetch하는 동안 로딩 컴포넌트가 보여지도록 한 것만 다르다. 어쨌든 간단하..
파이썬 내장 모듈 - 1 개인적으로 공부하면서 기록한 것이기 때문에 어떤 기준에 따라 정렬된 것은 아닙니다. enumerate 리스트, 튜플, 문자열 등 숫자가 있는 자료형을 입력으로 받아 인덱스값을 포함하여 enumerate 객체를 반환 만약 arr = ['a', 'b', 'c'] 의 인덱스 값을 얻고 싶다면 ## 일반적인 루프 ## for i in arr: print(i) # 'a' 'b' 'c' 출력 for i in range(len(arr)): print(i) # 0 1 2 출력 ## enumaerate ## for i in enumerate(arr): print(i) # 0 1 2 출력 for i, name i..
프로그래머스 야근지수(파이썬) 프로그래머스 문제 링크 힙큐를 이용한 풀이 import heapq def solution(n, works): for i in range(len(works)): works[i] *= -1 heapq.heapify(works) for i in range(n): m = heapq.heappop(works) if m >= 0: break m += 1 heapq.heappush(works, m) answer = 0 for i in range(len(works)): answer += pow(works[i]*-1,2) return answer 힙큐 모듈을 사용한다. 이 문제의 솔루션은 주어진 works 리스트에서 가장 큰 값을 찾고, n이 0이상일 동안 1씩 빼나가는 것인데, 매번 가장..
- Total
- Today
- Yesterday
- react
- c언어
- package.json
- youtube data api
- useEffect
- Data Structure
- 자바
- rxjs
- Prefix Sums
- 포인터 변수
- Conflict
- getter
- JavaScript
- oracle
- Java
- 알고리즘
- this
- linkedlist
- SQL
- Redux
- 인스턴스
- 제네릭스
- til
- 개발 공부
- 깃
- CSS
- Session
- GIT
- 리덕스
- jQuery
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |