블로그 이미지
This blog covers the latest technologies in Microsoft .Net. In 2020, I will be talking about Uno Platform frequently. http://youtube.com/FutureOfDotNet kaki104

카테고리

List All (621)
Uno Platform (5)
Visual Studio (7)
Blazor (2)
Windows App(Universa.. (110)
Xamarin Forms (4)
Bot Framework (19)
Azure (10)
Windows 10 (53)
WPF (7)
Facebook News & Tips (158)
Windows 8&8.1 (113)
Windows Phone 8 (42)
Silverlight (37)
HTML5 & MVC4 (16)
Portable Class Library (2)
Uncategorised Tips a.. (3)
Kinect for Windows (2)
ETC (12)
kaki104 Scrap (4)
App News (13)
Total565,953
Today10
Yesterday106

Register Desktop Bridge app and UWP app as Startup program

Future Of DotNet
https://youtube.com/FutureOfDotNet

UWP앱을 시작프로그램으로 등록/삭제하는 방법입니다.

Youtube : https://youtu.be/5cI6oS0HLOQ
Blog : https://kaki104.tistory.com/664
Git : https://github.com/kaki104/StartupSample

Reference

Desktop Bridge vs UWP

  • How
  • Namespace
  • EntryPoint
  • Enabled
  • Multiple startupTask
  • Diabled/Enabled

Constrained in UWP apps

  • The default is Disable
  • Show a user-prompt dialog for UWP apps
  • StartupTask includes a Disable method
  • If the user disables, then the prompt is not shown again
  • If the feature is disabled by local admin or group policy, then the user prompt is not shown, and startup cannot be enabled
  • Platforms other than Desktop that don’t support startup tasks also report DisabledByPolicy

Package.appxmanifest

<Application>
    <Extensions>
        <uap5:Extension Category="windows.startupTask“ Executable="StartupXXX.exe“ EntryPoint="StartupXXX.App">
            <uap5:StartupTask TaskId="StartupXXX“ Enabled="false“ DisplayName="StartupXXX“/>
        </uap5:Extension>
    </Extensions>
</Application>

MainPage.xaml.cs

var startupTask = await StartupTask.GetAsync("StartupXXX");
StartupTaskState newState = await startupTask.RequestEnableAsync();

App.xaml.cs

protected override void OnActivated(IActivatedEventArgs args)

var staea = args as StartupTaskActivatedEventArgs;
rootFrame.Navigate(typeof(MainPage), staea.TaskId);
Window.Current.Activate();

Register startup program.pdf
190.9 kB

Posted by kaki104

댓글을 달아 주세요

Face Detection API

. Real-time face recognition with Microsoft Cognitive Services
. Google

  • Vision API
    • Facial Detection
      • Free : First 1000 units/month
      • $1.5 for 1000 unit : 1001 – 5,000,000 / month
        . Microsoft Azure
  • Face API
    • Face Detection ~ Face Identification
      • Free : 20 transactions for minute
      • $1.0 for 1000 transactions : 0 – 1M transactions
        . OpenCV
        . Dlib C++ Library

OpenCV

. 오픈 소스 컴퓨터 비전 라이브러리 중 하나로 크로스플랫폼과 실시간 이미지 프로세싱에 중점을 둔 라이브러리.
. Windows, Linux, OS X(macOS), iOS, Android 등 다양한 플랫폼을 지원
. OpenCvSharp

  • C# : OpenCvSharp4 nuget package
  • UWP : OpenCvSharp4.runtime.uwp nuget package
  • haarcascade_frontalface_alt.xml

OpenCVSharp

. Mat class

  • Matrix의 약자로 행렬을 표현하기 위한 데이터 형식
    . Haar Cascade
  • 이미지 또는 비디오에서 객체를 식별하는데 사용되는 기계 학습 객체 감지 알고리즘
  • haarcascade_frontalface_alt.xml : 얼굴 전면 식별
  • DetectMultiScale
    • 입력된 이미지에서 크기가 다른 물체를 감지합니다. 감지 된 객체는 사각형 목록으로 반환

Dlib C++ Library

  • 기계 학습 알고리즘 및 도구를 포함하는 C++ 툴킷으로 로봇 공학, 임베디드 장치, 휴대 전화 및 대형 컴퓨팅 환경을 포함한 광범위한 산업 영역 및 학계에서 사용

  • DlibDotNet

    • DlibDotNet for UWP nuget package
  • Dlib Models

    • shape_predictor_5_face_landmarks.dat
      • 눈의 모서리와 코의 바닥을 식별하는 5포인트 랜드 마크 모델
    • shape_predictor_68_face_landmarks.dat
      • 얼굴 전체를 감싸는 68개의 포인트 랜드 마크 모델
      • 상업적 사용을 위해서는 담당자와 별도의 협의를 진행해야 함

Part1

https://youtu.be/wxIFGmG6JCo

Part2

https://youtu.be/QQimCeWIdps

PDF

Face detecting in UWP app.pdf
226.6 kB

Github

https://github.com/kaki104/FaceDetectionSample

Posted by kaki104

댓글을 달아 주세요

  • UWP이 로컬 파일 시스템을 직접 접근해서 파일이나 폴더의 정보를 가지고 오는 방법에 대한 설명입니다.

  • This is how UWP directly accesses the local file system and fetches information from files or folders.

  • BroadFileSystemAccess

    • All Files that the user has access to
    • Settings } Privacy | File system | Allow access UWP app
    • Version 1803 - default is On
    • Version 1809 - default is Off
    • This capability is not supported on Xbox
  • Key Point

    • Package.appxmanifest } Mouse Right Click } Open With… } XML (Text) Editor
    • Add rescap namespace
    • Add rescap:Capability to th Capabilities section
      • {rescap:Capability Name="broadFileSystemAccess" /}
    • Code
      • var folder = await StorageFolder.GetFolderFromPathAsync(path);
      • try-catch(UnauthorizedAccessException)
  • Completed sample app

  - youtu.be/TJ5wDDgty6A

 

'Windows App(Universal App) > Beginner' 카테고리의 다른 글

Microsoft Edge(Chromium) WebView2 Control  (0) 2020.08.17
Face detecting in UWP app  (0) 2020.08.06
Create a UWP app with File System Access  (0) 2020.07.24
Install and update UWP apps from the Web  (0) 2020.04.25
LINQ - Join Operations - part5/5  (0) 2020.04.15
LINQ part 4  (0) 2020.02.11
Posted by kaki104

댓글을 달아 주세요

Simple RSS Reader creation is complete.

Posted by kaki104

댓글을 달아 주세요

  • Uno Platform을 이용해서 간단한 RSS Reader를 만드는 강좌입니다. Part1과 Part2로 나누어 짐니다.
  • This is a course to create a simple RSS reader using the Uno Platform. It is divided into Part1 and Part2.
  • Setting up your development environment

  • What is the nuget package for using MVVM

  • Refractored.MvvmHelpers

  • RSS Reader Step1

    • Goal

      • Creating an RSS Reader app with one page
    • Create Uno project
    • Nuget packages
  • RSS Reader Step2

    • Settings

    • Controls

  • 추가사항
    • Wasm 프로젝트는 실행해도 결과가 출력되지 않습니다. 이유는 크로스도메인 정책으로 인해 RSS 데이터를 가지고 올 수 없기 때문입니다. 이 부분은 해결을하는 데로 추가하도록 하겠습니다.
  • source
    . https://github.com/kaki104/SimpleRSS.UNO

 

kaki104/SimpleRSS.UNO

Creating a simple RSS app using the Uno Platform. Contribute to kaki104/SimpleRSS.UNO development by creating an account on GitHub.

github.com

  * Youtube : youtu.be/CQBfyTSV5uc

 

Posted by kaki104

댓글을 달아 주세요

Getting started Uno

Uno Platform / 2020. 5. 24. 14:21

  • Setting up your development environment

    • Prerequisites
      • Windows 10 1809 or later
      • Windows SDK 1809 or later
      • Visual Studio 2019 16.3 or later
      • Universal Windows Platform workload
      • Mobile development with .NET (Xamarin) workload
        • The iOS Remote Simulator
        • Mac with Visual Studio for Mac, Xcode 8.2 or later installed
        • Google’s Android x86 emulators or physical Android device
        • ASP .NET and web workload
      • .NET Core 2.2
    • Install Uno Platform Solution Templates with Visual Studio
      • Extension -> Manage Extensions -> Uno search -> install
      • Version 2.4
  • Create a Single Page App with Uno

    • Learn how to
      • Add the Uno Platform Project Templates to Visual Studio
      • Create a new Project with Uno Platform
      • Learn basic on Model Binding
    • Install Android Emulator
  • Step 1

    • Create Project
    • Check NuGet Packages and Install
      • Uno.Core, Uno.UI, Uno.Wasm.Bootstrap : latest stable version
      • Refractored.MvvmHelpers NuGet Packages install
    • Build
  • Step 2

    • Models
      • Create Models folder
      • Add IssueItem class
      • Add broken references
    • Converters
      • Create Converters folder
      • Add StringFormatConverter class
  • Step 3

    • MainPage.xaml.cs

      • Add code
      • Add broken references
    • MainPage.xaml

      • Add xaml code
      • View XAML design
        • Change startup project to UWP project
        • Solution platform to choose x86
        • Close and reopen MainPage.xaml
      • MainPage.xaml.cs
      • Add event handlers code
      Getting started Uno.pdf
      585.0 kB
    •  

youtu.be/j4iR3FnREhk

 

Posted by kaki104
TAG Android, IOS, uno, UWP

댓글을 달아 주세요

How to deploy UWP apps
- Microsoft Store
- App Installer
  . After Windows 10 version 1803
  . Can be installed Local, Shared Folder, or on the Web

For developers
- Settings -> Update & Security -> For developers -> Sideload apps
- Sideload apps must be selected in order to install apps outside of the Microsoft Store.

Install Windows 10 apps with App Installer

Create an App Installer file with Visual Studio
- Doc
  . Windows 10 version 1803 or higher
  . Visual Studio 2017 version 15.7 or higher
  . Create sideload apps that can be automatically updated using .appinstaller files
  . UWP TargetPlatformMinVersion version 1803 or higher
- Work
  . Windows 10 version 1909
  . Visual Studio 2019 version 16.5.4

Demo
- Create UWP app

Package
- UWP app project -> Right-click -> Publish -> Create App Packages…
- Click the Create button to create a test certificate
- Enter additional simple information
- Enter additional simple information

Select and configure packages
- Choose the platform you want to support
- For release of the full version, please select a Release

Configure update settings
- Installer location
  . Enter the location to copy the installation files
  . You can enter the web path, shared folder path, and local folder path.
  . Copy the completed distribution package to the folder you just entered.
  Ex) Web https://hellobotstorage.z12.web.core.windows.net/apps
  Ex) Local c:\install
  Ex) Shared Folder \\kakiserver\home\apps

Finished creating package
- Output location
  . This is where the package was created.
  . Click the link to open the folder with File Explorer.
  . Copy files to the installer location

Install apps from web
- I use Static Web in Azure
https://hellobotstorage.z12.web.core.windows.net/apps

Installation failed
- Either you need a new certificate installed for this app package…
- If you buy a signed certificate and use it, this is not necessary.
- Certificate Sales Site I Know

Install Certificate
- Additional Links -> Publisher Certificate
- Install Certificate… -> Local Machine -> Place all certificates in the following store -> Trusted Root Certification Authorities -> OK
- Next -> Finish

Update app on the web
- Create an updated version and copy it to the installation location
- Run the installed apps (check for update version existence)
- App exit
- Re-run the app(update progress)

 

https://youtu.be/uedWhxNSs3Y

 

'Windows App(Universal App) > Beginner' 카테고리의 다른 글

Face detecting in UWP app  (0) 2020.08.06
Create a UWP app with File System Access  (0) 2020.07.24
Install and update UWP apps from the Web  (0) 2020.04.25
LINQ - Join Operations - part5/5  (0) 2020.04.15
LINQ part 4  (0) 2020.02.11
LINQ part 3  (0) 2020.02.04
Posted by kaki104

댓글을 달아 주세요

What is UNO Platform?

Uno Platform / 2020. 1. 29. 00:02

UNO Platform에 대해서 알아보도록 하겠습니다.

원본 동영상 https://m.youtube.com/watch?v=NHFbPItDaDc

 

1. 크로스 플랫폼 개발용

 

2. Xamarin.Forms와 차이점

 

3. Uno Platform

- Port of Universal Windows Platform(UWP) API and XAML to iOS/Android/WASM/macOS

- Written in C#(with bits of Java and JavaScript)

- 1:1 compatibility with UWP XAML, existing skills consistent UI

- Free and open source - https://platform.uno/

 

4. Uno Platform UI comparison

 

5. Supported platforms

 

6. Uno UI

 

7. Uno - UI? Not only!

 

8. Uno Platform Prerequisites

- Visual Studio 2019 for Windows

. Universal Windows Platform

. Mobile development with .NET

. ASP.NET and Web

- macOS for iOS build host

- Uno Platform Solution Templates Visual Studio Extension

 

9. DEMO

 

10. Call to action

 

https://youtu.be/li47OqE0tNI

 

Posted by kaki104

댓글을 달아 주세요


기본 사용방법 설명

Constructor Injection – 생성자 주입

- Resolve시에 기본으로 사용하는 방식
- private readonly T _instance; 를 이용해서 내부에서 사용
- Multiple Parameters
  public Driver(ICar car, ICarKey key)
  private readonly ICar _car;
- Multiple Constructors
  [InjectionConstructor] public Driver(ICar car)
  public Driver(string name)
- Primitive Type Parameter
  public Driver(ICar car, string driverName)

 

https://youtu.be/UHrrIDBubdg

 

UnityContainer Detail & Examples - Prism으로 시작하는 UWP app part15 - 2

 

Property Injection

- Attribute를 이용해서 Injection
- public T Instance { get; set;} 을 이용
- Dependency Attribute
  [Dependency] public ICar Car { get; set; }
- Named Mapping
  [Dependency("MyCar")] protected ICar Car { get; set; }
- Run-time Configuration
  public ICar MyCar { get; set; }
  unityContainer.RegisterType<IDriver, UWPDriverRuntime>(new InjectionProperty("MyCar", new BMW()));


Method Injection

- Attribute를 이용해서 Injection
- private readonly T _instance; 를 이용해서 내부에서 사용
- 생성자를 이용할 수 없는 경우 사용
- InjectionMethod Attribute
  [InjectionMethod] public void UseCar(ICar car) { _car = car; }
- Run-time Configuration
  public void MyCar(ICar car) { _car = car; }
  unityContainer.RegisterType<IDriver, UWPDriverRuntimeMethod>(new InjectionMethod("MyCar", new Audi()));


Overrides

- 등록된 Type이외의 Type을 Injection 시키는 방법
- ResolverOverride를 이용해서 등록된 Type을 재정의 할 수 있음
- ParameterOverride
  unityContainer.Resolve(
  new ParameterOverride("car", new BMW()));
  Override Multiple Parameters
  new ParameterOverrides {  { "car1", new Audi() },
                         { "carKey1", new AudiKey() }, 
                         { "car2", new BMW() },                 
                         { "carKey2", new BMWKey() }}
- PropertyOverride
  unityContainer.Resolve(new PropertyOverride("Car", new BMW()));
- DependencyOverride
  unityContainer.Resolve(new DependencyOverride(typeof(ICar), new BMW()));


Lifetime Manager

- UnityContainer에 등록된 객체에 대한 수명을 관리하는 방법을 지정할 수 있음
1. TransientLifetimeManager
   기본 수명 관리 방법, Resolve호출시 새로운 객체를 생성해서 반환
2. ContainerControlledLifetimeManager
   처음 Resolve시 싱글톤 객체를 생성하고, 이후 Resolve할 때마다 반환 
3. HierarchicalLifetimeManager
   2 항목과 동일, 추가로 하위 컨테이너가 자체 단일 객체를 만들어 반환 – 상위 컨테이너와 하위 컨테이너가 서로 다른 객체 관리
4. PerResolveLifetimeManager
   1 항목과 동일, 재귀호출시 생성된 객체는 재사용함
5. PerThreadLifetimeManager
   스래드당 단일 객체를 생성
6. ExternallyControlledLifetimeManager
   생성된 객체에 대한 약한 참조만 유지. 사용자 정의 수명관리자를 만들어서 사용할 수 있음

 

https://youtu.be/fQunFpAvTsg

소스

https://github.com/kaki104/PrismSample2019

Posted by kaki104

댓글을 달아 주세요

1. IoC, DIP, DI, IoC Container

- IoC(Inversion of Control)
    클래스간의 느슨한 결합(loose coupling)을 만들기 위해 OOP에서 제어를 뒤집을 것을 권장하는 디자인 원칙(principle)
- DIP(Dependency Inversion Principle)
    클래스간의 느슨한 결합(loose coupling)을 만들기 위한 원칙(principle) 중 하나
    고수준 모듈(High-level)이 저수준 모듈(Low-level)에 의존해서는 안된다는 원칙. 둘다 추상화(예: interface)에 의존해야 함
- DI(Dependency Injection)
    IoC 원칙을 구현하는 디자인 패턴
    종속 객체를 주입
- IoC Container
    어플리케이션 전체에서 자동 종속성 주입을 관리하는 프레임워크
    Unity, Ninject, StructureMap, Autofac 등
- 위의 내용들을 관통하는 핵심
    가능한 모든 클래스는 Interface를 이용해서 추상화하고 Container를 이용해서 Injection 해서 사용한다.

2. Prism Framework features

- EventAggregator
    응용 프로그램에서 느슨하게 결합된 (loosely coupled) 구성 요소 간의 통신을 가능하게하는 이벤트 메커니즘(PubSubEvent)을 제공  
- UnityContainer
    가볍고 확장 가능한 종속성 주입 컨테이너 (Dependency Injection Container) 
- Region
    런타임에 느슨하게 결합된 (loosely coupled) UI로 구성된 레이아웃을 만들기 위한 방법
- Modules
    관련된 기능이나 UI를 내포한 클래스 라이브러리들을 느슨하게 결합 (loosely coupled) 하기 위한 방법
- UWP에서 사용가능한 버전
    Prism.Unity 6.3, Prism.Core 6.3
    UWP에서는 Region 기능 사용 못함


3. UnityContainer Overview

- 가볍고 확장 가능한 종속성 주입(Dependency Injection) 컨테이너 
- 특징
Interface Type이나 기본 Type에 대한 단순 맵핑 등록
기존 인스턴스 등록 지원
디자인 타임 등록은 물론 코드 등록 지원
생성자, 속성 또는 메서드를 통해 등록된 Type을 자동으로 주입
지연(deferred) 솔루션 지원
중첩 컨테이너 지원
수명 관리자를 이용해서 인스턴스를 자동으로 disposing
서비스 위치 기능 지원
Type 차단 및 인스턴스 차단을 지원


4. UnityContainer 사용하기(RegisterType)

UnityContainer.RegisterType Method
Type 맵핑을 위한 메소드
대표적인 Type등록 방법 및 예제
unityContainer.RegisterType();
unityContainer.RegisterType(); //생략가능
unityContainer.RegisterType<Interface, T>();
unityContainer.RegisterType<IAddPerson, AddPersonControl>();
unityContainer.RegisterType<Interface, T>(string);
unityContainer.RegisterType<IAddPerson, AddPersonControl>(“Control”);
unityContainer.RegisterType<IAddPerson, AddPersonPage>(“Page”);


5. UnityContainer 사용하기(Resolve)

UnityContainer.Resolve Method
컨테이너로부터 Type을 인스턴스 시켜주는 메소드
대표적인 Resolve 방법 및 예제
var t = unityContainer.Resolve();
var t = unityContainer.Resolve();
var t = unityContainer.Resolve();
var t = unityContainer.Resolve();
var t = unityContainer.Resolve(string);
var t = unityContainer.Resolve(“Page”);

https://youtu.be/8L9lBghcFbc

 

Prism으로 시작하는 UWP app 개발 Part1-14.pdf
1.89MB

Posted by kaki104

댓글을 달아 주세요