전체 글

iOS 개발자 황성진의 블로그 입니다.
· iOS
IntroApp내에서 특정 값들을 앱이 꺼진상태에서도 저장하려면 어떻게 해야될까요?Userdefaults와 @AppStorage를 사용해서 저장하면 됩니다.Userdefaults는 기존 UIkit에서 많이 사용했던 방식이고 AppStorage는 SwiftUI에서 iOS 14부터 새로생긴 내용 입니다.이번에는 두개의 개념에 대해 설명하고 두개의 차이에 대해 알아보겠습니다.What is UserDefaultsApple에서는 "App을 실행하는 동안 지속적으로 key-value로 저장하는 사용자의 기본 Database에 대한 Interface"라고 해요. 쉽게 말해 별도의 DB 없이 App에 내가 원하는 값을 어떤 Key와 함께 저장하고, 언제든 그 Key를 통해 값을 불러낼 수 있는 것이죠...
· iOS
Naver API 발급 네이버 클라우드 사이트에 접속하여 회원가입, 로그인을 합니다. 로그인 후 콘솔에 들어갑니다. 네이버 지도는 Products & Services에서 AI-Application Service 하위의 AI·NAVER API에 포함되어 있습니다. 해당 API를 선택합니다. 그 다음 API 등록 버튼을 누르고 현 예제에서는 Mobile Map 만 사용하므로 체크 하고 Bundel ID를 입력해 줍니다. 이렇게 진행하면 Client ID 값을 받을 수 있습니다. 키값 숨기기 보통 로컬환경에서 작업하면 크게 문제가 없지만 깃허브와 같은 환경에 올려 작업하면 키값이 노출되는 문제가 생깁니다. 이것을 방지해주기 위해서는 다음과 같이 config파일을 만들어 줍니다. // Config.xcconfi..
· iOS
Intro 들어가기 앞서 저는 NotificationCenter를 우체국이라고 가정하고 들어갈게요. 우리가 편지를 우체통에 넣으면 어떻게 될까요? 그 과정에 NotificationCenter 와 매우 흡사합니다. What is NotificationCenter? addObserver : 우체부는 우체국에게 '제가 00동으로 가는 우체부입니다'라고 등록을 합니다. Something Happen : 서울의 황성진은 고향의 친구에게 보낼 편지를 썼습니다. post : 황성진은 우체국에 편지를 부쳤습니다. notify : 우체국은 00동에 가는 우체부에게 편지가 왔다고 전달해줍니다. selector : 우체부가 고향의 친구에게 갈 편지를 배송해줍니다. 기본적인 NotificationCenter 이 작동하는 방식..
· iOS
들어가기 앞서 해당 제네릭에 대해 작성된 내용은 야곰님의 스위프트 프로그래밍: Swift 5 책의 내용을 제가 이해할 부분과 추가로 알아간 내용에 대해 정리했습니다. Generic에 이란? Swift에서 제공하는 강력한 기능 중 하나로 제네릭을 이용해 코드를 구현하면 어떤 타입에도 유연하게 대응할 수 있습니다. 또한 제네릭으로 구현한 기능과 타입은 재사용하기도 쉽고, 코드의 중복을 줄 일 수 있습니다. 야곰님의 책에 언급된 내용에 따르면 수많은 라이브러리에서 제네릭을 채택하고있다고 합니다! 제네릭은 기본적으로 타입 또는 메서드의 이름 뒤의 홀화살괄호 기호 사이에 제네릭을 위한 타입 매개 변수를 써주어 제네릭을 사용할 것임을 표시합니다. 제네릭을 사용하고자 하는 타입 이름 제네릭을 사용하고자 하는 함수 이..
· iOS
객체(Object) 란? CS에서 객체는 물리적으로 존재하거나 추상적으로 생각할 수 있는 것 중에 자신의 속성을 가지고 있고 다른것과 식별 가능한 것을 말합니다. 즉 컴퓨터로 예를 들면 키보드, 마우스, 스피커 등이 객체가 될 수 있고, 이것들은 각각 입력, 소리출력, 인터페이스 조작 등의 기능이 포함 됩니다. 객체지향 프로그래밍 (OOP, Object Oriented Programming) 객체들의 상호작용으로 서술하는 프로그래밍 기법 현실세계의 객체를 소프트웨어 객체로 설계 하는 것 특징 객체지향 프로그래밍은 소프트웨어를 개발할 때 현실 세계의 객체를 모델링하고, 이러한 객체들 간의 상호 작용을 중심으로 프로그래밍하는 방법론입니다. 재사용성: 상속을 통해 코드의 재사용성을 높일 수 있다. 생산성 향상..
· iOS
SwiftUI, UIKit View 사용시 Struct와 Class의 차이 Intro 이번 주제는 UIKit을 공부하면서 기존 SwiftUI에서 뷰를 사용할때는 struct로 사용해왔는데 UIKit 에서는 class로 선언하여 사용하게 되었는데 이것에 대해 차이점이 궁금해서 공부하게 되었다. What is Struct and Class 간단하게 Struct 와 Class의 차이점을 알아보자. 우선 내가 알고 있는 가장 큰 내용은 값타입(value type)과 참조타입(reference type)의 차이점이다. 구조체는 메모리 영역에서 stack영역에 저장되며, 클래스는 참조타입이므로 heap 영역에 저장된다. 구조체는 값을 변경하려면 새로운 메모리를 할당하고 값을 복사해서 새로운 값을 생성하게 되는데, ..
· Me
Why? 직업군인이 되었는가? 저는 항상 남들과 똑같은 평범함을 싫어했습니다. 군인이라는 직업을 선택하면서 평범함이 싫다니? 약간 모순적으로 느낄 수 있습니다. 대한민국 남자로 태어나면 가야하는 군대였지만 저는 남들과 같은 길을 가고싶지 않았습니다. 지금이 아니면 이 나이에 30명 정도를 책임감을 갖고 이끄는 경험을 하기 쉽지 않다고 생각해서 직업군인이 되기로 마음먹었습니다. Why? 개발자가 되고 싶은가? 저는 학창시절부터 컴퓨터관련 주제에 대해 관심이 많았습니다. 그래서 소프트웨어학과를 진학하게 되었습니다. 관심이 많은것과 코딩은 다르다는걸 느끼면서 의미없는 대학교 1학년을 보내게 됩니다. 그러다 2학년 2학기에 알고리즘 수업을 수강 하면서 생각의 변화가 찾아옵니다. 과제로 주어진 문제를 해결하는 과..
캡스톤 디자인 최종 결과물 동영상 링크 : youtu.be/ZcG7x3Ixjts 19년 2학기에 진행했던 프로젝트와 똑같은 주제로 yolo를 제외한 구현 방식을 달리하여 진행하였는데 똑같은 주제로도 여러가지의 해결방안이 있다는 것을 깨닫게 되는 계기가 되었다.
ssh 사용시 매번 비밀번호를 입력하는 것은 귀찮은 일이다. 이번 프로젝트에선 비밀번호를 입력하는 것을 없앰으로 서버로 전송시 바로 전송할수 있도록 하였다. 공개키 등록 방식 우선 ~/.ssh/id_rsa.pub에 파일이 존재하는지 확인한다. 없다면 아래와 같이 ssh-keygen을 사용해서 개인용 개인키/공개키를 생성한다. ssh-keygen -t rsa 위 명령을 입력하면 몇가지를 물어보는데 특별한 이유가 없다면 그냥 엔터를 계속 눌러서 완료하면 된다. 이렇게 생성하고나면 개인키는 ~/.ssh/id_rsa로 공개키는 ~/.ssh/id_rsa.pub로 생성된다. 이제는 공개키를 접속하려는 원격 서버에 등록해야 한다. 아래와 같이 직접 해당 서버로 복사하는 방법이 있다. scp ~/.ssh/id_rsa...
이번에는 프로젝트에 이전에 구성했던 ui 파일을 기반으로 파이썬 코드를 작성하는 방법에대해 알아보겠다. 하나씩 기능을 설명한후 코드의 전체 부분은 밑에 첨부하도록 하겠다. 다음과 같이 필요한 라이브러리를 import 해준다 import os import sys import time from PyQt5.QtWidgets import * from PyQt5 import QtCore from PyQt5 import uic import cv2 from PyQt5.QtCore import QCoreApplication, QThread 밑의 코드와 같이 ui파일의 경로, 이름을 넣어주어야 한다. 저희 팀과 같은 경우는 같은 위치에서 진행하였으므로 이름만 넣어주었다. form_class = uic.loadUiType..
황썽진
망각의 코딩러