[우아한테크코스 6기] 프리코스 - 2주차
·
BE/우아한테크코스
이번 과제는 뭐가 나올까 했는데 자동차 경주 게임이 나왔다. 해당 과제는 지난 겨울 방학 멘토링 자격시험으로 자바를 처음 접할때, 진짜 아무것도 모를때 시작했던 과제였는데 그때보다 나은 프로젝트를 만들겠다는 다짐으로 시작했다. https://github.com/woowacourse-precourse/java-racingcar-6 GitHub - woowacourse-precourse/java-racingcar-6 Contribute to woowacourse-precourse/java-racingcar-6 development by creating an account on GitHub. github.com 이 글에선 2주차 과제를 하며 내가 고민하고 느낀 것들, 피드백을 정리해보고자 한다. 프로그래밍 요..
[우아한테크코스 6기] 프리코스 - 1주차
·
BE/우아한테크코스
지난 10월 19일 ~ 10월 25일까지 프리코스 1주차가 진행되었다. 어떤 과제가 나올까 궁금했는데, 작년 프리코스 과제였던 숫자 야구 게임이 나왔다. https://github.com/woowacourse-precourse/java-baseball-6 GitHub - woowacourse-precourse/java-baseball-6 Contribute to woowacourse-precourse/java-baseball-6 development by creating an account on GitHub. github.com 이 글에선, 1주차 과제를 하며 내가 했던 고민들과 느낀점을 기록해보고자 한다. 구현부터 설계부터? 사실 소프트웨어 공학을 배웠다면, 설계의 중요성은 누구나 알 것이다. 이번 과..
모던 자바 인 액션 - 회고록
·
PL/모던 자바 인 액션
지난 2023 여름방학, GDSC에서 열린 자율 자바 심화 스터디인 모던 자바 인 액션 스터디에 참여하였다. 두 달끝에 지난 10월 9일 마무리 되었고 조금 늦었지만 회고록을 써볼까 한다. 참여동기 아래와 같이 모집 공고가 올라왔는데, 약 두 달에 걸쳐서 자바8을 정복하는 스터디라 하였다. 무엇보다도 진행 방식이 마음에 들었다. 모두가 동일하게 처음부터 같이 공부하는 스터디를 몇 번 진행해봤는데, 초심자들끼리 막히는 부분을 헤쳐나가고 공유하며 성장하는 부분은 매력적이었지만, 공부하다 모두가 모르는 내용이 나올 때 최적의 피드백을 찾기가 어려웠다. 그런면에서 이 스터디는 멘토님이 있다는 점에서 막히는 내용이 있을때 조언을 얻을 수 있을 수 있을 것 같다는 생각에 마음에 들었고, 또한 구두로 퀴즈를 진행한다..
[우아한테크코스 6기] 프리코스 0주차
·
BE/우아한테크코스
우아한테크코스가 시작된다. 합격하게 되면 당장 취업은 아니지만 개발자로 성장할 수 있는 최고의 기회를 얻게 된다. https://www.woowacourse.io/apply 지원하기 🪐 우아한테크코스 2024 신입생 모집 www.woowacourse.io 이를 위한 선발과정인 프리코스는 4주간의 긴 여정인데, 결과는 어떻게 될 지 모르지만 결과를 떠나 이 시간을 유의미한 경험으로 만들고자 시작전 짧은 다짐과 목표를 정하려한다. 스스로 성장하기 우테코 프리코스 과제의 가장 큰 목표이다. 과제를 1주일간 풀면서 스스로 많은 고민을 하고 그 과정에서 개발자로서 성장하는 경험을 주는 것이 우테코 측의 의도이다. 무언가를 알려주지 않고 단지 문제만 나오는데, 이걸 1주일 간 해결하기 위해 스스로 공부하고 정리하고..
OAuth를 통한 인증의 문제와 OIDC
·
BE/개발일지
이번 기수부터 생긴 코테이토의 백엔드 네트워킹 시간. 우리 Team의 첫 주제는 OAuth와 OIDC이다. 아래 Flow의 문제점을 찾고 OIDC로 해결해보는게 첫 과제였다. 1. 가능한 OAuth2.0의 Flow 위 4가지 과정이 무엇을 하는지 정리해보자. 로그인 하지 않은 상태. 새로운 웹서비스 코테이토에 로그인하려하는데, 현재 로그인이 되어있지 않은 상태이다. 로그인 버튼을 눌러 OAuth로 로그인을 시도해보자. 카카오(소셜로그인) 동의여기서는 생일, 카카오계정(이메일), 출생년도, 성별, 연계정보, 카카오계정(전화번호)를 받아와도 되는지 허가 받고 있다. 카카오에서 해당 회원의 정보를 받아오려는데 user의 정보를 받아와도 되는지 확인하는 과정이다. cotato 서비스 회원 가입 약관동의이때, 다..
모던 자바 인 액션 - Chap12
·
PL/모던 자바 인 액션
LocalDate, LocalTime Instant, Duration, Period 클래스 LocalDate, LocalTime 사용 LocalDate는 시간을 제외한 날짜를 표현하는 객체로, 시간 정보를 포함하지 않는다. 정적 팩토리 메서드 of를 사용해 아래와 같이 인스턴스를 만들 수 있다. 또한 다양한 메서드로 날짜정보에 관한 값을 얻을 수 있다. LocalDate date = LocalDate.of(2023,10,09);//인스턴스 생성 int year = date.getYear(); Month month = date.getMonth(); int day = date.getDayOfMonth(); DayOfWeek dow = date.getDayOfWeek();// 요일 -> 월요일 반환 int l..
모던 자바 인 액션 - Chap11
·
PL/모던 자바 인 액션
이번 장은 Optional에 대해서 다룬다. Optional은 null을 대체하기 위해 등장한 클래스이다. null의 등장 배경은 컴파일러의 자동확인 기능으로 참조를 안전하게 사용할 수 있을 것이란 생각에서 시작되었다고 한다. 하지만, null을 만든 토니 호어는 이를 십억 달러짜리 실수라고 이야기했다. null에서 발생하는 문제는 뭐가 있을까 값이 없는 상황 차, 사람, 보험에 대한 클래스가 존재할때 다음 코드를 실행한다고 해보자. public String getInsuranceName(Person person){ return person.getCar().getInsurance().getName(); } 아무 문제 없이 실행될 것 같지만, 차를 소유하지 않은 사람이 있다면? getInsurance()를..
자바 병렬 프로그래밍 5.2 병렬 컬렉션
·
PL/모던 자바 인 액션
자바5 이전엔, 동기화된 컬렉션 클래스는 내부 변수에 접근하는 경로를 일련화해 스레드 안전성을 확보했다. 하지만 이 경우 동시 사용성에서 큰 손해를 볼 수 밖에 없었다. 자바 5 에서 등장한 병렬 컬렉션은 여러 스레드에서 동시에 사용될 수 있도록 설계되었다. ConcurrentHashMap 기존에 동기화된 컬렉션 클래스는 연산을 수행하는 시간동안 항상 락을 가지고 있어야했다. 그러나, 이경우 `HashMap.get` 또는 `List.contains`와 같은 일부 연산은 최악의 경우 모든 객체를 대상으로 메서드를 호출해야할 수도 있고 그 과정에선 다른 스레드는 내부의 값을 접근할 수 없었다. ConcurrentHashMap은 해시를 기반으로 하는 Map으로 lock Striping이라는 세밀한 동기화 기법..
모던 자바 인 액션 7주차 - Chap 08
·
PL/모던 자바 인 액션
이번 장에서는 컬렉션 API 8.1 컬렉션 팩토리 자바 9에선 작은 컬렉션 객체를 쉽게 만들 수 있는 몇가지 방법들이 제공되었다. 친구 3명의 이름을 컬렉션에 Array형태로 저장하는 두가지 방법들을 보자. 방법1: ArrayList활용 List friends = new ArrayList(); friends.add("Kim"); friends.add("Min"); friends.add("Jae"); 방법2: 팩토리 메서드 Arrays.asList사용 List friends = Arrays.asList("Kim","Min","Jae"); 방법1의 경우, 3개의 문자열을 저장함에도 많은 코드가 필요하지만, 방법2 `Arrays.asList()`라는 팩토리 메서드를 사용하면 코드 길이를 줄일 수 있다. 다만,..
모던 자바 인 액션 6주차 - Chap07
·
PL/모던 자바 인 액션
지금까지는 스트림을 통해 컬렉션을 선언형으로 제어하는 방법을 살펴봤다. 이번 장에선 `병렬 데이터 처리와 성능`에 대해 다룰 계획이다. 병렬 스트림 앞서, 4장에선 스트림 인터페이스를 이용하면 아주 간단하게 요소를 병렬로 처리할 수 있다고 이야기했다. `병렬 스트림`이란 각각의 스레드에서 처리할 수 있도록 스트림 요소를 여러 청크로 분할한 스트림이다. 여러 청크로 분할되어있으니 모든 멀티코어 프로세서가 각각의 청크를 할당받아 처리할 수 있다. 숫자 n을 인수로 받아 1~n까지 모든 숫자의 합을 반환하는 ㅁ네서드를 구현할때 우선 스트림으로 구현하면 다음과 같이 무한스트림을 받아 크기를 제한하는 방식으로 구현할 수 있다. public static long sequentialSum(long n) { retur..
유쓰응
글쓰는 개발자 Youth