전체 글

· Java
객체지향 프로그래밍(OOP)가 무엇인지 그 특징은 어떠한지 살펴볼게요. 객체지향 프로그래밍의 정의 객체 지향 프로그래밍은 컴퓨터 프로그램을 명령어의 목록으로 보는 시각에서 벗어나 여러 개의 독립된 단위, 즉 "객체"들의 모임으로 파악하고자 하는 것이다. 각각의 객체는 메시지를 주고받고, 데이터를 처리할 수 있다. - 위키 백과 위키에 따르면 객체 지향 프로그래밍은 절차지향 프로그래밍과 달리 "객체"들로 시선을 달리했다고 설명합니다. 뭐.. 거의 이름을 풀어서 설명한거랑 똑같죠. 자바 입문서들에서 공통적으로 객체지향은 실제세계를 모델링하여 소프트웨어를 개발하는 방법이라고 표현합니다. 절차지향의 대표적 언어인 C언어는 그럼 실제세계를 모델링하기 어렵나요?? 그렇습니다. C언어에는 구조체가 있지만 그 구조체(..
· TechTalk
저는 현재 티스토리는 조금 IT 관련(일상도 올릴 예정) 포스팅을 올리는데 운영을 하고 있습니다. 반면 요리하거나~ 뭐 리뷰하거나~ 이런 일상적인 건 네이버 블로그에 정리하려고 계획 중입니다. 자 그런데 네이버 블로그는 티스토리와 달리 구글 검색에 직접 노출시키기 어렵습니다. 왜냐하면 바로 구글 서치 콘솔에 등록시 소유권 확인을 위해 HTML 파일 수정 과정을 거치라고 하기 때문이죠. 네이버 블로그는 HTML 수정이 어렵기도 하고 검색봇이 못 긁어가게 막아둡니다. 자 이런 상황에서 우리는 우회적으로 구글 검색에 우리 네이버 블로그 글을 노출시킬 수 있습니다. 간단하고 유명한 방식은 바로 키자드를 이용하는 겁니다. 키자드 이용하기 회원 가입 - 키자드 마이 페이지 - 네이버 ID 연동 - 이메일 인증 - ..
· Java
I 백기선님의 자바 라이브 스터디 6주차 주제 상속에 대해서 포스팅하겠습니다. 상속이란? 상속은 상위 클래스에서 정의한 필드와 메서드를 하위 클래스에서 물려받아 사용할 수 있도록 해주는 기능입니다. 상속을 사용하면 불필요한 중복 코드를 줄일 수 있습니다. 좋은 예시가 될지는 모르겠지만, 카페를 예시로 들어보겠습니다. 커피류들은 커피(샷..?) + 추가 아이템(우유나 캬라멜 시럽등)을 가지겠죠. 그리고 음료를 제조하는 과정(행동 = 메서드)이 필요할겁니다. 커피 종류마다 조금씩은 다르지만 통합할 수 있는 내용들이 있다면 그것들은 부모 클래스에서 상속받아서 사용하는 편이 더 좋더라~ 이 얘기입니다. class 자식클래스 extends 부모클래스{ } /* class 커피{ protected int shot;..
username과 password로 로그인을 구현해보도록 하겠습니다. Overview spring security의 PasswordEncoder를 이용하면 단방향 방식의 암호화를 통해 비밀번호를 안전하게 저장할 수 있습니다. 실제로 회원가입 기능에서 PasswordEncoder를 상속받은 BCryptPasswordEncoder를 이용해서 비밀번호를 저장하는 기능을 구현해봤습니다. 로그인 기능을 구현한다면서 왜 갑자기 회원가입을 언급하고 있는 걸까요?? 이유는 로그인 방법이 두 가지로 나뉘기 때문입니다. 암호화 과정을 두 번 거칠 것인지 아니면 비밀번호 저장 방식을 바꿀 것인지로 말이죠. 저장 방식을 바꿔보자 spring security 공식 문서에서 추천하는 방식은 DelegatingPasswordEnc..
지난 시간에 어떤 URI로 요청이 들어와도 무조건 login 페이지가 뜨는 마법을 겪고 글을 끝냈습니다. 이 매직에서 벗어나려면 SecurityConfig 클래스를 만들어서 configuration 수정을 해줘야 합니다. 이번 시간에는 그 방법에 대해서 다뤄보도록 하겠습니다. 로그인 페이지 사용하지 않기 @Configuration 어노테이션은 작성하지 않으셔도 됩니다. 일반적으로 패키지랑 이름을 제대로 지켜주면 스프링이 알아서 이 클래스 파일이 Config 파일이구나~ 하고 인지합니다. 간혹 인식하지 못하는 경우에만 추가해주시면 되겠습니다. 우리를 괴롭히는 로그인 페이지를 사용하지 않을거라면 위 두 가지 방식으로 제어할 수 있습니다. 첫 번째는 모든 요청에 대해서 권한을 허용하는 방법이고 두 번째는 로그..
간단하게 사용자 이름(닉네임)과 비밀번호 정보를 가지고 회원가입 기능을 구현해보겠습니다. 저번에 포스팅하다가 끊긴 게시판 만들기와 같은 프로젝트입니다. 프론트엔드는 이미 따로 구성해놓으셨다는 가정하에 진행하겠습니다. 저는 디자인을 잘 몰라서.. 프론트엔드 부분을 대충 구성해놓았기에 공유해드리기도 민망해서 그렇습니다. 제일 먼저 spring security를 사용하려면 dependency를 추가해줘야겠죠. build.gradle에 다음과 같은 의존성을 추가해줍니다. implementation 'org.springframework.boot:spring-boot-starter-security' 자 기본 설정(?)은 완료가 되었으니 실질적인 코드 작성을 해보겠습니다. 일단 이번에도 JPA를 가지고 만들게요. U..
· Java
2021.04.16 - [Java] - [JAVA] 자바 라이브 스터디 4주차 과제 1 : 과제 참여율 구하기 [JAVA] 자바 라이브 스터디 4주차 과제 1 : 과제 참여율 구하기 Github API를 이용해서 참여자들의 참여율을 계산하는 과제였습니다. 과제 요구사항을 그대로 가져와서 한 번 살펴보겠습니다. github.com/whiteship/live-study/issues/4 4주차 과제: 제어문 · Issue #4 · whit.. coding-nyan.tistory.com 이 포스팅에서 저는 private method를 테스트 했어야 했고 Reflection이라는 방식을 이용해서 조금은 복잡하게 테스트를 진행했습니다. 이렇게까지 복잡한 것을 보면 애초에 private method는 테스트 대상이 ..
이진 트리 계층 구조인 트리의 자식이 left, right 둘로 이루어진 형태를 이진 트리라고 합니다. 이진 트리를 구성하고 dfs와 bfs로 탐색하는 예제를 작성하는 것이 이 포스팅의 목표입니다. 그림에서 초록 원들을 각각 노드라고 부릅니다. 각 노드들이 가지를 뻗듯이 연결되어 있으니(같은 이유로 트리라는 이름이 붙여졌습니다.) Node의 값과 연결된 노드들의 정보가 필요하겠죠. 즉 Node 클래스에는 다음과 같은 필드가 필요합니다. public class Node{ int value; Node left; Node right; ... } 생성자는 직접 만들어보세요. DFS DFS는 깊이 우선 탐색이라고 부릅니다. 트리에서의 깊이는 맨 위에 있는 노드(루트 노드)로 부터 특정 노드까지의 길이를 깊이라고 ..
moongomi
개발냥발