분류 전체보기 17

[UIKit] jpegData(compressionQuality: )에 대한 고찰과 트러블슈팅 ☄️

웹소소 사진소소 1차 QA에서 발견했던 버그가 있었다. (참고로 사진소소는 웹소소 사일로 중 하나로 난 피드 내 이미지 첨부 기능을 구현해야했다.... 흑흑 어려워😞)피드를 수정할 때마다 이미지를 수정하지 않았는데도 이미지의 화질이 계속 저하되는 상황이 발생했다.해당 버그를 수정하기 위해 UIKit에서의 이미지 압축 방식에 대해 처음부터 공부해보기로 결정했다! 우선, 버그부터 해결해보자서버에 보내야 하는 이미지의 최대 사이즈는 0.25MB였다.근데 원본 이미지 사이즈가 이미 0.25MB보다 작으면 압축 과정은 필요없이 서버에 전송하면 되는데 ..내가 이 로직을 생각 못했다 흑흑 if let originalData = image.jpegData(compressionQuality: 1.0) { le..

iOS/UIKit 2025.07.10

이미지를 언어별로 다르게 적용시키고 싶다면? Image Localizing ✨

사이드 프로젝트를 진행하다가 이미지를 한국 / 영어 언어에 따라 다르게 적용해야 하는 상황이 발생했다. (사실은 튜토리얼 뷰를 따로 만들어서 뷰의 크기에 맞게 조정되도록 해야하는데 .. 이건 백로그로!우선 릴리즈 기한을 맞추기 위해 이미지 통째로 넣어두기로 했다. ) 이 상황을 마주하고.. 음 텍스트는 로컬라이징을 할 수 있는데 이미지는 어떻게 하지? 란 생각이 들었다. 해결방법생각보다 간단했다. 로컬라이징 하고 싶은 이미지를 선택하고 우측 네비게이션의 Image Set을 클릭하면 위 사진처럼 Localization이라는 탭이 보일 것이다. 이를 클릭하면 위 버튼들이 생길 것이고, 로컬라이징 하고 싶은 언어들을 선택해주면 된다. 나는 영어와 한글 버전 두가지의 이미지를 추가할 것이기 때문에 두 버튼 모..

iOS/SwiftUI 2025.07.07

[WWDC25] 스스챌 Distinguished Winner로서 간 WWDC25 현장 후기 (3)

WWDC25 3일차 마지막날 (6/ 10)공식 행사 마지막날이다. 이제 막 시차적응 했다고 생각했는데.. 벌써 가야한다니 너무 아쉬웠지만 그래도 알차게 끝내자는 생각으로! 마지막날을 힘차게 시작해봤다.오전 9시에 집합해서 인피니트 루프에 가서 어제 발표된 Apple의 Liquid Glass와 관련된 디자인 세션을 들었다. Apple의 엔지니어, HIG 디자이너들이 나와서 직접 코드로 구현까지 해주며 자세한 방법에 대해 알려주었다. 아쉽게도 해당 디자인 세션에선 사진 촬영이 불가해서 내용에 대한 메모만 남겨두었다. 하나 진짜 인상 깊었던 점은, 행사 시작부터 끝까지 수화통역사분들이 열심히 수화로 행사를 설명해주셨다. 애플의 섬세함을 다시 한번 느낄 수 있었다. Liquid glassSpecular hig..

WWDC25 2025.06.24

[WWDC25] 스스챌 Distinguished Winner로서 간 WWDC25 현장 후기 (2)

WWDC 2일차 (6 / 9)WWDC25의 가장 큰 행사인 키노트 발표가 있는 날이다보니, 위너들도 오전 7시 10분까지 모여야했다. 그리고 오전 8시쯤 도착해서 아직 아무도 들어오지 않은 애플파크에 먼저 들어갈 수 있는 영광을! 가질 수 있었다.애플파크를 한바퀴 쭉 돌면서 구경하고 아직 아무도 앉지 않은 애플 파크 키노트 좌석이 있었다.몇 시간 뒤에는 이 곳에 사람들이 꽉 들어찰 생각을 하니 너무나 설레었다. 키노트 발표 시작 시간인 오전 10시 이전까진 자유롭게 애플 파크를 돌아다니며 아침밥도 먹을 수 있었다.생각보다 아침밥 퀄리티가 너무나 좋았다. 다양한 종류의 음식들을 준비해줘서 골라 먹을 수 있었다 ㅎㅎ 돌아다니다가 작년에 아카데미 같이 했던 러너들도 만나서 얘기를 나누다가 우연히 유튜버 '방..

WWDC25 2025.06.23

[WWDC25] 스스챌 Distinguished Winner로서 간 WWDC25 현장 후기 (1)

지난 3월 말, Apple에서 주최한 Swift Student Challenge에서 Distinguished Winner로 선정되어 Apple의 전세계 개발자 컨퍼런스인 WWDC에 초대받게 되었다.그리고 난 6월 6일부터 6월 12일, 총 6일동안 미국 캘리포니아 쿠퍼티노에 다녀왔다.과연 Distinguished Winner로서 초대받게 되면 어떤 행사를 참여하게 되고 어떤 경험을 할 수 있었는지 작성해보고자 한다!미국 가기 전떱떱 가기 전엔 크게 준비할 건 없었다. 왜냐하면 애플에서 다 준비해준다... 최고🥹비행기도 원하는 시간 일정에 맞춰 예약해두면 애플에서 컨펌 후 예약을 확정해줬다. 완전 편했음!숙소도 애플 파크 바로 앞에 있는 3성급 호텔 코트야드로 예약해줬다.룸 당 한 사람씩 배정을 해줘서 ..

WWDC25 2025.06.23

[WWDC25] 애플 본사에 가기 전까지의 좌충우돌 기록 😂🏃‍➡️🍎

애플에서 초청한 6월 7일부터 11일까지 나는 한국이 아닌 미국의 쿠퍼티노에 있게 되었다. 따라서 나는 4학년 1학기를 다니고 있는 대학생이기 때문에 공결 인정을 위해 교수님들에게 메일을 보내게 되었다. 학교 다니는 약 4년 간 교수님들에게 메일 따위 보내보지 않은 사람.... 저에요 사실 학교에서 공식적으로 인정하는 결석 사유에는 해당되지 않았다. 흑흑. 그렇기 때문에 교수님들에게 직빵으로 연락을 드려 따로 인정을 받는 방법밖엔 없었다.다행히도! 몇몇 교수님들은 긍정적으로 생각해주셔서 증명서나 참석 인증 사진만 제출하면 공결로 인정해주신다고 하셨다...흑흑 넘나 감동적 하지만, 마냥 쉽지만은 않았다.WWDC 같은 개발자 컨퍼런스의 의미를 잘 이해해주시고, 기꺼이 공결을 배려해주신 교수님들도 계셨다.하지..

WWDC25 2025.04.13

[SSC] Distinguished Winner로 선정된 나의 앱 개발 이야기💭 + 약간의 팁!

앞선 포스팅에서 나는 Swift Student Challenge 2025 Distinguished Winner로 선정되었다는 소식을 전했다.교수님들께 연락드리고, 학과 사무실에 메일을 보내고, 답장을 받는 과정이 반복될수록"아, 나 진짜 쿠퍼티노 가는구나!"라는 생각이 점점 현실로 다가온다. ㅋㅋ이번 포스팅에서는 내가 스스챌에서 어떤 앱을 제출했는지 그 이야기를 해보려고 한다! 1. 아이디어 선정올해 1월, 외할머니께서 병원에 입원하셔서 병문안을 갔다.그런데 할머니께서 나에게 올 때 한자노트 좀 사오라고 하셨다.응? 한자노트? 갑자기 왜? 🤔할머니는 파킨슨병을 앓고 계셨고, 병원에서 재활 치료의 일환으로 큰 글씨를 쓰는 연습을 하고 계셨기 때문이다.재활 치료 방법은 간단했다.한자 노트의 칸을 가득 채우..

WWDC25 2025.04.02

[SSC] 스스챌 2025 Distinguished Winner로 선정되다!🎉

바로 어제! Swift Student Challenge 2025 결과가 공개되었다.새벽 2시쯤에 나올 것 같아서 기다리다가 딱 메일이 와서 확인했는데 ....응?..... You Did it ...? Distinguished......? Winner...?? 손이 떨리고 심장이 두근거렸다.와 나 미국 가는거야?안 믿겼다. 어안이 벙벙했다. 사실 아직까지도 그렇다 ㅋㅋㅋㅋ You’ll also receive:An official certificate from Apple to commemorate your achievement.One year of individual membership in the Apple Developer Program.An opportunity to take an App Develo..

WWDC25 2025.03.29

[UIKit] Command SwiftCompile failed with a nonzero exit Code 오류 해결

1. 문제상황댓글 안에 있는 드롭다운 버튼을 클릭했을 때 Input 이벤트 로직을 정의하고 있었다. 드롭다운 내에는 top, bottom 두개의 버튼이 들어가있고, 내 댓글인지 아닌지의 여부도 반영하면 총 4가지의 분기처리를 해주어야 했다. Input { let commentDropdownDidTap: Observable}Output { let showCommentSpoilerAlertView: Observable Observable, Int)> let showCommentImproperAlertView: Observable Observable, Int)> let myCommentEditing: Observable let showCommentDeleteAlertView: Observabl..

iOS/UIKit 2024.11.15

[RxSwift] throttle과 debounce의 차이점을 알아보자!

사이드 프로젝트 개발 중, 코드리뷰로 버튼 input 이벤트에 대해 " throttle 말고 debounce 를 사용한 이유를 알 수 있을까요 ?! "라는 리뷰를 받았었다.음 .. 그러게요? 나 왜 debounce를 사용했지? throttle과 기능적 차이점은 어떤 게 있을까?잊지 않기 위해 글로 남겨보고자 한다.  debounce관찰 가능한 항목을 다른 항목을 방출하지 않고 특정 시간대를 경과한 경우에만 방출합니다.only emit an item from an Observable if a particular timespan has passed without it emitting another item. 내가 적용한 코드를 예시로 살펴보자. ViewModel 에서 Input으로 좋아요 버튼 클릭 이벤트를..

iOS/RxSwift 2024.10.17