2017년 2월 27일 월요일

앞으로는 Xamarin Studio 보다는 Visual Studio for Mac을 사용해야 합니다.

맥에서 자마린 기반으로 개발할 때 앞으로는 Visual Studio for Mac을 사용해야 합니다. 비주얼스튜디오로 계속 기능이 추가되고 있어서 앞으로는 이런 방향으로 진행된다고 들었습니다.

비주얼스튜디오 2017도 올해 3월에 발표됩니다. Xamarin.iOS의 경우 윈도우 보다는 맥에서 작업하기가 수월했는데 역시 Visual Studio for Mac Preview를 설치하고 있습니다. 기존 사용하던 맥프레가 용량이 부족해서 초기화하고 새로 설치하고 있습니다.





최근 버전은 iOS 10.4로 설치되네요. 

설치에 거의 하루가 걸렸습니다. 상당히 큰 패키지로 설치되는 것이 아직은 문제점입니다. 
그동안 안드로이드 에뮬레이터 때문에 문제가 있었는데 클린 설치를 하고 나서 잘 동작합니다. 설치해서 양쪽 진영만 잘 동작하면 큰 무리는 없어 보입니다.






맥프레 256G에 맥을 새로 설치하고 Xcode 8.2, Visual Studio for Mac을 설치하고 패러럴즈로 윈도우10에 오피스 2016까지 설치하고 나서 설치 용량입니다. 아직은 널널한데 테스트로 프로젝트를 만들면 거의 50메가에서 100메가씩 만들어집니다. ㅋㅋ 





2017년 2월 6일 월요일

파이썬의 인기있는 라이브러리들 입니다.

파이썬 공식 사이트(http://www.python.org)에 가면 아래의 리스트를 볼 수 있습니다.
대략 어느 분야에 어떤 모듈이나 라이브러리가 있는지를 확인할 수 있습니다.

https://wiki.python.org/moin/UsefulModules

2017년 2월 2일 목요일

Visual Studio for mac Preview를 설치해서 사용해 보고 있습니다.

Visual Studio for mac Preview가 출시되었다는 말을 듣고도 제대로 테스트를 못해 보았습니다.
기존 자마린 코드들은 모두 자마린 스튜디오에서 테스트를 했습니다. 오늘 맘잡고 설치해 보았습니다.
프리뷰이지만 쓸만합니다. 이 툴로 맥에서 학습하거나 테스트하면 될 것 같습니다. ^^

자마린에서 아이폰, 안드로이드폰, 윈도우폰과 타블렛, 타이젠까지 지원하게 되면 보다 쓸만해 지겠죠.









2017년 2월 1일 수요일

자마린 스튜디오(Xamarin Studio)에서 간단한 네비게이션 코드 구현 데모 입니다.

iOS에서는 모달리스(아래에서 위로 올라오는)형태로 뷰를 전환할 때 present메서드를 호출해서 처리합니다좌우로 네비게이션을 하는 경우 네비게이션 컨트롤러를 사용해서 pushViewController(), popViewController()메서드를 사용해서 처리합니다

자마린에도 비슷한 처리를 하는 메서드가 구현되어 있습니다.
프로젝트 생성시에 작업한 페이지에 아래와 같이 코드를 추가합니다. 형광색으로 표시된 부분이 추가된 코드 블럭입니다. 

using Xamarin.Forms;

namespace DemoPageNavi
{
    public partial class DemoPageNaviPage : ContentPage
    {
        public DemoPageNaviPage()
        {
            Title = "Main Page";

            Button gotoModelessButton = new Button
            {
                Text = "Go to Modeless Page",
                HorizontalOptions = LayoutOptions.Center,
                VerticalOptions = LayoutOptions.CenterAndExpand
            };
            gotoModelessButton.Clicked += async (sender, args) =>
            {
                await Navigation.PushAsync(new ModelessPage());
            };

            Button gotoModalButton = new Button
            {
                Text = "Go to Modal Page"
                HorizontalOptions = LayoutOptions.Center, 
                VerticalOptions = LayoutOptions.CenterAndExpand
                                               
            };
            gotoModalButton.Clicked += async (sender, args) =>
            {
                await Navigation.PushModalAsync(new ModalPage());
            };

            Content = new StackLayout
            {
                Children =
                {
                    gotoModelessButton,
                    gotoModalButton
                }
            };

        }
    }
}

(Model페이지에 라벨을 추가)
<?xml version="1.0" encoding="UTF-8"?>
<ContentPage xmlns="http://xamarin.com/schemas/2014/forms" xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml" x:Class="DemoPageNavi.ModalPage">
    <ContentPage.Content>
        <Label Text="Modal Page" />
    </ContentPage.Content>

</ContentPage>

(Modeless페이지에 라벨을 추가)
<?xml version="1.0" encoding="UTF-8"?>
<ContentPage xmlns="http://xamarin.com/schemas/2014/forms" xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml" x:Class="DemoPageNavi.ModelessPage">
    <ContentPage.Content>
        <Label Text="Modeless Page" /> 
    </ContentPage.Content>

</ContentPage>

App.cs에 아래의 코드가 추가되어 있어야 합니다.

using Xamarin.Forms;

namespace DemoPageNavi
{
    public partial class App : Application
    {
        public App()
        {
            MainPage = new NavigationPage(new DemoPageNaviPage()); 
        }


상단에 네비게이션바가 생성되고 좌우로 네비게이션이 됩니다. 



두번째 버튼을 클릭하면 하단에서 위로 올라오는 것을 볼 수 있습니다. 


모달리스 페이지에 아래의 코드를 추가한다.

namespace DemoPageNavi
{
    public partial class ModelessPage : ContentPage
    {
        public ModelessPage()
        {
            Title = "Modeless Page";

            Button goBackButton = new Button
            {
                Text = "Back to Main",
                HorizontalOptions = LayoutOptions.Center,
                VerticalOptions = LayoutOptions.Center
            };
            goBackButton.Clicked += async (sender, args) =>
            {
                await Navigation.PopAsync();
            };

            Content = goBackButton;
 

        }
    }
}

모달페이지에 아래의 코드를 추가한다. 일종의 백버튼을 만들어서 원래 페이지로 돌아가도록 유도한다.

using System.Collections.Generic;

using Xamarin.Forms;

namespace DemoPageNavi
{
    public partial class ModalPage : ContentPage
    {
        public ModalPage()
        {
            Title = "Modal Page";

            Button goBackButton = new Button
            {
                Text = "Back to Main",
                HorizontalOptions = LayoutOptions.Center,
                VerticalOptions = LayoutOptions.Center
            };

            goBackButton.Clicked += async (sender, args) =>
            {
                await Navigation.PopModalAsync();
            };

            Content = goBackButton;

        }    
    }
}



이번에는 네비게이션바의 색상을 변경하는 데모 코드입니다. 아래의 실행을 보면 상단의 네비게이션바의 색상이 청색으로 글자색은 핑크로 변경된 것을 볼 수 있습니다. 

using Xamarin.Forms;

namespace DemoPageNavi
{
    public partial class App : Application
    {
        public App()
        {
            MainPage = new NavigationPage(new DemoPageNaviPage())
            {
                BarBackgroundColor = Color.Blue, 
                BarTextColor = Color.Pink 
            };

        }









이번에는 모달리스에서 백버튼을 처리하는 코드입니다. 다음과 같이 하면 백버튼이 숨겨지도록 할 수 있습니다.
<?xml version="1.0" encoding="UTF-8"?>
<ContentPage xmlns="http://xamarin.com/schemas/2014/forms" 
        xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml" 
        x:Class="DemoPageNavi.ModelessPage"
         NavigationPage.HasBackButton="False">
    <ContentPage.Content>
        <Label Text="Modeless Page" /> 
    </ContentPage.Content>
</ContentPage>

재물이나 코드에서 한군데만 작업하면 됩니다. 양쪽이 필요하지 않고 편한데로 추가하면 됩니다.

using Xamarin.Forms;

namespace DemoPageNavi
{
    public partial class ModelessPage : ContentPage
    {
        public ModelessPage()
        {
            Title = "Modeless Page";
            //
백버튼을 추가하는 코드 
            NavigationPage.SetHasBackButton(thisfalse); 





모달리스에서 백버튼을 추가해서 사용하는 데모 코드 입니다.
기존에 혹시 재물에 추가했던 백버튼 속성이 있으면 제거합니다.

<?xml version="1.0" encoding="UTF-8"?>
<ContentPage xmlns="http://xamarin.com/schemas/2014/forms" 
        xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml" 
        x:Class="DemoPageNavi.ModelessPage">
    <ContentPage.Content>
        <Label Text="Modeless Page" /> 
    </ContentPage.Content>
</ContentPage>

using Xamarin.Forms;

namespace DemoPageNavi
{
    public partial class ModelessPage : ContentPage
    {
        public ModelessPage()
        {
            Title = "Modeless Page";
            //
백버튼을 추가하는 코드 
            NavigationPage.SetHasBackButton(thistrue); 
            NavigationPage.SetBackButtonTitle(this"go back");
            //
네비게이션바가 보이도록 코딩 

            NavigationPage.SetHasNavigationBar(thistrue);



            Button goBackButton = new Button
            {
                Text = "Back to Main",
                HorizontalOptions = LayoutOptions.Center,
                VerticalOptions = LayoutOptions.Center
            };
            goBackButton.Clicked += async (sender, args) =>
            {
                await Navigation.PopAsync();
            };

            Content = goBackButton; 
        }
    }
}

실행하면 모달리스 버튼을 클릭했을 때 새로운 페이지에서 백버튼이 추가된 것을

볼 수 있습니다.

요즘 많이 들리는 RAG에 대한 멋진 정리가 있어서 공유합니다. ㅎㅎ

 작년에는 ChatGPT가 크게 유행을 했는데 올해는 Gen AI, LLM, 랭체인등이 유행하고 있습니다. ㅎㅎ  RAG라는 단어도 상당히 많이 들리고 있습니다. 멋진 정리의 링크입니다.  https://brunch.co.kr/@ywkim36/146?...