본문 바로가기

CS공부

(10)
우아한테크세미나 코드리뷰편을 보고 난 후 느낀점 이번에 새롭게 회사를 이직하게되면서 1인 개발이 아닌 팀단위 iOS 개발 프로젝트를 참여하게 될 예정이였기에 기존에 코드리뷰를 해본 경험이 적은 나는 새로운 팀에가서 빠르게 적응을 하기위해 코드리뷰에 대해 찾아보고 있었고 그러던 와중 우아한 테크 세미나에 코드리뷰편을 진행한다는 소식을 듣고 온라인으로 풀로 시청을 하며 코드리뷰에 자세히 알 수 있었다. 전체적인 내용을 적으면서 내가 느낀점을 적겠습니다. 좋은 설계를 유지해야 생산성을 만들 수 있다. 더보기 리팩토링 2판을 읽고있는데 해당책의 저자가 했던 말과 동일한 이야기를 시작으로 세미나가 시작이 되었다. 공학의 특성은? 공학 = 설계 + 빌드 설계 : 예측하기 어렵고 , 급여가 비싸고 창의적인 사람들이 필요 빌드 : 좀 더 예측하기 쉬움 설계와 빌드가..
Git Flow 협업하기 어제는 배달의민족 "코드리뷰"에 관한 세미나가 있어 시청하고 후기를 작성하느라 GitFlow를 공부만 하다가 멈췄다. 그럼 이제 실제로 더미 프로젝트를 만들어서 만들고 합치고 지지고 복고를 시작해볼려고한다. 자 우선 깃레포를 만들고 거기에 프로젝트를 넣어준다(이 부분은 너무 쉽기에 설명은 패스...) 그리고 바로 add , commit , push 하지 말고 .gitignore , .gitattributes 설정해주고 들어갑니다 gitignore에는 기본적으로 무시해야할것들을 추가해주기 위해 # Created by https://www.gitignore.io/api/xcode,swift,cocoapods # Edit at https://www.gitignore.io/?templates=xcode,swif..
팀단위 개발 준비하기 - Git Flow 이해 Vincent Driessen가 만든 Git으로 브랜치를 나눠 개발하는 방식 중 하나입니다. 특징은 5종류의 브랜치를 이용하여 저장소를 운영하게 됩니다. 5종류의 브랜치는 아래와 같습니다. Master(main) Release Develop Feature Hotfix 1. Master 가장 먼저 master 브랜치는 실제 제품으로 출시되고 운영되는 브랜치를 의미합니다. 여러 개발자들이 만든 기능을 합치고 테스트를 거쳐 이상이 없는지 확인합니다. 2. Release master 브랜치에 통합하기 전에 완성된 기능을 테스트 하는 브랜치를 의미합니다. 보통 제품으로 출시되기 전의 버전을 관리합니다. 3. Develop 여러 엔지니어들이 개발한 기능들을 통합해 놓은 브랜치를 의미합니다. 다음 버전을 대비하기 위..
가상 메소드 테이블(Virtual method table) 가상 메소드 테이블이란? 가상 메소드 테이블은 동적 디스패치를 지원하기 위해 프로그래밍 언어에서 사용되는 메커니즘이다. 클래스가 가상 함수을 정의할 때마다, 대부분의 컴파일러들은 클래스에 숨겨진 멤버 변수를 추가하는데, 이것은 함수들에 대한 포인터들의 배열들을 가리킨다 이 부분을 이해하기위해 클래스에 함수가 동작하는 메모리 방식을 이해해야하는데 제가 그림툴을 잘 못써서 직접 적어서 보여드리면 그냥 주저리 주저리 설명을 드리면 클래스를 상속받은 변수 A에서 test라는 함수를 실행을 시키게되면 데이터영역에 클래스의 함수를 찾아가고 그 함수는 코드영역의 메모리 주소값을 찾아가 코드를 실행시키는 과정이 일어난다. 자세한 설명이 필요하다면 다른자료 or 앨런님의 강의를...! 그럼 본론으로 돌아가 가상 함수 테..
Restful API 에서 Rest는 뭐의 줄임말일까? https://tibetsandfox.tistory.com/19 REST(Representational State Transfer)란? REST란? REST는 Representational State Transfer의 줄임말로 애플리케이션 개발의 *아키텍처 중 하나입니다. (*아키텍처 : 애플리케이션을 설계, 제작하는데 사용하는 패턴과 기술의 총칭) 직역하자면 '대표 tibetsandfox.tistory.com https://www.redhat.com/ko/topics/api/what-is-a-rest-api REST API(RESTful API, 레스트풀 API)란 - 서버, 구현, 사용법 REST API(RESTful API)란 REST 아키텍처의 제약 조건을 준수하는 애플리케이션 프로그래밍 인터페이..
프레임워크와 라이브러리 차이점 프레임워크 특징 정해진 규칙을 개발자가 따라야한다 제어의 역전 (Inversion of Control) 이 일어난다. 개발을 편하게 하기 위해 사용한다 -> ex) UIKit 라이브러리 특징 개발자가 코드를 제어할 수 있다.(언제 요청하고 , 응답받고 , 처리할 지 모두 주체가 결정한다.) 라이브러리는 개발자가 개발하는데 필요한 것 들을 모아둔것 단순 활용가능한 도구들의 집합을 이야기한다. -> ex) Alamofire 개념적으로 보았을때 둘의 가장 큰 차이는 엄청 심플하다 누가 누구를 컨트롤 하는가? 내가 코드를 컨트롤하냐? -> 라이브러리 누군가 만든 규칙을 따르냐 -> 프레임워크
객체지향 프로그래밍 OOP (3) 드디어 객체지향 프로그래밍 3번째 글을 쓸 시간이 왔습니다 ㅜㅜ 한동안 개발과제 처리한다고 너무 바빠서 따로 공부한것을 글을 정리할 시간이 부족해 꽤 시간이 지난뒤 OOP에 대한 글을 마저 쓰게된다. 지금까지 공부했던것을 잠깐 정리하자면 절차지향 프로그래밍 -> 객체지향 프로그래밍으로 프로그래밍이 발전되어왔고 객체지향 프로그래밍에서 상당히 오랜시간 상속이 중요한 키워드로 학습이 이뤄졌지만 요즘은 상속보다는 추상화쪽에 좀 더 각광을 받는다고한다. 그리고 객체지향프로그밍의 특징중하나가 정보의 은닉화인데 개발자가 원하는대로 접근제어 연산자를 통해 외부에서의 접근을 막을수있고 Swift에서는 open public internal fileprivate private 순으로 컨트롤 할 수 있다. OOP를 공부하게 ..
객체지향 프로그래밍 OOP (2) https://coding-rengar.tistory.com/27 객체지향 프로그래밍 OOP 코딩을 배우고 , 여러가지 지식을 배우면서 엄청 많이 들어본 단어 OOP (객체지향) 분명 객체지향을 공부했지만 남들에게 객체지향을 설명해봐!라고 하면 원활한 설명을 하지 못하는 게 내 현실 coding-rengar.tistory.com 객체지향 프로그래밍을 다시 공부한지 벌써 3일 정도 소요가 되었고 지금의 속도로 공부를 한다면 최소 일요일? 정도는 되야 블로그 글을 전부다 작성 할 수 있을 것 같지만 개인 이슈가 생겨 OOP공부 할 시간이 줄어들어 생각보다 더 오랜 시간동안 공부가 진행 될것같다. 우선 지난번에 마무리 하지 못한 캡슐화부터 시작할려고한다. Encapsulation (캡슐화) 객체의 속성(dat..