분류 전체보기 210

[클린코드] 6장. 객체와 자료구조

객체와 자료구조 자료 추상화 구현을 감추려면 추상화가 필요하다. 그저 조회 함수와 설정 함수로 변수를 다룬다고 클래스가 되지는 않는다. 그보다는 추상 인터페이스를 제공해 사용자가 구현을 모른 채 자료의 핵심을 조작할 수 있어야 진정한 의미의 클래스다. 자료를 세세하게 공개하기보다는 추상적인 개념으로 표현하는 편이 좋다. 인터페이스나 조회/설정 함수만으로는 추상화가 이뤄지지 않는다. 개발자는 객체가 포함하는 자료를 표현할 가장 좋은 방법을 심각하게 고민해야 한다. 아무 생각 없이 조회/설정 함수를 추가하는 방법이 가장 나쁘다. 자료/객체 비대칭 객체는 추상화 뒤로 자료를 숨긴 채 자료를 다루는 함수만 공개한다. 자료구조는 자료를 그대로 공개하며 별다른 함수를 제공하지 않는다. (자료 구조를 사용하는) 절차..

개발/Clean Code 2021.06.22

WSL(Windows Subsystem for Linux)이란?

WSL(Windows Subsystem for Linux)이란? WSL 개요 예전에는 윈도우에서 리눅스를 사용하려면 Virtual Machine과 같은 도구(Virtual Box, VMware 등)을 이용하여 환경을 구성하거나 듀얼 부팅 설정을 해야 했다. (라떼는 말이야..) 그러나 WSL을 이용하면 듀얼부팅이나 VM과 같은 느린 환경이 아니라 윈도우에서 리눅스 환경처럼 Powershell을 Bash 처럼 사용하고, Linux 명령어(sed, awk, vim, apt 등)를 사용할 수 있으며 Linux 커널조차 이용할 수 있다. (그것도 매우 빠른 부팅속도와 적은 메모리를 사용하면서 말이다!) 이에 윈도우를 사용하는 많은 개발자들이 환호했다. 2016년에 처음으로 WSL이 나오고 점차 발전하면서 201..

개발 2021.05.23

[IntelliJ] 저장 시 자동 정렬 설정하는 방법 (Save Actions) - Mac

단축키(Option + Command + L)를 누르면 자동 정렬이 되지만, 가끔 까먹고 안할 때가 있다. 자동으로 저장할 때 정렬해주면 편하지 않을까? (가끔 정렬하면 더 구린 경우 팀원들에게 욕을 먹을 수 있으니 주의한다. 그래도 일단 궁금하니까 찾아본다.) Save Action 플러그인을 설치한다. Save Action 플러그인의 옵션을 킨다 [General] Activate save actions on save (before saving each file, performs the configured actions below) 저장시 활성화 (각 파일을 저장하기 전에 아래에 구성된 작업 수행) Activate save actions on shorcut (default "CTRL + SHIFT + S..

개발/꿀팁 2021.05.22

[클린코드] 5강. 형식 맞추기

5강. 형식 맞추기 프로그래머라면 형식을 깔끔하게 맞춰 코드를 짜야 한다. 코드 형식을 맞추기위한 간단한 규칙을 정의하고 그 규칙을 착실히 따라야 한다. 팀으로 일한다면 팀이 합의해 규칙을 정하고 모두가 그 규칙을 따라야 한다. 필요하다면 규칙을 자동으로 적용하는 도구를 활용한다. 1. 형식을 맞추는 목적 코드 형식은 중요하다! 그러나 융통성 없이 맹목적으로 따르면 안된다. 코드 형식은 의사소통의 일환이다. 오늘 구현한 기능이 다음 버전에서 바뀔 확률은 굉장히 높다. 따라서 오늘 구현한 코드의 가독성은 앞으로 바뀔 코드의 품질에 지대한 영향을 미친다. 맨 처음 잡아놓은 구현 스타일과 가독성 수준은 유지보수 용이성과 확장성에 계속 영향을 미친다. 원래 코드는 사라지더라도 개발자의 스타일과 규율은 사라지지 ..

개발/Clean Code 2021.05.20

[클린코드] 4강. 주석

4장. 주석 주석이 나쁜 이유 나쁜 코드에 주석을 달지 마라. 새로 짜라. 브라이언 W. 커니헨, P.J. 플라우거 잘 달린 주석은 그 어떤 정보보다 유용하다. 경솔하고 근거 없는 주석은 코드를 이해하기 어렵게 만든다. 오래되고 조잡한 주석은 거짓과 잘못된 정보를 퍼트려 해약을 미친다. 우리가 프로그래밍 언어를 치밀하게 사용해 의도를 표현할 능력이 있다면 주석은 필요하지 않다. 우리는 코드로 의도를 표현하지 못해, 그러니까 실패를 만회하기 위해 주석을 사용한다. 때때로 주석 없이는 자신을 표현할 방법을 찾지 못해 할 수 없이 주석을 사용한다. 그러므로 주석이 필요하면 상황을 역전해 코드로 의도를 표현할 방법은 없는지 생각하자! 주석은 오래될수록 코드에서 멀어진다. 오래될수록 완전히 그릇될 가능성도 커진다..

개발/Clean Code 2021.05.19

[클린코드] 4장. 주석

주석 주석이 나쁜 이유 나쁜 코드에 주석을 달지 마라. 새로 짜라. 브라이언 W. 커니헨, P.J. 플라우거 잘 달린 주석은 그 어떤 정보보다 유용하다. 경솔하고 근거 없는 주석은 코드를 이해하기 어렵게 만든다. 오래되고 조잡한 주석은 거짓과 잘못된 정보를 퍼트려 해약을 미친다. 우리가 프로그래밍 언어를 치밀하게 사용해 의도를 표현할 능력이 있다면 주석은 필요하지 않다. 우리는 코드로 의도를 표현하지 못해, 그러니까 실패를 만회하기 위해 주석을 사용한다. 때때로 주석 없이는 자신을 표현할 방법을 찾지 못해 할 수 없이 주석을 사용한다. 그러므로 주석이 필요하면 상황을 역전해 코드로 의도를 표현할 방법은 없는지 생각하자! 주석은 오래될수록 코드에서 멀어진다. 오래될수록 완전히 그릇될 가능성도 커진다. 프로..

개발/Clean Code 2021.05.11

[클린코드] 2장. 의미 있는 이름

2장. 의미 있는 이름 소프트웨어에서 이름은 어디나 쓰인다. 이름을 잘 지으면 여러모로 편하다. 이 장에서는 이름을 잘 짓는 간단한 규칙을 몇 가지 소개한다. 1. 의도를 분명히 밝혀라 의도가 분명한 이름은 정말로 중요하다. 변수나 함수 그리고 클래스 이름은 존재 이유와 수행 기능, 사용 방법을 답해야 한다. 1.1 변수 나쁜 예시 int p; // 사람 수 (단위: 명) 이름 d는 아무 의미도 드러나지 않는다. 경과 시간이나 날짜라는 느낌이 안든다. 측정하려는 값과 단위를 표현하는 이름이 필요하다. 좋은 예시 int patientsCount; int loginFailUserCount; 1.2 코드 나쁜 예시 public List getThem(){ List list1 = new ArrayList(); ..

개발/Clean Code 2021.05.10

[MongoDB] MongoDB 사용하기

MongoDB 사용하기 MongoDB 실습 환경 구축하기 (with Docker) 1. MongoDB 이미지 가져오기 $ docker pull mongo2. MongoDB 서버 띄우기 $ docker run –name mongodb_server -v /home/test/mongodb/db:/data/db -d -p 16010:27017 mongo –auth –name : 컨테이너 이름 -v : 볼륨을 외부와 연결 -> 아래에서는 db볼륨을 외부로 연결하였다. -d : 데몬으로 실행 -p : 외부 접속을 위해 포트 연결 mongo –auth : 보안접근을 위해 사용 [주의] mongoDB 컨테이너는 기본적으로 설정파일(/etc/mongod.conf)을 읽지 않는다. 만약 설정파일을 통해서 MongoDB를 ..

개발/MongoDB 2021.05.09

[MongoDB] NoSQL이란?

NoSQL NoSQL의 등장 배경 예전의 컴퓨팅 시스템은 기업의 업무를 자동화하고 효율화하는 데 그 목적이 있었다. 그래서 기업의 복잡한 데이터를 저장하고 그 데이터 간의 관계를 저장하고 분석하는 데 최적화되어 있었다. 기업의 업무 시스템은 해당 기업의 생산과 판매를 목적으로 하였고, 거기에서 생성되는 데이터의 양은 한계를 가지고 있었다. 그러나 최근에는 인터넷의 발전과 함께 SNS나 다양한 서비스 시스템이 전 세계 사람들을 대상으로 하는 대규모의 데이터를 생산해내며 데이터의 패러다임이 한정된 규모의 복잡성이 높은 데이터에서 단순한 대량의 데이터로 넘어가기 시작했다. 이는 기존의 데이터의 저장 시스템으로는 해결할 수 없는 여러 가지 한계를 일으켰고 결국에는 새로운 형태의 데이터 저장 기술을 요구하여 No..

개발/MongoDB 2021.05.08