일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- vue.js
- loop
- 보안
- docker
- var
- property
- nginx
- webpack
- dotenv
- leetcode
- TypeScript
- type
- machine learning
- AI
- bash
- Python
- vuetify
- 앙상블
- security
- condition
- VUE
- C++
- scss
- git
- BOJ
- JavaScript
- C#
- Clone
- generic
- npm
- Today
- Total
목록Development (105)
ice rabbit programming
Git은 SVN과 같이 협업이나 버전 관리 툴로 사용되지만, 아마 많은 학생 개발자들이 Git을 처음 접하는 것은 GitHub를 통해서일 것이다. Github는 hub라는 문자 그대로, 오픈소스 프로젝트들이 모여있는 것이다. 비유하자면 프로그래밍판 SNS라고 생각할 수 있겠다. 오픈소스 먼저, 오픈소스란 개념에 대해서 짚고 넘어가자. 오픈소스는 저작권자가 누구나 자유롭게 사용/수정/재배포할 수 있도록 공개한 소프트웨어이다. 이 중에 '누구나 자유롭게'라는 부분 때문에 오픈소스는 그냥 무료인 소프트웨어 정도로 생각하는 사람도 꽤 되는데, 그렇지는 않다. 오픈소스와 반대로 상용 소프트웨어는 Binary 실행 파일만 제공되는데, 무료인 소프트웨어, 즉 상용 프리웨어는 실행 파일만 제공된다. 무료일 뿐, 오픈소..
#!/bin/bash value=1 if[ $value -ne 0 ]; then echo "good" else echo "bad" fi bash 쉘 스크립트에서 if문은 위와 같이 사용한다. ==은 -eq, !=은 -ne이고 if와 elif(else if, 파이썬과 같다)에는 then을 사용한다. 그런데 간혹 [: missing `] 와 같은 에러가 발생한다. 어떤 문제일까 하고 찾아봤더니 if[$value -ne 0]; 과 같이 쓰면 발생하는 현상이었다. 즉 조건 구문과 대괄호[] 사이에는 공백이 있어야 한다는 것. 또 겪었던 오류는 Error : unary operator expected 오류였다. 이는 크게 두 가지 문제였다. 하나는 $1 -eq "hi"로 적었을 때, $1이 비어있다면 -eq "h..
잡담 글에서 한 번 언급했던 것처럼, 개발 스택이 C# 클라이언트 프로그래밍에서 Python 서버 프로그래밍으로 넘어가면서 C#은 6월 말 이후로 다루지 않고 있다. 사실상 작년까지는 C# 이름만 알았지 다루어본적도 없어서 이번에 반 년 정도 다룬 걸로는 뭔가 배웠다고도 하기 쉽지 않지만, 기왕 수업도 듣고 현업 업무도 조금이나마 해보았으니 정리해둔 내용은 마저 정리하려고 한다. (C# 포스팅을 하지 않은 사이에 티스토리 코드블럭 Hylighting에 C#이 생겼다!) 이전에 Generic까지 했는데, 이번 글에서는 Delegate를 보려고 한다. Delegate의 기초 개념 Delegate는 쉽게 말해 메소드(함수)의 호출 정보/시그니쳐/주소를 저장하는 타입이다. C++에서의 함수 포인터 개념과 비슷하..
소스를 다운받거나, 빌드 및 패키징을 진행할 때 clone을 하게 된다. 소스 다운이야 한 번 받으면 이후로는 git pull로 동기화하겠지만, 빌드 서버에서 빌드할 때에는 pull 시에 conflict 등 문제가 생겼을 때 직접 들어가서 봐주는 것이 생각보다 힘들다(귀찮다). 그래서 필자는 빌드 시에 clone한 폴더를 삭제한 후에 재clone하는 경우가 많았다. git clone GIT_URL 위 명령어가 해당 git 원격 저장소를 clone해오는 기본적인 명령어이다. 하지만 master등 default branch가 아닌 특정 branch가 필요한 경우가 꽤나 많다. 예를 들어 빌드/배포 버전이 여러개인 경우, 위상이 다르게 유지되는 branch를 가져와야 한다. git clone -b BRANCH..
이전 글에서 Python에서의 함수와 반복문 등을 다루었는데, 이 글에서는 그런 식으로 정리하는 것은 아니고 기초 문제들을 풀면서 얻은 팁/지식/개념에 대해서 나열해보고자 한다. 정리가 잘 안되어 있다.. 시퀀스 타입 리스트 : [] 안에 숫자/문자 나열 + 연산자를 통해 두 리스트를 합칠 수 있다(ex. [1,2]+[3,4] = [1,2,3,4]) 튜플 : () 안에 나열, 리스트와 같지만 요소의 값 변경이 불가하다. 딕셔너리 : {} 안에 나열, key:value 로 구성되어 있다. dict[key]로 value에 접근할 수있다. key 추출 : dict.keys() value 추출 : dict.values() 모두 추출 : dict.items() len(list)를 통해 시퀀스 길이를 가져올 수 있..
이전 글에서 한 번 언급했던 것처럼, 업무 스택이 C# 클라이언트 프로그래밍에서 Python 서버 프로그래밍으로 변경되었다. Python을 안 써본 것은 아니지만, PyQT나 OpenCV, Tensorflow처럼 필요에 따라서 쓴 정도기 때문에 기초 문제를 푸는 강의를 수강하면서 개념을 정리했다. 다만 이론 강의를 듣는 형태가 아니라 주어진 문제를 풀면서 개념을 습득하는 형태라 정리를 한다고 했으니 다소 중구난방일 수는 있다... 가장 먼저 Python은 인터프리터 언어로, 코드를 한 줄씩 해석하게 된다.또한 PEP8이라는 정식 코드 가이드가 있는데, 이것의 준수가 꽤 엄격하게 적용되어야 한다. https://www.python.org/dev/peps/pep-0008/ 을 참조하면 좋다. 아마 타 언어와..
관계란? 관계는 각 테이블 간의 논리적 관계로, 1대1, 1대n, n대m관계가 있다. - 1대1 관계 : 각 개체가 1:1로 이어지는 관계(ex. 사람:주민등록번호) - 1대n 관계 : 한 쪽 개체가 여러 객체를 가지는 관계(ex. 직원들:부서) - n대m 관계 : 양 쪽 개체가 서로 여러 개체(다수 관계)를 가지는 관계(ex. 상품:고객) -> 여러 고객은 여러 상품을 살 수있고, 여러 상품은 여러 고객에게 팔릴 수 있다. 데이터 중복이 있으면 데이터의 일관성, 무결성, 보안성, 경제성 등에 해를 끼칠 수 있으므로, 테이블을 만들 때는 중복이 되지 않게 해야 한다. 이를 해결하기 위해 중복의 가능성이 있는 데이터를 다른 테이블로 나누고 관계를 맺게 한다. 외래키 관계를 가지고 있는 다른 테이블의 컬럼을..
크롤링 크롤링은 웹 페이지에서 필요한 데이터를 추출하는 작업이다. 이 데이터들을 원하는 형태로 파싱하여 사용한다. 도식화하여 과정을 보면 다음과 같다. 웹에서 HTML 구조 파악 -> request로 HTML 가져오기 -> HTML 분석하여 필요한 데이터 가져오기 -> 개행 문자 등 필요 없는 부분 필터링(파싱) -> 실제 사용 가져온 HTML을 분석하는 도구에는 여러 가지가 있지만, 여기서는 가장 널리 쓰이는 BeautifulSoup을 사용한다. BeautifulSoup은 HTML뿐 아니라 XML, JSON 등을 모두 분석할 수 있다. 아래와 같이 객체를 만들고 분석할 수 있다. soup = BeautifulSoup(open("index.html"), "html.parser") # 객체 생성 soup...