CS

    [Refactoring] Chapter4를 Swift로 따라해보기

    안녕하세요 코찐입니다. 패스트캠퍼스에서 진행하는 리팩토링 완독반 수강하고 있습니다. 매주 가이드 영상이 올라오는데 내용이 마음에 들지 않아서 책 내용을 swift로 포팅하면서 직접 해보기로 했습니다. github.com/cozzin/Refactoring cozzin/Refactoring Contribute to cozzin/Refactoring development by creating an account on GitHub. github.com 자바스크립트는 동적 타입을 사용하고 있어서 클래스를 json으로 생성하기 편하게 되어있습니다. Swift에서는 조금 불편하게 되어 있습니다. JSON을 Decodable 통해서 객체로 변환시키는 작업을 했습니다. final class Producer: Decoda..

    [Refactoring] Chapter 4. 테스트 구축하기

    오늘은 리팩토링 챕터 4 테스트 구축하기를 읽어보겠습니다. 책을 지금까지만 읽어도 테스트 코드가 리팩토링에 중요한 요소인 것을 알 수 있습니다. 리팩토링을 하는 것은 겉보기 동작은 그대로 유지한 채 내부의 구현을 개선하는 작업입니다. 동작이 동일하다는 것을 검증할 수 있다면 훨씬 더 자신있게 내부 구현을 수정할 수 있습니다. 리팩토링에 대한 열망은 항상 있으나, 자신있게 진행했던 적은 많지 않았습니다. 항상 변경에 대한 두려움을 가지고 있었고 잘 작동하는 코드를 굳이 개선할 필요는 없다는 의견에 꽤나 마음이 쏠려 있었습니다. 이번 챕터를 읽으면서 두려움을 지루함으로 바꾸는 계기가 되면 좋겠습니다. 1. 자가 테스트 코드의 가치 실제로 코드를 설계하는 시간 보다 디버깅 하는 시간이 훨씬 더 많이 소요됩니다..

    [Refactoring] Chapter 3 요약: 코드에서 나는 악취

    이번엔 리팩토링 챕터3 부분을 읽어보겠습니다! 저자는 프로그래밍 미학이라는 모호한 개념보다 악취라는 표현이 낫다고 표현함. 악취가 나는 코드도 패턴이 있음 1. 기이한 이름 이름만 보고도 각각이 무슨 일을 하고 어떻게 사용해야하는지 명확히 알 수 있도록 엄청나게 신경 써서 이름을 지어야 한다. 네이밍이 프로그래밍 활동의 많은 부분을 차지하는 것을 알고 있었지만, 경험이 많은 개발자들도 동일한 어려움을 겪는다는 사실에 조금 위로가 되기도 함... 마땅한 이름이 떠오르지 않는다면 설계에 더 근본적인 문제가 숨어 있을 가능성이 높다. 이 문장은 새로웠음! 아무리 노력해도 적당한 이름이 나오지 않는다면 설계가 잘못되지 않았나 돌아보는 것도 좋은 방법. 적절한 관심사 분리를 해야 좋은 이름도 지을 수 있을 것 같..

    [Refactoring] Chapter2 과제

    cozzin.github.io/2021/04/11/RefactoringStudy1-2.html github 블로그에 작성했던 내용을 가져왔습니다. 리팩토링에 대해 어느정도는 들어본 내용이었지만 책을 읽어보니 좀 더 개념이 정리되는 것 같아서 뿌듯했습니다. 과제를 제출해야 환급되는 구조라서 열심히하게 되네요ㅋㅋ 분량을 채우기 위해 일부러 많이 작성한 부분도 있지만 기록을 위해 남겨둡니다. 1. YAGNI에 대하여 서술하세요 YAGNI는 “you aren’t going to need it”의 줄임말 입니다. 미래에 추가될지도 모르는 스펙을 위해서 미리 추가적인 기능이나 인터페이스를 만들어 두지 말자는 취지의 말입니다. 이렇게 설계하는 방식을 간결한 설계, 점진적 설계라고 한다고 저자는 설명합니다. 현재 주어..

    [Refactoring] Chapter2 요약

    cozzin.github.io/2021/04/05/RefactoringStudy1.html 여기에 정리했던 내용 옮겨왔습니다. 패스트캠퍼스 리팩터링 완독반을 신청해서 스터디를 시작했습니다. 환급반이라서 책을 읽어야 돈을 잃지 않는 구조 입니다. 공부할 것들이 너무 많아서 스터디를 미루기 쉬운데, 이렇게 해서라도 동기부여를 할 수 있을 것 같아서 신청했습니다. 스터디 설명 리팩터링 2판 자바스크립트로 예시가 되어 있음 리팩터링 패러다임은 언어를 초월하여 의미가 있음 그러나 실제 활용은 언어에 귀속됨 배워서 어디에 써먹을까? 리팩터링이 필요한 이유를 설득할 수 있음 책 한권 읽는다고 설득할 수 있는 것은 아님 적어도 물꼬는 틔워줄 수 있음 리팩터링 중 발생하는 고민을 일정량 줄일 수 있다. 간결한 코드가 좋..

    [OS] 3. 고등운영체제, 인터럽트 기반 운영체제: 최근의 고급운영체제, 인터럽트에 기반한 현대 운영체제

    안녕하세요 코찐입니다. 이번에는 고등운영체제에 대한 수업을 듣고 정리하겠습니다. http://www.kocw.net/home/search/kemView.do?kemId=978503 보면서 정리하고 있습니다. 학부내용에서는 중요한 내용은 아니지만, 운영체제가 앞으로 어떤 방향으로 전개될지 알아두면 좋다고 합니다. 대학원 수준에서 고등 운영체제 학습할 수 있습니다. 0. 기본 폰 노이만 구조 1. 다중 프로세서 시스템 (Multiprocessor system) CPU(Processor)가 여러개 있는 시스템 병렬 시스템 강 결합 시스템: 하나의 메모리에 CPU가 여러개 붙어있음 장점 1. 퍼포먼스: 일꾼이 여러명. 더 많은 일을 할 수 있음 2. 비용: 저렴한 CPU 여러개를 두는게 더 저렴 3. 신뢰성: ..

    [OS] 2. 운영체제 역사: 일괄처리부터 시분할시스템까지 운영체제 변천 역사

    http://www.kocw.net/home/search/kemView.do?kemId=978503 강의를 듣고 있습니다 아직까지는 OS 개론에 대한 얘기 1. No O/S 1940 년대말 천공카드 -> 컴파일러 -> 프린터 컴퓨터를 운영하는 직업이 따로 있었음: Operator OS가 없었음 불편했음 2. Batch Processing 일련의 작업들을 메모리에 넣어주자. Operator가 하는 수고를 줄이도록 하자. Complie -> Linking -> Load: 오... 이 개념은 아직까지도 유효하네 Resident monitor: 최초의 운영체제 메모리에는 OS랑 하나의 User program이 들어가 있었음 그 때 발생한 문제 😤 CPU 사용 -> I/O 사용. I/O 사용 중에는 Idle 상태..

    [OS] 1. 운영체제 서론: 운영체제의 정의와 역할

    http://www.kocw.net/home/search/kemView.do?kemId=978503 진짜 차분하게 설명해주십니다. 중간에 어원과 비유가 집중에 도움이 되더라구요. 시험이 없는 수업을 들으니 재밌네요 OS가 없는 PC는 야생마 같은 상태 🐴 메모리 에 일단 명령들을 불러와야 함 명령 들의 집합을 프로그램이라고 함 프로세서에서 명령어를 가져와서 실행하려고 해도 어떤걸 실행해야 할지 모름 운영체제가 필요함 하드디스크를 뒤져서 우리가 실행하고 싶은 파일을 메모리에 올려줘야 함 프로세서는 하나애 프로그램 여러개를 동시에 실행 시키는 것을 가능하게 해줌 문서 작업 후 파일을 하드디스크에 저장해 줌 운영체제가 없으면 컴퓨터는 말그대로 폭주. 전혀 제어가 안됨 편의성을 제공: 어린아이도 컴퓨터를 조작할..