전체 글

피곤한투티의 개발/일상 블로그
개발/스프링 부트와 AWS로 구축하는 웹 서비스

8장. OCI 서버에 프로젝트를 배포해보자.

# OCI서버에 프로젝트 클론뜨기 sudo apt install git git --version mkdir ~/workspace && cd ~/workspace 가장 먼저, git을 설치해준 뒤 workspace 폴더를 만들어준다. git clone {github regository https address} 그리고, 생성한 github 레포지토리에 들어가서 https 주소를 복사하고 git clone 명령어를 통해서 로컬에 다운받는다. cd {프로젝트명} sudo chown +x gradlew ./gradlew test gradlew를 실행하기 위해서는 execute 권한을 주어야한다. gradlew를 통해서 전체 test를 수행해준다. git pull 앞으로 github의 최신 코드를 다시 로컬로 당..

알고리즘/잡설

프로그래머스 != 알고리즘

# 개요 프로그래머스를 처음 알게 된 것은 2017년 카카오 페스티벌로 처음 알게 됐습니다. 당시 신생 플랫폼인데다가, ICPC 스타일이 아니라 정해진 함수 포맷을 구현하는 문제는 처음 봤기 때문에 거부감이 상당히 강했습니다. 비단 저 뿐만 아니라, 같이 공부하던 분들도 모두 처음 보는 플랫폼에 대한 막연한 거부감이 생겼습니다. 하지만, 복학 이후에 사실상의 메이저 플랫폼이 되어있었고, 상당히 많은 기업에서 자사 코딩테스트 플랫폼으로 채용하게 되었습니다. 때문에 저도 프로그래머스에서 진행하는 여러 대회/채용에 지원하게 되었고, 프로그래머스에서 진행한 채용 프로세스에 합격하여 결국 취업에 성공하게 되었습니다. # 문제 C++로 ps를 쭉 해왔는데, Java에 더 익숙해 지기 위해 최대한 Java8의 Str..

알고리즘/잡설

프로그래머스 lv.2 정복

lv.2는 레벨 편차가 엄청 심했던 것 같습니다. 최대한 Java Stream을 활용하려 했는데, Stream사용 시 시간초과가 나는 등 Java언어 자체를 고려하지 않고 만들어진 문제들이 많이 있어서 제대로 활용하지 못 했습니다. 아직 lv.2에 sql문제들이 남아있지만, DB공부를 3월부터 시작할 예정이므로 그때 부터 풀어볼 생각입니다. lv.3부턴 진짜 알고리즘이 사용될 건데, Java로 어떻게 효율적으로 구현할 지 고민해볼 생각을 하니 너무 설렙니다!

개발/스프링 부트와 AWS로 구축하는 웹 서비스

6~7장. 서버 환경을 만들어보자 - Oracle Cloud Infrastructure

# OCI 장점과 단점 ## 장점 - aws와 달리 평생 무료다. - aws와 달리 인스턴스 여러개를 무료로 제공한다. - 프리티어로 aws보다 훨씬 좋은 성능을 제공한다. ## 단점 - 웹 접근성이 aws에 비해 별로 좋지 않다(회원가입부터 약간 힘들고, 로그인 시 매번 새로고침을 해줘야한다) - aws RDS와 달리 db 엔진을 선택할 수가 없다. => ATP라는 RDS와 비슷한 DB를 제공하지만, DataGrip과 연결이 매우 까다롭다. - ATP는 DB 접근이 3개월간 없을 경우, 영구삭제된다. 이런 단점이 있음에도 불구하고 OCI를 애용하는 이유는 성능이 넘사벽인데다가 aws와 달리 과금걱정이 전혀 없기 때문이다. GitHub - cloudcommunity/Cloud-Free-Tier-Compa..

알고리즘/잡설

프로그래머스 lv.0 lv.1 정복

입사까지 남은 시간이 5개월인데, 완전히 알고리즘을 손 놓고 있기도 뭐 하고, 그렇다고 잡고 있기도 그래서 Java로 문제들을 풀기로 결정했습니다. 백준 문제들은 풀어본 문제도 많거니와, Java로 하면 실제 로직을 짜는 코드보다 입출력을 건드리는 코드가 더 길 정도로 입출력이 귀찮아서.. 프로그래머스를 밀기로 결정했습니다. 원래 프로그래머스에서 해결한 문제가 3~4문제 정도로, 프로그래머스를 딱히 안 좋아해서 문제 풀어보지도 않았는데... Java로 하기에는 훨씬 편하네요. 입출력이 필요없으니까. 최대한 함수형으로 해결하기 위해서 연습하려고 lv.0부터 시작하여 lv.1까지 다 풀어봤습니다. lv.0과 lv.1 각각 12시간 정도 걸렸는데, 특히 초반에 배열(array)를 Stream으로 다루기 위해서..

일상/이것저것

GoodBye 2022, Hello 2023

벌써 1월이 지나고 2023년 2월이 되었는데, 개인적인 일들을 처리하고 나니 이제야 여유가 생기네요. 이제야 2022년을 제대로 떠나보내주는 것 같습니다. # 졸업과제 2021년을 대표하는 단어는 알고리즘 이었습니다. 2022년을 대표하는 단어 하나를 꺼내보라하면 가장 먼저 졸업과제가 나오지 않을까 싶어요. 한 점 부끄럼없이 열심히 했다고 자신있게 말할 수 있는 몇 안 되는 활동이었어요. 4월에 팀빌딩, 5월엔 아이디어 빌딩, 6월부터 본격 개발 시작, 8월 대회 참가, 9월 10월 마무리 까지.. 졸업과제 은상도 받았고, 대회에서도 상을 받았는데, 그것보다 같이 한 사람들이 가장 큰 선물이었어요. 그 전까지는 팀프로젝트를 하게 되면 항상 인간에 대한 혐오만 남은 채로 끝나게 되었는데, 이번에는 결과물..

개발/스프링 부트와 AWS로 구축하는 웹 서비스

5장 스프링 시큐리티와 OAuth2.0으로 로그인 기능 구현하기

# GCP 서비스 등록 ## GCP 애플리케이션 등록 먼저, GCP에 접속하여 프로젝트를 생성한다. API 및 서비스 > OAuth 동의 화면 을 선택한다. 앱 등록을 누르고, 위 화면 처럼 정보들을 입력해준다. 사용자 인증 정보에서 사용자 인증 정보 만들기를 누른 뒤, OAuth 클라이언트 ID를 선택한다. 어플리케이션 유형은 웹 애플리케이션으로, 이름은 적당히 정한 뒤, 승인된 리디렉션 URI를 http://localhost:8080/login/oauth2/code/google로 설정한다. 위 리디렉션 URI는 SpringBoot-Security에서 자동으로 세팅해놓은 URI로, {baseUrl}/{action}/oauth2/code/{regsitrationId}로 정의된다. 현재는 localhost..

개발/스프링 부트와 AWS로 구축하는 웹 서비스

4장 머스테치로 화면 구성하기

# Mustache 추가 및 index.html 추가 Mustache는 JSP처럼 Java코드를 html 상에서 작성하여 동작하는 템플릿 엔진 중 하나다. 대충 템플릿(미리 정의된 문법)에 따라 작성된 Java 코드를 포함하는 html 파일을 문법에 맞게 해석하여 다시 순수 html파일로 만들어주는 엔진이다. 어릴 때 처음 웹 공부할 때 이게 진짜 이해가 잘 안 되고 왜 쓰는지 이해가 안 됐는데, 이젠 뭐.. 당연하게 받아들인다. ## Mustache 설치 더보기 dependencies { implementation 'org.springframework.boot:spring-boot-starter-mustache:3.0.2' } ## index.html 작성 더보기 {{>layout/header}} 스프..

개발/스프링 부트와 AWS로 구축하는 웹 서비스

3장 스프링 부트에서 JPA로 데이터베이스 다뤄보자

# JPA, MYSQL 연결 책에서는 H2 Database를 사용하지만, 이미 MYSQL이 깔려있으므로 굳이 h2를 다시 깔 필요가 없어서 MYSQL을 사용했다. 더보기 implementation 'org.springframework.boot:spring-boot-starter-data-jpa' implementation 'mysql:mysql-connector-java' build.gradle에 이렇게 추가해준다. 그리고 교재에는 따로 h2 연결 설정을 해주지 않던데... 원래 이래도 되는지는 모르겠으나(김영한님 강좌에서는 h2 설정을 따로 해줬었다), MYSQL은 설정을 해줘야하므로 설정해줬다. 더보기 spring: datasource: driver-class-name: com.mysql.cj.jdb..

개발/스프링 부트와 AWS로 구축하는 웹 서비스

2장 스프링 부트에서 테스트 코드를 작성하자

# 테스트 코드 작성 더보기 package com.thuthi.springboot; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; @SpringBootApplication public class Application { public static void main(String[] args) { SpringApplication.run(Application.class, args); } } 더보기 package com.thuthi.springboot.web; import org.springframework.web.bind.annotation.Ge..

피곤한투티
ThuThi's Tistory