본문 바로가기

전체 글

SNS 통합 피드 서비스 Spring을 공부하면서 무엇을 만들어볼까 고민하면서 OAuth 인증을 경험해보고 싶어 이 서비스를 만들게 되었습니다. 기본적인 기능들을 구현하였고 여기서 기능을 새로 구현하거나 기존 기능에서 고도화를 하면서 새로운 것들을 배워보려 합니다. - 기능 1. 자체 서비스 유저 회원가입 후 로그인 (SNS로그인 전 서비스 자체의 유저 로그인) 2. Facebook, Instagram 소셜 로그인 (Oauth를 통한 로그인) *(라이브 서비스를 위해서 사용자 정보 취급 이용 약관 작성이 필요, 정해진 테스트 계정으로 테스트해야 합니다.) * 중요: Facebook, Instagram 둘 다 개발 중인 상태로 지정된 테스트 계정을 제외하고 개인정보 취득 권한이 없습니다. 추후 수정 예정 3. 통합 피드 보기 버튼.. 더보기
[Java] 상속과 구현, 인터페이스와 추상 클래스의 차이 (extends, implement, interface, abstract class) - 상속과 구현 의 특징과 차이 상속(extends) : 자식 클래스가 부모 클래스의 메서드 등을 상속받아 사용하며 자식 클래스에서 추가 및 확장을 할 수 있습니다. 이로 인해 재사용성, 중복성의 최소화가 가능합니다. 구현(implements) : 부모 인터페이스를 자식 클래스에서 재정의하여 구현하는 것을 말하며, 상속과 달리 반드시 인터페이스의 메서드를 재정의하여 구현해야 합니다. 상속은 일반 클래스, abstract(추상) 클래스를 기반으로 구현, 구현은 인터페이스를 기반으로 구현합니다. - 추상 클래스와 인터페이스의 차이 추상 클래스와 인터페이스는 모두 반드시 부모 클래스(인터페이스)의 메서드를 재정의 하여야 합니다. 하지만 차이점은 사용 의도에 따라 다르게 구분됩니다. 예를 들어 추상 클래스 : .. 더보기
[디자인 패턴] 옵저버 패턴 (Observer Pattern) 옵저버 패턴은 주체가 어떤 객체의 상태 변화를 관찰하다가 상태 변화가 있을 때마다 메서드 등을 통해 옵저버 목록에 있는 옵저버들에게 변화를 알려주는 디자인 패턴입니다. 한 객체의 상태가 바뀌면 그 객체에 의존하는 다른 객체들에게 연락이 가고, 자동으로 정보가 갱신되는 1:N 관계(혹은 1대1)를 정의합니다. 여기서 주체란 객체의 상태 변화를 보고 있는 관찰자 옵저버들이란 이 객체의 상태 변화에 따라 전달되는 메서드 등을 기반으로 추가 변화 사항이 생기는 객체들 옵저버 패턴을 활용한 서비스로는 트위터가 있습니다. 내가 어떤 사람인 주체를 팔로우했다면 주체가 포스팅을 올리면 알림이 팔로워에게 가는 구조입니다. 또한 옵저버 패턴은 주로 이벤트 기반 시스템에 사용하며 MVC패턴에도 사용됩니다. Model에서 변.. 더보기
[Python] 다양한 문자열 입력 방법 저는 코딩테스트를 주로 파이썬으로 진행합니다. 예전에 고등학생 때는.. C언어를 사용하였지만 이제는 파이썬이 손에 익어버렸습니다. 그만큼 문법도 쉽고 구현도 쉬운 파이썬의 다양한 문자열 입력 방법과 변수, 배열에 저장하는 방법을 알려드리겠습니다. * map (자료형, 매핑할 값) * split() : 괄호 안의 값을 기준으로 값을 나눠줌, 빈칸은 한칸 띄어쓰기(' ')와 동일 - 변수 여러개 한줄에 입력 받기 map함수를 사용하면 for문을 쓰지 않고 한줄에 여러 개의 정수를 입력받을 수 있습니다. line단위로 입력이 나뉘기 때문에 엔터에 주의해야합니다. split()을 사용하여 띄어쓰기를 기준으로 변수를 나눕니다. * 참고 : int로 자료형을 바꿔주지 않으면 문자로 취급됩니다. x, y, k, t .. 더보기
[디자인 패턴] 전략 패턴 (Strategy Pattern), 정책 패턴 (Policy Pattern) 전략 패턴은 정책 패턴이라고도 불립니다. 객체의 행위를 바꾸고 싶은 경우 직접 수정하지 않고 전략이라고 부르는 캡슐화한 알고리즘을 컨텍스트안에서 바꿔주면서 상호 교체가 가능하게 만드는 패턴입니다. (컨텍스트 : 상황, 맥락, 문맥을 의미, 개발자가 어떠한 작업을 완료하는 데 필요한 모든 관련 정보를 말합니다.) 가장 이해가 쉬운 예제로는 쇼핑을 할 때 네이버페이, 카카오페이 등 다양한 방법으로 결제하듯이 결제의 전략만 바꿔서 적용하는 방법입니다. import java.util.ArrayList; import java.util.List; interface PaymentStrategy{ // 결제 전략들을 인터페이스로 정의 public void pay(int amount); } class KakaoCardS.. 더보기
[디자인 패턴] 팩토리 패턴 (Factory Pattern) 팩토리 패턴은 객체를 사용하는 코드에서 객체 생성 부분을 떼어내 추상화한 패턴이자 상속 관계에 있는 두 클래스에서 상위 클래스가 중요한 뼈대를 결정하고, 하위 클래스에서 객체 생성에 관한 구체적인 내용을 결정하는 패턴입니다. 상위 클래스와 하위 클래스가 분리되어 느슨한 결합을 가지며 상위 클래스에서는 인스턴스 생성 방식에 대해 모르기에 더 많은 유연성을 갖게 됩니다. 그리고 로직이 분리되어 리팩토링하더라도 한 곳만 고칠 수 있게 되어 유지 보수성이 증가됩니다. 예를 들어, 라떼 레시피, 아메리카노 레시피, 우유 레시피 등 구체적인 내용이 들어 있는 하위 클래스가 상위 클래스로 전달 되면 상위 클래스인 바리스타 공장에서는 이 레시피를 토대로 라떼, 아메리카노, 우유를 생산한다고 생각하면 됩니다. abstr.. 더보기
[디자인 패턴] 싱글톤 패턴 (Singleton Pattern) 싱글톤 패턴은 하나의 클래스에 오직 하나의 인스턴스만 갖는 패턴입니다. (보통 데이터베이스 연결 모듈에 많이 사용합니다.) 하나의 인스턴스를 만들어 놓고 해당 인스턴스를 다른 모듈들이 공유하며 사용하기 때문에 인스턴스를 생성할 때 드는 비용이 줄어드는 장점이 있지만 의존성이 높아지는 단점이 있습니다. class Singleton{ private static class singleInstanceHolder{ private static final Singleton INSTANCE = new Singleton(); } public static synchronized Singleton getInstance(){ return singleInstanceHolder.INSTANCE; } } public class m.. 더보기
[백준] 14499번: 주사위 굴리기 https://www.acmicpc.net/problem/14499 14499번: 주사위 굴리기 첫째 줄에 지도의 세로 크기 N, 가로 크기 M (1 ≤ N, M ≤ 20), 주사위를 놓은 곳의 좌표 x, y(0 ≤ x ≤ N-1, 0 ≤ y ≤ M-1), 그리고 명령의 개수 K (1 ≤ K ≤ 1,000)가 주어진다. 둘째 줄부터 N개의 줄에 지 www.acmicpc.net 이번 문제 역시 구현이.. 중요한 문제였습니다. 사실상 다이스가 어떻게 굴러가는지를 종이에다가 다 풀어서 동,서,남,북의 경우를 찾으니 나머지 구현은 쉬웠던 문제입니다. n,m, x,y,k = map(int,input().split()) arr = [] for i in range(n): arr.append(list(map(int,i.. 더보기