iyOmSd 202

[Vapor] MySQL 연동 및 데이터 CRUD (Fluent)

Vapor버전 4.0을 기준으로 작성된 게시글입니다! DB기능을 Vapor에서 Fluent라고 지칭하는것 같아요 MySQL인 경우 // dependencies에 추가 .package(url: "https://github.com/vapor/fluent.git", from: "4.0.0"), .package(url: "https://github.com/vapor/fluent-mysql-driver.git", from: "4.0.0-beta") // target에 추가 .product(name: "Fluent", package: "fluent"), .product(name: "FluentMySQLDriver", package: "fluent-mysql-driver") 위의 코드를 추가해주면 아래와 같이 되겠죠..

iyOmSd/Title: Vapor 2021.03.06

[Vapor] Validation 유효성검사

Vapor버전 4.0을 기준으로 작성된 게시글입니다! struct Hello: Content { var name: String? } extension Hello: Validatable { static func validations(_ validations: inout Validations) { validations.add("name", as: String.self, is: .count(3...)) } } ​ app.get("validation") { req -> String in try Hello.validate(query: req) let name = try req.query.decode(Hello.self).name! req.logger.info("validation test") return name..

iyOmSd/Title: Vapor 2021.03.06

[Vapor] Routing (경로 설정, Data받아오기)

Vapor버전 4.0을 기준으로 작성된 게시글입니다! HTTP Method에는 get - read post - create put - replace patch - update delete - delete 가 있어요 이러한 통신규약을 통한 통신을 만들어볼거에요 //http://127.0.0.1:8080/hello/vapor app.get("hello", "vapor") { req in return "Hello, vapor!" } //http://127.0.0.1:8080/hello/vapor app.on(.GET, "hello", "vapor") { req in return "on hello vapor" } app.get - get에 특화된 함수 app.on(HTTPMethod) - 메소드를 설정해주는 함..

iyOmSd/Title: Vapor 2021.03.06

[Vapor] 프로젝트 기본설정 및 설치

Vapor버전 4.0을 기준으로 작성된 게시글입니다! 맥북을 사용하시면 brew는 익숙할거라 생각하고 시작할게요! vapor를 다운해볼까요 brew install vapor vapor new hello -n hello 라는 이름의 프로젝트를 새로 만들어주는 명령어구요 -n은 그냥 vapor new hello만 한다면 설정을 해주기위해서 질문에 답해야하는 모든 것들을 자동으로 no로 설정하는거에요 프로젝트 기본구조가 이렇게 있을거에요 configure.swift에 route, database, provider같은 서비스를 등록해주고 routes.swift에 경로를 등록해줘요 자세한건 문서를 참고하세요! docs.vapor.codes/4.0/folder-structure/ 프로그래밍의 시작은 Hello Wo..

iyOmSd/Title: Vapor 2021.03.06

[Swift Algorithm]12978 배달 (서머 윈터 코딩)

programmers.co.kr/learn/courses/30/lessons/12978 코딩테스트 연습 - 배달 5 [[1,2,1],[2,3,3],[5,2,2],[1,4,2],[5,3,1],[5,4,2]] 3 4 6 [[1,2,1],[1,3,2],[2,3,2],[3,4,3],[3,5,2],[3,5,3],[5,6,1]] 4 4 programmers.co.kr 풀이방법 그래프문제네요 머리로는 생각이 났지만 풀수가 없어서 개념을 다시 참고했구요 2021/03/06 - [iyOmSd/Title: Algorithm풀이] - [Swift Algorithm] 플로이드 와샬 풀면서 이 개념을 쓰면 편하겠다라는 생각은 들었지만.. 더 노력해야겠어요 아무튼 위의 플로이드 와샬 알고리즘을 사용하면 간단해지죠! 최소거리를 잘..

[Swift Algorithm] 플로이드 와샬

그래프 문제에서 자주 출제되는 문제유형중 하나에요 알고 있으면 정말 유용하게 사용 할 수 있다고 생각해요 그래프유형에서 크루스칼 알고리즘과 플로이드 와샬이 대표적인 그리디 알고리즘이에요 크루스칼은 최소 간선을 싸이클 없이 더해가면서 최소 비용을 찾는 과정이라면 (한 정점에서 다른정점으로 가는 최단거리) 플로이드 와샬은 현재 노드의 최솟값을 지정할때 현재값과 다른 경로로 왓을때의 최솟값을 비교해서 넣어주는 방식이에요 (모든 정점에서 다른정점으로 가는 최단거리) 1에서 5까지가는경우는 1 - 2 - 3 - 5 -> 비용5 1 - 2 - 5 -> 비용 3 플로이드 와샬은 이런경우에 유용해요 사용하면 1에서 5까지의 비용은 3이라고 저장되는 방식이에요 func 플로이드와샬() { for i in 0..

[Swift Algorithm] 49994 방문길이 (프로그래머스)

programmers.co.kr/learn/courses/30/lessons/49994 코딩테스트 연습 - 방문 길이 programmers.co.kr 풀이방법 범위가 여유있기때문에 생각하기 쉬운편에 속하는 문제였어요 UDRL 문자대로 움직이고 중복되는 라인은 세지않고 범위를 넘어가지않도록 넘어갈경우 제자리! 튜플(Int, Int)를 이용해서 하려고했지만 Set 튜플이 Hashable하지않아서 Set에는 사용할 수 없더라구요 그래서 구조체를 만들어서 사용햇고 선분은 (1,0) - (0,0) 을 연결한것과 (0,0) - (1,0)을 연결한 것이 같기때문에 == 연산자를 구현해주면 Set에서 걸러질줄 알았는데 안걸러지더라구요 그래서 한번은 그대로 한번은 순서를 바꿔서 2개씩 저장했어요 양방향을 Set에 저장해..

[Swift Algorithm] 72412 순위 검색 (2021 카카오 블라인드 공채)

programmers.co.kr/learn/courses/30/lessons/72412 [Int] { var result: [Int] = [] struct Info { enum DevLanguage: String { case java, cpp, python } enum Job: String { case backend, frontend } enum Career: String { case junior, senior } enum Food: String { case chicken, pizza } let language: DevLanguage let job: Job let career: Career let soulFood: Food let score: Int init(_ s: String) { let infos ..

[Swift Algorithm] 68936 쿼드압축 후 개수 세기 (월간 코드 챌린지1)

programmers.co.kr/learn/courses/30/lessons/68936 코딩테스트 연습 - 쿼드압축 후 개수 세기 [[1,1,0,0],[1,0,0,0],[1,0,0,1],[1,1,1,1]] [4,9] [[1,1,1,1,1,1,1,1],[0,1,1,1,1,1,1,1],[0,0,0,0,1,1,1,1],[0,1,0,0,1,1,1,1],[0,0,0,0,0,0,1,1],[0,0,0,0,0,0,0,1],[0,0,0,0,1,0,0,1],[0,0,0,0,1,1,1,1]] [10,15] programmers.co.kr 풀이방법 핵심은 '해당 영역의 요소들이 모두0 혹은 모두1인 경우 하나로 압축 할 수 있다.' 겟죠?! 우선그럼 해당 영역을 쪼개야겟죠 예를들어 4칸이있다고하면 행과 열 모두 범위가 0..

[Swift] TTS 텍스트 음성전환 (AVSpeechSynthesizer)

문자를 음성으로 읽어주는 기능을 구현해볼거에요 TTS라고하죠 Text To Speech 쉽게 설명하면 사전에 발음듣기처럼 해당 단어를 말해주는거구요 이번에 사용할 클래스들은 AVFoundation에 있는 AVSpeechSynthesizer AVSpeechUtterance AVSpeechSynthesisVoice 를 사용해볼 거에요 AVSpeechSynthesizer 텍스트로부터 합성된 음성을 생성하고 진행중인 음성을 모니터링 하거나 제어 할 수 있는 객체 읽기가 끝날 때 혹은 취소할 때 해제된다고 하네요 Delegate도 정의되어있는데 Speech start Speech finish Character range will be spoken Speech paused Speech continued 원하는상황에..

iyOmSd/Title: Swift 2021.02.23