전체 글 154

[Ncloud] Global DNS로 리눅스 서버 접속하기

전편에 이어서, 간단하게 도메인 주소로 리눅스 서버에 접속하는 법을 정리해보겠습니다. 또한, 여기서 네이버클라우드 Global DNS 서비스를 사용할 예정입니다. 이 서비스를 사용하려면 먼저 Global DNS 가이드에 따라, 다른 도메인 등록 업체에서 도메인 주소를 얻어와야 합니다. (https://guide.ncloud-docs.com/docs/ko/networking-networking-12-1) URL(Uniform Resource Locator) 우선, URL에 대해 간단히 살펴보겠습니다. 여기서 자세히 봐야할 부분은 도메인 주소이고, 그 앞에 호스트명(Host Name)이 있습니다. 도메인 주소는 예시에서 domain.com이 되고, 이 때, com은 가장 상위 도메인(Top Level Dom..

[Ncloud] 리눅스 서버 접속하기

기존에 리눅스 서버에 접속한 방식과는 다른 방법을 찾아보겠습니다. 처음에는 공인아이피를 사용해서 접속할 수 있었다면, 이번에는 표준 방법에 해당하는 포트포워딩 방식을 사용해보겠습니다. 이 방식의 장점은 공인아이피를 외우지 않아도 좀 더 친숙한 주소(예를 들면, ssh root@domain.com) 값으로 접속이 가능하다는 점입니다. 작업에 앞서, 한가지 작업을 수행하면 좋습니다. 먼저 서버 접속 후 id 명령어를 입력합니다. 그러면 아래와 같은 화면이 나타납니다. 여기서 uid=0이 root 권한을 가진 슈퍼 유저를 보여줍니다. 여기서, ubuntu라는 이름을 가진 사용자를 adduser라는 명령어를 통해 생성합니다. //ubuntu라는 유저를 생성 adduser ubuntu 생성 후 사용자 정보는 /e..

[Spring Boot] 게시판 구현하기(6)

ModelAndView 화면단으로 이동하기 위해서 ModelAndView라는 메서드를 사용할 수 있습니다. 이 방법을 사용하면, 이전에 사용한 ResponseEntity 메서드보다 간단해집니다. @GetMapping("/board-list") public ModelAndView getBoardList() { ModelAndView mv = new ModelAndView(); List boardList = boardService.getBoardList(); List boardDTOList = new ArrayList(); for(Board b : boardList) { BoardDTO returnBoardDTO = BoardDTO.builder().boardNo(b.getBoardNo()) .boardTi..

[Spring Boot] 게시판 제작하기(4)

컨트롤러 이번에는 게시판에서 CRUD 기능을 구현하기 위한 컨트롤러(BoardController)를 제작해보겠습니다. 여기서는 두가지 방식이 있습니다. RepositoryEntity를 선언하는 방식과 ModelAndView를 사용하는 방법으로 나누어 진행해보겠습니다. RepositoryEntity RepositoryEntity를 사용하고 타입은 와일드카드로 정의해서 데이터베이스에 저장된 값을 한번에 조회할 수 있습니다. READ @GetMapping("/board-list") public ResponseEntity getBoardList() { ResponseDTO responseDTO = new ResponseDTO(); try { List boardList = boardService.getBoardL..

[Spring Boot] 게시판 구현하기(3)

사용자 사용자 혹은 회원에 대한 정보를 관리하는 페이지를 제작해보겠습니다. 엔티티(entity)를 제작하고 레포지토리를 선언하고 서비스를 만들고 연결해보겠습니다. 먼저 User 이름의 엔티티를 생성합니다. package com.bit.springboard.entity; import jakarta.persistence.*; import lombok.Data; import java.time.LocalDateTime; @Entity @Table(name = "T_USER") @Data public class User { @Id @GeneratedValue( strategy = GenerationType.IDENTITY ) private long id; @Column(unique = true) private S..

[Spring Boot] 게시판 구현하기(2)

이어서 BoardRepository를 설정합니다. JpaRepository가 있어서 이것을 상속받아서 메소드를 별도로 구현하지 않아도 제공된 다양한 메소드(List, findAll, List, findAll(Sort sort), saveAll, void flush, T findById 등)를 사용할 수 있습니다. package com.bit.springboard.repository; import com.bit.springboard.entity.Board; import org.springframework.data.jpa.repository.JpaRepository; public interface BoardRepository extends JpaRepository { } 다음은, DB에 있는 내용을 한번에 ..

[Spring Boot] 게시판 구현하기(1)

스프링 부트 Spring framework는 지원이 잘 안되어, Spring Boot에 대해서 알아보았습니다. 게시판을 구현하기 위해 다양한 방식을 지원하지만, JPA를 활용해보겠습니다. JPA는 객체, 즉 테이블을 구성하기 위해 Entity(엔터티, 엔티티)를 사용합니다. Board라는 엔티티(클래스)를 생성합니다. 코드를 살펴보겠습니다. @Entity @Table(name="T_BOARD") @SequenceGenerator( name="BoardSeqGenerator", sequenceName = "T_BOARD_SEQ", initialValue = 1, allocationSize = 1 ) ... 1) @Entity 어노테이션을 통해 엔티티 클래스로 지정할 수 있습니다. 2) @Table은 테이블..

[Spring Framework] 게시판 구현하기(1)

회원 관련 기능을 구현 1. 요청별 method 타입을 다르게 할 수 있습니다. 1) get 요청으로 가는 경우 - 브라우저 주소창에 주소를 입력하는 경우는 get 요청 - a태그 클릭해서 링크로 이동 - form의 method 속성이 get으로 설정되어 있을 때 - redirect로 다른 요청 url을 호출할 때 - ajax의 type이 get으로 설정되어 있을 때 2) post 요청으로 가는 경우 - form의 method 속성이 post로 설정되어 있을 때 - ajax의 type이 post로 설정되어 있을 때 2. get과 post 사용 1) get 요청: 데이터 목록을 조회하거나 화면으로 이동할 때 주로 사용합니다. 2) post 요청: 데이터의 입력, 수정, 삭제, 특정 데이터 조회 등에서 사용..

[Java] 파일 정리

파일 정리 문제 살펴보기 문제 요약 파일을 확장자 별로 정리해서 개수를 정리합니다. 이것을 확장자 기준 사전 순으로 오름차순 정렬하여 출력합니다. 확장자는 . 을 사용하므로 그걸 쪼개서 이름과 개수(빈도)를 알파벳 순서대로 출력하면 되는 문제입니다. 전략 기존에 잘 알려진 HashMap을 사용해볼 수 있습니다. 다만 알파벳 순서대로 차후에 sort 작업을 수행해야 합니다. 새롭게 등장한 TreeMap 을 사용해본다. 자동으로 알파벳 순서대로 정렬해주므로 편리합니다. 공통 사항 Java로 백준에 제출할 때에는 Main 으로 클래스 이름을 지정해야 합니다. 입력은 Scanner 객체 sc로 받습니다. 숫자와 문자가 동시에 입력받아야 한다면, 두가지 전략이 있습니다. 숫자는 sc.nextInt() 로 받고, ..

[Java] 럭키 스트레이트

Java로 풀어보는 간단한 백준 문제 풀이 18406번 럭키 스트레이트 문제입니다. 문제 요약 N이라는 점수가 주어질 때, 반으로 나눈 첫번째 자릿수의 합과 나머지 자릿수의 합이 동일해야 합니다. 여기서 저는 N이라는 숫자를 받아서, 첫번째 요소와 두번째 요소로 나누어보고자 했습니다. 그러기 위해서 문자열로 변환하고 반으로 나누어 각각의 배열 요소의 합을 구하는 것을 떠올렸습니다. 점수 N이 주어지고, 이를 반으로 쪼개어 첫번째 요소의 자릿수 합과 두번째 요소 자릿수 합이 일치하면 “LUCKY”, 아니면 “READY” 출력한다. 코드로 살펴보기. 백준에서 코드를 입력할 때, Java의 경우에는 Scanner 패키지를 사용해서 입력값을 받도록 만들어줘야 합니다. 1. 먼저 해당 점수를 Scanner로 입력..