2021의 게시물 표시

[SwiftUI 공부] Swift UI 시작해보기

이미지
  [SwiftUI 공부] Swift UI 시작해보기 안녕하세요. 물먹고하자 입니다 :) iOS13 시절 SwiftUI 가 발표했는데,  역시나 초반이라 미지원되는 점과 변경된 점들이 많아  ' SwiftUI 1.0, 2.0' 때는 개발공부를 시작하지 않았었습니다.  이제 SwiftUI 3.0 때가 발표하면서 Swift 초기 3.x 때부터 안정화단계  생각이 들어 업무에 투입할 수 있는 부분을 고려하면서 공부해보려고 합니다. UIKit 기반으로 약 10년가까이 실무경험이 있다보니,  개발속도가 당연히 UIKit이 안전하고 빠르지만  그리도 Apple놈들이 앞으로 밀고있는 방식이니 공부해 놔야겠다.  (iOS, iPadOS, MacOS 통합개발을 위한 발판?!) 오늘은 시작으로 프로젝트까지 생성하고,  기존의 UIKit 기반 프로젝트와 다른점, 앞으로 알아봐야할 점만 짚고넘어가며 애플에서 공식적으로 제공해준 SwiftUI Tutorials 을 따라하고 난뒤,  관련된 View 들을 따라 만들어볼 예정이다. 링크 :  https://developer.apple.com/tutorials/swiftui   샘플프로젝트 프로젝트 최초 생성하고 나면, 구성이 아래와 같다. ProjectName_SwiftUIApp : AppDelegate?, SceneDelegate? 역할로 보여짐 ContentView : 최초 생성되는 Key View Asset : 이미지 등 관리 목적 Preview Content : ??? 느낌상으로는 PreviewProvider 에서 사용할 미리보기용 Asset 인 것 같다. 구성은 이제 샘플따라해보면서 늘려볼 예정입니다. 사실 이부분이 약간 멘붕(?) 인데, 샘플프로젝트들이야 App, Scene Delegate 를 크게 건드릴게 없다지만, [AppDelegate 시작점] - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(nullabl

[Git] sourceTree requested URL returned error: 403 오류 해결

이미지
  [Git] sourceTree requested URL returned error: 403 오류 해결 안녕하세요. 물먹고하자 입니다 :) 오랜만에 개인공부 프로젝트 진행 전 GitHub 프로젝트 추가전 Push에서 403 에러 나는 부분 정리입니다. [GitHub Blog 인증방식변경에 대한 글] https://github.blog/2020-12-15-token-authentication-requirements-for-git-operations/ 아하.. 2021년 8월 13일 부터 패스워드 형식을 사용안하기 시작했군요...  육아로 인해 바빠서 그동안 못했네요 (변명) requested URL returned error: 403 에러 발생 저장소 주소 설정 변경 기존 : https://<git_url>.git 변경 : https://<username>:<token>@<git_url>.git   마무리 최근 육아와 일의 양이 많아서 개인공부를 못하고 있었는데, 다시 시작할까 합니다! 일단 시작인 Github 이슈부터 정리하고 해야겠네요 :) 즐거운 코딩 되세요~   참조 -  https://devsurimlee.tistory.com/33

[iOS] 초성 검색 지원하기 (유니코드 초성분리)

이미지
  [iOS] 초성 검색 지원하기 (유니코드 초성분리) 안녕하세요. 물먹고하자 입니다 :)  최근 업무중 초성검색을 해야 할 일이 있어서 개발진행 후 정리 공유합니다. 바로시작!! (예시) 실제 개발코드 적용 부분 CollectionView + filter 활용   예제소스 (Playground)   마무리  Objc 에서는 필터링해서 사용할 생각을 별로 안했었는데, Swift로 넘어오면서 기본기능들이 강력하다보니 조회하는 방식을 바꾸고 있습니다.  비슷한 고민하시는 분들 도움되셨으면 좋겠습니다.  오늘은 끝  즐거운 코딩 되세요~    참조  - https://hongssup.tistory.com/130

2021 WWDC 참고사항

금일부터 시작된 2021 WWDC 내용을 더 알아봐야겠지만, 언제나 공부할게 많아지는것 같다.   요약 문서링크 :  https://developer.apple.com/documentation/New-Technologies-WWDC-2021?fbclid=IwAR3PhKs1GBve-ciU8ga0G-I5tWcXw7GCxdkAqKEogo3bfVpicY-FAQYi6rI [iOS 개발자 픽 키워드] 1. Xcode Cloud    => 기존 Xcode Bot(CI) 행위가 Cloud로 추가되고, 배포, 테스트 플라이트가 편해짐.      단, 유료인것 같음(가격 미정) 2. Swift LifeCycle   => 비동기 관련된 라이프사이클을 좀더 편하게 제공해줌. (개발적 편의사항)      기대효과로는 비동기에 작업에 의한 앱크러쉬(메모리관련된 예외처리)가 줄어들것으로 보임      단, iOS15 이상부터로 판단됨. 3. SwiftUI 강화   => Swift 버전 업데이트때 마다 UIKit에서 제공해주는 기능들이 대거 업데이트 되고 있음.      커스텀마이징 및 일부  4. UIKit 추가 내용   * 아직까진 커스텀마이징 및 아마란스 대응시 사용하고 있어 추가된 컨텐츠 내용 확인필요.   - SharePlay (iOS 15 이상)     => 애플문서쪽은 업데이트 된게 없음.        앱단에서 사용할 수 있으면, 화면공유시에 사용될 것으로 예상됨   - UISheetPresentationController (iOS 15 이상)     => 2021년 6월 9일(수) 발표예정        하단 띄우는 방식(기존 커스텀 방식) 기본으로 제공        높이, 라운드 처리등 커스텀마이징 가능...   - Keyboard Layout Guide (iOS 15 이상)     => 2021년 6월 8일(화) 오늘 새벽 공계예정        앱 화면 내 키보드 차지하는 공간 알려주는 가이드        키보드 도킹예제 (iPad 키보드

[iOS] CryptoKit 알아보기 (SHA512 + Salt 샘플)

이미지
  [iOS] CryptoKit 알아보기 (SHA512 + Salt 샘플) 안녕하세요. 물먹고하자 입니다. 오늘은 회사업무중 SHA512 + Salt 확인해 볼 일이 있어서 작업 후 몰랐던 내용도 있어서 정리 공유하고자 합니다. 바로 시작!!   샘플소스 많이 보는 암호화 방식입니다. (SHA256 + base64 - objective C) 저도 Swift는 사용하는데, 유독 암호화쪽은 검증이 완료되었던 Objc 소스 그대로 사용하고 있습니다. 서버, 웹, 안드로이드, 메신져(맥, 윈도우) 모듈과 맞춰야하다보니 더더욱 쉽사리 바꾸기가 어렵네요. (어찌보면 귀찮아서 그냥 쓴것도 있어요) 이번에 회사에서 SHA512 + Salt + base64 로 바꾸자고 해서 이참에 Swift 변경하고, 애플에서 제공중인 CryptoKit(iOS13 이상) 을 사용해 보려고 합니다. 참고 사이트들 AppleDocument :  https://developer.apple.com/documentation/cryptokit 1. SHA512 + Salt 확인하는 사이트 https://www.convertstring.com/ko/Hash/SHA512 2. 암호화 결과 확인하는 사이트 (여러종류 다 있음) https://emn178.github.io/online-tools/base64_encode.html 예제 소스Git :  https://github.com/kimjiwook/JW_iOS_Example.git 예제소스 참고   마무리 당연하게 안바꾸고 있던것들은 언제나 새로 편리하게 나오고 있는 것 같다. Swift 언어변경도 거의다 되어가다 보니 세세한거 하나하나 바꾸는 재미도 있는것 같다. (공부도 되고) 오늘은 끝 즐거운 코딩되세요~

[iOS] SF Symbols 알아보기 (애플기본이미지 사용하기)

이미지
  [iOS] SF Symbols 알아보기 (애플기본이미지 사용하기) 안녕하세요. 물먹고하자 입니다. 회사업무에는 디자인팀이 있다보니 상관없지만, 개인개발시 아이콘 하나 구하기도 빡센것 같습니다. iOS 13 이상부터 애플에서 제공하는 기본 이미지를 사용할 수 있는데, 이름을 몰라서 못쓰고 있어서 찾아보니 앱으로도 제공을 하고 있어서 공유드립니다.   샘플시작 샘플소스 :  https://github.com/kimjiwook/JW_iOS_Example.git (샘플 앱중 SF Symbols 실행부분) 애플 디자인 리소스 :  https://developer.apple.com/design/resources/ 해당 사이트에서 SF Symbols 앱 다운로드 가능합니다. (받으시는거 추천!) 앱 실행하면 우리가 많이 보던 아이콘들이 나옴! 애플에서 사용되는 아이콘들이겠죠?! 아이콘들 우클릭해서 정보를 보니 [기호복사, 이름복사] 기능이 있습니다. 해당기능 사용시 이렇게 복사 됨! 폰트에 따라 조금조금씩 틀림 (뒤에서 언급하는데, 지원되는 폰트가 없어서 결국 똑같음) 그리고 색상에 대한 옵션이 있는 아이콘인지 아닌지도 확인가능 (신기함..) 샘플 앱에서 이미지, 버튼에 적용된거 확인가능 텍스트는 결국 폰트 문제로 ?? 로 나옴   마무리 iOS13 때 system image 추가된건 알고 있었는데, 이름을 몰라서 사용을 못하고 있던부분도 있었다. 이번에 심심해서 찾아보니 결국 어딘가에 정리되어 있다는걸 알았고, 프로젝트에 일부는 활용중이다. 알고 있으면 좋을 것 같아서 공유드립니다. 즐거운 코딩되세요~

[SPM] 05. SPM Private Git(GitLab), 폴더구조 변경 (회사 사용용도)

이미지
  [SPM] 05. SPM Private Git, 폴더구조 변경 (회사 사용용도) 안녕하세요. 물먹고하자 입니다. Swift Package Manager(이하 SPM) 다섯번째 시간은 드디어 대망의 회사에서 사용하려는 Private Git 과 폴더 구조 변경입니다. 바로 시작해 보겠습니다.    샘플소스 회사 전용 Git 서버는 GitLab 으로 구성되어있음. 앞선 SPM 구성하는 형식과 동일하게 프로젝트까지 생성 GitLab에 Release 가 없어서 Tag로 발행 (이건 다른곳도 차이 있는지 모르겠음) #. GitHub에는 Release 존재함. 간단하게 첫번째 Tag 발행 성공!! 바로 프로젝트에서 SPM 연동작업 문제없이 다운로드까지 됨!! (여기까진 연결, Tag 발행 완료) 앞선 테스트에서는 폴더 구조를 신경쓰진 않았지만,  회사 공통모듈로 개발시 양이 많아질 걸 고려해서  폴더구조로 구분짓는게 좋다고 판단함. 폴더 구조를 변경하고 Target의 path 정보를 명시적으로 작성해줌. #. 이부분에서 삽질을 많이 했는데, Alamofire, Hero, SanpKit 등  메이져급 라이브러리 참조해서 비슷하게 구조 잡음. 폴더 구조또한 정상적으로 접근잘됨.    번외 태그 발행하기. 매번 웹페이지에서 태그를 발행하는게 귀찮았는데, Source Tree 연동해서 커밋된 내용을 Tag 발행할 수 있음. 이렇게 하고 업데이트 해도 정상! 두번째 방법은 개발 당시 정식 Tag를 발행하면, 다른 프로젝트에 영향이 갈 수 있으므로 특정 커밋본을 바라보게 업데이트 할 수 있음. 커밋ID 복사! 웹에서는 해당 위치에 커밋ID 복사버튼 있음. 라이브러리에 [Commit] 란을 선택하고 업데이트 하면 해당 버전으로 SPM 을 바라볼 수 있음.   마무리 지금까지 이부분을 도입하려고 달려왔는데, 결과적으론 생각했던 부분이 전부다 되는 걸 입증한 것 같아서 기분이 좋습니다! 분명히 파일들이 늘어나고 리소스 관리를 하다보면, 생각지 못한 부분이 발생은 할 것 같은데, 공

[SPM] 04. SPM 라이브러리 소스 접근 (resources, dependencies 사용)

이미지
  [SPM] 04. SPM 라이브러리 소스 접근 (resources, dependencies 사용) 안녕하세요. 물먹고하자 입니다. Swift Package Manager(이하 SPM) 네번째는 저번시간에 이어 라이브러리 접근관련된 내용입니다. 소스접근, 리소스접근, SPM 내 라이브러리 추가하기 사용 이렇게 내용 작성했습니다. 바로 시작! (오늘도 이미지가 많아요)    1. 접근제어  언제나 시작전 메이져급 라이브러리들이 어떻게 구성되었는지 확인해본다! (Alamofire 참조했음.) 접근제어 작성했던 주소 :  https://xodhks0113.blogspot.com/2019/10/swift.html 언제나 공부는 했지만 기억나지 않았다.... 실제 프로젝트 사용하면서 workspace 내에서 open 은 사용을 안했는데, 이번에 한번 더 깨닫게 된다 ㅋㅋ... 다음 접근제어 구분 변경 open 으로 변경된 형식에서 정상적으로 접근되는걸 확인 할 수 있다!    2. 리소스 접근 (resources) 이번에는 asset (이미지), ViewController(+Xib) 를 호출하는 테스트를 진행해 보려고 함. 기본생성만 해놓고 (nibName: bundle) 호출 함. 역시나 안됨. bundle 에 해당 nibName 을 찾을 수 없다고 함. 다시 라이브러리로 가고 접근해야하는 resource(임의 제가 만듬)  파일을 하나의 폴더로 묶고 targets > resources 에 해당 폴더명 추가함. 단, bundle: .module 구문이 SPM 내부에서만 사용이 가능해서 생성자로 위와같이 구성해줌. 이후 샘플소스에서 호출시 정상적으로 접근되고 Xib 파일 열림!    3. SPM 내 라이브러리 추가하기 (dependencies) #. SPM 내 라이브러리를 추가하려고 하는 가장 큰 이유가 공통 ViewController, Networking 일부를 완전 공통으로 빼서 사용하려고 하는데, Alamofire, SnapKit 이 없으면 코드