📊 분류 전체보기 277

Debounce, Throttle

오늘은 프론트 개발자라면 중요한 개념인 Debounce, Throttle 에 대해서 좀 더 파헤쳐 보려고 한다. 서버에 사용자의 요청을 적절히 전달하는 것은 프론트엔드 개발자의 중요한 역할 중 하나라고 생각한다. 실제 상황에서 많이 발생하는 일 중 하나가 있는데 사용자가 버튼을 누를 때 단 한 번의 요청을 의도했음에도 불구하고, 그 요청을 실행 중이었는데 사용자는 실행 중인지 몰라 버튼을 또 누르게 되는 경우가 있다. (이거 왜 반응을 안 하는거야..?! 이러면서..) 이때 모든 요청을 곧이 곧대로 서버에 보내게 되면 서버는 이 요청을 모두 처리해 사용자는 예상치 못한 문제를 겪게 된다. 개발하면서 생각보다 이런 일들이 많이 발생하는데 그 중 하나의 방어책이 바로 로딩 표시를 버튼 위에 덮어씌워 사용자가..

🐦 Flutter 2023.12.09

[Flutter] InheritedWidget 에 대한 고찰 1 - BuildContext.dependentOnInhheritedWidgetOfExactType

Flutter 의 InheritedWidget 에 대해 알아보기 전에 BuildContext.dependentOnInhheritedWidgetOfExactType 에 대해 이해하는 것이 중요하다. 플러터 공식 문서에도 InheritedWidget 의 설명을 보면 BuildContext.dependentOnInheritedWidgetOfExactType 에 대한 설명이 먼저 표기되어 있다. 참고로 우리 프로젝트에서는 주 고객층이 연령대 높으신 분들이 많은데 이 분들은 폰 설정에서 텍스트 크기를 크게 설정하시는 분들이 많았다. 그래서 UI 가 일부 안 보이거나 UI overflow 가 되는 현상이 많은데 사실 이러면 안되지만, 폰 설정에서 텍스트 크기를 크게 설정하여도 우리는 텍스트 크기를 고정시켜 커지지 ..

🐦 Flutter 2023.10.14

[Flutter] 만보기 개발 기록

※ 본 글은 정보 공유성의 글이 아니라 개인 회고글에 가까우니 참고 바랍니다. 우선 Flutter 로 초보 개발자가 만보기 서비스를 런칭한다고 하면 어려울 수도 있을 것 같다는 생각이 든다. 단순히 걸음수만 표시해주는 간단한 기능이라면 그나마 낫겠으나 추가적으로 기능이 더 붙는다면 힘들 수 있을 것 같다는 내 개인적인 의견이다. 물론 사람마다 개발 실력이 다르다 아쉽게도 코드 공유 없이 설명을 이어나가야 할 것 같다. 나야 물론 코드를 공유하고 싶은 마음이 크지만 내가 개발한 서비스는 회사 소유이기에 코드를 공개할 수 없다. 하지만 헤맸던 과정을 블로그에 남겨 두는 것은 괜찮지 않을까 문제는 iOS 우선 우리 서비스는 안드로이드는 크게 문제가 없었다. 문제는 iOS 였다. 꽤나 많은 이슈가 있었고 테스트..

⏳ 회고 2023.09.24

factory 생성자에 대한 고찰2 - 일반 생성자와 다른 차이점

지난 시간에는 json 파싱할 때 factory 생성자를 왜 쓸까? 에 대한 포스팅을 했었다. 2023.09.21 - [🐦 Flutter] - factory 생성자에 대한 고찰1 - Json 파싱 근데 지난 포스팅에도 봤다시피 factory 생성자는 일반 생성자와는 다른 모양이었다. 그러니까 일반 생성자 는 객체를 다음과 같이 초기화할 수 있다. Album({this.userId, this.id, this.title}); 반면 factory 생성자 는 다음과 같이 초기화한다. factory Album.fromJson(Map json) { return Album( userId: json['userId'], id: json['id'], title: json['title'], ); } factory 생성자는 ..

🐦 Flutter 2023.09.23

factory 생성자에 대한 고찰1 - Json 파싱

class Album { final int userId; final int id; final String title; Album({this.userId, this.id, this.title}); factory Album.fromJson(Map json) { return Album( userId: json['userId'], id: json['id'], title: json['title'], ); } } json 파싱할 때 보통 위 예제처럼 factory 생성자를 사용한다. factory 생성자는 인터넷에 조금만 찾아도 "이미 생성된 인스턴스를 재활용하는 생성자" 라고 알고 있을 것이다. 위 예제는 사실상 factory 생성자를 굳이 안 써도 된다고 한다. factory 생성자를 json 파싱할때만 본 나..

🐦 Flutter 2023.09.21

x86, x64, x86_64, arm

ISA 란? 하드웨어와 소프트웨어 사이의 Interface를 정의하는 것. 하드웨어와 프로그램 사이의 매개체 역할을 하는 것이다. 세상에는 많은 ISA가 있다. 칩을 만드는 회사마다 ISA의 종류가 다르다. 회사마다 자신만의 ISA를 가지고 있는 것이다. 흔히 쓰이는 랩탑, 데스크탑, 심지어 서버 컴퓨터까지 전부 Intel, AMD 프로세서를 쓰는 아키텍처를 쓰고 있는데, 이 회사에서는 x86 ISA를 가지고 있다고 얘기를 한다. 그 외에 스마트폰에 쓰이는 ARM 프로세서가 있다. 이 x86과 ARM은 서로 다른 ISA라고 말할 수 있다. 즉, 데스크탑과 스마트폰은 다른 ISA를 가지고 있다고 말할 수 있다. 이것은 이렇게 말할 수 있다. 데스크탑에서 만든 소프트웨어를 바로 ARM 프로세서(모바일)에서 ..

[안드로이드] compileSdkVersion, targetSdkVersion, buildToolsVersion

안드로이드 OS API 나는 아이폰을 쓰고 있기 때문에 안드로이드 OS API 가 뭔지 정확히 몰랐다. 또한 티라미수, 롤리팝..? 들었을 때 이게 뭔소린지 싶었다. 티라미수, 롤리팝..? 안드로이드 운영 체제 버전을 의미한다. 안드로이드 운영 체제 버전은 주로 디저트 이름으로 알려져 있다. 이는 구글에서 안드로이드 버전 코드 네임을 디저트 이름으로 명명하여 사용하는 관행이다. 디저트 이름은 해당 버전의 알파벳 순서에 따라서 지정되며, 알파벳 순서대로 칠러(Cupcake), 도넛(Donut), 이클레어(Eclair), 퓨오리아(Froyo), 진저브레드(Gingerbread) 등 다양한 디저트 이름이 사용되었다. 다음은 안드로이드 버전 순서와 디저트 네임이다. 버전 디저트 명 출시일자 안드로이드 1.0 -..

👩🏻‍💻 TIL 2023.06.25

[TIL] Github Action 실습

Github Actions를 이용해서 AWS EC2에 Docker로 배포를 하는 방법 아래 유튜브를 참고했습니다 https://youtu.be/E3i9qt0SS-I 전체적인 Flow 1. 로컬 PC 에서 개발을 한 후 Github 에 푸시 2. 특정 브랜치에 푸시가 되면 (=event trigger) 깃헙 액션이 동작되도록 3. 깃헙 액션이 Github Container Registry 에 소스를 받은 후 도커 이미지로 빌드 4. 빌드된 이미지를 EC2 에 등록된 Runner 가 복사 5. 기존 이미지를 삭제하고 새로운 이미지로 실행 1. 도커 파일 생성 도커 파일 생성 -> touch Dockerfile Dockerfile 에 다음과 같이 작성해줍니다. FROM node:14.19.0 : nodejs ..

👩🏻‍💻 TIL 2023.06.04

[iOS] 전역변수, 클래스간 데이터 전달 - 3

1. 전역변수 설정 및 참조 AppDelegate 에 다음과 같은 globalData 와 같은 전역변수가 있다고 하자. 이를 다른 화면에서 출력해보겠다. @main class AppDelegate: UIResponder, UIApplicationDelegate { // 전역변수 선언하는 부분 - 변수, 배열, 딕셔너리, 구조체, 클래스 var globalData: String = "" 뷰 컨트롤러 쪽이다. AppDelegate 를 참조하는 방법은 다음과 같이 꼭 써줘야 한다. (이게 룰이다) import UIKit class NvMainViewController: UIViewController { // 전역변수를 참조하는 방법 let appDelegate = UIApplication.shared.dele..

🦜 Swift 2023.05.14