Dev
-
바이브 코딩Dev 2025. 6. 20. 08:25
바이브 코딩(Vibe Coding) 의미:자신이 좋아하는 음악이나 분위기(=vibe)를 즐기며 몰입해서 코딩하는 것보통 업무나 과제에 쫓기기보다는 자기만의 흐름을 타면서 창의적이고 편안한 상태로 코딩하는 상황을 말합니다. 예시 상황:Lo-fi 음악을 틀어놓고 혼자서 사이드 프로젝트를 즐기듯 개발할 때밤늦게 조용한 공간에서 집중하며 감성적인 분위기로 코딩할 때커피 한 잔과 함께 생산성을 올리는 코딩 타임 바이브 코딩"과 Claude, Cursor 등 AI 기반 코딩 도구의 관계?? "바이브 코딩"과 Claude, Cursor 등 AI 기반 코딩 도구 사이에는 직접적인 개념 연결은 없지만, 실제 작업 맥락에서는 서로를 보완하며 강력한 시너지를 내는 관계라고 볼 수 있습니다. 핵심 개념 요약개념설명바이브 코딩..
-
go 언어에서 deep copy 사용Dev 2025. 3. 24. 08:02
Go 언어는 대부분 값 타입(value semantics)이 기본이지만, 슬라이스, 맵, 포인터, 구조체 포인터 등을 다루다 보면 얕은 복사(shallow copy)로 인한 예기치 않은 공유 문제가 발생할 수 있어요.이럴 때 deep copy(깊은 복사)가 필요해집니다. ✅ 언제 Deep Copy가 필요한가?🔹 1. 공유된 메모리로 인한 부작용을 피하고 싶을 때슬라이스나 맵은 참조 타입이기 때문에 복사해도 같은 메모리 영역을 가리킵니다.이를 수정하면 원본 데이터도 함께 변경되죠.original := []int{1, 2, 3}copy := originalcopy[0] = 100fmt.Println(original) // [100 2 3] ← 원본이 변경됨!이런 부작용을 막기 위해서는 deep copy로 ..
-
Go 언어에서 Concurrency (동시성) 과 Parallelism (병렬성)Dev 2025. 3. 24. 00:06
🧪 예제 1: Concurrency (동시성) – goroutine 사용package mainimport ( "fmt" "time")func printSlow(text string) { for i := 0; i 🔍 실행 결과 (예상)main 0goroutine 0main 1goroutine 1...main() 함수는 printSlow("main")을 실행하면서동시에 printSlow("goroutine")은 goroutine으로 동시 실행됨한 CPU 코어에서 context switching 하면서 동시성처럼 보임→ 실제로는 빠르게 번갈아 가며 실행하는 concurrent behavior 🧪 예제 2: Parallelism (병렬성) – runtime.GOMAXPROCSpackage mainimpo..
-
Go 언어 기원 및 설계 철학Dev 2025. 3. 20. 21:37
Go 언어는 2007년에 Google에서 시작된 프로그래밍 언어로, 로버트 그리즈머(Robert Griesemer), 롭 파이크(Rob Pike), 켄 톰프슨(Ken Thompson)이 주도하여 개발했다. 공식적으로는 2009년에 오픈 소스로 공개되었다. Go 언어의 기원 (배경) Go 언어는 Google 내부에서 대규모 시스템을 개발할 때 겪던 컴파일 속도의 저하, 복잡한 코드베이스, 병렬 처리의 어려움 등을 해결하기 위해 만들어졌다. 기존의 C++과 Java 같은 언어들은 강력하지만, 빌드 시간이 길고 코드가 복잡해지는 문제가 있었다. 이러한 문제를 해결하면서도 단순하고 효율적인 시스템 프로그래밍 언어를 만들기 위해 Go가 탄생했다. 특히 다음과 같은 요구 사항을 충족하기 위해 개발되었다. • 빠른 ..
-
Go에서 함수와 상수 이름의 시작 규칙 (대문자 vs. 소문자)Dev 2025. 3. 3. 21:58
Go 언어에서는 함수, 변수, 상수, 구조체 이름이 대문자로 시작하는지, 소문자로 시작하는지에 따라 접근 범위(Scope)가 결정됩니다.1. 대문자로 시작 (Exported, 외부 패키지에서 접근 가능)대문자로 시작하는 이름은 패키지 외부에서도 접근 가능합니다.즉, 공개(Exported)된 함수, 변수, 상수, 구조체가 됩니다.이 방식은 다른 패키지에서 사용될 것이 예상되는 경우에 사용됩니다.✅ 예제 (대문자로 시작, Exported):package mypackage// PublicFunction can be accessed from other packages.func PublicFunction() { fmt.Println("This is a public function.")}// PublicCon..
-
Go 언어의 Goroutine이란?Dev 2025. 3. 2. 19:02
Goroutine은 Go에서 병렬(동시성) 실행을 지원하는 경량 스레드(Lightweight Thread)입니다.✅ 주요 특징:Go 런타임이 관리하는 User-Level Thread (사용자 수준 스레드)OS 스레드보다 가벼움 (수천 개의 Goroutine 생성 가능)자동 스케줄링 지원 (M:N 스케줄링)go 키워드를 사용하여 생성됨package mainimport ( "fmt" "time")func sayHello() { fmt.Println("Hello, Goroutine!")}func main() { go sayHello() // Goroutine 생성 time.Sleep(time.Second) // 메인 함수가 종료되지 않도록 대기} 📌 Goroutine은 User-Level Thread인가?1..
-
go언어에서 Java의 클래스, 속성, 메소드는 어떻게 구현이되?Dev 2025. 3. 2. 12:19
Go 언어는 Java와 같은 전통적인 객체지향 언어와는 다르게 클래스(Class) 개념이 없습니다. 대신, 구조체(Struct), 메서드(Method), 그리고 인터페이스(Interface) 를 활용하여 객체지향적인 프로그래밍을 구현할 수 있습니다. ✅ 1. Java의 클래스(Class) → Go의 구조체(Struct)Java에서는 class 키워드를 사용하여 클래스를 정의하지만, Go에서는 struct를 사용하여 데이터를 정의합니다.📌 Java 코드 (클래스 예제)public class Person { String name; int age; public Person(String name, int age) { this.name = name; this.age = ..