gyuwon95의 등록된 링크

키자드에 등록된 총 149개의 포스트를 확인하실 수 있습니다.

Tistory

[백준] 1715번 : 카드 정렬하기

https://www.acmicpc.net/problem/1715 1715번: 카드 정렬하기 정렬된 두 묶음의 숫자 카드가 있다고 하자. 각 묶음의 카드의 수를 A, B라 하면 보통 두 묶음을 합쳐서 하나로 만드는 데에는 A+B 번의 비교를 해야 한다. 이를테면, 20장의 숫자 카드 묶음과 30장 www.acmicpc.net 문제 정렬된 두 묶음의 숫자 카드가 있다고 하자. 각 묶음의 카드의 수를 A, B라 하면 보통 두 묶음을 합쳐서 하나로 만드는 데에는 A+B 번의 비교를 해야 한다. 이를테면, 20장의 숫자 카드 묶음과 30장의 숫자 카드 묶음을 합치려면 50번의 비교가 필요하다. 매우 많은 숫자 카드 묶음이 책상 위에 놓여 있다. 이들을 두 묶음씩 골라 서로 합쳐나간다면, 고르는 순서에 따라서 비..

Tistory

[백준] 4796번 : 캠핑

https://www.acmicpc.net/problem/4796 4796번: 캠핑 입력은 여러 개의 테스트 케이스로 이루어져 있다. 각 테스트 케이스는 한 줄로 이루어져 있고, L, P, V를 순서대로 포함하고 있다. 모든 입력 정수는 int범위이다. 마지막 줄에는 0이 3개 주어진다. www.acmicpc.net 문제 등산가 김강산은 가족들과 함께 캠핑을 떠났다. 하지만, 캠핑장에는 다음과 같은 경고문이 쓰여 있었다. 캠핑장은 연속하는 20일 중 10일동안만 사용할 수 있습니다. 강산이는 이제 막 28일 휴가를 시작했다. 이번 휴가 기간 동안 강산이는 캠핑장을 며칠동안 사용할 수 있을까? 강산이는 조금 더 일반화해서 문제를 풀려고 한다. 캠핑장을 연속하는 P일 중, L일동안만 사용할 수 있다. 강산이..

Tistory

[백준] 1439번 : 뒤집기

https://www.acmicpc.net/problem/1439 1439번: 뒤집기 다솜이는 0과 1로만 이루어진 문자열 S를 가지고 있다. 다솜이는 이 문자열 S에 있는 모든 숫자를 전부 같게 만들려고 한다. 다솜이가 할 수 있는 행동은 S에서 연속된 하나 이상의 숫자를 잡고 모 www.acmicpc.net 문제 다솜이는 0과 1로만 이루어진 문자열 S를 가지고 있다. 다솜이는 이 문자열 S에 있는 모든 숫자를 전부 같게 만들려고 한다. 다솜이가 할 수 있는 행동은 S에서 연속된 하나 이상의 숫자를 잡고 모두 뒤집는 것이다. 뒤집는 것은 1을 0으로, 0을 1로 바꾸는 것을 의미한다. 예를 들어 S=0001100 일 때, 전체를 뒤집으면 1110011이 된다. 4번째 문자부터 5번째 문자까지 뒤집으면..

Tistory

[백준] 1744번 : 수 묶기

https://www.acmicpc.net/problem/1744 1744번: 수 묶기 길이가 N인 수열이 주어졌을 때, 그 수열의 합을 구하려고 한다. 하지만, 그냥 그 수열의 합을 모두 더해서 구하는 것이 아니라, 수열의 두 수를 묶으려고 한다. 어떤 수를 묶으려고 할 때, 위치에 www.acmicpc.net 문제 길이가 N인 수열이 주어졌을 때, 그 수열의 합을 구하려고 한다. 하지만, 그냥 그 수열의 합을 모두 더해서 구하는 것이 아니라, 수열의 두 수를 묶으려고 한다. 어떤 수를 묶으려고 할 때, 위치에 상관없이 묶을 수 있다. 하지만, 같은 위치에 있는 수(자기 자신)를 묶는 것은 불가능하다. 그리고 어떤 수를 묶게 되면, 수열의 합을 구할 때 묶은 수는 서로 곱한 후에 더한다. 예를 들면, ..

Tistory

[Java] 자바 컬렉션들의 시간 복잡도 (Big O)

Java Collection 인터페이스 특징 구현클래스 List 순서가 있는 데이터의 집합, 데이터의 중복을 허용 ArrayList, LinkedList, Stack, Vector Set 객체의 순서가 없으며, 데이터의 중복을 허용하지 않음 HashSet, TreeSet, EnumSet Queue 객체를 입력한 순서대로 저장되며, 데이터의 중복을 허용 PriorityQueue, DelayQueue, LinkedList Map 키(key)와 값(value)의 쌍으로 이루어진 데이터의 집합 순서가 없으며, 키는 중복을 허용하지 않으며 값은 중복을 허용 HashMap, TreeMap, HashTable, Properties List Add Remove Get Contains Data Structure Arra..

Tistory

[백준] 16953번 : A -> B

https://www.acmicpc.net/problem/16953 16953번: A → B 첫째 줄에 A, B (1 ≤ A < B ≤ 109)가 주어진다. www.acmicpc.net 문제 정수 A를 B로 바꾸려고 한다. 가능한 연산은 다음과 같은 두 가지이다. 2를 곱한다. 1을 수의 가장 오른쪽에 추가한다. A를 B로 바꾸는데 필요한 연산의 최솟값을 구해보자. 입력 첫째 줄에 A, B (1 ≤ A < B ≤ 109)가 주어진다. 출력 A를 B로 바꾸는데 필요한 연산의 최솟값에 1을 더한 값을 출력한다. 만들 수 없는 경우에는 -1을 출력한다. 풀이 방법 문제의 해결을 위해 A->B로 바꾸기 위해 많은 경우의 수를 고려해봤는데 답이 떠오르지 않았다. 다른 풀이를 약간 참고해보니 B로부터 A를 도출하는..

Tistory

[백준] 1080번 : 행렬

https://www.acmicpc.net/problem/1080 1080번: 행렬 첫째 줄에 행렬의 크기 N M이 주어진다. N과 M은 50보다 작거나 같은 자연수이다. 둘째 줄부터 N개의 줄에는 행렬 A가 주어지고, 그 다음줄부터 N개의 줄에는 행렬 B가 주어진다. www.acmicpc.net 문제 0과 1로만 이루어진 행렬 A와 행렬 B가 있다. 이때, 행렬 A를 행렬 B로 바꾸는데 필요한 연산의 횟수의 최솟값을 구하는 프로그램을 작성하시오. 행렬을 변환하는 연산은 어떤 3×3크기의 부분 행렬에 있는 모든 원소를 뒤집는 것이다. (0 → 1, 1 → 0) 입력 첫째 줄에 행렬의 크기 N M이 주어진다. N과 M은 50보다 작거나 같은 자연수이다. 둘째 줄부터 N개의 줄에는 행렬 A가 주어지고, 그 ..

Tistory

[백준] 1260번 : DFS와 BFS

https://www.acmicpc.net/problem/1260 1260번: DFS와 BFS 첫째 줄에 정점의 개수 N(1 ≤ N ≤ 1,000), 간선의 개수 M(1 ≤ M ≤ 10,000), 탐색을 시작할 정점의 번호 V가 주어진다. 다음 M개의 줄에는 간선이 연결하는 두 정점의 번호가 주어진다. 어떤 두 정점 사 www.acmicpc.net 문제 그래프를 DFS로 탐색한 결과와 BFS로 탐색한 결과를 출력하는 프로그램을 작성하시오. 단, 방문할 수 있는 정점이 여러 개인 경우에는 정점 번호가 작은 것을 먼저 방문하고, 더 이상 방문할 수 있는 점이 없는 경우 종료한다. 정점 번호는 1번부터 N번까지이다. 입력 첫째 줄에 정점의 개수 N(1 ≤ N ≤ 1,000), 간선의 개수 M(1 ≤ M ≤ 1..

Tistory

날 막지마 - 괴짜가족 오프닝

(출처 : www.youtube.com/watch?v=85Kg4BUE0_g) 야 제발 저리좀 비켜 내 앞에 돌 좀 치워 되는게 하나 없는 궃은 날엔 건들지마 내버려둬 누구나 다 잘났다고 떠들고 나같은건 무시하고 욕하는데 기가 죽어 할말 못할 바보는 아냐 난 앞만 보고 갈래 내 앞 좀 막지마라 나라고 맨날 재수 없을까 오 건들지마 얼른 비켜 제발 나좀 내버려둬 야 제발 저리좀 비켜 내 앞에 돌 좀 치워 되는게 하나 없는 굳은 날엔 건들지마 내버려둬 누구나 다 잘났다고 떠들고 나같은건 무시하고 욕하는데 기가 죽어 할말 못할 바보는 아냐 나 앞만 보고 갈래 내 앞 좀 막지마라 나라고 맨날 재수 없을까 오! 건들지마 얼른 비켜 난 앞만 보고 갈래 내 앞 좀 막지마라 나라고 맨날 재수없을까 건들지마 얼른비켜 제발..

Tistory

[Java] 정렬 Comparable vs Comparator 사용

기본 지식 Arrays.sort() -> 일반적인 배열의 정렬시 사용 Collection.sort() -> 리스트의 정렬시 사용 그렇다면 Comparable & Comparator는 언제쓰일까?? 공통점 - 객체간의 비교시 사용 차이점 - Comparable 인터페이스 : 객체간의 기본 정렬기준이 필요할 때 사용 : compareTo(Type o) 메서드 구현을 통해 사용 : 매개변수가 하나인 이유? "자기 자신"과 하나의 매개변수를 비교 - Comparator 인터페이스 : 객체간의 특정한 정렬기준이 필요할 때 사용 : compare(Type o1, Type o2) 메서드 구현을 통해 사용 : 매개변수가 두개인 이유? 두개의 매개변수를 비교 예를들어, 위와 같은 number1, number2를 비교하는..

Tistory

Spring Error 정리하기 - 테스트 코드 작성시

1. Error cause : com.sun.tools.javac.util.List Spring을 이용한 게시판을 복습하던 도중 Test 코드 작성시 아래와 같은 에러가 발생하였다. org.apache.ibatis.reflection.ReflectionException: Error instantiating class com.sun.tools.javac.util.List with invalid types () or values (). Cause: java.lang.NoSuchMethodException: com.sun.tools.javac.util.List.() 문자의 원인은 예상치 못한 곳에서 발생했다. 마지막 줄에 보면 com.sun.tools.javac.util.List에 있다. 습관적으로 impor..

Tistory

[JPA] 다양한 연관관계 매핑 - 다대일(N:1), 일대다(1:N), 일대일(1:1), 다대다(N:M)

먼저 들어가기 전 테이블과 객체의 매핑 차이점을 알고 들어가야 한다. 테이블 - 외래키 하나로 양쪽 참조 가능 (조인) - 사실 방향이라는 개념이 없음 객체 - 참조용 필드가 있는 쪽으로만 참조 가능 - 한쪽만 참조하면 단방향 매핑 - 양쪽이 서로 참조하면 양방향 매핑 이제부터는 외래키를 관리하는 테이블을 연관관계 주인이라고 하겠다. 주인의 반대편에서는 외래키에 영향을 주지않고 조회만 가능 다대일 [N:1] - 관계형 DB에서는 다 쪽이 항상 연관관계 주인, 즉 외래키를 관리 따라서, 다 쪽에 외래키를 생성하는 것이 DB와의 관계를 고려하여 설계하는데 적합하다. Example) Member와 Team이 N:1의 관계를 가지고 있다고 가정하자. Member에서 Team으로의 단방향 매핑일 때 - 다(Mem..

Tistory

[Java] 형 변환을 도와주는 다양한 메서드

1. Object 형태를 String으로 변환 - String.valueOf(number)를 이용 출력 결과 - toString(number) 이용 출력 결과 String.valueOf() vs toString() 차이점 Object가 null일 때, toString() : Null PointerException(NPE)을 발생 String.valueOf() : null일때에도 null을 문자열로 취급하여 예외를 발생시키지 않음 따라서, NPE를 방지하기 위해서는 String.valueOf()를 사용하는 것이 좋다. 참고로 int형이 아닌 다른 형을 통해서도 String으로 변환가능 출력 결과 2. String형을 int로 변환 - Integer.pasreInt(문자열) 이용 출력 결과 3. String..

Tistory

[JPA] 영속성 컨텍스트(EntityManager)와 엔티티의 생명주기

영속성 컨텍스트(EntityManager)란? - "엔티티를 영구 저장하는 환경"이라는 뜻 - 눈에 보이지 않는 논리적인 개념 EntityManager.persist(entity); - 엔티티 매니저를 통해서 영속성 컨텍스트에 접근이 가능 - DB에 실제적인 저장이 아닌 엔티티를 영속성 컨텍스트에 저장하는 것이다. -> commit()을 하는 시점에 DB에 실제적인 업데이트가 된다. 엔티티의 생명주기 - 비영속(new/transient) 영속성 컨텍스트와 전혀 관계가 없는 새로운 상태 - 영속(managed) 영속성 컨텍스트에 관리되는 상태 - 준영속(detached) 영속성 컨텍스트에 저장되었다가 분리된 상태 - 삭제(removed) 삭제된 상태 영속성 컨텍스트의 이점 - 1차 캐시 -> 아래와 같이 ..

Tistory

[JPA] 변경 감지와 병합

준영속 엔티티란? - 영속성 컨텍스트가 더는 관리하지 않는 엔티티 - DB에 한번 저장되었기에 식별자가 존재하지 않아 JPA가 변경감지를 하지 않아 수정을 하여도 DB에 업데이트가 일어나지 않음 준영속 엔티티를 수정하는 방법 1. 변경 감지 기능 사용 2. 병합(merge) 사용 1. 변경감지 기능사용 (=Dirty Checking) -> 리파지토리에서 id를 기반으로 하여 데이터를 찾은 후, 값을 수정하는 방식이다. -> @Transactional에 의해 save 필요없이 커밋을 통해 변경감지하여 변경된 내용을 flush 한다. 2. 병합(merge) 사용 -> 객체를 생성한 뒤, save 하는 시점에 위와 같이 merge()를 해준다. merge의 단점 - 해당 모든 값들을 업데이트 하기 때문에 값이..

Tistory

[Vue.js] 1.입문하기 - 소개 및 설치

1. Vue.js 란? Vue.js - 웹 프론트엔드 프레임워크 - 컴포넌트 기반의 SPA(Single Page Application)를 구축할 수 있게 해주는 프레임워크 - 컴포넌트 : 웹을 구성하는 logo, menubar, button 등 웹 페이지 내의 다양한 UI 요소 : 재사용 가능하도록 구조화 한 것 - SPA : 하나의 페이지 안에서 필요한 영역부분만 로딩되는 형태 : 빠른 페이지 변환, 적은 트래픽 양 : 예를 들어 페이지의 좋아요 수가 변경되었을 때, 화면 전체가 로딩되는 형태가 아닌 필요한 부분만 변경할 수 있는 형태 2. Vue.js 설치하기 기존에는 atom 에디터를 사용하고 있었으나, 이번에는 visual studio code를 설치해서 사용해보기로 한다. 먼저, visual s..

Tistory

[Java] BufferedReader, BufferedWriter 사용법

기본 개념 - Scanner : 입력을 받을 경우, 공백(space)이나 Enter를 모두 경계로 인식함 nextInt(), next(), nextchar() 등 다양한 형식의 데이터 입력가능 - BufferedReader : Enter만 경계로 인식함 String로만 데이터 인식 장점 : 알고리즘의 시간을 줄일 수 있다. 형변환을 통한 BufferedReader 사용 방법 1. 공백을 포함하지 않는 Int형 1 2 3 4 BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); String s = br.readLine(); int n = Integer.parseInt(br.readLine()); BufferedReader를 통한..

Tistory

[Java] 흐름제어문 - continue, break, return

* continue문 - 현재 진행중인 루프를 중단하고 다음 루프로 건너뛰어 진행하도록 하는 구문 예시 구문 특징 : 위와 같이 i%5==0인 5와 10의 경우는 그 구문을 실행하지 않고 다음 작업을 실행 : 해당 루프를 벗어나지 않음 * break문 - 한번에 가장 가까운 하나의 Loop를 벗어날 때 사용하며 해당 루프 종료 후 다음 작업을 실행한다. 예시 구문 특징 : 현재 루프 종료 : 루프를 벗어난 문장 실행 * return문 - 메소드 안에서 사용하는 분기문으로 현재 수행 중인 메소드를 종료시키고, 메소드를 호출한 수행문의 위치로 분기 이동함 1. return; => 현재 메소드를 종료함 2. return 식; => 현재 메소드를 종료하면서 식의 값을 호출했던 곳으로 반환함 ex) int max..

Tistory

스프링 부트와 AWS로 혼자 구현하는 웹 서비스 1장

Chapter 01 인텔리제이로 스프링부트 시작하기 https://www.jetbrains.com/toolbox/app/ JetBrains Toolbox App: Manage Your Tools with Ease Open any of your projects in any of the IDEs with one click. www.jetbrains.com 이를 통해, IntelliJ IDEA Community 버전을 설치한다. 그레이들 프로젝트를 생성 후, 아래와 같이 설정하기로 한다. 이후, build.gradle에 아래와 같이 코드를 작성한다. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 ..

Tistory

스프링 부트와 AWS로 혼자 구현하는 웹 서비스 2장

Chapter02 스프링부트에서 테스트 코드를 작성하자 테스트 코드의 장점 - 매번 코드를 수정할 때마다 톰캣을 내렸다가 다시 실행하는 일을 반복을 없애줌 - System.out.println()과 같은 눈으로 검증해야 하는 번거로움없이 자동검증 - 개발자가 만든 기능을 안전하게 보호 (ex. 새로운 B라는 기능이 추가됬을 때 이 기능만을 검증하여 기존에 잘되던 A라는 기능에 추가 가능) * 테스트 코드 작성하기 Java 디렉토리에서 New -> Package com.qwon.springboot 패키지 & Application 클래스에 아래와 같이 작성 그 아래 web패키지를 만들고 HelloController 클래스 생성 이제 테스트 코드를 검증하기 위해 src/test/java 디렉토리에 앞에서 생성..

Tistory

[Java] 코드업 (CodeUp) 자바 풀이 1081~1090

#1081 문제 설명 1부터 n까지, 1부터 m까지 숫자가 적힌 서로 다른 주사위 2개를 던졌을 때 나올 수 있는 모든 경우를 출력해보자. 참고 중첩의 원리... 반복 실행 구조도 조건 실행 구조와 마찬가지로 중첩의 원리가 적용된다. 반복 실행 구조를 중첩하면 원하는 반복 구조를 다양하게 만들어 낼 수 있다. 예시 int i, j; int n=3, m=6; for(i=1; i

Tistory

스프링 부트와 AWS로 혼자 구현하는 웹 서비스 3장

Chapter 03 스프링 부트에서 JPA로 데이터베이스 다뤄보자 JPA의 역할? - 서로 지향하는 바가 다른 2개 영역(객체지향 프로그래밍 언어와 관계형 데이터베이스)을 중간에서 패러다임 일치를 시켜주기 위한 기술 - 개발자는 객체지향적으로 프로그래밍을 하고, JPA가 이를 관계형 데이터베이스에 맞게 SQL을 대신 생성해서 실행 Spring Data JPA 적용하기 -build.gradle에 아래와 같은 의존성 추가 compile('org.springframework.boot:spring-boot-starter-data-jpa') compile('com.h2database:h2') -src/main/java 아래의 com.qwon.springboot 패키지 -> domain 패키지 ->posts 패키지..

Tistory

스프링 부트와 AWS로 혼자 구현하는 웹 서비스 4장

Chapter 04 머스테치로 화면 구성하기 머스테치란? - 수많은 언어를 지원하는 가장 심플한 템플릿 엔진 템플릿 엔진이란? - 지정된 템플릿 양식과 데이터가 합쳐서 HTML문서를 출력하는 소프트웨어 머스테치 플러그인 설치 - JSP나 Thymeleaf등은 유료버전에서만 지원 가능 - Plugins으로 mustache 검색 후 설치 기본 페이지 만들기 -build.gradle에 의존성 등록 compile('org.springframework.boot:spring-boot-starter-mustache') -src/main/resources에 templates 파일을 만들고 index.mustache 생성 -web 패키지 안에 IndexController 생성 테스트 코드로 검증 - test 패키지에 I..

Tistory

스프링 부트와 AWS로 혼자 구현하는 웹 서비스 5장(1)

Chapter 05 스프링 시큐리티와 OAuth 2.0으로 로그인 기능 구현하기 구글 서비스 등록 - 여기서 발급된 인증정보를 통해서 로그인 기능과 소셜 서비스 기능을 사용할 수 있음 - 구글 클라우드 플랫폼 주소(https://console.cloud.google.com) 이동 - 프로젝트 선택 -> 새 프로젝트 : freelec-springboot2-webservice 생성 - 왼쪽 메뉴 탭을 클릭해 API 및 서비스 -> 사용자 인증 정보 -> OAuth 클라이언트 ID 클릭 -> 동의 화면 구성 - 애플리케이션 이름을 아까와 같이 작성 - 다시 OAuth 클라이언트 ID 만들기 화면으로 이동 어플리케이션 유형 : 웹 어플리케이션 승인된 리디렉션 URI : http://localhost:8080/l..

Tistory

스프링 부트와 AWS로 혼자 구현하는 웹 서비스 6장

Chapter 06 AWS 서버 환경을 만들어보자 -AWS EC2 AWS 회원가입 AWS 공식사이트(aws.amazon.com/ko/)로 이동 후 무료 계정 만들기 지원 플랜에서 기본 플랜 선택 EC2 인스턴스 생성하기 ECS란? AWS에서 제공하는 성능, 용량 등을 유동적으로 사용할 수 있는 서버 - 서비스가 구동될 지역(리전)을 아래와 같이 서울로 변경 - 검색창에 EC2를 입력 -> 인스턴스 시작 -> 아마존 리눅스 1 AMI 사용 -> 인스턴스 유형 : t2.micro -> 스토리지 크기 30GB로 변경 -> Name 태그 추가 -> 보안 그룹 추가 - 다른 곳에서 다시 접속할 때는 해당 장소의 IP를 SSH에 규칙에 추가 - 인스턴스로 접근하기 위한 pem키(비밀키) 생성 고정 IP 할당하기 -..

Tistory

[Java] 코드업 (CodeUp) 자바 풀이 1091~1099

#1091 문제 설명 어떤 규칙에 따라 수를 순서대로 나열한 것을 수열이라고 한다. 예를 들어 1 -1 3 -5 11 -21 43 ... 은 1부터 시작해 이전에 만든 수에 -2를 곱한 다음 1을 더해 다음 수를 만든 수열이다. 이런 이상한 수열을 알게 된 영일이는 또 궁금해졌다. "그럼.... 13번째 나오는 수는 뭘까?" 영일이는 물론 수학을 아주 잘하지만 이런 문제는 본 적이 거의 없었다... 그래서 프로그램을 만들어 더 큰 수도 자동으로 계산하고 싶어졌다. 시작 값(a), 곱할 값(m), 더할 값(d), 몇 번째인지를 나타내는 정수(n)가 입력될 때, n번째 수를 출력하는 프로그램을 만들어보자. 입력 시작 값(a), 곱할 값(m), 더할 값(d), 몇 번째 인지를 나타내는 정수(n)가 공백을 두고..

Tistory

스프링 부트와 AWS로 혼자 구현하는 웹 서비스 7장

Chapter 07 AWS에 데이터베이스 환경을 만들어보자 - AWS RDS RDS란? AWS에 지원하는 관리형 서비스로 클라우드 기반 관계형 데이터베이스 하드웨어 프로비저닝, 데이터베이스 설정, 패치 및 백업과 같이 잦은 운영 작업을 자동화하여 개발자가 개발에 집중할 수 있게 지원하는 서비스 RDS 인스턴스 생성하기 AWS 검색창에 rds -> 데이터베이스 생성 -> 엔진 유형 : Maria DB 선택 / 템플릿 : 프리 티어 나머지는 아래와 동일하게 작성 이후, DB를 생성하면 된다. RDS 운영환경에 맞는 파라미터 설정 왼쪽 탭에서 파라미터 그룹 -> 파라미터 그룹 생성 -> freelec-springboot2-webservice 이름으로 생성 -> 생성된 파라미터 그룹 선택 -> 파라미터 편집 -..

Tistory

스프링 부트와 AWS로 혼자 구현하는 웹 서비스 8장

Chapter 08 EC2 서버에 프로젝트를 배포해 보자 EC2에 프로젝트 Clone 받기 - 먼저 깃허브에서 코드를 받아올 수 있도록 깃 설치 sudo yum install git - git clone으로 프로젝트를 저장할 디렉토리 생성 mkdir ~/app && mkdir ~/app/step1 - 생성된 디렉토리로 이동 cd ~/app/step1 - 본인의 깃허브 웹페이지에서 https 주소 복사 & git clone 복사한 주소 - 프로젝트로 이동해 파일들 확인 - 코드들이 잘 수행되는지 테스트 ./gradlew test 이상으로 깃을 통해 프로젝트를 클론과 풀까지 진행하였다. 배포 스크립트 만들기 쉘 스크립트를 통해 명령어들이 한번에 차례대로 실행되도록 한다. vim ~/app/step1/depo..

Tistory

스프링 부트와 AWS로 혼자 구현하는 웹 서비스 9장

Chapter 09 코드가 푸시되면 자동으로 배포해 보자 - Travis CI 배포 자동화 CI & CD 소개 CI(Continuous Integration - 지속적 통합) : VCS 시스템에 PUSH가 되면 자동으로 테스트와 빌드가 수행되어 안정적인 배포 파일을 만드는 과정 CD(Continuous Deployment - 지속적인 배포) : 이 빌드 결과를 자동으로 운영서버에 무중단 배포까지 진행되는 과정 Travis CI 연동하기 - Travis CI 웹 서비스 설정 https://travis-ci.org/에서 깃허브 계정에 로그인 -> 오른쪽 위 계정명 -> Settings ->저장소 이름 찾아 상태바 활성화 - 프로젝트 설정 build.gradle과 같은 위치에서 .travis.yml 생성 cf..

Tistory

스프링 부트와 AWS로 혼자 구현하는 웹 서비스 10장

Chapter 10 24시간 365일 중단없는 서비스를 만들자 무중단 배포 소개 - 무중단 배포 : 서비스를 정지하지 않고, 배포할 수 있는 방법 대표적인 방법 : 엔진엑스, 도커, AWS에서 블루-그린 엔진엑스 설치와 스프링 부트 연동하기 엔진엑스 설치 - EC2에 엔진엑스 설치 sudo yum install nginx - 엔진엑스 실행 보안 그룹 추가 엔진엑스의 포트번호는 기본적으로 80 EC2->보안 그룹->EC2 보안그룹 선택->인바운드 편집으로 이동해 변경 리다이렉션 주소 추가 구글과 네이버 로그인에도 변경된 주소를 등록 -> 기존의 리디렉션 주소에 8080 제거해 추가 등록 추가한 이후, EC2의 도메인으로 접근하되 8080 포트를 제거하고 접근해보기 엔진엑스와 스프링 부트 연동 엔진엑스가 현..

Tistory

[Java] 코드업 (CodeUp) 자바 풀이 1031~1040

* 자바의 n 진수 변환 -> Integer 클래스의 메소드를 사용하여 변환한다. 2진수 변환 : Integer.toBinaryString(int num) -> String 형태 8진수 변환 : Integer.toOctalString(int num) ->String 형태 16진수 변환 : Integer.toHexString(int num) -> String 형태 참고로 System.out.printf("%출력타입",num);과 같은 형태로도 사용이 가능하다. 출력 타입 %d:10진수, %o:8진수, %x:16진수(소문자), %X:16진수(대문자) #1031 문제 설명 10진수를 입력받아 8진수(octal)로 출력해보자. 참고 %d(10진수 형태)로 입력받고, %o를 사용해 출력하면 8진수(octal)로 ..

Tistory

스프링[Spring] 게시판 만들기_05

기능 추가하기 검색을 위한 select 이외의 기능을 게시판에 추가해보기로 하자. 화면 이동을 위한 컨트롤러를 아래와 같이 미리 정리해두기로 한다. * 컨트롤러 분석 (프로젝트시 미리 정리해두면 좋음) /* 기능 URL Method Form 글 목록 /board/list Get X 글 등록 /board/register Post O 글 등록 폼 이동 /board/register Get X 글 읽기 /board/get Get X 글 수정삭제로 이동 /board/modify Get X 글 수정처리 /board/modify Post O 글 삭제 /board/remove Post X */ 다음과 같이 미리 정리해둔 후에, Controller에 작성하기로 한다. (1) 먼저 src/main/java->MyBoard..

Tistory

네이버 오픈클래스 Q&A

Question 1 개발자의 지원서, 어떻게 작성하는 것이 좋을까요? 총 13,264개 질문 중 유사 질문 839개 화려한 문체나 거창한 커리어보다는, 개발에 대한 나만의 열정과 노력들을 보여주시는 것이 중요합니다.입사 후 빠르게 배우며 성장해 갈 기회가 무궁무진하기 때문에 개발을 정말 좋아하는지 보곤 합니다. 그런 면에서 이수한 컴퓨터 공학 관련 과목, 기술적 문제를 해결한 경험, 에너지를 집중해 끝까지 파고들었던 경험,개발자로서 개선해보고 싶은 네이버의 서비스 등도 미리 생각해 두시면 도움이 될 것입니다. 포기하지 않고 끝까지 몰입해 본 경험, 세상의 불편을 개발로 풀고자 시도했던 경험 등개발자로서의 성장 의지를 보여줄 수 있는 본인만의 스토리가 있다면 잘 녹여서 작성해주세요.글로 표현하기 어렵다면 ..

Tistory

way back into love - 그 여자 작사 그 남자 작곡 OST

Way Back Into Love 사랑안으로 돌아가는 길 I've been living with a shadow overhead 난 내 머리위로 그림자가 드리워진 채로 살았어 I've been sleeping with a cloud above my bed 난 내 침대 위로 구름이 드리워진 채로 잠을 잤어 I've been lonely for so long 난 너무나 오랫동안 외로웠어 Trapped in the past, I just can't seem to move on 과거에 갇힌채, 난 도저히 나아갈 수가 없었지 I've been hiding all my hopes and dreams away 난 내 꿈과 희망을 숨겨두고만 있었지 Just in case I ever need em again somed..

Tistory

[Java] 코드업 (CodeUp) 자바 풀이 1041~1050

#1041 문제 설명 영문자 1개를 입력받아 그 다음 문자를 출력해보자. 영문자 'A'의 다음 문자는 'B'이고, 영문자 '0'의 다음 문자는 '1'이다. 참고 숫자는 수를 표현하는 문자로서 '0' 은 문자 그 자체를 의미하고, 0은 값을 의미한다. 힌트 아스키문자표에서 'A'는 10진수 65로 저장되고 'B'는 10진수 66으로 저장된다. 따라서 문자도 값으로 덧셈을 할 수 있다. 입력 영문자 1개가 입력된다. 출력 다음 문자를 출력한다. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 import java.util.Scanner; public class Main{ public static void main(String[] args) { Scanner sc=new Scanner(Syst..

Tistory

2020년을 돌아보며...

어느덧 휴학을 한지 약 8개월이라는 시간이 흘렀다. 초반에 적었던 휴학하려는 이유를 되돌아보기로 했다. 첫번째, 코딩실력을 키우기 위해서 반론 - 학교다니면서 실력을 키울수 있을텐데 시간낭비가 아닐까? -> 충분히 맞는 말이다. 그렇지만 어영부영 학교 수업따라가며 내가 무엇을 배우는지 방향성도 잡지 못하면서 배우는 주입식의 공부보다는 내가 필요로 하는 공부를 중점으로 하고 앞으로 어떤식으로 준비를 하며 나아가야 할지에 대한 설계가 필요하다고 느꼈다. 두번째, 각종 대외활동과 자격증을 취득하기 위해서 반론 - 첫번째와 동일 -> 일반적으로 하는 주 1-2회 뿐만 아니라 정말 내 자신을 발전 시킬수 있도록 하는 좋은 대외활동을 찾아보고, 자격증도 설렁설렁이 아닌 확실하게 잡을 예정이다. 세번째, 아르바이트 ..

Tistory

[Java] 코드업 (CodeUp) 자바 풀이 1051~1060

#1051 문제 설명 두 정수(a, b)를 입력받아 b가 a보다 크거나 같으면 1을, 그렇지 않으면 0을 출력하는 프로그램을 작성해보자. 참고 어떤 값을 비교하기 위해 비교/관계연산자(comparison/relational)를 사용할 수 있다. 비교/관계연산자는 주어진 2개의 값을 비교하여 그 결과가 참인 경우 참(true)을 나타내는 정수값 1로 계산하고, 거짓인 경우 거짓(false)를 나타내는 정수값 0으로 계산한다. 비교/관계연산자도 일반적인 사칙연산자처럼 주어진 두 수를 이용해 계산을 수행하고, 그 결과를 1(참), 또는 0(거짓)으로 계산해 주는 연산자이다. 비교/관계연산자는 >, =, =,

Tistory

스프링[Spring] 게시판 만들기_06

페이지 기능 추가 게시판 목록의 개수를 늘릴때 필요한 페이지 기능을 추가해보기로 한다. 먼저, 페이지에 대한 클래스를 작성한다. 1. Page.java 클래스 추가 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 package com.myboard.vo; public class Page { private int pageNum; private int amount; public Page() { this(1, 10); } public Page(int pageNum, int amount) { this.pageNum=pageNum; this.amount=amount..

Tistory

[Java] 코드업 (CodeUp) 자바 풀이 1061~1070

#1061 문제 설명 입력된 정수 두 개를 비트단위로 or 연산한 후 그 결과를 정수로 출력해보자. 비트단위(bitwise) 연산자 |(or, vertical bar, 버티컬바)를 사용하면 된다. ** | 은 파이프(pipe)연산자라고도 불리는 경우가 있다. ** 비트단위(bitwise) 연산자는, ~(bitwise not), &(bitwise and), |(bitwise or), ^(bitwise xor), (bitwise right shift) 가 있다. 예를 들어 3과 5가 입력되었을 때를 살펴보면 3 : 00000000 00000000 00000000 00000011 5 : 00000000 00000000 00000000 00000101 3 | 5 : 00000000 00000000 0000000..

Tistory

[Java] 코드업 (CodeUp) 자바 풀이 1071~1080

#1071 문제 설명 정수가 순서대로 입력된다. -2147483648 ~ +2147483647, 단 개수는 알 수 없다. 0이 아니면 입력된 정수를 출력하고, 0이 입력되면 출력을 중단해보자. while( ), for( ), do~while( ) 등의 반복문을 사용할 수 없다. 참고 goto 명령문을 사용하면 간단한 반복 실행을 만들 수 있다. 반복 실행 부분을 빠져나오기 위해(즉 무한 반복을 방지하기 위해) 반복 실행 되는 도중에 조건을 검사해야 한다. goto 이름: 이 명령은 이름: 이 작성된 곳으로 프로그램의 실행 흐름을 바꾸어 준다. "이름:" 과 같이 콜론(:)이 붙어있는 부분을 이름표(label, 레이블)라고 한다. 레이블은 특별한 선언 없이 사용할 수 있으며 언더바(_)나 영문자로 시작하면..

Tistory

웹 개발 기본 지식 용어

- 리팩토링(Refactoring) 리팩토링은 소프트웨어 공학에서 '결과의 변경 없이 코드의 구조를 재조정함'을 뜻한다. 주로 가독성을 높이고 유지보수를 편하게 한다. 버그를 없애거나 새로운 기능을 추가하는 행위는 아니다. 사용자가 보는 외부 화면은 그대로 두면서 내부 논리나 구조를 바꾸고 개선하는 유지보수 행위이다. - 디버깅(Debugging) 디버깅 또는 디버그는 컴퓨터 프로그램 개발 단계 중에 발생하는 시스템의 논리적인 오류나 비정상적 연산을 찾아내고 그 원인을 밝히고 수정하는 작업 과정을 뜻한다. 일반적으로 디버깅을 하는 방법으로 테스트 상의 체크, 기계를 사용하는 테스트, 실제 데이터를 사용해 테스트하는 법이 있다. - 인덱싱(Indexing) 테이블에 인덱스를 삽입하는 것을 인덱싱(index..

Tistory

[Java] 코드업 (CodeUp) 자바 풀이 1001~1010

#1001 문제 설명 C/C++언어에서 가장 기본적인 명령이 출력문이다. printf()를 이용해 다음 단어를 출력하시오. Hello 참고 C/C++ IDE 프로그램을 설치한 후, 아래와 같은 소스 코드를 작성하고 "컴파일-실행"을 수행시키면, 지정한 "문장"이 출력된다. #include int main() { printf("문장"); return 0; } ** 주의 : 본 화면에서 복사하여 붙여넣기하면 제대로 되지 않을 수 있으니 직접 소스코드를 작성해 넣어야 한다. 입력 입력 없음 출력 Hello 1 2 3 4 5 6 7 8 9 public class Main { public static void main(String[] args) { System.out.println("Hello"); } } #10..

Tistory

[Java] 코드업 (CodeUp) 자바 풀이 1011~1020

#1011 문제 설명 문자형(char)으로 변수를 하나 선언하고, 변수에 문자를 저장한 후 변수에 저장되어 있는 문자를 그대로 출력해보자. 참고 char x; scanf("%c", &x); printf("%c", x); 와 같은 방법으로 가능하다. 입력 문자 1개가 입력된다. (단, 입력되는 문자는 알파벳 대, 소문자 및 숫자를 비롯한 아스키코드로 표현할 수 있는 문자들만 입력된다.) 출력 입력된 문자를 그대로 출력한다. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 import java.util.Scanner; public class Main{ public static void main(String args[]) { //Scanner는 문자를 입력 받는..

Tistory

[Java] 코드업 (CodeUp) 자바 풀이 1021~1030

#1021 문제 설명 1개의 단어를 입력받아 그대로 출력해보자. 입력 한 단어가 입력된다.(단, 단어의 길이는 50자 이하이다.) 문자를 50개 저장하기 위해서는 char data[51] 로 선언하면 된다. char data[51]=""; scanf("%s", data); 를 실행하면, data[51] 에 한 단어가 저장된다. 출력 입력된 단어를 그대로 출력한다. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 import java.util.Scanner; public class Main { public static void main(String args[]) { Scanner sc = new Scanner(System.in); String s=sc.next(); System.out.print..

Tistory

스프링[Spring] 설치하기

1. JDK 설치 나는 jdk는 1.8_251 버전을 설치하기로 한다. 구글에 jdk 1.8 251 download -> 해당하는 버전 다운 드라이버 설치할 때, 설치위치를 잘 기억해놔야 한다. ex : (C:\Program Files\Java\jre.1.8.0_251) 자바 프로그래밍 환경 구축방법 내컴퓨터 -> 시스템 -> 고급시스템 속성 -> 환경 변수 -> 시스템 변수란에 변수 이름 : JAVA_HOME 변수 값 : C:\Program Files\Java\jre.1.8.0_251와 같이 설정 참고사이트 : (https://macchiato.tistory.com/9) * 참고 : jdk vs jre vs jvm JDK : Java Development Kit 말 그대로 자바 개발을 위한 도구(Kit..

Tistory

스프링[Spring] 게시판 만들기_01

1. 프로젝트 생성 eclipse 창에서 new->spring Legacy Project 클릭 후, Project Name : MyBoard, Templates : Spring MVC Project, Package Name : com.myboard.controller로 설정한다. 생성하였다면, 잘 실행되는지 Run as를 통해 실행시켜본다. 이때, 아래와 같이 한글이 깨지는 경우가 발생하기도 한다. 이럴 때는, 기본경로인 src->main->webapp->WEB-INF->views->home.jsp에서 다음과 같은 page 디렉티브 속성을 추가해주면 된다. 다시 실행해보면 위와 같이 나타나게 된다. 2. pom.xml 설정 바꾸기 (개인마다 차이가 있음) (1) 자바 버전 업그레이드 먼저, 버전을 업그레..

Tistory

스프링[Spring] 게시판 만들기_02

JDBC까지 추가하였으므로, 이제는 객체와 인터페이스를 구현하기로 한다. 1. 객체 생성 프로젝트의 src/main/java 속성아래에 com.myboard.vo로 패키지를 생성후, MyBoardVo 클래스를 생성한다. 이후, 만들고자 하는 테이블의 객체들을 설정해준다. 이때, 각각의 객체들은 private로 설정한다. 접근 제어자(Private)를 사용하는 이유 이렇게 접근 제어자를 사용하는 이유는 보안 때문이라고 할 수 있다. 만약에 웹사이트에서 아이디와 비밀번호 같은 중요한 정보를 public 변수에 저장을 한다면 아무데서나 직접적으로 접근하여 그 값을 변경할 수 있기 때문에 노출되기 쉬워지게 된다. 이런 중요한 변수들은 대부분 private를 붙여준다. 나는 롤(LoL)에 대한 정보를 저장하는 테..

Tistory

스프링[Spring] 게시판 만들기_03

일반적인 웹 프로젝트의 구성 - 영속 계층, 데이터 계층 (Persistence Tier) : 데이터를 어떤 방식으로 보관하고 사용할지 설계하는 영역 -> (우리는) MyBatis Mapper를 이용하기로 함 - 비즈니스 계층 (Business Tier) : 순수한 비즈니스 로직을 담고 있는 곳 (고객이 원하는 요구사항을 반영하는 곳) -> xxxService라는 이름의 자바 코드로 구현 - 화면 계층 (Presentation Tier) : 화면에 보여주는 기술을 사용하는 영역 -> Servlet/JSP 1. 영속 계층 MyBatis Mapper를 이용해 각 테이블의 CRUD를 구현하는 것을 Spring 웹 프로젝트의 영속 계층(Persistence Tier)이라고 한다. CREATE : 새로운 데이터 ..

Tistory

스프링[Spring] 게시판 만들기_04

이제는 본격적으로, 화면에 대한 템플릿을 적용시켜 보기로 한다. 템플릿 처리 templated.co TEMPLATED A collection of 867 Creative Commons-licensed CSS, HTML5 and Responsive site templates created by Cherry, Doni, AJ, and co. templated.co 또는 https://www.free-css.com/free-css-templates Download 3069 Free Website Templates - CSS & HTML | Free CSS www.free-css.com 등 구글에서 template를 검색 후 무료 템플릿을 다운받는다. 나 같은 경우는 https://colorlib.com/wp/..

1 2