[FREE E-Book] Membangun Aplikasi Windows Forms Desktop berbasis .NET Core 3.1 & Visual Studio 2019

Aplikasi desktop dengan WinForms bukan barang baru, dia telah hadir sejak .NET Framework pertama kali muncul. Sampai saat ini .NET Framework telah mencapai versi di atas 4.7.x. Namun kalian pasti tahu sendiri bahwa .NET Framework ini hanya mau jalan di platform Windows. Tapi sekarang sudah bukan jamannya “close source”, sekarang Microsoft telah membuka diri dan .NET Framework juga hadir untuk bisa berjalan di atas platform lain seperti Linux dan Mac OS, .NET Framework ini dikenal dengan nama .NET Core. Sampai saat ini telah mencapai versi 3.

Awalnya .NET Core hanya ditujukan untuk membangun aplikasi berbasis web saja, kemudian berkembang untuk pembangunan Web API sampai IoT. Dan sekarang, menurut kabar, .NET Framework justru akan berhenti untuk dikembangkan dan semua akan beralih ke .NET Core. Hal ini terbukti dengan dukungan pengembangan WinForms di framework ini.

Untuk mempelajari bagaimana cara mengembangkan aplikasi Windows Form dengan .NET Core 3.1 dan Visual Studio 2019, anda dapat mengunduh free ebook pada alamat tautan dibawah ini.

image

Buku ini terdiri dari 109 halaman.

Anda dapat mengunduh buku ini pada tautan berikut

Dan Source Code program juga tersedia pada tautan berikut ini.

Jika anda tertarik untuk belajar lebih lanjut dengan topik yang lebih advance, anda juga dapat mengikuti pelatihan intensive dengan studi kasus yang dibutuhkan melalui https://actual-training.com

Workshop Cloud Computing (Azure App Services & ASP.NET Core)

poster1

Pada tanggal 19-20 Februari 2020 telah dilangsungkan Workshop Cloud Computing (Azure App Services & ASP.NET Core) dalam rangka Pekan Industri 4.0. Acara ini didukung oleh Kementrian Perindustrian Republik Indonesia, Asosiasi Perguruan Tinggi Komputer (APTIKOM), dan Asosiasi Cloud Computing Indonesia (ACCI).

Acara ini diselenggarakan di Ruang Seminar Teknologi Informasi, Universitas Pembangunan Nasional (UPN), Yogyakarta.

Pada acara seminar ini saya membahas tentang penggunaan layanan Cloud Computing Microsoft Azure. Topik yang dibahas terfokus pada layanan Platform as a Services yaitu Azure App Sevices dan Pembuatan Aplikasi Web/Backend dengan ASP.NET Core yang akan dipasang pada layanan komputasi awan tersebut. Adapun materi yang dibahas adalah:

  • Introduction to Cloud Computing & Microsoft Azure
  • Platform as a Services with Azure App Services
  • .NET Core SDK & Visual Studio Code Installation
  • Create Web Apps with ASP.NET Core
  • Create Layout with ASP.NET Core
  • Create SQL Server Database
  • CRUD with ASP.NET Core
  • Migrate On-Premise SQL Database to SQL Azure
  • Deploy ASP.NET Core Application to Azure
  • Scale Out and Scale Up with Azure Apps
  • Continuous Deployment with Azure Apps
  • Auto Scaling with Azure Apps
  • Deployment Slots with Azure Apps

w1

Materi dari seminar dan workshop dapat diunduh pada tautan berikut ini.

Seminar Cloud Computing (Azure & ASP.NET Core)

s1

Pada tanggal 18 Februari 2020 telah dilangsungkan Seminar Cloud Computing dalam rangka Pekan Industri 4.0. Acara ini didukung oleh Kementrian Perindustrian Republik Indonesia, Asosiasi Perguruan Tinggi Komputer (APTIKOM), dan Asosiasi Cloud Computing Indonesia (ACCI).

Acara ini diselenggarakan di kampus UPN Yogyakarta dan diikuti oleh sekitar 200 orang peserta.

Pada seminiar ini saya membahas beberapa topik tentang Cloud Computing dan Microsoft Azure

  • Cloud Computing with Azure
  • Platform as a Services with Microsoft Azure
  • Database as a Services with SQL Azure
  • Deploy ASP.NET Core Application to Azure Apps
  • Azure Cognitive Services

s2s3

Untuk materi ppt dari seminar ini bisa diunduh pada tautan berikut ini.

FREE E-Book: Seri Belajar Xamarin – Cross Platform Mobile Apps dengan Xamarin Forms & Visual Studio 2019

Telah terbit FREE eBook Seri Belajar Xamarin dengan Judul Seri Belajar Xamarin – Cross Platform Mobile Apps dengan Xamarin Forms & Visual Studio 2019.Buku ini berisi materi pembuatan aplikasi mobile dengan target platform Android, iOS, dan Universal Windows Platform (UWP) menggunakan Xamarin Forms dan Visual Studio 2019.

Pada ebook ini dibahas beberapa fitur yang baru pada Xamarin Forms seperti Xamarin Essentials dan penggunaan Xamarin Shell.

cover

Adapun daftar isi dari buku ini adalah sebagai berikut:

  • Bab 1 – Pengenalan Xamarin Form    4
    • Apa itu Xamarin    4
    • Cara Install Xamarin Forms    5
    • Memulai Membuat Project Xamarin Form    6
    • Menjalankan Aplikasi Android    7
    • Menjalankan Aplikasi Xamarin Forms pada IOS    8
    • Menjalankan Aplikasi Xamarin Forms pada UWP/Win 10.    9
  • Bab 2 – Desain Tampilan menggunakan Layout    10
    • Pendahuluan    10
    • Application Lifecycle pada Xamarin Forms    10
    • Xamarin Forms UI (User Interface)    10
    • Page    10
    • View    11
    • Layout    11
    • Practice #2.1 Penggunaan StackLayout    11
    • Practice #2.2 Contoh Penggunaan Absolute Layout    12
    • Practice #2.3 Menggunakan Relative Layout    12
    • Practice #2.4 Menggunakan GridLayout    13
    • Task #2.1 Menggunakan Scroll View pada Xamarin Form    14
    • Task #2.2 Kalkulator Sederhana    14
      Image View    15
    • Task #2.3 Menggunakan Image View    15
  • Bab 3 – Menampilkan Data Pada ListView    20
    • Pendahuluan    20
    • Binding Data yang bertipe List Of String    20
    • Practice #3.1 Menampilkan Data bertipe List Of String    20
    • Practice #3.2 Menampilkan Data dari Objek Data Model    21
    • Practice #3.3 Menampilkan Gambar pada Cell    23
    • Practice #3.4 Kustomisasi Baris pada ListView    25
  • BAB 4 – Navigasi    27
    • Pendahuluan    27
    • Jenis-jenis Navigasi pada Xamarin Forms    27
    • Practice #4.1 Menambahkan Navigasi Sederhana    27
    • Practice #4.2 Membuat Dropdown Menu    28
    • #Practice 4.3 Menggunakan Modal Form    29
    • Practice #4.4 Membuat Popup Alert    30
    • Practice #4.5 Mengirimkan Data Antar Page    32
    • Practice #4.6 Menggunakan objek Application.Current.Properties    33
    • Practice #4.7 Menggunakan Master Page    34
    • #Practice 4.8 Menambahkan Tab Page    37
    • #Practice 4.9 Menambahkan Shell    40
    • #Practice 4.10 Shell Navigation    42
    • #Practice 4.11 Mengirimkan Parameter Dengan Route    43
    • #Practice 4.12 Fitur Search Pada Shell    44
  • BAB 5 – Local Storage dengan SQLite    48
    • Pendahuluan    48
    • Bekerja dengan SQL Lite    48
    • Practice #5.1 Membuat Aplikasi Daftar Pegawai dengan SQLite    48
  • Bab 6 – Menggunakan REST Services pada Xamarin Forms    56
    • #Practice 5.2 Mengakses REST Services Menggunakan Fiddler.    56
    • #Practice 5.3 Mengakses REST Services dari Xamarin Forms.    57
  • BAB 7 – Android Deployment (Membuat APK)    64
    • Cara  Membuat APK pada Xamarin Form    64
  • BAB 8 – Xamarin Essentials    68
    • Practice 8.1 Instalasi Xamarin Essential    68
    • Practice 8.3 Xamarin Essentials: Check Battery Status    70
    • Practice 8.4 Xamarin Essentials: Menggunakan Geolocation    72
    • Practice 8.5 Xamarin Essentials: Menggunakan Geocoding    73
    • Practice 8.6 Xamarin Essentials: Menggunakan Map    75

Anda dapat mengunduh Ebook ini secara FREE melalui tautan berikut ini.

Jika anda tertarik untuk belajar lebih lanjut dengan topik yang lebih advance, anda juga dapat mengikuti pelatihan intensive dengan studi kasus yang dibutuhkan melalui https://actual-training.com

Xamarin Shell: Fitur Search Pada Shell

1. Untuk membuat halaman yang memiliki fitur search, tambahkan halaman baru dengan nama ContohSearch.

2. Kemudian pada project buat folder dengan nama Data dan Controls.

3. Folder Data digunakan untuk menambahkan list untuk data dummy. Pada folder Data tambahkan file dengan nama MonkeyData.cs

public static IList<Animal> Monkeys { get; private set; }

        static MonkeyData()
        {
            Monkeys = new List<Animal>();

            Monkeys.Add(new Animal
            {
                Name = "Baboon",
                Location = "Africa & Asia",
                Details = "Baboons are African and Arabian Old World monkeys belonging to the genus Papio, part of the subfamily Cercopithecinae.",
                ImageUrl = "https://upload.wikimedia.org/wikipedia/commons/thumb/f/fc/Papio_anubis_%28Serengeti%2C_2009%29.jpg/200px-Papio_anubis_%28Serengeti%2C_2009%29.jpg"
            });

            Monkeys.Add(new Animal
            {
                Name = "Capuchin Monkey",
                Location = "Central & South America",
                Details = "The capuchin monkeys are New World monkeys of the subfamily Cebinae. Prior to 2011, the subfamily contained only a single genus, Cebus.",
                ImageUrl = " https://upload.wikimedia.org/wikipedia/commons/thumb/4/40/Capuchin_Costa_Rica.jpg/200px-Capuchin_Costa_Rica.jpg"
            });
}}

4. Kemudian tambahkan juga folder Controls, kemudian tambahkan file dengan nama MonkeySearchHandler.cs. file ini digunakan untuk menangani mekanisme search.

    public class MonkeySearchHandler : SearchHandler
    {
        protected override void OnQueryChanged(string oldValue, string newValue)
        {
            base.OnQueryChanged(oldValue, newValue);

            if (string.IsNullOrWhiteSpace(newValue))
            {
                ItemsSource = null;
            }
            else
            {
                ItemsSource = MonkeyData.Monkeys
                    .Where(monkey => monkey.Name.ToLower().Contains(newValue.ToLower()))
                    .ToList<Animal>();
            }
        }

        protected override async void OnItemSelected(object item)
        {
            base.OnItemSelected(item);
            await Task.Delay(1000);
           await Shell.Current.GoToAsync($"monkeydetails?name={((Animal)item).Name}");        }
    }

5. Pada ContohSearch tambahkan kode xaml berikut ini:

<?xml version="1.0" encoding="utf-8" ?>
<ContentPage mc:Ignorable="d"
             x:Class="Latihan1.Bab4.ContohSearch"
             xmlns:controls="clr-namespace:Latihan1.Controls"
             xmlns:data="clr-namespace:Latihan1.Data"
             Title="Monkey">
    <Shell.SearchHandler>
        <controls:MonkeySearchHandler Placeholder="Enter search term"
                                      ShowsResults="true"
                                      DisplayMemberName="Name" />
    </Shell.SearchHandler>
    <CollectionView Margin="20"
                    ItemsSource="{x:Static data:MonkeyData.Monkeys}"
                    ItemTemplate="{StaticResource AnimalTemplate}"
                    SelectionMode="Single"
                    SelectionChanged="OnCollectionViewSelectionChanged" />
</ContentPage>

6. Kemudian tambahkan kode pada method OnCollectionViewSelectionChanged.

        async void OnCollectionViewSelectionChanged(object sender, SelectionChangedEventArgs e)
        {
            try
            {
                string monkeyName = (e.CurrentSelection.FirstOrDefault() as Animal).Name;
                await Shell.Current.GoToAsync($"monkeydetails?name={monkeyName}");
            }
            catch (Exception ex)
            {

                await DisplayAlert("Error", $"{ex.InnerException.Message}","OK");
            }
            
        }

7. Karena ketika kita memilih salah satu item akan dibuka halaman details, maka tambahkan halaman baru dengan nama DetailSearch.xaml

<?xml version="1.0" encoding="utf-8" ?>
<ContentPage 
             x:Class="Latihan1.Bab4.DetailSearch" Title="Monkey Detail">
    <ScrollView>
        <StackLayout Margin="20">
            <Label Text="{Binding Name}" 
                   HorizontalOptions="Center" />
            <Label Text="{Binding Location}" 
                   FontAttributes="Italic" 
                   HorizontalOptions="Center" />
            <Image Source="{Binding ImageUrl}" 
                   HeightRequest="200" 
                   WidthRequest="200" 
                   HorizontalOptions="CenterAndExpand" />
            <Label Text="{Binding Details}"/>
        </StackLayout>
    </ScrollView>
</ContentPage>

8. Kemudian pada folder ViewModels tambahkan class dengan nama MonkeyDetailViewModel, kemudian tambahkan kode berikut ini:

    [QueryProperty("MonkeyName", "name")]
    public class MonkeyDetailViewModel : INotifyPropertyChanged
    {
        public string MonkeyName
        {
            set
            {
                Animal monkey = MonkeyData.Monkeys.FirstOrDefault(m => m.Name == Uri.UnescapeDataString(value));

                if (monkey != null)
                {
                    Name = monkey.Name;
                    Location = monkey.Location;
                    Details = monkey.Details;
                    ImageUrl = monkey.ImageUrl;
                    OnPropertyChanged("Name");
                    OnPropertyChanged("Location");
                    OnPropertyChanged("Details");
                    OnPropertyChanged("ImageUrl");
                }
            }
        }

        public string Name { get; set; }
        public string Location { get; private set; }
        public string Details { get; private set; }
        public string ImageUrl { get; private set; }

        #region INotifyPropertyChanged

        public event PropertyChangedEventHandler PropertyChanged;

        void OnPropertyChanged([CallerMemberName] string propertyName = null)
        {
            PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propertyName));
        }

        #endregion
    }

9. Tambahkan route untuk ke halaman detail pada AppShell.cs

   Routing.RegisterRoute("monkeylist", typeof(ContohSearch));
   Routing.RegisterRoute("monkeydetails", typeof(DetailSearch));

10. Kemudian jalankan aplikasinya, dan pilih menu navigasi Monkey List.

image

11. Ketikan keyword yang diinginkan, setelah dipilih maka akan ditampilkan halaman detail.

image

Xamarin Shell: Mengirimkan Parameter Dengan Route

Pada tutorial kali ini akan dibahas bagaimana cara mengirimkan parameter menggunakan fitur route yang ada pada Xamarin Shell.

1. Selain menggunakan route untuk navigasi, anda juga dapat mengirimkan nilai via navigasi dengan cara berikut:

2. Pada halaman BindingListString yang sudah anda buat sebelumnya, tambahkan kode berikut untuk mengirimkan nilai.

        private async void btnImageCell_Clicked(object sender, EventArgs e)
        {
            var nama = "Erick";
            await Shell.Current.GoToAsync($"//imagecell?nama={nama}");
        }

3. Kemudian pada halaman ListViewImageCell tambahkan label untuk menampilkan nilai parameter yang dikirimkan.

        <StackLayout>
            <Button x:Name="btnImageCell" 
                    Text="Ke Halaman Image Cell" Clicked="btnImageCell_Clicked" />
            <ListView x:Name="listView" />
        </StackLayout>

4. Kemudian tambahkan attribute berikut untuk mengambil nilai parameter:

    [QueryProperty("Nama","nama")]
    public partial class ListViewImageCell : ContentPage

5. Kemudian tambahkan property untuk mengambil data.

        public string Nama
        {
            set
            {
                lblPar.Text = Uri.UnescapeDataString(value);
            }
        }

image

Xamarin Shell: Shell Navigation

Xamarin Shell mempunyai URI-based navigation yang menggunakan mekanisme routes sehingga kita dapat berpindah navigasi tanpa harus mengikuti mekanisme navigasi hirarki standard.

1. Pada aplikasi yang sudah kita buat sebelumnya, tambahkan code behind sebagai berikut:

        public AppShell()
        {
            InitializeComponent();
            Routing.RegisterRoute("liststring", typeof(BindingListString));
            Routing.RegisterRoute("imagecell", typeof(ListViewImageCell));
            Routing.RegisterRoute("datamodel", typeof(BindingToDataModel));
            Routing.RegisterRoute("customlist", typeof(ListViewCustom));
        }

2. Kemudian pada bagian xaml tambahkan route berikut ini:

    <FlyoutItem Title="List Sample"
                FlyoutDisplayOptions="AsMultipleItems">
        <Tab Title="Tab Menu">
            <ShellContent Title="Binding List" Route="liststring">
                <views:BindingListString/>
            </ShellContent>
            <ShellContent Title="Image Cell" Route="imagecell">
                <views:ListViewImageCell />
            </ShellContent>
        </Tab>
        <ShellContent Title="Binding List String" Route="liststring">
            <views:BindingListString />
        </ShellContent>
        <ShellContent Title="Binding Data Model" Route="datamodel">
            <views:BindingToDataModel />
        </ShellContent>
        <ShellContent Title="Custom ListView" Route="customlist">
            <views:ListViewCustom />
        </ShellContent>
    </FlyoutItem>

3. Pada halaman BindingListString yang sudah dibuat sebelumnya tambahkan tmbol untuk navigasi halaman.

        <StackLayout>
            <Button x:Name="btnImageCell" 
                    Text="Ke Halaman Image Cell" Clicked="btnImageCell_Clicked" />
            <ListView x:Name="listView" />
        </StackLayout>

4. Untuk navigasi dengan menggunakan route yang sudah dibuat, anda dapat menambahkan perintah berikut ini:

        private async void btnImageCell_Clicked(object sender, EventArgs e)
        {
            await Shell.Current.GoToAsync("imagecell");
        }

image