본문 바로가기

분류 전체보기134

테이블 뷰 최적화 방법 버스트 트래픽이 발생할 경우 테이블 뷰를 최적화 하지 않으면 앱의 성능이 약화될 수 있다. 1. 테이블뷰 성능을 낮추는 행위를 피해라! 테이블 뷰를 느려지게 하는 것들이 여러개 있다. 셀 크기가 동적인데 추정 높이와 너무 다를 경우 오퍼레이션큐를 사용하면 됩니다! 2. 비동기 네트워크에 대한 처리 셀이 불러와지면 이미지 다운로드나 API 호출과 같은 비동기 작업 해야 하는 셀들이 있다. 이 상태에서 스크롤을 빠르게 할 경우 한번에 너무 많은 작업을 실행하게 되며 앱 사용성이 극도록 낮아진다. 여러가지 해결 책이 있는데 한번 확인해보자 Prefetching https://developer.apple.com/documentation/uikit/uicollectionviewdatasourceprefetchin.. 2020. 10. 20.
Golang 유닛 테스트 코드 작성 Go 는 테스트 프레임워크를 내장(build-in)하고 있다. testing페키지를 이용해서 유닛 테스트 코드를 만들고 go test명령으로 테스트를 수행하면 된다. 유닛 테스트 파일의 이름은 반드시 _test.go로 끝나야 한다. 설명은 아래 문서로 대체한다. 꼭 한번 읽어보는 걸 추천한다 golang.org/pkg/testing/ 테스트 코드는 대충 아래와 같은 패턴을 갖는다 package storage import ( "testing" ) func Test_Add(t *testing.T) { result := add(1, 2) if result != 3 { t.Fatal("this is impossible!") } } 본인은 Gorm 도입 중이여서 하나하나 테스트 코드를 작성하면서 기능을 구현하고 .. 2020. 10. 20.
WIP 이미지 캐시란? 캐시는 "성능 향상을 목적으로 자주 사용하는 데이터나 값을 미리 복사해 놓는 임시 장소" 이다. 캐싱은 이런 캐시에 데이터를 저장하는 행위를 의미한다. 캐시는 크게 물리적인 캐시 메모리와, 소프트웨어적인 캐시로 나뉘어지며, 소프트웨어 캐시는 대표적으로 이미지 캐시가 있다. 왜 이미지 캐시해야 하나? 1. 비용 절감 서비스 트래픽에 절대적인 부분을 차지하는 건 미디어 데이터 즉 이미지이다. 이미지 최적화 여부가 비용으로 직결되기 때문에 반드시 생각해야 하는 부분이다. 아래는 Threshold 기준으로 640px x 480px 이미지를 바이너리 이미지로 바꿔 표현한 것이다. 307,200 비트를 사용한다. 2. 사용자 경험 향상 사용자는 컨텐츠를 빨리 소비할 수 있길 원합니다. 특히 미디어가 중요해진 요즘 .. 2020. 10. 19.
UML (Unified Modeling Language) WIP 전공자라면 UML 을 많이 접해보셨을거에요. 오늘은 UML 개념을 정리해보겠습니다! What's the UML? 직역하면 통합 모델링 랭귀지 입니다. Unified Modeling Language의 약자인데 도메인을 모델로 표현하는 모델링 언어입니다. UML은 소프트웨어를 설계할 때 거의 필수적으로 필요합니다. 즉 시스템을 모델로 표현해주는 대표적인 모델링 언어입니다. 의사소통 또는 설계 논의를 위해 전체 시스템의 구조 및 클래스의 의존성 파악을 위해 유지보수를 위한 설계의 back-end 문서 제작을 위해 -----------------------------------------------------------------------------------------------------------.. 2020. 10. 16.
도메인이란 무엇인가? 해결하고자 하는 목표 2020. 10. 16.
그냥... 디자인 패턴이란 무엇일까? 이 글을 쓰는 이유는 디자인 패턴을 왜 사용하는지 궁금한 사람이 있을 것 같아서 간단히 정의해보기 위함이다. 프로그래밍을 하다 보면 디자인 패턴이란 말을 많이 듣게 되는데, 싱글턴, 스트래티지, 팩토리 패턴이 여기에 속한다. TL;DR 패턴이란 무언가가 반복되어서 하나의 방식 된 것이며, 프로그래밍에서 패턴이란 문제 해결에 가장 효과적이라고 알려진 방법들이 자리를 잡아서 널리 쓰이게 된 것들을 의미한다. 디자인 패턴은 프로그램 개발 과정에서 빈번하게 발생하는 디자인상의 문제를 정리해서, 상황에 따라 간편하게 적용해서 쓸 수 있는 패턴 형태로 만든 것을 의미한다. 우리가 일상적으로 접하는 문제는 이미 다른 이들이 여러 시행착오를 겪어 그 해결책이 존재할 가능성이 높은데, 이런 지혜와 교훈을 잘 활용해야 한.. 2020. 10. 14.
ARC (Automatic Reference Counting) 가 무엇이지? # 선행 자료 아래 내용을 이해하지 못하면 이 글을 이해하는게 어려우실거에요 - Reference Counting (포스팅 전) # 도움 자료 아래 글을 읽으시면 더 도움되실거에요 - MRC (포스팅 전) ---------------------------------------------------------------------------------------------------------------------- 포스팅 시작하겠습니다. iOS 앱을 개발하다보면 마주하는 weak, unowned 가 무엇이고 어떤 의미인지 궁금해하신적 있으신가요? 모두 ARC 혹은 RC와 연관되어 있는 키워드입니다. 그래서 iOS 개발자라면 ARC에 대해 꼭 알고 있어야합니다. ------------------------.. 2020. 10. 14.
Properties Properties 특정 인스턴스와 연관있는 값 Keyword Stored Properties Lazy Stored Properties Computed Properties Property Observers Type Properties 1. Stored Properties Class, Struct 에서 사용 가능 var 사용하면 변수 저장 프로퍼티 let 사용하면 상수 저장 프로퍼티 'Stored Properties' of struct 변수 저장 프로퍼티인 name과 상수 저장 프로퍼티인 age struct PersonStruct { var name: String let age: Int } var person = PersonStruct(name: "a", age: 2) person.name = "b" pe.. 2020. 9. 9.
Struct and class 정리 Swift 의 struct 과 class 는 비슷한 역할을 한다. Struct 1.Call by value Stuct는 할당 또는 파라미터로 전달 될 경우 Value Copy 가 일어난다. 공유 변수로 인해 문제를 일으킬 확률이 적다. 2. Stack 메모리 영역에 할당됨 공유 변수가 아니기 때문에 스택 메모리에 할당되며, 컴파일러가 언제 메모리를 할당/헤재할지 정확히 알고 있다. Data locality: CPU 캐시 히트율이 녿다 3. NSData 로 Serialize 불가 * 그래서 4. 상속 불가능 (프로토콜은 사용 가능) Array, Dictionary, Struct, Int 다행히도 이러한 overhead를 막기위해서 Array, Dictionary 같이 Swift에서 제공되는 가변길이 .. 2020. 9. 7.
Gorm 이번에는 Gorm을 공부해보려고 한다. ORM 이란 무엇일까? ORM 이란 오브젝트와 관계를 매핑해주는것이다. 즉 데이터베이스와 객체를 매핑해주는 것이라 보면 된다. 도입을 시도하는 계기 지금까지 다룬 프로젝트들은 ORM 을 사용하지 않았다. 설계 문서를 토대로 스키마를 일일히 만들고 쿼리문을 직접 작성했다 그리고 각각의 메소드들을 만들어 사용했다. 이런식으로 될 경우 문제점이 생기는데, 큰 서비스여서 DBA가 존재하고 성능이 중요하다면 상관이 없지만 프로토타입이나 변화가 빠른 프로젝트에서는 굉장히 개발 속도와 버그를 만들고 뎌디게 만든다. 장점 객체와 데이터베이스 테이블을 매핑해서 빠르게 개발할 수 있다. Gorm Gorm 이란 고에서 ORM기반 개발이 가능토록 도와주는 라이브러리이다. https://.. 2020. 9. 7.