mozzi-devlog의 등록된 링크

 mozzi-devlog로 등록된 티스토리 포스트 수는 34건입니다.

[Java] String, StringBuilder, StringBuffer의 차이와 장단점 [내부링크]

String, StringBuilder, StringBuffer 뭐가 다른 걸까? String String 클래스는 문자열을 불변(immutable)하게 처리한다. 한 번 생성된 문자열은 변경할 수 없으며, 문자열 연산 시에는 새로운 객체를 생성하게 된다. 이로 인해 메모리 소모가 크게 발생할 수 있으니 문자열 연산이 많은 경우에는 StringBuilder 또는 StringBuffer사용을 권장한다. StringBuilder StringBuilder는 가변(mutable)한 특성을 가지고 있어 문자열을 동적으로 변경할 수 있다. 문자열 연산을 효율적으로 처리할 수 있어 성능상의 이점이 있지만, StringBuilder의 경우 단일 스레드 환경에서 안전하지 않기 때문에 멀티스레드 환경에서 사용할 때에는 동..

[MyBatis] Cause: java.sql.SQLDataException: Cannot determine value type from string [내부링크]

Cause: java.sql.SQLDataException: Cannot determine value type from string DTO 내부에 생성자 미존재로 나오는 에러 해결법 @NoArgsConstructor @AllArgsConstructor public class sampleDto { private String something; } @NoArgsConstructor / @AllArgsConstructor 어노테이션을 상황에 따라 사용해서 해결

[JPA] 낙관적 락(Optimistic Lock)과 비관적 락(Pessimistic Lock)에 대해 [내부링크]

낙관적 락, 비관적 락에 대해 JPA를 사용하여 데이터베이스와 연결된 애플리케이션을 개발할 때, 동시성 처리와 관련된 이슈가 발생할 수 있다. 이러한 이슈를 해결하기 위한 방법 중 하나는 락(lock)을 사용하는 것이다. 이번 포스팅에는 낙관적 락과 비관적 락에 대해 알아보고, 예제코드와 이를 사용하는 이유 및 장단점을 함께 써보겠다. 낙관적 락(Optimistic Lock) 낙관적 락은 충돌이 거의 발생하지 않을 것이라고 가정하고, 충돌이 발생한 경우에 대비하는 방식이다. 낙관적 락은 JPA에서 버전(Version) 속성을 이용하여 구현할 수 있다. 낙관적 락의 특징으로는 충돌 발생확률이 낮고, 지속적인 락으로 인한 성능저하를 막을 수 있다. 아래는 예시 코드이다. 1. Entity @Entity pu..

[GIT] Git 및 Github 사용가이드 [내부링크]

최근에 주변에서 개발을 시작하려는 지인분들이 많아 Git과 Github에 대해 가이드를 적어보려 한다. Git과 Github에 대해 간략하게 설명하고 Git 이란? Git은 분산 버전 관리 시스템(DVCS)로, 개발자들이 소스코드의 변경 사항을 추적하고 협업할 수 있도록 도와주는 도구이다. 여러 개발자들이 서로 다른 브랜치에서 작업을 진행하고, 작업한 부분을 병합하는 것까지 원활하게 지원해 준다. GitHub이란? GitHub은 Git을 기반으로 하는 원격 저장소 호스팅 서비스로, 개발자들이 프로젝트를 공유하고 협업할 수 있는 온라인 플랫폼이다. 코드 리뷰와 이슈 트래킹, 프로젝트 관리 등의 부가 기능 또한 제공한다. 따라 해보기 1. Git 설치 Git 공식 홈페이지(https://git-scm.com..

백엔드 개발에서의 성능 최적화 및 스케일링 전략 [내부링크]

오늘은 최근 지인들에게 많은 질문을 받고 있는 성능 최적화와 스케일링 전략에 대해 적어보려고 한다. 성능 최적화와 스케일링은 백엔드 개발에서 핵심적인 요소이다. 서비스의 성공 여부와 직결되는 이슈이기 때문에 꾸준한 최적화와 효율적인 스케일링 전략은 선택이 아닌 필수이다. 성능 최적화 전략 1. 캐싱 캐싱이란 반복적으로 사용되는 데이터나 계산 결과를 메모리에 저장하여 빠르게 액세스 할 수 있도록 하는 기법이다. 데이터베이스에 접근하는 데 시간이 많이 걸리는 작업일 경우, 캐싱을 사용하여 빈번하게 사용되는 데이터를 빠르게 가져올 수 있다. 예시로 Redis와 같은 인메모리 캐시 솔루션을 활용하여 조회 속도를 크게 향상 시킬 수 있다. 캐싱의 종류로는 아래와 같다. 1-1. 지역캐싱 (Local Caching..

[MSA] 마이크로서비스 아키텍처(MSA)란 뭘까? [내부링크]

마이크로서비스 아키텍처(MSA)는 작고 독립적인 서비스들의 집합으로 구성된 애플리케이션 구조이다 이번 포스팅에서는 마이크로서비스 아키텍처(Microservice Architecture)와 모놀리식 아키텍처(Monolithic Architecture)의 장단점을 비교하고, 각각 어떤 상황에서 각각이 적합한지에 대해 알아보겠다. 모놀리식 아키텍처 (Monolithic Architecture) 모놀리식 아키텍처는 전통적인 개발 방식으로 하나의 프로젝트에 모든 기능을 함께 포함한다. 이렇게 하면 코드 베이스가 커질수록 개발 및 배포에 복잡성이 증가한다. 아래는 모놀리식 아키텍처의 예시이다. 모놀리식 아키텍처의 경우 위의 그림과 같이 모듈단위로 쪼개는 것이 아닌 하나의 프로젝트로 전체 애플리케이션을 묶어서 개발하..

[오류해결] 캐스팅 오류 java.lang.ClassCastException: class java.lang.Long cannot be cast to class java.lang.String [내부링크]

java.lang.ClassCastException: class java.lang.Long cannot be cast to class java.lang.String 소셜로그인을 개발 중에 JSONObject에서 받아온 데이터를 1번 방법으로 String으로 변환하는 과정에서 오류가 났다. 아래의 2번 방식인 String.valueOf를 사용하여 해결한다. 1. (String) public String type() { return (String) jo.get("id"); } 2. String.valueOf(); public String type() { return String.valueOf(jo.get("id")); }

[오류해결]Failed to start bean 'documentationPluginsBootstrapper'; nested exception is java.lang.NullPointerException [내부링크]

org.springframework.context.ApplicationContextException: Failed to start bean 'documentationPluginsBootstrapper'; nested exception is java.lang.NullPointerException Spring boot 2.6 이후의 버전에서 matching-strategy의 값이 ant_path_matcher에서 path_pattern_parser로 변경되었다. 이러한 과정에서 오류가 발생하고 있는 것이었다. 해결방법으로는 application.yaml 파일에서는 spring: mvc: pathmatch: matching-strategy: ant_path_matcher application.propertie..

[Java] static(정적) 변수와 메모리에 대해 [내부링크]

static변수와 메모리에 대해 1. static 키워드 자바를 사용하다 보면 static 키워드가 붙은 함수나 변수를 만들어 본 적이 있을 것이다. 오늘은 이 static 키워드를 메모리 관점에서 얘기해보려 한다. 일반적으로 아래와 같은 코드처럼 new를 사용하여 생성한 객체는 메모리의 Heap 영역에 생성되며, static 키워드로 만들어진 변수는 static 영역에 할당된다. static 키워드를 사용하게 되면 메모리에 처음 한번 생성되며, 프로그램이 종료될 때 사라지게 된다. ( 우리가 만드는 class들도 static영역에 한번 생성된다 ) public class Something { public static String some(){ return ""; } } Something somethin..

[IntelliJ] 인텔리제이 플러그인 추천 [내부링크]

IntelliJ Plugin 오늘은 내가 쓰고 있는 IntelliJ의 플러그인들에 대해 추천해보려 한다. ( 나중에 나도 다시 환경설정을 할때 다운로드하기 위해.. ) 아래 추천하는 플러그인들 중에서 유용하다고 생각하는 것들만 다운로드하여서 써보면 좋을 거 같다. 1. CodeGlance Pro 개발을 하다 보면 마우스 휠이나 터치패드로 내리기 귀찮을 정도로 긴 코드를 볼 때가 존재한다. 이럴 때 이 플러그인을 사용하게 되면 아래 사진의 화살표와 같이 코드를 축약해서 보여준다. 마우스로 클릭 한 번이면 해당 위치로 이동이 가능하게 된다. 가끔 프로젝트를 하다 보면 엄청 긴 코드를 보게 되는데 이때 유용하게 사용하고 있다. 2. GitToolBox 이 플러그인은 인텔리제이 왼쪽 프로젝트 창에서 현재 브랜치..

[Spring] ControllerAdvice와 ExceptionHandler에 대해 [내부링크]

ControllerAdvice와 ExceptionHandler에 대해 @ExceptionHandler란? @ExceptionHandler란 Bean에서 발생하는 예외를 잡아 하나의 메서드에서 처리해주는 어노테이션이다. ExceptionHandler 어노테이션에 설정한 예외가 발생한다면 해당 handler가 작동하며 어노테이션 옆에 value 값을 줘서 캐치할 예외를 설정해 줄 수 있다. ( 여러 예외를 한 곳에 넣을 수도 있다 ) 해당 내용은 아래의 코드를 통해 확인해보자 @RestController public class ExceptionController { // 한개만 설정할 경우 @ExceptionHandler(NullPointerException.class) public String allExc..

[Js] 뒤로가기 버튼에서 발생하는 캐시 BF캐시 (bfcache) [내부링크]

BF캐시(bfcache) BF캐시 (Back Forward Cache) bf캐시란 브라우저에서 발생하는 최적화 기능으로 브라우저의 뒤로 가기 버튼, 앞으로 가기 버튼을 눌렀을 때 화면을 바로 보여주는 역할을 한다. bf캐시는 자바스크립트를 포함하여 페이지 전체를 캐시로 저장해버리는 기능을 가진다. 이러한 기능은 화면을 빠르게 보여줄 수 있는 기능을 제공하지만, js가 다시 로드되어 동작을 해야 하는 페이지에서는 문제가 발생한다. 이를 해결하기 위해서는 아래와 같은 방법들이 존재한다. 1. html로 브라우저 캐시를 초기화하는 방법 head사이에 meta태그를 추가하여 해결하는 방법이다. # 지정일까지 캐싱 비활성화 # 캐시된 페이지를 삭제하는 시간 # 캐시 비활성화 HTTP 1.0 # 캐시 비활성화 HT..

[Java] 람다 표현식, 람다(Lambda Expression)이란? [내부링크]

람다식이란? 나는 처음 시작한 프로젝트가 금융권 프로젝트라 자바 7 버전으로 처음 프로젝트를 시작했었다. 이후 현재는 자바 11을 사용하는 프로젝트를 진행하면서 자바 8 이후 도입된 stream과 람다를 사용하다 보니 편해서 작성하게 되었다. 람다란? Java8 버전 이후에 추가된 기능으로 따지면 메서드를 하나의 식으로 표현한 것이다. 아래 예시 코드를 살펴보자 int num = 10; Runnable runnable = new Runnable() { @Override public void run() { System.out.println("number: " + num); } }; runnable.run(); 보통 람다 설명에서 자주 사용하는 Runnable 코드이다. 이를 람다로 사용하면 아래와 같이 적..

[Js] 따옴표(quotes)와 백틱(backtick)의 차이 [내부링크]

',"와 `의 차이 자바스크립트 코드를 보다 보면 따옴표와 백틱을 많이 보게 된다. 따옴표 하고 백틱을 언제 사용해야 하고 차이는 무엇일까? 보통 스트링(String) 값을 선언할 때 따옴표를 아래와 같이 많이 쓴다. ( 백틱은 숫자 1번 왼쪽 물결 표시 키이다 ) // 큰 따옴표 let temp = "Hello World" // 작은 따옴표 let temp2 = 'Hello World' // 백틱 let temp3 = `Hello World` 위의 코드에서는 큰 따옴표, 작은따옴표로 스트링 값을 선언한 것인데 JS에서는 차이가 없다. 그럼 `(backtick)백틱은 차이가 있을까? 백틱 백틱의 경우 ${}를 통해 변수를 넣어 사용할 수 있는데 이를 템플릿 리터럴이라 부른다. ( ES6 이후 ) 한번 아..

[Linux] 서버 장애 요인파악 순서 [내부링크]

리눅스 서버가 죽었다... 뭘 해야 할까? 만약 운영하던 서버에서 갑자기 문제가 터졌을 때 어떻게 처리할 것인가? 서버에서 문제가 생겼을 경우에는 일단 서버의 상태를 체크해야 하는데 이에 대한 서버 체크리스트에 대해 작성해보려 한다. 먼저 해당 서버의 터미널로 접속해야 한다. 접속을 했다면 이제 상태를 한번 살펴보자 1. CPU 상태 확인 현재 서버가 어떤 이유 때문에 오류가 발생했는지 찾기 위해 먼저 CPU 상태를 확인한다. top 명령어를 통해 실행 중인 프로세스가 CPU 점유를 너무 많이 하고 있지는 않은지 확인하고 처리한다. $ top 2. 메모리 상태 확인 [Linux/Ubuntu] 리눅스/우분투 스왑 파일(Swapfile) 생성에서도 설명하였지만 메모리가 부족하면 서버가 멈춘다. 이를 해결하기..

[Linux/Ubuntu] 리눅스/우분투 스왑 파일(Swapfile) 생성 [내부링크]

스왑 파일 생성 이번 포스팅은 AWS EC2 프리티어에서 메모리 부족 현상을 해결하는 방법에 대해 적어보려 한다. SpringBoot 프로젝트를 만들어서 EC2에 젠킨스를 배포 자동화를 시도할 때 EC2가 멈추는 현상을 발견하였고 가끔 젠킨스를 통하지 않고 그냥 적어도 멈추는 현상이 발견했었다. ( EC2의 프리티어 메모리는 1GB ) 스왑 파일(Swapfile) 메모리를 늘리는 방법 중 제일 쉬운 방법은 돈을 내고 더 좋은 서버를 쓰면 된다. ( 우린 돈이 없으니 다른 걸 찾아보자 ) 리눅스에서는 스와핑(Swapping)이라는 게 존재하는데 이는 하드디스크를 가상 메모리로 전환시켜 사용하는 방식이다. AWS에서는 스왑 공간 크기 계산을 아래와 같이 권장한다 최대 2GB의 RAM에 대해 스왑 공간은 RA..

[Spring] IoC(Inversion of Control)과 DI(Dependency Injection) 이란? [내부링크]

IoC와 DI란? 스프링을 사용하면 IoC와 DI라는 단어를 많이 듣게 된다. IoC와 DI는 뭘까?? IoC(Inversion of Control)란? IoC란 영어 그대로 제어의 역전이라 부른다. 제어의 역전이란 메서드나 객체의 호출 작업을 개발자가 아닌 스프링에게 제어권을 넘기는 것을 말한다. 이전까지는 개발자가 객체의 생성을 관리하며 제어했지만, 스프링을 사용하게 되면 스프링 컨테이너에게 제어권을 넘겨 스프링 컨테이너가 흐름을 제어하게 된다. DI(Dependency Injection)란? DI란 의존성 주입이라 부르며, 객체를 직접 생성하는 게 아닌 외부(IOC 컨테이너)에서 생성한 후 주입시켜주는 방식이다. 의존성 주입 방식으로는 3가지 방법이 존재한다 생성자 주입 ( Constructor I..

[JS] 이벤트 버블링(bubbling)과 이벤트 캡처링(capturing) [내부링크]

이벤트 버블링과 이벤트 캡처링이란? 이 글은 이벤트 JS에서 이벤트 버블링과 이벤트 캡처링에 대해 설명한다. 이벤트 버블링과 캡처링 모두 계층적으로 짜여있는 HTML 요소에 이벤트가 발생할 때 나타나는 연쇄반응을 칭한다. 해당 반응이 발생하는 방향에 따라 버블링과 캡처링으로 나뉜다. 말로보면 어려우니 아래 그림과 코드를 통해 알아보자 이벤트 버블링 아래와 같은 코드가 있다고 가정해보자 클릭해! 브라우저는 이벤트가 발생하면 그 이벤트를 최상위에 있는 요소까지 이벤트를 전파시키는 특성이있다. 해당 코드에서 p 태그인 "클릭해!"를 누르게 되면 처음으로 알럿 창인 "p"가 뜨게 된다 이후 "div"와 "form"이 순차적으로 출력되며 총 3개의 알럿 창이 뜨게 된다. p태그만 클릭하였지만 div와 form요소..

[Java] 가비지 컬렉션(Garbage Collection) 알고리즘 (가비지 컬렉션 - 2) [내부링크]

가비지 컬렉션 알고리즘 이 글은 [Java] 가비지 컬렉션(Garbage Collection)이란? 의 2편이다. ( GC에 대한 자세한 내용은 1편을 참고 ) 1편에서 GC 알고리즘 종류에 대해 말을 했었다. 1. Serial GC 2. Parallel GC 3. Parallel old GC 4. CMS(Concurrent Mark & Sweep) GC 5. G1 GC(Garbage First GC) 대충 이런 알고리즘이 있었는데 이에 대해 하나하나 알아보도록 하자 1. Serial GC Serial GC의 경우 Young 영역과 Old 영역이 다르게 실행된다. Young 영역의 경우 1편에서 설명한 Mark Sweep 방식으로 수행되지만 Old 영역의 경우 Compact 가 추가된 Mark Sweep..

[Java] 가비지 컬렉션(Garbage Collection)이란? (가비지 컬렉션 - 1) [내부링크]

가비지 컬렉션(GC)이란? 가비지 컬렉션(Garbage Collection , GC) 가비지 컬렉션이란 개발자가 동적으로 할당한 메모리 영역 중 더 이상 사용하지 않는 자원을 해제하는 기능이다. Java의 경우 개발자가 직접 메모리를 해제하지 않아도 JVM의 가비지 컬렉터가 알아서 정리해준다. (JVM 메모리 구조 중 Heap영역에서 사용하지 않는 객체를 삭제한다. 아래의 그림 참조 ) 아래의 예시 코드로 한번 알아보자 Car car = new Car("K5"); car = new Car("K3"); 처음에 K5라는 차가 생성되고 car는 K5를 바라보고 있다 이때는 가비지가 존재하지 않는다. 하지만 이후 K3라는 차가 생성되고 car는 K3를 바라보게 된다. K3를 바라보게 되는 순간부터는 K5라는 차..

[앱출시 - 2] REST API 소셜로그인 (네이버,카카오,구글,페이스북) - 네이버 [내부링크]

오늘은 이전에 작성한 REST API 소셜 로그인 2편-네이버를 작성한다. 카카오 버전은 [앱출시 - 1] REST API 소셜로그인 (네이버,카카오,구글,페이스북) - 카카오 를 참고하면 된다. 개발 ( Springboot ) 일단 개발에 앞서 네이버의 경우에도 카카오와 같이 개발자 사이트에 접속해서 개발 준비를 진행해야 한다. 네이버 개발자 -https://developers.naver.com/ 네이버 개발자 사이트에 접속하면 상단에 Application을 클릭 후 애플리케이션 등록을 눌러 새로운 애플리케이션을 등록해준다. 앱의 이름을 적고 사용 API로는 네아로(네이버 아이디로 로그인)를 선택한다. 정보제공의 경우 운영서버 심사 시에 실제 사용하는 내용만 넣어야 하므로 적당히 필요한 값만 선택해야 ..

[Spring] 필터(Filter)와 인터셉터(Interceptor) 차이 [내부링크]

필터와 인터셉터의 차이는? 필터와 인터셉터 필터와 인터셉터에 관한 내용도 면접 내용으로 많이 나오는 질문이다. 그럼 필터와 인터셉터가 하는 일은 무엇일까? 간단하게 말하면 컨트롤러로 들어가기 이전에 처리해야 할 작업들을 수행하는 것이다. 공통된 작업들을 해결하기 위해서는 필터, 인터셉터, AOP를 사용할 수 있지만 이번 글에서는 필터와 인터셉터에 대해 설명해보려 한다. 필터 일단 필터는 J2EE 표준 스펙의 기능이며, 클라이언트의 요청이 들어올 때 Web Context영역 안에서 디스패처 서블릿(Dispatcher Servlet)에 요청이 전달되기 전/후에 URL 패턴에 맞는 모든 요청에 대해 부가 작업을 처리할 수 있는 기능을 제공한다. ( 말로는 어려우니 아래 사진으로 ) 필터 흐름의 경우 아래와 같..

[Spring] 디스패처 서블릿이란? (Dispatcher Servlet) [내부링크]

디스패처 서블릿이란 무엇인가? 디스패처 서블릿 디스패처 서블릿이란 서블릿 컨테이너의 가장 앞단에서 HTTP 프로토콜로 들어오는 모든 요청을 먼저 받아 적합한 컨트롤러에 위임해주는 프론트 컨트롤러이다. 프론트 컨트롤러란? 프론트 컨트롤러(Front Controller)란 서블릿 컨테이너의 제일 앞에서 서버로 들어오는 클라이언트의 모든 요청을 받아서 처리해주는 컨트롤러이다. 프론트 컨트롤러가 도입되기 전에는 각 컨트롤러마다 공통 로직을 복붙 형식으로 다시 작성하여 사용했지만, 프론트 컨트롤러가 도입된 이후에는 공통의 로직에 대한 처리가 가능해졌다. 디스패처 서블릿의 흐름 ( Spring MVC 동작순서 ) 백엔드 개발자 면접 질문으로도 가끔 등장하는 디스패처 서블릿의 흐름이다. 스프링 부트에서는 스프링 부트..

[JS] 호이스팅이란? ( Hoisting ) [내부링크]

호이스팅이란? 호이스팅(Hoisting) JavaScript로 개발을 진행하다 보면 호이스팅이라는 말을 들어본 경험이 있을 것이다. 보통은 호이스팅이라 하면 코드가 실행되기 전에 함수, 변수의 선언을 맨 위로 끌어올린다고 설명한다. 하지만 실제로 끌어올리는 것은 아니다. 호이스팅이란 간단하게 말하면 아래와 같이 말할 수 있다. 호이스팅이란 코드가 실행되기 전에 변수 및 함수에 대한 메모리를 설정하는 것이다. 역시 말로만 보면 이해하기 어려울 수도 있으니 밑에 예시 코드를 통해 확인해보자 function hoist(a) { return a+1 } var hoistV = "var hoist" const hoistC = "const Hoist" let hoistL = "let Hoist" 처음 코드가 실행되기..

[JS] V8 엔진(자바스크립트 엔진)이란 무엇일까? [내부링크]

V8 엔진이란 무엇인가? 어느 날 면접 질문으로 V8엔진에 대해 질문이 들어온 적이 있다. 처음 V8엔진을 들었을 때에는 자동차 엔진인가? 밖에 생각이 들지 않았지만 이후 자바스크립트 엔진인 것을 알게 되었다. V8 엔진이란? V8은 Google Chrome과 Node.js 에서 사용되고 있는 구글에서 제작된 자바스크립트 엔진이다. 이는 C++로 작성되었고 다중 스레드 방식을 사용하며, 환경과 상호 작용하고 프로그램을 실행하기 위한 바이트 코드를 생성하는 역할을 한다. ( 초기의 V8은 웹 브라우저의 성능 향상 메커니즘으로 도입되었다. ) 다른 엔진보다 왜 V8인가? V8엔진과 다른 엔진의 차이점으로는 JIT( Just In Time ) 컴파일러이다. JIT 컴파일러는 런타임에 모든 JavaScript를..

[OS] 프로세스(Process)와 스레드(Thread)의 차이 [내부링크]

프로세스가 무엇인지? 스레드란 무엇인지? 그럼 그 둘의 차이는 설명할 수 있는가?? 신입 ~ 3년차정도에 많이 물어보는 OS 기초 질문인 거 같다. 뭔가 들어봤는데 까먹거나 수업때 배웠는데 기억이 안나는 경우가 많은 것 같다. ( OS과목 A+ 받은거같은데 기억이 하나도 안 난다.. ) 프로세스란 무엇인가? 프로세스란 컴퓨터에서 연속적으로 실행되고 있는 컴퓨터 프로그램을 말한다 프로세스는 OS가 프로그램을 실행하기 위한 가장 작은 스레드, 메모리들의 집합이며 OS의 스케줄링 방식에 따라 CPU를 프로세스에게 적절하게 할당한다. 프로세스는 운영체제에게 독립된 메모리 영역을 할당받는다. 메모리의 구조로는 code(text), data, heap, stack 영역으로 총 4개로 구성되어있다. 메모리 구조 - ..

[앱출시 - 1] REST API 소셜로그인 (네이버,카카오,구글,페이스북) - 카카오 [내부링크]

오늘은 산타 앱 개발의 시작인 소셜 로그인에 대해 포스팅하려 한다. 초기의 산타 앱에서는 네이버, 카카오, 구글, 페이스북 로그인만 존재하였고, REST API 방식으로 개발을 진행했었다. 마지막 후기 때 작성할 예정이지만... 구글, 페이스북 로그인은 현재 앱에서 빠져있는 상태이다.. ( 이유는 나중에 ) 개발 ( Springboot ) 일단 개발에 앞서 각각의 개발자 사이트에 접속해서 앱 등록 및 개발 준비를 해야 한다 1. 카카오 개발자 - https://developers.kakao.com/ 2. 네이버 개발자 - https://developers.naver.com/main/ 3. 구글 개발자 - https://console.developers.google.com/apis/ 4. 페이스북 개발자 ..

[앱출시] 출시 2일차 다운로드 1000회 앱 개발여정 [내부링크]

제가 처음 출시한 앱 "산타"에 대해 글을 써보려 한다. 산타는 등산 커뮤니티 및 정보제공 웹앱으로 공공데이터포털의 데이터를 사용해서 개발한 개인 사이드 프로젝트이다. 웹앱을 출시할 계획이 있거나, 사이드 프로젝트를 개발해보고싶은 사람들을 위해 내가 개발했던 방식, 막혔던 점들을 하나하나 작성해 나가려 한다. 프로젝트 개발기술 내용에 대해서는 다음 게시글부터 작성해 나갈 것이다 많관부! 기획 많은 등산러들을 위해 산에 대한 정보, 내 위치기반 가까운 산 추천 및 등산 친구들을 찾을 수 있는 커뮤니티까지 생각을 하고 기획했다. 기획단계에서는 이러한 기능들이 있으면 좋겠다!라고 생각하고 개발을 진행했었다 - 소셜 로그인 ( 네이버, 카카오, 구글, 페이스북 ) 등등.. - 채팅 서비스 ( 1:1 채팅 및 그..

WELCOME TO MY BLOG [내부링크]

안녕하세요! 2년차 주니어 백엔드 개발자입니다! #문과 출신이였던 제가 정보통신공학과 -> 컴퓨터공학과를 거쳐 #개발자 가 되는 과정, 배우는 내용들을 공유하는 내용을 블로그로 적으려고합니다! Blog contents: TIL (Today I Learned): 오늘 공부한 내용들을 공유합니다! 앱출시: 사이드프로젝트 앱을 출시하면서 개발했던 내용들을 공유합니다! 일기장: 나머지 끄적끄적... 내용들을 공유합니다

[Flutter] 플러터란? - 플러터 입문 [내부링크]

플러터란? 대학생 시절 나는 GDSC(Google Developer Student Club) 동아리 활동을 진행하면서 플러터에 대해 알게 되었다. 플러터를 사용해서 앱개발도 진행했었고 현재 출시한 앱 산타의 경우도 초기버전의 경우 완전한 네이티브로 구현했었다. ( 현재는 플러터 웹뷰 ) 초기버전 : https://github.com/Kimbeomchul/HikingMobileApp Flutter란? 플러터는 구글에서 개발한 오픈소스 크로스 플랫폼 GUI 애플리케이션 프레임워크이다. Mobile World Congress 2018에 베타버전을 발표하면서 새롭게 소개된 프레임워크이다. ( 나같은경우에는 2019년에 처음 사용했으니 거의 나오자마자 썼다.. ) 플러터의 특징으로는 크로스플랫폼(Cross-Pla..

[JS] 일급 객체(First Class Object), 일급함수(First Class Function)란? [내부링크]

일급 객체란 무엇인가? 자바스크립트로 개발을 하다 보면 일급 객체와 일급 함수라는 말을 많이 듣는다. 일급 객체란 뭘까? 일급 객체(First Class Object) 일급 객체란 다음과 같이 설명할 수 있다. 다른 객체들에 일반적으로 적용 가능한 연산을 모두 지원하는 객체를 가리킨다. 보통 함수에 매개변수로 넘기기, 수정하기, 변수에 대입하기와 같은 연산을 지원할 때 일급 객체라고 한다. - 출처: 위키 설명이 어렵다면 일급 객체의 특징을 아래의 예시로 한번 보자 1. 변수(variable)에 담을 수 있다 let mozzi = function() { return "HelloWorld"; } console.log(mozzi()); 변수 mozzi의 경우 HelloWorld가 출력된다. 2. 파라미터로 ..

[Java] 자바(Java)란 ? [내부링크]

자바란 무엇인가? 자바(Java)란? 위키백과에서는 자바를 이렇게 설명한다 자바는 썬 마이크로시스템즈의 제임스 고슬링( James Gosling )과 다른 연구원들이 개발한 객체 지향적 프로그래밍 (OOP: Object Oriented Programming) 언어이다. 여기서 처음 개발을 시작하는 사람들은 객체 지향적 프로그래밍이란 것이 뭘까?라는 생각이 들것이다. 그럼 객체지향 프로그래밍(OOP: Object Oriented Programming)이란 무엇일까? 간단하게 말해서 객체지향 프로그래밍이란 프로그램을 개발하는 기법으로 객체(부품 정도로 생각하면 된다)를 만들고, 이것들을 조립하여 전체 프로그램을 완성시키는 기법이라 설명할 수 있다. 더 깊은 내용으로는 나중에 한 번에 모아서 작성하도록 하겠다..

[Spring] 스프링 빈(Bean)이란? [내부링크]

스프링 빈이란? 이전 포스팅에는 스프링 IoC와 DI에 대해 알아보았다. 이번에 알아볼 내용으론 스프링 빈(Bean)인데 빈이란 무엇일까? 빈(Bean) 빈이란 콩이다 는 장난이고 빈이란 다음과 같이 설명할 수 있다. 빈..

[면접] 신입/경력 개발자 면접질문 리스트 [내부링크]

오늘은 면접을 보고, 준비하는 과정에서 받았던 질문들에 대해 글을 써보려 한다. 보통 면접을 6개월 차 ~ 1년 4개월 차 정도에 3년 차 공고로 거의 지원해서 코테와 면접을 진행했었고 현재는 2년 차 백엔드 개발..