Tiny Finger Point Hand With Heart
본문 바로가기
728x90
반응형

1일1CS53

43. 클린코드 와 리팩토링 나쁜 코드로 인해 발생하는 문제 다른 개발자가 읽기 힘듬 리팩토링 힘듬 의존성 심함 생산성 떨어짐 재설계 힘듬 이 문제들을 예방하기 위해 클린코드와 리팩토리에 대해 알아보자. # Clean Code란? "깨끗한 코드는 한 가지를 제대로 한다." - 비야네 스트롭스트룹 "깨끗한 코드는 절대로 설계자의 의도를 숨기지 않는다. 단순하고 직접적이다." - 그래디 부치 "코드를 읽으면서 짐작했던 기능을 각 루틴이 그대로 수행하는 코드" - 워드 커닝엄 "중복 줄이기, 표현력 높이기, 초반부터 간단한 추상화 고려하기, 내게는 이 세가지가 깨끗한 코드를 만드는 비결이다." - 론 제프리 "모든 팀원이 이해하기 쉽도록 작성한 코드" 반대로 나쁜 코드란, “대충 짰는데 돌아가는 코드”를 말한다. 코드를 짤 때 “대충 짜.. 2023. 1. 25.
42. NoSQL이랑 RDBMS의 특징과 차이점 Database와 DBMS 그리고 SQL Databse란 일반적으로 컴퓨터 시스템에 전자 방식으로 저장된 구조화된 정보 또는 데이터의 체계적인 집합을 의미한다. DBMS란(DataBase Management System) 사용자와 데이터베이스 사이에서 사용자의 요구에 따라 정보를 생성해 주고 데이터베이스를 관리해 주는 소프트웨어이다. SQL이란(Strucured Query Language) 관계형 데이터베이스 관리 시스템의 데이터를 관리하기 위해 설계된 특수 목적의 프로그래밍 언어이며 관계형 데이터베이스 관리 시스템에서 자료의 검색과 관리, 데이터베이스 스키마 생성과 수정, 데이터베이스 객체 접근 조정 관리를 위해 고안되다. RDBMS 위에서 DBMS는 사용자와 데이터베이스 사이에서 사용자의 요구에 따라.. 2023. 1. 20.
41. 앱의 종류: 네이티브 앱 vs 웹 앱 vs 하이브리드 앱 검색을 하다가 정말 정리가 잘된 사이트가 있어 가져왔다. https://blog.codef.io/ 개발 방식에 따라 나뉘는 세 가지 앱의 종류인 네이티브 앱, 웹 앱, 하이브리드 앱의 개념부터 장단점까지 알아보자. 모바일 기기에 최적화 된 “네이티브 앱(Native APP)” ‘네이티브 앱(Native APP)’이란 모바일 기기에 최적화된 네이티브 언어로 개발된 앱을 뜻한다. 국가별로 언어가 다르듯, 모바일 운영체제도 개발을 위해 각기 다른 언어를 사용해야 한다. 안드로이드 운영체제의 대표적인 네이티브 언어는 코틀린(Kotlin) 또는 자바(Java)이며, iOS는 스위프트(Swift) 또는 오브젝티브 C(Objective C)이다. 해당 언어를 기반으로 각 모바일의 운영체제에 딱 맞는 앱을 개발하면 그.. 2023. 1. 19.
40. [운영체제] 프로세스(Process)와 스레드(thread) 프로세스(Process)란? 프로세스는 실행 중인 프로그램(program)을 뜻한다. 운영체제로부터 자원을 할당 받는 작업의 단위. Active entity, 메모리에 적재되어 프로그램 카운터와 자원을 가진 인스턴스 프로그램은? 프로그램은 명령어들의 모음을 포함한 디스크에 저장된 파일이다. Passive entity, 명령어 리스트를 지닌 실행 파일 클래스 프로그램이 실행되면 이 프로그램의 명령어들과 데이터가 메모리에 적재되고 이것이 프로세스가 된다. 예를들면 컴퓨터를 켜고 디스코드에 들어가고, 구글과 vsc를 켜는 행위가 각각의 프로세스를 실행시키는 것. 프로세스의 메모리 구조 각 프로세스는 위 그림과 같은 구조를 갖는다. 각 영역은 다음과 같은 역할을 한다. Code 영역 : 프로그램을 실행시키는 실.. 2023. 1. 18.
39. [Database] ORM이란? 먼저 ORM을 알기 전에 영속성을 알아야 한다. 영속성(Persistence)이란? 데이터를 생성한 프로그램이 종료되더라도 사라지지 않는 데이터의 특성을 말한다. 영속성을 갖지 않는 데이터는 단지 메모리에서만 존재하기 때문에 프로그램을 종료하면 모두 잃어버리게 된다. Object Persistence(영구적인 객체) 메모리 상의 데이터를 파일 시스템, 관계형 데이터베이스 혹은 객체 데이터베이스 등을 활용하여 영구적으로 저장하여 영속성을 부여한다. 데이터를 데이터베이스에 저장하는 3가지 방법 1) JDBC (Java에서 사용) 2) Spring JDBC (Ex. JdbcTemplate) 3) Persistence Framework (Ex. Hibernate, MyBatis) Persistence Layer.. 2023. 1. 17.
38. 인터페이스와 추상클래스의 차이 추상 클래스(abstract class)란? 파이썬은 추상 클래스(abstract class)를 제공한다. 추상 클래스란 구현 내용이 없고 메소드 목록만 가진 클래스이며, 추상클래스 자체로는 인스턴스화가 불가능 하다. 추상 클래스는 클래스의 메소드를 상속 받는 파생 클래스에게 구현하도록 강제하기 위해 사용 된다. 추상클래스란 미구현 추상메소드를 한개 이상 가지며, 자식클래스에서 해당 추상 메소드를 반드시 구현하도록 강제한다. 상속받은 클래스는 추상메소드를 구현하지 않아도, import할 때까지 에러는 발생하지 않으나 객체를 생성할 시 에러가 발생한다. 추상클래스를 만들기 위한 형식은 아래와 같다. 반드시 abc 모듈을 import 해야다. 추상메소드는 생략하면 기본적인 클래스 기능은 동작합니다만, 추상메.. 2023. 1. 16.
37. 깃과 깃허브의 차이점 버전 관리가 필요한 이유 개발자 간의 협업을 위해 전체 개발 소스를 공유하면서 개발 파트를 나눌 수 있고 같은 모듈을 개발하더라도 소스를 공유하며 개발가능 > Git 오픈 소스 버전 관리 시스템(VCS: Version Control System) 로컬에서 버전 관리 소프트웨어 개발 및 소스 코드 관리에 사용 git은 본인의 코드와 그 수정내역을 기록하고 관리하도록 돕는 버전 관리 프로그램이며, 로컬에서 프로젝트의 기록을 스스로 관리할 수 있도록 해줍니다. git을 통해 브랜치를 생성하고 이전 브랜치로 복구, 삭제, 병합이 가능한다. 하지만 로컬 저장소를 사용하기 때문에 다른 개발자와 실시간으로 작업을 공유할 수 없다. > Github Git Repository를 위한 웹 기반 호스팅 서비스 클라우드 서버.. 2023. 1. 13.
36. Transaction과 ACID 트랜젝션 여러작업들을 하나로 묶은 단위. 한 덩어리의 작업들은 모두 실행되거나, 실행되지 않는다. (all-or-nothing) 트랜젝션이 왜 필요할까요? 예를 들면, A 은행 → B은행으로 돈을 보내기 위하여 출금하고 송금한다고 가정합니다. A은행에서 돈을 출금하고나서 B은행으로 송금하려고 하는데 갑자기 시스템이 멈추면 어떻게 될까요? 돈은 출금되었지만, 송금되지 않고 증발하게 되는 끔찍한 상황이 발생합니다. 트랜젝션은 이런 상황이 일어나지 않도록 보장해줍니다. 대부분의 데이터베이스는 송금이 되다가 마는 상황이 발생하지 않도록 여러가지 방법을 제공하지만, 공통적으로 제공하는 가장 기본적인 방법은 Transaction을 통하여 데이터의 유효성을 보장하는 것 입니다. 트랜잭션의 상태 활동 상태 트랜잭션이 .. 2023. 1. 12.
35. UDP/TCP 특징 및 차이점 전송계층은 프로토콜 내에서 송신자와 수신자를 연결하는 통신 서비스를 제공하는 계층인데, IP에 의해 전달되는 패킷의 오류를 검사하고 재전송 요구 등의 제어를 담당한다. 이러한 전송계층에서 사용되는 프로토콜이 바로 TCP와 UDP이다. TCP(Transmission Control Protocol) TCP는 신뢰성 있는 데이터 전송을 지원하는 연결 지향형 프로토콜이다. 일반적으로 TCP와 IP가 함께 사용되는데, IP가 데이터의 전송을 처리한다면 TCP는 패킷 추적 및 관리를 하게 된다. 연결 지향형인 TCP는 3-way handshaking이라는 과정을 통해 연결 후 통신을 시작하는데, 흐름 제어와 혼잡 제어를 지원하며 데이터의 순서를 보장한다. *흐름 제어: 보내는 측과 받는 측의 데이터 처리속도 차이를.. 2023. 1. 11.
728x90
반응형