SwiftUI가 너무 재밌어 매일 swiftui로 개발을 하고 싶었다.... 하지만 4학년인 현재 취업을 해야한다는 압박감에 uikit로 다시 회귀하여 개발을 시작하고 있다....우선 Uikit에서 뷰전환에는 viewcontroller를 Present해주는 방법과 UINavigationController를 이용한 화면 이동 두가지방법이 잇다. 근데 이렇게 해주면 각 뷰에서 다른 뷰로 이동할때마다 뷰를 생성하고 뷰모델을 주입해주어야 하기에 추적하기에 굉장히 힘들다. 이전에 SwiftUI에서 navigationStack에서 Path관리를 통해 navigationDestination을 이용하여 뷰와 뷰모델을 생성해주고 관리를 해주는 작업을 진행하였다. NavigationStack은 navigationView에..
바로 직전의 글에서 CoreLocation을 이용해 위치를 가져오는 기능을 구현하였다.... 근데...핸드폰이 뜨겁다.. 나라도 이 앱안쓸듯?그래서 어떻게 하면 효율적으로 사용할수 있을지 체크하며 개선하는 작업이 필요하다.애플에서는 background location을 측정할수 있는 3가지 방법이 존재한다고 한다. 1. Xcode Gauges를 이용하면 xcode내에서 CPU, Network, 위치 사용량 등 시스템 사용량에 대한 정보를 제공한다. 또한 시간대로 위치사용이 앱에 미치는 영향을 보여준다. 그래서 내가 궁금했던 corelocationManager를 어떻게 관리해야 enegery를 가장 아끼고 우리가 원하는대로 사용할 수 있을지 지금부터 체크해보겠습니다.배터리? distanceFilter..
: 애플의 여러디바이스들을 통해 위치정보를 활용할수 있는 FrameworkWi-fi, GPS, Bluetooth, 자기장 센서, 기압계, 셀룰러를 이용하여 위치데이터를 수집한다.우리는 CLLocationManager class를 통해 많은 데이터를 가져올수 있다표준적이고 중요한 위치 업데이트표준 위치? 주기적으로 유저의 위치를 업데이트 하여 GPS기반 데이터 활용. 정확도 조절이 가능하고 이동경로나 위치의 정확한 정보를 필요할때 사용하면 된다. → 더 많은 에너지 소모중요 위치? 사용자의 위치가 크게 바뀔때만 업데이트한다. 정확도가 떨어지지만 에너지는 절약startMonitoringSignificantLocationChanges() 500m이상 이동할때만 이벤트를 처리해줄수 있다. 물론 백그라운드에서 이..
ex)ipad에 내 셀카를 찍어서 데스크톱에 넘기면 그건 파일을 넘기는 것이다. 그 사진을 열고 싶을때? 더블클릭해서 프리뷰를 연다. 근데 여기서 궁금점!! 어떻게 컴퓨터는 이게 이미지인지 알고 처리했던건가? 요것이 뭐 텍스트 파일일수도 있고 영상일수도 있는데 어떻게 이미지인지 알았던거야!!! 궁금하지 않나요? 파일은 바이트의 시퀀스이므로 시스템이 파일의 유형을 알아야 할 때 파일을 열고 내부의 비트를 읽어내 파일을 확인하는 것일까? ㄴㄴ 이것은 비트를 다 읽어봐야하기에 비효율적이다. OS가 파일의 경로 확장자로 결정한다. 맥에서는 안보이지만 .jpeg가 숨어있는 것. 하지만 웹에서는 경로확장자로 파일을 식별하지 않는다고 한다. 대신에 그들은 MIME 미디어 유형이라고 불리는것사용 결국 이 모든게 jp..
아주아주아주 예전에 작년에!! Coremotion 프레임워크 관련해서 글을 썼었다. 핸드폰 기울기에 따라 공이 움직여 스프라잇킷과 함께 이용하는 거여서 x,y,z, 가속도.. 중력..등등 다양하게 적어놨었다.오늘은 어쩌다보니 새로운 기획하고 개발하는 앱에는 실시간 걸음수 측정이 필요한데 이를 Healthkit에서는 처리가 어려워서 Coremotion이 적당하여 걸음에 관련된 정리들을 해보려 합니다!!우선 제가 개발하려는 앱의 목표!- 유저들의 실시간 걸음에 관한 정보를 얻고 이를 활용해 피드백을 해줍니다.(보폭, 보행속도)등을 미션을 통해 세팅해놓고 달성을 하여 나이드신분들이 더 좋은 걷기 운동을 할수 있게하자!음...HealthKit이라는 아주 좋은 애플의 건강정보가 있잖아.....그럼 이거써야해?He..
클라이언트(즉 아이폰)에서 서버로 요청을 보낸다. 근데 그 서버에 닿기 직전에 이 벽(미들웨어)를 거쳐서 지나간다. ex) Authentication 미들웨어는 유저가 어? 너 회원이야? 아니야? 판단을 할수 있음!! code로 보자 routes파일에다가 app.middleware.use(LogMiddleware())이거만 해주면 어떠한 우리가 요청을보내든 Log middleware가 찍히는것을 볼 수 있다. 주의행할것은 next.respond(to: request)를 해주지 않는다면 절대 우리가 가려던 곳에 reach할수 없어용 이제 아까 예시를 들었던 유효한 토큰이 있을때만 서버를 통신하도록 하는 코드를 작성해보자!! struct AuthenticationMiddleware: AsyncMiddlewa..
저번까지 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..
저는 지금까지 태어나서 한번도 백엔드 코드를 짜본적이 없습니다.. 1도 모릅니다. 하지만 풀스택 개발자가 되고 싶어 백엔드를 공부하고 싶어 뭘 할까 생각하다 python을 배우면 장고가 잇꼬 자바스크립트를 배우면? 노드 Js가 있다. 그러면 Swift는??? Vapor 이름부터 간지난다. 이 친구를 다운받으려면 brew install vapor 를 통해 설치를 해야합니다. 1. 프로젝트 파기 vapor new khu-ki(내 프로젝트이름) -n -n 이 의미하는 것은 원래 저걸 쓰지 않으면 너fluent 쓸래? Leaf쓸래? 물어보는데 그거다 ㄴㄴ 하고 걍 프로젝트 파는거다. ㄷㄷ 프로젝트가 생성되면 제일 처음 다 다운받아지는 파일들이다. 패키지들도 받아져있는걸 볼 수 있다. 또한 running은 맥으로..
오랜만에 돌아온 알고리즘 솔루션정리!!!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 이라는 점화식이 나오게 된다. 그렇..
잉? 나는 따로 구조체에서 Init을 선언해주지 않았는데 뜨네?이게모지? memberwise initialization 이는 컴파일러가 자동으로 init메서드를 생성해주기 때문이다. 그렇다면 만약 WhatisMacro에 어떤 프로퍼티도 추가해주고 야 이것도 자동 컴파일러가 하게 해줘! 🍎음...비효율적인데? 물론 swift compiler는 오픈소스야 잠만. 우리회의해보자... 🧑🏼💻어? 그럼 일일이 너네랑 회의해야해? 확장서 개그지같네;; 그래서 나온놈이 매크로다! 🧑🏼💻얘가 원하는데로 컴파일러를 수정하지 않고 Swift Package로 배포하는 방법! 매크로 어떻게 선언하는데? public macro OptionSet() = #externalMacro(module: "SwiftMacros", ty..