profile
목표와 계획, 그리고 실천의 힘을 믿습니다.
태그 목록
전체보기 (148)swift(36)Xcode(24)CLEAN CODE(14)UIkit(12)concurrency(11)functional programming(6)Thread(6)Map(6)class(6)Combine(5)frame(5)async(5)Subscriber(4)await(4)kvo(4)rxswift(4)Object Oriented Programming(4)OOP(4)publisher(4)bundle(4)GCD(4)Grand Central Dispatch(4)flatmap(4)MVVM(4)review(4)protocol(4)retrospection(4)framework(4)KVC(4)appStore(4)library(4)task(3)serial queue(3)dll(3)Storyboard(3)Blocking(3)app thinning(3)@Target(3)operator(3)DIP(3)non blocking(3)Parallelism(3)optional(3)project(3)Generic(3)transition(3)RunLoop(3)unit test(3)Foundation(3)OperationQueue(3)concurrent programming(3)binary(3)continuation(2)MVP(2)presentation(2)Notification Center(2)struct(2)weak(2)TDD(2)intel(2)actor(2)2단계 초기화(2)Semaphore(2)UIControl(2)MVC(2)Cohesion(2)WHERE(2)DispatchQueue(2)bounds(2)Request-Driven(2)executables(2)arm64(2)animation(2)associatedtype(2)Dependency Inversion Principle(2)dependency injection(2)Two-phase initialization(2)ARM(2)coupling(2)automation(2)layout(2)architecture(2)TaskGroup(2)trouble shooting(2)merge(2)JPG(2)Reference Type(2)http(2)Automatic Reference Counting(2)key value observing(2)Dead Lock(2)subscript(2)VoiceOver(2)Enumeration(2)SRP(2)serial(2)build(2)Dynamic Colors(2)event driven(2)timer(2)Scheme(2)armv7(2)cancellable(2)dark-mode(2)operation(2)inheritance(2)Quality of Service(2)open closed principle(2)CocoaPods(2)event loop(2)inherence(2)alfred(2)https(2)TLS(2)concurrent(2)AutoLayout(2)extension(2)index out of range(2)accessibility(2)reduce(2)lock(2)layoutSubviews(2)Value Type(2)ocp(2)ISP(2)Key-Value Coding(2)NAMING(2)set(2)error handling(2)url(2)single responsibility principle(2)build configuration(2)QoS(2)executable(2)cpu(2)Performance(2)png(2)Monad(2)async let(2)reactive programming(2)ARC(2)SOLID(2)unowned(2)Functor(2)mutual exclusion(2)UITraitCollection(2)structured concurrency(2)KeyPath(2)Subject(1)Space(1)AsyncStream(1)Property Observers(1)workflow(1)Regular(1)INSERT(1)static linker(1)SPM(1)URLSessionStreamTask(1)XCTestCase(1)UIVisualEffectView(1)inspector(1)sendable(1)dsym(1)Dispatch Barrier(1)Context Switching(1)bitcode(1)인터페이스분리원칙(1)stack(1)deployment(1).app(1)encryption(1)garbage collector(1)compactMapValue(1)Linker(1)Test Driven Development(1)ANSI(1)UIGraphicsRendeerContext(1)Run Loop(1)URLSessionDataTask(1)암시적 언래핑(1)Proxy(1)boundary(1)Fat binary(1)type alias(1)willSet(1)URLRequest(1)heap(1)URLComponent(1)PRESENT(1)mac(1)Build Active Architectures Only(1)Binary Framework(1)Emergence(1)actor hopping(1)Universal Link(1)interface segregation principle(1)snapshot(1)Detached Task(1)First-class Function(1)Provisioning profile(1)axis(1)Presentation Context(1)ABI Stability(1)Cache(1)접근제어(1)kd-tree(1)Anomymous Function(1)MRC(1)iterator(1)hugging property(1)Frame-based Layout(1)EPSG(1)10-200 Rule(1)indexPath(1)Code Smell(1)RxCocoa(1)compactMap(1)ASCII(1)x86_64(1)강제 언래핑(1)try(1)Constraint(1)security(1)url scheme(1)Size class(1)coordinate(1)묵시적 언래핑(1)테스트 방법론(1)PresentedViewController(1)EUC-KR(1)System Test(1)blur(1)Transport Layer Security(1)Module(1)crash(1)equalCentering(1)addObserver(1)dependency manager(1)UIRequiredDeviceCapabilities(1)operation queue(1)Segue(1)Alpha Test(1)vector(1)Convenience initializer(1)AppDelegate(1)float(1)sodll(1)fill(1)Timer Tolerance(1)NSLock(1)Auto Layout(1)ad hoc(1)Actor isolation(1)Bound Resources(1)debounce(1)Deep Link(1)URLSessionConfiguration(1)NSAttributedString(1)dynamic linker(1)spacing(1)high order function(1)Block Operation(1)Designated initializer(1)Right-BICEP(1)Beta Test(1)project.xcworkspace(1)draw(1)shell script(1)POJO(1)Sync(1)python(1)for ~ in(1)Objective-C(1)Threads(1)Fatal Error(1)Live lock(1)URN(1)reentrancy(1)URLSessionWebSocketTask(1)protobuf(1)parameter(1)Thread.sleep()(1)Operation Life Cycle(1)not working(1)while(1)nil(1)Dynamic Link(One Link)(1)network(1)branch(1)presentingViewController(1)rawValue(1)Data Transfer Object(1)XML(1)Diffable DataSource(1)setNeedsUpdateConstraints(1)safe(1)UIImage(1)Higher-order Function(1)Repeating Timer(1)R Tree(1)UIView(1)inout(1)Datum(1)dev-environment(1)dictionary(1)Double(1)Target/Action(1)abstraction(1)modalPresentationStyle(1)responder chain(1)socket(1)optional chaining(1)Bundle Structure(1)polygon(1)Property Injection(1)URLSessionUploadTask(1)typeof(1)StackView(1)unicode(1)query(1)compress resistance property(1)App Transport Security(1)Custom Transition(1)action(1)deploy(1)의존성역전원칙(1)리스코프치환원칙(1)Feature Envy(1)modulemap(1)Rule of Delegation(1)값타입(1)@rpath(1)error(1)test code(1)starvation(1)any(1)switch(1)json(1)NSTextAttachment(1)Mach-O(1)Universal Binary(1)URLSession(1)typealias(1)implicitly unwrapped optional(1)Thread Safety(1)UIVibrancyEffect(1)format(1)Productibility(1)Property Wrappers(1)64bit(1)Hugging priority(1)ViewController Life Cycle(1)Materials(1)expression(1)fillProportionally(1)Serialization(1)Monterey(1)Producer/Consumer Problem(1)제어문(1)filter(1)DispatchWorkItem(1)Nil-coalescing Operator(1)RxRelay(1)에러처리(1)QUADTREE(1)AsyncSequence(1)Sub directory(1)debugging(1)Deadlock(1)foreach(1)Carthage(1)cocontents.xcworkspacedata(1)Core Graphics(1)RIBs(1)interface(1)UITouch(1)Manual Reference Counting(1)UIApplication(1)optional unwrapping(1)Collection(1)Update Cycle(1)base64(1)String(1)strip()(1)main actor(1)Custom Operation(1)Intrinsic Content Size(1)Static Function(1)Service Locator Pattern(1)clang(1)homebrew(1)Module Stability(1)app slicing(1)memory optimization(1)URLSessionDownloadTask(1)di(1)concurrent queue(1)Simple(1)Adapter Pattern(1)userInterfaceLevel(1)DCT(1)UINavigationController(1)URLSessionTask(1)Little Endian(1)delay(1)cd(1)ATS(1)함수(1)응답체인(1)metatype(1)navigation(1)userInterfaceIdiom(1)Publisher/Subscriber Pattern(1)persistence(1)internal(1)Initialization Injection(1)test double(1)reduce(into::)(1)encoding(1)comments(1)Vibrancy(1)setNeedsLayout(1)Streaming API(1)Atomicity(1)app life cycle(1)update(1)capture list(1)background(1)GC(1)class property(1)LSP(1)sugar API(1)viewDidLayoutSubviews(1)constant(1)updateConstraintsIfNeeded(1)actor prioritization(1)Design Pattern(1)UIPresentationController(1)pure function(1)Swift Package Manager(1)Binary Compatibility(1)Dispatch Precondition(1)overflow(1)Ad-Hoc Deployment(1)Pub/Sub Pattern(1)Main RunLoop(1)percent encoding(1)경쟁상태(1)LINE(1)DSO(1).a(1)xcshareddata(1)Mobile Deep Link(1)Pop(1)block(1)Universal App(1)snippets(1)segueway(1)showhide(1)Liskov Subsitution Principle(1)XCFramework(1)binding(1)spaghetti code(1)work flow(1)Commuication(1)dismiss(1)UnfoldSequence(1)estimatedRowHeight(1)equalSpacing(1)LLVM(1)dsyms(1)UIViewController(1)Method Injection(1)@autoclosure(1)fileprivate(1)cell resizing(1)monitoring(1)webhook(1)의존성 관리도구(1)mock(1)do-catch(1)Markdown(1)Shortcuts(1)spacial index(1)http method(1)notification(1)userInterfaceStyle(1)array(1)개방폐쇄원칙(1)CollectionView(1)setNeedsDisplay(1)Concurrenct Programming(1)type constraint(1)Result(1)tryMap(1)display(1)pull(1)initializer(1)교착상태(1)Hashable(1)Defer(1)optional binding(1)Serial Dispatch Queue(1)상속(1)fillEqually(1).xcuserdata(1)Down Sampling(1)lazy(1)Bad Code(1)Task Tree(1)Decryption(1)toggle(1)integer(1)class function(1)@escaping(1)Type Constraints(1)cookie(1)actor reentrancy(1)computed property(1)force unwrapping(1)static library(1)CGContext(1)UITabBarController(1)code(1)stored property(1)yield(1)life cycle(1)repeat-while(1)lldb(1)control-flow(1)Deferred Deep Link(1)autoreleasepool(1)Byte Ordering(1)currying(1)Implement Pattern(1)Expectation(1).xcodeproj(1)functions(1)타입제약(1)UIResponder(1)cooperative thread pool(1)Raster(1)NotificationCenter(1)Compress resistance prioirity(1)completion Handler(1)MS949(1)if(1)synchronization(1)race condition(1)protocol oriented programming(1)override(1)alignment(1)참조타입(1)SDK(1)csv(1)Subproject(1)static property(1)Main Bundle(1)grid(1)data race(1)devops(1)hit test(1)access control(1)단일책임원칙(1)Instance Property(1)data structure(1)closure(1)private(1)utf 8(1)Deinitializer(1)switchToLatest(1)SYSTEM(1)LazySequence(1)Spring(1)Thread Explosion(1)AppStore Deployment(1)tuple(1)multi thread(1)capture(1)dynamic library(1)Inversion Of Control(1)required initializer(1)URL encoding(1)DTO(1)projection(1)rowHeight(1)Operation Priority(1)testflight(1)On Demand Resources(1)UIBlurEffect(1)Task.sleep(1)GIS(1)static(1)apply(1)didSet(1)unittest(1)Apple Certificate(1)git(1).swiftmodule(1)deserialization(1)Dispatch Semaphore(1)AsyncThrowingStream(1)Main Run Loop(1)test(1)instantiateViewController(1)Flexibility(1)Strong Reference Cycle(1)combineLastest(1)onTermination(1)AnyCancellable(1)memory release(1)XCTestExpectation(1)thread-safe(1)observability(1)layoutIfNeeded(1)CPI(1)Direct Deep Link(1)NSObject(1)argument(1)function(1)NSBundle(1)Either(1)Event(1)ci(1)Big Endian(1)Interface Sergregation Principle(1)project.pbxproj(1)CP949(1)UIGraphicsImageRenderContext(1)fp(1)dispatch queue(1)CISC(1)DispatchSource(1)App Link(1)UIEvent(1)variable(1)assert(1)CPU Architecture(1)Fake(1)refactoring(1)XCTest(1)Lazy Evaulation(1).swiftmoduleinterface(1)stub(1)indices(1)partial application(1)package(1)RISC(1)Workspace(1)archive(1)final(1)compiler(1)invalidateIntrinsicContenstSize(1)function composition(1)Foreground(1)updateContraints(1)fast-forward(1)integration test(1)distribution(1)compact(1)VIPER(1)open(1)public(1)Nonrepeating Timer(1)Expander Control(1)UIGraphicsImageRenderer(1)NSParagraphStyle(1)tableview(1)URI(1)IoC(1)header(1)DispatchGroup(1)anyObject(1)POST(1)Type Property(1)32bit(1)Enterprise Deployment(1)
post-thumbnail

2206

22년 06월을 회고해본다.

2일 전
·
0개의 댓글
post-thumbnail

Swift Concurrency: Behind the scenes Part. 02

앞에서는 Swift concurrency가 어떻게 동작하는지 확인했다. 이번에는 Swift concurrency를 채택할 때 주의해야 하는점, 그리고 Actor를 통한 Synchronization에 대해 알아보자.

3일 전
·
0개의 댓글
post-thumbnail

Swift Concurrency: Behind the scenes Part. 01

앞에서는 새롭게 나온 개념들을 어떻게 사용하는 지에 대해서 알아보았다. 그렇다면 왜 이렇게 설계 했는지, 실제로는 어떻게 동작 하는지 알아보자.

3일 전
·
0개의 댓글
post-thumbnail

DerivedData

DerivedData를 맨날 지우라는 데 이녀석이 뭔지 간단하게 알아보자.

3일 전
·
0개의 댓글
post-thumbnail

Structured Concurrency

Task, Actor를 알아보면서 많은 삽질을 했으니, 이제 다시한번 WWDC 영상을 봐본다.

5일 전
·
0개의 댓글
post-thumbnail

Actor Part. 02

Actor의 두번째 정리를 해본다. Sendable Protocol은 무엇일까? MainActor는 또 뭘까..?

5일 전
·
0개의 댓글
post-thumbnail

Actor Part. 01

Task는 코드 블럭을 독립적으로 사용할 수 있다. 이러한 점을 사용하면 병렬적으로 특정 코드를 처리하게 할 수도 있다. 그런데, 두 개 이상의 Task에서 공유자원을 사용해야 한다면 어떻게 할까?

2022년 6월 24일
·
0개의 댓글
post-thumbnail

Task & TaskGroup

Task와 TaskGroup은 무엇일까? 그리고 Apple이 말하는 Structured Concurrency는 무엇일까.

2022년 6월 22일
·
0개의 댓글
post-thumbnail

AsyncSequence

WWDC 2021에서 소개한 AsyncSequence에 대해 알아본다.

2022년 6월 22일
·
0개의 댓글
post-thumbnail

AsyncStream

AsyncSequence를 공부하다 후반에 나온 AsyncStream을 이해하지 못해 문서를 읽어본다.

2022년 6월 22일
·
0개의 댓글
post-thumbnail

Successive Refinement

클린코드 14장, 점진적인 개선이다. 실제 저자는 어떤식으로 더러운 코드를 정리할까?

2022년 6월 21일
·
0개의 댓글
post-thumbnail

Concurrency

클린 코드 13장, 동시성이다. 동시성과 깔끔한 코드는 양립하기 아주 어렵다. 그럼에도 불구하고, 동시성은 왜 필요할까?

2022년 6월 21일
·
0개의 댓글
post-thumbnail

Async/Await

Swift 5.5에서 소개된 Async/Await에 대해 공부해본다.

2022년 6월 16일
·
0개의 댓글
post-thumbnail

Where Clause

generic을 보면서 몇몇 곳에서 where 키워드를 사용하는 것을 보았다.

2022년 6월 14일
·
0개의 댓글
post-thumbnail

associatedtype

type alias를 공부하면서 마주쳤던 associatedtype에 대해 알아본다.

2022년 6월 14일
·
0개의 댓글
post-thumbnail

Emergence

클린코드 12장, 창발성이다. 창발성은 무엇일까? 그리고 그걸 코드에 대입한다는 것은 무슨 말일까?

2022년 6월 14일
·
0개의 댓글
post-thumbnail

System

클린코드 11장, 시스템이다. 깨끗한 시스템은 어떤 것을 말하는 것일까?

2022년 6월 14일
·
0개의 댓글
post-thumbnail

Type Alias

Type alias, 잘쓰면 가독성에 굉장한 영향을 줄 수 있다! 어느 곳에서 사용할 수 있는지 정리해보자.

2022년 6월 13일
·
0개의 댓글
post-thumbnail

Markdown Toggle

Markdown에서 접었다/폈다 하는 toggle을 만들고 싶었다.

2022년 6월 8일
·
0개의 댓글
post-thumbnail

metatype

이전에 metatype에 대해 흘려들었었는데, 이번에 간단하게 정리해보려한다.

2022년 6월 8일
·
0개의 댓글