반응형

Develop 56

[CleanCode] 3장. 함수

목차 작게 만들어라! 한 가지만 해라! 함수 당 추상화 수준은 하나로! Switch 문 서술적인 이름을 사용하라 함수 인수 부수 효과를 일으키지 마라! 명령과 조회를 분리하라! 오류 코드보다 예외를 사용하라! 반복하지 마라! 구조적 프로그래밍 함수를 어떻게 짜죠? 결론 작게 만들어라! 작게의 기준은 무엇일까? 블록과 들여쓰기 if/else/switch 문 등에 들어가는 블록은 한 줄이며 indent는 2단을 넘어서면 안된다. 적절한 메서드명을 가지는 메서드를 호출하는 방식을 통해 이를 충족시킨다. 한 가지만 해라! 함수는 한 가지를 해야 한다. 그 한 가지를 잘 해야 한다. 그 한 가지만을 해야 한다. 함수는 추상화 수준이 하나인 단계만 수행한다면 그 함수는 한 가지 작업만 한다. 한 함수에서 섹션을 나..

Dev/Books 2020.05.06

[Markdown] Markdown 문서에서 링크 목차 만드는 법 (TOC 만들기)

최근 공부한 내용을 Markdown문서로 정리하고 Github에 저장해서 정리하다보니 내용이 길어질 때 회사에서 사용하는 WIKI처럼 문서 상단에 링크가 걸린 목차를 만들고 싶어졌다. TOC(Table Of Content)는 헤딩 태그를 기준으로 생성 되므로 문서 작성 시 TOC에 표기하고자 하는 문장들은 헤딩 태그로 명시 해 주어야 한다. 헤딩 태그로 명시된 문장을 목차에 링크 걸기 위해서는 아래와 같은 포맷으로 작성 하면 된다. 이때 주의 할 점은 링크가 걸리는 텍스트의 띄어쓰기는 "-"로 명시해야 하거나 글자수+띄어쓰기 수 만큼의 "-"를 써준다. 하지만 명확하게 표기하기 위해 해당 문장을 그대로 쓰는 것을 추천한다 :) [목차 텍스트1](#링크가-걸리는-텍스트1) [목차 텍스트2](#-------..

Dev/ETC 2020.05.02

[CleanCode] 2장. 의미있는 이름

의미있는 이름 목차 의도를 분명히 밝혀라 그릇된 정보를 피하라 의미 있게 구분하라 발음하기 쉬운 이름을 사용하라 검색하기 쉬운 이름을 사용하라 인코딩을 피하라 자신의 기억력을 자랑하지 마라 클래스 이름 메서드 이름 기발한 이름은 피하라 한 개념에 한 단어를 사용하라 말장난을 하지마라 해법 영역에서 가져온 이름을 사용하라 문제 영역에서 가져온 이름을 사용하라 의미 있는 맥락을 추가하라 불필요한 맥락을 없애라 의도를 분명히 밝혀라 이름을 지을 때 아래의 질문들을 고려해야 한다. 변수(혹은 함수나 클래스)의 존재 이유는? 수행 기능은? 사용 방법은? Bad public List getThem() { List list1 = new ArrayList(); for (int[] x : theList) if (x[0]..

Dev/Books 2020.05.02

[Java] Stateless Object

코드리뷰 중 아래와 같은 질문을 받았다. 클래스가 서비스 형태로 사용되는 경우, 상태 정보를 가지고 있지 않은 무상태(stateless) 방식으로 만들면 어떤 장점이 있을까요? 클래스 내에 인스턴스 변수를 사용하지 않는다라는 생각을 해 본적이 없어서 살짝 당황했었다. 나름대로 고민을 해 보았지만 그렇다할 답이 생각이 나지 않아 구글링을 하다보니 관련된 stackOverflow 질문글이 있었다. 질문에 대한 답변은 아래와 같다. Stateless object is an instance of a class without instance fields (instance variables). The class may have fields, but they are compile-time constants (stat..

Dev/Java 2020.04.11

[Git] Commit History 정리

local에서 작업을 하고 서버에서 코드를 받아서 테스트를 하다가 수정사항이 생기면 양쪽에서 커밋을 마구잡이로 할 때도 있다. 아니면 자잘하게 놓친 한 두줄을 위해 커밋을 또 날리게 되는 경우들이 있다. 그러다보면 커밋 히스토리는 지저분해지기 쉽상. 이런 경우에 rebase를 사용해 커밋 히스토리를 정리할 수 있다. local에서 작업하는 기준으로 remote에 commit 한 history를 정리하고 싶을 때 # n : 합치고 싶은 커밋의 갯수 $ git rebase -i HEAD~n 위의 명령어를 실행하면 아래와 같이 커밋을 수정할 수 있는 화면이 나온다. 나타난 커밋들 중에 합치고 싶은 커밋의 pick을 squash로 변경한다. 이 예제의 경우 aa8f244 커밋에 5e5dc41 커밋의 내용을 반영..

Dev/ETC 2019.07.01

[Git] 로컬에서 git 사용

Git 로컬 정리 git init - 저장소 생성 mkdir 폴더명 cd 폴더명 git init -> 성공시 Initialized empty Git repository in /path/폴더명/.git git status - 저장소 상태를 확인 git에서 추적하지 않는 파일이 존재하는 경우 git add 파일명 - git이 파일을 추적하도록 추가 아무런 메세지가 없으면 성공적으로 추가된 것 git status 명령어를 실행하면 커밋해야 할 수정내역 확인 가능 git commit - git에 수정내역을 추가 맨 첫줄에 커밋 메세지를 작성한 후 vim을 종료하면 커밋 완료([Esc]키를 누르고 :wq를 입력한 다음 [Enter]키를 눌러 저장 후 종료) git commit -m “커밋 메세지” - vim 진입..

Dev/ETC 2018.05.23

[HTML, jQuery] Table 내의 checkbox가 checked 된 row 데이터 받기

Table에서 checkbox column이 들어갔을 때 checkbox에서 체크된 row의 데이터를 가져오는 과정에서 애를 먹어서 정리를 해보았다. html 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 col1 col2 col3 col1 text col2 text col3 text Colored by Color Scripter cs JavaScript 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 var checkbox = $("input[name=checkboxName]:checked"); var col1 = ""; var col2 = ""; var col3 = ""; var col4 = ""; checkbox.each(function (i) { ..

Dev/Web 2018.04.15

[Spring] 의존성 주입

DI(Dependency Injection : 의존성 주입) 클래스 사이의 의존 관계를 자동으로 구성 (의존 관계란 ? http://natana1992.tistory.com/20)DI 컨테이너가 인스턴스를 관리 (인스턴스 생성하고 그 과정에서 필요한 인스턴스를 설정하여 애플리케이션에 반환) 이점 인스턴스의 스코프를 제어할 수 있음(ex. 인스턴스 - 싱글톤 객체 or 매번 새로 생성) 인스턴스의 라이프 사이클을 이벤트로 제어할 수 있음 트랜잭션 관리나 로깅 처리와 같은 공통 처리를 포함할 수 있음 객체 사이의 의존 관계가 느슨해지므로 유닛 테스트를 하기 쉬워짐(인터페이스에 관해서만 의존 관계를 만들어 줌) Bean 정의 파일 인터페이스에 어떤 실제 기능(Bean)을 제공할지를 DI 컨테이너가 관리하도록 ..

Dev/Spring 2018.04.08

[논문] Design and Implementation of a High-Performance Distributed Web

Design and Implementation of a High-Performance Distributed Web 웹 크롤러란? 방대한 웹 페이지를 방문하여 각종 정보를 자동적으로 수집하는 일을 하는 프로그램으로서 검색엔진의 근간이 됨방대한 페이지를 고성능으로 방문하기 위한 이슈 좋은 크롤링 전략 고도화 된 시스템 아키텍쳐 크롤링 전략 Breadth-First Crawler : 크롤러는 작은 페이지 집합에서 시작하여 BF 방식을 기반으로 탐색Crawling Pages for Updates : 최신 검색 인덱스를 유지하기 위해서 페이지 업데이트 이력에 대한 관찰이 중요Focused Crawling : 전문화된 검색 엔진을 위해 크롤링 하므로 특정 종류의 페이지에 집중. 많은 대역폭을 사용하지 않고 최신의 ..

개념 정리/ETC 2018.04.08

[Linux] 기본 명령어 정리(옵션) + 기타

tar압축과 관련된 명령어 압축하기 : $ tar [-옵션] 압축파일이름 압축할파일이름압축풀기 : $ tar [-옵션] 압축파일이름 [-C 압축파일이 풀어질 경로] 옵션-c : 새로운 아카이브(tar) 생성-x : 압축 해제-v : 압축시 진행률 표시-z : gzip 압축 및 압축해제-f : 파일 이름 지정-p : 모든 퍼미션 정보를 유지한다-C (대문자) : 압축 해제시 경로 지정 mkdir폴더 생성 명령어 $ mkdir [-옵션] 디렉토리명 옵션-p : 상위 디렉토리가 존재하지 않을 때 함께 생성-m : 새로 만든 디렉토리의 권한을 설정 du디렉토리 별 사용량 확인 명령어 $ du [-옵션] [--세부옵션] [경로] 옵션-a : 모든 파일들의 기본정보를 보여줌 -b : 표시 단위를 Byte로 함 -k..

Dev/Linux 2018.03.27
반응형