ohjongsung's Dev Story

Ohjongsung's Dev Story

자바 제네릭 - Java Generic

모던 자바는 자바5 이후를 말한다. 그 대표적인 특징은 세 가지로 애노테이션, 람다 그리고 제네릭이다. 이번 글로 알게 모르게 사용하고 있는 제네릭에 대해서 정리해보자. 사전 정의 generic formal shared by, typical of, or relating to a whole group of similar things, rather than to any particular thing. ex) The new range of engines all had a generic problem with their fan blades. generic drugs or other products do not have a trademark and are sold without the name of the company that produced them.

2018년 03월 31일

자바 메인 메소드

자바 메인 메소드 public static void main(String[] args) 는 자바를 처음 배울 때, 가장 먼저 접하는 메소드다. 자바 메인 메소드는 자바 프로그램의 진입점으로 항상 public static void main(String[] args) 의 형태로 작성된다. 개발자는 매개변수 명만 변경할 수 있고 나머지는 항상 정해진 되로 작성해야 한다.

2018년 01월 16일

Thread safe의 조건

쓰레드 개념이야 알고 있지만, 웹 개발을 하다보니 실제로 개발하는 코드가 쓰레드 세이프한지 별 고민없이 개발을 해왔던 것 같다. 쓰레드 세이프 조건에 대해서 알아보자. 하나의 쓰레드만 존재한다.

2018년 01월 16일

리눅스 문자열 검색 grep 명령어 사용법

리눅스 문자열 검색 grep 명령어를 정리한다. 기본 명령어 링크 기본 문법 grep [-옵션] 패턴 파일명 옵션 -c 패턴이 일치하는 행의 수 -i 대소문자 구분 안함 -v 패턴과 일치하지 않는 행을 출력 -n 행의 번호를 함께 출력 -r 서브 디렉토리까지 검색 -l 패턴이 포함된 파일 이름을 출력 -E 패턴을 정규 표현식으로 확장

2017년 10월 09일

리눅스 기본 명령어 사용법

기본적인 리눅스 명령어를 모아놓고 활용하자. 디스크 용량 확인 df 명령어 폴더 용량 확인 du 명령어 종료 shutdown 명령어 내 위치 경로 pwd 명령어 폴더 이동 cd 명령어 파일 내역 확인 ls 명령어 파일/폴더 복사 cp 명령어 파일/폴더 변경 mv 명령어 파일 삭제 rm 명령어 폴더 생성 mkdir 명령어 폴더 삭제 rmdir 명령어 문자열 검색 grep 명령어

2017년 10월 07일

Let's Encrypt를 갱신할 때 Web Server도 재시작하자

오늘 잠깐 내 블로그에 접속을 했다가 크롬 URL 창에서 ‘안전하지 않음’ 메시지를 보고 깜짝 놀랬다. 원인을 생각해봤을때, Let’s Encrypt 인증서 갱신이 제대로 이루어 지지 않아서 발생한 문제라고 파악했다. 이전에 내가 작성했던 Let’s Encrypt로 HTTPS 적용하기 를 보면 인증서 갱신을 위해 cron 설정을 해뒀었다. 처음에는 이 부분이 잘못 설정 된줄 알고 직접 갱신 명령을 실행해봤지만 실패..그래서 Log 파일을 확인해 봤다.

2017년 08월 31일

HTML 파서 Jsoup의 NodeTraversor

보통 크롤러를 만들때, 해당 HTML 구조를 파악하고 NavigatingAPI를 사용해서 필요한 DOM을 선택하고 값을 추출하거나 작업을 했다. 그런데 body 태그 안의 모든 DOM 중에서 조건에 맞는 DOM이면 특정 작업을 해야 할때는 어떻게 해야 할까? 특별한 규칙성이 없다면 모든 DOM을 순회하면서 일일이 조건에 맞는지 확인해야 한다. 그래서 HTML DOM은 트리 구조라고 할 수 있으니, 트리 순회 알고리즘을 적용하면 되지 않을까 생각했다. 그런데 내가 생각할 수준이면 이미 만들어져 있지 않을까 했는데, 역시나 API를 뒤져보니 나온다. 그것이 org.jsoup.select 패키지의 NodeTraversor이다.

2017년 08월 29일

Java 7에서 ArrayList와 HashMap의 Default 생성 변경 사항

Java Collection에 대해서 공부하다 보면, 초기값을 명시하지 않고 Default 생성자로 ArrayList를 생성 시 내부적으로 크기가 10인 Object 배열을 생성한다는 글을 많이 봤다. 마찬가지로 HashMap도 Default 생성자로 생성 시 Capacity가 16인 Map을 생성한다고 했다. 그런데 JDK 1.7.0_40 update에서 요게 바뀌었단다.

2017년 08월 24일

데이터 캡슐화를 위한 Getter, Setter

데이터 캡슐화는 데이터를 공용 메소드를 통해서만 접근하도록 허용하는 방법을 말한다. 그렇다면 getter/setter를 사용하면 얻게 되는 기능은 무엇일까? 정리해보면 다음과 같다.

2017년 08월 19일

Content Delivery Network의 장점과 단점

Content Delivery Network (CDN)은 웹 호스팅에서 사용하는 기술이다. 대부분의 CDN은 이미지, 동영상, 미디어, CSS, JavaScript 같은 정적 파일을 호스팅 한다. 그래서 여러 공공 및 사설 CDN에서는 유명한 JavaScript 라이브러리, CSS, 글꼴 등을 서비스하고 있다. 실제로 이 블로그도 CSS와 JavaScript 라이브러리를 CDN에서 가져와서 사용하고 있다.

2017년 07월 31일

« 1 2 3 »