일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |
- DesignPattern
- 자바
- Network
- solid
- 람다 칼큘러스
- exception
- 로버트마틴
- javscript
- Python
- functional programming
- Pattern
- 함수형 프로그래밍
- 파이썬
- 스택
- 큐
- design-pattern
- Collections
- Eclipse
- 백준
- Java
- Collection
- Spring
- 겨울카카오인턴
- tcp
- JDBC
- 디자인패턴
- 프로그래머스
- Rails
- JavaScript
- lambda calculus
- Today
- Total
목록전체 글 (177)
개발자 노트
The Dependency Inversion Principle 앞서서 OCP와 LSP에 대해서 배웠습니다. OCP는 변경은 허용하되 수정을 막자는 원칙이였고, LSP는 베이스 클래스가 서브 클래스로 치환될 수 있다는 원칙이였습니다. 이 두 원칙을 엄격히 사용하는데서 비롯되는 구조에 대해 말씀드리겠습니다. 이 구조 자체가 원칙이 되며 이 이름은 The Dependency Inversion Principle이라고 합니다 소프트웨어, 뭐가 문제야? 우리는 소프트웨어를 만드는 개발자로서, 우리 스스로 나쁜 디자인으로 내몰고 있습니다. 왜 이런 일이 일어날까요? 이 문제의 핵심은 바로 bad design을 정의를 하지 않았다는 것에 있습니다. 따라서 나쁜 디자인에 대해 설명드리겠습니다. Bad Design Bad..
INTRODUCTION 용어정리 client, user 특정 클래스나 객체를 사용하는 객체,함수,클래스 등 ISP란? Interface Segeregation Principle의 약자로, 인터페이스를 분리해야한다는 원칙입니다. 문제점 이 원칙이 지켜지지 않았을 경우엔 뚱뚱한 인터페이스(또는 오염된 인터페이스)가 만들어집니다. 이 인터페이스는 대게 응집성이 좋지 않습니다. 다시말해 연관성이 떨어지는 함수가 한 인터페이스에 집중되어 있다는 뜻입니다. 목표 이 fat 인터페이스는 ISP에 따라 분리되어야 하는데, 이 인터페이스를 사용하는 클라이언트는 단일 클래스로 볼것이 아니라, 응집성있는 인터페이스인 추상화된 베이스 클래스를 알아야합니다. 앞으로 알아볼 내용 fat 또는 polluted의 단점 어떻게 이 인..

참고 자료 https://en.wikipedia.org/wiki/Liskov_substitution_principle (wiki liskov-substitution-principle) http://www.butunclebob.com/ArticleS.UncleBob.PrinciplesOfOod (LSP article) https://en.wikipedia.org/wiki/Design_by_contract (wiki design_by_contract) Introduction 앞서 OCP의 핵심 메커니즘은 추상화와 다형성을 이용하는 것이였습니다. 바로 상속을 이용하여 abstract base class로부터의 derived class를 생성할 수 있었습니다. 그렇다면 어떤 디자인 규칙(rule)이 이러한 특수..
Open-Closed Principle 클래스, 모듈, 함수 등은 확장에 대해선 열려있어야 하고, 수정에 대해선 닫혀있어야 한다. - MEYER Bertrand(1988) Object-Oriented Software Construction 확장은 허용하고, 수정은 허용하면 안된다. 다시 말하자면, 클래스는 수정없이 확장 가능해야 한다. 원칙 구현 방법 방법은 두 가지가 있습니다. 두 방법은 일반화 방법을 사용하는 것이 공통적이나, 목표나 기술 그리고 결과에서 차이를 가집니다. 1. Meyer's open-closed principle 방법 상속을 통하여 구현하라. 설명 상속을 이용하면, 부모 클래스는 상속을 통하여 구현할 수 있으므로 open에 대해서는 개방적이고, 자식 클래스를 통해 부모 클래스..
단일 책임 원칙 출처 https://blog.cleancoder.com/uncle-bob/2014/05/08/SingleReponsibilityPrinciple.html 의문점 도대체 reason to change?는 뭘까? 사람들이 해석하는 reason to change 버그 픽스? 리팩토링? 핵심 reason to change 와 responsibility를 연관 짓는 것. 위 2가지 사항은 프로그래머의 책임 => 프로그램의 디자인이 누구에게 반응해줘야 하는가?! 예시 1.CEO CEO에게 보고하는 것은 C-Level결정임 (CFO, COO, CTO) 2.CFO finance 컨트롤하는 것에 책임 3.COO 회사를 운영하는데 책임 4.CTO 회사의 기술적인 개발에 책임이 있음 [java code] p..
출처 https://guides.rubyonrails.org/action_controller_overview.html#http-digest-authentication 1. Controller의 역할 일반적인 MVC모델에서 역할과 레일즈에서 개발자가 개발할 일 라우터가 url요청을 보고 어떤 컨트롤러가 해당 요청을 수행할 지 결정한 다음, 해당 컨트롤러는 아래와 같은 사항을 책임지고 있다. 컨트롤러는 요청을 이해하는 역할 적절한 결과를 생산하는 역할 레일즈 컨트롤러도 일반적인 웹 컨트롤러처럼 작동. (request받고, 데이터를 저장소에서 가져오거나, 저장하고, layout을 전달해주기 위해 view 객체를 이용하고...) 뷰에게 모델 데이터를 전송해주므로 중간자라고 말할 수있음. 한편으로, Action ..
프로젝트하는 이유? 회사에서 게시판 페이지 만들기 기능을 작성 중입니다. 그런데 많이 서투네용.. 그래서 api작성부터 view 작성 및 테스트 코드 작성까지 만들어봄으로써 익숙해지려 합니다. 시간에 쫓기지 않고 깊게 파고들 수 있으리라 생각됩니당! 주로 사용해볼 것들 rspec 테스트 코드 작성시 사용되는 gem입니당 git flow, issue 이용 프로젝트 버전 관리를 위해서! jquery - dataTable 페이징 및 테이블 생성시 이 라이브러리를 이용해서 익숙해질 겁니다. 모든 부분을 프론트 개발자분에게 맡기기엔 개발인력이 부족하거든요. rails 뭐... 회사 웹 프레임워크라 인증 로그인하고, 인증하는 부분이 아직도 어렵습니다. 머리에서 잘 그려지지 않네요. 그래서 이번 프로젝트로 극복해볼겁..
https://github.com/jurogrammer/rails-paging jurogrammer/rails-paging 레일즈로 게시판 기능 개발 숙달을 위한 토이프로젝트. Contribute to jurogrammer/rails-paging development by creating an account on GitHub. github.com
회사에서 어떤 일이...? 전 글에서 보시듯이 1월부터 본격적으로! 독학으로 공부를 시작했습니다. 그러다보니 협업할 기회는 없었죠. 그렇다보니 이번에 프로젝트를 진행하면서 이것저것 문제가 많았습니다 ㅎㅎ;; 협업 환경 우선 멘토 두 분이 계시고 멘티로 저와 다른 분이 계십니다. 저랑 다른 멘티와 함께 프로젝트를 진행하고, 멘토 분들이 이를 봐주는 형태입니다. 관리 툴은 git으로, git-flow에 따라 진행하였습니다.(처음엔 진행되는지도 몰랐습니다.) git~! 문제들 문제는 깃이였습니다. 여태까지 현업에서 협업용 버전관리 툴로 깃을 이용한다 익히 들었습니다. 그래서 네이버 부스트코스에서 코드 리뷰받을 떄도 zip이 아닌 git으로 해보았고, 따로 깃허브도 관리해보고 있었습니다. 하지만 협업하지 않았던..
출처 https://www.rubyguides.com/2019/12/yield-keyword/ (루비가이드) https://www.youtube.com/watch?v=4sO0aWTd3yc (네이버d2 함수형 프로그래밍 발표) https://www.youtube.com/watch?v=ii5hnSCE6No (우아한 테크 10분 테코톡) https://ko.wikipedia.org/wiki/%ED%95%A8%EC%88%98%ED%98%95_%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%98%EB%B0%8D (위키디피아 프로그래밍) Yield...? 뭐냐 ruby를 처음보면 '뭐야 ㅋㅋㅋ 완전 파이썬이네'싶은 마음에 쉽게 쉽게 배워갔습니다. 그러다가 루비 심볼이라는 새로운 개념을 만..