분류 전체보기

일상

패스트캠퍼스 일할맛 2기 후기(Feat. 강대명 님, 김은호 님)

평소 학습할 때 애용하는 플랫폼 중 하나인 패스트 캠퍼스에서 진행한 일할맛 세미나에 참석하였다. 언제나 그렇지만 내성적인 E(?) 로써 이런 오프라인 행사는 또 다른 도전 같은 느낌이다. 그래도 늘 마무리는 기회가 된다면 꾸준히 참석해야겠다는 생각! 개발자 일맛 나는 프로젝트 라는 타이틀인 만큼 세션들도 개발자로서 일 하기 좋은 환경과 관련된 주제로 발표가 진행됐다. 강대명 님은 개발자 원칙 도서와 2023 안드로이드 올해의 앱인 퍼핀을 운영하는 레몬트리 CTO 님으로, 김은호 님은 유쾌한 스프링 방 이라는 오픈카톡방과 패스트 캠퍼스 10개 스프링 프로젝트 강의를 통해 알게 되어 꾸준히 팔로우하고 있는 개발자 분들이었다. 좋은 개발자가 되는 법 - 강대명 님 강대명 님은 좋은 개발자란? 의 질문에 함께 ..

Project

[Interrupt/#0] Interrupt 프로젝트 소개

Interrupt 나는 21년도 6월에 LX 공간정보아카데미 에서 진행하는 공간정보응용소프트웨어 전문가 양성과정 을 통해 개발자가 되었다. 당시에는 취업연계로 취업을 하기도 했고 또 아카데미에서는 잘하는 편이었기에 크게 공부에 신경쓰지 못했었다. 그러다 개발바닥 이라는 유튜브 채널을 알게됐고, 여러 영상들을 보면서 '진짜 개발자는 저런 직업이구나', '개발자가 되기 위해선 저런 공부가 필요하구나' 라는걸 생각하게 되었다. 그동안은 개발이라는것은 구글링하고 복붙하고 가 전부인줄 알았고 아카데미에서도 취업을 하고 나서도 내가 본 다른 개발자들은 전부 그런 일을 하고있었으니 그렇게 생각할 수 밖에 없었다. 어쨌든 본론으로 돌아와서 개발에 대해 시야가 바뀐 후로 나와 비슷한 연차의 개발자들 또는 개발자 취업을 ..

시리즈 관리

인터럽트 시리즈

#0 - Interrupt 프로젝트 소개

Language/Kotlin

[Kotlin/Coroutine] 코루틴으로 비동기처리 Cool 하게 하기

이용자가 로그인하면 응답받은 회원 정보로 계좌목록 조회해 주시고 각 계좌별 은행 서버에 잔액 조회해 주시고 대표계좌는 최근 일주일 거래내역 조회해 주시고 각 거래내역 별 ..... 위 상황은 물론 과장한 가상의 케이스이지만 API 요청에 대한 응답을 받은 후 다른 API 요청을 보내는 일은 실제로 빈번하다. 꼭 API 요청이 아니더라도 비동기적으로 처리하는 로직에 대해 종료시점 또는 응답값 반환시점에 필요한 행위를 하기 위해 Callback 을 많이 사용한다. Callback 위와 같은 상황을 해결하기 위해선(네트워크 요청이 비동기적이라는 가정 하에) 아래처럼 응답을 받은 후 호출할 함수를 인자로 넘겨주어 순차적으로 호출되도록 만든다. fun main() { foo() { boo(it) { // ... ..

Study

[Real MySQL/#1] 인덱스 1 주차

MySQL 8.0 스터디 인덱스 인덱스 목적 랜덤 I/O 는 순차 I/O 에 비해 많이 느림. (DBMS 는 대부분 랜덤 I/O 가 많이 발생) 단순한 쿼리 튜닝으로는 랜덤 I/O 를 순차 I/O 로 변경하는것은 어렵지만, 랜덤 I/O 자체를 줄여줄 순 있음. 개념 인덱스는 SortedList, 데이터 파일은 ArrayList 와 비교할 수 있음. SortedList - 저장될 때마다 값을 정렬해야 하므로 저장하는 과정이 느리지만, 원하는 값을 아주 바르게 찾아올 수 있다. ArrayList - 값이 들어오는 순서대로 저장. 인덱스를 추가할지의 결정은 데이터의 저장(INSERT, UPDATE, DELETE) 속도를 어느정도 희생하고 읽기 속도를 얼마나 더 빠르게 만들어야 하는지에 따라 결정. B-Tree..

일상

관성의 법칙 깨기

개발을 시작하게 된지 2년 된 지금 시점에서 개발을 시작함으로 생긴 가장 장점이라 생각하는것은 문제점을 찾고 개선을 하기위해 노력하는것이다. 예를 들어 지금 사용하는 아이폰은 현재까지 공휴일을 계산해 알람을 설정해주는 기능이 없다. 그래서 한번은 평일에 있던 공휴일에 알람을 끄고 생활했는데, 공휴일이 끝나고 다시 키는것을 깜빡해 출근에 지각을 할뻔한 적이 있다. 지금은 덕분에 공휴일을 계산해 알람을 키고 끄고 해주는 단축어 기능을 개발해 매일 호출해주며 알람을 신경쓰지 않고 살고있다. 이렇게 해오던 일상적으로/관성적으로 생활하는 것을 `관성의 법칙` 이라고 하던데, 개인적으로 이 말을 굉장히 좋아한다. 나에게 남아있는 관성의 법칙이 있다면 나쁜 관성인지, 나쁘다면 개선을 해서 오늘의 나보다 내일의 내가 ..

Project

[Project Winter/#9] Dependency Injection 기능 개발(IoC)

Project Winter DI 기능을 구현하며 드디어 계획했던 기능을 모두 구현했다. 스프링의 핵심이라고 할 수도 있는 IoC 역할을 구현해서 결합도도 낮추고 개발 편의성을 낮출 수 있도록 했다. @Autowired @Target({ElementType.METHOD, ElementType.FIELD, ElementType.CONSTRUCTOR}) @Retention(RetentionPolicy.RUNTIME) public @interface Autowired { } @Autowired 애노테이션을 개발해 의존성 주입을 해줄 생성자, 필드, 메서드에 애노테이션을 명시할 수 있도록 했다. 이 애노테이션이 붙은 생성자, 필드, 메서드는 백엔드 컨테이너에서 빈 주입을 해주면 된다. BeanFactory 수정 ..

Project

[Project Winter/#8] HandlerExceptionResolver 기능 개발

Project Winter 계획했던 기능 중 MVC 로직에 직접적인 영향을 주는 기능으로 마지막이었던 기능인 HandlerExceptionResolver 기능을 마무리했다. 스프링의 모든 ExceptionResolver 를 구현하진 못했지만 기본적인 HandlerExceptionResolver 인터페이스를 통해 예외를 핸들링하도록 구현했다. HandlerExceptionResolver public interface HandlerExceptionResolver { ModelAndView resolveException(HttpServletRequest req, HttpServletResponse res, Object handler, Exception ex); } 개발자가 예외를 핸들링 로직을 정의할 인터페이..

Project

[Project Winter/#7] Configurer, Interceptor 기능 개발

Project Winter MVC 의 기본적인 기능은 마무리 했고 Interceptor 를 구현할 차례이다. 사실 MVC 와 Ioc, DI 정도만 할걸.... 하는 후회가 조금 들지만 막상 구현을 끝내면 성취감도 좋고 계획한건 마무리 하는 성격이라 열심히 진행중이다. Interceptor 를 하기 앞서 Spring 은 WebMvcConfigurer 를 구현한 클래스에서 addInterceptors() 메서드를 통해 HandlerInterceptor 를 등록하기 때문에 Configurer 기능을 먼저 개발했다. WebMvcConfigurer public interface WebMvcConfigurer { default void addInterceptors(InterceptorRegistry registry..

djawnstj
'분류 전체보기' 카테고리의 글 목록