본문 바로가기

Programing

(393)
성지순례와 인터페이스 과거에 쓴 글이 미래에 갑자기 흥(?)하는 경우가 있다. 인터페이스를 보면서 그런 생각을 했다.
[Java] Wrapper 클래스 vs Overload 메서드 중 우선순위는? 카페에 어떤 분이 아래와 같은 질문을 올렸다. 질문 public class OverrideVsAutoUnboxing { public static void main(String[] args) { System.out.println(new Integer(59)); } } 위와 같은 코드가 59로 출력되는 원리가 궁금합니다. 'new Integer(숫자)'를 system.out.println하면 숫자가 출력되는 원리에 대해 설명주세요. 코드리뷰 일단 위와 같은 코드는 여러 안티패턴(피해야 되어야 할 코드)이 들어가 있다. 불변 클래스의 생성자 생성 아래의 코드에 대한 내용이다. new Integer(59) 자바에서 문자열 타입으로 문자열을 생성할 때 new String()으로 문자열을 만들지 말라고 하는 이유가..
[Java] forEach와 for each 의 차이점은? 카페에 올라온 질문이다. import java.util.ArrayList; import java.util.List; public class LoopTest { public static void main(String[] args) { List list = new ArrayList(); for (int i=0; i { System.out.println(str); }); // 2 for(String str : list) { System.out.println(str); } } } 1번과 2번의 차이점은 무엇인가요? 코드리뷰 일단 차이점을 알아보기 전에 코드를 리뷰해보자. Review 1. ArrayList 객체 생성 일단 ArrayList를 List 인터페이스로 받은 것은 잘한 것 같다. 왜 그런지는 이펙티브자..
일주일이 지난 로그파일 정리 하기 로그 파일 서버를 운영하다보면 로그파일이 지속적으로 쌓입니다. 트래픽이 많은 로그 파일이라면 로그파일 역시 용량이 클 것이고 Disk 자원에 부담이 될 것입니다. 로그 파일을 정리하는 수행하는 간단한 애플리케이션을 만들어보겠습니다. 만약 cron 등 스케쥴링을 할 수 있는 시스템을 같이 이용하면 배치처리에 범주로 볼 수 있을 것 같습니다. (우겨봅....세) 첫 번째 코드 스프링 배치 같은 것을 사용할 수 있겠지만 단순히 하기 위해 node.js 를 사용합니다. JavaScript의 date 라이브러리는 Java Date 처럼 악명이 높기 때문에 moment.js 라는 라이브러리를 사용하겠습니다. 앞으로 나오는 코드를 실행하려면 먼저 아래 명령으로 moment.js 를 추가가 필요합니다. npm inst..
[생각] 패러다임과 프레임 그리고 멱등성 인용 패러다임(paradigm): 어떤 한 시대 사람들의 견해나 사고를 근본적으로 규정하고 있는 테두리로서의 인식의 체계, 또는 사물에 대한 이론적인 틀이나 체계를 의미하는 개념 프레임(이론): 틀이라는 의미가 추상적으로 확대되어 생각의 틀을 가리키는 용어(심리학적 프레임 등)로도 쓰인다. 서론 올해 중반 Effective Java 3/E이 부서내 읽는 분위기가 달아올랐다. 심지어 점심시간 스터디 그룹까지 생겨날 정도였다. 스터디에 참여를 하지는 않았지만 궁금해서 스터디에 임시로 참여해서 의견을 같이 나누는 시간을 가졌다. 스터디를 마치고 든 생각은, 1) 이펙티브 시리즈라는 것이 좋은 책이라는 점에 대해서는 이견이 없지만 2) 책을 읽고 나서 여기에 있는 내용에 대해 맹목적으로 따르는 부작용 에 대해 ..
[Java] 인스턴스 변수 초기화 어떤분이 초기화 블럭을 물어본 사항이 있어서 확인한 사항을 첨가해서 기록으로 남깁니다. 질문 - 제목 : 클래스 초기화 블럭 사용하는 이유 - 내용 : 초기화 블럭 부분을 공부하면서 느낀건데 왜 굳이 클래스 초기화 블럭을 사용해야 하는지 잘 모르겠어요. 그냥 초기화 코드를 분리해서 관리하기 위함이 전부인가요? 개인적으로 이런 존재의 이유(raison d'être)에 대해 고민을 하는 것은 좋다고 생각한다. 문제는 혼자서 고민을 하다가 주제에서 벗어난 곳으로 빠질 위험이 있고 답을 찾기 어려울 수도 있다. 이럴 경우 친구나 커뮤니티에 물어봐서 어느정도 답을 찾는 것이 좋을 것 같다. (좋은 질문이었다는 이야기를 어렵게 하고 있음..) 접근법 일단 초기화 블럭에 대해서는 Java Tutorials 중 Cla..
[Spring] 스프링 프레임워크 개요 레퍼런스: https://docs.spring.io/spring-framework/docs/current/spring-framework-reference/overview.html#overview 스프링은 자바 엔터프라이즈 애플리케이션들을 작성하기 쉽게 해준다. 1. Spring 이라는 의미? 문맥에 따라 다양한 의미로 사용된다. 1. Spring Framework 프로젝트 그 차제 2. 프로젝트들의 모든 계층 레퍼런스에서는 1번을 의미 스프링 프레임워크는 여러 모듈들로 나뉘어 짐. 핵심을 설정 모델과 의존성 주입 매커니즘을 포함한 core container임. 이것을 넘어, 프레임워크는 메시징, 트랜잭션 데이터, 퍼시스턴스, (Spring MVC, Spring WebFlux) 웹 등의 애플리케이션 지원을..
[Swift] 스탠포드 강좌 again 주말에 뭐 할까 하다가... (물론, 빨래, 청소, 종량제 쓰레기 폐기, 설거지 등 하고 아이 점심에 재우고 나서..) 전에 듣던 스탠포드 강좌가 생각났다. 그 당시 Developing iOS 8 App with Swift 라는 제목의 강좌였다. 한국어로도 번역이 되어 있었는데 한글링이라는 그룹에서 번역을 해주었다. 이 자료는 http://hangling.org 에도 있고, 인프런에도 올라와 있다. 다만, 결국 YouTube에 올려져있는 영상이다. 전에 듣던 팟캐스트를 찾다보니 Developing iOS 11 App with Swift 이라는 이름으로 2017년 11월 발매가 되어 있었다. Xcode는 새로운 버전이 나올 때마다 버튼을 한참을 찾아야 하기 때문에 가능한 최근 버전의 강좌와 맞추는 것이 좋..