본문 바로가기
[라오스 방비엥] 또 다른 하이라이트!! 블루라군 #2 [라오스 방비엥] 또 다른 하이라이트!! 블루라군 #2 자 이제 높은 곳 다이빙을 도전한다. 낮은 곳에 갈 때도 "이건 껌이겠군?" 이란 맘으로 갔다가."어? 생각보다 높네?" 라는 느낌을 받았었기 때문에, 높은 곳에 가려니 살짝 겁이 난다. 괜히 담담한 척 하며 대나무 다리 위를 차근차근 올라간다. 올라가니 역시나 무섭다.밑에서 보는 것과 높이가 다르다.. 낮은 곳과는 비교가 안 되겠군 싶었지만,그 예상보다 더 무서웠다.. 뭔가 즐겁게 야호~ 하면서 뛰어 내리고 싶었는데.. 그래야 놀이이고 재미인데..아... 이걸 꼭 뛰어야 하나? 무엇을 위해서 여기서 겁 먹으면서 뛰어내려야 하나? 싶다. 그런데 이곳에서 뛰어내리지 않고 블루라군을 다녀왔다고 하면 안 될 것 같았다. 아래쪽에서 다이빙 하는 사람이 있나.. 2017. 1. 13.
[Effective Java] 필요하면 방어 복사본을 만들자. [Effective Java] 필요하면 방어 복사본을 만들자. - 자바는 꽤나 안전한 언어이지만, 우리 클래스의 클라이언트가 불변 규칙을 파괴하기 위해 최선을 다할 거라는 가정하에 방어적으로 프로그램을 작성해야 한다. - 가변 객체인 매개 변수는 각각의 방어복사본(defensive copy)을 만들어서 생성자에 전달해야 한다. 그렇지 않으면 예상치 못한 여러 상황이 발생할 수 있다. - 방어복사본은 매개 변수의 유효성 검사에 앞서 만들어야 하며, 유효성 검사는 원본이 아닌 복사본을 대상으로 해야 한다!! ( TOCTOU 공격 ( 검사시간/사용시간) 이슈 ) - clone 은 위험한 복사방법이므로 가급적이면 다른 방법으로 복제하자. final 이 아닌 Class 는 sub class 가 clone 을 상속.. 2017. 1. 10.
[Effective Java] int 상수 대신 enum 을 사용하자. [Effective Java] int 상수 대신 enum 을 사용하자. - int enum pattern 이라고 불리는 int 를 이용한 분기는 단점이 많다. - 타입 안전을 보장하지도 않고, 편리하게 사용할 수 있는 방법도 제공하지 않는다. 즉 취약하다. - int enum 상수를 출력 가능한 문자열로 쉽게 바꾸는 방법도 없다. - 하나의 int enum 그룹에 있는 모든 상수를 loop 처리하거나, 그룹 사이즈를 알 수 있는 좋은 방법도 없다. - int enum 패턴의 변이로 String enum 패턴이 있는데 더더욱 바람직하지 않다. print 하는 부분에서는 좋지만, 문자열 비교에 의존하여 성능 문제가 생길 수도 있다. 더욱 문제가 되는 것은 필드명 대신 string 상수 값을 클라이언트 코드에.. 2016. 12. 19.
[Effective Java] 추상 클래스보다는 인터페이스를 사용하자. [Effective Java] 추상 클래스보다는 인터페이스를 사용하자. - 인터페이스(interface)와 추상클래스(abstract class)는 비슷하지만 다르다. 추상 클래스는 구현된 메소드를 포함할 수 있는 반면 인터페이스는 그렇지 못하다. 추상 클래스로 정의된 타입을 구현하는 클래스는 반드시 추상 클래스의 서브 클래스가 되어야 한다. 인터페이스를 구현하는 클래스의 경우 인터페이스에 정의된 모든 메소드를 구현하기만 하면 된다. 자바는 단일 상속만을 허용하므로 추상 클래스로 타입을 정의할 때 심한 제약이 따른다. - 인터페이스는 추상 클래스에 비해 변경과 적용이 쉽다. - 인터페이스는 믹스인(mixin)을 정의하는 데 이상적이다. 믹스인은 클래스가 자신의 본래 타입에 추가하여 구현할 수 있는 타입으.. 2016. 11. 7.
[라오스 비엔티안] 환전 이야기~ [라오스 비엔티안] 환전 이야기~ 자, 방비엥으로 떠나기 전에 환전 이야기부터 하고 갈께. 우리나라에서는 은행에서 라오스 돈을 취급하지 않기 때문에,라오스 돈 환전을 위해서는 달러를 가져가야 해. 한가지 또 주의할 것은..모든 환전소가 그런 것은 아니지만,100달러짜리 지폐와 그 미만의 지폐의 환율이 다른 곳들이 간혹 있어. 실제 내가 여행할 때 1달러 = 약 8100Kip 정도의 환율이었는데..100달러 = 8100 * 100 = 810,000 Kip 으로 환전해주는데50달러 = 8050 * 100 = 805,000 Kip.. 이런 식으로 100$ 이하 지폐는 조금 가치를 줄여 환전해주는 곳이 있다는 거지. 물론 100달러 환전했을 때 5,000킵이면..한화로 약 700 원정도밖에 차이가 안 나긴 하지.. 2016. 11. 7.
[Effective Java] 가급적 상속(inheritance) 보다는 컴포지션(composition)을 사용하자. 가급적 상속(inheritance) 보다는 컴포지션(composition)을 사용하자. - 상속은 코드를 재사용하는 강력한 방법이다. 그러나 일을 하는데 가장 좋은 도구는 아니다. 잘못 사용하면 부실한 소프트웨어를 초래한다. - 동일 프로그래머가 서브 클래스와 수퍼 클래스의 구현을 관장하는 같은 패키지 내에서 상속을 사용하는 것은 안전하다 상속을 위해 특별히 설계되고 문서화된 클래스를 확장(extends) 하기 위해 상속을 사용하는 것도 안전하다. 그러나 다른 패키지에 걸쳐 일반적인 실체 클래스로부터 상속을 받는 것은 위험하다. - 상속은 캡슐화(encapsulation) 을 위배한다. 올바른 동작을 위해 서브 클래스는 자신의 수퍼 클래스가 구현하는 상세 내역에 의존한다. 수퍼 클래스의 구현 내역은 소프.. 2016. 10. 27.
[Effective Java] 가변성을 최소화 하자. [Effective Java] 가변성을 최소화 하자. -불변 클래스는 자신의 인스턴스가 갖는 값을 변경할 수 없는 클래스. - 불변 클래스는, 가변 클래스에 비해 설계와 구현 및 사용이 더 쉽다. 에러 발생이 적으며 보안이나 사용 측면에서 더 안전하다. - 불변 클래스를 만들 때는 다음 다섯 가지 규칙을 따르자. 1. 객체의 상태를 변경하는 그 어떤 메소드도 제공하지 않는다. 2. 상속을 할 수 없도록 하자. ( class 에 final 을 주어 막을 수 있다. ) 3. 모든 필드를 final 로 지정한다. 4. 모든 필드를 private 으로 지정한다. 5. 가변 컴포넌트의 직접적인 외부 접근을 막자. 생성자와 접근자 메소드 및 readObject 메소드에서 해당 객체의 방어 복사본을 만들어 사용하도록.. 2016. 10. 24.
[일본 교토] 아라시야마 기찻길 - 포토존이에요~ [일본 교토] 아라시야마 기찻길 - 포토존이에요~ 2015. 10. 05. (3일차) #아라시야마 대나무 숲(치쿠린) 길을 걷다보면 기차길을 만날 수 있습니다.이 곳은 포토존입니다. #실제 기차가 다니는 기차길로 조심해야 한다. #사람들은 왜 이렇게 길게 펼쳐진 기차길을 좋아하는지,멋있어하는지 잘은 모르겠지만... 사진을 보니 멋있다 ㅋㅋ #사선 구도는 또 사선만의 묘미가 있다. #기차길 위에서 댄싱9 을 열심히 본 팬으로써,현대무용을!! ㅋㅋ 현대무용가 이선태님 죄송합니다.당신을 생각하며 저 포즈를 ㅋㅋㅋ #다음은 구리코가 연상되는..한껏 뱃살을 내밀며 만세!! ㅋ #김스타님은 뭔가 아기자기하다.화이팅 하는 아기같다. #일본 다이소에서 구매한 1,500원짜리 신발을 신고,뭔가 술취한 새처럼 포즈를 잡은.. 2015. 11. 24.
[노력한다고 부자가 되는 건 아니다] vs. [부자는 노력과 시행착오로 만들어진다] [노력한다고 부자가 되는 건 아니다] vs. [부자는 노력과 시행착오로 만들어진다] 출처 : 돈에 관한 생각 Chap 10. - "세 번 실패한 적이 있다고 말하는 사람과 자신이 실패자라고 말하는 사람의 인생이 앞으로 어떻게 달라지는지 그 차이에 주목하라." - 하야카와 - "노력한다고 부자가 되는 건 아니다" 라는 말은 이를 믿는 사람에게 노력은 해서 뭐하나 체념하게 만든다. - 100퍼센트 안전하고 확실한 방법이란 없다. - 정말로 실패한 때는 다시 일어서 시도하기를 포기한 순간이다. - "실패는 치명적이지 않다. 정말 치명적인 것은 변화에 대한 실패이다." - 존 우든 - "노력한다고 부자가 되는 건 아니다" 라는 말 또한 근거가 없으며 도전의지를 꺾는다는 데 문제가 있다. - New Rule 인생.. 2015. 8. 25.
반응형