Programming
-
애자일 방법론과 TDD 그리고 BDDProgramming 2020. 2. 2. 16:30
개요 클린 코드나 리팩토링 관련된 서적을 읽으면서 자주 등장하는 개념이고 다른 개발 블로그를 둘러봐도 '애자일'한 작업 환경이라던지 TDD 또는 BDD 등의 용어는 자주 접하게 된다. 그중에서도 최근 가장 떠오르는 것은 단연 TDD인데, TDD에 대해서 알아보기 앞서서 애자일 소프트웨어 개발(Agile software development)은 무엇인지를 먼저 알아야한다. 애자일한 방법론이 무엇일까를 고민하면서 등장한 것이 바로 TDD이기 때문이다. 그 이외에 여러가지의 애자일을 실천할 수 있는 다양한 기법들이 존재한다. 이러한 기법들을 살펴보기 전에 애자일은 무엇일까, 애자일하게 작업한다는 것은 무엇을 의미할까?에 대해서 우선 알아보자. 애자일 방법론 애자일 소프트웨어 개발 선언 우리는 소프트웨어를 개발..
-
[SQL] DCL, DML, DDL 약어 설명과 명령어Programming 2020. 1. 28. 00:35
개요 SQL이란 Structured Query Language. 구조화 질의문의 약어로서 관계형 데이터베이스 관리 시스템(RDBMS)의 데이터를 관리하기 위해 설계된 특수한 목적의 언어이다. 쉽게 말해서 관계형 데이터베이스에서 한정적으로 사용되는 프로그래밍 언어라고 할 수 있다. SQL 문법에는 크게 세 가지 종류로 구분될 수 있는데, 바로 DDL, DML, DCL이 바로 그것이다. 면접 뿐만이 아니라 컴퓨터 활용능력, 정보처리 시험에서도 자주 등장하는 내용이므로 간략하게 정리하면 좋다. 흔히 DB에서 말하는 CRUD는 모두 이 명령어들을 통해서 처리되고 실행된다. DDL(Data Definition Language) : 데이터 정의 언어로 풀어 말할 수 있으며 스키마를 정의 하거나 조작하기 위해 사용한..
-
SSL 인증서 적용이 실패했다면Programming 2019. 12. 17. 12:41
메일이나 SSL 인증서를 제공하는 사이트에서 다운받은 crt파일이 있을 것이다. 보통은 2개인데, 3개 이상이 될 수도 있다. 서버에 적용하기 위해서는 bundle파일 하나로 합치는 과정을 거치게 되는데, cat 명령어를 통해서 하나로 합쳐준다. 합치는 순서도 중요한데 도메인 인증서-체인 인증서-루트 인증서 순서이다. 예를들어 cat bundle.crt chain-bundle.crt authority.crt > ssl-bundle.crt 이런식으로 세개의 파일을 합치는데 cafe24의 경우는 이런식으로 이름이 다르다. 당황하지말고 인증서, chain, chain_all순으로 합치면 된다. $ cat ssl.crt chain_ssl.crt chain_all_ssl.crt > ssl.crt 안됐을 때 확인해..
-
(python)날짜로 파일 제목 만들기Programming/python 2019. 12. 9. 10:00
import datetime nowDate = datetime.datetime.now() f = open(nowDate.strftime("%Y-%m-%d_%H%M") + ".txt", "w") f.write(nowDate.strftime("%Y-%m-%d %H:%M") + "\n") line = "텍스트 파일에 들어갈 내용" f.write(line) # 종료 f.close datetime으로 현재 시간을 받아온다. datetime은 기본적으로 2019-12-09 12:11:32.669083 이런 형태를 띄고 있다. 표기법을 바꾸고 싶다면 strftime을 이용해서 %Y-%m-%d %H%M%S 년도, 월, 날, 시,분,초를 표현할 수 있다. 예를들어 위의 코드에 %Y-%m-%d_%H%M은 2019-12-0..
-
큐와 스택은 무엇인가Programming/python 2019. 11. 3. 17:40
큐와 스택은 컴퓨터 과학에서 다루는 여러 가지 자료 구조 중에서도 가장 기본적인 것이다. 두 자료 구조는 '자료를 넣는 동작'과 '자료를 빼는 동작'을 할 수 있으며, 들어간 자료가 일렬로 보관된다는 공통점이 있다. 하지만 자료를 넣고 뺄 때 동작하는 방식이 서로 다르다. 큐(Queue) 큐는 '줄 서기'에 비유할 수 있다. 택시를 타기 위해서 줄을 서는 과정을 생각해보면 쉽다. 새로 택시 정류장에 도착한 사람은 맨 뒤로 가서 줄을 서고, 택시가 도착하면 그 줄의 맨 앞에 선 사람이 줄을 빠져나가 택시에 탄다. 가장 먼저 줄을 선 사람이 가장 먼저 택시를 타게 된다. 즉 FIFO ( First In First Out ) 선입선출 이라고 불리며, 프로세스 처리, CPU 관리에서 많이 사용된다. 큐에 자료를..
-
추상클래스와 인터페이스의 공통점과 차이점Programming/java 2019. 11. 3. 02:20
추상클래스와 인터페이스를 알아보기 앞서 인터페이스와 추상클래스가 언제, 그리고 왜 쓰이는지 그 목적성에 대해서 분명히 알고 개념을 익힌다면 더욱 공통점과 차이점을 명확하게 할 수 있을 것이다. 추상 클래스 클래스가 미완성이라는 것은 멤버의 개수에 관계된 것이 아니라, 단지 미완성 메서드(추상메서드)들 포함하고 있다는 의미이다. 추상클래스로 인스턴스는 생성할 수 없다. 추상클래스는 상속을 통해서 자손클래스에 의해서만 완성될 수 있다. 즉 상속을 강제하기 위한 추상메서드를 하나 이상 가진 클래스를 말한다. 추상클래스는 다음과 같은 특징을 가지고 있다. 공통 구현을 상위 클래스에 뽑아내려고 사용 자신의 생성자로 객체 생성 불가능 하위 클래스를 참조하여 상위 클래스의 객체를 생성 하위 클래스를 제어하기 위해 사..
-
오버로딩과 오버라이딩의 차이점Programming/java 2019. 10. 28. 19:45
지난 포스팅의 객체지향 프로그래밍에서 다형성을 설명할 때, 하나의 클래스 내부에 같은 이름의 기능을 여러 개 정의하거나 상위 클래스의 기능을 하위 클래스에서 다시 정의하는 것, 즉 오버라이딩과 오버로딩에 대해서 간략하게 짚고 넘어갔었다면 이번에는 오버라이딩과 오버로딩이 구체적으로 어떻게 사용되는지. 또, 어떤 차이점을 가지고 있는지에 대해서 알아보자. 우선 다형성이란 하나의 메소드나 클래스가 있을 때 이것들이 다양한 방법으로 동작하는 것을 말한다. 예를들면 키보드나 스마트폰을 예를 들어보자면 키보드는 같은 버튼의 동작 방법을 가지고 있더라도 ESC는 취소, Enter는 실행의 목적을 가지고 있고 스마트폰의 키패드 또한 문자나 게임 등의 모양은 같지만 다른 기능들을 수행하는 것들을 말한다. 자바에서는 주로..
-
MVC? 싱글톤? 여러가지 디자인 패턴들Programming 2019. 10. 28. 02:58
디자인 패턴의 개요 여러 사람이 협업을 하며 프로그램을 개발 할 때 다른 사람이 작성한 코드나 기존의 코드를 이해하는 것은 어렵다. 이런 코드들은 유지 보수를 함에 있어서 새로운 기능을 추가하거나 최적화를 하기에 힘든 구조적인 결함을 가지고 있다. 이를 최소화하기 위해서 디자인 패턴은 등장했다. 특수한 경우의 프로그래머가 아니라면 프로그래밍을 하면서 만나는 문제가 지구상에서 유일한 문제일 경우는 거의 없기 때문에 앞서 이미 많은 수많은 오류들을 피하는 방법을 패턴화하게 된다면 좀더 버그가 발생하는 폭을 줄이고 수정하는데(발생하는 숫자가 아니라 예외를 찾는데 조금더 덜 시간을 사용하게 됨) 최소한의 시간을 들일 수 있게 된다. 즉 디자인 패턴은 프로그램 등을 개발하는 중에 발생했던 문제점들을 정리 및 특정..