CS

·CS
기본적인 개념좋은 설계를 위한 객채 지향 원칙 묶음이다. 그저 원칙이기 때문에 OOP(객체 지향 프로그래밍)을 지원하는 모든 언어에 원칙을 적용 가능하다. 각 원칙은 따로 적용해야 하는 순서는 없고, 서로 다른 문제를 해결하기 위해 만든 원칙이기 때문에 문제가 없다면 원칙을 억지로 적용할 이유도 없다.좋은 설계란?코드를 확장하고, 유지보수 관리하기 쉬운 구조복잡성을 제거해 가독성이 좋고, 리팩토링이 쉬운 구조그럼으로, 새로운 요구사항이나 변경사항이 있을 때 영향을 받는 범위가 적고, 개발 생산성이 높은 구조(좋은 설계란 이야기할 거리가 많은 주제입니다. 위 내용을 좋은 설계에 대한 개인적인 의견으로 받아들여 주시면 감사하겠습니다.)SRP (Single Responsibility Principle) - 단..
·CS
c언어의 컴파일 과정에 대해 Run 버튼만 누르면 알아서 해줘서 딱히 생각이 없다가 강의를 들으면서, "원리도 모르고 쓰고 있었네?" 라는 생각이 씨게 와서 글로 남기게 됐다. 과정 0. 시작 파일 : hello.c 1. 전처리 : hello.i 수행은 전처리기가 한다. gcc(gnu compiler collection)을 이용해서 확인 가능하다. 명령어 : gcc -E hello.c -o hello.i 보통 컴파일이 책을 통으로 번역하는 작업이라 한다. 그런 관점에서 전처리는 책을 번역하기 전에 책에서 인용한 참조 문서들을 가져오는 작업이라고 할 수 있겠다. 가져오기만 하고 번역은 하기 전이다. 즉, 전처리의 결과는 아직 소스코드인 상태다. 수행 작업 파일을 읽고 외부에 선언된 다양한 소스코드,라이브러..
·CS
먼저 파일이란? 컴퓨터가 저장하고 있는 데이터라고 할 수 있다. 소켓도 파일이라고 볼 수 있다. 그리고 프로토콜이란? 정보처리기사 내용 구문, 의미, 타이밍으로 구성 데이터를 안전하게 주고 받기 위한 약속 구문 : 패킷의 데이터 구조를 어떤 구조로 만들지 약속하는 것, 프로토콜마다 다른 구조를 가지고 있다. (소켓을 이해하는데 이 부분만 있으면 될 것 같다.) 그럼 패킷은 또 뭔가 바로 소켓이라는 파일에 적히는 데이터의 형태, 즉 소켓에 담기는 데이터가 되겠다. 소켓의 형태는 위에서 설명한 프로토콜의 종류에 따라 정해진다. 마침내 소켓이란? 패킷을 담는 파일이자, 통신에 사용되는 파일, 통신에 필요한 데이터를 담는 파일 되시겠다. 서로 다른 두 컴퓨터가 있다고 가정해보자 그들은 각자 고유의 ip를 가지고..
·CS
구분선 전까지는 본 내용에 들어가기에 앞서 알고 있으면 이해하는데 도움이 될 만한 내용을 먼저 설명이다. 알고 있으면 복습겸 한번 슥 읽고 넘어가자. ASCII란? American Standard Code for Information Interchange의 약자 알파벳, 숫자, 특수 문자에 고유의 숫자를 부여한 코드표로 7Bit 조합이라 128개의 문자를 표현한다. 1byte( = 8Bit ) 에서 첫 비트는 부호로 쓰고 나머지 7Bit으로 ASCII Table에 있는 모든 알파벳, 숫자, 특수 문자를 표현할 수 있다. UTF란? Universal Coded Character Set + Transformation Format의 약자 ASCII로는 세상에 존재하는 여러 언어를 표현할 수 없어서 만든 문자표..
·CS
API개념을 공부하기 위해 자료를 찾아봤는데, 많은 자료에서 API는 메뉴판이라는 비유로 설명을 하고 있었다. 메뉴판이라는 비유가 API라는 개념에 처음 접근하기에 친숙하고 가벼우면서도, 뭔가 개인적으로는 머리에 막 와닿지는 않았다. 이참에 많이 알려진 설명들에 내가 공부하면서 이해한 내용을 추가해서 정리해보려 한다. API란? 사전적인 정의 서로 다른 프로그램들 사이에서 데이터를 주고받기 위한 방법 , 애필리케이션에서 데이터를 읽거나 쓰기 위해 사용하는 인터페이스 설명 식당가서 요리사한테 , “ 야채 썰고 , 기름에 넣어서 야채기름 낸 다음 , 고기 썰어서 같이 볶고 , 마지막으로 밥 넣고 볶아서 가져와주세요” 라고 하진 않는다. 그냥 [메뉴판]을 보고 종업원에게 “[볶음밥] 주세요” 하지 여기서 [메..
·CS
일단 추상클래스와 인터페이스는 추상메서드 없이는 설명이 불가능하기 때문에 추상메서드 먼저 살펴보자. 추상메서드란? 메서드는 선언부와 구현부로 나뉘는데 , 메서드들 중에서 선언부까지만 작성하고 구현부는 작성하지 않은 메소드를 추상메서드라고 한다. abstract를 메서드 앞에 붙여서 (정확히는 접근 제어자 앞이나 뒤에 붙여서) 추상메서드임을 명시한다. 추상메서드를 가진 클래스는 반드시 추상클래스여야 한다. 추상메서드는 구현부 즉 실행 코드가 없어서 추상메서드를 가진 클래스(추상클래스)는 인스턴스를 만들 수 없다. 추상클래스란? 구조적으로는 일반 클래스와 큰 차이는 없다. 똑같이 일반 필드 , 일반 메서드를 가질 수 있다. 차이점은 추상메서드를 가지고 있다는 것이다. abstract를 class 앞에 붙여서..
·CS
함수형 프로그래밍(Functional Programming)이란? 자료를 찾아보면서 이해하기 가장 좋았던 예시는 파이프라인이었다. 아래는 설명 전 이해를 돕기 위해한 자료로 , 내가 생각하는 함수형 프로그래밍의 기본 틀을 그림으로 표현한 것과 이미지이다. 개념 설명 파이프라인( 코딩에서는 함수 )은 input을 넣으면 input에 고정된 output을 내보낸다. 그림에서 보이다시피 외부에서는 파이프라인 안에 접근할 수도 볼 수도 없다. 마찬가지로 파이프라인 안에서도 외부에 접근하거나 볼 수 없다. 함수형 프로그래밍은 이런 파이프라인들( 함수들 )을 묶고 연결해서 프로그램을 만들어가는 프로그래밍 패러다임을 말한다. 함수형 프로그래밍의 특징 순수함수 = 함수에서 외부의 상태값을 참조하거나 외부의 상태를 변경..
·CS
DI 방법들을 알아보기에 앞서 먼저 @Autowired 어노테이션이 무엇인지 알아볼 필요가 있다. @Autowired는 사용된 위치의 변수 및 메서드에 필요한(의존하는) bean(스프링 빈)의 인스턴스를 IoC container에서 찾아 주입하는 역할을 한다. 쉽게 말해 스프링에서 의존관계 주입(DI)을 할 때 사용되는 어노테이션(Annotation)이다. 주의사항 : @Autowired는 의존 객체의 타입에 해당하는 bean을 찾아 주입한다. 그렇기 때문에 해당 타입의 bean이 없는 경우 작동하지 않는다. 또한 같은 이름의 bean이 여러 개일 경우도 있다.그럴 때는 @Primary 나 @ Qualifier(bean id) 등을 이용해서 해결할 수 있다. @Autowired 어노테이션은 기본적으로 생..
forrest13
'CS' 카테고리의 글 목록