본문 바로가기

분류 전체보기256

어떤 DB를 사용해야 할까 ? CAP 이론 안녕하세요. 현재 세상에는 수많은 데이터를 저장할 수 있는 서비스가 많이 나와있습니다. 그런데 이런 와중에 내가 만드는 시스템은 어떤 Database를 사용해야 좋을까요? 확장성은 어느정도로 가져가야할지, 사용할 수 있는 비용은 어느정도인지, 팀의 기술 숙련도는 어떤지... 등등 여러가지를 생각해야합니다. 오늘은 여러분의 database 선택의 한가지 척도로써 도움을 줄 수 있는 CAP 이론에 대해서 이야기 해보고자 합니다. CAP 이론 CAP 이론(또는 Brewer`s theorem)이란 Network로 연결된 분산된 데이터베이스 시스템은 일관성(Consistency), 가용성(Availability), and 분할 내구성(Partition Tolerance)의 3가지 특성중 2가지 특성만을 충족 할수.. 2020. 6. 13.
[python] java 개발자가 배우는 python - List 안녕하세요. 오늘은 java 개발자가 배우는 python의 2번째 시간입니다. Java의 배열 및 List와 비교하여 python의 list는 어떤지 확인해보도록 하겠습니다. List python의 기본형 타입으로 int, float, string을 배웠습니다. 이런 데이터가 여러개의 순차적인 묶음으로써 필요할 때가 많이 있습니다. 이때 사용할 수 있는 python의 타입이 List 타입입니다. java에서 List java에서는 기본적으로 배열을 사용할 수 있습니다. java의 배열은 일반적으로 아래와 같이 사용합니다. // type[] name = new type[size] int[] array = new int[10]; 위와같이 선언하면 array는 int형의 10개의 사이즈의 크기를 가지는 메모리.. 2020. 6. 8.
[python] java 개발자가 배우는 python - NoneType 안녕하세요. 오늘은 java 개발자가 배우는 python이라는 주제로 찾아뵙습니다. 오늘 알아볼 것은 python의 NoneType입니다. java와 유사한 개념은 무엇이며 어떻게 사용하는지 알아보도록 하겠습니다. NoneType python에서 NoneType은 값이 존재하지 않음(None Object)을 나타내는 Type입니다. java에서 null과 유사한 의미를 가진다고 할 수 있을 것 같습니다. 하지만 java의 null과는 근본적으로 다른 점도 존재합니다. python의 함수는 반드시 return이 있습니다. 즉, java에서의 void 형식의 메서드가 존재하지 않는다는 것입니다. 아래에서 예제로 비교를 해보겠습니다. public void compute() { ...로직... } java 에서.. 2020. 6. 2.
[python] python - 기본 데이터 타입 안녕하세요. 오늘부터는 python을 공부하면서 정리한 것을 포스팅하고자합니다. 저도 이제 막 python을 시작하는 입장이라 여러분들에게 팁을 알려드리긴 힘들것이라 생각합니다. 하지만 python을 이용하면서 알아두어야 할 정보라던지 필요하겠다라고 생각되는 부분을 공유드리고자 합니다. 오늘은 python의 변수에 대해서 한번 이야기 해보고자 합니다. 그리고 오늘 과정은 python의 대화형 모드(interactive mode)를 통해 확인해보도록 하겠습니다. python3 기준입니다. python2와는 다름을 알려드립니다. 데이터 타입 python의 데이터 타입은 다른 여느 언어들과 마찬가지로 기본 타입과 객체 타입으로 나누어 집니다. 기본타입에 대해서 먼저 알아보고 객체타입에 대해서 알아보도록 하겠습.. 2020. 5. 31.
[주절주절] python 최근 python을 개인적으로 공부하고 있습니다. 처음 시작은 간단한 util을 만드는 일이었습니다. json scheme를 java object model로 바꾸는 작업이 필요했습니다. 처음에는 노가다로 작업을 했었는데... 양이 점점 많아지니 자동화가 필요하겠다 싶었습니다. 작업은 아래와 같습니다. { "name" : "sabarada", "age" : 28 } 이런 json scheme를 아래와 같이 object로 변경하는 것입니다. @Getter @Setter @ToString public clss Person { private String name; private int age; } 문제는 이해는 되셨을거라 생각합니다. 처음에는 지금 까지 잘 이용해 온 java를 이용해서 개발해야지라고 생각했습.. 2020. 5. 29.
[gradle] gradle을 이용하여 java 프로젝트 만들기 안녕하세요. 오늘은 gradle 빌드 도구에 대해서 알아보는 첫번째 시간입니다. 여러분들과 함께 진행해볼 내용은 gradle을 이용하여 java 프로젝트를 만드는 것입니다. gradle로 java 프로젝트를 만든다? 어떤거라고 생각하시나요? 일반적으로 프로젝트를 만든다면 IDE를 이용하여 만듭니다. intellij나 STS로 project를 gradle로 생성해서 만듭니다. 하지만 프로젝트 생성은 gradle의 명령어 만으로도 만들 수 있다는 사실 알고 계셨나요? 오늘은 gradle을 이용해서 java project를 생성해보도록 하겠습니다. 오늘 진행하는 프로젝트에서 제가 사용한 환경은 MAC입니다. windows환경은 다를 수 있음을 알려드립니다. gradle 설치 gradle 명령어를 이용하려면 먼.. 2020. 5. 17.
빌드 도구가 뭐에요 ? 안녕하세요. 저는 현재 Back-End 개발자로써 Java를 메인 언어로 삼으며 개발을 해오고 있습니다. Java 개발자라면 일반적으로 Spring 프레임워크를 쓸것이고 중요한건 Java 문법에 대한 이해와 Spring 프레임워크에 대한 이해 일거라고 생각합니다. 사실 이렇게 2개만 잘 사용하더라도 아무런 지장이 없습니다. Spring 프레임워크로 개발을 한다. 그러면 우리는 Java만 알면 될까요? 문제는 없습니다만 또 사용하는게 하나 있습니다. maven, gradle과 같은 빌드 도구들입니다. 오늘은 빌드 도구에 대해서 알아보겠습니다. 빌드 도구란? 빌드 도구는 빌드 자동화를 시켜주는 실행가능한 프로그램만들어 주는 프로그램을 말합니다. 여기서 빌드 자동화란 단어가 나옵니다. 빌드 자동화라는 말은 위.. 2020. 5. 15.
[UML] 시퀀스 다이어그램 이해하기 [UML] 클래스 다이어그램 이해하기 [UML] 시퀀스 다이어그램 이해하기 안녕하세요. 우리는 이전 포스팅에서 클래스 다이어그램에 대해서 이야기 해본적이 있습니다. 구조 다이어그램(Structural Diagram)의 대표로써 이야기 했었지요. 이어서 오늘은 동적 다이어그램(Behavioral Diagram)의 대표격인 시퀀스 다이어그램에 대해서 알아보는 시간을 가져보도록 하겠습니다. 정의와 목적 시퀀스 다이어그램(Sequence Diagram)은 어떠한 순서로 어떤 객체들과 어떻게 생호작용했는지를 표현하는 다이어그램입니다.이 다이어그램은 현재 존재하는 시스템이 이떠한 시나리오로 움직이고 있는지를 나타내는데 장점을 가지고 있습니다. 시퀀스 다이어그램을 이용하면 API 등의 유즈케이스를 디테일하게 알 수 .. 2020. 5. 15.
[java8] java의 주요 functional interface - Predicate, Operator 안녕하세요. 오늘은 저번 포스팅에 이어서 functional interface를 알아보는 2번째 시간입니다. 오늘 알아볼 Functional Interface는 Predicate, Operate 2가지입니다. Predicate Predicate Interface는 T에대한 조건에 대해서 true / false를 반환하는 Fucntional Interface입니다. Predicate로 사용되며 T는 파라미터입니다. 해당 파라미터에 대해서 true / false를 return 할 수 있도록 작성해주면 됩니다. Predicate interface는 아래와 같습니다. @FunctionalInterface public interface Predicate { /** * Evaluates this predicate .. 2020. 5. 11.
[java8] java의 주요 functional interface - function, supplier, consumer 안녕하세요. 오늘은 java의 functional interface에 대해서 몇가지 알아보는 시간을 가지도록 하겠습니다. functional Interface는 java8에서 나와 주로 람다식으로 자주사용되고 있으며 함수형 패러다임을 달성할 수 있도록 하는데 도움을 주고 있습니다. 해당 interface들은 java.util.function 패키지에 모두 포함되어 있습니다. 오늘은 이런 functional interface와 이용에 대해서 알아보도록 하겠습니다. Function Function은 1개의 파라미터를 받아서 1개의 결과를 반환하는 funtional interface입니다. Function로 사용할 수 있으며 T는 받는 파라미터, R은 반환하는 값입니다. 실제 인터페이스는 아래와 같습니다. @.. 2020. 5. 9.
[Junit5] Assertions과 Assumptions - Assumptions편 안녕하세요. 오늘은 JUnit5의 3번째 시간입니다. 이번 포스트에서는 Assertions와 Assumption중 Assumptions에 대해서 좀 더 자세히 알아보는 시간을 가지도록 하겠습니다. Assumptions Assumption 구문은 테스트 메서드가 특정한 조건에 대해서 실행하고자 할 때 사용하는 구문입니다. JUnit5에서는 org.junit.jupiter.api.assumptions 패키지의 내용물로 사용할 수 있습니다. 사전조건 테스트를 위한 사전 조건으로 사용하는 Class는 아래와 같습니다. 해당 Class는 사칙연산을 담당하는 클래스로 add, multiply, divide를 메서드로 가지고 있습니다. private final Calculator calculator = new Cal.. 2020. 5. 7.
[Junit5] Assertions과 Assumptions - Assertions편 안녕하세요. 오늘은 저번 포스팅에 이어서 JUnit5에서 제공하는 Assertions과 Assumptions에 대해서 조금더 디테일하게 알아보는 시간을 가져보도록 하겠습니다. 내용은 JUnit5 Guide에 나오는 내용을 기본으로 제 나름대로의 필요한 내용을 추가하는 식으로 진행하도록 하겠습니다. Assertions는 번역하면 단정문이라고 합니다. assertions는 만약 성공하지 않으면 테스트를 실패처리를 하기 위해서 사용합니다. Assumption은 번역하면 가정문이라고 합니다. assumptions는 특정 상황에서만 test문을 실행하고자 할때, 반대로 특정 상황에서만 실행하지 않고자할 때 사용하는 키워드입니다. 여기서 말하는 특정 상황이라는 것은 local환경 등을 들 수 있습니다. Assert.. 2020. 5. 3.