지금까지 Go의 철학, 문법, 에러 처리, 동시성을 살펴봤다. 이제 실제 프로젝트를 시작하는 데 필요한 것들을 다룬다. Maven/Gradle에서 Go Modules로, JUnit에서 testing 패키지로, Spring에서 Go 라이브러리 조합으로 전환하는 방법을 알아보자.
Posts for: #Guide
Java to Go: #4. 동시성: Goroutine과 Channel
Go의 동시성 모델은 Java와 근본적으로 다르다. Thread, synchronized, ExecutorService에 익숙한 개발자라면 처음엔 낯설겠지만, Go의 방식이 얼마나 우아한지 금방 알게 될 것이다. “공유 메모리로 통신하지 말고, 통신으로 메모리를 공유하라"는 Go의 철학을 이해해보자.
Java to Go: #3. 에러 처리와 Null 안전성
Java 개발자가 Go를 배울 때 가장 큰 패러다임 전환이 필요한 부분이 에러 처리다. try-catch에 익숙한 우리에게 if err != nil의 반복은 처음엔 원시적으로 느껴진다. 하지만 이 방식에는 명확한 철학이 있다. 이번 편에서 그 철학을 이해하고, Go 방식의 에러 처리에 익숙해져 보자.
Java to Go: #2. 문법 전환 가이드: Java 코드를 Go로 옮기기
Part 1에서 Go의 철학과 언제 Go를 선택해야 하는지 살펴봤다. 이제 실제 코드 레벨에서 Java와 Go가 어떻게 다른지 1:1로 비교해보자. Java 문법에 익숙한 개발자가 Go 코드를 읽고 쓸 수 있도록 핵심 차이점을 정리한다.
Java to Go: #1. Go 첫인상: 철학과 패러다임의 차이
Java를 수년간 써온 개발자가 Go를 처음 접하면 당혹스럽다. “왜 이렇게 만들었지?“라는 생각이 끊이지 않는다. 이 글에서는 Go의 설계 철학을 이해하고, Java에서 Go로의 전환이 언제 적절한지 판단할 수 있는 기준을 제시한다.
Go to Rust: #10. 프로젝트 관리와 실전 패턴
이 마지막 섹션에서는 실제 Rust 프로젝트를 구성하고 관리하는 방법을 학습합니다. Cargo 심화, 모듈 시스템, 테스트, 그리고 Go 코드를 Rust로 포팅할 때 유용한 패턴들을 다룹니다.
Go to Rust: #9. 비동기 프로그래밍
Rust의 async/await 는 Go의 goroutine과 근본적으로 다른 접근 방식입니다. Go는 런타임이 모든 것을 관리하지만, Rust는 명시적인 비동기 모델을 사용합니다. 이 섹션에서는 Rust의 비동기 생태계와 Tokio 런타임을 학습합니다.
Go to Rust: #8. 동시성 프로그래밍
Rust의 “Fearless Concurrency” 는 컴파일 타임에 데이터 레이스를 방지합니다. Go의 고루틴과 채널에 익숙하다면, Rust의 동시성 모델이 어떻게 다른지 이해하는 것이 중요합니다.
Go to Rust: #7. 컬렉션과 이터레이터
Rust의 컬렉션은 Go와 유사한 기능을 제공하지만, 소유권 시스템과 결합되어 더 안전합니다. 특히 이터레이터 시스템은 Go의 range 보다 훨씬 강력하며, 함수형 프로그래밍 스타일을 지원합니다.
Go to Rust: #6. 에러 처리
Rust의 에러 처리는 Go와 철학적으로 유사합니다. 두 언어 모두 예외(exception)를 사용하지 않고 명시적인 에러 반환을 선호합니다. 하지만 Rust는 타입 시스템을 통해 에러 처리를 강제하여, Go에서 흔히 발생하는 “에러 무시” 문제를 원천 차단합니다.
Go to Rust: #5. 트레이트와 제네릭
트레이트(Trait)는 Rust의 다형성 메커니즘입니다. Go의 인터페이스와 비슷한 역할을 하지만, 구현 방식과 기능에서 큰 차이가 있습니다. 이 섹션에서는 트레이트와 제네릭을 Go와 비교하며 깊이 있게 학습합니다.
Go to Rust: #4. 구조체, 열거형, 패턴 매칭
이 섹션에서는 Rust에서 데이터를 구조화하는 방법을 학습합니다. Go 개발자에게 구조체는 익숙하겠지만, Rust의 열거형(enum)은 Go의 const / iota 보다 훨씬 강력하며, 패턴 매칭은 switch 문을 완전히 새로운 수준으로 끌어올립니다.
Go to Rust: #3. 소유권과 빌림 (Ownership & Borrowing)
소유권(Ownership)은 Rust의 가장 독특하고 중요한 개념입니다. Go의 가비지 컬렉션과 완전히 다른 접근 방식으로, 컴파일 타임에 메모리 안전성을 보장합니다. 이 섹션은 Rust 학습에서 가장 중요한 부분이므로 충분한 시간을 들여 이해하시기 바랍니다.
Go to Rust: #2. 기본 문법과 타입 시스템
이 섹션에서는 Rust의 기본 문법을 Go와 비교하며 학습합니다. Go 개발자에게 익숙한 개념들이 Rust에서 어떻게 표현되는지, 그리고 Rust만의 독특한 특징은 무엇인지 알아봅니다.
Go to Rust: #1. 시작하기 - Rust 소개와 환경 설정
Go 개발자로서 새로운 언어를 배우려면 먼저 그 언어가 왜 존재하는지, 어떤 문제를 해결하려고 하는지 이해하는 것이 중요합니다. 이 섹션에서는 Rust의 설계 철학을 Go와 비교하며 이해하고, 개발 환경을 설정한 뒤 첫 프로젝트를 생성해봅니다.
Go to Rust: #0. Overview
Go 언어에 익숙한 개발자가 Rust를 체계적으로 학습할 수 있도록 구성된 가이드 Overview
Modern Worship & Pop Guitar – Technique Playbook
모던 워십 / 팝 음악에서의 일렉트릭 기타 플레이 가이드입니다.
Texas Hold’em 가이드: #21. 실전 핸드 리뷰 - 배운 것을 적용하기
시리즈의 마지막 편입니다. 지금까지 배운 모든 개념을 실전 핸드 리뷰를 통해 종합해보겠습니다. 핸드 리뷰는 포커 실력 향상의 가장 효과적인 방법이며, 이론을 실전으로 연결하는 다리입니다.
Texas Hold’em 가이드: #20. 멘탈 게임과 장기적 성장
지금까지 우리는 포커의 기술적인 면을 배웠습니다. 포지션, 핸드 선택, 베팅 전략, GTO… 하지만 이 모든 지식이 있어도 멘탈 게임이 받쳐주지 않으면 장기적으로 성공할 수 없습니다.
Texas Hold’em 가이드: #19. 토너먼트 전략 (下) - 파이널 테이블과 다양한 포맷
토너먼트의 꽃은 파이널 테이블입니다. 수백, 수천 명 중 최후의 9명(또는 6명)에 올라 우승을 다투는 순간입니다. 또한 토너먼트에는 MTT 외에도 SNG, 스핀앤고, 위성 등 다양한 포맷이 있습니다.