멋진 개발자

Call by Reference (CBR) 함수가 인수를 전달할 때 사용되는 방식에는 Call By Value(CBV), Call By Reference(CBR)가 있다. CBV는 함수가 인수로 전달받은 값을 복사하여 처리 하기 때문에 원본 값은 변경되지 않는 특징이 있다. CBR는 인수로 전달되는 변수의 참조 값을 함수 내부로 전달하는 방식이기 때문에 전달된 변수의 값을 변경하면 호출한 쪽의 변수의 값도 변경되는 특징이 있다. CBR의 장점으로는 : 복사하지 않고 직접 참조를 하기 때문에 상당히 빠르다. 반대로 단점은 : 직접 참조를 하기에 원래의 값이 영향을 받는다.(리스크가 존재) 하지만 Java는 객체지향 프로그래밍이기 때문에 Call By Value를 지향하고 있으며 그러한 방식으로 동작한다. ..
개요 모노리스 서비스에서 적용된 jwt 인증을 마이크로 서비스에서 jwt 인증을 할 수 있도록 구현하기 user와 관련된 내용이지만 게시글 작성, 댓글 작성 등 인가가 필요한 활동을 할 때마다 user-service를 거치지 않을 것 인증/인가가 필요하지 않은 서비스와 필요한 서비스를 구별 접근방법 모든 요청을 가장 먼저 받아서 처리하는 api-gateway에서 인증/인가를 구현 AbstractGatewayFilterFactory를 상속받는 filter를 사용 인증/인가가 필요한 서비스와 필요하지 않는 서비스를 나누어서 두 개의 filter를 각각 적용 해결과정 인증/인가가 필요하지 않는 서비스에는 NoTokenRequiredFilter를 적용 (회원가입, 로그인, 이메일 인증, feign-client..
개요 jwt 토큰방식의 인증/인가를 도입 토큰 하나로 모든 서비스를 처리하게 된다면 해당 토큰을 탈취당하는 보안 이슈 발생 우려 jwt 토큰방식의 보안성 강화 접근방법 토큰에 클라이언트의 ip주소를 담고 검증과정에서 ip주소가 다를 경우 에러를 반환 RefreshToken 사용 ip주소가 담긴 토큰이 탈취된다면 더 심각한 보안 이슈가 발생될 가능성이 있으므로 많이 쓰이는 RefreshToken을 사용 또한, 모바일의 경우 ip 주소의 변경이 자주 일어날 수 있으므로 그때마다 에러를 반환하게 된다면 유저가 불편함을 겪기 때문에 ip 주소를 담지 않기로 함 또한 RefreshToken도 유저에게 발급하고 관리하게 된다면 마찬가지로 탈취될 가능성이 있다고 우려되어, RefreshToken은 유저에게 제공하지 ..
개요 회원가입의 마지막 단계에는 이메일 인증을 완료해야 한다. 이메일 인증 도입 이유 이메일을 회원의 아이디로 사용하기 때문에 고유한 값이 필요(Unique Key) 이미 타 사이트에서 인증이 된 이메일을 사용함으로써 고유성을 확보 하지만 이메일 인증의 방식에는 두가지가 존재 일반적으로 내가 경험한 사이트들은 회원가입시 이메일로 인증 코드를 발송하고, 인증 코드를 사이트에 입력하여 일치여부를 확인한 뒤 가입을 완료시킨다. 위와 같은 인증 코드를 입력시키는 일반적인 방법 외에 인증 링크를 클릭해서 인증을 완료하는 방법도 존재하였기에 이 두가지 방식 중에 어떤 방식을 적용 시킬지 고민을 하였다. 링크 vs 입력 인증링크를 클릭하는 방식을 선택 가입 시 입력한 이메일에 쿼리 파라미터로 이메일과 인증코드가 담긴..
abstract만 잘 기억해 놓을 것!! 이클립스에서 알아서 오류가 뜬다고 설명을 해준다. 물론 그것만 믿고 이해하지 않고 있으면 안 되겠지만, 그래도 그렇게라도 도움이 되서 다행인 부분. abstract 적고 메서드에 중괄호를 빼고 ;를 적으면 추상 메서드가 완성되고, 그것은 나중에 상속된 클래스를 적을때 꼭 안에 내용을 채워줘야 오류가 나지 않는다. 추상 클래스 관련 내용은 이게 다였다. 아주 이해하기 쉬웠다. final에 대해서도 같이 나왔는데, 이건 javascript에서 const와 비슷하다고 생각하면 될 것같다. 절대 변하지 않는 상수!!
배열 초기화의 방법이 참 많다. int[] numlist = new int[] {1, 2, 3, 4, 5}; int[] numlist = new int[5]; int[] numlist = {1, 2, 3, 4, 5}; int[] numlist = new int[5] {1, 2, 3, 4, 5}; // 오류 발생!!!! 앞에 자료형도 넣어줘야하고, 대괄호도 필요하고 중괄호도 필요하고... 그리고 가장 중요한 것은 객체 배열이 아닌가 싶다. 클래스 생성자로 객체 배열을 생성하고, 그 안에다 또 인스턴스를 생성해서 넣어야 하는 것이 어려웠다. 처음에는 대체 뭔말인가 싶었지만, 그래도 지금 4번째 보니까 이제야 조금은 알것 같다(복습의 중요성...) ArrayList는 import를 해주고 나서 쓸 수 있는데,..
어떤 한 학생이 버스를 탈때, 지하철을 탈 때에 각각의 이벤트가 다르다는 점을 코드로 구현하는 것이 참 흥미로웠다. 뒤에 연습문제로는 사람이 별다방에서 아메리카노 먹는 것, 콩다방에서 라떼를 먹는 것을 프로그래밍 하는 것이었는데, 그것을 프로그래밍 하기 위해서 전체적인 큰 그림을 잘 그려놓고 코드를 작성해야 됬다. 먼저 무언가를 마시는 사람 클래스(Person)을 만들어서 그 안에 이름과, 소지하고 있는 돈을 멤버 변수로 할당하고, 어떤 카페에서 어떤 음료를 마시는 행동을 메서드로 작성해야 한다. 그리고 각 카페클래스(Star, Bean)마다 마실 때 어떤 음료를 마셨는지에 대한 메서드를 작성하고, 메뉴 클래스(Menu)에다가는 각 카페의 음료 가격을 메서드로 구현해야한다. 이렇게 4개의 클래스를 연결해..
생활코딩님의 Java입문강의를 통해 클래스의 내용을 한번 훑었어서 이해하는데 쉬웠다. 변수의 자료형은 기본 자료형(int, long, float, double 등)과 참조 자료형(String, Date, Student 등)으로 나뉜다. 소문자와 대문자로 기억하면 조금은 쉬울 것 같다. 매서드의 return 값이 있다면 그 값에 알맞는 자료형을 메서드 앞에 써줘야 한다. 만약 반환값이 없다면 void 클래스를 통해 인스턴스를 만들고 싶으면 new 예약어를 통해 만들기. 생성자는 그 클래스의 이름으로 자동 생성된다. 따로 생성자를 만들었을 경우에는 디폴트 생성자를 추가해줘야 한다. private으로 변수를 선언하면 그 변수를 바꿀때에는 get(), set() 메서드를 통해 바꿔야 한다. 보통 private를..
이전에 학원에서 프론트엔드과정 수업으로 만들었던 것이다. 구글에서 크리스마스에 나온 '산타추적기' 앱에 있었던 '엘프 즉석 밴드'를 보고 아이디어를 떠올렸는데, 다 만들고 나니까 몇가지 문제가 있었다. 처음에 만들었던 방식은 1. mousedown하면 각 악기들이 볼륨이 0으로 동시에 재생이 됨 2. 원하는 악기를 무대박스에 올려놓으면 해당 악기의 볼륨이 1이 됨. 3. 악기가 무대박스를 벗어나면 처음 위치로 돌아가서 다시 볼륨이 0으로 됨 여기서 나타나는 문제점은... 1. 왜인지 악기들의 싱크가 맞질 않는다. 2. 각 악기들의 처음위치인 offset().left 혹은 offset().top이 계속 오류가 난다. 제자리로 돌아오는 값을 찾지 못함 이것들을 해결하지 못해서 선생님께 여쭤 본 결과 직접적인..
일단 패키지는 폴더라고 생각하면 편하다. 클래스의 내용이 다르지만 이름이 같으면 쓸 수 없고 에러가 나지만, 그 이름이 같은 클래스가 서로 다른 패키지에 있으면 사용이 가능하다. 다른 패키지 안에 있는 클래스를 사용하고 싶으면 package org.opentutorials.javatutorials.packages.example3; import org.opentutorials.javatutorials.packages.example1.A; // import를 사용해서 다른 패키지의 클래스를 가져온다 클래스패스는 환경변수와 관련이 있는데, 두개의 클래스(A, B)가 담긴 Demo.java를 컴파일 하면 A.class 와 B.class로 만드는데 A클래스 안에서 B클래스를 인스턴스 시켜서 호출한다면 두개의 클래..
국비 수업 듣기 전 선수학습으로 'Do it! 자바프로그래밍 입문'과 '생활코딩 - Java 입문 수업'을 통해서 기초 지식을 얻고 있는 중이다. 현재 유튜브로 Overloading까지 배웠으며 가지고 있는 책의 진도는 처음부터 나가기 보다는 유튜브 강의 진도에 맞춰 보조 교재로 활용중이다. Javascript 문법과 비슷한 부분이 많아 이해하는데 크게 어렵지 않았다. 기본 문법(연산자, 조건문, 반복문 등등)은 쉽게 넘어갔고, 메소드라는 단어가 함수와 똑같은 단어인데, 사실 Js에서는 메소드가 다른 의미를 가지고 있어서 헷갈리는 부분이었다. 이 부분은 얼른 뇌를 바꿔서 머리속에 집어넣어야 겠다. 클래스와 상속에 대해서 좀 더 자세히 이해하게 되었다. 예전에 파이썬으로 클래스를 공부했을때는 진짜 단 1도..
10월에 학원을 알아보러 갔다. 사실 계획은 국비 재직자 코스로 저녁에 공부하고 올해 2월28일에 퇴사하면 조금의 시간만 거친 후 바로 개발자 취직을 하면 어떨까 싶었는데, 지금 생각하면 정말 미친 짓이라고 생각 된다. 근데 학원에서는 3월에 구직자 상태에서 국비를 제대로 듣는게 어떠냐면서 일단 저녁반 일반과정을 추천해주고, 거기서 결제를 하게되었다. 여러군데 더 다녀볼 계획이었지만, 당시 팔랑귀 였던 나는 그냥 첫 상담 받으러 갔던 첫 학원에서 결제까지 다 끝냈다. 게다가 과정은 백엔드도 아닌 프론트엔드과정으로... 차라리 3월 국비까지 독학을 하고 굳이 돈 들여서 학원을 안 다녔음 어땠을까.... 하는 생각도 있긴 하는데, 뭐 그래도 클론코딩이라도 시도해보고, 궁금한 거 바로바로 물어볼 수 있는 곳이..
작년 9월에 개발자에 발을 디뎌보기 위한 첫 발걸음으로 파이썬을 시작해 보았다. 네트워크 관리자로 일하고 있는 친구에게 이것저것 물어봐서 첫 번째 언어는 파이썬으로 입문을 해보라는 조언을 들었다. 언어가 직관적이고 어렵지 않다는 이유에서였다. 서점에 가서 한참을 책을 뒤적뒤적거리다 '혼공파(혼자 공부하는 파이썬)'을 구매하였다. 책을 여러 가지 뒤져봐도 뭐가 뭔지도 모르겠고, 뭐가 맞는지도 틀린 지도, 어떤 게 도움이 되고 아닌지도 몰랐기 때문에 여자친구가 책 디자인과 시안성 위주로 골라서 추천해 준 책이었다. 결론부터 말하자면 혼공파로 굉장히 재밌게 공부를 끝냈다. 처음에는 완전히 백 퍼센트 이해하면서 책을 끝내려고 했었는데, 앞부분은 꾸역꾸역 이해해 가며 풀었지만, 뒤로 갈수록 도저히 이해가 힘든 부..
개발의 WinG
'멋진 개발자' 카테고리의 글 목록 (6 Page)