Vapor - middleware
·
Vapor-Server with swift
클라이언트(즉 아이폰)에서 서버로 요청을 보낸다. 근데 그 서버에 닿기 직전에 이 벽(미들웨어)를 거쳐서 지나간다. ex) Authentication 미들웨어는 유저가 어? 너 회원이야? 아니야? 판단을 할수 있음!! code로 보자 routes파일에다가 app.middleware.use(LogMiddleware())이거만 해주면 어떠한 우리가 요청을보내든 Log middleware가 찍히는것을 볼 수 있다. 주의행할것은 next.respond(to: request)를 해주지 않는다면 절대 우리가 가려던 곳에 reach할수 없어용 이제 아까 예시를 들었던 유효한 토큰이 있을때만 서버를 통신하도록 하는 코드를 작성해보자!! struct AuthenticationMiddleware: AsyncMiddlewa..
Vapor - routes관리
·
Vapor-Server with swift
저번까지 Vapor를 다운받고 프로젝트를 생성해봤다. 그럼 이번시간에는 쪼끔 코드를 끄적끄적.....해봐야지? routes file에 가게되면 기본적으로 이렇게 있다. 저 app.get을 통해 우리는 localhost를 통해 들어가면 it works가 뜬다. 또한 https://127.0.0.1:8000/hello 를 get요청보내면 "hello wolrd라는 글씨가 보인다. 이렇게 그냥 string으로 작성하면 그 주소로 접근했을때의 리퀘스트에 대응할수 있다. 그렇다면 dynamic한 파라미터들이 오려고 하면 어떻게 해야할까 ? ex) movies/page/1 2 3 00.....이런식으로 그것도 쉽다. app.get("movies", ":menu") { req async throws -> String..
Vapor-Swift로 서버구축하기
·
Vapor-Server with swift
저는 지금까지 태어나서 한번도 백엔드 코드를 짜본적이 없습니다.. 1도 모릅니다. 하지만 풀스택 개발자가 되고 싶어 백엔드를 공부하고 싶어 뭘 할까 생각하다 python을 배우면 장고가 잇꼬 자바스크립트를 배우면? 노드 Js가 있다. 그러면 Swift는??? Vapor 이름부터 간지난다. 이 친구를 다운받으려면 brew install vapor 를 통해 설치를 해야합니다. 1. 프로젝트 파기 vapor new khu-ki(내 프로젝트이름) -n -n 이 의미하는 것은 원래 저걸 쓰지 않으면 너fluent 쓸래? Leaf쓸래? 물어보는데 그거다 ㄴㄴ 하고 걍 프로젝트 파는거다. ㄷㄷ 프로젝트가 생성되면 제일 처음 다 다운받아지는 파일들이다. 패키지들도 받아져있는걸 볼 수 있다. 또한 running은 맥으로..
9251-Swift알고리즘
·
알고리즘
오랜만에 돌아온 알고리즘 솔루션정리!!!https://www.acmicpc.net/problem/9251 9251번: LCSLCS(Longest Common Subsequence, 최장 공통 부분 수열)문제는 두 수열이 주어졌을 때, 모두의 부분 수열이 되는 수열 중 가장 긴 것을 찾는 문제이다. 예를 들어, ACAYKP와 CAPCAK의 LCS는 ACAK가 된다.www.acmicpc.net오늘의 문제이다! LCS최장 공통 부분 수열을 구하라는 문제!어떻게 구하면 될까?1. 맨 마지막문자열부터 비교를 해보면 된다. 예를들어 이렇게 있을때 만약 맨마지막 문자열이 같다? 하면 이전까지의 최장공통부분수열의 개수 + 1이다.즉 LCS(i,j) = LCS(i-1, j-1) + 1 이라는 점화식이 나오게 된다. 그렇..
매크로(Macros)
·
면접준비
잉? 나는 따로 구조체에서 Init을 선언해주지 않았는데 뜨네?이게모지? memberwise initialization이는 컴파일러가 자동으로 init메서드를 생성해주기 때문이다.그렇다면 만약 WhatisMacro에 어떤 프로퍼티도 추가해주고 야 이것도 자동 컴파일러가 하게 해줘!🍎음...비효율적인데? 물론 swift compiler는 오픈소스야 잠만. 우리회의해보자...🧑🏼‍💻어? 그럼 일일이 너네랑 회의해야해? 확장성 딸리네?그래서 나온놈이 매크로다! 🧑🏼‍💻얘가 원하는데로 컴파일러를 수정하지 않고 Swift Package로 배포하는 방법!개발자가 원하는 방식으로 코드를 자동 생성할 수 있도록 돕는다. 매크로란?Swift 매크로는 컴파일러가 소스코드를 자동으로 생성하거나 확장할 수 있도록..
초기화(initialization.. 편의? 지정?)
·
면접준비
https://bbiguduk.gitbook.io/swift/language-guide-1/initialization 초기화 (Initialization) | Swift타입의 저장된 프로퍼티에 초기값을 설정하고 초기 설정을 수행합니다. 초기화 (Initialization) 는 인스턴스의 클래스, 구조체, 또는 열거형을 사용하기 위해 준비하는 단계입니다. 이 단계에는 인bbiguduk.gitbook.io여기들어가면 어마어마하ㄷ..분량이... 그만큼 초기화가 swift에서 중요하다.Swift는 모든 저장된 프로퍼티가 초기값을 받을 수 있도록 클래스 타입에 대해 2가지의 초기화 구문을 정의한다. => 바로 지정된 초기화와 편의 초기화라는 친구들이다.지정된 초기화(designated Initializer)해당 ..
Function(1급시민 , inout & 클로저✨)
·
면접준비
Swift의 함수는 1급 타입(First Class-type)이다근데 1급타입이 몬데 ? 아래의 3가지를 만족하면된다.아래의 3개가 1급시민의 조건이고 그것을 충족하는 객체가 1급객체이다.변수와 상수에 함수가 저장될수 있다. 아래에서 보면 increment라는 변수에 함수를 할당해주었다. 그러면 저 변수는 함수 그자체그런데 주의 할게 동일한 이름의 함수가 오버로딩 되어있을때는 타입추론이 안되고 타입 명시를 해주어야함.함수가 다른 함수를 값으로 반환할 수 있다.func makeIncrementer() -> ((Int) -> Int) { var answer = 1 func addOne(number: Int) -> Int { return answer + number } return..
Assertions && Preconditions
·
면접준비
Swift기본을 다지기 위해 공부하던중 역설과 전제조건....뭐야 왜이렇게 입에 안달라붙고 한국어가 어렵냐..하며 찾아봤다... - Runtime시 발생하는 조건 - 불값이 true면 코드가 진행되고 false면..? 종료시킬수 있음 - 역설은 개발과정에서의 실수를 찾는데 도움을 주고 전제조건은 프로덕션문제 감지하는데 도움을 준다. => 유효하지 않은 조건이 발생하지 않도록 코드를 디자인하기 위해 사용한다. 뭐가다른데? 역설은 오직 디버그 빌드에서만 체크(프로덕션에서는 영향을 안주기에 개발단계에서 많이 해도 상관없다) 전제조건은 디버그와 프로덕션 빌드에서 체크 출시할때 엄청 크리티컬한거 예를들면 어? 이 함수 저번 버전인데 우리 업데이트했는데? 그래서 안바꾸면 API통신 안될텐데.? 프로덕션하고 디버그 ..