Web Pet Project - Checklist

checklist

  1. study js and make test webpage (doens’t need to be look good)

    • i don't know js all literally. should study js from the start
    • i don't like designing at all so.. i don’t know maybe just make seperated block and few explaning that what this part would have to do
  2. code backend(with python or java or C++ or C)

  3. adding function from ideas

programmers 17687 [3차] n진수 게임

문제

괄호가 바르게 짝지어졌다는 것은 ‘(‘ 문자로 열렸으면 반드시 짝지어서 ‘)’ 문자로 닫혀야 한다는 뜻입니다. 예를 들어
“()()” 또는 “(())()” 는 올바른 괄호입니다.
“)()(“ 또는 “(()(“ 는 올바르지 않은 괄호입니다.
‘(‘ 또는 ‘)’ 로만 이루어진 문자열 s가 주어졌을 때, 문자열 s가 올바른 괄호이면 true를 return 하고, 올바르지 않은 괄호이면 false를 return 하는 solution 함수를 완성해 주세요.

풀이

  1. 시작괄호로 시작하는지 체크
  2. 닫힌괄호가 나올 수 있는 것은 아직 닫히지 않은 시작괄호가 있을 때 뿐임
  3. 이를 startCount 즉 시작괄호로 체크해줌 (==0 이면 모든 시작괄호가 잘 닫혔단 뜻)

코드

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

class Solution {
boolean solution(String s) {
boolean answer = true;
int startCount = 0;

for(int i=0;i<s.length();i++)
{
if(s.charAt(i) == ')')
{
startCount++;
}
else
{
if(startCount < 1)
{
return false;
}
startCount--;
}
}
if(startCount != 0)
{
answer = false;
}
return answer;
}

}

메모

스택을 사용해서 풀수도 있다는데 참고만 할 것

스프링부트 커뮤니티 사이트 개발환경,reload 설정 (mindaces 02)

개요

개발하기에 앞서서 설치 및 환경설정을 해볼려고 한다.

IDE는 인텔리제이 유료버전을 사용하고 있는데 인텔리제이에서도 몇가지 설정을 해야한다.

이번 포스팅에서는 위 두가지를 해볼려고 한다.

이번 포스팅에서 할 것

  • 스프링부트 설치
  • IDE 설정 및 스프링부트 설정

SpringBootInitalize

먼저 다음의 링크에 접속한다.

https://start.spring.io/

접속 후 다음 이미지와 같이 설정한다.

spring_init.PNG

이후 GENERATE를 눌러 나오는 압축파일을 푼다.

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
34
35
plugins {
id 'org.springframework.boot' version '2.5.2'
id 'io.spring.dependency-management' version '1.0.11.RELEASE'
id 'java'
}

group = 'com.mindaces'
version = '0.0.1-SNAPSHOT'
sourceCompatibility = '16'

configurations {
compileOnly {
extendsFrom annotationProcessor
}
}

repositories {
mavenCentral()
}

dependencies {
implementation 'org.springframework.boot:spring-boot-starter-data-jpa'
implementation 'org.springframework.boot:spring-boot-starter-thymeleaf'
implementation 'org.springframework.boot:spring-boot-starter-web'
compileOnly 'org.projectlombok:lombok'
developmentOnly 'org.springframework.boot:spring-boot-devtools'
runtimeOnly 'mysql:mysql-connector-java'
annotationProcessor 'org.projectlombok:lombok'
testImplementation 'org.springframework.boot:spring-boot-starter-test'
}

test {
useJUnitPlatform()
}

MYSQL 설정

아직은 바로 실행하면 데이터베이스가 연결되지 않았다는 오류 메시지가 뜰 것이다.

해결방법은 시키는대로 데이터베이스를 연결하면 된다.

우선 MYSQL 실행해서 다음의 코드로 spring-demo-mysql 데이터베이스를 생성한다.

1
CREATE DATABASE spring-demo-mysql default CHARACTER SET UTF8;

이후 아까 압축해제한 루트 폴더에서부터 src/main/ resources/application.properties 파일을 연다

파일을 열면 아직은 아무것도 없는 상황인데 여기에 다음을 입력해 데이터베이스에 관한 설정을 해주어야 한다.

1
2
3
4
spring.jpa.hibernate.ddl-auto=update
spring.datasource.url=jdbc:mysql://${MYSQL_HOST:localhost}:3306/spring-demo-mysql?serverTimezone=Asia/Seoul&characterEncoding=UTF-8
spring.datasource.username=유저네임
spring.datasource.password=비밀번호

이 설정을 한 뒤에는 실행이 제대로 될 것이다.

LOMBOK

인텔리제이 IDE를 사용한다면 LOMBOK을 스프링부트 디펜던시에 추가한 뒤에

플러그인도 설치해주어야 한다.

인텔리제이에서 파일 -> 설정 -> 플러그인에 LOMBOK을 검색하여 설치한다.

reload 설정

앞으로 개발을 하면서 몇가지를 수정하게 될탠데

Springboot는 자체적으로 빌드도 느린데다가 일일이 재시작하기도 귀찮다

그래서 앞서 디펜던시에 추가한 SpringBoot devtools의 재시작기능을 사용할 것이다.

앞서 디펜던시에 추가된 상태여서 추가적인 것은 할 것이 없고 대신 인텔리제이에서 몇가지 설정을 해주어야 한다.

프로젝트 자동 빌드

설정 -> 빌드, 실행, 배포 -> 컴파일러에 들어가서 프로젝트 자동 빌드를 체크해준다.

프로젝트 자동 빌드

업데이트 설정

오른쪽 상단에서 MindacesApplication을 클릭해 구성편집을 눌러 다음 이미지에서 처럼 설정해준다.

업데이트 설정

레지스트리 설정

Ctrl + Shift + A를 눌러 검색창에 레지스트리를 검색해서 다음과 같이 설정한다(영어 버전이면 Registry 검색)

레지스트리 설정

여기까지 한 뒤 앞으로 프로젝트를 디버깅 모드로 실행하면 코드 수정된 것이 알아서 반영된다.

선택 사항

재시작이 자동으로 된 것은 좋은데 아무래도 수정하다가 중간에 재시작돼서 에러를 뿜어버리면 곤란하다.

그렇다고 프로젝트를 다시 키면 너무 오래걸리고 수동으로 갱신하게 하고 싶을 때가 있다.

src/main/ resources/application.properties에 다음 한줄을 추가하면 된다.

1
spring.devtools.restart.enabled=false

이후에는 프로젝트 빌드 Ctrl + F9를 누르면 변경사항이 갱신될 것이다.

여기까지가 reload 기능을 사용하는 방법에 대해서 알아봤다.

빌드를 꽤 빨리할 수 있다는 점에서 개발을 좀 더 원활하게 할 수 있게 해주는 설정인 것 같다!

스프링부트 커뮤니티 사이트 설계 (mindaces 01)

개요

spring_project_main_page_01.PNG

스프링부트 공부 겸 펫 프로젝트를 시작해볼려고 한다.

만들려는 사이트는 커뮤니티 사이트로

우선 사이트에 접속하면 위와 같은 메인페이지가 나오도록 만들어 보려고 하는 것이 1차 목표이다.

아예 노베이스기 때문에 설명하기에 부족함이 많겠지만

설명할 때 애매한 부분같은 것을 알게될때까지 제대로 공부하여 제대로된 포스팅을 하는 것이 목표이다.

개발 환경

스프링부트에는 여러가지 디펜던시라던가 결합할 수 있는 환경들이 무지막지하게 많은데

우선은 초기설정한 디펜던시는 다음과 같다.
본인은 gradle이 최근에 개발된 프레임워크인 것 같아 gradle을 선택했다.

spring_init.PNG

현재 목표

  • 메인 화면 만들기