전체 글
-
[SwiftUI] @Observable과 @Bindable에 대하여Swift/끄적끄적 2025. 10. 13. 19:26
Swift 5.9부터 사용할 수 있는 Observable macro를 적용하면서 바인딩이 필요한 사례에 대해서 적어볼 거임 일단 간단하게 말하자면, @Observable은 - ObservableObject/@Published 없이도 상태 변경을 자동 추적해 SwiftUI 뷰를 갱신해 주는 매크로- 변경된 필드만 추적해서 해당 필드를 실제로 읽은 뷰만 다시 그려 효율적 이런 특징을 가지고 있음![기존 코드]import SwiftUIimport Combinefinal class CounterVM: ObservableObject { @Published var count = 0}struct CounterView: View { @StateObject private var vm = CounterVM() ..
-
[SwiftUI] 더보기 영역 구현Swift/끄적끄적 2025. 9. 22. 16:17
여러 SNS를 보면 게시글의 내용이 많을 때 깔끔한 UI를 위해 내용의 일부만 보여주는 경우가 많음 이런 식으로 다양하게 표시가 되는 것을 봤을 거임기본 제공되는 기능일 줄 알았으나 직접 구현해야 하는..!그래서 좀 찾아봤는데 GeometryReader를 사용해서 구현하는 방법이 많았음적용해 보려다가 텍스트의 크기를 알고 있고, 또 측정한다는 점이 복잡하고 어색해서 다른 방안을 생각해 봤음 [전체 코드]struct ExpandableText: View { let text: String var firstLineTailThreshold: Int = 20 var moreLabel: String = "더보기" @State private var isExpanded = false var ..
-
[SwiftUI] confirmationDialog 활용법Swift/끄적끄적 2025. 9. 4. 20:09
Swift에서 제공하는 기본 Sheet를 사용해야해서 알아봤음! 처음 디자인이 이렇게 되어있어서 '간단하네!'라고 생각했지만..기본 제공되는 UI는 이렇게 되어있지 않았음..이렇게 꼭 취소버튼이 있거나 위에 설명이 있는 형태가 기본 제공되는 것이었던 것!그래서 취소버튼을 없애려면 커스텀해서 변경해야했지만,디자인 쪽과 합의봐서 취소버튼이 있는 형태로 다시 그려졌음! 이렇게! 생각해보면, 빈 공간(?)을 누르면 sheet가 사라지는 걸 알고있지만누군가는 취소버튼이 있어야 사라진다고 생각할 수 있으니까이렇게 만들어지는 게 맞을 수도 있다는 생각이 들었음.. [전체 코드]import SwiftUIstruct ActionSpec: Identifiable { let id = UUID() let title..
-
[SwiftUI] 스크롤 방향에 반응하는 헤더 UISwift/끄적끄적 2025. 8. 17. 19:49
이번에 디자인 요구사항에 스크롤 방향에 따라 헤더를 보여주는 작업을 해야 했음! 보통 글을 읽을 때 맨 위에 버튼을 누르기 위해서 다시 위로 가는 경우가 있는데편하게 스크롤만 올려주면 생기도록 해주는 거임!위 예시처럼 네이버 블로그 상단 탭(헤더)이 스크롤의 방향에 따라 보이거나 사라지거나이걸 구현해 보겠음! 우선 스크롤 감지하는 코드부터 구현하겠음 [전체 코드]struct HeaderDemo: View { @State private var directionText = "스크롤 방향" @State private var lastY: CGFloat = 0 private let headerH: CGFloat = 56 private let directionThreshold: CGFloat ..
-
네이버 부스트캠프[챌린지] 후기(회고)지원 후기 2025. 8. 12. 15:46
후기라 적고 회고라 생각하며 쓰기'네이버 부스트캠프가 어떤 곳이다~ 라고 말하기에는 좀 거리가 먼 단순 회고글입니당 - 1주 차를 끝내고 주말 -설렘과 두려움이 공존했다.오리엔테이션을 하면서 러닝바이두잉이라는 컨셉을 알게 되었다.학습을 하고, 그것을 내 것으로 만들기 위해 해보는 커리큘럼이었다.좋은 말씀 많이 해주셨고, 기록도 했는데 날아가 버렸다..(이렇게 빨리 잊을 진 몰랐다..)남은 기억으로는, 함께 성장해야 하고, 올라가는 일은 평탄하지 않다는 것이다. 첫 주의 충격첫날부터 새벽에 잠을 잤다.아마 여태 미션 중 제일 쉬운 난이도였을텐데 왜 밤까지 샌거지..그리고 하루하루 지날 때마다 짜증이 났다..왜 이 말도 안 되는 과제를 하루의 기간을 주시면서 잠을 못 자게까지 만드는 거지?학습과 구현의 시간..
-
정처기 실기 준비CS지식 2025. 7. 19. 11:42
서비스 거부(Dos; Denial of Service) 공격서버의 자원을 고갈시킬 목적으로 다수의 공격자 또는 시스템에서 대량의 데이터를 한 곳의 서버에 집중적으로 전송함으로써, 표적이 되는 서버의 정상적인 기능을 방해하는 것Ping of Death죽음의 핑, Ping 명령을 전송할 때, 패킷의 크기를 IP 허용 범위 이상으로 전송하여 네트워크를 마비시키는 공격 방법SMURFINGIP나 ICMP의 특성을 악용하여 엄청난 양의 데이터를 한 사이트에 집중적으로 보냄으로써 네트워크를 불능 상태로 만드는 공격 방법SYN FloodingSYN: 전송 제어 문자 중 동기 유지하는 것 (데이터 주고 받을 거니까 연결 상태를 유지해라!)TCP는 신뢰성 있는 전송을 위해 3-way-handshake를 거친 후에 데이터를..
-
핑콘 일지 <배포 후 회고>프로젝트 일지/PINGCON 2025. 7. 10. 23:25
기프티콘 관리 앱: 프로젝트 시작이번에 4월 말부터 시작했던 프로젝트가 있었다. 사진으로 받는 기프티콘을 등록하고 알림을 주어 까먹지 않고 사용할 수 있도록 도움을 주자는 취지에서 앱을 만들었다.(카톡, 토스 외에 문자나 이미지로 받는 기프티콘을 대상) 멤버는 디자이너 1명과 개발 iOS 1명(나) 현재는 UX 방면으로 수정해야할 것과 다음 업데이트 사항 회의를 앞두고 있다. 문서화 없는 개발의 리스크개발은 혼자이다 보니까 처음에 제대로 설정하지도 않았고, 기획과 병행했기 때문에 제대로 시작하면 다시 만들어야겠다고 생각했다.하지만, 그건 큰 오산이었다..자연스럽게 이슈 템플릿 없이 커밋만 진행했고, 사실 필요성도 느끼지 못해서 단순 커밋 끝에 배포까지 진행했다. 괜찮겠지라고 생각하는 동시에 이래도 되나?..
-
네이버 부스트캠프[베이직] 후기지원 후기 2025. 7. 10. 22:14
이번에 네이버 부스트캠프 웹•모바일 10기 베이직을 마쳤다. 자기소개서로 지원 신청을 하고 2주동안 베이직 단계를 진행했다. 베이직을 시작하며처음엔 자소서만 열심히 작성하면 베이직은 할 수 있을 거라 예상했었다.그렇기에 사람도 많았을 것이고, 가볍게 시작할 줄 알았다.OT 했을 때, 실시간 시청자가 1천 명이 넘었으니까 지원자는 확실히 많은 것 같다.(웹 풀스택(JavaScript), 모바일 iOS(Swift), 모바일 Android(Kotlin)이 전부 모여있어서 그런가?) 예상과는 달랐던 밀도 높은 여정하지만 1주 차 1일째를 제외하고 가벼운 과정이 아니었다.참가하는 사람들 모두 서로의 과정을 엿볼 수(?) 있어서 열심히 했을까..? 베이직에서 소개해주는 문구대로 컴퓨팅적 사고와 CS기초 개념을 기반..