언어
-
[Python] BeautifulSoup 사용하기언어/파이썬 & 장고 2019. 1. 18. 21:28
웹 크롤러를 만들거나 html에서 필요한 정보를 검색할 때, BeautifulSoup 라이브러리를 사용하여 편리하게 코딩할 수 있습니다.설치$ pip3 install beautifulsoup4beautifulsoup에는 기본적으로 파이썬 표준라이브러리인 html 파서를 지원하지만, lxml이라는 모듈이 더 빠르게 동작하므로 lxml 모듈도 설치해 줍니다.$ pip3 install lxml 아래는 beautifulsoup에서 사용할 수 있는 파서의 장단점을 보여주는 테이블 입니다.Parser선언방법장점단점파이썬 html.parserBeautifulSoup(markup, 'html.parser')설치할 필요 없음적당한 속도 lxml HTML parserBeautifulSoup(markup, 'lxml')매우..
-
[Python] argparse 사용법 (파이썬 인자값 추가하기)언어/파이썬 & 장고 2019. 1. 16. 21:42
파이썬 스크립트를 개발할 때, 호출 당시 인자값을 줘서 동작을 다르게 하고 싶은 경우가 있습니다. 이때, 파이썬 내장함수인 argparse 모듈을 사용하여 원하는 기능을 개발할 수 있습니다.아래 설명은 파이썬 3.7 버전 기준으로 작성했습니다.사용법간단하게 인자값을 받아 처리하는 로직은 아래와 같습니다.import argparse # 인자값을 받을 수 있는 인스턴스 생성 parser = argparse.ArgumentParser(description='사용법 테스트입니다.') # 입력받을 인자값 등록 parser.add_argument('--target', required=True, help='어느 것을 요구하냐') parser.add_argument('--env', required=False, defa..
-
[Golang] 날짜 계산, 포맷 변경하기언어/Golang 2018. 12. 19. 21:30
Go언어에서 날짜계산이나 포맷변경은 극악입니다. 실제로 검색해보면 욕 한바가지 써놓은 것을 쉽게 볼 수 있습니다. 현재날짜 가져오기기본 현재날짜, utc, unix 별로 가져오는 로직입니다.package main import ( "fmt" "time" ) func main() { now := time.Now() nowUTC := time.Now().UTC() nowUNIX := time.Now().Unix() fmt.Println(now) fmt.Println(nowUTC) fmt.Println(nowUNIX) } // 결과 // 2018-12-19 20:42:08.219845 +0900 KST m=+0.000394187 // 2018-12-19 11:42:08.219846 +0000 UTC // 154..
-
[Golang] struct 리스트로 반환하기언어/Golang 2018. 12. 18. 23:39
struct 성질을 까먹고 한참 삽질하다가 정리하던 도중 중요한 부분을 기억했습니다...........GO에서 struct를 선언하는 방식은 여러가지가 있습니다. struct 성질을 먼저 복기한 후, struct를 리스트로 반환하는 코드를 설명하겠습니다.1. 빈 struct 객체 먼저 생성 후 데이터 채우기Article이란 빈 객체를 생성 후 데이터를 삽입하는 코드입니다.type Article struct { Title string } func main() { article := Article{} article.Title = "test" }2. GO 내장함수 new() 사용GO 내장함수인 new() 메소드를 사용하여 생성합니다.type Article struct { Title string } func m..
-
[Python] psycopg2 Decimal 타입 제거하여 쿼리결과 얻기언어/파이썬 & 장고 2018. 12. 1. 13:58
SELECT 쿼리를 사용하여 DB의 값을 가져올 때, float, double과 같은 타입일 경우에 psycopg2가 Decimal 타입으로 가져오게 됩니다. 가져온 값을 그대로 다른 DB에 넣을 때 Decimal타입을 변경해줘야 하는데 귀찮으니 애초에 DB 값을 가져올 때, 아래와 같이 제거해서 결과를 출력할 수 있습니다.from psycopg2.extensions import new_type, DECIMAL DEC2FLOAT = new_type(DECIMAL.values, 'DEC2FLOAT', lambda value, curs: float(value) if value is not None else None) psycopg2.extensions.register_type(DEC2FLOAT) conn =..
-
[Python] 전각문자(double byte)를 반각문자(single byte)로 변경언어/파이썬 & 장고 2018. 11. 21. 18:11
먼저 우리가 흔히 아는 특수문자는 반각문자 입니다. (키보드에 존재하는 특수문자 !@#$% 등등) 전각문자는 윈도우 한자 키를 사용하여 생성된 특수문자입니다. (123abc?!등등)전각문자를 사용해도 표현은 되지만 문자 사이의 간격이 반각보다 커서 가독성 문제나 123과 같은 숫자가 전각일 경우, 문자로 인식되는 것등의 문제가 있습니다. 따라서 파이썬에서 전각문자를 반각문자로 변경하는 방법은 아래와 같습니다. # 전각문자 full = '!' # 반각문자 half = '!' # 전각문자와 반각문자의 차이 diff = '0xfee0' # 전각문자 블랭크 blank = '0x3000' # 16진수인 ascii code hex_ascii_full = ord(full) hex_ascii_half = ord(hal..
-
[Django] ORM으로 Order by 에 null first, last 기능 구현언어/파이썬 & 장고 2018. 7. 14. 23:30
Postgresql에서는 order by 부분에 null값이 가장 먼저 나올지, 나중에 나올지 설정할 수 있습니다. order by의 예는 아래와 같습니다.SELECT name FROM test ORDER BY name DESC NULLS FIRST; 해당 쿼리는 name 컬럼에 null값인 행을 가장 앞으로 정렬하게되는 쿼리입니다. 아래는 위 쿼리를 Django ORM으로 똑같이 표현한 예입니다.from django.db.models import F Test.objects.order_by(F('name').desc(nulls_first=True))null값을 가장 뒤로 보내고 싶으면 nulls_first 부분을 nulls_last로 변경해주면 됩니다.
-
[Django] ORM으로 Aggregation 함수와 Group by 사용언어/파이썬 & 장고 2018. 7. 14. 23:29
쿼리에서 aggregation함수(count(), max(), first() 등등) 와 필요한 컬럼을 출력하는 방법은 아래와 같습니다.SELECT name AS changed_name, count(count) FROM test GROUP BY name; 위와 같은 쿼리는 아래와 같이 장고 ORM으로 표현할 수 있습니다.queryset = Test.objects.values('name').annotate( max_count=Count('count'), changed_name=F('name') ).values('max_count', 'changed_name') aggregation 함수를 사용하기 전, group by를 진행할 필드를 지정해 줍니다.queryset = Test.objects.values('n..
-
[Python] lambda, map언어/파이썬 & 장고 2018. 7. 12. 23:20
lambda, map, filter 같은 경우는 사실 가독성 부분에서 좋지 않다는 생각이 들어 지양하고 있었는데 장점이 있어서 정리해 봅니다.lambda(람다) 함수lambda (이후 '람다'라고 호칭)함수는 익명함수로 메모리를 절약하는 이점이 있습니다. 또한 가독성을 향상시킨다 라고도 나오지만 함수와 비교했을 때 가독성이 좋은건지는 잘 모르겠습니다. (개인적인 의견)일반적인 함수는 객체를 만들고, 재사용을 위해 함수 이름(메모리)를 할당을 합니다.# lambda 인수1, 인수2, ... : 인수를 이용한 표현식 sum = lambda a, b: a+b result = sum(3,4) print(result) # 7왜 사용할까?익명함수이기 때문에 한번 쓰이고 다음줄로 넘어가면 힙(heap) 메모리 영역에..
-
Django Value(), F() 란?언어/파이썬 & 장고 2018. 6. 26. 19:48
Value()Value(value, output_field=None)value() 객체는 나타낼 수 있는 가장 작은 값을 표현할 수 있습니다. 예를 들어 쿼리에서 integer나 boolean 또는 string 을 표현하고자 할 때 Value()로 감싸서 나타낼 수 있습니다.사실상 Value()를 직접 사용할 필요는 드뭅니다. F('foo') + 1 이라는 표현식이 있을 때, 장고는 암시적으로 1을 Value()로 감싸 복잡한 표현식에서 단순한 값을 사용하게 합니다. 만약 string 값을 표현식에 나타내고자 할 때 Value()를 사용하여 나타낼 수 있습니다. 대부분의 표현식은 Lower('name')과 같이 해석하고 있습니다. output_field는 IntegerField() 나 BooleanFie..