본문 바로가기
반응형

IDE53

Upsource 가이드 - 1. AWS에 구축하기 IntelliJ, Webstorm 등을 개발하는 Jetbrains에서 코드리뷰 툴인 Upsource를 개발했습니다! 팀내에서 사용중인데, 같은 Jetbrains 계열의 코드리뷰 툴이라 IntelliJ와 같은 IDE와 호환이 잘되서 코드리뷰가 굉장히 편리합니다. IntelliJ에서 바로바로 코드리뷰를 할수 있으며, Github보다 강화된 리뷰 기능으로 사용하시면 정말 많은 장점을 느끼실 수 있습니다. 현재 10명까지 무료로 사용할 수 있기 때문에 소규모 팀에서 사용하기에 아주 좋을것 같습니다. 1-1. 설치 개인 서버가 없기 때문에 AWS Amazon Linux EC2 기준으로 진행합니다. (Amazon Linux는 Centos기반이기 때문에 개인 Centos 서버에서 똑같은 방법으로 진행하셔도 됩니다.).. 2018. 1. 6.
SpringBoot H2 DB 클라이언트로 IntelliJ 사용하기 안녕하세요? 이번 시간엔 SpringBoot H2 DB 클라이언트로 IntelliJ를 사용하는 방법을 소개드리려고 합니다. 모든 코드는 Github에 있기 때문에 함께 보시면 더 이해하기 쉬우실 것 같습니다. (공부한 내용을 정리하는 Github와 세미나+책 후기를 정리하는 Github, 이 모든 내용을 담고 있는 블로그가 있습니다. ) 들어가며 보통 로컬에서 개발환경을 구축하면 H2 DB를 많이 사용합니다. 여기서 H2는 설치형이 아니라, SpringBoot에 의존성을 둔 H2 내장 DB를 사용하는 경우입니다. 이 경우에 일반적으로는 h2-console 이라는 웹 형태의 콘솔을 사용합니다. 하지만 웹 콘솔은 결국 기능상 한계점이 많아 전문적인 DB Client가 필요할때가 많습니다. 이때 좋은 해결 방.. 2017. 10. 13.
Airbnb의 eslint를 IntelliJ에 적용하기 안녕하세요? 이번 시간엔 airbnb의 eslint를 IntelliJ에 적용하는 예제를 진행해보려고 합니다. 모든 코드는 Github에 있기 때문에 함께 보시면 더 이해하기 쉬우실 것 같습니다. (공부한 내용을 정리하는 Github와 세미나+책 후기를 정리하는 Github, 이 모든 내용을 담고 있는 블로그가 있습니다. ) 들어가며 팀내에서 프론트엔드 코딩 컨벤션을 정하자는 이야기가 나왔습니다. 구성원 모두가 백엔드 개발자이며, 메인 언어가 되는 Java를 다들 최근에 시작하셔서(기존엔 ASP, PHP) Java & 백엔드 학습으로도 시간이 부족하기에 프론트엔드 쪽은 거의 등한시 하고 있었습니다. 그러다 최근에 큰 프로젝트가 끝나고 회고 시간에 백엔드 코드에 비해 프론트엔드 코드가 컨벤션없이 작성되어 퀄.. 2017. 10. 3.
4. 악취나는 코드 개선하기 시리즈 - 값의 가변성 (Mutation) IntelliJ 블로그에 올라온 시리즈물을 번역 & 재정리 하였습니다. 심하게 중첩된 코드글에서 저는 getMappedField 메소드의 리턴 타입을 Optional로 변경하고 싶었습니다. 변경자체는 굉장히 사소한 일이지만, 그 메소드를 호출하는 코드들의 변경은… 음 또다른 문제였습니다. QueryValidator클래스의 validateQuery메소드는 여러 호출자 중에서 예상했던 것보다 훨씬 더 복잡한 메소드였습니다. getMappedField를 Optional로 변경하려고 할때, 놀라울 정도로 많은 Null 체크 코드를 isPresent로 변경했습니다. 이게 전부가 아닙니다. 이 메소드는 거의 100라인이라 1개의 캡쳐화면에 전부 담을수가 없었습니다. (이것 역시 다른 글의 주제가 될 예정입니다.) .. 2017. 9. 18.
3. 악취나는 코드 개선하기 시리즈 - 순회 (Iteration) IntelliJ 블로그에 올라온 시리즈물을 번역 & 재정리 하였습니다. 저번시간엔 의심스러운 중첩 코드를 살펴 보았습니다. 이 문제를 해결하는 가장 좋은 방법은 기존 클래스에서 데이터를 가진 클래스의 내부를 이해하고 다루는것인 아니라, 행위 자체를 이동시키는 것이라고 추천드렸습니다. 그러나 이것이 그 이야기의 끝이 아닙니다. 이번 글에서는 코드 반복이 야기시킬 수 있는 다른 문제를 탐구하려고 합니다. 마지막 예제에서 중첩된 루프는 로직이 잘못된 위치에 있었던 것이라고 제안드렸습니다. 새로 만든 hasName메소드에서 반복이 존재하는 것은 for 루프 또는 stream를 사용하여 구현한것과 관계없이 또다른 문제점을 제시합니다. 아마도 이것은 name 데이터들을 저장하는 올바른 방식이 아닐 확률이 높습니다... 2017. 9. 6.
2. 악취나는 코드 개선하기 시리즈 - 심하게 중첩된 코드 IntelliJ 블로그에 올라온 시리즈물을 번역 & 재정리 하였습니다. 악취나는 코드 개선하기 시리즈를 계속 진행하며, 이번 포스트에서는 명백한 리펙토링을 거부하는 천진난만한 코드를 살펴 보려고 합니다. 코드 예제 자체는 매우 사소한 것이지만 실제로는 이 특정 프로젝트에서 반복적으로 발견되는 문제의 증상입니다. 즉, 코드의 중첩입니다. 이것은 loop문, if 문, 심지어 람다 표현식 또는 내부 클래스, 또는 위의 모든 것의 조합 일 수 있습니다. The Smell: Deeply Nested Code 먼저 발견한 문제있는 코드는 내부 if 문이있는 double for 루프입니다. (MappedClass의 메소드) 이 코드의 문제점은 무엇입니까? 단일 문자 변수 이름(mf, n)를 관대하게 봐줄수 있고, .. 2017. 9. 3.

728x90
반응형