분류 전체보기
-
[iOS] 시스템 폰트프로그래밍/iOS 2025. 2. 11. 13:53
systemFont는 한글, 영어에 따라 다른 폰트가 적용되는데, 폰트 크기에 따라서도 정말 다르게 적용되는지 확인하기시스템 폰트iOS 9에서 처음으로 San Francisco 폰트가 시스템 폰트로 도입되었고 iOS 11부터 SF Pro라는 이름으로 전환되었음한글은 SF Pro 폰트 파일에 포함되지 않으며 한글 영역은 대체 폰트(Apple SD Gothic Neo)로 적용됨 가변 폰트(Variable Font)OpenType의 확장으로, 하나의 폰트 파일에 두께, 너비, 기울기, 광학 크기 등의 축(axis)을 설정해 두고, 해당 축의 값을 유연하게 조절하여 여러 스타일을 나타내는 폰트 광학 크기(Optical Size)글자 크기에 따라 글자의 굵기, 폭, 자간, 세부 형태 등을 조정하여 가독성을 최적..
-
Expo Router - 파일 기반 라우팅의 의미프로그래밍/ReactNative 2025. 2. 2. 01:53
Expo Router란? React Native에서 지원하는 파일 기반 라우팅을 제공하는 라이브러리를 말한다... 고 한다.앱 개발자인 나는 “파일 기반 라우팅”이라는 표현이 정확히 무슨 말인지 이해하지 못했는데, 폴더 구조를 떠올리면 쉽게 이해할 수 있다.만약 내가 원하는 문서 파일이 다운로드 폴더에 있는 “설명서” 폴더 안에 있다면,이 파일을 찾기 위해서 가장 먼저 다운로드 폴더로 이동하고, 그 다음에 “설명서” 폴더로 이동할 것이다.이렇게 폴더 구조를 따라가는 방식으로 경로를 정의하는 것이 바로 파일 기반 라우팅이라고 한다. 이제 다시 Expo Router 로 돌아와서, 다음과 같은 구조의 폴더 구조가 있다고 하자.app/ ├── index.tsx // 메인 화면 ('/') ├..
-
-
-
(3) Decorator Pattern프로그래밍/Design Pattern 2023. 3. 13. 00:42
여러 종류의 음료 가격을 계산하는 부분을 구현하려고 합니다. 음료별 종류뿐만 아니라 커피처럼 토핑 옵션이 있을 때, 음료 메뉴들의 부모클래스를 선언하고 각 메뉴별로 상속하여 옵션별로 가격을 반환하는 구조로 만들 수 있습니다. class Beverage { func cost() -> Int { return 2500 } } class Espresso: Beverage { override func cost() -> Int { return super.cost() } } class TwoShotEspresso: Beverage { override func cost() -> Int { return super.cost() + 1000 } } class ThreeShotEspresso: Beverage { overri..
-
(2) Observer Pattern프로그래밍/Design Pattern 2023. 3. 5. 17:27
새로운 알림이 올 때마다 하단 탭의 badge 숫자들이 갱신되어야 한다고 합니다. 이때 알림이 올 때마다 FCM 라이브러리의 특정 함수가 불려진다고 한다면 아래처럼 구현할 수 있을 것입니다. class ReceiveData { var 채팅탭_뱃지카운트: Int var 알림탭_뱃지카운트: Int var 전체_뱃지카운트: Int ... } class FCM { let chattingTab = ChattingTab() let alarmTab = AlarmTab() /// 라이브러리에 의해서 새로운 알림이 올 때마다 호출되어지는 함수 func receiveNewAlert(data: ReceiveData) { let (채팅탭_뱃지카운트, 알림탭_뱃지카운트, 전체_뱃지카운트) = data chattingTab.up..
-
(1) Strategy Pattern프로그래밍/Design Pattern 2023. 3. 5. 02:43
설명 1. 새로운 기획에서 앱 화면에 오리(duck)를 그려달라고 하여, 오리 클래스를 만들게 되었다고 가정합니다. 또 오리를 눌렀을 때 오리가 꽥꽥 내는 소리와 나는 동작을 표현해야 한다고 하면 코드 짰을 때 대략 다음과 같을 것입니다. class Duck { func quack() { // 꽥꽥 } func fly() { // 나는 동작 } ... } 2. 그 다음주 기획에서 타겟A군의 유저에게는 청둥오리, B군에는 검은오리가 있어야 한다고 합니다. 또한 이 오리들의 우는 소리와 나는 효과가 달라야 한다고 합니다. 이 경우 개발자는 간단히 오리 클래스를 상속하여 각 오리 클래스를 구현하는 선택을 할 수 있습니다. 구체적으로 다음과 같습니다. (1) 상속을 사용 - Duck 클래스를 상속받은 Malla..
-
좋은 동료가 되는법카테고리 없음 2022. 1. 5. 03:48
1. 10배 뛰어난 개발자가 되는법 https://muchtrans.com/translations/10xdeveloper.ko.html 10배 뛰어난 개발자 되기 Recently I met with a friend of mine, James, who was a football player in college. He’s now the COO of a startup, and he mentioned that he was spending a lot of his time teaching what he considered basic teamwork to employees, especially around accountab muchtrans.com - 정서적 안정감이 있는 환경을 만들기 - 정서적 안정감이 있는 환경..
-
[부스트캠프 웹·모바일 6기] 멤버십 수료 후기프로그래밍/부스트캠프 2021. 12. 8. 00:18
1. 어제 네트워킹데이의 최종발표를 마치면서 14주간 진행되어온 멤버십이 끝났다. 챌린지때만큼이나 멥버십 과정도 정말 바빴다... 기업설명회나 네트워킹데이도 있지만 이 글에서는 스프린트와 그룹 프로젝트에 대해서만 작성함. 2. 스프린트 8주와 그룹 프로젝트 6주로 이루어져있는데, 스프린트 기간에는 비교적 시간적 여유가 많아서 따로 공부할 시간도 충분히 있었지만 그룹 프로젝트가 시작되고나서는 대부분의 시간을 팀플에 집중하는데 썼다. 3. 스프린트 기간에 확실히 많은 것을 얻어갔다. 수업 주제도 정말 좋았고 잘 이해가지 않을 때 직접 자유롭게 마스터와 별도로 현업자에게 직접 물어볼 수 있었던 점이 좋았다. 내가 처음 앱을 출시했을 때 고민했던 부분을 하나씩 질문해보았고 전혀 생각하지도 못했던 점도 많이 얻어..