본문 바로가기

전체 카테고리

(14)
Vapor - 로그인 구현하기 이전 글에서 라우팅로직을 간단하게 보고 간단한 JSON Response를 반환하도록 했다. 이번 글에서는 이메일 + 패스워드로 로그인이 가능하도록 하자. 목표 1. 로그인 전용 API 생성하기 - path: api/user/signIn으로 설정한 후 POST Method로 id(이메일), 패스워드를 전달받도록 함 2. email, password validation - 입력한 아이디가 이메일 형식에 맞는지, 패스워드가 최소 길이를 충족하는지에 대한 유효성 검사 수행 - CommonError 구성하기(response 에서 throw 하기 위함) 3. 적절한 Response 반환 - 유효성 검사 및 아이디, 패스워드로 로그인 성공 여부에 따라 적절한 응답 내려주기 - 기본 리스폰스(성공/실패)에 대한 틀 만..
Vapor - Routing + JSON Response 이번 글에서는 Vapor에서 다루는 Routing에 대해서 다뤄보고자 한다. 그리고 어쨌든 앱에서 받아야 할 데이터는 JSON형식의 데이터를 받아야 하니까 기본 JSON Response를 반환하는 것을 목표로 해보고자 한다. HTTP Request를 보낼 때는 여러 Method를 이용하여 보내게 된다. 크게 GET, POST, PUT, PATCH, DELETE 등이 존재한다. 일반적으로 해당 요청을 통해 수행하게 될 CRUD(Create, Read, Update, Delete) 작업에 따라 적절한 Method를 골라서 사용하면 된다. 당연히 Vapor에서도 이러한 기능을 제공하고 있다고 한다. 이번 글에서는 당장 데이터를 처리(생성 삭제 수정 등)할 게 없으니 GET 리퀘스트만을 날려보고 Response..
Vapor - 프로젝트 기본 구성 직전 글에서 hello 프로젝트를 생성 및 실행하여 http://127.0.0.1:8080에 접속하여 작성한 적 없는 "It works!" 문구가 출력된 것을 보았다. 실제 프로젝트를 통한 작업에 들어 기기 전 프로젝트가 어떻게 구성되어 있는지를 먼저 살펴보자 일단 Public, Sources, Tests 그리고 docker파일 해결된 패키지 등으로 구성되어 있다. 정확히 각 디렉터리의 파일들이 어떤 역할을 수행하는지 모르니 공식 문서를 살펴보도록 하자. Public 퍼블릭 디렉토리는 프로젝트에서 FileMiddleware가 활성화되어있을 때 앱 내에서 제공될 수 있는 파일들이 위치한다고 한다. 일반적으로 이미지, 스타일 시트, 브라우저 스크립트 등 웹페이지에서 표시되어야 할 스크립트 및 리소스들이 이 ..
Vapor - 시작하기(기본 프로젝트 생성) 2024년 새해가 되기도 했고, 개인앱으로 수익을 내보자라는 것을 첫 목표로 하고 나니 필요한 게 뭐가 있을까? 하다가 디자이너, 백앤드개발자 등이 없어서 개발을 못하고 있었... 다는 것은 사실 핑계고 없으면 혼자서라도 개발해보고자 한다. 먼저 백앤드부터 조금씩 맛보기로 했는데... 대세라는 Java(or Kotlin) + Spring은 언어 학습 + 러닝커브가 있어보여서 그래도 그나마 익숙한 언어인 Swift로 백앤드를 할 수 있는 Vapor를 사용해 보기로 했다. Vapor를 이용하면 SwiftNIO(크로스 플랫폼 비동기 이벤트기반 네트워크 앱 프레임워크 라고한다)위에서도 돌릴 수 있고, Swift로 작성되어 있으며 WebSite, API, HTTP server 그리고 백앤드를 구현할 수 있다고 한..
(iOS) Mergeable Library 삽질기(1) WWDC23에서 Mergeable Library에 대한 세션이 공개되었는데, 세션을 듣던 중 궁금한 것들이 있어 삽질한 내용을 정리해보고자 한다. 삽질한 김에 let us: Go! (iOS 개발자 컨퍼런스) 에서도 발표를 하게 되었다. - 자세한 내용은 영상 업로드가 되면 업데이트하겠습니다. 우리는 앱을 개발할 때 다양한 Swift Package Manager, Cocoapods, Carthage 등을 이용한 서드파티 라이브러리를 사용해 보면서 자연스럽게 라이브러리 사용에 익숙해져 있었다. 또한 앱 개발 중 분리하고 싶은 코드를 별도의 모듈로 만들어 Static 또는 Dynamic 하게 링킹 하여 사용하게 되었는데 이번에 공개된 Mergeable Library는 Dynamic의 빌드시간, Static L..
(iOS) Link fast: Improve build and launch times - WWDC22 앞부분 정리 프로젝트를 개발하는 과정에서 코드를 수정하고 빌드를 할 때 단순히 Build(Command + B) 버튼을 누르고 기다리기만 하는 경우가 많다. Link fast: Improve build and launch times에서는 빌드 과정에서 일어나는 일 중 특히 컴파일 및 링킹 과정이 어떻게 수행되는지를 잘 설명해주고 있다. 사내 세션 준비도 할 겸 해서 정리해 봤는데 포스팅까지 하기가 오래 걸렸다. 그럼 시작해 보자 Static Library 처음 프로그램을 개발할 때는 기능이 많지 않고 소스코드의 양도 많지 않았다. 하나의 소스파일을 컴파일하면 하나의 실행 프로그램이 나왔다. 갈수록 프로그램에서 요구하는 기능이 커지게 되고, 단순 소스코드의 양뿐만 아니라 관리점의 분리가 필요함에 따라 여러 소스코드로 ..
(iOS) Swift Macros 찍먹해보기 WWDC23에서 Swift Macros라는 기능이 공개되었다. 주로 프로젝트 진행 중 반복적으로 작성되는 보일러플레이트 코드를 줄이기 위한 목적으로 개발되었다고 한다. 얼마 전 Let Us: Go 행사에서 찍먹톤 행사를 통해 WWDC23에서 발표된 신규 기능에 대해서 접해보는 시간을 가졌는 데 이후 매크로에 대해서 정리해보고 싶었다. Macros Macro는 컴파일 시 작성한 소스코드를 변환하는것을 의미하며, 반복적인 코드를 작성하는 것을 피할 수 있도록 한다. 컴파일하는 동안 빌드 전까지 매크로에 대한 코드를 확장(Expand)한다. 매크로로 코드를 확장하는 것은 부가적인 작업이다. 매크로는 새로운 코드를 추가하지만, 기존 코드를 수정하거나 삭제하지는 않는다. 매크로의 입력 및 확장된 매크로에 대한 리..
(iOS) 유니플로거 리팩토링(3) 로그인, 회원가입 (feat. Spring Boot 삽질기) 앱의 메인 기능 개발에 앞서, 앱을 사용하기 위해서는 로그인이 필수이다.(일단 처음 기획이 그랬었기 때문에..) 따라서 앱 시작 후 가장 먼저 해야 할 일이 회원가입 그리고 로그인을 할 수 있도록 해야 한다. 일단 이를 위해서는 백앤드 작업이 필요한데..... 기존 작업돼 있던 코드를 보니 Python으로 개발이 되어있었다. 왠지 모르게 파이썬은 어렵게 느껴져 시도하기가 싫었고, node.js도 할 수는 있겠으나... 그래도 이왕 해보는 거 Kotlin 그리고 Spring Boot를 이용해 REST API를 구현해보고 싶었다. 개발환경. 언어: Java, Kotlin 둘 중에 뭐라도 상관없었음. Spring Boot Version: 3.0.0 - 그래도 버전이 높은 게 좋지 않을까 하는 기대감 빌드관리도..
(iOS) 유니플로거 리팩토링(2) 튜토리얼 저번 글에 이어서 유니플로거 프로젝트를 리펙토링....(사실 새로 만드는 중)하고 있다. (iOS) 유니플로거 리팩토링(1) XCFramework 올해도 애플에게 친구비 납입..... 올해도 친구 해줘서 고마워 애플.. 매년 친구비 나가는것도 아까운데 앱이라도 다시 출시해야지.... 2020년 말 YAPP 동아리를 통해 개발한 유니플로거라는 앱이 있 iosdev.tistory.com 이번 글에서는 튜토리얼, 로그인, 회원가입 화면을 새로 개발한 내용을 공유해보고자 한다. RIBs 적용하기 기본 립 구조는 다음과 같이 구성하도록 목표를 잡고 시작하였다. 처음 앱 실행 시 튜토리얼 수행(?) 여부에 따라 튜토리얼 화면으로 이동하거나 로그인 화면으로 이동되도록 해야 한다. 1. RootRIB RootRIB은 ..
(iOS) 유니플로거 리팩토링(1) XCFramework 올해도 애플에게 친구비 납입..... 올해도 친구 해줘서 고마워 애플.. 매년 친구비 나가는것도 아까운데 앱이라도 다시 출시해야지.... 2020년 말 YAPP 동아리를 통해 개발한 유니플로거라는 앱이 있다. 조깅하면서 쓰레기도 줍는 플로깅(Plogging)이란 활동을 조금 더 즐겁게 하도록 도와주는 취지로 개발되었지만, 서버 비용문제로 아쉽게 서비스를 종료했던 프로젝트인데..... 취직 후 개인프로젝트를 더 이상 진행하지 않다가 개인 공부 목적으로 무언가는 해야겠다 싶고.. 그렇다고 뭔가 새로 앱을 개발할만한 아이디어는 떠오르지 않아 이 프로젝트를 한번 리팩토링 해보고자 한다. 가능한 지금껏 iOS를 개발하면서 궁금했던 점들이 많았는데 그 중에서 특히 아래의 항목들을 공부하자는 취지에서 유니플로거 프로..