분류 전체보기 (84) 썸네일형 리스트형 객체지향의 사실과 오해 - 다시 읽어보기 "객체지향이란 실세계를 직접이고 직관적으로 모델링할 수 있는 패러다임" 실제로 존재하는 개념이든, 추상적으로 존재하는 개념이든 코드로 옮겼을 때, 해당 개념을 '객체'로 옮길 수 있고, 그렇다면 해당 개념과 코드상에 존재하는 객체가 일치하면 일치할수록 개발자는 코드를 이해하기 쉬워지고, 개발의 속도가 엄청 빨라질 수 있다. 옛날에 읽었을 때는 이해가 잘 안가고, 그냥 그렇구나 했지만, 이제는 이해가 간다. 그러나 이게 다시 유연하고 실용적인 관점에서는 객체지향 분석, 설계를 설명하기에 적합하지 않다구?? 7장에서는 이거라고 했잖아요.. 그렇지만 클린 아키텍쳐책에도 비슷하게 나와있는 걸로 봐서는 실용적인 측면에서는 이렇게 설명하는게 적합하지 않다고 하는 듯하다. 객체지향의 목표는 실세계를 모방하는 것이 아.. 리액트 공부중 - 2~3주차 후기 회사업무차에서 실시간 차트 개발을 담당하게 되어 리액트를 공부하고 있다. 리액트는 벨로퍼트의 블로그에서 쉽게 쫓아갈 수 있었으며, 역시 직접 따라 코딩해봐야 이해가 빠르게 된다. 리액트가 어렵다면 어렵다고 할 수 있는 이유는, 사실 기존의 html보다 훨씬 편하지만, 편하게 하기위하여 리액트 특유의 문법이 존재한다. 리액트에는 state가 존재한다. state를 직접적으로 변경할 수 없으며, 아예 새로운 객체를 만들어서 바꿔치기는 할 수 있다. useEffect와 같은 특수문법이 존재한다. 렌더링이 완료되면 최초 실행되며, [deps]에 있는 값이 비어있으면, 더 이상 실행되지 않는다. 만약 [deps]에 특정값이 있다면, 해당값을 구독하여 값이 변경될때마다 호출된다. context라는 것이 존재한다. .. 클린 아키텍처 7장~11장 SOLID SRP 하나의 모듈은 하나의, 오직 하나의 액터에 대해서만 책임져야 한다. 서로 다른 액터를 책임진다면 병합이 발생할 가능성은 확실히 더 높다. 해결책: 메서드를 각기 다른 클래스로 이동. 그러나 각기 다른 클래스로 관리하기가 어렵다면? 퍼사드로 관리하자 단일 책임 원칙은 메서드와 클래스 수준의 원칙이다. 상위의 두 수준에서도 다른 형태로 다시 등장. 컴포넌트 수준에서는 공통 폐쇄 원칙, 아키텍처 수준에서는 아키텍처 경계의 생성을 책임지는 변경의 축이 된다. OCP 확장에는 열려있어야하고, 변경에는 닫혀 있어야함 → 다형성을 사용하여, 기능을 변경시, 다른 모듈로 갈아끼우라는 뜻. 아키텍처 컴포넌트 수준에서 OCP를 고려할 때, 훨씬 중요한 의미를 가진다. 처리 과정을 클래스 단위로 분할하고, 컴포넌트 .. 클린 아키텍처 6장 - 함수형 프로그래밍 프로그래밍 그 자체보다 앞서 등장 클로저 언어와 함수형 프로그래밍이 무엇인지 배우는 시간은 스스로 갖도록 하자 클로저 프로그램에서는 이러한 가변 변수가 전혀 없음. 함수형 언어에서 변수는 변경되지 않는다. →경합조건, 교착상태, 동시 업데이트 문제가 모두 가변 변수로 인해 발생하기 때문이다. 동시성 애플리케이션에서 마주치는 모든 문제, 즉 다수의 스레드와 프로세스를 사용하는 애플리케이션에서 마주치는 모든 문제는 가변 변수가 없다면 절대로 생기지 않는다. 가변성의 분리 애플리케이션의 내부 서비스를 가변 컴포넌트와 불변 컴포넌트로 분리하는 일. 불변 컴포넌트는 변수의 상태를 변경할 수 있는, 즉 순수형 컴포터는가 아닌 하나 이상의 다른 컴포넌트와 서로 통신한다. 상태 변경은 갖가지 동시성 문제에 노출하는 것.. 클린 아키텍처 5장 - 객체 지향 프로그래밍 좋은 아키텍처를 만드는 일은 ㅇㅇ설계 원칙을 이해하고 응용하는 데서 출발. 누군가는 데이터와 함수의 조합. 누군가는 "데이터와 함수의 조합", 1966년보다 훨씬 이전부터 프로그래머는 데이터 구조를 함수에 전달해 왔음 "실제 세계를 모델링하는 새로운 방법", 이거는 이해하기 모호하다? 근데 맞는 말임 에서 보듯이 실제 세계와 유사하게 만드는 이유는, 가독성을 높혀서 코드를 이해하는데 매우 쉬워지게 만드는 목적 본질을 설명하기 위해, 세 가지 개념을 설명하자면, 캡슐화, 상속, 다형성이다. 이것에 대해 알아보자 캡슐화 일부 함수들만 밖에 노출되고, 나머지는 노출되지 않게 하는 것. 내부의 데이터 구조와 어떻게 구현되었는지에 대해서는 조금도 알지 못한다. C++에서는 완벽한 캡슐화가 깨지게 되었음, 헤더에 .. 클린 아키텍처 4장 - 구조적 프로그래밍 프로그램은 어렵고, 프로그래머는 프로그래밍을 잘하지 못한다 → 증명이라는 수학적 원리를 적용하여 이 문제를 해결하고자 했다. 입증된 구조를 사용하고, 이들 구조를 코드와 결합시키며, 그래서 코드가 올바르다는사실을 스스로 증명하게 되는 방식. 기본적인 증명을 작성할 수 있는 기법을 보여줘야 한다는 사실을 깨달았다. 이 연구를 진행하면서 goto 문장이 모듈을 더 작은 단위로 재귀적으로 분해하는 과정에 방해가 되는 경우가 있다는 사실을 발견. 모듈을 분해할 수 없다면, 분할 정복 접근법을 사용할 수 없음. goto문의 좋은 접근 방식은, if/then/else와 do/while과 같은 분기와 반복이라는 단순한 제어 구조에 해당한다는 사실을 발견했다. 모듈이 이러한 제어 구조만을 사용한다면 증명 가능한 단위로.. 클린 아키텍처 3장 구조적 프로그래밍, 객체지향 프로그래밍, 함수형 프로그래밍에 대한 설명 구조적 프로그래밍 최초로 적용된 패러다임은 구조적 프로그래밍으로, 다익스트라가 발견함. 무분별한 goto는 프로그램 구조에 해롭다는 사실을 제시. 이러한 점프들을 if/then/else와 do/while/until과 같이 더 익숙한 구조로 대체했다. 구조적 프로그래밍은 제어흐름의 직접적인 전환에 대해 규칙을 부과한다. 객체지향 프로그래밍 구조적 프로그래밍보다 앞선 1966년에 의해 등장했음. 클래스의 생성자, 인스턴스 변수, 중첩함수는 메서드. 함수 포인터를 특정 규칙에 따라 사용하는 과정을 통해 필연적으로 다형성이 등장. 객체 지향 프로그래밍은 제어흐름의 간접적인 전환에 대한 규칙을 부과한다. 함수형 프로그래밍 컴퓨터 프로그래밍보다.. 클린 아키텍처 2장 두 가지 가치를 모두 높게 유지해야 하는 책임이 있음 행위(behavior) 구조(structure) 일반적으로, 한 가지 가치에만 집중하고, 나머지 가치는 배제하고는 한다. 행위 기계가 요구사항을 만족하도록 코드를 작성한다. 요구사항을 기계에 구현하고 버그를 수정하는 일이 자신의 직업이라고 믿는다. 슬픈 일이지만 그들은 틀렸다. 아키텍처 소프트웨어는 soft ware로 부드러운 제품. 부드러운 이유는 기계의 행위를 쉽게 변경할 수 있도록 하기 위해서다. 기계의 행위를 바꾸는 일을 어렵게 만들고자 했다면, 우리는 소프트웨어가 아니라 하드웨어라고 불렀을 것이다. → 아키텍처는 형태에 독립적이어야하고, 그럴수록 더 실용적이다. 기능인가? 아키텍처인가? → 일반적으로 기능이 더 중요하다고 할 것이다. → 그러.. 클린 아키텍처 1장 설계와 아키텍쳐란? 아키텍처는 저수준의 세부사황과는 분리된 고수준의 무언가 설계는 저수준의 구조 또는 결정사항 들을 의미할 때가 많음 목표: 필요한 시스템을 만들고 유지보수하는 데 투입되는 인력을 최소화 사업 성공 → 개발자의 수는 증가했지만 → 코드 생산성은 한 곳으로 수렴 한 라인당 비용이 점점 증가하고 있음 → 이러한 비용 곡선은 사업 모델의 수익을 엄청나게 고갈시키며, 회사의 성장을 멈추게 하거나 완전히 망하게 만든다. 모두가 열심히 일하고 있기 때문에 더 절망적 → 개발자는 기능 개발보다는 엉망이 된 상황에 대처하는 데 소모하기 시작함 대다수의 개발자들: 뼈 빠지게 일한다. "코드는 나중에 정리하면 돼. 당장은 시장에 출시하는 게 먼저야" → 라는 흔해 빠진 거짓말에 속는다. 이렇게 되면 정리를.. Thymeleaf 6~12 https://www.thymeleaf.org/doc/tutorials/3.0/thymeleafspring.html#creating-a-form Tutorial: Thymeleaf + Spring Preface This tutorial explains how Thymeleaf can be integrated with the Spring Framework, especially (but not only) Spring MVC. Note that Thymeleaf has integrations for both versions 3.x and 4.x of the Spring Framework, provided by two separate libraries c www.thymeleaf.org 6 Creating a .. 이전 1 ··· 4 5 6 7 8 9 다음