목록Categories (1099)
KoreanFoodie's Study
누구에게나 한번쯤 봄은 찾아온다. 발렌타인이 찾아왔다. 봄바람은 굳게 닫혀 있던 A의 마음속 문을 열어 젖혔다. 설레는 마음을 담은 싸구려 초콜릿 상자를 들고, 학교로 향하는 길. A는 오랜만에 느끼는 설렘에 기분좋은 불쾌함을 안고 학교 정문에 도착했다. 5000원짜리 종이 박스 안에는 수줍게 그려진 하트 엽서가 들어있었고, A는 항상 그를 보며 밝게 인사를 건네던 B에게 연락을 하기 위해 핸드폰을 꺼냈다. 하지만... 중략 ... A의 발렌타인은 봄바람을 타고 스치듯 홀로 떠나갔다. True Love 진실된 사랑이란 무엇일까? 사랑의 'ㅅ'자도 모르는 나에게 있어서 이 질문은 항상 어렵기만 했다. 사랑이라. 짝사랑도 사랑이라고 할 수 있는 걸까? 누군가를 정말 사랑한다는 건 그 사람의 외적인 요소를 들..
가끔 우리는 말로 차마 형용하기 힘들 정도의 죄책감에 짓눌려질 때가 있다. 심지어 특별한 잘못을 하지 않았음에도 불구하고, 평소처럼 무난히 살아가고 있음에도 불구하고 말이다. 그러한 순간은 느닷없이 찾아온다. 아침에 일어나 달콤한 잠에서 깨어났을 때, 일을 나가기 위해 샤워를 하고 있을 때 등등. 세상 재미있게 게임을 하던 중에도 이른바 '현자 타임'이 찾아오기도 한다. 이렇듯 우리는 삶을 되돌아 보며 행복한 회상에 잠기기도 하지만, 후회와 박탈감으로 이불을 차며 발을 동동 구를 때도 있다. 그리고 그런 죄책감에 짓눌려 앞으로 나아가지 못하고 자기 자신만을 자책하는 것으로 하루를 마무리한다. 이런 단기적 우울 사이클은 어느 순간, 벚꽃이 지듯 사라져버리곤 한다. 하지만 그 씨앗은 여전히 우리 가슴 속에 ..
쿠버네티스의 구조 쿠버네티스는 애플리케이션 간에 OS를 공유해 VM을 사용하는 것보다 가볍다! 또한 추상화 레벨이 높아 리소스 관리가 효율적이다. 쿠버네티스가 제공하는 것 서비스 디스커버리와 로드 밸런싱 : DNS이름이나 IP 주소를 이용해 컨테이너를 노출할 수 있다. 트래픽 관리를 위한 로드 밸런싱도 제공한다. 스토리지 오케스트레이션 : 로컨 저장소/공용 클라우드 공급자 등이 원하는 저장소 시스텝을 자동으로 탑재할 수 있다. 자동화된 롤아웃과 롤백 자동화된 빈 패킹(bin packing) : 리소스 활용성 UP 자동화된 복구(self-healing) : 실패한 컨테이너의 재실행/교체 시크릿과 구성 관리 : 함호, OAuth 토큰/SSH 키 저장 관리 쿠버네티스 컴포넌트 "쿠버네티스를 배포하면 클러스터를..
돈은 기하급수적으로 버는 것이다. 흔히들 사람들은 '쉽게 들어온 돈은 쉽게 나간다' 따위의 말들을 하며 힘겨운 노동의 가치에 과도한 의미부여를 한다. 하지만 사람들은 정말 힘겨운 노동을 통한 이윤 창출을 의미있다고 여기는 걸까? 아니다! 사람들은 쉽고 편하게 돈을 벌길 원하고, 심지어는 일을 하지 않고도 하늘에서 돈이 떨어지길 빈다. 잠실역에는 매일 복권명당으로 알려진 편의점에 사람들이 줄을 서고, 공짜 쿠폰, 공짜 사은품을 받기 위해 장사진을 치기도 한다. 사람들이 힘들게 일해서 벌어야 돈이 안 빠져나간다고 스스로의 처지를 위로하는 것은 자기합리화에 가깝다. 혹은 부자들이나 연예인들을 보며 '저렇게 번 돈은 금방 사라진다'고 저주를 퍼붓는 것은 열등감과 질투의 표출이다. 부자는 위에 올린 사진처럼, '..
사용자 정의 예외와 예외 발생 프로그램을 개발하다 보면 자바 표준 API에서 제공하는 예외 클래스만으로는 다양한 종류의 예외를 표현할 수가 없다. 애플리케이션 서비스와 관련된 예외를 애플리케이션 예외 (Application Exception)이라고 한다. 이는 개발자가 직접 정의해서 만들어야 하므로 사용자 정의 예외라고도 한다. 사용자 정의 예외 클래스 선언 사용자 정의 예외 클래스는 컴파일러가 체크하는 일반 예외로 선언할 수도 있고, 컴파일러가 체크하지 않는 실행 예외로 선언할 수도 있다. 일반 예외로 선언할 경우 Exception을, 실행 예외로 선언할 경우 RuntimeException을 상속하면 된다. public class SOME_Exception extends [ Exception | Run..
자동 리소스 닫기 자바 7부터는 try-with-resources를 사용하면 예외 발생 여부와 상관없이 상요해던 리로스 객체(각종 입출력 스트림, 서버 소켓, 각종 채널)의 close() 메소드를 호출해서 안전하게 리소스를 닫아준다. 리소스라는 말이 여러 가지 의미가 있겠지만 여기서는 데이터를 읽고 쓰는 객체라고 생각해 두자. FileInputStream fis = null; try { fis = new FileInputStream("file.txt"); } catch (IOException e) { ... } finally { if (fis != null) { try { fis.close(); } catch (IOException e) {} } } 파일을 사용할 때는 try-catch를 사용해서 clo..
예외와 예외 클래스 JVM 실행에 문제가 생겼을 때, 우리는 에러를 마주하게 된다. 자바에서는 에러 이외에 예외(exception)라고 부르는 오류가 있는데, 예외란 사용자의 잘못된 조작 또는 개발자의 잘못된 코딩으로 인해 발생하는 프로그램 오류를 말한다. 예외가 발생되면 프로그램은 곧바로 종료하지만, 예외 처리(Exception Handling)을 통해 프로그램을 종료하지 않고 정상 실행 상태가 유지되도록 할 수 있다. 예외는 두 가지 종류가 있다. 하나는 일반 예외(Exception)이고, 다른 하나는 실행 예외(Runtime Exception)이다. 일반 예외는 컴파일러 체크 예외라고도 하는데, 자바 소스를 컴파일 하는 과정에서 예외 처리 코드가 필요한지 검사하기 때문이다. 만약 예외 처리 코드가 ..
익명 객체 익명(anonymous) 객체는 이름이 없는 객체를 말한다. 익명 객체는 단독으로 생성할 수 없고 클래스를 상속하거나 인터페이스를 구현해야만 생성할 수 있다. 익명 객체는 필드의 초기값이나 로컬 변수의 초기값, 매개 변수의 매개값으로 주로 대입된다. UI 이벤트 처리 객체나 스레드 객체를 간편하게 생성할 목적으로 익명 객체가 많이 활용된다. 익명 자식 객체 생성 부모 타입으로 필드나 변수를 선언하고, 자식 객체를 초가값으로 대입할 경우를 생각해보자. 우선 부모 클래스를 상속해서 자식 클래스를 선언하고, new 연산자를 이용해서 자식 객체를 생성한 후, 필드나 로컬 변수에 대입하는 것이 기본이다. class Child extends Parent { } // 자식 클래스 선언 class A { P..
중첩 클래스 중첩 클래스를 사용하면 코드의 복잡성을 줄일 수 있다! 중첩 클래스는 클래스 내부에 선언되는 위치에 따라서 두 가지로 분류된다. 클래스의 멤버로서 선언되는 중첩 클래스를 멤버 클래스라고 하고, 메소드 내부에서 선언되는 중첩 클래스를 로컬 클래스라고 한다. 멤버 클래스는 객체가 사용 중일때는 언제든지 재사용이 가능하지만, 로컬 클래스는 메소드 실행 시에만 사용되고, 메소드가 실행 종료되면 없어진다. public class A { class B {...} // 인스턴스 멤버 클래스 static class C {...} // 정적 멤버 클래스 void method() { class D {...} } // 로컬 클래스 } 멤버 클래스도 하나의 클래스이기 때문에 컴파일하면 바이트 코드 파일(.clas..
인터페이스 상속 인터페이스도 다른 인터페이스를 상속할 수 있다. 인터페이스는 클래스와는 달리 다중 상속을 허용한다. 다음과 같이 extends 키워드 뒤에 상속할 인터페이스드을 나열할 수 있다. public interface 하위인터페이스 extends 상위인터페이스1, 상위인터페이스2 {...} 하위 인터페이스를 구현하는 클래스는 하위 인터페이스의 메소드 뿐만 아니라 상위 인터페이스의 모든 추상 메소드에 대한 실체 메소드를 갖고 있어야 한다. 그렇기 때문에 구현 클래스로부터 객체를 생성하고 나서 다음과 같이 하위 및 상위 인터페이스 타입으로 변환이 가능하다. 하위인터페이스 변수 = new 구현클래스(...); 상위인터페이스1 변수 = new 구현클래스(...); 상위인터페이스2 변수 = new 구현클래..