memostack
article thumbnail
CI/CD 개념 정리
ETC 2020. 7. 8. 21:04

CI Continuous Integration의 약자로 '지속적인 통합'이란 뜻 그래서, 지속적인 통합이란? 정기적으로 짧은 시간에 빌드하고 테스트, 병합하는 것을 뜻한다 상대적으로 짧은 시간동안 병합하므로, 개발자들 간의 코드 충돌을 피할 수 있다. 단점이라고 한다면 자주 병합하므로 번거로울 수 있다는 점. 테스트의 종류 - 단위 테스트 (Unit Test) - 통합 테스트 (Integration Test) CD Continuous Delivery 또는 Continuous Deploy의 약자로 '지속적인 배포'란 뜻 지속적인 배포란? 서비스 배포의 자동화라할 수 있다. 빌드, 테스트, 배포를 자동화하기 때문에 번거롭게 개발자가 개입할 필요 없어 비용 줄일 수 있고, 사람에 의한 실수를 방지할 수 있어서..

Javascript 연, 월, 일 계산하기 (날짜 조작)
Frontend/HTML, CSS, JS 2020. 7. 3. 21:31

Javascript 에서 날짜 조작하기 현재 시간 가져오기 // 오늘 const today = new Date(); console.log(today.toLocaleString()); // 특정 날짜 const date = new Date(2020, 7, 2); console.log(date.toLocaleString()); 연도 더하기/빼기 setFullYear()와 getFullYear()를 활용 // 내년 const nextYear = new Date(2020, 7, 2); nextYear.setFullYear(nextMonth.getFullYear() + 1); console.log(nextYear.toLocaleString()); 월 더하기/빼기 setMonth()와 getMonth()를 활용 /..

React Native XML 파싱
Mobile/React Native 2020. 7. 3. 21:07

xml2js 추가 xml 파싱을 위하여 xml2js 라이브러리를 추가한다. $ yarn add xml2js 사용 import {parseString} from 'xml2js'; parseString를 사용하기 위해 import를 한다. const url = ""; fetch(url) .then((response) => response.text()) .then((responseText) => { parseString(responseText, (err, result) => { if (err !== null) { console.log('Fail get data.'); } else { console.log(result); } }); }) .catch((error) => { console.log('Error fe..

article thumbnail
백준 10996번 - 별 찍기 - 21 (Python3)
Algorithm/Beakjoon 2020. 6. 29. 20:55

본 문제는 백준 알고리즘(https://www.acmicpc.net/)에게 있습니다. 문제 예제를 보고 규칙을 유추한 뒤에 별을 찍어 보세요. 예제 # 입력 1 # 출력 * # 입력 2 # 출력 * * * * # 입력 3 # 출력 * * * * * * * * * Coding - Python3 규칙 찾기 n이 1일때는 별(*) 하나를 반환하다. 나머지 경우 (n이 2이상인 경우) 2*n 줄 만큼 별이 그려진다. 한 열의 길이는 n이다. 별(*)과 띄어쓰기( )가 번갈아가며 나온다. 홀수번째 줄은 별(*)부터 시작한다. 짝수번째 줄은 띄어쓰기( )부터 시작한다. # -*- coding: utf-8 -*- import sys def solution(k): if 1 == k: print("*") return r..

article thumbnail
react native navigation 사용하기
Mobile/React Native 2020. 6. 23. 23:06

React Native Navigation 사용하기 프로젝트 생성 $ react-native init corona React Native Navigation 모듈 설치 $ cd corona $ yarn add @react-navigation/native $ yarn add react-native-reanimated react-native-gesture-handler react-native-screens react-native-safe-area-context @react-native-community/masked-view $ yarn add @react-navigation/stack 샘플 코드 작성 // In App.js in a new project import * as React from 'react'..

article thumbnail
백준 2446번 - 별 찍기 - 9 (with Python3)
Algorithm/Beakjoon 2020. 6. 23. 21:59

본 문제는 백준 알고리즘(https://www.acmicpc.net/)에게 있습니다. 문제 예제를 보고 규칙을 유추한 뒤에 별을 찍어 보세요. 예제 # 입력 5 # 출력 ********* ******* ***** *** * *** ***** ******* ********* Coding - Python3 상단, 하단을 나눠서 별을 찍는다. 규칙을 파악한다. 상단: 2 * n - 1 (n이 점차 감소) 만약 n = 5 라면, 9, 7, 5, 3, 1 하단: 2 * n - 1 (n이 점차 증가) 만약 n = 5 라면, 1, 3, 5, 7, 9 # -*- coding: utf-8 -*- import sys def solution(num): # 상단 별 for i in range(num, 0, -1): print..

article thumbnail
백준 2523번 - 별 찍기 - 13 (with Python3)
Algorithm/Beakjoon 2020. 6. 22. 21:05

본 문제는 백준 알고리즘(https://www.acmicpc.net/)에게 있습니다. 문제 예제를 보고 규칙을 유추한 뒤에 별을 찍어 보세요. 예제 # 입력 3 # 출력 * ** *** ** * Coding - Python3 for 문 2개를 이용해서 '상단 별'과 '하단 별'을 그린다. # -*- coding: utf-8 -*- import sys def solution(num): # 상단 별 for _ in range(num): print("*" * (_ + 1)) # 하단 별 for _ in range(num - 1, 0, -1): print("*" * _) if __name__ == "__main__": num = int(sys.stdin.readline()) solution(num) 비슷한 문제..

article thumbnail
백준 5543번 - 상근날드 (with Python3)
Algorithm/Beakjoon 2020. 6. 22. 20:42

본 문제는 백준 알고리즘(https://www.acmicpc.net/)에게 있습니다. 문제 상근날드에서 가장 잘 팔리는 메뉴는 세트 메뉴이다. 주문할 때, 자신이 원하는 햄버거와 음료를 하나씩 골라, 세트로 구매하면, 가격의 합계에서 50원을 뺀 가격이 세트 메뉴의 가격이 된다. 햄버거는 총 3종류 상덕버거, 중덕버거, 하덕버거가 있고, 음료는 콜라와 사이다 두 종류가 있다. 햄버거와 음료의 가격이 주어졌을 때, 가장 싼 세트 메뉴의 가격을 출력하는 프로그램을 작성하시오. 예제 # 입력 800 700 900 198 330 # 출력 848 # 입력 1999 1999 100 189 100 # 출력 150 Coding - Python3 버거 종류(첫번째, 두번째, 세번째 줄)에서 가장 작은 값을 고른다. 음료..

article thumbnail
백준 14681번 - 사분면 고르기 (with Python3)
Algorithm/Beakjoon 2020. 6. 22. 20:33

본 문제는 백준 알고리즘(https://www.acmicpc.net/)에게 있습니다. 문제 흔한 수학 문제 중 하나는 주어진 점이 어느 사분면에 속하는지 알아내는 것이다. 사분면은 아래 그림처럼 1부터 4까지 번호를 갖는다. "Quadrant n"은 "제n사분면"이라는 뜻이다. 예를 들어, 좌표가 (12, 5)인 점 A는 x좌표와 y좌표가 모두 양수이므로 제1사분면에 속한다. 점 B는 x좌표가 음수이고 y좌표가 양수이므로 제2사분면에 속한다. 점의 좌표를 입력받아 그 점이 어느 사분면에 속하는지 알아내는 프로그램을 작성하시오. 단, x좌표와 y좌표는 모두 양수나 음수라고 가정한다. 예제 # 입력 12 5 # 출력 1 # 입력 9 -13 # 출력 4 Coding - Python3 if문을 이용하여 x와 y..

article thumbnail
리액트 설치 및 처음 시작하기
Frontend/React 2020. 6. 15. 23:41

NodeJS 설치 https://nodejs.org/ko/ 에서 node.js를 설치한다. 2020/06 기준 최신버전은 14.4, Stable 버전은 12.18이다. 본 글에서는 12.18버전으로 설치한다. 터미널에서 npm -version을 입력해보자 # npm -version 6.14.4 위와 같이 나오면 설치 완료 참고 yarn 설치 yarn은 npm과 같이 패키지 매니저 프로그램으로 개발자 취향에 맞게 nbm을 쓰거나 yarn을 쓴다. 설치는 자유 (npm을 사용해도 됨) 본 글에서는 homebrew를 이용해서 yarn을 설치한다. # brew install yarn 리액트(React) 프로젝트 생성 npm 또는 yarn을 이용하여 react 프로젝트를 생성한다. 아래 명령어는 npm 또는 ya..

article thumbnail
MAC OS 재설치하기 (맥북 포맷)
DevOps/MacOSX 2020. 6. 13. 12:45

포맷을 진행할 맥북의 정보구매일: 2019.04 맥북 포맷하기순서는 포맷을 한뒤에 OS를 다시 설치한다. 1. 'MacOS 복구 모드'를 실행 (맥북을 키면서 Command + R 을 누른다) 2. 디스크 유틸리티를 들어간다. 3. 지우려는 디스크를 선택하고 '지우기'를 누른다. 3.1. 이름: 원하는 이름으로 디스크명을 바꿔준다. (옵션)3.2. 포맷: APFS 또는 Mac OS 저널링(확장)을 선택 4. 데이터도 3번과 동일하게 작업 5. 완료 후 디스크 유틸리티를 종료한다. 6. Mac OS를 다시 설치한다. 7. 설치 후 기본 세팅 및 설정을 해준다. 8. 사용한다. 참고https://support.apple.com/ko-kr/HT208496Mac의 디스크를 지우는 방법디스크 유틸리티를 사용하여 ..

article thumbnail
리액트 시작 - 왜 리액트인가?
Frontend/React 2020. 6. 11. 21:33

서론 자바 스크립트 자바스크립트는 한때 웹 브라우저에서 간단한 연산을 하거나 시각적인 효과를 보여주기 위한 용도로 씀. 현재는 웹 애플리케이션에서 가장 핵심적인 역할을 함. 더 나아가 서버 사이드, 모바일, 데스크 톱 애플리케이션에서도 사용함. 자바스크립트 기반 프레임워크 자바스크립트만으로 대규모 프로젝트를 진행할 수 있게 됨. 하지만, 순수 자바스크립트로는 어려움이 있음. 대규모 프로젝트를 어떻게 관리할까? AngularJS, Backbone.js, Derby.js, Ember.js, Ext.js, Knockback.js, Sammy.js, PureMVC, Vue.js ... 위 프레임워크들은 아래와 같은 방법으로 구조화를 함 MVC: Model View Controller MVVM: Model Vie..

article thumbnail
Design Pattern - Factory Method Pattern (팩토리 메소드 패턴)
Study/Design Pattern 2020. 6. 7. 22:38

Factory Method Pattern 팩토리 메소드 패턴은 '객체'와 '객체 생성 클래스'를 따로 분리하는 디자인 패턴이다. 객체 생성 클래스가 따로 분리되어 있어서, 객체 생성 변화에 유연하게 대비할 수 있다. 팩토리 메소드 패턴을 이용하기 위해서는 Strategy Pattern과 Template Pattern의 개념을 아는 것이 좋다. (자주 사용됨) 예제 요구사항 게임 아이템을 만드는 아이템 생성자를 만든다. 아이템의 정보는 DB에 있다. 아이템 불법 생성을 막기 위해, 아이템 생성 로그를 남긴다. 아이템을 상속받아 여러개의 세부 아이템(물약, 검, 갑옷 등등)을 구현한다. 아이템 생성자 public abstract class ItemCreator { public Item create() { /..

article thumbnail
Design Pattern - Template Method Pattern (템플릿 메소드 패턴)
Study/Design Pattern 2020. 6. 7. 20:16

Template Method Pattern 템플릿 메소드 패턴은 일정한 구조의 프로세스를 가진 경우, 사용하기 좋은 디자인 패턴 코드의 중복을 줄일 수 있고 유지보수하기에도 편리함. 일정한 구조의 프로세스? 특정 알고리즘이 A -> B -> C 와 같이 항상 A 작업을 수행하고, B작업, C작업을 수행한다면, 각 작업들을 메소드로 구현한다. A -> B -> C 순으로 실행되도록 실행 메소드를 구현한다. (아래 수도코드 참고) func doA: // A 로직 수행 func doB: // B 로직 수행 func doC: // C 로직 수행 func doSomething: doA doB doC 예제 요구사항 계정 로그인을 한다. 로그인의 동작 순서는 아래와 같다. 사용자의 아이디, 비밀번호 복호화 유효한 아..

article thumbnail
[공유] 클래스 다이어그램 그리기 좋은 웹 서비스
ETC 2020. 6. 7. 17:52

클래스 다이어그램, Flow chart 와 같이 문서 작성에 도움을 주는 그래프를 그려주는 사이트 https://app.diagrams.net/ Flowchart Maker & Online Diagram Software Flowchart Maker and Online Diagram Software diagrams.net (formerly draw.io) is free online diagram software. You can use it as a flowchart maker, network diagram software, to create UML online, as an ER diagram tool, to design database schema, to build BPM app.diagrams.net

article thumbnail
Design Pattern - Strategy Pattern (스트래티지 패턴)
Study/Design Pattern 2020. 6. 7. 17:21

스트래티지 패턴 전략을 쉽게 바꿀 수 있도록 해주는 디자인 패턴 행위(Behavior)들을 캡슐화하여 동적으로 자유롭게 바꿀 수 있는 패턴 예제 요구사항 게임 케릭터와 무기를 생성하여, 케릭터가 무기를 쥘 수 있음. 무기의 종류 칼 (Sword) 총 (Gun) 무기의 행위 공격 (Attack) 케릭터가 들고 있는 무기는 변경이 자유롭게 가능해야 함. 무기 만들기 public interface Weapon { void attack(); } 무기(Weapon)라는 인터페이스를 생성. (자세한 내용은 implements하여 구현) 무기로 공격(attack)을 할 수 있으므로, attack()이라는 메소드를 생성 public class Knife implements Weapon { @Override public..

article thumbnail
시간 복잡도 (빅오, 빅오메가, 빅세타)
Algorithm 2020. 6. 3. 22:52

시간 복잡도란? 시간 복잡도는 특정 알고리즘이 얼마나 빠르게 수행이되는지 표현하기 위해 사용된다. 즉, 시간복잡도는 쉽게 말해서 알고리즘의 실행 시간을 말한다. 시간 복잡도의 종류 빅오 (big-O) 표기법 시간의 상한 (최악의 경우) 해당 알고리즘은 big-O 보다 더 오래 걸릴 수 없다. 빅오메가 (big-Omega) 표기법 시간의 하한 (최선의 경우) 해당 알고리즘은 big-Omega 보다 더 빠를 수 없다. 빅세타 (big-theta) 표기법 평균적인 경우, 딱 맞는 수행 시간 big-O 와 big-Omega 를 하나로 합쳐 표현한것과 같다. 예를들어, 수행시간이 빅오가 N, 빅오메가가 N 이라면, 빅세타도 N 이다. (아래 그림 참조) 가장 많이 쓰이는 표기법 보통은 빅오와 빅세타를 많이 사용하..

article thumbnail
리팩토링(Refactoring)에 대해서
ETC 2020. 6. 3. 19:35

리펙토링이란? 리펙토링은 기존의 코드를 외부의 동작 방식에는 변화 없이 내부 구조를 변경해서 재구성하는 작업 또는 기술을 말한다. 리펙토링을 통해 얻을 수 있는 이점 코드를 이해하기 편해짐 변화에 효율적으로 대응할 수 있음 생산성이 높아짐 코드의 품질이 좋아짐 유지 보수하기 편함 Example (적절한 예인지 모르겠으나, 한가지 예를 만들어봤다) 예를들어서, 정보를 담고 있는 A.txt, B.txt 파일 2개를 만들고, text_dir 라는 특정 디렉토리에 복사하는 프로그램을 작성했다. import os import shutil dir_path = "~/text_dir" # A.txt a_file_path = "~/A.txt" with open(a_file_path, "w") as f: f.write("..

article thumbnail
Java 의 주석 (한 줄 주석, 여러줄 주석, 문서 주석)
Language/JAVA 2020. 5. 29. 14:59

자바의 주석 주석은 코드에 영향을 미치지 않는 코드를 말한다. (즉, 컴파일러가 컴파일하지 않고 무시하고 넘어감) Java의 주석에는 3종류가 있다. 한 줄 주석 // 를 이용한다. public class HelloWorld { public static void main(String[] args) { String comment = "Hello, Java!"; // 이건 한줄 주석 } } 여러 줄 주석 /* */ 를 이용한다. public class HelloWorld { public static void main(String[] args) { /* 이건 여러줄 주석 String greet = "Hello, World!"; System.out.println(greet); System.out.println(..

article thumbnail
자바(JAVA)의 개념 및 특징 정리
Language/JAVA 2020. 5. 29. 14:45

프로그래밍이란? 프로그래밍: 컴퓨터에게 일을 시키기 위해 프로그램을 만드는 행위 컴파일: 사람이 이해할 수 있는 고급 언어를 컴퓨터가 이해할 수 있는 기계어로 바꿔주는 일을 뜻 함 컴파일러: 컴파일을 할 수 있는 프로그램 자바의 탄생 1995년 썬 마이크로시스템즈에서 개발한 객체지향 언어 C/C++ 문법을 기본으로하여 개발함 JAVA의 특징 플랫폼에 독립적이다. 컴파일된 동일한 코드는 JVM만 설치되어 있다면, 운영체제에 상관없이 실행할 수 있다 객체지향 프로그램으로 유지보수와 확장성이 좋다. 풍부한 라이브러리가 제공되어 오픈소스와 연동이 쉽다. JVM의 GC(Garbage Collector)에 의해 사용되지 않는 메모리를 자동으로 정리해준다.