중첩 블록({})를 지양하는 코딩 스타일코드에서 중첩된 블록({})이 많아지면 가독성이 떨어지고 유지보수가 어려워집니다. 이를 방지하기 위해 Guard Clause Pattern을 사용하여 중첩을 줄이는 방식을 추천합니다.특징 및 장점가독성 향상: 중첩을 줄여 코드가 직관적이고 깔끔하게 보입니다.유지보수 용이: 조건을 만족하지 않을 경우 조기에 종료하여 추가적인 처리가 필요하지 않습니다.로직 흐름 단순화: 여러 if 문이 중첩되지 않아 조건 확인이 단순해집니다.나쁜 예: 중첩된 코드int myFunc(){ if (true == foo1()) { if (true == foo2()) { if (true == foo3()) { ..
C++ 요다 스타일 (Yoda Style)C++에서 요다 스타일(Yoda Style)은 조건문을 작성할 때 값이나 상수를 먼저 쓰는 방식으로, 스타워즈의 요다의 말투에서 영감을 받아 이름 붙여졌습니다.일반적인 조건문if (x == 42) { // 무언가를 수행}요다 스타일 조건문if (42 == x) { // 무언가를 수행}요다 스타일의 장점실수로 =(대입 연산자)를 사용하는 것을 방지할 수 있음컴파일 에러를 통해 잘못된 조건을 쉽게 찾을 수 있음예시:if (42 = x) { // 요다 스타일에서는 컴파일 에러 // 무언가를 수행}요다 스타일의 단점가독성이 낮아 처음 보는 사람에게는 읽기 어려움최신 컴파일러에서는 =와 == 혼동 시 경고를 제공함결론요다 스타일은 주로 과거 컴파일러의 제..
Thread와 싱글톤 상속의 문제점싱글톤과 Thread 클래스를 동시에 상속받는 것은 초기에는 코드가 간단해 보일 수 있지만, 실제로는 런타임 오류와 메모리 관리 문제를 일으킬 수 있는 설계상 큰 위험 요소입니다. 이 두 가지 상속의 문제점과 해결책을 정리해 보았습니다.문제점수명 관리 문제싱글톤 객체는 프로그램이 종료될 때까지 유지되지만, Thread 객체는 독립적으로 실행 및 종료되어야 합니다. 두 객체를 동시에 상속받을 경우, 싱글톤 객체의 수명이 Thread의 종료 타이밍에 영향을 미칠 수 있어 DLL 언로드나 프로그램 종료 시점에서 예기치 않은 문제가 발생할 수 있습니다.컴파일 타임 검증의 부재C++에서는 기본적으로 두 클래스를 상속받는 것에 대해 명시적인 제한이 없기 때문에, 개발자는 이러한 설..
**SNI (Server Name Indication)**는 클라이언트가 TLS 핸드셰이크 과정에서 서버에 접속할 때 요청하는 서버의 도메인 이름을 명시하는 TLS 확장 필드입니다.SNI는 주로 **하나의 IP 주소에 여러 도메인 이름(웹사이트)**을 호스팅하는 서버에서 사용됩니다. 이를 통해 클라이언트가 접속하려는 도메인 이름을 서버에 전달할 수 있어, 서버는 해당 요청에 맞는 올바른 SSL/TLS 인증서를 제공할 수 있습니다.SNI의 동작 방식:클라이언트가 서버에 연결을 요청할 때, TLS 핸드셰이크를 시작합니다.클라이언트는 Client Hello 메시지를 전송하며, 이 메시지에 SNI 확장 필드를 포함시켜 접속하고자 하는 도메인 이름(예: www.example.com)을 서버에 알려줍니다.서버는 해..
TLS 1.2 vs TLS 1.3 1. 핸드셰이크 과정 TLS 1.2: 핸드셰이크 과정에서 최대 2라운드 트립(Round Trip Time, RTT)이 필요합니다. TLS 1.3: 핸드셰이크가 1라운드 트립(RTT)으로 단축되어, 세션 설정이 더 빠르게 이루어집니다. 2. 암호화 알고리즘 TLS 1.2: 다양한 암호화 알고리즘을 지원하며, 일부 안전하지 않은 알고리즘도 포함되어 있습니다. TLS 1.3: 약한 암호화 알고리즘을 모두 제거하고, AES-GCM, ChaCha20-Poly1305와 같은 강력한 알고리즘만 지원합니다. 3. 암호 스위트 단순화 TLS 1.2: 복잡한 암호 스위트 구성..
C++ Thread Local Storage (TLS) and GetLastError 1. TLS 설명 C++에서 TLS (Thread Local Storage)는 각 스레드가 고유한 변수를 저장하고 접근할 수 있게 해주는 메커니즘입니다. TLS는 다중 스레드 환경에서 각 스레드가 서로 독립적으로 데이터를 저장할 수 있도록 도와줍니다. thread_local 키워드를 사용하여 각 스레드마다 별도의 변수를 선언할 수 있습니다. 스레드 간 경합을 피할 수 있으므로 동기화 없이 안전한 데이터 처리가 가능합니다. 2. TLS 예제 코드 #include #include thread_local int counter = 0;void..
- Total
- Today
- Yesterday
- effective
- 제주도
- 패턴
- script
- 성산블루버블
- 울릉도
- CMake
- 블루버블
- 암호화
- DLL
- 서귀포블루버블
- Windows
- C#
- PowerShell
- C++
- 네트워크 정보
- 외돌개
- C#.NET
- 블루버블다이빙팀
- C# 고급 기술
- 스쿠버 다이빙
- Linux
- 현포다이브
- Build
- 블루버블다이브팀
- OpenSource
- C
- Effective c++
- 서귀포
- 스쿠버다이빙
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |