Android/App개발2021. 3. 26. 17:13

MultiWindow를 지원할지에 대해 프로그램 설계시 미리 고려할 사항이 있겠다.
지원하고 한다면 screenOrientaion로 가로/세로로 고정하지 말고 모든 사이즈의 화면에 대응되도록 레이아웃을 고려하여 작성해야한다.
액티비티의 최소사이즈를 지정하면 그 지정한 사이즈 이하로는 조정이 되지 않는다.

screenOrientation를 지정한 상태에서 실행중이 앱을 멀티윈도우로 진입시키면 액티비티가 재시작된다.
이를 막기 위해서는 다음 속성을 추가하면 되는데(https://medium.com/androiddevelopers/5-tips-for-preparing-for-multi-window-in-android-n-7bed803dda64)

android:configChanges="screenSize|smallestScreenSize
|screenLayout|orientation"

이 경우에도 일부 단말에서는 재시작되는것을 확인하였다.

만일 앱을 세로나 가로로 고정해야 한다면 난감한 상황이 될것인데 이 런 경우는 그냥 멀티윈도우 기능을 끄는것이 나을것이다.

android:resizeableActivity="false"

애초에 멀티윈도우를 지원하고자 한다면 고정하지 않고 화면을 설계하는것이 나을것 같다.

자세한 내용은 아래 링크 참조

https://developer.android.com/guide/topics/ui/multi-window

Posted by 삼스

댓글을 달아 주세요

Windows2021. 2. 2. 09:04

서비스 프로젝트를 작성 후 배포하기 위해 서비스를 설치하고 설치 후 바로 서비스가 구동되도록 하는 방법에 대해 설명한다.

 

서비스프로젝트에 설치관련 클래스 추가

  1. 작성한 서비스.cs파일 더블클릭
  2. 도구상자에 ProjectInstaller 선택
  3. ServiceProcessInstaller, ServiceInstaller 생성됨

 

설치 프로젝트 추가

  1. 파일 -> 프로젝트 추가 > Setup Project
  2. 프로젝트 아이콘에 마우스우측 버튼 클릭
  3. Add -> 프로젝트 출력
  4. 추가할 프로젝트를 콤보박스에서 선택하고 기본출력을 선택
  5. View -> 사용자지정작업에서 Install, Commit, Rollback, Uninstall에 각각 마우스우측버튼 클릭 후 '사용자지정작업'으로 작성한 서비스프로젝트 추가
  6. 빌드 수행하면 msi와 setup.exe가 생성됨

 

설치 서비스 실행되도록

  1. ProjectInstaller.Designer.cs코드보기
  2. initializeComponent()에서 서비스설치 관련 파라메터 수정
  • ServiceName, DisplayName, Description
  • StartType : Automatic으로 설정
  • Committed 핸들러 오버라이드 등록

            this.serviceProcessInstaller1.Password = null;

            this.serviceProcessInstaller1.Username = null;

            this.serviceProcessInstaller1.Account = ServiceAccount.LocalSystem;

            this.serviceInstaller1.ServiceName = "My Service";

            this.serviceInstaller1.DisplayName = "My service";

            this.serviceInstaller1.Description = "This is My service";

            this.serviceInstaller1.StartType = System.ServiceProcess.ServiceStartMode.Automatic;

            this.Committed += new System.Configuration.Install.InstallEventHandler(MyServiceWindowsServiceInstaller_Committed);

 

  3. ProjectInstaller.cs 코드보기

  4. Committed 핸들러 오버라이드 수행

  • 서비스 컨트롤러 생성하여 서비스를 시작함.

        void MyServiceWindowsServiceInstaller_Committed(object sender, InstallEventArgs e)

        {

            // Auto Start the Service Once Installation is Finished.

            var controller = new ServiceController("MyService");

            controller.Start();

        }

 

 

Posted by 삼스

댓글을 달아 주세요

Interesting2021. 1. 25. 18:00

우리가 https로 서비스를 제공하는 사이트에 접속할때의 데이터 흐름을 정리해 보겠다.

 

https로 서비스를 제공하기 위해서는 먼저 인증서를 발급받아야 한다. 

이는 인증기관에 등록을 요청하여 발급이 가능하며 매년 재발급시마다 비용을 지불해야 한다.

발급받은 인증서는 웹서버에 설치되어 브라우저에서 접속시마다 일련의 인증과정을 거칠때 사용된다.

 

이 과정 전체를 나타낸 시쿼스다이어그램이다.

 

1. 인증기관(CA)에 인증서 발급요청을 한다.

2. 인증기관은 검토를 거친 후 인증서에 CA공개키와 사이트정보를 포함한 후 CA개인키로 암호화한다.

3. 암호화된 인증서가 발급이된다.

4. C공개키는 브라우저에 제공된다.

 

여기까지가 인증서 발급의 단계이다. 이어서 브라우저에서 접속시의 시나리오는 다음과 같다.

 

5. 브라우저에서 접속을 시도한다.

6. 웹서버는 사이트 인증서를 제공한다.

7. 브라우저는 사이트인증서를 CA공개키로 복호화한다. 복호화하면 사이트공개키를 얻을 수 있다.

8. 브라우저는 대칭키를 생성한다.

9. 브라우저는 사이트공개키로 대칭키를 암호화한다.

10. 웹서버는 암호화된 대칭키를 사이트개인키로 복호화한다.

11. 웹서버는 복호화된 대칭키로 요청받은 웹사이트 리소스들을 암호화하여 응답한다.

12. 브라우저는 암호화된 리소스들을 대칭키로 복호화하여 렌더링한다.

 

6과 7과정에서 웹서버에서 제공한 인증서를 브라우저에서 CA공개키로 복호화 시 복호화가 되고 복호화된 정보가 현재 접속한 사이트 정보와 동일하면 이는 허가된 접근으로 판정이 나게되며 

이 후 통신구간에는 대칭키를 서로 교환하여 통신함으로써 통신시 오버로드를 줄이는 방식으로 프로세스가 진행된다.

 

 

 

 

 

 

 

Posted by 삼스

댓글을 달아 주세요