[Guide | App – iOS] 앱개발시 테스트환경 구축

배포환경 구축의 중요성과 iOS환경에서 사내배포하는 방법에 대하여 정리해보자.


작성일 : 2019-08-17

앱개발이 완료되면 버그 및 개선사항을 이슈화하고 수정하기 위해 사내배포가 필요하다.

수정 -> 배포 -> 수정 -> 배포 -> 수정 -> 배포 -> 수정 -> 배포 ...

한번에 수정하고 완료된다면 이상적이겠지만 대부분의 경우 수정과 배포를 여러번 반복하게된다.

배포절차를 정리하고 자동화가 필요한 이유이다.


iOS의 경우 단순히 빌드파일(.ipa)로 사내배포가 불가하고 다음 4가지 방법으로 정리된다.

1> 디바이스를 직접 맥에 연결하여 빌드

여러기기에서 테스트를 해야하는 경우 번거롭다.


2> AdHoc 배포 (‘특별한 목적을 위해서’라는 뜻의 라틴어)

기기의 UDID를 알아내는 절차만 거치면 가장 깔끔한 방법이다.
[LINK - Device UDID 확인]

3> TestFlight 배포

테스트 기기를 위한 계정생성 및 검수 등의 불편하다.

4> Enterprise 배포

매우 편리하지만 1년에 300달러(?)가량의 비용이 발생한다.

결론을 내리자면 규모가 있고 비용부담이 없다면 4> Enterprise, 스타트업과 같이 인원이 적고 비용을 부담하고 싶지 않다면 2> AdHoc 배포가 현명한 방법이 아닐까 생각된다.

[Tip | Java – Spring] BeanCreationException

서비스 시작시 아래메시지가 발생하였다. 문제를 확인하고 해결해보자.
Error Message.
org.springframework.beans.factory.BeanCreationException: Error creating bean with name ‘OpdController‘: Injection of resource dependencies failed; nested exception is org.springframework.beans.factory.NoSuchBeanDefinitionException: No bean named ‘OpdService‘ available


작성일 : 2021-03-24

컨텍스트에 없는 빈을 주입하려 할때 발생한다.
OpdService에 @Service 어노테이션을 선언해주어야 한다.

@Controller
public class OpdController {

   @Autowired
   private OpdService opdService;
   ...

}
@Service
public class OpdServiceImpl implements OpdService {
   ...
}

다른 빈 ID를 사용하려 했을때 실수로 잘못된 이름에 주의한다.

@Controller
public class OpdController {

   @Autowired
   @Qualifier("renameService")
   private OpdService opdService;
   ...

}
<!-- XML 선언 -->
<bean id="renameService" class="com.opendocs.project.OpdServiceImpl" />
// Annotation 선언
@Service("renameService")
public class OpdServiceImpl implements OpdService {
   ...
}

[Source | MySQL or MariaDB] 데이터베이스 생성 및 접속 설정

데이터 베이스를 MySQL / MariaDB로 선택하여 프로젝트를 진행할 경우 디비생성 및 접속권한을 부여하는 방법을 설명한다.


작성일 : 2021-02-23

1> 데이터베이스 생성

create database {디비명} collate '{문자셋}';
# Ex)
create database ProjectDB collate 'utf8_general_ci';

2> 사용자 추가

create user '{사용자ID}'@'{접속IP}' identified by '{비밀번호}';
# Ex)
create user 'opendocs'@'localhost' identified by 'passOpd';

3> 권한부여 및 적용

# 권한부여
grant all privileges on {디비명}.* to '{사용자ID}'@'{접속IP}';
Ex)
grant all privileges on projectDB.* to 'opendocs'@'localhost';
# 권한적용
flush privileges;