일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- Pinpoint
- Java
- CloudWatch
- 정보처리기사실기 기출문제
- AWS EKS
- 오블완
- CKA
- CKA 기출문제
- kotlin
- kotlin coroutine
- Kubernetes
- golang
- 기록으로 실력을 쌓자
- go
- minikube
- mysql 튜닝
- PETERICA
- docker
- tucker의 go 언어 프로그래밍
- 정보처리기사 실기 기출문제
- AI
- kotlin querydsl
- Linux
- aws
- Spring
- 코틀린 코루틴의 정석
- 티스토리챌린지
- 공부
- APM
- Elasticsearch
- Today
- Total
목록전체 글 (852)
피터의 개발이야기
ㅁ 들어가며ㅇ 요즘 유행하는 ChatGPT를 이용하여 지브리 스타일 이미지를 만들어 보았다.ㅇ 무료 사용자로 쉽게 만들 수 있었다. ㅁ ChatGPT 이미지 업로드ㅇ https://chatgpt.com/ 로 이동한다.ㅇ 컴퓨터에서 업로드를 선택하여 이미지를 등록하였다. ㅁ 이미지 변환ㅇ 업로드된 이미지와 변환된 이미지를 확인할 수 있다.ㅇ 시간은 1분정도 소요되었다.ㅇ 지브리의 따뜻한 이미지가 좋았다. ^^

ㅁ 들어가며 카라반 타이어 교체는 차량의 안전과 성능을 유지하기 위해 중요한 작업이다. 지난 주에는 마진 파워미터 P505: 혁신적인 자전거 파워미터 장착기 작업을 하면서 자전거 타이어 수리를 하였는데, 이번 주말에는 카라반 타이어 수리를 하게 되었다. 편마모가 싶해서 타이어가 곧 터질 것 같았다. ㅁ 타이어 수리의 어려움 타이어 뱅크 15곳에 전화를 하였다. 모두 퇴짜를 맞았다. 내심 꺼려하는 눈치였다. 결국 블루버드엔터프라이즈에 입고하게 되었다. ㅁ 타이어 선택ㅇ 카라반용 타이어는 일반 승용차 타이어와 다르며, 더 높은 하중을 견딜 수 있어야 한다.ㅇ 주로 사용되는 타이어 사이즈는 185R14 8PR로, 이는 튼튼하고 두꺼운 타이어이다. ㅇ 타이어 선택 시 최대 하중(맥스 로드)을 고려해야 하며, 일..
ㅁ 들어가며ㅇ Tucker의 GO 언어 프로그래밍 책을 보면서 공부 중이다. ㅇ 현업에서 당장 필요한 부분부터 정리 중이라 목차가 필요하였다.ㅇ 필요한 부분을 찾아서 코딩할 수 있지만, 차근차근 공부하고 노트하면 오래 기억할 수 있다. ㅁ 1 단계 탄탄하게 기초 문법 다지기01 Hello Go World - [GO] Tucker의 GO 언어 프로그래밍 - 1장 역사와 특징02 변수 - [GO] Tucker의 GO 언어 프로그래밍 - 2장 변수03 fmt 패키지를 이용한 텍스트 입출력 - [GO] Tucker의 GO 언어 프로그래밍 - 3장 fmt04 연산자 - [GO] Tucker의 GO 언어 프로그래밍 - 4장 연산자05 함수06 상수07 if문08 switch문09 for문10 배열11 구조체12 포..
ㅁ 들어가며CXL과 애플 실리콘의 메모리 정책은 모두 메모리 접근 효율성을 극대화하는 데 초점을 두지만, 구현 방식과 적용 범위에서 뚜렷한 차이를 보인다. ㅁ 공통점ㅇ 데이터 복사 최소화 CXL과 애플 실리콘(UMA) 모두 CPU, GPU, 가속기 등 여러 컴포넌트가 동일한 메모리 풀을 공유하도록 설계되어 데이터 복사 오버헤드를 줄인다. 예: 애플 실리콘에서는 텍스처와 같은 그래픽 리소스를 CPU와 GPU가 별도 메모리 복사 없이 직접 공유한다. ㅇ 저지연 메모리 접근 CXL의 PCIe 기반 연결과 애플 실리콘의 SoC 통합 설계는 모두 낮은 지연 시간을 통해 실시간 데이터 처리 성능을 향상시킨다. ㅇ 자원 활용 최적화 CXL의 메모리 풀링과 애플 실리콘의 유니파이드 메모리 아키텍처는 메모리 할당 유연성..
ㅁ 들어가며 [AWS] Amazon EBS gp2 vs gp3 비교[AWS] EBS gp2 생성, gp3 업그레이드, 포퍼먼스 테스트Elasticsearch와 같은 고가용성과 I/O 집약적인 시스템을 운영할 때 작성한 글들이다. 이처럼 스토리지 성능과 지연률은 시스템의 성공을 좌우하는 중요한 요소이다. 특히 NVMe 스토리지를 컴퓨팅 인스턴스에 직접 연결하는 혁신적인 아키텍처는 초고속 성능과 낮은 지연률을 제공하며, AWS EBS 볼륨 타입을 활용하면 클라우드 환경에서도 이러한 이점을 누릴 수 있다. 이번 글에서는 NVMe 스토리지의 특징과 AWS EBS 볼륨 타입과 연결하여 지연률을 최적화하는 방법을 정리하였다. ㅁ NVMe 스토리지의 혁신 NVMe(Non-Volatile Memory Expres..
ㅁ 들어가며 최근 고성능 컴퓨팅(HPC)과 AI 시대가 도래하면서 데이터 처리 속도와 메모리 확장성에 대한 요구가 급격히 증가하고 있다. 호스트 프로세서에 연결된 메인 메모리 외에 NIC, GPU 및 스토리지 SSD에는 종종 충분히 활용되지 않는 메모리 캐시가 있다. 이는 해당 시스템 전체에 메모리가 유휴 상태임을 의미한다. 이러한 캐시는 일반적으로 연결할 도구가 없으면 상호 작용할 수 없다. 이러한 흐름 속에서 CXL(Compute Express Link) 기술을 알게 되었다. CXL은 기존 메모리 인터페이스의 한계를 극복하며, AI와 데이터센터 환경에서 효율성을 극대화하는 차세대 인터페이스로 자리 잡고 있다. 이번 글에서는 CXL 메모리의 개념, 학회 및 업계 동향, 그리고 HBM과의 차이점을 정리..
ㅁ 들어가며ㅇ Tucker의 GO 언어 프로그래밍 책을 보고 정리한 글입니다.ㅇ [GO] Tucker의 GO 언어 프로그래밍 - 목차ㅇ Go 언어의 인터페이스는 강력하면서도 유연한 추상화 도구이다. ㅁ 인터페이스type Speaker interface { Speak() string}ㅇ 인터페이스는 메서드의 집합을 정의하는 타입이다.ㅇ 이 인터페이스는 Speak() 메서드를 가진 모든 타입이 구현할 수 있다. type Person struct { Name string}func (p Person) Speak() string { return "Hello, my name is " + p.Name}ㅇ 예를 들어 Person 타입은 Speaker 인터페이스를 만족한다. ㅁ 인터페이스 왜 쓰나?ㅇ ..

ㅁ 들어가며 회사 쿠루의 추천으로 키보드를 구입하였다. MCHOSE GX87 기계식 키보드의 사용법에 대해서 정리하였다. ㅁ 구매처 알리 ㅇ MCHOSE GX87 V2 기계식 키보드 알루미늄 합금 삼중 모드 가스켓 구조 RGB Esports 맞춤형 게임용 키보드 Pc 액세서리ㅇ 옵션: Mountain Green-Latteㅇ 구입 링크ㅇ (3.28 기준) 최저가는 이곳이다. 한글도 표시되고 금액이 99000원이었다. ㅁ 스위치 위치 구조ㅇ 뒷면에 모드 스위치와 2.4GHz USB 수신기, Type-C 포트가 있다. ㅁ 유선 연결ㅇ 키보드 토글을 [OFF] 위치로 전환ㅇ Type-C 케이블을 키보드 포트에 연결ㅇ 케이블의 다른 쪽 끝을 컴퓨터 USB 포트에 꽂는다. ㅁ 2.4GHZ 연결 ㅇ USB 수신..
ㅁ 들어가며ㅇ [GO] Tucker의 GO 언어 프로그래밍 - 목차ㅇ [GO] Tucker의 GO 언어 프로그래밍 - 24장 제네릭 프로그래밍을 작성하면서 제니릭과 인터페이스의 차이점에 대해서 공부하였다.ㅇ 인터페이스와 제네릭은 프로그래밍에서 추상화와 재사용성을 높이는 데 사용되는 개념이지만, 그 목적과 사용 방식에 차이가 있다. ㅁ 인터페이스ㅇ 인터페이스는 객체의 행동(메서드 집합)을 정의하고, 이를 구현하는 타입에 따라 다형성을 제공한다.package mainimport "fmt"// Shape 인터페이스 정의type Shape interface { Area() float64}// Circle 타입type Circle struct { Radius float64}func (c Circle) Area()..
ㅁ 들어가며ㅇ Tucker의 GO 언어 프로그래밍 책을 보고 정리한 글입니다.ㅇ [GO] Tucker의 GO 언어 프로그래밍 - 목차 ㅁ 제네릭 프로그래밍 소개 제네릭 프로그래밍은 Go 1.18 버전에서 도입된 기능으로, 타입에 구애받지 않고 재사용 가능한 코드를 작성할 수 있게 해준다. 이를 통해 개발자는 다양한 데이터 타입에 대해 동작하는 함수와 데이터 구조를 만들 수 있으며, 코드 중복을 줄이고 타입 안정성을 높일 수 있다. ㅁ 제네릭 함수ㅇ 제네릭 함수는 타입 매개변수를 사용하여 여러 타입에 대해 동작할 수 있는 함수이다.func Max[T comparable](a, b T) T { if a > b { return a } return b}ㅇ 이 함수는 comparab..
ㅁ 들어가며ㅇ Tucker의 GO 언어 프로그래밍 책을 보고 정리한 글입니다.ㅇ [GO] Tucker의 GO 언어 프로그래밍 - 목차ㅇ Go 언어에서 채널(Channel)과 컨텍스트(Context)는 동시성 프로그래밍과 요청 관리에 필수적인 도구이다.ㅁ 채널(Channel) 사용하기ㅇ 채널은 고루틴 간의 데이터 통신 및 동기화를 위한 파이프 역할을 한다.ㅇ 기본 사용법생성: make(chan 타입)송신: 채널 수신: 데이터 := // 기본 예시ch := make(chan string) // 생성go func() { ch ㅁ 버퍼드 채널 vs 언버퍼드 채널유형특징예제언버퍼드송신/수신이 즉시 동기화ch := make(chan int)버퍼드지정된 크기까지 비동기적 전송ch := make(chan..
ㅁ 들어가며ㅇ Tucker의 GO 언어 프로그래밍 책을 보고 정리한 글입니다.ㅇ [GO] Tucker의 GO 언어 프로그래밍 - 목차고루틴과 Go 언어의 동시성 프로그래밍에 대해 핵심 개념을 정리합니다.ㅁ 스레드란?프로세스 내에서 실행되는 실행 흐름의 최소 단위로, CPU 자원을 할당받아 작업을 수행합니다. OS 스레드는 컨텍스트 스위칭 비용이 높고 메모리를 많이 사용하지만, Go의 고루틴은 경량 스레드로 2KB의 작은 스택에서 시작해 동적으로 확장되며, Go 런타임이 직접 관리한다.📌 고루틴 vs OS 스레드OS 스레드: 컨텍스트 스위칭 비용高, 메모리 사용량多고루틴: 빠른 생성/소멸, 수천 개 동시 실행 가능. ㅁ 고루틴 사용go 키워드로 함수를 비동기 실행한다. 메인 함수도 고루틴으로 실행되며, ..
ㅁ 들어가며ㅇ Tucker의 GO 언어 프로그래밍 책을 보고 정리한 글입니다.ㅇ 4장 연산자 - 연산자종류 ㅁ 산술 연산자산술 연산자는 수학적 계산을 수행a, b := 10, 20fmt.Println(a + b) // 30 (덧셈)fmt.Println(a - b) // -10 (뺄셈)fmt.Println(a * b) // 200 (곱셈)fmt.Println(b / a) // 2 (나눗셈)fmt.Println(b % a) // 0 (나머지)a++ // 증가b-- // 감소ㅇ 모든 연산자의 각 항의 타입은 항상 같아야한다.ㅇ 정수 타입과 실수 타입을 서로 더하거나 뺄 수 없다. ㅁ 비트 연산자비트 연산자는 정수의 비트를 직접 조작하는 데 사용a := 6 // 0110b := 5 // 0101#..
ㅁ 들어가며 회사에서 보안검수를 수행하는데, 본 프로그램에 대한 사항보다 nginx에 대한 점검사항이 많았다. Nginx의 보안 강화를 위한 기본적인 설정에 대해서 잘 모르고 있었다. 보안은 웹 서버를 안전하게 운영하기 위해 필수적이다. 이 글에서는 Nginx 보안을 강화하기 위한 주요 설정 사항들을 정리해 보았다. ㅁ 보안 체크리스트ㅇ Nginx 버전 정보 숨기기 (server_tokens off;)ㅇ 보안 헤더 추가 (X-Frame-Options, XSS Protection 등)ㅇ 불필요한 HTTP 메서드 차단 (limit_except GET POST)ㅇ 디렉토리 리스팅 비활성화 (autoindex off;)ㅇ 파일 업로드 크기 제한 (client_max_body_size 10M;)ㅇ 민감한 파일 접..
ㅁ 들어가며ㅇ Tucker의 GO 언어 프로그래밍 책을 보고 정리한 글입니다.ㅇ fmt를 이용하여 터미널 화면 출력하는 방법을 정리 ㅁ fmt 패키지 사용법golang의 fmt 패키지 사용법에 대해 서식문자, 최소 출력 너비 지정, 실수 소수점 이하 자릿수, 특수 문자로 나누어 정리 서식문자package mainimport "fmt"func main() { /* %d: 정수 %f: 실수 %s: 문자열 %t: 불리언 %v: 기본 형식 %T: 타입 */ name, age, pi := "Peterica", 42, 3.14159 fmt.Printf("이름: %s, 나이: %d, PI: %f\n", name, age, pi) fmt.Printf("age의 타입: %T\n", age)}##########..