분류 전체보기(472)
-
[디자인 패턴] Command Pattern
Command Pattern 명령을 명세하고 있는 클래스를 만들어 호출될 때 마다 명령을 기록해두었다가 재사용하기도 하고 관리하고 싶을 때 사용하면 되는 패턴입니다. 흔히 이벤트를 자주 사용하는 GUI, app에 사용되기도 합니다. 파일 구조 UML Command.javapackage command; public interface Command{ public abstract void execute(); }어떤 클래스가 Command Interface를 구현하여 실행하냐에 따라 다르지만 execute는 무언가를 실행하는 메소드입니다. MacroCommand.javapackage command; import java.util.Stack; import java.util.Iterator; public class..
2019.02.08 -
Mac에서 Maria DB설치하기
Mac에서 Maria DB 설치하기 데이터 베이스를 둘다 사용해야 할 일이 생겨서 뭘쓸까 고민하던 중 주위에서 Maria DB를 많이 들어서 입문하려고 한다. Oracle 딱한번만 써보고 평소에는 noSQL만 썼었는데 noSql이랑 잘비교해가면서 써야겠다. 일단 정보를 찾아보니 MySQL이랑 거의 같다고 한다. MySQL이 Oracle로 넘어가면서 라이센스가 불안해져서 만들어진 것이 MariaDB다. 마리아 db는 GPL v2 라이센스를 따른다고 한다. 그럼 이제 맥에서 설치해보도록 하겠다. 1. brew install mariadb 2. 실행, 중단, 상태 확인 mysql.server startdb 서버 시작 필자는 처음에 이명령어를 실행 후 오류가 났었는데 Stackoverflow를 통해 해결할 수 ..
2019.02.07 -
시간 표현하기
c언어로 시간 표현하기 알고리즘 문제를 푸는 중 시간표현하기 문제가 나왔다. 예전에 자바와, 자바스크립트, 파이썬으로 해본적이 있었지만 c언어로는 경험이 없어정리해두면 좋을 것 같아 포스트로 작성하려고 한다. #include #include int main() { time_t timer; struct tm *t; timer = time(NULL); // 현재 시각을 초 단위로 얻기 t = localtime(&timer); // 초를 분리하여 구조체에 넣기 printf("%d년\n", t->tm_year + 1900); // 년도가 1900 빼져있는 상황이다. printf("%02d월\n", t->tm_mon + 1); // month 0 ~ 11 printf("%02d일\n\n", t->tm_mday);..
2019.02.06 -
[디자인 패턴] Proxy Pattern
Proxy Pattern Proxy Pattern은 하나의 객체에게 모든일을 맡기는 것이 아니라 대리인을 만듭니다. 대리인이 처리할 수 있는 일은 대리인이 처리하게 만들고 그 이외의 일들은 자기가 처리하게 만들어줍니다. 그래서 주인의 과부화를 막아주는 역활을 합니다. 특이점 Proxy 패턴을 사용해서 속도 올리기 이번에 사용할 예제는 간단한 프로그램이기 때문에 크게 작용하진 않지만 초기화에 큰 시간이 드는 프로그램에서는 Proxy Pattern에서는 크게 적용할 것입니다. Proxy의 다양한 종류 Http Proxy 웹서버와 클라이언트 사이에 웹페이지의 캐싱을 실행하는 소프트웨어 입니다. 페이지의 캐싱 웹브라우저가 하나하나 웹서버에 접속하여 페이지를 취득하는게 아니라 Proxy가 캐쉬해서 어떤 페이지를 ..
2019.02.05 -
[디자인 패턴]FlyWeight 패턴(플라이웨이트 패턴)
FlyWeight 패턴 FlyWeight 패턴은 이름 그대로 더 가볍게 프로그래밍을 할 수 없을까 해서 만들어진 패턴이다. new를 통해 객체를 한번만 만들고 필요할 때 마다 사전에 만들어진 객체를 공유하여 제공하는 방법입니다. 주의할 점 특정한 객체를(새 객체가 아니라 공유된 객체) 바꾸어주면 여러 장소에 영향을 미칠 수 있습니다. 그러니 이부분을 고려하여 코드를 작성해야할 것 같습니다. UML BigChar.javaimport java.io.*; public class BigChar{ private String fontdata; public BigChar(char charname){ try{ BufferedReader reader = new BufferedReader( new FileReader("b..
2019.01.31 -
[디자인 패턴] State패턴[상태 패턴]
State패턴 State는 코드내의 상태를 클래스로 분류하여 상태에 따라 다른 실행결과가 만들게 해주는 패턴이다. 얘기만 들어보면 이전에 공부했던 전략패턴이랑 비슷한 느낌이 든다. 하지만 둘에게는 현저히 다른 차이점이 있다. State 패턴 클라이언트가 아닌 코드 내부의 분기에 의해서 상태가 변한다. strategy 패턴클라이언트가 전략을 선택하여 코드를 실행시킬 수 있다. 상태를 나누면 가져올 장점이 무엇이 있을까? 특정한 문제를 한번에 다 풀려고 한다면 큰 어려움이 발생합니다. 분할해서 코딩을 하게되면 작은문제 부터 차근차근 해결하게됩니다. 여기서도 분할없이 사용하게 된다면 if Else문을 통해서 엄청나게 긴 분기가 발생할 수 있습니다. 상태에 의존한 처리 아직 예제 코드를 작성하지 않았지만 상태 ..
2019.01.31