IT220 [JS] forEach, "사이드 이펙트(side effect)"가 있을 때만 사용하자 용어 정리side-effect (부작용)함수가 실행 중에 외부 상태를 변경하는 행위 (예: 콘솔 출력, 변수 수정, API 호출 등) pure function (순수 함수)입력 → 출력만 존재하고 외부 상태에 영향을 주지 않는 함수 (ex. map, filter 등에서 쓰는 콜백) 예제// 사이드 이펙트를 map에서 쓰는 경우 (비추)callbacks .filter(cb => typeof cb === 'function') .map(cb => cb()); // 이 코드는 cb()가 어떤 부작용(API 호출, 로그 등)을 일으키는 상황인데, map은 원래 "값을 변환해서 새 배열을 만드는" 용도이기 때문에 이 부작용이 코드 흐름 속에서 잘 드러나지 않고 가독성이 떨어진다는 뜻이에요. 위의 예제를 fo.. 2025. 7. 4. #11 hmac (Hash-based Message Authentication Code) 개념로, 해시 함수를 기반으로 한 메시지 인증 코드입니다. 쉽게 말해, 메시지가 중간에 바뀌지 않았는지 확인하고, 누가 보냈는지도 검증할 수 있게 도와주는 기술 HMAC의 기본 목적 무결성 보장: 메시지가 도중에 변경되지 않았는지 확인인증(Authentication): 메시지를 누가 보냈는지 (공유된 비밀 키를 가진 사람인지) 검증 검증 흐름예시 상황을 볼게요 - A가 B에게 메시지와 HMAC을 보냄 - A와 B는 같은 비밀 키(key) 를 미리 알고 있음 A가 보낼 때hmac = HMAC(key, message) // 송신자가 계산→ message + hmac 전송 B가 받을 때expectedHmac = HMAC(key, message) // 수신자가 동일 방식으로 재계산 B는 전송받은 hmac.. 2025. 6. 12. #7 빌드 시 파일 이름에 버전과 날짜 이름 추가하기 aab, apk 둘다 됨아래의 예제는 gradle 파일이 Kotlin DSL 베이스여야 한다. app/build.gradle.ktsval appName = "Hello"val buildDate: String by lazy { SimpleDateFormat("yyyyMMdd-hhmmss").format(Date())}android { ... defaultConfig { ... setProperty("archivesBaseName", "$appName_v$versionName($versionCode)-$buildDate") }} by lazy처음 사용할 때 초기화되고, 이후에는 캐시된 값을 반환비용이 큰 초기화가 필요하지만 사용되지 않을 수도 있는 경우앱 시작 시 불필요.. 2025. 5. 25. #6 나만 헷갈렸나? Jackpot Compose 테마 적용 테마 추가 방법Material Theme Builder 접근source color 선택 (선택 시 왼쪽 동그라미 칼라 선택)HCT Color Picker 선택 모달에서 원하는 칼라를 Hex Color에 지정 후 Apply 선택오른쪽 아래에 Pick your fonts 선택폰트 적절히 선택Export theme 선택 후 다운로드코드에 복사 붙여넣기해당 테마 적용 테마 적용 시 알아야할 사실dynamicColor 값이 true이면 우리가 원하는 테마 적용 안됨@Composablefun AppTheme( darkTheme: Boolean = isSystemInDarkTheme(), // Dynamic color is available on Android 12+ dynamicColor: Bool.. 2025. 5. 20. #5 나만 헷갈렸나? Jackpot Compose > LazyColumn, Icon Column vs LazyColumn항목Column LazyColumn전체 아이템 로딩전부 메모리에 올림화면에 보이는 것만 필요할 때 로딩많은 아이템 처리비효율적 (메모리 사용 많음)효율적 (스크롤에 따라 로딩)스크롤 지원기본적으로 없음(직접 verticalScroll() 추가해야 함)기본적으로 스크롤 지원리스트처럼 사용 가능?❌✅대표적인 사용처적은 수의 뷰 정렬할 때수십 개 이상의 리스트 표시할 때 RTL, LTR에 따른 레이아웃 설정(아직 잘 모르겠다. 실습 예제를 해봐도 저 코드로 인하여 어떤 이점이 있는지... 이론적으로는 알겠는데 실습을 통해서는 알 수 없었다. 추후 알게된다면 업데이트. 지금은 일단 이런게 있다라는 정도로 넘어가자)@Composablefun AffirmationsApp().. 2025. 5. 19. #4 나만 헷갈렸나? Jackpot Compose > 코틀린 문법 data class데이터만 포함.작업을 실행하는 메서드는 없다.Kotlin 컴파일러에서 특정 가정을 하고 일부 메서드를 자동으로 구현equals()hashCode(): 특정 컬렉션 유형을 사용할 때 이 메서드가 표시됩니다.toString()componentN(): 함수 호출 시 결과 값을 2개를 가져오려 할 때 (Pair를 써도 되지만, 네이밍만 잘 명시하면 이게 더 좋음)copy()data class User( val name: String, val profileImg: String, val age: Int) Object싱글턴 객체 컴패니언 객체Kotlin에서는 static 키워드가 없음.대신 companion object를 사용해서 클래스 이름으로 접근할 수 있는 정적 멤버를 만들 수.. 2025. 5. 17. 이전 1 2 3 4 ··· 37 다음