Software Engineering

    [Refactoring - 1일차] 리팩토링 2판 by Martin Fowler

    리팩터링 2판을 읽으며 정리한 내용을 담고자 일종의 일기를 쓴다. 책을 갖고 있지 않은 사람이나 정보를 얻고자 하는 사람에게는 해당 내용들이 무슨말인가 할 수 있다. 일종의 필기라고 생각하고 책과 함께 읽으면 좋을 것 같다. 나 또한 다시 읽을때 함께 꺼내 보고자 정리하였다. 프로그램이 새로운 기능을 추가하기 편한 구조가 아니라면, 기능 추가가 쉬운 형태로 리팩터링을 하자 1. 중복 코드의 여지가 있는 것들을 분리하자 로직 변경이 없지 않는 이상, 오래 사용할 코드에서 중복코드는 골치거리가 된다. 2. 확장성이 있는 (변동이 있는) 코드들은 분리하자 저자의 경험상 어떤 방식으로 정하든 반드시 6개월안에 변경하게 된다 -> 깊은 공감 즉 변경이라는 것이 리팩토링의 중요성을 깨닫게 해준다. 리팩토링의 과정에..

    [OAuth 2.0] Microsoft ID 플랫폼과 함께 OAuth 2.0 복기하기

    [OAuth 2.0] Microsoft ID 플랫폼과 함께 OAuth 2.0 복기하기

    대형 플랫폼이라면 갖고 있는 소셜 로그인,,, 어느 순간부터 모든 플랫폼들이 소셜 로그인 프로바이더를 제공하며, 사용자에게 간편한 Sign-In / Sign-Up 방식을 제공하고 있다. 사용자는 자신의 정보를 최소한으로 입력하면서 (OAuth / OpenID 를 제공하는 플랫폼으로 부터의 정보를 받으며) 다양한 웹/앱 서비스에 접근할 수 있고, 또한 사용하는 서비스들의 계정 정보를 어느정도 획일화하며 정리 할 수 있어 외우기도 간편하다. 이렇기에 다양한 서비스들은 유명한 프로바이더(구글, 페이스북, 네이버, 카카오 등...)를 도입하기도 한다. 지금까지 구글, 페이스북, 네이버, 카카오, 라쿠텐의 OAuth2.0, Steam의 OpenID 를 통해 인증 및 인가를 받아와 본 경험이 있는데, 새롭게 회사에..

    [Web App] Frontend Developer로 Web App 개발하기

    [Web App] Frontend Developer로 Web App 개발하기

    Frontend 개발자의 길을 걷고있다면, Web App 이라는 단어를 흔히 들어본 경험이 있을 것 이다. Web App은 무엇이고, 그 배경은 무엇일까? Web App 이란? 웹 브라우저를 통해 접근할 수 있는 어플리케이션의 일종이다. 모바일에서 접근하였을 때 모바일 어플리케이션과 유사한 동작을 구현 할 수 있다. Web App 와 비교할만한 배경들은? - Mobile Web: 모바일에 알맞게 만들어진 web, 흔히 반응형 웹을 구성해 모바일웹 환경을 구축한다. - Native App: 모바일 OS에 맞게 만들어진 어플리케이션. 각각의 언어를 통해 OS에 최적화 된 서비스를 제공 할 수 있다. - Hybrid App: 모바일 웹과 네이티브 앱의 장점을 섞어 만들고자 한 어플리케이션. 상위 두개의 반반치..

    [Design Pattern] 의존성 (Dependency)

    [Design Pattern] 의존성 (Dependency)

    다양한 레거시 코드들을 다루며, 유지보수와 새로운 기능들을 붙히고 있는 가운데, 가장 많이 부딫히고 있는 큰 문제점 중 하나는 의존성(dependency) 문제이다. 우선 해당 코드들은 5년전 활발하게 개발되고, 3년전까지만 유지보수가 꽤나 일어 난 것을 커밋을 통해 확인한 바 있다... 의존성 문제로 일어나는 곳이 한두곳이 아니었다. 객체를 활발하게 다루는 일종의 컨트롤러 서버(현 서비스는 Back과 Front의 객체를 다루는 Controller 역할을 중간 미들웨어 역할의 서버가 컨트롤러처럼 동작하고 있다) 내에서의 메소드간의 의존성이 깊고, 이 의존성들이 일종의 콜백 지옥을 이루고 있어 그 구조를 제작자 없이 파악하기 너무 힘들었다. 또한, 현재 담당하고있는 Electron으로 제작된 데스크탑 어플..

    [Javascript] Class vs Factory Function

    [Javascript] Class vs Factory Function

    현재 직장에서 담당하고 있는 부분(웹&데스크탑)의 이슈 중, 보안 이슈를 핸들링하던 와중, 다소 특이하게 토큰(Access Token, Authentication Token)을 특이하게 다루고 있는 것을 확인했다. 다소 특이하게 관리하는 큰 틀 두가지가 있었는데(코드는 5~3년전까지 활발하게 개발되었고, 그 이후로는 많은 부분이 건드려지지 않았다...), 첫 번째로 Auth Token의 사용이 이루어지지 않는다는 점이다. 사실 Auth Token은 사용 될 것이다. 웹 서비스와 마찬가지로, 공통 부분들이 실 서버로 부터 정보를 받아오기 위한 헤더로 쓰이기 때문이다. 하지만, 적어도 Javascript로 이루어진 코드(뷰&내부 서버)는 저장만 할 뿐, 다루지 않았다... 두 번째로 Access Token으..

    Git 브랜치 전략, Git-flow

    Git 브랜치 전략, Git-flow

    회사에 입사해, 서비스의 프론트 코드들을 둘러보며 개발을 시작했고, 현재 실 서버에 핫픽스 부분들을 배포하였다. 우리 팀은 현재 Git-flow 전략을 베이스로 관리하고 있는데, 막연한 이해정도만 갖고 있었기에 이 참에 정리하려한다. Git? 깃을 사용해보지 않은 학생이나, 이제 처음 접해본 사람들은 생소할 수 있다. 나도 1년전까지만 해도, 혼자서 공부를 계속 해왔고 대학 과제나 다양한 부분들을 로컬외의 환경에서 사용 할 이유가 없었기 때문이다. 하지만 소프트웨어를 다루는 사람으로써, VCS를 다룰줄 아는 것은 필수라고 생각한다. Git is a free and open source distributed version control system designed to handle everything fr..