전체 글

전체 글

    apt-get remove 명령어와 apt-get purge 명령어의 차이

    리눅스에서 패키지 지우기 리눅스에서 패키지를 지우는데는 apt-get remove 명령어와 apt-get purge 명령어가 있다. apt-get remove 명령어는 설정파일을 제외한 패키지 파일을 지우는 명령어이다. apt-get purge 명령어는 설정파일을 포함한 패키지 파일을 모두 지우는 명령어이다. apt-get remove 시스템에서 패키지를 제거하는 데 사용되지만 해당 패키지와 관련된 구성 파일은 그대로 유지 패키지 자체는 제거되지만 패키지 설치 중에 생성된 모든 구성 파일은 시스템에 잔류 나중에 패키지를 다시 설치하면 기존 구성 파일을 사용 apt-get purge apt-get remove 와 유사하지만 패키지를 제거할 뿐만 아니라 패키지와 관련된 모든 구성 파일도 제거 패키지를 제거한..

    이펙티브 자바, 쉽게 정리하기 - item 57. 지역변수의 범위를 최소화하라

    이펙티브 자바, 쉽게 정리하기 - item 57. 지역변수의 범위를 최소화하라 지역변수의 범위는 최소한으로 item 15. 에서 "클래스와 멤버의 접근 권한을 최소화하라"고 했던 것과 비슷한 내용이다. 변수는 항상 유효범위를 최소한으로 두고 필요할 때 늘리는 방식으로 활용하자. 지역변수의 범위를 줄이는 테크닉 이 테크닉에 대해서는 동의하는 부분도 있는데, 개인적으로는 변수를 한 곳에 몰아두는 것이 관리하기 훨씬 편하다고 생각한다. 메서드의 시작 부분에 한번에 초기화하여 일목요연하게 보기 좋게 만드는 것이 최선이라 생각한다. 항상 지역변수가 처음 쓰일 때 선언하자. 미리 선언해두면 코드 가독성이 떨어지고 어수선해진다. 쓰이지 않는 변수가 살아있을 위험도 있다. 선언과 동시에 초기화하자. 초기화에 필요한 정..

    이펙티브 자바, 쉽게 정리하기 - item 56. 공개된 API 요소에는 항상 문서화 주석을 작성하라

    이펙티브 자바, 쉽게 정리하기 - item 56. 공개된 API 요소에는 항상 문서화 주석을 작성하라 API 문서화 관련 지침 자바독을 이용하자. 자바독을 최대한 활용한다. 자바독 태그인 @literal, @code, @implSpec, @index (java9) 를 이용하자. {@literal} 주석 내에 HTML 요소나 다른 자바독 태그를 무시함 글자 그대로 쓸 때 필요 {@code} {@literal} 과 비슷한데, 코드 폰트로 렌더링한다. @implSpec 해당 메서드와 하위 클래스 사이의 계약을 설명 하위 클래스가 해당 메서드를 상속했거나, super 키워드를 이용해 호출할 때 메서드가 어떻게 동작할지 명확히 인지할 수 있게 도와준다 필수적으로 들어가야 하는 것들 모든 공개된 클래스, 인터페이스..

    이펙티브 자바, 쉽게 정리하기 - item 55. 옵셔널 반환은 신중히 하라

    이펙티브 자바, 쉽게 정리하기 - item 55. 옵셔널 반환은 신중히 하라 null 처리에 관한 문제 해당 객체의 메서드가 null을 반환할지 알 수 없다. 클라이언트는 구현 코드를 자세히 살펴보고 null을 처리해야 했다. 자바8 이전 null 처리 방법 if (object != null) { return object.method(); } throw new NullPointerException(); if (result != null) throw new NullPointerException(); 코드가 더러워지거나, 진짜 예외의 처리에 쓰여야 할 예외가 널 처리에 쓰이게 되어버린다. Optional의 등장 null 이 아닌 T 타입 참조 하나를 담거나 아무것도 담지 않는다. null 을 피하기 위한 O..

    Google Search Console 수집 불가 및 Page Insight 점수 안 뜨는 문제 관련 문제 회고 (쿠키, API 설계 관련 문제)

    문제 Page Insight 점수가 제대로 측정되지 않고, Google Search Console 에 일부 페이지가 Server Error 로 정상적으로 수집되지 않고 있다는 정보를 전달 받았다. Page Insight 화면 에러 표출 한국어로는 필수 traces 수집기가 실행되지 않았습니다. 라는 메세지가 표출 Google Search Console 크롤링 결과 화면 Page fetch 에 Failed: Server error (5xx) 가 표출되며 정상적으로 크롤링이 이뤄지지 않음 원인 파악 힌트 사내 직원 컴퓨터에서는 해당 페이지가 정상적으로 접속됨 QA 과정도 무사히 통과했음 서버상엔 에러 로그가 표출되지 않음 어떠한 VoC 도 들어오지 않음 아마 이용자는 이 문제에 별로 불편을 느끼지 못할만한 ..

    git ls-files 명령어란?

    git ls-files 명령어란? 인덱스와 작업 트리의 파일에 대한 정보를 표시하는 강력한 유틸리티 명령어다. git 에서 종종 스크립팅 및 파이프라인 목적으로 사용 된다. git 내부를 위해 설계된 저수준 명령이다. 최종 사용자는 소위 "포슬린(porcelain)" 명령어라고 불리는 git status 나 git add 를 더 많이 사용하게 된다. 용례 git ls-files: git 에 의해 추적되는 모든 파일을 표시한다. git ls-files --stage: 스테이징 영역에 있는 모든 파일을 리스팅한다. git ls-files --deleted: 삭제된 파일을 리스팅한다. git ls-files --others: git 에 의해 추적되지 않는 모든 파일을 리스팅한다. git ls-files --i..

    git show 명령어란?

    git show 명령어란? 깃 오브젝트 (git object) 가 가진 정보를 보여준다. 용례 git show: 마지막 커밋에 대한 정보를 보여준다. git show : 커밋에 대한 정보를 보여준다. git show : 태그에 대한 정보를 보여준다. git show HEAD: 현재 브랜치의 가장 최근 커밋에 대한 정보를 보여준다. git show : 특정 브랜치의 가장 최근 커밋에 대한 정보를 보여준다. 사용 팁 git show 는 플래그 옵션에 따라 다양한 양식을 제공한다. git show --stat 은 변경된 파일과 줄을 표시하여 커밋에 대한 간략한 개요를 제공한다.

    git diff 명령어란?

    git diff 명령어란? 두 커밋 혹은 브랜치 간의 차이(difference)를 보여준다. 시간이 지남에 따라 혹은 특정 시점 사이에 코드베이스에서 변경된 내용을 확인할 수 있다. 어떤 변경 사항이 누구에 의해 변경되었는지 알고 싶을 때 유용하다. 용례 git diff: 아무런 인수 없이 사용하면 작업 디렉토리와 인덱스의 차이를 표시한다. git diff --staged 혹은 git diff --cached: 인덱스와 마지막 커밋 간의 차이를 보여준다. 마지막 커밋과 비교하여 다음 커밋을 위해 무엇을 스테이징했는지 보여준다. git diff HEAD: 작업 디렉터리와 마지막 커밋 간의 차이점을 표시한다. git diff : 작업 디렉터리와 지정한 커밋 간의 차이를 보여준다. git diff : 두 커밋..

    Git Object (깃 오브젝트, 깃 객체) 란?

    Git Object 란? Git 에서 변경사항을 추적하기 위해 사용한다. Git Object 의 4가지 타입 Blob Binary Large OBject 의 줄임말이다. 각 버전의 파일이 blob 으로 표현될 수 있다. 바이너리 파일이며, Git DB 에서는 SHA1 hash 로 이름이 지정된다. Tree Git 의 디렉터리를 표현한다. blob 혹은 다른 tree (하위 디렉토리) 를 참조한다. 디렉토리의 각 항목당 한 줄로 구성된다. 각 줄에는 오브젝트 유형, SHA1 해시, 파일 이름, 파일 실행 권한이 포함된다. Commit 리포지토리의 현재 상태를 가지고 있다. 디렉토리와 파일의 상태를 기록하고 있는 Tree 오브젝트를 가리킨다. 작성자, 커미터, 커밋 메세지, 부모 커밋에 대한 링크도 가지고 ..

    이펙티브 자바, 쉽게 정리하기 - item 54. null 이 아닌, 빈 컬렉션이나 빈 배열을 반환하라

    이펙티브 자바, 쉽게 정리하기 - item 54. null이 아닌, 빈 컬렉션이나 빈 배열을 반환하라 null을 반환하는 것의 단점 private final List cheesesInStock = new ArrayList(); public List getCheeses() { return cheesesInStock.isEmpty() ? null : new ArrayList(cheesesInStock); } getCheeses()는 cheesesInStock에 원소가 없으면 null을 반환한다. 이 코드엔 무슨 문제가 있을까? 문제 확인 @Test public void getCheesesClient() { List cheeses = getCheeses(); if(cheeses != null && cheese..

    이펙티브 자바, 쉽게 정리하기 - item 53. 가변 인수는 신중히 사용하라

    이펙티브 자바, 쉽게 정리하기 - item 53. 가변 인수는 신중히 사용하라 가변 인수가 1개 이상이어야 할 때 잘못 구현한 예 public static int min(int... args) { if (args.length == 0) { throw new IllegalArgumentException("인수가 1개 이상 필요합니다."); } int min = args[0]; for (int i = 0; i < args.length; i++) { if(args[i] < min) { min = args[i]; } } return min; } @Test public void minTest(){ int min = min(); System.out.println("min = " + min); } 인수를 넣지 않고 ..

    SQLite 직접 만들어보기 Step 3 - 메모리에서만 동작하는 단일 테이블 DB 만들어보기

    원본 글 https://cstack.github.io/db_tutorial/parts/part3.html 많은 제약이 걸려있는 DB 구성해보기 종래엔 복잡한 DB 가 완성되어 있겠지만 시작할 땐 작게 개발을 시작하는 전략을 사용한다. start small 어떤 제약이 걸리게 되는가? 단 두가지 연산만 지원한다. insert: 행을 삽입한다. select: 모든 행을 출력한다. 오직 메모리에만 데이터를 올린다. 디스크에 영속화 시키지 않는다. 하드코딩된 단 하나의 테이블만 제공한다. 하드코딩된 단일 테이블의 구조 id: integer username: varchar(32) email: varchar(255) 앞으로 사용할 insert 명령어의 구성 insert 1 jakeseo foo@bar.com 앞에서..

반응형