분류 전체보기108 안드로이드 스튜디오 프로젝트 복구하는 법 (프로젝트 영구 삭제) 깃 커밋을 하기 전에 실수로 프로젝트를 삭제하는 일이 발생했다. (진심으로 틈틈히 커밋을 했어햐 했는데 당시에 내가 미쳤는지 커밋을 안 했다) 이럴 경우 안드로이드 스튜디오에서는 비록 파일이 삭제됐을지라도 같은 이름의 프로젝트를 만들면 같은 프로젝트라고 인식하여 Local History를 보여준다!!!(이때 명령창을 통해 폴더를 생성해야 함)선택한 뒤 revert를 하면 파일이 다시 돌아온다....!!! 모바일/Android 2024. 11. 10. [kotlin] 함수 참조 :: 더블 콜론 reflection은 실행 중(런타임)인 프로그램이 자신의 클래스를, 구조를 분석하고 수정하기 위해서 사용되는 기술이다. 다시 말해 컴파일 이후 알 수 없는 동작들(e.g. 프레임 워크 개발, 테스트 프레임 워크, 설정 등등)은 컴파일 후 바이트 코드로 변환되기에 Reflection을 사용해 바이트 코드를 분석해 다시 클래스 정보를 얻어야 한다. [코틀린/자바 소스코드] → [컴파일러] → [바이트코드] → [JVM이 실행] 여기서 더블콜론 연산자는 리플랙션을 위해 사용한다. 하지만 코틀린에서 더블 콜론으로 클래스를 가져오면 자바 클래스가 아닌 코틀린 특화 클래스인 KClass가 반환 되기에, Java 라이브러리의 호환성을 위해 .java를 자주 사용한다.User::class // KClassUser::.. 모바일 2024. 10. 22. AWS linux kafka 초기 설정 ./bin/kafka-server-start.sh config/server.propertiesjava 설치yum list java*sudo yum install java-11-amazon-corretto.x86_64 서버 설정sudo vi /etc/hosts15.165.47.225 kafka-0143.203.183.70 kafka-0243.203.163.54 kafka-03 zookeeper 설치Apache ZooKeeper Apache ZooKeeperzookeeper.apache.orgwget https://dlcdn.apache.org/zookeeper/zookeeper-3.8.4/apache-zookeeper-3.8.4-bin.tar.gztar zxf apache-zookeeper-3.8.4-bi.. AWS 2024. 9. 20. [kotlin] 공변성과 반공변성 공변성(Covariance)?타입 A`가 타입 A의 하위 타입이라면, 제네릭 타입 T가 T의 하위 타입이 되는 것을 발한다. out keyword를 사용하여 공변성을 표현한다.class Box(val value: T) { // code}val dogBox: Box = Box(Dog())val animal: Box = dogBox dog는 Animal의 하위 타입이다. 공변성을 나타내는 out키워드를 통해 Box 역시 Box에 타입캐스팅할 수 있다. 반공변성(Contravariance)타입 A`가 타입 A의 하위 타입이라면 제네릭 타입 T이 T의 하위 타입이 되는 관계를 의미한다. 그리고 이 규칙이 매개변수로 전달된다면 이 동작이 반대로 작용한다.interface Comparable { fun compar.. 모바일 2024. 8. 29. [오류 해결] Topic sync or token retrieval failed on hard failure exceptions fcm 서비스와 연결이 되지 않아 생기는 에러 메시지다. 검색해봐도 네트워크를 확인해보라거나 google-service.json을 살펴봐야며 이 오류를 비롯해 나는 Phenotype API error 까지 발생했다. 이 오류가 발생해 firebase 토큰을 가져오지 못 했는데, 여러가지로 설정에 문제가 많았어서 간단한 오류임에도 시간이 오래 걸렸다. (1) build.gradle.kts (project) 설정 오류의존성과 플로그인에 적어놓은 google-services 버전이 달랐다. (2) build.gradle.kts (modules)플로그인에 google-services를 우선 적지 않았다. 해당 플러그인은 Firebase와 Google 서비스 설정을 설정하며 우선 적어야 올바르게 작동된다. 이전.. 모바일/Android 2024. 8. 19. [삼성 SW] 테트로미노 14500번: 테트로미노 (acmicpc.net)문제 풀이는 유튜브 영상을 참고하였다. 1) 완전 탐색테트로미노가 될 수 있는 모든 경우를 모두 탐색하여 합을 갱신한다. 시간 복잡도는 최대 500 * 500 * 5(테트로미노 가짓수) * 4(회전) * 4(대칭) = 25 * 10^6 정도라 완전탐색을 진행해도 시간복잡도가 넘지 않는다.import sysN, M = map(int, input().split())arr = [list(map(int, input().split())) for _ in range(N)]# 가능한 모든 패턴의 회전/대칭 좌표를 저장한다.tet = [[(0, 1), (0, 2), (0,3)], [(1, 0), (2, 0), (3, 0)], # | (회전) [(0, 1), (1, .. 코딩테스트 2024. 8. 8. Android에서의 의존성 주입(DI)이란? Overview객체지향 프로그래밍의 설계 패턴 중 하나로 한 클래스가 다른 클래스를 참조할 때 참조된(필요한) 클래스를 종속 항목이라고 하며, 이때 내부에서 직접 생성하는 것이 아니라 외부에서 주입을 함으로써 의존성을 제공하는 기술이다. 여기서 필요한 클래스를 매개변수로 제공받으며 클래스 인스턴스가 자체적으로 종속 항목을 얻는 대신 매개변수로 종속 항목을 받는다. 다음은 클래스 내부에서 자체적으로 종속 항목을 받는 코드 예시다.class Car { private val engine = Engine() fun start() { engine.start() }}fun main(args: Array 이 코드는 두 가지 문제가 있을 수 있다. Car와 Engine은 밀접하게 연결이 .. 모바일/Android 2024. 8. 6. [공식 문서] compose 단계 frame의 세 단계compose에는 세 단계를 가지고 있다.1) CompositionUI를 보여준다. compose가 composable 함수를 실행하고 UI를 생성한다. 2) LayoutUI가 위치한 곳이다. 레이아웃 요소가 확인되면 요소와 자식 요소를 각 레이아웃 트리의 노드의 2D 좌표에 배치한다. 3) Drawing 어떻게 렌더링되는지를 보여준다. UI 요소는 캔버스에 그려진다. 일반적으로 디바이스 화면에 그려진다. 이 단계의 순서는 일반적으로 동일하지만 composition에서 layout, drawing으로 데이터가 한 방향으로 흘러갈 수 있게 하여 frame을 생성한다. BoxWithConstraints와 LazyColumn, LazyRow는 부모 레이아웃 단계에 종속되기에 예외.물론 co.. 모바일/Android 2024. 8. 6. [네트워크] 데이터 링크 계층 MAC Address맥 주소는 네트워크 카드에 부여되는 고유 번호다. Media Access Control의 약어로 LAN 카드 주소라고도 불린다. 네트워크 카드NIC(Network Interface Card) 마다 고유의 MAC주소가 부여된다. MAC주소는 제조 과정에서 직접 기록된다. 길이는 48비트이며, 상위 24비트는 제조사 구별 코드고, 하위 24비트는 제조사가 제품에서 부여한 일련번호다. IEEE에서 MAC주소를 unique하게 관리하며 글로벌하게 동일한 MAC주소를 가진 LAN 카드는 존재하지 않는다. NIC 카드와 프레임 데이터ethernet에 올라오는 데이터에는 frame을 전송한 호스트 NIC의 MAC주소와 수신 호수트 NIC의 MAC주소가 저장되어 있다. 각 NIC는 etherne.. CS 2024. 8. 5. [네트워크] 데이터 통신 용어 정리 데이터 통신 방식1) 유니 캐스트 (unicast)일대일 관계의 통신으로 하나의 수신자로 데이터를 전송한다. 수신 PC가 많을 수록 부하가 커진다. 2) 멀티 캐스트 (multicast)미리 정한 호스트 집합으로 데이터가 동시에 전달된다. LAN 상에서 주로 사용한다. 유니캐스트와 비교했을 때 데이터 전송량을 크게 줄일 수 있다. 인터넷 라우터가 미리 기능을 지원해줘야 사용이 가능하다. 3) 브로드 캐스트 (broadcast)통신망에 연결된 모든 컴퓨터에 데이터를 전송한다. 해당 네트워크의 모든 PC들이 신호를 받기에 수신 PC는 필요한 정보인지 한 번 더 확인하는 과정을 거친다. 이에 CPU를 사용하게 되어 과도한 브로드캐스트는 네트워크 및 PC 성능을 떨어트릴 수 있다. 프로토콜 (protocol)둘.. CS 2024. 8. 5. [공식문서] Side-effects in Compose Previewside-effect는 composable 함수의 범위 밖에서 일어나는 앱의 상태변화를 일컫는다. composable의 lifecycle과 속성은 예측불가능한 recomposition이 일어나기 때문에 다양한 순서로, recomposition가 실행되거나 폐기될 수 있기 때문에 composable은 side-effect와 독립적이어야 한다. 그러나 side-effect는 스낵바를 보여주거나 특정한 조건이 만족됐을 경우 다른 화면으로 navigate되는 둥 트리거가 발생했을 시 필요하다. 이런 액션은 composable의 lifecycle 같은 통제된 환경에서 호출되어야 한다. 상태와 효과 사용 사례composable은 side-effect에게 자유롭다. 어플의 상태변화를 만들 때 반드시 E.. 모바일/Android 2024. 8. 4. [공식 문서] Lifecycle of composables OverviewComposition은 내 앱의 UI를 보여주며, composables의 실행에 의해 생성된다. 다시 말해 Composition은 UI를 그리는 composables의 트리 구조다. 제트팩 compose는 composition이 1) 처음 실행될 때, composables 함수를 실행시키는데 이후 Composition에 있는 UI를 그리기 위해 composables를 계속 감시한다. 2) 변화를 감지하면 제트팩 compose는 recompostion를 스케줄링한다. recomposition은 상태 변화에 대한 반응으로 composables을 바꿀 때 일어난다. 다시 말해 내 composable를 수정할 수 있는 경우는 recomposition이 일어날 때뿐이다. 그림은 Composable.. 모바일/Android 2024. 8. 4. 이전 1 2 3 4 ··· 9 다음