전체 글

• ۰ · 。 ゚⋆ ୨୧ ⋆。 ゚· ۰ •⋆
운영 투입을 준비하면서 eGov 흐름을 이해하고 연습하는 과정이 필요했다.가장 먼저 Simple 프로젝트에서 로그인 기능을 Spring Security로 직접 붙이는 작업 과정을 가장 먼저 해보았다! 공통컴포넌트를 그대로 사용하는 방법도 있지만, 구조가 크고 내부 흐름을 따라가기 쉽지 않아 가볍게 시작해서 필요한 기능만 직접 얹는 방식을 선택했다. eGov 공통컴포넌트는 로그인, 권한, 세션 관리까지 이미 잘 구성되어 있다.하지만 처음 eGov 흐름을 연습하는 입장에서는로그인 요청이 어디서 처리되는지, 인증이 언제 처리되는지 >> 를 파악하기가 쉽지 않았다.그래서 Simple 프로젝트를 생성한 뒤, 로그인 화면은 퍼블리싱 화면을 새로 추가해서 사용했다.컨트롤러와 서비스는 기존 eGov 구조에 그대로 작..
· TIL✏️
오늘 해결한 문제오늘은 공유 폴더 내부의 이미지 파일 자동 분류 및 변환 작업을 PowerShell 스크립트로 완전 자동화했다. 대상 작업은 다음과 같았다: 1. U 폴더에 있는 파일 150개를 이름순으로 정렬 2. 3개씩 묶어 총 50개의 세트 생성 3. 각 세트를 지정된 순서의 폴더(0001~0050)의 1202 폴더에 이동 4. 파일명은 세트마다 U01, U02, U03 → 나중엔 UC01, UC02, UC03으로 변경5. 모든 작업을 PowerShell 스크립트로 자동화 6. 이동 이전에는 WhatIf 옵션으로 시뮬레이션 실행하여 안전하게 검증 핵심 개념 정리✔ 150개 파일 → 3개씩 세트로 분할PowerShell에서 파일 배열을 다음처럼 처리:$startIndex = $setIndex * 3$..
· TIL✏️
DB에 대량의 이미지 경로 데이터를 넣고,그와 연결된 파일 시스템 구조를 자동 생성/정리하는 작업을 진행했다.SQL 기본 문법을 다시 복습할 수 있었고, (너무 오랜만에 DB 작업 . . )PowerShell을 사용하여 수십 개 폴더를 자동으로 생성하고 파일을 배치하는 경험도 했다. 1. 잘못 들어간 INSERT 데이터 수정1) INSERT 문 기본 구조INSERT INTO 테이블명 (컬럼1, 컬럼2, ...)VALUES (값1, 값2, ...); 이번에 사용한 예시는 다음과 같다.INSERT INTO fruvision_db.fv_measure_history(user_seq, weather_seq, regist_date, ultrasound_side_image, ultrasound_top_image, ...
BehaviorSubject와 BehaviorRelay 를 사용하는 것의 차이를 공부해보자 📚 👇 BehaviorSubject와 BehaviorRelay는 RxSwift에서 자주 사용하는 값 보관형 스트림(시퀀스)이지만, 몇 가지 중요한 차이점이 있다! ✅ BehaviorSubject특징RxSwift의 Subject 계열 타입 (Observer + Observable)초기값이 필요하며, 이후 .onNext()로 값을 방출함현재 값을 유지하고 있고, 새로운 구독자에게는 마지막으로 방출된 값을 즉시 전달함.onError(), .onCompleted() 호출 가능let subject = BehaviorSubject(value: "초기값")subject.onNext("A")subject.subscribe(o..
BehavioSubject 에서 onNext 와 accept 의 차이를 이해해보자.두 메서드는 RxSwift 에서 값을 방출하는 방법으로 사용된다. ✅ onNext vs accept 차이점1. onNext (기본 메서드)onNext는 Observable에서 값을 방출할 때 사용된다.BehaviorSubject 외에도 PublishSubject, ReplaySubject 등에서도 동일하게 사용된다.onNext를 호출하면 구독자에게 해당 값을 즉시 전파한다.let subject = BehaviorSubject(value: [1, 2, 3])subject.onNext([4, 5, 6]) // 값이 [4, 5, 6] 으로 업데이트 됨 2. accept → RxRelay 에서 제공accept는 BehaviorRe..
· TIL✏️
발생한 문제configure 실행되지 않음// 현재 구조let data: Datalet dataDetail: PublishSubjectinit(data: Data) { self.data = data fetchData() // 초기화 시점에 바로 호출 }fetchData() [ dataDetail.onNext(data)} 확인 내용1. ViewModel 제대로 생성되었는가 ? Yes let data = firstData[indexPath.row]let viewModel = DetailViewModel(data: data)let vc = DetailViewController(viewModel: viewModel)navigationController?.pushViewController(vc, ..
CAShapeLayer와 UIBezierPath를 사용하면 UIView의 모양을 자유롭게 커스터마이징할 수 있다. UIBezierPath → 곡선이나 직선을 조합해 경로(Path)를 생성하는 객체CAShapeLayer → 경로(Path)를 그릴 수 있는 레이어🔗 UIBezierPath 공식 문서 addCurve(to:controlPoint1:controlPoint2:) | Apple Developer DocumentationAppends a cubic Bézier curve to the path.developer.apple.com 🔗 CAShapeLayer 공식 문서 CAShapeLayer | Apple Developer DocumentationA layer that draws a cubic Bezi..
· TIL✏️
문제점 발견⭐️🔗☀️ 사용 api 5 day weather forecast - OpenWeatherMap openweathermap.org 1) API 에서 제공되는 icon 과 dt_txt 간의 시간 불일치의 문제를 발견했다.시간별 데이터를 보여줄 때 예를 들어, 오전 6시인데 d(낮☀️) 아이콘이 아닌 n(밤🌙) 아이콘이 나오는 경우가 발생했다.이 문제점은 OpenWeatherAPI 에서 제공하는 icon 값은 UTC 기준으로 설정된 시간에 맞춰 제공되는데, API 에서 제공하는 dt_txt 값도 UTC 기준의 시간이었다. (Docs로 확인)그래서 이를 변환하지 않아서 실제 한국 시간과 불일치하는 문제가 발생한 것이다. 해당 데이터를 화면에 업데이트하니 시간에 맞지 않는 icon 표시되는 문제  ..
compactMap이란?compactMap은 배열의 각 요소를 변환하여 새로운 배열을 반환하는 함수옵셔널(Optionals)을 처리하는 메서드각 요소에 대해 변환 작업을 할 수 있고, 반환 결과가 nil인 경우는 배열에서 제거하고, nil이 아닌 값만 반환.예를 들어, nil을 걸러내거나, 특정 조건에 맞는 값들만 추출하고 싶을 때 유용하다.let numbers = ["1", "2", "three", "4"]let result = numbers.compactMap { Int($0) }// result: [1, 2, 4] // "three"는 변환할 수 없어서 제외✅ map과 차이점map: 변환 후 nil을 포함한 배열 반환compactMap: 변환 후 nil 을 제거한 배열 반환let numbers = ..
CoreLocation을 사용해서 현재 위치 데이터를 받아와보자 📍 1. CoreLocation 설정 (현재 위치 받아오기)CoreLocation 프레임워크를 사용해서 사용자의 위치 정보를 가져올 수 있다. ✅ Info.plist 설정 위치 권한 요청을 위한 키를 추가해야 한다.NSLocationWhenInUseUsageDescription앱 사용 중 현재 위치를 확인하기 위해 필요합니다.NSLocationAlwaysUsageDescription항상 현재 위치를 확인하기 위해 필요합니다. 2. LocationManager 클래스 생성위치 정보를 관리하는 클래스를 만들어 현재 위치를 불러오기.import CoreLocationimport Combineclass LocationManager: NSObjec..
yujjne
USTORY