즐겁게 개발을...

개발보다 게임이 더 많이 올라오는 것 같은...

전체 글 273

Docker로 PostgreSQL 구동 시 한글이 나오게 하는 방법

영문으로 설치해도 데이터베이스에 기본적으로 UTF8로 설치되기에 한글이 Insert/Update는 되는데, 로그 및 날짜포맷등이 en-US로 설치되기에 한국 설정에 맞지 않게 표시가 된다.  한글이 나오게 하려면 별도로 언어팩을 설치해야 하기 때문에 공식 이미지를 기반으로 별도 빌드해서 사용할 필요가 있다.  다음은 빌드 스크립트이다.  FROM postgres:16# Locale 설정에 필요한 패키지 설치RUN apt-get update && apt-get install -y locales openssh-client# ko_KR.UTF-8 locale 생성RUN locale-gen ko_KR.UTF-8# ko_KR.UTF-8 locale 생성RUN localedef -i ko_KR -f UTF-8 ko..

앨범 발매 자축 "데뷔"

2024년 06월 14일 정오 기준으로 "우서비"라는 아티스트로 이름을 올려봤습니다. Life of Useobi Vol.1 - 우서비지금 VIBE에서 이 앨범 감상하기vibe.naver.com 위에 바이브만 링크를 넣었는데, 멜론, 지니, 벅스, 스포티파이에서 앨범이 있는 것을 확인했어요. 앞으로 7월 28일까지 앨범이 비정기적으로 발매될 예정입니다. 이것저것 신경 많이 쓴다고 했는데 제목 오탈자가 눈에 밟히는 군요 T_T 2월부터 앨범에 들어가는 곡이 지금 작업된 것만 84곡 포함되지 않는 곡을 포함하면 100여곡이 넘어가네요. 하나하나 애정이 깊고 혼자만 들을 수 없기에 대중에게 알리기 위한 것도 있지만 "우섭"이란 이름을 세상에 남기기 위한 것도 큰 것 같아요.  족보상의 이름일 뿐, 이번에 처음으..

2024년 05월 25일 - 전쟁의 그림자 (Shadows of War)

가장 최근에 꾼 꿈 내용을 올려봅니다. 앞으로는 이렇게 노래와 함께 올려볼께요. 이 곡은 정치적인 곡으로 오해를 살 것 같아서 유튜브 공개버전은 아닙니다. 링크를 통해서만 들을 수 있어요.        꿈 속의 꿈이 아니라 꿈에서의 기억을 누군가에게 이야기 합니다. 일종의 미래예시 즉 데자부(이 단어가 프랑스 단어였군요) 내용이었지요. 꿈 내의 시기는 정확하게 예측이 되지는 않았어요. 데자뷰 내용입니다. 2031년 중국이 대한민국 본토를 단독 공격을 했어. 그들과 열심히 싸운 덕에 2032년 언젠가 그들을 본토에서 완전히 밀어낼 수 있었지. 여기서 보통 휴전이나 종전을 해야 하는데 중국은 북한을 압박해 참전을 시켰어. 그래서 전선이 해양전선이 아닌 내륙으로 확대가 됐지. 그런 상황에서 난 책상에 앉아 보..

국가 기술 표준원 OID(객체식별자) 발급방법

OID는 국제 표준관리기구인 ISO에서 관리하는 식별체계입니다. 사용범위는 전체 사업범위입니다만, 저의 경우 의료IT 종사자로서 PACS 등에서 사용하는 DICOM 파일에서 사용하는 UID에 기관들을 구별하기 위해 OID를 발급받는 중입니다.  예전 UID 발급받는 내용에 OID를 조회하는 사이트 등을 공유한 적이 있는데 이번에는 국내에서 발급받고 실제 그 OID 사이트에 등록하는 방법까지 알아보겠습니다.  국가기술표준원(KATS) 홈페이지에서 OID로 검색해도 내용이 일절 나오지 않습니다.   OID repository - 1.2.410 = {iso(1) member-body(2) kr(410)}Information: According to Korean industrial Standard "KS X 4..

Generic 타입(T)를 이용해 String과 JSON오브젝트 간 상호 변환하는 함수

Generic 타입(T)를 이용해 String과 JSON오브젝트를 상호 변환하는 함수입니다. 범용적으로 사용할 수 있어요. options는 JSON의 규칙을 설정할 수 있습니다. 상세 옵션은 여기에서 확인해주세요. using Newtonsoft.Json;private static string JsonObjToString(T obj){ try { if (obj == null) return ""; var options = new JsonSerializerSettings { MetadataPropertyHandling = MetadataPropertyHandling.Ignore, DateFormatString = "yyyy..

개발/C# 2024.05.27

2집 볼륨#2에 포함될 불꽃 아래에서

2집 타이틀 Life of Useobi는 제 인생 전체를 걸쳐서 노래한 곡들을 모아놓은 앨범입니다. 아직 후반부 작업이 안되어 있어서 "Life of Useobi 2집 vol1"은 2024년 06월 14일 전세계 음원 플랫폼에 발매될 예정입니다.  즉 이 곡은 아직 발매일정이 아직 없는 Vol2 곡이란 거죠. 갑자기 노래 정리하다가 들어보니 넘 좋아서.. 곡 소개를 할까하고 잠시 적어 봅니다.  제 나이기준 39세~45세 기간에 있었던 일을 모티브로 해서 가사를 적었습니다.   햇수로 약 5년 반정도를 워라벨없이 일만 죽어라게 했던 것이 기억이 나고 6시 퇴근하는 것이 너무나도 어색했던 시간이 아니었나 하네요.  처음 들어가자마자 산으로 가던 프로젝트(3년짜리 국책과제)를 성공으로 이끌었고, 그때즈음 개..

.NET 코어 App을 코드로 관리자 권한으로 실행하는 방법

닷넷 프레임워크나 다른 블로그들을 찾아보면 클릭원스(Click Ones)를 설정했다가 해지하는 방법으로 "app.manifest"파일을 생성하는 방법으로 하는 것이 있었다. 그런데 닷넷 코어에는 클릭원스가 없다.  프로젝트 열기: Visual Studio 2022에서 원하는 프로젝트를 열자.프로젝트 속성 열기: 솔루션 탐색기에서 프로젝트를 마우스 오른쪽 버튼으로 클릭하고 "속성"을 선택하자.매니페스트 파일 설정: 프로젝트 속성 창의 왼쪽 메뉴에서 "응용 프로그램"을 선택하고, "리소스" 섹션으로 내려가서 "매니페스트" 옵션을 찾자. 여기서 "새 매니페스트 생성"을 선택하거나 기존 매니페스트 파일을 참조할 수 있다. 만약 "새 매니페스트 생성" 옵션이 보이지 않는다면, 기본적으로 매니페스트 파일이 프로젝트..

개발/C# 2024.04.29

이벤트 로그 작성하는 방법

윈도우의 이벤트 로그의 Application카테고리에 내가 만든 프로그램의 로그를 써보자.  public static void WriteEventLogEntry(System.Diagnostics.EventLogEntryType LogType, string message, string AppName = "Spider"){ // Create an instance of EventLog System.Diagnostics.EventLog eventLog = new System.Diagnostics.EventLog(); // Check if the event source exists. If not create it. if (!System.Diagnostics.EventLog.SourceExis..

개발/C# 2024.04.25

AI음악으로 앨범 발매까지

연초에 AI음악으로 나만의 가사를 만들어 노래를 만들어 블로그와 유튜브에 올리다가 음원 등록은 어떻게 하는걸까? 찾아보다가 곡당 6만원이라는 내용을 보고 포기 했던 기억이 있다. 위 사이트는 YGPLUS에서 운영하고 있는 믹스테이프라는 앨범유통플랫폼인데, 년간 66000원(VAT포함)으로 무제한 발매(는 아니라 발매횟수는 제한되어 있고, 선착순이다)할 수 있다. 공지에 5월 달 발매횟수가 추가됐다고 부리나케 EP를 추가해서 올렸더니 벌써 사라져 있었다. T_T 원래 "드림 스토리"를 처음 올릴 때 6월이 없어서 7월달에 넣은 건데, "우서비의 삶"을 올릴 때는 6월 달 발매자리가 남아서 앨범 발매 순서가 바뀌었다. 그래서 EP까지는 생각이 없었는데 그동안 만들었던 하나의 주제로 여러 개의 버전 곡들을 버..

try~catch문에서 error타입에 따라 처리하는 함수

Typescript에서 Try~catch문 중 error를 처리하려고 할 때 타입이 뭔지 궁금했다. any나 uknown으로 처리를 해야 한단다. 이런 ~ 썩을... export function ParseError(error: unknown): string { if (error instanceof TypeError) { return 'Type error occurred:' + error.message; } else if (error instanceof Error) { return 'General error:' + error.message; } else { return 'An unexpected error occurred:' + error; } } 타입을 체크해서 알고 있는 타입이면 처리하는 방식으로 만든..

개발/Node.js 2024.04.23