적당한 고통은 희열이다

- 댄 브라운 '다빈치 코드' 중에서

반응형

컴퓨터시스템 27

네이밍 컨벤션 - camelCase, PascalCase, snake_case, kebab-case

Naming Conventions 대부분의 프로그래밍 언어에서는 각 단어를 완전히 별개로 해석하기 때문에, 여러 단어가 합쳐진 한 변수 내에 공백 문자가 있을 경우 단어마다 별개의 단일 단위로 처리가 된다. 따라서 두 단어 이상으로 변수명이나 클래스 명을 작성할 때는 공백을 제거하고, 단어를 단일 문자열로 결합하는 명명 규칙을 정해서 만든다. 프로그래밍 언어에서 자주 사용되는 명명 규칙들은 다음과 같다. 표기법 종류 camelCase PascalCase snake_case kebab-case camelCase (lower camel case) 첫 문자는 소문자로 시작하고, 띄어쓰기 대신 대문자로 단어를 구분한다. ex) phoneNumber, createdAt Swift에서 변수 및 상수 표기법 Pasc..

컴퓨터시스템 2022.09.14

동기화를 위한 방법들 Spinlock / Mutex / Semaphore

참고 : youtube - 쉬운코드 를 참고하여 정리한 것임 동기화 매커니즘 세 가지 - 스핀락 Spinlock - 뮤텍스 Mutex - 세마포 Semaphore race condition 경쟁 조건 : 여러 프로세스/스레드가 동시에 같은 데이터를 조작할 때, 타이밍이나 접근 순서에 따라 결과가 달라질 수 있는 상황 synchronization 동기화 : 여러 프로세스/스레드를 동시에 실행해도 공유 데이터의 일관성을 유지하는 것 critical section 임계 영역 : 공유 데이터의 일관성을 보장하기 위해 하나의 프로세스/스레드만 진입해서 실행(mutual exclusion) 가능한 영역 Spinlock mutual exclusion 을 위해 lock 을 가질 수 있을 때까지 반복해서 시도하는 방법 ..

컴퓨터시스템 2022.09.05

thread란? + 멀티쓰레드의 장단점

Process & Thread 프로세스 : 실행 중인 프로그램. 자원(resources. 메모리, CPU ...) + 쓰레드로 구성 쓰레드 : 프로세스 내에서 실제 작업을 수행. 모든 프로세스는 최소한 하나의 쓰레드를 가지고 있다. 프로세스 : 쓰레드 = 공장 : 일꾼 싱글 쓰레드 프로세스 = 자원 + 쓰레드 멀티 쓰레드 프로세스 = 자원 + 쓰레드 + 쓰레드 + ... + 쓰레드 여러 작업을 나눠 동시에 수행 가능. 보다 효율적으로 처리할 수 있다. 대부분의 프로그램은 멀티쓰레드로 작성되어 있다. 멀티쓰레드의 장단점 장점 - 시스템 자원을 보다 효율적으로 사용할 수 있따. - 사용자에 대한 응답성(responseness)이 향상된다. - 작업이 분리되어 코드가 간결해진다. 단점 프로그래밍할 때 고려해야..

컴퓨터시스템 2022.05.13

네트워크 기초

네트워크란? 노드들이 데이터를 공유할 수 있게 하는 디지털 전기통신망의 하나. 즉, 분산되어 있는 컴퓨터를 통신망으로 연결한 것. 서로 연결되어 있는 하나의 통신망 네트워크에서 여러 장치들은 노드 간 연결을 사용하여 서로에게 데이터를 교환한다. *노드 : 네트워크에 속한 컴퓨터 또는 통신 장비를 뜻하는 말 전 세계의 네트워크가 유기적으로 연결되어 동작하는 통합 네트워크가 바로 인터넷. (인터넷은 네트워크 망의 한 종류. 세상에서 가장 큰 네트워크 통신망) www (world wide web) 일반적으로 웹이라고 하며, 인터넷상에서 쉽게 정보를 찾을 수 있도록 고안된 세계적인 인터넷망으로, HTTP 프로토콜을 사용하기 위한 인터페이스 는 인터넷을 통해 웹과 관련된 데이터를 공유하는 것. 웹서비스 (http..

컴퓨터시스템 2022.01.06

[네트워크] 네트워크 패킷 분석 및 Wireshark 설치 (mac)

Wireshark 설치 및 http 네트워크 패킷 분석 방법 네트워크 패킷(packet) 이란? 네트워크를 통해 전송하기 쉽도록 자른 데이터의 전송단위. 패킷은 제어 정보와 사용자 데이터(페이로드)로 이루어진다. ex) IP 패킷은 헤더와 페이로드로 이루어진다. 페이로드 : 전송되는 실제 데이터. 전송의 근본적인 목적(필요한 정보)이 되는 데이터의 일부분. 함께 전송되는 헤더와 메타데이터 같은 데이터는 제외한 것. 프로토콜 오버헤드 : 네트워크를 통해 대상으로 라우팅되는 데이터와 함께 전송되어야 하는 정보. 올바른 대상에 도달하기 위해 전송중인 데이터에 추가로 보내지는 정보라고 볼 수 있다. 보통 패킷의 시작 부분, 헤더에 저장되어 Header라고도 함. 목적 : 정보 전송의 신뢰성 확보 및 시스템의 안..

컴퓨터시스템 2022.01.06

사용자 인증 방식 - OAuth, JSON Web Token(JWT)

HTTP 인증 사용자 인증 Authorization : 하나의 세션 동안 사용자의 신원을 확인하여 인증하는 것. 사용자 인증 방식 - 기본 인증 (ID/PW) - 토큰 인증 (OAuth, JWT) - 전자 서명 로그인은 사용자 인증의 한 방식일 뿐. 단순히 http 헤더에 사용자 계정정보(Id/pw)를 넣어 서버에서 식별하게 되면 제 3자에 의해 탈취당했을 때 개인정보가 드러나기 때문에 보안에 좋지 않은 방식이라 할 수 있다. 기본 인증 방식은 보안에 매우 취약한 구조이기 때문에 OAuth JWT 같은 다른 대안들이 떠오르고 있다. 쿠키와 세션 로그인 과정에서만 계정 정보를 서버에 직접 보내고, 그 후로는 세션과 쿠키를 활용하여 인증하는 방식. HTTPS는 Stateless, Connectionless라..

컴퓨터시스템 2021.12.31

low-level / high-level 프로그래밍 언어

고급 프로그래밍 언어 high-level programming language 사람이 이해하기 쉽게 작성된 프로그래밍 언어. 가독성이 높고 다루기 간단하다는 장점. 컴파일러나 인터프리터에 의해 low-level programming language로 번역되어 실행됨. C, 자바 등 대부분의 프로그래밍 언어는 고급언어에 속한다. 추상화의 정도에 따라 프로그래밍 언어의 high / low 레벨이 나뉨..? 저급 프로그래밍 언어 low-level programming language 컴퓨터가 이해하기 쉽게 작성된 프로그래밍 언어. (기계어, 어셈블리어) 실행속도가 매우 빠르지만 배우기 어렵고, 유지보수가 힘든 것이 단점 기계어(machine code) - 특별한 변환과정 없이 컴퓨터가 직접 처리할 수 있는 유..

컴퓨터시스템 2021.11.22

CRUD

CRUD란? 대부분의 컴퓨터 소프트웨어가 가지는 기본적인 데이터 처리 기능인 Create(생성), Read(읽기), Update(갱신), Delete(삭제)를 묶어서 일컫는 말. 사용자 인터페이스에서 새로운 정보를 추가 / 검색 / 편집 / 삭제 하는 기능을 가리키는 용어로도 사용된다. 다음과 같이 표준 SQL문으로 대응 가능하다 이름 조작 SQL Create 생성 INSERT Read(또는 Retrieve) 읽기 SELECT Update 갱신 UPDATE Delete 삭제 DELETE

컴퓨터시스템 2021.05.21
728x90
반응형