분류 전체보기

    네이버 부스트 캠프 8기 챌린지 (feat. 중도하차)

    네이버 부스트 캠프 8기 챌린지 (feat. 중도하차)

    네이버 부스트 캠프 챌린지 과정은 짧은 시간동안 CS+관련직무에 대한 언어 지식을 빠르게 키울 수 있는 과정입니다 더불어 개발할 때 꼭 필요한 도구나 지식에 대해서도 학습할 수 있습니다! 과정 과정은 일주일 단위로 진행된다. 매 주 팀원이 새롭게 구성되는데, 같은 포지션(iOS) 4~5명과 함께 한 주 동안 팀이 되어 활동한다 활동 내용은 매일 바뀌는 미션을 해결하고, 다음날 오전에 팀원들과 리뷰+회고를 하는 방식 이 시간을 의미있게 쓰고 싶어서 팀원들에게 코드리뷰를 코멘트로 달아주자고 했었다! 덕분에 코드리뷰하는 방법과 다른사람의 코드를 분석하는데 도움이 많이 되었던것 같다 👍 네부캠에는 직무에 능숙한 사람보다 해당 직무를 처음 접하는 사람이 꽤 많았다 그래서 Swift언어를 처음 사용해보는 팀원들도 ..

    네이버 부스트 캠프 8기 합격후기

    네이버 부스트 캠프 8기 합격후기

    네이버부스트캠프(네부캠)은 네이버 커넥트 재단에서 주관하는 프로그램이에요! 대외활동 중에서는 퀄리티가 꽤 높다고 생각해 취준하면서 도전해보았습니다 과정은 서류합격 이후에 두 번의 코테가 있습니다 서류 주변에 지난 네부캠에 합격했던 사람들이 많아서 도움을 많이 받았어요! 네이버가 자소서를 굉장히 중요하게 생각하는것 같습니다 공개채용 때도 그렇고 자기자신에 대해 고민해볼 수 있는 질문이 많았어요 ❓ 왜 개발자가 되고 싶나요? 소프트웨어 개발을 더 잘하고 싶어서 시도했던 경험 “해야 하는데”에서 끝나지 않고 실천했거나, ~ 자기주도적으로 사고하고 행동한 경험 열린 사고로 동료와 협력한 경험 개인적으로 이런 질문을 좋아하는데, 개발자로서 나를 다시 돌아보고 고민해볼 수 있어서 좋은것 같습니다! 네부캠은 협업&몰..

    [Swift] 재사용 가능한 NetworkManager만들기 (feat. Generic)

    지난번에 이런 글을 썼었는데, https://990427.tistory.com/112 [Swift] json value type이 달라지는 response에 대응하여 API Responder만들기 요즘 Set이 된 나의 개발 스타일,, 중복을 다 제거해버리자 지금 하고 있는 프로젝트에서 API를 다음과 같이 명세했습니다 그래서 어떤 api를 호출하냐에 따라 form의 변화는 없지만 data의 값은 항상 990427.tistory.com 상태 코드를 받을 수 없다는 문제점도 있었고, 모듈마다 다 다른 MoyaProvider를 사용하다보니까 저번에 만든 함수의 쓰임이 좀.. 별로랄까? 그래서 개선해보자!고 생각했고 조금더 유연하게 사용할 수 있도록 BaseNetworkManager를 만들기로 했습니다. Ba..

    [UIKit] CustomDatePicker 만들기 (3/3)

    [UIKit] CustomDatePicker 만들기 (3/3)

    Rx를 모르신다면 이해하기 어려울 수 있습니다 🥹 드디어 마지막 관문.. 년,월을 관찰하여 일 수를 정하자! 일단 나는 지금 이걸 만드는 중이다 년,월은 의존성이 없지만, '일'은 년,월에 의존성을 가지게 된다. 1월은 31일까지, 2월은 28일까지 뭐이런거 ~.. 그래서 '일'은 년,월이 바뀌면 reset을 해주어야 한다. 예를들어 2023년1월31일을 만들어준 상태에서 '월'을 2월로 바꾸면 31일은 없기 때문에!! 그래서 customPicker에서 뭔가를 선택했을 때 관찰하는 대상에게 알려줄 수 있도록 Rx를 추가적으로 적용했다. (1/3)에서 만들었던 CustomPickerButton에 추가한 부분! public class CustomPickerButton: UIButton { var change..

    [Swift] 서버에 iOS 이미지 보낼 때 용량 이슈 & 해결

    [Swift] 서버에 iOS 이미지 보낼 때 용량 이슈 & 해결

    이미지 업로드 구현중에 생긴 이슈 form-data로 아이폰 사진첩에 있는 이미지를 서버로 보내려면 JPEG로 변환해야 합니다 아이폰에서 기본적으로 HEIF 확장자로 사진을 저장하는데, 이는 호환성이 떨어지기 때문입니다 어쨌든 우리는 PHPicker를 통해서 사진첩에 있는 사진을 가져올 수 있고, 이를 jpeg로 변환하기 위해 jpegData를 사용합니다 image.jpegData(compressionQuality: 1.0) 사실 뒤에 1.0은 기본값이라고 생각하고 아무 생각없이 썼는데 얘때매 이슈가 생길줄이야... Moya를 통해 API 통신을 하는데, 계속 이런 에러가 뜨는 것.. Failed to map data to a Decodable object. postman으로 아이폰 사진첩에 있는 사진 ..

    [UIKit] toast message 만들기

    [UIKit] toast message 만들기

    앱을 만들다보면 toast msg를 띄워서 정보를 주는 경우가 많은데 아쉽게도 iOS에는 그런 기능이 없다.. 직접 만들자! 우선 UIView를 상속하는 class를 만들어 줍니다 public class ToastMessage: UIView {} 저는 요론 종류의 토스트 메세지를 만들거에요 (x는 제외) 그래서 이런 프로퍼티와 enum이 필요합니다 public enum ToastType { case common, alert, info } var text = UILabel() var icon = UIImageView() var type : ToastType UI는 각자 취향껏 만드시고 (생략) 토스트 메세지의 특징은 잠깐 떴다 사라지는거 잖아요 ? 그 부분을 구현하기 위해 animate를 사용했습니다 an..

    [Swift] json value type이 달라지는 response에 대응하여 API Responder만들기

    [Swift] json value type이 달라지는 response에 대응하여 API Responder만들기

    요즘 Set이 된 나의 개발 스타일,, 중복을 다 제거해버리자 지금 하고 있는 프로젝트에서 API를 다음과 같이 명세했습니다 그래서 어떤 api를 호출하냐에 따라 form의 변화는 없지만 data의 값은 항상 달라진다 일단 json을 파싱할 struct를 만들어주어야 하는데, 모든 api마다 struct를 만들게 되면 이런식으로 계속해서 DTO struct의 중복이 일어나게 된다 중복이 너무 싫은 나.. 제네릭으로 묶자! struct ResponseDTO : Decodable { var success : Bool var data : CommonDataDTO var error : ErrorDTO? } struct ErrorDTO : Decodable, Error { let code : Int let mes..

    [RxSwift] 개념잡기 (Subscribe, Observable, Subject)

    [RxSwift] 개념잡기 (Subscribe, Observable, Subject)

    최대한 간단하게 설명해보는 RxSwift iOS 공부하는 사람은 무조건 들어봤을 RxSwift RxSwift는 ReactiveX Swift인데요, reactiveX ? 대충 해석하면 옵저버블을 사용해서 비동기나 event-based를 구성하는 것이다 옵저버블이 뭔데 ????? Observable ? 대충 해석하면 - 옵저버는 옵저버블을 구독한다 - 옵저버는 옵저버블이 방출하는 items에 대해 반응한다 - 옵저버는 대기하지 않고, 반응할 준비를 한 어떠한 형태로 기다린다 items이 어떤건지는 몰라도 일단 옵저버는 옵저버블이 뭔가를 하면 반응한대!! 옵저버가 무슨 형태인지는 몰라도 일단 대기 ㄴㄴ 즉, sync ㄴㄴ 많은 용어들이 나오는데 Observer, Observable, Subscribe 근데 이..

    [Swift] Custom Calendar 달의 마지막 날 구하기

    [Swift] Custom Calendar 달의 마지막 날 구하기

    이 글은 UI를 제외하고 날짜 계산을 하는 로직만 담고 있습니다 Custom Calendar를 만들다보니 해당하는 달의 마지막 날이 언제인지 계산해야 했다. 알고리즘 처럼 접근하면 윤 달도 계산해줘야 하고 속도 측면에서도 비효율적이라고 생각해서 foundation상에 있는 calendar라는 구조체를 사용해서 만들었다! 먼저 날짜 계산에 필요한 Calendar와 DateFormatter를 만들어주자 let calendar = Calendar(identifier: .gregorian) let dateFormatter = DateFormatter() dateFormatter.dateFormat = "yyyy-MM-dd" 첫 날은 무조건 1일이니까 직접 입력해준다 let st = dateFormatter.da..

    sw마에스트로 13기 활동후기 (멘토링, 팀프로젝트)

    sw마에스트로 13기 활동후기 (멘토링, 팀프로젝트)

    https://990427.tistory.com/84 sw마에스트로 13기 합격후기 (자소서,코테,면접) 합격후 한참 바쁠때 쓰는 합격후기&회고 사실 큰 기대 없이 시작했다. 작년에 굉장히 열심히 준비했음에도 불합의 아픔을 겪었기 때문에,, ㅎㅎ 올해는 고민하다가 나답지 않게 하루전에 자소서 990427.tistory.com 회고와 회상에 가까울 13기 활동후기 글을 써보려고 한다. 요약 소마를 했던 2022년을 한단어로 요약하자면 ✨완벽✨ 이다 소마에서 했던 공부들과 만났던 사람들 모두 너무 감사했던 완벽한 1년이였다..! 누가 나한테 다시 돌아가도 소마 하겠냐고 물어본다면 0.1초의 망설임도 없이 YES다. 예비과정 소마 사무국에서 대부분의 활동 과정들을 노션에 정리해주셨다 예비과정은 아무것도 모르는..