Software Development
-
[Spring] 스프링 부트Software Development/Java 2020. 12. 15. 15:42
스프링 프레임워크가 웹 애플리케이션에서 사용되는 많은 기능을 제공하는 것은 사실이지만, 이를 제대로 사용하기 위해서는 여러 가지 작업이 필요했습니다. 라이브러리 추가 및 의존성 관리 그리고 스프링 프레임워크가 처리할 작업을 알려 주고 이를 위한 여러 가지 구성 및 설정 파일을 작성하는 것은 모두 개발자가 해야 할 작업이었습니다. 이러한 이유로 스프링 프로젝트를 생성하는 것은 상당히 어려웠고, 해야할 일도 많았습니다. 프로젝트의 비즈니스 로직을 고민해야 할 시간에 개발환경 구성 및 스프링의 기능 구성에 시간을 쏟게 되는 것입니다. 이러한 문제점을 해결하기 위한 것이 스프링 부트입니다. 스프링 부에는 다음과 같은 주요 장점이 있습니다. * 프로젝트에 따라 자주 사용되는 라이브러리들이 미리 조합되어 있습니다...
-
[Spring] 그레이들[Gradle]Software Development/Java 2020. 12. 14. 19:18
최신 버전의 STS에는 기본적으로 메이븐이 내장되어 있습니다. 그렇지만 메이븐이 아닌 그레이들을 사용하는 이유는 다음과 같습니다. 메이븐은 XML을 기반으로 의존성 및 디렉토리 구조 관리 등의 기능을 제공하며 한동안 많이 사용되었습니다. 그렇지만 라이브러리가 추가거나 각가의 라이브러리가 서로 다른 버전의 라이브러리를 참조하는 종속성을 가지고 있을 경우에는 관리가 어려워지는 문제가 있습니다. 또한 XML의 특징인 구조화는 사람잉 알아보기에는 쉽지만 XML 문서의 양이 방대해지는 단점이 있습니다. 이에 대한 대안으로 그레이들이 각광받고 있습니다. 그레이들은 JVM 기반의 빌드 도구이며 메이븐 등과 호환됩니다. 그 외에도 설정이 간편하고, 프로젝트별로 유연하게 설정할 수 있는 등 여러 가지 장점이 있습니다. ..
-
대용량 데이터를 수집하기 위한 생산성있는 웹 크롤러의 구조Software Development/Data Engineering 2020. 11. 5. 19:26
1. 웹 크롤러? 웹 스크래퍼? 웹 크롤링과 웹 스크래핑의 정의에 의하면 둘의 의미는 엄연히 다르다고 볼 수 있지만 위키피디아 정의에 따르면 웹 스크래핑이 웹 크롤링의 부분 집합이라 볼 수 있습니다. 웹 크롤링: 조직적, 자동화된 방법으로 월드 와이드 웹을 탐색하는 컴퓨터 프로그램이다. 웹 크롤러는 대체로 방문한 사이트의 모든 페이지의 복사본을 생성하는데 사용되며, 검색 엔진은 이렇게 생성된 페이지를 보다 빠른 검색을 위해 인덱싱한다. 또한 크롤러는 링크 체크나 HTML 코드 검증과 같은 웹 사이트의 자동 유지 관리 작업을 위해 사용되기도 하며, 자동 이메일 수집과 같은 웹 페이지의 특정 형태의 정보를 수집하는 데도 사용된다[1]. 웹 스크래핑: 웹 스크래핑은 페이지를 가져 와서 추출하는 것을 포함하여 ..
-
[Python] 동기, 비동기, 블럭, 넌블럭 파이썬으로 알아보기Software Development/Python 2020. 10. 21. 16:46
개발자라면 한 번씩 듣게되는 동기(Synchronous), 비동기(Asynchronous), 블럭(Block), 넌블럭(Non-block)을 Python코드를 통해 알아보겠습니다. 우선 무엇을 의미하는지 정의하겠습니다. Block : 호출된 함수가 자신이 할 일을 모두 마칠 때까지 제어권을 계속 가지고서 호출한 함수에게 바로 돌려주지 않는 것.[2] ex) 세탁기를 돌리는 동안 아무것도 하지 않고 기다린다. Non-block : 호출된 함수가 자신이 할 일을 채 마치지 않았더라도 바로 제어권을 건네주어(return) 호출한 함수가 다른 일을 진행할 수 있도록 해주는 것.[2] ex) 세탁기를 돌리는 동안 TV를 본다. Synchronous : 호출된 함수의 수행 결과 및 종료를 호출한 함수가(호출된 함수..
-
[Oracle] 오라클 - Function 생성 및 실행 방법Software Development/Database 2020. 10. 15. 20:37
오라클에서는 TO_DATE, CONCAT 등과 같은 내장함수가 있지만 사용자가 정의하여 사용할 수 있는 사용자 정의 함수(User Defined Function)를 생성할 수도 있다. 기본적인 함수를 만드는 문법은 아래와 같다. CREATE OR REPLACE FUNCTION function_name (agr1 NUMBER) RETURN VARCHAR2 IS return_value VARCHAR(14); BEGIN SELECT data INTO return_value FROM TABLE WHERE sequence = arg1 and ROWNUM =1; RETURN return_value; END; 생성한 함수를 실행하는 방법은 아래와 같다. SELECT function_name(1000413) FROM ..
-
[Python] 파이썬 - asyncio callback 알아보기Software Development/Python 2020. 9. 24. 20:19
아래의 정의는 위키피디아에서 가져온 callback(콜백)에 대한 정의이다. 콜백(callback)은 다른 코드의 인수로서 넘겨주는 실행 가능한 코드를 말한다. 콜백을 넘겨받는 코드는 이 콜백을 필요에 따라 즉시 실행할 수도 있고, 아니면 나중에 실행할 수도 있다. 아래는 파이썬 공식 문서의 예제를 변형 시킨 코드이다. import asyncio import datetime import time import random def display_date(end_time, loop, count): now_time = datetime.datetime.now() print(now_time) if (loop.time() + 1.0) < end_time: ran_int = random.randint(0, 3) tim..
-
[Python] Pylint - 정의와 예제를 통해 Python 린트 툴 알아보기Software Development/Python 2020. 9. 3. 19:00
Lint? 린트(lint) 또는 린터(linter)는 소스 코드를 분석하여 프로그램 오류, 버그, 스타일 오류, 의심스러운 구조체에 표시(flag)를 달아놓기 위한 도구들을 말합니다. 이 용어는 C 언어 소스 코드를 검사하는 유닉스 유틸리티에서 왔습니다. Pylint란 Pylint는 Python 코드의 에러를 확인하고, 표준을 적용시키며 코드의 이상한 부분을 찾는 도구입니다. 또한 특정 유형의 에러를 찾을 수 있으며, 코드 일부분에 대한 리팩토링을 제공하며 코드의 복잡성에 대한 자세한 정보를 제공하기도 합니다. Python에서 다른 종류의 유사한 툴로 pychecker, pyflakes, flake8, mypy 등이 있습니다. Pylint에서 사용하는 기본적인 코딩 스타일은 PEP8이라 보시면 됩니다. ..