전체보기
-
SQL COALESCE 함수 A to Z: NULL이 아닐 때까지 대체값 찾기Database 2025. 7. 3. 11:24
들어가며데이터를 처리하다 보면 여러 컬럼 중 첫 번째로 값이 존재하는(≠NULL) 컬럼을 골라 쓰고 싶을 때가 있습니다. 이럴 때 쓰기 좋은 함수가 COALESCE입니다. 이번 글에서는 COALESCE의 역할, 문법, 다양한 예제를 통해 활용법을 정리합니다.1. COALESCE란?COALESCE(expr1, expr2[, expr3, …]) 함수는 인자들을 왼쪽부터 순서대로 검사하여,첫 번째로 NULL이 아닌 값을 반환모두 NULL이면 → NULL 반환하는 함수입니다.2. 기본 문법COALESCE(값1, 값2, 값3, …)3. 실전 예제예제 테이블: orders3-1) 우선순위 메모 가져오기SELECT order_id, COALESCE(customer_memo, admin_note, default_n..
-
SQL NULLIF 함수 완벽 가이드: 특정 값을 NULL로 대체하기Database 2025. 7. 3. 11:18
들어가며SQL을 다루다 보면 “특정 값(예: 빈 문자열, 특정 코드 등)을 NULL로 간단히 바꾸고 싶다”는 경우가 자주 발생합니다. 이때 유용하게 쓰이는 함수가 바로 NULLIF입니다. 오늘은 NULLIF의 기본 개념부터 실전 예시까지 살펴보겠습니다.1. NULLIF란?NULLIF(expr1, expr2) 함수는 두 인수 expr1과 expr2를 비교하여,expr1 = expr2 이면 → NULL 반환그렇지 않으면 → expr1 반환하는 아주 단순하지만 강력한 기능을 제공합니다.2. 기본 문법NULLIF(비교할_값1, 비교할_값2)3. 실전 예제예제 테이블: employees3-1) 빈 문자열을 NULL로SELECT id, name, NULLIF(bonus_code, '') AS bonus_cod..
-
C# 이중 반복문(중첩 루프) 개선 방법닷넷/C# 2025. 6. 30. 13:23
개발을 하다 보면 이중 반복문을 통해 문제를 해결하는 상황이 종종 발생합니다. foreach (var item in lists){ foreach (var relation in item.Relations) { relation.Status = Common.Enums.DataStatus.Unchanged; }}위와 같은 이중 foreach 문이 기능상 문제가 있는 건 아니지만, 좀 더 깔끔하고 현대적인 C# 코드로 바꾸는 방법에 대해 알아보도록 하겠습니다. 1. SelectMany로 한 줄에 쭉 펼치기LINQ의 SelectMany를 이용하면 중첩된 컬렉션을 평탄화(flatten)해서 단일 foreach로 처리할 수 있습니다.foreach (var relation in lists.S..
-
C# Dictionary와 LINQ로 구현하는 고객 유형별 상품 타입 필터링 패턴닷넷/C# 2025. 6. 30. 11:56
1. 개요고객 유형(CustomerType)에 따라 시스템에서 제공해야 하는 ItemType 목록을 동적으로 필터링하는 로직을 구현한 경험을 공유합니다.목표: VIP, Regular 등 고객 유형별로 기본 제공되는 상품 타입을 정의하고, 특정 권한(Permission) 값에 따라 필터링 규칙을 적용장점: 타입 안전성 보장, 유지보수성 향상, 코드 가독성 및 확장성 확보2. 요구사항고객 유형별 기본 상품 타입Regular: A, B, C, DVIP: A, B, E, F, G, H, I, JPermission이 “20”인 경우위 허용 목록에 포함된 ItemType만 노출그 외 Permission전체 ItemType 노출향후 고객 유형 추가나 허용 항목 변경이 용이해야 함.3. 설계 아이디어고객 유형별 허용 ..
-
Visual Studio 2022를 사용할 때 발생하는 오류, 'VsPackage' 패키지가 제대로 로드되지 않았습니다.기타 정보/정보공유-IT 2024. 9. 25. 10:38
어제 잘만 사용하던 비주얼 스튜디오가, 오늘도 사용하려니 이런 메시지가 뜬다.'VsPackage' 패키지가 제대로 로드되지 않았습니다.이 오류가 떠도 메시지를 무시하고 프로젝트 열어서 코딩하고, 빌드하고, 디버깅 하는 것에는 문제가 없다.다른 문제가 있다면, 확장 프로그램으로 다국어 리소스 파일을 만드는데 도움이 되는 ResX Manager를 사용 중인데 이게 열리지 않는다.없으면 없는대로 언어별로 리소스파일 열어서 수정하면 되지만 그것은 너무 불편하다.문제를 해결하는 것이 좋겠다. 메시지에 나온 로그 파일을 검토하면 자세한 내용을 확인할 수 있다고 하여 열어 보았다.비주얼 스튜디오를 열때 당시의 작업 로그들을 볼 수 있다. 그 중에서 노란색은 경고지만 이게 원인은 아니니까 무시해도 될 것 같고, 빨간색..
-
WPF에서 DevExpress의 RichEditControl에서 작업한 데이터를 Spire.Doc을 통해서 문서 파일로 변환 할 때 일어나는 현상 및 해결 방법닷넷 2024. 8. 28. 17:38
DevExpress에서는 MS의 워드 프로그램에서 작업하는 것처럼 본인이 WPF로 만드는 프로그램에서도 비슷한 작업을 할 수 있게 해주는 기능을 제공한다.RichEditControl을 사용하면 되는 것.사실 RichEditControl을 통해서 내용을 바로 문서 파일로 저장할 수 있기 때문에 RichEditControl을 통해서만 텍스트 편집 작업을 하면 Spire.Doc과 같은 문서 작업 전용 라이브러리는 필요 없다.그러나 내가 현재 유지보수 중인 프로그램은 여러 화면에서 작업한 내용을 취합해서 하나의 문서 파일로 만들어 내어야 한다. 문서 파일은 워드 뿐만 아니라 파워포인트, 엑셀, PDF 등일 수 있다.그렇게 상용 라이브러리 중에서 Spire.Doc을 사용 중이다. 문제 발견이때 내용은 단순 문자열..
-
ISO 26262 기능 안전기타 정보/업무관련 2024. 7. 15. 14:11
ISO 26262는 도로 차량의 기능 안전을 위한 국제 표준입니다. 이 표준은 자동차의 전기 및 전자 시스템의 안전성을 보장하기 위한 지침과 요구 사항을 제공합니다. 다음은 ISO 26262에 대한 상세 개요입니다:개요제목: ISO 26262 - 도로 차량 - 기능 안전범위: 이 표준은 승용차에서 생산되는 전기 및 전자 시스템의 기능 안전을 다룹니다.목적: 시스템 고장 및 오작동으로 인한 위험을 허용 가능한 수준으로 줄이기 위해 적절한 프로세스와 지침을 제공합니다.ISO 26262의 주요 구성 요소V-모델 프레임워크:표준은 시스템 개발을 위한 V-모델을 따르며, 각 단계에서 철저한 검증 및 검토를 보장합니다.안전 수명 주기:기능 안전 관리: 수명 주기 전반에 걸쳐 기능 안전을 관리하기 위한 요구 사항을 ..
-
ISO 21434 표준 자동차 사이버 보안기타 정보/업무관련 2024. 7. 15. 11:16
ISO 21434는 자동차 사이버 보안의 요구사항과 지침을 제공하는 국제 표준입니다. 이 표준은 자동차 산업에서 사이버 보안 리스크를 관리하고, 보안 사고를 방지하며, 자동차의 전자 시스템을 보호하기 위한 체계적인 접근 방식을 정의합니다. ISO 21434는 자동차의 전자제어장치(ECU), 소프트웨어, 네트워크 통신 등을 포함한 전체 라이프사이클 동안의 사이버 보안을 다룹니다.주요 내용범위와 목적:자동차 전자 시스템의 사이버 보안 리스크를 관리하기 위한 프레임워크 제공.보안 요구사항을 식별하고, 리스크를 분석하며, 적절한 보안 대책을 마련.용어와 정의:표준에 사용되는 주요 용어와 정의를 설명하여, 사이버 보안에 대한 공통 이해를 도모.사이버 보안 관리:사이버 보안 정책, 조직 내 책임 분담, 보안 계획 ..
-
NullReferenceException, Null 참조 오류 등 Null 예외 처리에 대한 고찰과 지침서닷넷/C# 2024. 7. 12. 11:26
NullReferenceException 에러가 발생 할 때마다 아, 다음에는 좀 더 꼼꼼하게 확인해야지 해도 시간이 지나면 같은 문제를 겪고는 한다.그래서 매 테스트 때마다 하나 씩 확인하고, 잊지 않기 위해 이렇게 지침서를 작성한다. 그리고 문득 이런 고찰을 하게 된다.왜 프로그램은 Null인 것을 참조하면 그냥 넘어가지 않고, 기어이 오류 메시지를 뱉어내는 걸까?왜 Null 참조 오류를 무시 하지 못 하게 하는 걸까? ○ 그 이유Null 객체에 접근하려고 하면 메모리 접근 오류가 발생하여 프로그램이 비정상적으로 종료되거나 프로그램의 성격에 따라서 데이터 손실, 보안 문제 등을 일으킬 수 있다. 이러한 문제는 심각한 버그를 야기한다. 이를 방지하고 예방하기 위해 개발자에게 문제를 인지시키는 방법이자..
-
2024년 1회 정보처리기사 실기에 합격하여 쓰는 일기겸 리뷰기타 정보/자격증 2024. 6. 24. 16:11
일기4월 27일에 정보처리기사 1회 실기시험을 보고 수제비카페에 올라온 자료를 통해 가채점 했을 때에는 60점이 되지 않아서 2회 준비나 해야지 마음먹고 있었다. 합격/불합격 결과날인 6월18일에는 내 주변에 합격한 사람들은 카톡으로 합격 메시지를 받았는데 난 받지를 않아서 아, 역시 불합격이구나 하고 그냥 확인차 큐넷에 들어가서 시험결과를 보았다. 시험결과에 써있는 것은 분명 합격이었던 것이었다. 이 글자가 너무나 낯설었다.수험번호를 클릭하니 점수를 확인할 수 있었다. 와 68점이나!뭔가 운이 작동한 것 같다. 내 개발자 연차가 8년차인데, 궁극적으로 정보처리기사를 이제서야 딴 이유는 지금 다니는 곳이 기업부설연구소이고, 전담연구요원이 되면 월급에서 비과세 20만원이 추가가 되는 혜택이 있는데 전담연구..
-
WPF DevExpress LayoutPanel의 header에 custom button 놓기닷넷/WPF 2024. 4. 22. 15:58
DevExpress LayoutPanel의 header에 custom button 놓기 참고 자료 https://supportcenter.devexpress.com/ticket/details/t919567/add-new-buttons-to-layoutpanel-header-that-has-look-and-feel-of-pin-and-close-buttons https://docs.devexpress.com/WPF/DevExpress.Xpf.Docking.LayoutPanel https://docs.devexpress.com/WPF/DevExpress.Xpf.Docking.LayoutPanel._members https://docs.devexpress.com/WPF/DevExpress.Xpf.Docking..
-
C# WPF, WinForm DevExpress GridControl 붙여넣기 기능닷넷/WPF 2024. 4. 22. 15:49
devexpress GridControl에 복사한 것 붙여넣기 Clipboard 관련 1. WinForm https://docs.devexpress.com/WindowsForms/DevExpress.XtraGrid.Views.Grid.GridView.ClipboardRowPasting 2. WPF 1) 클립보드 데이터를 그리드컨트롤 칼럼과 로우에 맞춰서 데이터 들어가는 형식으로 전달 받아 사용 할 수 있음, 붙여넣기 아예 취소 가능 https://docs.devexpress.com/WPF/DevExpress.Xpf.Grid.TableView.ClipboardRowPasting 2) 붙여넣기 완료 후 데이터별 처리할 때 https://docs.devexpress.com/WPF/DevExpress.Xpf.G..
-
WPF Binding Path에 관하여 (바인딩 경로)닷넷/WPF 2024. 4. 8. 22:02
2023.04.07 - [닷넷/WPF] - C# WPF에서 Binding(바인딩)이란? C# WPF에서 Binding(바인딩)이란? WPF에서는 MVVM 패턴을 지키는 게 중요합니다. 개인적으로 생각하기에는 이 MVVM 패턴대로 만들지 않을 것이라면 개발 속도로 봤을 때나 유지보수 적으로 봤을 때나 그냥 윈폼(WinForms)으로 만드는게 jasmintime.com 이전글을 통해서 WPF에서 데이터 바인딩은 UI 요소와 데이터 소스 간의 연결을 쉽게 설정할 수 있는 기능임을 알 수 있습니다. 이 바인딩을 잘 쓰기 위해서는 바인딩 구문을 아는 것이 중요합니다. 그 중에서 바인딩 경로는 몇 가지 유형이 있으며, 경로 지정을 어떻게 하느냐에 따라서 자기 자신의 뷰모델이 아닌 부모 요소 혹은 그 외 기타와 연결..
-
사이트에서 접속 대기 화면 넘기는 방법 (티켓팅, 원서 접수 할 때 등등)기타 정보/정보공유-IT 2024. 4. 1. 14:21
1. 웹브라우저는 엣지(Microsoft Edge)를 사용합니다. 2. 키보드에서 F12를 눌러 DevTools를 엽니다. 3. DevTools에서 콘솔을 선택합니다. 4. 사이트에서 접속 대기가 뜰 때 콘솔에 복사+붙여넣기는 안 될 수 있으므로 직접 타이핑하여 NetFunnel.gControl.next.success({},{data:{}}) 을 그대로 입력하고 엔터합니다. 5. 접속 대기가 사라지고 다음페이지가 뜹니다. 6. 접속 대기를 뚫고 페이지에 접근에 성공해도 사이트의 서버가 트래픽을 감당을 못 하는 경우에는 타임아웃 페이지가 나올 수 있습니다. 이때는 페이지가 정상적으로 나올 때까지 페이지 새로고침(F5)을 합니다. 7. 4~6번은 사이트의 접속 대기 페이지마다 반복 될 수 있습니다.
-
Sourcetree(소스트리)에서 깃랩의 리포지토리를 Clone 하는 방법기타 정보/정보공유-IT 2024. 4. 1. 14:05
소스트리에서는 깃랩의 HTTPS URL을 그대로 복사해서 사용하면 '유효한 소스 경로/URL이 아닙니다' 라고 나오는 경우가 있습니다. 보통은 소스트리에 깃랩의 계정 정보가 없는 경우 혹은 정보가 다른 경우에 해당 URL에 접근할 수 없어서입니다. 계정 정보를 다시 입력해야 하는 경우에는 먼저 기존의 계정 정보가 있는지 확인하고, 다음의 파일들을 삭제합니다. 1. C:\Users\{컴퓨터 혹은 계정명}\AppData\Local\Atlassian\SourceTree 폴더에서 2. passwd 파일 삭제 3. userhosts 파일 삭제 그다음 4. Clone하려는 깃랩에 있는 리포지토리에서 Code > HTTPS URL을 복사합니다. 5. 복사한 URL에서 계정명을 추가해서 소스트리에 URL을 입력합니다...