FrontEnd51 디자인 패턴 5주차 수업 정리 엔지니어링 : 지식이나 과학적 체계를 현실으로 만들어내는 것.리버스엔지니어링 : 만들어진 것을 토대로 청사진이나 설계도면 및 원리를 만들어냄. 디자인 측면에서 공학 : 먼저 어떻게 만들지 구조를 설계하고 이 정해진 설계를 바탕으로 프로그래밍을 함 소프트웨어 공학에선 UML이란 국제표준이 존재. 어려운 구조의 소프트웨어를 짤 때 먼저 설계를 하고 코딩을 해야 함. 우리 코드의 문제? 올바르게 동작을 하는지 판정할 수 없다. 기준이 없기 때문.내가 무엇을 해야하는지 먼저 문서화를 해야 함. 이를 통해 내가 무엇을 해야하는지 명확하게 할 수 있음. 소프트웨어 관리의 가장 중요한 점은 '버전을 픽스'해야 하는 것. 고로 우리는 어디까지 만들지를 문서화해야 하고 이에 대한 설계를 잘 해야 함. -티켓-버전 픽스 .. 2019. 3. 13. 동기, 비동기, blocking, non-blocking, 콜백함수 및 Promise 정리 동기, 비동기, blocking, non-blocking 의 차이? 일반적인 함수는 동기화함수이자 blocking 함수.동기화 함수 : 입력하면 return 값이 반환되는 함수. 순차적으로 실행이 됨.비동기화 함수 : return 값이 반환되지 않고 대신 callback이 return 됨. (callback 을 return 하면 다 비동기화 함수)순차적으로 실행이 되지 않고 중간중간에 jump를 해다님. 컴퓨터는 폰 노이만 머신 기준을 따르므로 계속 명령어를 로딩하여 실행함.블로킹 : 어떤 명령어를 만났을 때 모든 CPU가 정지하고 그 명령어를 실행하고 있는 상태.논블로킹 : 총 수행시간이 16.6 ms, 초당 60 프레임 내에 실행되면 논블로킹 코드로 봄. 블로킹이냐 논 블로킹이냐는 시간이 얼마나 소요.. 2019. 3. 10. 80 abstract_factory 객체는 역할.메소드는 책임.속성은 권한. Math.sin 은 유틸리티. 함수. 객체지향에서의 책임 : 다른 역할에 대해서 책임을 지는 것.(대상이 없는 경우는 없다) 이 메소드는 누가 쓸 꺼지? 를 먼저 고민해야 함. 객체지향에선 객체끼리 값으로 주고 받지 않는다, 대신 메시지라는 객체를 이용해 통신한다.값의 복사가 아닌 값의 참조를 이용. 적지만 중요한 원칙을 정하면 예외를 즉시 인정할 수 있다. (켄트 백의 말) 원칙은 없을 수록 좋다, 원칙은 모두가 지키고 있을 때 가치가 태어난다. 예외가 비용이라고 생각. 가치 : 어떻게 하면 시간을 덜 들일 수 있는 코드를 짤 수 있는가 1. 길지만 반복해서 빨리 짠 코드2. 내가 짠 코드가 디버깅 시간을 줄이는 코드(유지보수, 디버깅을 줄이는게 중요)3. 패턴.. 2019. 3. 6. Service, Controller 정리 service 는 비즈니스 로직을 수행하는 것,(DB에서 데이터를 가져와 처리)controller는 view의 요청받아서 service가 실행하게끔 하는 것 2019. 3. 5. 80 layering 복습 정리 elementFromPoint : 전역 x, y 좌표에 해당되는 (가장 위에 있는) element를 추출하는 메소드가DOM Level 1 부터 들어있음. (무조건 다 있다, 모든 브라우저에 다 있음) 객체지향을 통해 우리가 한 것 :부분별로 책임/역할 모델을 인식해서 메시지 망을 통해 각자의 책임을 밀어내는 설계를 한 것.각 기 레이어에서 자기가 책임질 것만 이해하고 나머지는 밀어냄. setattribute : 선택한 요소의 속성값을 지정. 문법element.setAttribute( 'attributename', 'attributevalue' ) (id 값이 abc인 요소의 href 속성값을 변경하는 예제) CODING FACTORY (출처: https://www.codingfactory.net/10419) 2019. 3. 3. 80 layering 복습한 것 정리 Set은 Hash 값으로 비교를 함. 객체 같은 경우 hash 값이 따로 없기 때문에 toString 한 값으로 비교를 함.값으로 해석이 됨 (실제론 Set이 메모리의 주소로도 해석해줌, 하지만 안전하게 사용하려면 WeakSet 사용이 나음) WeakSet은 객체의 메모리를 값으로 인정함(키가 되거나 값이 되는 애들이 다 객체여야 함).메모리의 주소로 해석이 됨. WeakSet에는 Object 밖에 못 들어옴. aggregation : 내가 다른 여러 개의 객체를 소유하고 있는 것 네이티브와 인메모리는 구분되고 이 둘 간의 교환은 신속히 이뤄져야 함. 그렇지 않으면 코드 오염이 일어남 WeakMap : view 와 Model 간의 msg 를 주고 받는데msg -> Model 또는 msg -> Model .. 2019. 2. 26. 코드스피츠 80 layering 프로시저와 함수의 차이 프로시저 : 가리키는 데이터가 있다함수 : 인자나 지역변수를 데이터로 사용 프로시저의 단점 : 데이터의 변화와 데이터를 처리하는 함수의 변화가 동시에 이뤄지지 않는다 역할을 분리하는 법 중 가장 중요한 거 : 변화율 프로그램을 짜면서 염두해야 할 것은 - '복잡성을 최소화' 해서 '복잡성 폭발'이 일어나지 않게 하는 것. - '엔트로피 증가'를 줄이는 것. 추상화 하는 방법들 :[카테고라이징(두 개 이상의 카테고리에 소속된 데이터는 카테고리를 정해주는게 어려움), 모델링(기억해야 만 할것은 정리한 것, 유지보수가 힘들고 변화가 자주 일어난다), 그룹핑(그룹 지어주는 것. 클래스의 인스턴스를 만들어 사용하는 것고 그룹화의 일종)] 천재(폰 노이만, 튜링)들은 초기에 프로시저로만 구성.. 2019. 2. 19. 코드스피츠 80 디자인패턴 스터디 - 1 1. 도메인 - 의존성 (관련 있는 것들끼리 구분지을 수 있다! 고로 관리하기 쉬워짐)2. 네이티브영역 - 가변성 (네이티브영역 == (IO 영역) 과 인메모리 영역을 분리하는 것)3. 변화율 - 유지보수 (제일 중요, 각각이 바뀌는 이유에 따라 구분해라) 변화율로 나눌 코드를 파일로 분리했다고 생각파일이 변경되지 않도록 최대한 신경써본다, 만일 변경된다면 변화율에 맞지 않게 코드를 짠 것! 문구를 코드로 5초 안에 짤 수 있도록 훈련해라! getBlock => 네이티브를 인메모리로 바꿔주는 메소드 쉬운거 부터 짜라 이들은 의존성이 적기 때문에 앞뒤 영향이 적어 프로그램을 만들 때 편하다. 2019. 2. 12. 6주차 - MVPuser의 요구를 바로 수용할 수 있는 이점이 있으므로 MVP가 각광받고 있음화면구성을 MVP로 만들면 기민하게 요구에 대응할 수 있음, 굉장히 빠르다는 이점이 있음. MVP의 경우 VOprotocol, Commandprotocol 와 같은 인터페이스를 만들어서 사용 업계에서 Model을 공급하는 것을 Service 라 한다. Model에게 원본 데이터를 채우는 것 : Dispatcher View 노가다가 심해지지만 Presenter에 의존하지 않고 빨리빨리 화면을 그려낼 수 있음View를 VO화 시키는 것을 View가 가지고 있음 - MVVMNative의 내용을 추상화해서 View의 변화를 수신MVVM에선 양방향 바인딩이 일어난다(Angular 등)?의 setter에 반응해서 View의 변화가.. 2018. 12. 12. 이전 1 2 3 4 5 6 다음