전체 글 16

[Git] Github 커밋내역에서 민감정보 삭제하기(feat. BFG Repo-Cleaner)

1. 먼저 로컬에 작업할 원격 레포지토리를 받아온다. mirror옵션을 통해 clone 한다. workingtree없이 받아온다. git clone --mirror \[clone할 원격 깃 주소.git\] 2. 다음 사이트에 접속해서 bfg-1.14.0.jar를 다운받는다 (버전은 다운시기에 따라 상이하다) https://rtyley.github.io/bfg-repo-cleaner/ 다운받은 .jar 파일을 clone받은 레포지토리와 같은 폴더에 놓는다. 3. sensible-info.txt 생성 및 삭제 커밋내역에 있는 정보를 삭제하는 방법은 2가지가 있다. 텍스트 자체를 삭제하는 방법 삭제할 내용의 텍스트를 담은 sensible-info.txt 파일을 생성한다. 다음과 같은 명령어를 입력한다. jav..

카테고리 없음 2024.04.08

책01. 파이브라인즈 오브 코드 06. 데이터보호

6장. 데이터 보호 6.1 getter없이 캡슐화하기 getter와 setter를 사용하지 말것. getter와 setter는 결국 캡슐화된 객체의 필드의 캡슈로하를 해제하고, 불변속성을 전역적으로 만든다. 가변객체에서 발생하는 문제라서, bool 타입을 예외로한다. 말이 너무 어려워서, 곱씹을 수 있도록 전문을 쓴다. 여기서 setter 또는 getter를 언급할 때는 각각 부울이 아닌 필드를 직접 할당하거나 반환하는 메서드를 의미합니다. C# 프로그래머의 경우 이 정의에 프로퍼티(property)도 포함됩니다. 메서드의 이름과는 아무런 상관이 없습니다. getX라고 부를수도 있고 아닐수 도 있습니다. getter와 setter는 흔히 private 필드를 다루기 위한 메서드로 캡슐화와 함께 배웁니다...

독서 2024.03.03

책01. 파이브라인즈 오브 코드 05. 유사한 코드 융합하기

5. 유사한 코드 융합하기 5.1 유사한 클래스 통합하기 공통된 *상수 메서드를 가지고 있고, 반환값만 다르다면, 생성자로서 무엇을 반환할지 결정하는 식으로 클래스를 통합할수 있다. 통합하는 방식은 다음과 같다. 메소드 주위에 if(true){}를 추가한다. true를 기준 메서드를 호출해서 결과를 상수값과 비교하는 표현식으로 바꾼다. 각 클래스들의 표현식과 본문들을 else와 함께 붙여넣는다. 기준 메서드에 대한 상수를 생성자를 통해 필드에 할당받도록 한다. 상수 메소드에서 상수 대신 할당된 필드 값을 반환하도록 메서드를 변경한다. 문제없나 확인을 위해 컴파일한다. 필드 기본값을 매개변수로만든다. 통합 클래스중 하나를 제외한 다른 모든 클래스를 삭제하고, 모든 컴파일 오류를 삭제하지 않은 클래스로 변경..

독서 2024.02.18

책01. 파이브라인즈 오브 코드 04. 타입 코드 처리하기

4. 타입 코드 처리하기 4.1. 간단한 if 문 리팩터링 4.1.1. if문에서 else 문 사용하지말기 if문은 검사(check)이고, if-else문은 의사결정(decision)으로 간주합니다. (캬.. else문을 쓰면 빠르게 "결정"되니까, 하드코딩느낌이고, 코드의 유연성이 떨어진다) if-else같은 동작은 컴파일때 빠르게 결정되는 이른바인딩 스멜. 별루다. if문을 수정해야 변경할 수 있기 때문에 전에 배운 추가에 의한 변경을 방해한다. 반면 늦은 바인딩은 추가에 의한 변경을 가능케 한다. 여기서 또 멋있는 말이 등장하는데, if는 조건연산자로 흐름을 제어하지만, 객체지향 프로그래밍에서는 객체라는 훨씬 더 강력한 제어 흐름 연산자가 있다!. 즉 if를 쓰지말고 객체를 쓰자는 말인데, 이게 무..

독서 2024.02.07

책01. 파이브라인즈 오브 코드 03. 긴코드 조각내기

3장. 긴코드 조각내기 3장이다. 말그대로 긴코드를 조각내는 다양한 방법들을 소개한다. 원래 짧을수록 쉽게쉽게 읽힌다. 나는 소설읽는 것을 좋아하는데, 교과서에 실린 문학작품들의 표현은 고급스럽고 곱씹는 묘미가 있는반면, 좀 길어서 한번에 이해하기 어렵다. 반면 웹 소설의 경우 짧은 문체로 인해 바로바로 이해가 가능하고 쉽게쉽게 읽힌다. 여기 아주 긴코드가 있다. 아주 길고 복잡한 로직으로 이루어져 코드를 보며 음미한다.. 해당 코드의 유지보수는 천년만년이걸리겟따. 여기 아주 짧은 코드가 있다. 아주 짧고 단순한 로직으로 이루어져 코드를 보면 바로 이해가 된다. 해당 코드의 유지보수는 너무 손쉽다. 3장 느낀점 실제로 현재 싸피(개발자 부트캠프)에서 프로젝트중인데, 내가 짠 코드를 리팩토링하고 싶은 욕구..

독서 2024.02.01

책01. 파이브 라인즈 오브 코드 02. 리팩토링 깊게 들여다보기

2장. 리팩토링 맛보기 말그대로 리팩토링 기법 맛보기 느낌이다. 뭔가 다 아는 내용 엄밀하게 말하기 느낌이랄까.. 역시나 도움이 되었다. 2장을 읽으며 느낀점과 고찰 전역변수는 지양하자리팩토링의 이유 중 하나인 가독성면에서도 전역변수 사용이 오히려 유리할 수있다. dfs 탐색을 예로서 떠올려보자. 매번 dfs에서 다뤄야하는 객체들을 매개변수로 바리바리(바리스타) 싸들고 다니는걸 보면 오히려 어지러울 때가 많다고 느끼기 때문이다. 근데 막상 코딩테스트 볼때는 전역변수가 선택이 아닌 필수로서 사용중이다.. 하나의 변수를 예쁘게 포장해서 옮기며 안전하게 수정하기보다는, 빠르게 변수에 접근해서 다양한 메소드로 변수값을 휙휙 바꿔야하기 때문이다. 목적에 따라서 필요할수도 있겠다는 생각이든다. 리팩토링 범위설정 잘..

독서 2024.01.31

책01. 파이브 라인즈 오브 코드 01. 리팩토링 리팩토링

독서.. 현재 다니고 있는 싸피에서 친구들과 책을 읽기로 했다. 이번에 읽을 책은 파이브라인즈 오브 코드 이다. 코드 리팩토링에 관련된 책이다. 책에 대한 전반적인 요약은 목차 수준으로 할 거 같다. 책을 읽었을때의 나의 감정과 인상적이었던 책의 내용, 내용으로 비롯된 나의 사고 흐름에 대해 기록하고자 한다. 1장을 읽고 느낀점.. 리팩토링은 기능구현에 의의를 두기보단, 기능 개발이 끝나고 지속성 있는 코드를 만들기 위해 필요하다는 생각이 든다. 책이 다양한 규칙을 소개하고, 실습위주의 내용이라, 책 내용을 따라 갔을때 리팩토링에 대한 가닥이 잡히길 기대한다. 객체지향 언어를 기반으로 한 리팩토링 유형들이다. 그만큼 객체지향언어가 가독성과 유지보수에서 강력하다는 생각이 들기도 한다. 1장 내용 대충 요약..

독서 2024.01.31

1.Spring Framework란?

한국에 사는 컴퓨터 관련 직종이면 누구나 한번쯤 들어봤을 Spring Framework. 이에 대해 가볍게 설명해보려고 한다. Spring Framework는 한마디로.. java 기반의 웹 어플리케이션을 개발하는데 쓰이는 웹 프레임워크이다. 그렇다면 웹 프레임워크란 무엇일까? 위키에 따르면 다음과 같다. Web Framework는 뭐임? 웹 프레임워크(web framework, WF) 또는 웹 애플리케이션 프레임워크(web application framework, WAF)는 동적인 웹 페이지나, 웹 애플리케이션, 웹 서비스 개발 보조용으로 만들어지는 애플리케이션 프레임워크의 일종이다. 웹 페이지를 개발하는 과정에서 겪는 어려움을 줄이는 것이 주 목적으로 통상 데이터베이스 연동, 템플릿 형태의 표준, 세..

spring 2023.05.31

3.[java] 우선순위 큐(priority Queue)

우선순위 큐는 들어간 순서에 상관없이, 설정한 우선순위 조건에 따라, 가장 우선순위가 높은 데이터가 먼저 나오는 구조이다. 데이터 입력을 받을때마다 그때그때 최댓값, 최솟값을 결정해야하고, 최댓값,최솟값이 편집되어도 항상 데이터 그룹의 최댓값,최솟값을 얻기위해서, 우선순위 큐는 최선의 전략이다. 일반적으로 우선순위 큐는 힙 자료구조를 통해 구현한다. 자바에서 우선순위 큐를 선언하기 위해서는 다음과 같이 선언한다. import java.util.PriorityQueue; 먼저 java.util.PriorityQueue 를 import 해야한다. PriorityQueue pq = new PriorityQueue(); 가장 큰수를 우선순위로 놓고 싶다면, 다음과 같이 매개변수에 Collections.rever..

java 2023.03.03