본문 바로가기

Development/ETC

(7)
개발자도 비즈니스 참여를 (번역) 루비에서 상속을 피하는 방법 을 읽고. (링크 유실) 요즘 '객체 지향 이란 무엇일까?' 라는 원론적인 질문에 꽂혀 있어서 그런지, 굉장히 흥미를 일으키는 제목의 글이었습니다. 저는 2년간 자바만 해서 루비를 전혀 모릅니다. 그래서 읽으면서 어림짐작으로 루비 소스를 자바 소스로 뇌컴파일 해가며 읽었는데 역시나 재밌었습니다. 상속이 아닌 위임으로 이 글은 제목 그대로 '상속을 피하기 위한'에 대한 솔루션을 제공하고 있습니다. 상속(확장)이 아닌 위임을 통해서 말이지요. 템플릿 메서드 패턴이냐 스트래티지 패턴이냐로 구분지어 볼 수도 있을 것 같아요. 물론 절대적으로 상속보다는 위임이 좋다는 건 아닙니다. 상황에 따라 충분히 선택의 여지가 있습니다. 이 글의 예에서는 스트래티지 패턴이 더 적합하다고 ..
객체지향 개발 5대 원칙 : SOLID 좋은 글 그간 SOLID 원칙에 대한 설명을 굉장히 많이 보았는데, 최근에 굉장히 명쾌하게 설명한 글을 발견 !객체지향 개발 5대 원리: SOLID클린 소프트웨어 : 애자일 원칙과 패턴, 그리고 실천 방법을 읽던 중에.
넷플릭스 마이크로 서비스 가이드 출처 및 링크 : https://www.youtube.com/watch?v=OczG5FQIcXw&feature=youtu.be
모듈화에 대하여 문득 모듈화에 대해서 생각하다가, 의식의 흐름대로 작성하였습니다. 문맥도 두서도 개연성도 없습니다. 대단한 내용은 더더욱 없습니다 ! : ) 의식의 흐름 #0.모듈화를 생각하기에 앞서 나의 코드를 보자.눈앞에서 흩날리고 있는 코드들 속에서 공통적인/반복적인 부분을 뽑아 내서 중복부터 제거하고. haha. DRY ! 의식의 흐름 #1.개발자는 역할과 책임을 특징 짓고 그것에 따라 적절히 분리할 수 있어야 해. 관찰력이 있어야해.왜냐하면? 무엇인가를 찾아낼 수 있어야 해.우리가 찾아야 할 대상은 다음과 같은 일련의 문장들로 표현될 수 있어.무엇 ?= 클라이언트에게 알리지 말아야 할 비밀= 클라이언트가 알 필요가 없는 사항= 변경될 가능성이 높은 부분= 복잡하고 어려운 부분= 세부적인 사항들 및 구현= 실제 작업해..
MySQL 원격 접속용 계정 생성 연습 프로젝트를 위해 AWS EC2에 JDK, Tomcat, MySQL 등을 세팅하고 있는데, 프로젝트 서버 세팅을 해본 적은 처음이라 애를 먹으며, 폭풍 구글링을 했다. 내 로컬 PC(혹은 외부)에서 원격으로 MySQL 접속을 위해 몇가지 설정이 필요 하다는 것을 알았다. 1. 원격 접속용 MySQL 계정. 1CREATE USER 'name'@'ip' IDENTIFIED BY 'password';cs name : 사용자 계정 ip : 출발지 IP ( Any : % , 특정 대역 : xxx.xxx.%)password : 비밀번호 2. 해당 계정에 필요한 권한을 준다. 나는 모든 권한을 부여 했다. 123GRANT ALL PRIVILEGES ON *.* TO 'name'@'ip' WITH GRANT OPT..
enum 수정 후 deploy 시 문제점. 필요에 의하여 enum을 수정할 일이 있었다.즉, enum에 값을 추가한 뒤, 해당 값을 사용하는 로직을 배포했다. 그런데 갑자기 Error가 엄청나게 올라오기 시작했다. 로직의 결함은 전혀 없었는데 도대체 왜 Error가 발생 했을까? 이 2가지 상황을 고려하면 내가 발생시킨 Error는 당연한 것으로 보인다. 내가 배포한 서비스는 다수의 서버에서 실행된다.다수의 서버를 동시에 배포하면 서비스에 차질이 있므로, 순차적으로 배포했다. 다음의 예를 보면 알 수 있다. 기존의 서비스에서 한 enum 클래스가 아래와 같이 존재할 때, [Old Enum]12345public enum Color { BROWN, YELLOW, WHITE}cs이 Enum을 아래와 같이 변경한다. [New Enum]123456publ..
스레드 안전성이란? Thread Safe 하게 코드를 작성하라 이 말은 곧 공유되고 변경할 수 있는 상태에 대한 접근을 관리 하는 것과 같다. '공유 되었다'는 것은 '여러 스레드가 특정 변수에 접근할 수 있다'라는 뜻이고 '변경할 수 있다'는 것은 말 그대로 '해당 변수의 값이 변경될 수 있다'는 말이다. 여러 스레드에서 수행되는 작업의 타이밍(race condition)이나 스케줄링에 따른 교차 실행과 관계 없이 불변조건이 유지 되어야 한다. 그러면 어떤 객체가 Thread Safe 해야 해? 이는 '객체가 어떻게 사용되는가?' 의 문제이지 '객체가 어떤 역할을 하느냐'와는 상관없다.다시 말하면 '해당 객체에 여러 스레드가 접근할 가능성이 있는가? '의 문제이다.스레드가 하나 이상의 상태 변수에 접근하고 그 중 하나라도..