728x90
반응형
<코드 리뷰>
- 소프트웨어를 실행하지 않고 잠재된 결함을 찾아 개선하고 소프트웨어의 품질을 높임
- 버그 헌팅이 아니라 소통하고 일상적으로 하는 배움을 주는 활동
- clean code와 sound design 유지
- 미래의 결함 비용 단축 가능, 테스트보다 효과적으로 결함 발견
- 건전한 소통으로 성장 촉진
- 물리적 허들, 심리적 허들(프로그래머의 자아, 공감대 형성)
- 사람이 아니라 코드를 비판해야 함
- 코드 작성 -> 리뷰 생성 -> 리뷰 진행 -> 리뷰 완료 -> 리뷰 종료
- 리더를 공략하고 약간은 강제적인 것이 빠른 정착
- 가볍게 -> 강요하지 마라, 온라인 리뷰가 효율적, knowledge sharing, 미리미리 하자, 작게 자주 하자
- 코드 작성 시 한 번에 하나의 작업만 수행, commit message에 반드시 이슈 트래커 이슈 번호를 기록, 표준 지키기
- 이슈 완성되기 전에 개발 중간에라도 리뷰 생성
- 리뷰어가 많다고 좋지는 않다. 보통 2 ~ 4명, 전문 리뷰어만 지정하는 건 좋지 않다.
- author에 리뷰를 자기가 읽는다 생각하고 달자, 리뷰 대상 코드만 리뷰하고 리뷰 시간은 30분 내외가 적당
- business logic, 스타일, 디자인 아키텍처, 테스트 코드 작성 여부, 재사용성, 확장성, 성능, 보안, 적절한 라이브러리 활용 등
- 코멘트는 최대한 친절하고 이유를 잘 설명한다.
- 일반적인 경우 리뷰에 ChangeSet 추가, Critical 한 경우 별도 이슈로 추출
- Author의 판단에 따라 리뷰 종료 가능
- 코드 리뷰의 좋은 현상: 코멘트 자연스러워짐, 코드 작성 시 신경, 리뷰 생성 수행 시간이 길어짐, 피드백받는 시간이 짧아짐, 리뷰 진행 시 불편한 점이 자주 리포팅
- 코드 리뷰의 나쁜 현상: 설명 없이 코드만 올림, comment의 답변 없음, 피드백받는 시간이 점점 길어진다, 리뷰를 모아서 한꺼번에 요청
- 코드 리뷰의 효과를 정량적으로 측정은 쉽지 않음, 리뷰 건수, 지행 시간 등 측정 가능한 지표들은 리뷰 도입 시 참조 용도로 활용 가능, 개발자 스스로 이점을 느낄 수 있다.
- 결함 발견 건수, 횟수 같은 건 측정하지 말자
<Django>
- 대부분 대규모 웹사이트는 서버의 코드를 사용해서 데이터를 동적으로 표현한다.
- HTTP 요청에는 리소스를 식별하는 url, method(리소스 가져오기, 삭제, 게시), post메서드에 의해 전송된 데이터, 관련 쿠기에 포함
- 웹서버는 클라이언트의 요청 메시지를 기다렸다가 응답 메시지로 웹브라우저에 응답함 -> 웹브라우저에 표시
- 정적 사이트: 특정 리소스가 요청될 때마다 서버에서 동일한 하드 코딩된 콘텐츠를 반환
- 동적 사이트: URL에 대해 다른 데이터 반환 가능, 요청정보를 처리하고 반환 즉 시간, 상황, 요청에 따라 다른 콘텐츠를 반환
- 동적 웹사이트는 서버에서 코드가 실행되는데 이를 ServerSide Programming이라고 한다.
- 서버의 역할: 정보의 효율적인 저장 및 전달, 맞춤형 사용자 경험, 콘텐츠에 대한 액세스 제어, 통신, 데이터 분석
- 웹 프레임 워크: 개발자는 일반적으로 웹 프레임워크를 사용하여 코드 작성, 개발 속도 높이고, 다양한 유형의 작업을 단순화함. 설계된 기능, 개체, 규칙 및 기타 코드 구성의 모음, HTTP 요청 및 응답으로 작업, 요청을 라우팅, 데이터에 쉽게 액세스, DB 액세스를 추상화하고 단순화, 데이터 렌더링
- 장고는 빠른 개발과 깔끔하고 실용적인 디자인을 장려하는 python 프레임워크(동적 기반) - 구글 앱 엔진 프리 및 오픈소스 (이베이, 워싱턴 포스트)
- Model View Templates 패턴, 웹 관리자 제공, 코드 중복을 피해 HTML 템플릿을 정의(DRY 원리), URL(느슨하게 결합), HTML에서 비즈니스 로직 분리 가능, 파이썬을 이용한다.
- Model: 데이터 구조 & DB 스키마, View: 사용자에게 보이는 화면 Control, Templates: 사용자에게 보여지는 화면, Controller: 장고 프레임워크, URL 파싱
- URL은 HTTP 요청을 적절한 View로 리다이렉팅 시킨다.
- View는 HTTP 요청을 수신하고 모델에서 필요한 데이터를 Access 해서 Template에 응답 형식을 위임
- Model은 애플리케이션 데이터 구조를 정의하고 데이터베이스의 레코드를 관리 및 쿼리 하는 메커니즘을 제공
- Template는 실제 콘텐츠를 나타낸다. HTML을 비롯한 프런트단의 역할을 한다.
- model을 import 해서 DB 검색을 위한 쿼리 API를 제공
- render 함수를 통해 템플릿을 렌더링 해서 실제로 사용자에게 보여주는 기능을 제공
- manage.py runserver을 이용해서 서버 실행
- 장고의 기본 DB 구성은 SQLite이다.
- manage.py makemigrations을 실행하여 장고에 반영된 변경 사항을 저장, manage.py migrate를 실행시켜서 서버에 반영한다.
- manage.py shell을 통해서 데이터베이스 api 탐색 가능
- admin으로 장고 관리자 페이지 접속 가능
- view의 각 기능들은 Python 기반의 클래스 혹은 함수로 표현이 된다.
- 장고는 요청된 url을 검사하여 view를 선택한다.
- URLconfs는 URL 패턴을 보기에 맵핑한다.
- urls.py에 path로 모듈 연결
- get_object_or_404는 get()을 사용해서 객체가 존재하면 객체를 불러오고 그렇지 않으면 http404 오류를 반환한다.
- 코드가 적을수록 보기 좋다.
<UI>
- 인간과 컴퓨터 사이의 효과적인 커뮤니케이션 매체
- 위를 원칙으로 프로토타입의 기초를 형성하는 화면 레이아웃을 생성
- 일관성, 직관적으로, 우호적으로, 친절해야 함
- 만델의 3가지 황금률(사용자의 제어, 사용자의 메모리 부하 감소, 일관성 있는 인터페이스 )
- 사용자에게 불필요한 동작을 강제하지 않는 ui 모드 정의(맞춤법 검사, 유연하 상호 검색, 자동 저장, 실행 취소, 다시 실행)
- 기술 수준 향상에 따른 상호작용 간소화
- 사용자의 메모리 부하 줄이기(단기 기억에 대한 수요 감소, 시각적 레이아웃, 단계적 정보 공개)
- 창 제목, 그래픽 아이콘, 일관된 색상 사용 등
- 대화 디자인의 8가지 황금률(일관성, 종료를 위한 대화 상자, 간단한 오류처리, 손쉬운 작업 반전, 내부 제어, 단기 기억 부하 감소)
- 오류 처리(사용자가 이해할 수 있는 언어로 설명, 조언 제공, 부정적 결과, 시각적 or 청각적 신호와 메시지)
- 도움말 기능 포함
- 사용자 유형, 시스템 유형 및 사용자 요구 사항에 맞게 상호 작용 제공
- Flutter 크로스 플랫폼으로 구글에서 개발, 단일 코드 베이스로 ios, 안드로이드 사용 가능
- flutter는 dart언어를 네이티브 언어로 컴파일한다, 웹 표준 기반의 기술을 지원하여 웹 콘텐츠 생성, 리액트 네이티브는 javascript 그 자체를 실행함 flutter가 성능이 더 낫다, 외부 타사 라이브러리 사용 가능, 빠른 개발을 위해 핫 리로드 사용
- flutter는 고품질, 고성능 모바일 애플리케이션, 반응형 프로그래밍
- google developers codelabs 사이트에서 추가 진행 가능
728x90
반응형
'Computer Science > 기타' 카테고리의 다른 글
(주)「윈스」 인턴십 합격 후기 & 코딩테스트 후기 (4) | 2022.12.15 |
---|---|
기술 면접 질문 모음 (0) | 2022.12.10 |
로봇공학 정리 - 2(Robot Motion Planning [BFS, DFS, A*, DP], Path Smoothing, PID) (0) | 2022.11.03 |
로봇공학 정리 - 1(베이즈 정리, 베이즈 필터, Particle 필터) (0) | 2022.11.03 |
네이버 부스트캠프 AI Tech 4기 1차 코딩테스트 후기 (0) | 2022.08.12 |