본문 바로가기

2018/02

(번역)Command 아키텍처 기반으로 루비온 레일즈의 Controller Action 리팩토링하기 REFACTORING CONTROLLER ACTION IN RUBY ON RAILS 레일즈 컨트롤러가 뚱뚱해지는 현상을 꽤 많이 봤었다. Medium 눈팅하다가, 레일즈 컨트롤러를 리팩토링했다는 글을 발견했다. 뭔 내용인지 궁금해서 ㅋㅋ 읽어본 내용을 정리해보고자 한다. 컨트롤러는 얄쌍하고, 모델은 뚱뚱하게 로직을 짜는게 루비온레일즈의 MVC 기본 원칙이다. 그러나 시간이 흐르다 보면, 프로젝트는 점점더 커지고 메서드도 늘어난다. 그러다 보니 코드를 찾거나 신규 피쳐를 추가하는게 어려워진다. 그러다 결국 컨트롤러는 더이상 얄쌍해지지 않게 되고, 복잡해진다. 이에 대한 해결 방법을 정리하고자 한다. Controllers 우리는 컨트롤러에 코드가 몇백줄이나 되는걸 원하진 않는다. 그래서 가장 좋은 방법은 다..
(읽을거리)루비온레일즈 개발자를 위한 DDD 읽을 거리medium 포스팅Ruby on rails DDD => 읽어보니 루비에서는 어떤 느낌으로 DDD를 쓰는지 감이 온다 공식적인 느낌이 드는 ddd-ruby 사이트ddd-ruby.github.io레일즈 앱에서 비즈니스 도메인을 어떻게 관리할 건지 토론하는 페이지 Struggling with complex Rails app and business domain?2012년도에 작성된 sitepoint 포스팅 시리즈 DDD for Rails Developers. Part 1: Layered ArchitectureDDD for Rails Developers. Part 2: Entities and ValuesDDD for Rails Developers. Part 3: Aggregates스크립트 언어의 DDD ..
최범균 <DDD START! > 3장 요약 3장. 애그리거트복잡한 도메인 객체를 이해하고, 관리하기 쉬운 단위로 만들려면, 상위 수준에서 모델을 조망할 수 있는 방법이 필요하다.수많은 객체를 애그리거트로 묶어서 생각하면, 좀 더 상위 수준에서 도메인간의 관계를 이해하는 데에 도움이 된다. 그리고 애그리거트는 일관성을 관리하는 기준이 되어서, 복잡한 도메인을 단순한 구조로 만들어준다. 참고 : DDD 구현 기초 슬라이드 쉐어 위의 다이어그램처럼 애그리거트는 서로 경계가 있다. 한 애그리거트에 속한 객체는 다른 애그리거트에 속하지 않는다. 애그리거트는 독립적이기 때문에, 다른 애그리거트를 관리하지 않는다. 이러한 경계는 도메인 규칙과 요구사항과 관련있다. 도메인 규칙에 따라 함께 생성되는 구성요소는 한 애그리거트에 속할 가능성이 높다. 그래서 한 애..
베이비드라이버 ★★★★☆ ★★★★☆베이비드라이버는 소니 + 쉐보레 + 아이팟 영업 영화다 ㅎㅅㅎ 음악 감상+영상미를 보는 재미가 있다 이번주 출근길 BGM은 베이비드라이버 OST으로 정했다! 운전면허도 없지만 쉐보레타며 선구리끼고 아이팟으로 노래듣고싶어짐 ㅋ 초록색 벽지랑 할아버지랑 색이 잘 어울린다 믹스테이프 갖고싶다 아이팟 뽐뿌온다 !!! 영화 후기
최범균 <DDD START! > 1장-2장 요약 1장. 도메인 모델 시작도메인 모델특정 도메인을 개념적으로 표현한 것이다. 도메인 모델은 객체 모델 / 상태 다이어그램 등으로 표현할 수 있다. 도메인 모델 패턴 도메인 모델은 엔터티와 밸튜 타입으로 구성된다.엔터티는 고유한 식별자를 갖고 있는 개념을의미하고, 밸류타입은 엔터티에 속해있으면서, 개념적으로 완전한 하나를 표현할 때 사용한다.예를 들어, "주문"이라는 도메인은 고유한 주문 번호를 갖고 이는 엔터티라고 볼 수 있다. 그리고 주문 안에는 배송지 정보, 수신인 등을 의미하는 속성이 저장되는데, 이를 밸류 타입으로 볼 수 있다. 주의할 점도메인 모델에서는 get/set 메서드를 사용하지 않는 것이 좋다. set 메서드를 사용하면, 도메인 객체를 생성할 때 완전한 상태가 아닐 수도 있다는 단점이 있다..
프로젝트를 시작하는 방법 (ver.2017) 백그라운드최근 팀이동을 하면서, 일하는 방법이 달라졌다. 그래서 2017년도에는 어떤 방식으로 일했었는지 기억하기 위해, 글로 남기고자 한다. 가상의 문제어떤 방식으로 일하고, 생각했는지에 대해서 설명하기 위해 가상의 문제를 정하려고 한다.사용자가 광고주 앱에서 LIKE를 누른 상품을 인스타그램에서 광고로 보여주는 다이나믹 광고 상품을 만들어야한다고 생각해보자. (지하철포스팅) 인스타그램은 어떻게 내가 찜한 상품을 광고로 보여주는 걸까? - 페이스북/인스타그램에 있는 Dynamic AD를 만들어야한다고 상상해보자 ㅎㅎ 과제의 시작 (1) - 백로그 미팅잡기"프로젝트를 시작하자!"라고 결심하면, 백로그를 만들고, 스토리 포인트를 산정하기 위한 미팅을 잡는다. 백로그 미팅의 목적은 아래와 같다.- 프로젝트의..
[ZAZZ]현대뮤직라이브러리에서 들을 LP 고르기 현대 뮤직라이브러리에 가면, 레코드 종류가 너무 많아서 무슨 노래를 들어야할지 모르겠었다 그러다 우연히 내 취향인 노래를 찾는 방법을 알게 됐다.1950's 노래들이 모여있는 LP판 중에서, 가장 낡은 LP판을 찾는거다 ㅎㅎ 내가 좋아하는 느낌의 재즈가 1950's 음악이였던거 같다 ㅎㅎ 암튼.. 재즈를 좋아하는 데, 현대뮤직라이브러리가서 무슨노래를 들을지 모르겠다면,ELLA & LOUIS의 LP판을 찾아서 들어보면 된다 ! 그다음, 이 LP판 근처에 있는 오래된 낡은 LP판을 하나하나 격파해가며 들어보면 된다
[Redis]Redis에서 LRU Cache를 사용하는 방법 Using Redis as an LRU cache Redis에서는 새로운 값이 추가되었을 때, 자동으로 오래된 데이터를 지워주는 기능이 있다. Memcached 시스템이서도 이러한 기능이 있기 때문에, 개발자들 사이에서는 익숙한 기능이다. 이 포스트에서는 메모리 사용량 제한을 위해서 사용하는 값인 maxmemory, 메모리 관리 정책인 eviction policy, 원조 LRU와 REDIS LRU의 차이에 대해서 이야기할거다. Maxmemroy 설정하기 maxmemory 값은 redis.conf 파일이나 config set 커맨드 명령문으로 설정할 수 있다.maxmemory 100mbmaxmemory를 설정해주지 않으면, 64bit 시스템에서는 초기값이 0으로 설정된다. 32bit 시스템에서는 3GB으로..