분류 전체보기 161

[Swift] UnsafePointer, UnsafeMutablePointer, UnsafeRawPointer 차이점과 사용법

1. Swift의 Unsafe Pointer란?Swift는 기본적으로 안전한 메모리 관리를 제공하지만, 특정 상황에서는 직접 메모리 주소를 다뤄야 하는 경우가 있습니다. 예를 들어, C 언어와 상호작용할 때 포인터를 활용해야 하거나, 성능 최적화를 위해 로우 레벨 메모리 조작이 필요할 때가 있습니다. 이를 위해 Swift는 Unsafe Pointer라는 개념을 제공합니다.Unsafe Pointer는 직접 메모리를 참조하는 포인터이며, 사용자가 메모리 관리를 직접 해야 합니다. Swift에서는 다음과 같은 Unsafe Pointer 타입을 제공합니다.UnsafePointer: 읽기 전용 포인터UnsafeMutablePointer: 읽기/쓰기 가능한 포인터UnsafeRawPointer: 형식(type)이 없..

9급 공무원 월급 300만원 시대! 급여 인상과 노량진 고시촌 변화까지

정부는 최근 9급 공무원의 초임 월급을 2027년까지 300만 원으로 인상하는 계획을 발표했습니다. 현재 9급 공무원의 초봉은 약 269만 원 수준인데, 이를 단계적으로 올려 2025년에는 284만 원, 2027년에는 300만 원에 도달하도록 하겠다는 방침입니다. 이러한 정책은 공무원 사회에서 큰 관심을 받고 있으며, 여러 가지 논란과 기대를 동시에 불러일으키고 있습니다.9급 공무원 급여 인상 배경이번 정책의 가장 큰 배경은 저연차 공무원들의 이탈 방지입니다. 최근 몇 년 동안 5년 미만의 재직 기간을 가진 공무원들의 퇴직률이 증가하고 있으며, 이는 낮은 급여와 열악한 근무 환경이 주요 원인으로 지적되고 있습니다. 특히 민원 업무를 담당하는 공무원들의 스트레스는 상당히 높으며, 경찰, 소방공무원 등의 경..

[iOS] Core Data를 활용한 Data Migration

Core Data에서는 경량 마이그레이션(Lightweight Migration)과 무거운 마이그레이션(Heavyweight Migration)을 지원하며, 복잡한 마이그레이션을 위해 매핑 모델(Mapping Model)을 활용할 수도 있습니다.1. Core Data 마이그레이션 개요데이터 모델이 변경되면 기존 데이터를 새로운 데이터 모델에 맞게 변환해야 합니다. Core Data는 이를 자동으로 처리할 수 있도록 다양한 마이그레이션 전략을 제공합니다.마이그레이션이 필요한 상황엔터티(Entity) 이름 변경속성(Attribute) 추가/삭제관계(Relationship) 변경데이터 변환이 필요한 경우2. 경량 마이그레이션 (Lightweight Migration)경량 마이그레이션은 Core Data가 자동..

클라이언트 2025.02.18

[iOS] 바이너리 프레임워크(Binary Framework) 생성 및 사용 방법

1. 바이너리 프레임워크란?바이너리 프레임워크(Binary Framework)는 컴파일된 코드와 리소스를 포함하는 프레임워크로, 라이브러리 형태로 제공되어 소스 코드 없이도 사용할 수 있다. 이는 일반적으로 라이브러리의 보안을 강화하고 빌드 시간을 줄이며, 코드 배포를 간편하게 만드는 데 유용하다.2. 바이너리 프레임워크 vs. 소스 코드 프레임워크비교 항목바이너리 프레임워크소스 코드 프레임워크배포 방식컴파일된 바이너리 형태로 배포소스 코드 형태로 배포코드 보호소스 코드가 포함되지 않아 보호됨코드가 포함되어 있음빌드 속도빠름 (컴파일 과정 생략)느림 (빌드 필요)유지보수버전 관리가 필요함코드 변경이 유연함의존성 관리XCFramework 또는 CocoaPods 등을 활용직접 코드 수정 가능3. 바이너리 프..

클라이언트 2025.02.18

[SwiftUI] SwiftUI에서 Kingfisher로 비동기 이미지 불러오기

SwiftUI에서 네트워크 이미지를 로드할 때 기본적으로 제공되는 AsyncImage를 사용할 수도 있지만, 더 강력한 기능을 원한다면 Kingfisher 라이브러리를 사용하는 것이 좋습니다. Kingfisher는 캐싱, 플레이스홀더, 에러 처리 등 다양한 기능을 제공하여 더욱 효율적으로 이미지를 로드할 수 있도록 돕습니다.이번 글에서는 Kingfisher를 활용하여 SwiftUI에서 비동기적으로 이미지를 불러오는 방법을 예제 코드와 함께 살펴보겠습니다.1. Kingfisher 설치하기Kingfisher는 Swift Package Manager(SPM)를 통해 손쉽게 설치할 수 있습니다.Swift Package Manager(SPM) 설치 방법Xcode에서 프로젝트를 엽니다.File > Add Packa..

클라이언트 2025.02.18

[Swift] Swift로 중복문자가 없는 가장 긴 부분 문자열 찾기

문제 설명주어진 문자열에서 중복된 문자가 없는 가장 긴 서브스트링을 찾아야 합니다. 또한, 해당 서브스트링의 길이도 함께 출력해야 합니다.예제입력 : "aabcbbc"출력 : 3 // "abc"입력 : "bbbbbb"출력 : 1 // "b"입력 : "aaaaabbbcedfg"출력 : 6 // "bcedfg"해결 방법이 문제를 해결하기 위해 슬라이딩 윈도우(Sliding Window) 기법과 해시셋(Hash Set) 을 사용합니다.슬라이딩 윈도우: 문자열을 순회하면서, 현재 서브스트링의 길이를 유지하면서 중복 문자가 나오면 윈도우의 시작을 조정합니다.해시셋: 현재 윈도우에서 중복 문자가 존재하는지 빠르게 확인하기 위해 사용합니다.이제 Swift 코드로 구현해보겠습니다.Swift 코드 구현import Fou..

개발 일반 2025.02.18

파이코인(Pi Network) 이슈 정리: 메인넷 출시, 거래소 상장, KYC 인증, 가치 논란

1. 파이코인(Pi Network)파이코인은 스탠퍼드 대학 출신 개발자들이 만든 디지털 화폐 프로젝트로, 모바일 기기에서 손쉽게 채굴할 수 있다는 특징이 있습니다. 기존의 암호화폐처럼 강력한 컴퓨팅 파워를 요구하지 않으며, 사용자가 간단한 인증을 통해 매일 일정량의 파이를 채굴할 수 있습니다. 현재 전 세계 수천만 명의 사용자가 참여하고 있으며, 국내에서도 높은 관심을 받고 있습니다.2. 2025년 2월 20일 메인넷 출시와 거래소 상장메인넷(Open Mainnet) 출시는 무엇을 의미하는가?2025년 2월 20일, 파이코인의 ‘오픈 네트워크’ 형태의 메인넷이 공식적으로 출시됩니다. 이는 파이코인이 폐쇄적인 환경에서 벗어나 공식적인 블록체인 네트워크로 전환된다는 것을 의미합니다.그동안 파이 네트워크는 ‘..

[iOS] 언제까지 SnapKit? SwiftLayout은 어때?

1. SwiftLayout이란?SwiftLayout은 Auto Layout의 복잡성을 줄이고, 선언형(Declarative) 방식으로 뷰를 구성할 수 있도록 도와줍니다. SwiftUI의 레이아웃 작성 방식과 유사하게 UIKit에서 사용할 수 있도록 설계된 것이 특징입니다.이 글에서는 SwiftLayout을 활용하여 어떻게 간결하고 효율적인 UI 레이아웃을 구성할 수 있는지 예제 코드와 함께 살펴보겠습니다.2. SwiftLayout의 특징선언형(Declarative) 문법: SwiftUI처럼 직관적으로 UI를 구성할 수 있습니다.간결한 코드: 기존 Auto Layout 코드보다 훨씬 짧고 가독성이 좋습니다.동적 레이아웃 변경 용이: 특정 조건에 따라 레이아웃을 쉽게 변경할 수 있습니다.UIKit과의 완벽한..

클라이언트 2025.02.17

[iOS] SnapKit을 활용한 iOS UI 레이아웃 잡기

iOS 앱을 개발할 때 UI를 배치하는 방법은 여러 가지가 있지만, 최근에는 Auto Layout을 코드로 작성하는 것이 일반적입니다. 하지만 Apple의 기본 API인 NSLayoutConstraint를 사용하면 코드가 길어지고 가독성이 떨어지는 문제가 있습니다. 이를 해결하기 위해 SnapKit이라는 라이브러리를 활용하면 훨씬 간결하고 직관적인 코드로 UI를 구성할 수 있습니다.이번 글에서는 SnapKit을 사용하여 iOS UI를 어떻게 쉽게 배치하는지 설명하고, 여러 가지 예제 코드를 제공하겠습니다.1. SnapKit이란?SnapKit은 Swift 기반의 Auto Layout DSL (Domain Specific Language) 로, 코드로 UI 레이아웃을 설정할 때 더 간결하고 읽기 쉽게 만들어..

클라이언트 2025.02.17

[JAVA] Checked Exception에 대하여

Checked ExceptionChecked Exception(검사 예외)은 컴파일 시점에서 반드시 처리해야 하는 예외를 말합니다. 즉, 예외 처리를 하지 않으면 컴파일 오류가 발생하여 프로그램이 실행되지 않습니다.Checked Exception의 특징컴파일러가 예외 처리 여부를 검사try-catch 또는 throws를 사용하여 처리하지 않으면 컴파일 오류가 발생합니다.주로 외부 환경과 관련된 예외 발생파일, 데이터베이스, 네트워크, I/O 작업 등에서 발생하는 예외가 대부분 Checked Exception입니다.개발자가 직접 예외 처리해야 함예외를 반드시 처리하도록 강제하여 안정적인 프로그램을 만들 수 있도록 돕습니다.Checked Exception이 예외 처리를 강제하는 이유Checked Except..