
지금 개발하고 있는 서비스에는 회사 타 팀에서 운영 중인 오퍼월이 존재한다.오퍼월은 사용자가 특정 미션을 수행하고 보상을 받을 수 있는 구조인데, 참여 방식이 다소 번거로워 사용률이 낮다는 피드백이 꾸준히 있었다. 그래서 사용자가 오퍼월을 더 직관적이고 간편하게 참여할 수 있도록 플로팅 팝업을 도입하기로 결정했다. 모티브는 토스의 플로팅 위젯. 오퍼월 진행 중 다른 앱(외부 브라우저 등)에 이동해도 팝업이 떠서 오퍼월을 쉽게 진행할 수 있도록 만드는게 핵심이었다. 구현해야 할 기능을 정리하자면다른 앱 위에 떠 있는 오버레이 팝업롱클릭하거나 드래그래서 팝업 위치 이동팝업을 클릭하면 설명 팝업이 함께 뜨는 구조삭제 버튼 영역으로 드래그하면 팝업 제거5분 후 자동으로 팝업 종료앱으로 돌아왔을 때 자동으로 ..

우선 나는 안드로이드 개발을 사실상 처음 해본다.대학생 때 졸작으로 잠깐 했던 게 끝이고 그 후로는 개발해본 적이 없다.그래서 내용이 틀렸거나 이상한 부분이 있을을 참고바란다. 이번에 회사에서 운영 중인 서비스에 잠금화면에서 동작하는 리워드 기능을 추가하게 되었다. (대표적으로 캐시워크 같은.)문제는 Flutter로 잠금화면을 직접 구현하기가 불가능하다는 것.결국 잠금화면 기능은 안드로이드 네이티브로 작업하기로 했다. Flutter와 네이티브 간 통신 구조를 구성하고 걸음 수를 센서로 측정하고 락스크린 위에서 포인트를 수집하고 일정 조건이 달성 되면 보상을 획득하게 되는 구조다.처음엔 그냥 간단할 줄 알았는데, 막상 만들어보니 의외로 고려할 게 많았다. 시작은 LockService잠금화면에서 항상 동작하..

지금 팀에 합류했을 때, 새로운 앱을 개발하는 데 있어 React-Native(이하 RN)와 Flutter 중 어떤 프레임워크를 선택할지 고민이 필요했다.결국 우리 팀의 선택은 Flutter였다. 익숙한 React 기반의 RN을 뒤로하고 Flutter를 선택하게 된 이유, 그리고 그 과정에서 개인적으로 느꼈던 차이점들을 공유해보려고 한다. 익숙한 React, 그런데 왜 Flutter?우선 나는 RN을 직접 사용해본 경험은 없지만, 예전에 웹 개발을 하면서 React는 익숙하게 다뤄본 적이 있다.React 문법을 그대로 활용할 수 있는 RN은 접근성이 좋은 프레임워크라, 처음에는 자연스럽게 RN으로 시작해야겠다고 생각했다. 그런데 왜 결국 Flutter였을까?개인적인 생각으로는 RN과 Flutter 모두..

이번에 새로 들어간 프로젝트에 Flutter를 사용하고 있다.처음에는 Provider 기본 라이브러리로 시작해서 무난하게 작업을 진행했는데…앱이 커지고 화면이 많아지다 보니, 여기저기서 데이터를 공유해야 하는 상황이 점점 늘어났고,그러다 보니 생각보다 빨리 코드가 복잡해지고 파악하기 어려운 문제가 찾아왔다. 😇 그래서 상태관리 라이브러리를 다시 고민하게 되었고,많은 개발자들이 사용하고 있는 Riverpod, Bloc, GetX를 하나씩 살펴봤다.직접 사용해보고 정리한 내용을 공유해보려고 한다. Riverpod한줄평: 깔끔하고 안전항 방식이 맘에든다. Riverpod은 Provider의 업그레이드 버전 같은 느낌이다.전역 상태관리도 안정적이고, 상태를 어디서든 타입 안전하게 가져올 수 있어서 테스트하기..
요즘 바빠진 회사 업무와 사이드 프로젝트를 진행하느라 책을 멀리하고 있었.. (사실 시간은 충분했다)다시 시작해보자. 로버트 C 마틴 - 클린 아키텍처 읽은 내용 정리 글.: 3부_ 설계 원칙 좋은 소프트웨어 시스템은 깔끔한 코드로부터 시작한다. SOLID 원칙의 목적은 중간 수준의 소프트웨어 구조가 아래와 같도록 만드는 데 있다.(*중간 수준: 프로그래머가 이들 원칙을 모듈 수준에서 작업할 때 적용할 수 있다는 뜻)- 변경에 유연하다.- 이해하기 쉽다.- 많은 소프트웨어 시스템에 사용될 수 있는 컴포넌트의 기반이 된다. 7장. SRP: 단일 책임 원칙이 원칙의 이름을 듣는다면 모든 모듈이 단 하나의 일만 해야 한다는 의미로 받아들이기 쉽다. 단 하나의 일만 해야 한다는 원칙은 따로 있다. 그것은..
로버트 C 마틴 - 클린 아키텍처 읽은 내용 정리 글.: 2부_ 벽돌부터 시작하기: 프로그래밍 패러다임 3장. 패러다임 개요세 가지 패러다임구조적 프로그래밍최초로 적용된 패러다임 (하지만 최초로 만들어진 패러다임은 아님)제어흐름의 직접적인 전환에 대해 규칙을 부과한다.객체지향 프로그래밍알골 언어의 함수 호출 스택 프레임을 힙으로 옮기면, 함수 호출이 반환된 이후에도 함수에서 선언된 지역 변수가 오랫동안 유지될 수 있음을 발견하였고, 이러한 함수가 클래스의 생성자가 되었고, 지역 변수는 인스턴스 변수, 그리고 중첩 함수는 메서드가 되었다.함수 포인터를 특정 규칙에 따라 사용하는 과정을 통해 필연적으로 다형성이 등장하게 되었다.제어흐름의 간접적인 전환에 대해 규칙을 부과한다.함수형 프로그래밍가장 먼저 만들어..
로버트 C 마틴 - 클린 아키텍처 읽은 내용 정리 글.: 1부_ 소개 1장. 설계와 아키텍처란?정의아키텍처: 저수준의 세부사항과는 분리된 고수준의 무언가를 가리킬 때설계: 저수준의 구조 또는 결정사항 등을 의미할 때 관계저수준의 세부사항과 고수준의 구조는 모두 소프트웨어 전체 설계의 구성요소이 둘은 단절 없이 이어진 직물과 같으며, 이를 통해 대상 시스템의 구조를 정의개별로는 존재할 수 없고, 고수준에서 저수준으로 향하는 의사결정의 연속성만이 있을 뿐 목표는?소프트웨어 아키텍처의 목표는 필요한 시스템을 만들고 유지보수하는 데 투입되는 인력을 최소화하는 데 있다. 결론개발 조직이 할 수 있는 최고의 선택지는 조직에 스며든 과신을 인지하여 방지하고, 소프트웨어 아키텍처의 품질을 심각하게 고민하기 시작하는 ..

iOS 시뮬레이터로 앱을 실행하려고 하면 아래 에러가 발생Target debug_unpack_ios failed: Exception: Failed to codesign /경로 with identity -. # 해결iCloud에 동기화중인 파일을 실행하려고 하기 때문. 1. 동기화 비활성화시스템 설정 -> 내 계정 -> iCloud -> iCloud Drive -> 데스크탑 및 문서 폴더 off -> 완료 2. 로컬 폴더 생성 (내 선택)로컬 폴더에 프로젝트를 옮기면 문제 해결.

회사 프로젝트들 중 같은 기능에 대해 모듈화를 진행하면서 SPM으로 분리하고, 각 레포를 private하게 관리하기 위해 SSH Key를 활용하기로 결정.Git SSH Key를 발급하고 등록하는 과정과 관련된 내용을 정리해본다. 1. 기존 SSH Key 확인새 SSH Key를 생성하기 전에 로컬 머신에서 기존 키를 확인ls -al ~/.ssh 2. SSH Key 생성터미널을 열고 아래 명령어를 입력ssh-keygen -t ed25519 -C "your_email@example.com"* -C : 이메일 주소를 키에 포함하여 식별 목적으로 사용 엔터를 누르면 아래와 같이 키 파일 이름과 저장되는 경로를 알려주는데 엔터를 눌러주자Generating public/private ed25519 key pair..

서평이 아닌 요약. Part 1. 올바른 마인드셋을 갖춰라Chapter 1. 레버리지가 높은 활동에 집중하라이펙티브 엔지니어는 더 오랜 시간을 일해서 더 많은 일을 하려는 사람이 아니다.업무를 효율적으로 완수하고, 제한된 시간에 더 많은 가치를 생산한다.공식의 분모를 낮게 유지하면서 분자를 높이려고 노력하는 것이다.즉, 레버리지는 활동이 얼마나 효과적인지를 측정하는 기준이다. 1. 특정 활동을 완료하는 데 드는 시간 줄이기2. 특정 활동의 생산량 늘리기3. 레버리지가 높은 활동으로 전환하기 Chapter 2. 학습을 위해 최적화하라성장 마인드셋 배우는 것은 이자처럼 복리로 계산된다.학습은 지수 성장 곡선을 따른다. 배운 지식을 기반으로 더 많은 지식을 더 빨리 쌓을 수 있다.학습에 일찍 최적화할수록 학습..
- Total
- Today
- Yesterday
- ios
- 플로팅팝업
- riverpod
- Flutter
- UIGraphicsBeginPDFContextToData
- SWIFT JavaScript
- 리팩터링
- pdfkit
- mutableString
- wkwebview
- UIGraphics
- NSMutableAttributedString
- 알고리즘
- OOP
- 에드먼드 라우
- 스위즐링
- 객체지향의 사실과 오해
- SWIFT WebView
- 클린 아키텍처
- swiftpdf
- 로버트C마틴
- SWIFT 자바스크립트연동
- ReactNative
- 이펙티브 엔지니어
- dfs
- llvm
- Swift
- SWIFT JQuery
- NSNotFound
- UIGraphicsBeginPDFPageWithInfo