전체 글(355)
-
[Android Studio] 앱 이미지 로고 변경
안드로이드 스튜디오에서 앱을 만들고 실제로 배포할 때 당연히 기본 앱 로고가 적용되어있습니다. 이것을 우리가 원하는 앱 이미지 로고로 변경할 수 있게끔 변경해보겠습니다. 우선 앱 로고로 설정할 이미지를 받아줍니다. 크기는 기본적으로 추후에 512 X 512로 들어가게 될 것입니다. !?!? 고죠 사토루 등장.... 제가 좋아하는 만화의 특정 캐릭터를 다운받았습니다. 다운받은 이미지를 res 폴더 내부에 넣어줍니다. 이제 프로젝트의 res에서 오른쪽 마우스 클릭을 한 뒤, New -> Image Asset을 눌러줍니다. 이 때 반드시 res에서 오른쪽 마우스 클릭을 해야 Image Asset이 나옵니다. res 내부의 다른 폴더에 오른쪽 마우스 클릭을 하면 Image Asset이 나오지 않습니다. 앱의 설..
2024.03.28 -
[에러] javax.management.InstanceAlreadyExistsException: MXBean already registered with name org.apache.commons.pool2:type=GenericObjectPool, name=pool
[Reason] Redis 를 사용하면서 Redis 클라이언트와 소통하기 위해 Jedis를 사용하고자 했고, Configuration을 설정하고 연결한 Jedis를 Bean 객체로 만들어주도록 했다. 이 후 프로그램을 실행 시 위와 같은 에러가 발생하였다. 기본적으로 Spring은 실행하자마자 Bean으로 설정된 모든 객체를 MBean으로 우선 등록하는데, 이에 JedisPool을 MBean으로 등록하고, 이후에 JedisPool의 커넥션으로 설정한 뒤 pool이라는 이름으로 초기화되어 반환하게 되는데 이 때 이미 MBean으로 등록된 JedisPool 객체가 커넥션을 수립 후 반환되어 다시 MBean으로 등록되고자 하여 중복된 MBean이 발생되었다는 에러가 나타난 것이다. [Solution] (1) ..
2024.03.27 -
서비스 요청 시 과도한 시간 소요를 줄이기 위한 노력
프로젝트를 개발하던 도중 1차적으로 완성된 백엔드 api를 개발한 안드로이드 어플리케이션에서 호출할 때 대용량의 데이터를 포함하여 요청 시 얼마나 시간이 걸리고 이에 대한 해결책을 알아보고자 하였습니다. 기존 서비스 요청 시 - 안드로이드 로직 // 테스트 용 스캔 데이터 총 1500개 for (int i = 0; i < 500; i++) { String rfidChipCode = "RFID" + i + "CHIP"; String filteringCode = "CCA2310"; String productCode_ = "A00"; String productSerialCode_ = (i + 1) + "D240313"; if (!productCodeList.containsKey(productCode_)) { ..
2024.03.20 -
[Java] 주키퍼 서버 / 클라이언트 (다운로드 및 설정)
주키퍼는 분산 시스템 설계하는 데에 있어 유요한 도움을 주는 서버 및 도구입니다. 오늘은 이 주키퍼 서버 및 클라이언트를 다운로드 하고 설정하는 방법에 대해서 정리해보겠습니다. 분산 시스템을 어떻게 개발할 것인가? 지금 현재 컴퓨터가 여러 대 있지도 않고 클라우드 기기를 여러 대 사놓고 원격으로 개발하는 일은 매우 불편하고 비용도 많이 듭니다. 하지만 일반적으로 분산 시스템 개발은 정해진 방식으로 진행되는데, 이 방식이 보통 여러분 기기에서 로컬로 진행할 수 있습니다. 따라서 개발환경(IDE)에 맞춰 로컬에서 코드를 작성하고, 디버깅하고, 테스트할 수 있습니다. 일반적으로 로컬에서 개발을 마친 다음에 개발한 프로그램을 검증하기 위해 클러스터 같은 플랫폼에 배포하고 품질 검증을 거칩니다. 그러고 나서 실제..
2024.03.20 -
[Java] 클러스터 코디네이션(주키퍼)과 리더 선출 알고리즘
분산 시스템의 알고리즘과 설계를 진행하기 이전에, 분산 시스템에서 가장 기본적이고 공통적인 두 가지 용어부터 알아보겠습니다. (1) 노드 (node) 노드는 분산 시스템의 일부로 동작하는 시스템에서 실행되는 각 프로세스입니다. 분산 시스템에서는 두 노드 사이에 선분이 존재하면 두 프로세스가 네트워크를 통해 서로 통신할 수 있다는 뜻입니다. (2) 클러스터 (cluster) 클러스터는 서로 연결된 노드의 모음입니다. 한 클러스터의 노드들은 동일한 작업을 수행하며 일반적으로 동일한 코드로 실행됩니다. 보통 우리는 분석해야하거나 복잡한 계산이 필요한 데이터의 양이 매우 많을 경우, 이 작업을 수행하기 위해 노드가 모여 있는 특정 클러스터로 넘기길 원합니다. 여기서 문제는, 어느 노드에서 어떤 작업을 수행할 것..
2024.03.19 -
[Java] Java를 활용한 분산 시스템
분산 시스템은 어디에서나 존재하는 시스템입니다. 영화를 보거나 온라인 쇼핑, 휴대폰으로 차량 공유 서비스들을 이용할 때 인터넷에서 무언가를 검색할 때마다 사실 우리는 앱이나 웹 페이지를 통해 그 뒤에 있는 분산 시스템과 통신합니다. 이런 서비스를 제공하는 모든 기업은 전 세계에 걸쳐 고도로 확장이 가능한 대규모 분산 시스템을 운영하여 매일 수백만명의 사용자와 데이터를 처리하고, 일정하고 원활한 사용자 경험을 제공합니다. 또한, 클라우드에서 호스팅 되는 아주 간단한 웹사이트 조차도 분산 시스템에서 동작합니다. 클라우드는 특별히 기업을 위해 구축된 복잡한 분산 시스템인 만큼 소프트웨어 개발자들이 맡기 때문에 사용자들은 제품에 집중하고 나머지 부분은 클라우드 공급 업체가 처리하도록 할 수 있습니다. 중앙 집중..
2024.03.19