Halo teman – teman, kali ini kita akan membahas mengenai cara aktivasi kode voucher di aplikasi Zahran ABC premium.
Aplikasi Zahran ABC sendiri merupakan sebuah aplikasi pembelajaran mengenal huruf dan angka untuk anak yang dibungkus menjadi game interaktif. Aplikasi ini juga dilengkapi audio narasi untuk membantu anak lebih memahami materinya.
Di dalamnya game terdapat dua mode utama, yaitu mode belajar dan mode arcade.
Pada mode belajar, anak-anak akan belajar mengenal huruf dari A-Z serta angka dari 1-10. Selain itu juga terdapat quiz agar anak – anak bisa mengingat setiap huruf dan angka yang telah dipelajari.
Pada mode arcade, terdapat 8 mini game yang seru. Sehingga anak – anak dapat belajar sambil bermain.
Link download aplikasi game Zahran ABC ada disini.
Selain versi gratisnya, Zahran ABC juga menyediakan versi premium untuk bisa mengakses konten yang lebih lengkap. Berikut adalah cara untuk aktivasi kode voucher premiumnya.
1. Form konfirmasi orang tua
Zahran ABC dilengkapi dengan form konfirmasi orang tua yang digunakan untuk memastikan bahwa orang tua dari anak mengetahui bahwa akan ada transaksi pada game Zahran ABC.
2. Pilih metode pembayaran
Selanjutnya pilih metode transaksinya. Zahran ABC mempunyai beberapa pilihan metode pembayaran, anda bisa memilih metode yang sesuai dengan kondisi anda.
3. Pilih Reedem Code
Jika anda memiiki kode voucher zahran ABC Premium, silahkan Pilih “Reedem code” untuk menggunakan kode voucher tersebut.
4. Masukkan kode voucher
Lalu, akan dibawa pada form pengisian kode vouchernya.
5. Ketikkan kode vouchernya
Masukkan kode voucher pada form sesuai yang anda miliki. Setelah itu klik tombol “redeem”.
6. Pengecekan kode
Selanjutnya, kode voucher yang dimasukkan akan dicek oleh sistem.
7. Menambahkan item
Ketika berhasil, maka akan muncul tampilan seperti diatas. Tekan tombol “Add Item” dan zahran ABC premium sudah bisa anda gunakan.
Oke teman teman, Begitulah cara aktivasi kode voucher di aplikasi zahran ABC premium. Sekian dulu artikel dan semoga bermanfaat. Sampai jumpa di artikel berikutnya.
Jadi kali ini saya akan membuat Authorization Token menggunakan middleware.
Membuat Middleware
yang pertama adalah, kita membuat middleware denga mengetikan :
php artisan make:middleware TokenAccess
lalu buka file TokenAccess.php yang berada di app\Http\Middleware, masukan baris berikut :
class TokenAccess
{
public function handle($request, Closure $next)
{
dd(str_random(50));
}
}
oiyah kenapa kita memasukan “dd(str_random(20))”, karna kita ingin membuat String Alfanumerik secara Acak yang akan nanti kita gunakan sebagai token Authorization.
Jalan kan dd nya
buka file api.php berada di routes\api.php dan tambah kan seperti berikut :
Route::group(['middleware' => ['tokenaccess']], function () {
Route::get('cities', '[email protected]_city');
});
Setelah itu buka postman, lalu masukan http://127.0.0.1:8000/v1/cities :
Dan lalu kita mendaptkan Alfanumerik acak, yang nanti kita akan gunakan sebagai token Authorization
Ubah kembali file TokenAccess.php
Buka lagi file TokenAccess.php dan tambah kan code seperti berikut :
oke minggu lalu kita sudah membahas tentang react router pada react js. bagi yang belum baca bisa baca disini. oke, apa yang kita bahas untuk minggu ini? oke minggu ini kita akan membahas Component Lifecycle pada react js.
jadi apa itu component lifecycle? oke pada dasarnya component lifecycle adalah sirklus hidup pada react js. Sama seperti manusia, setiap component di react js ternyata juga memiliki siklus hidup.
Component – component di react js akan melewati tiga fase hidup, yaitu :
Mounting
Updating
Unmounting
oke gausah bingung saya akan menjelaskan dan menjabarkan beberapa hal diatas.
Mounting
Pada fase ini ada tiga methods yang akan di eksekusi yaitu:
componentWillMount
componentDidMount
render
componentWillMount adalah method yang akan di eksekusi pertama kali, kemudian akan mengeksekusi method render.
Di dalam method render inilah kita menyimpan tag tag html yang nanti nanti akan di render sebagai jsx oleh react, gaya penulisan tag html di file html biasa juga sedikit berbrda dibandingkan dengan di jsx.
Setelah method render di eksekusi baru kemudian mengeksekusi method componentDidMount
operasi lain seperti request data dari API semuanya dilakukan di sini.
Updating
Fase updating adalah fase ketika sebuah component akan di render ulang, biasanya ini terjadi ketika ada perubahan pada state atau props yang mengakibatkan perubahan DOM.
Pada fase ini ada 5 methods yang akan di eksekusi yaitu:
componentWillReceiveProps :
fungsi ini akan di eksekusi bila state yang ada di component akan di update atau di ubah dengan nilai props yang baru.
shouldComponentUpdate :
funsi ini adalah untuk menentukan apakah sebuah component akan di render ulang atau tidak.Method ini akan mengembalikan nilai boolean true & false, jika true maka component akan di render ulang atau sebaliknya.
componentWillUpdate :
fungsi ini akan di eksekusi jika fungsi shouldComponentUpdate mengembalikan nilai true. Kemudian kembali method render akan di jalankan
componentDidUpdate :
fungsinya sama dengan componentDidMount yaitu untuk manipulasi DOM dan request data.
Unmount
Fase unmounting adalah fase ketika component di hapus dari DOM
di fase ini method yang akan di eksekusi hanya ada satu yaitu componentWillUnmount, yang akan di eksekusi sebelum sebuah component di hapus dari DOM.
Jika kita baru belajar flutter maka sudah hal yang wajib untuk mengerti menambahkan depedency. Di flutter banyak sekali library-library yang menarik sayang rasanya jika kita tidak menggunakannya untuk mepermudah pembuatan aplikasi kita.
ok to the point langsung saja kita membuat project baru, lalu bukalah pubspec.yaml di project yang kau buat
Seperti ini lah isi pubspec.yaml
name: flutter_fire
description: A new Flutter project.
# The following line prevents the package from being accidentally published to
# pub.dev using `pub publish`. This is preferred for private packages.
publish_to: 'none' # Remove this line if you wish to publish to pub.dev
# The following defines the version and build number for your application.
# A version number is three numbers separated by dots, like 1.2.43
# followed by an optional build number separated by a +.
# Both the version and the builder number may be overridden in flutter
# build by specifying --build-name and --build-number, respectively.
# In Android, build-name is used as versionName while build-number used as versionCode.
# Read more about Android versioning at https://developer.android.com/studio/publish/versioning
# In iOS, build-name is used as CFBundleShortVersionString while build-number used as CFBundleVersion.
# Read more about iOS versioning at
# https://developer.apple.com/library/archive/documentation/General/Reference/InfoPlistKeyReference/Articles/CoreFoundationKeys.html
version: 1.0.0+1
environment:
sdk: ">=2.7.0 <3.0.0"
dependencies:
flutter:
sdk: flutter
# The following adds the Cupertino Icons font to your application.
# Use with the CupertinoIcons class for iOS style icons.
cupertino_icons: ^1.0.0
dev_dependencies:
flutter_test:
sdk: flutter
# For information on the generic Dart part of this file, see the
# following page: https://dart.dev/tools/pub/pubspec
# The following section is specific to Flutter.
flutter:
# The following line ensures that the Material Icons font is
# included with your application, so that you can use the icons in
# the material Icons class.
uses-material-design: true
# To add assets to your application, add an assets section, like this:
# assets:
# - images/a_dot_burr.jpeg
# - images/a_dot_ham.jpeg
# An image asset can refer to one or more resolution-specific "variants", see
# https://flutter.dev/assets-and-images/#resolution-aware.
# For details regarding adding assets from package dependencies, see
# https://flutter.dev/assets-and-images/#from-packages
# To add custom fonts to your application, add a fonts section here,
# in this "flutter" section. Each entry in this list should have a
# "family" key with the font family name, and a "fonts" key with a
# list giving the asset and other descriptors for the font. For
# example:
# fonts:
# - family: Schyler
# fonts:
# - asset: fonts/Schyler-Regular.ttf
# - asset: fonts/Schyler-Italic.ttf
# style: italic
# - family: Trajan Pro
# fonts:
# - asset: fonts/TrajanPro.ttf
# - asset: fonts/TrajanPro_Bold.ttf
# weight: 700
#
# For details regarding fonts from package dependencies,
# see https://flutter.dev/custom-fonts/#from-packages
selanjutnya kita perlu library yang ingin kita tambahkan, di artikel ini saya akan mencontoh kan library Google fonts https://pub.dev/packages/google_fonts
(jika kalian ingin menggunakan depedency pilihan kalian pastikan itu berasal dari https://pub.dev/ )
di halaman pub.dev dokumentasi nya sudah cukup lengkap mulai dari install nya dan cara memakainnya
ok tambahkan depedency
version: 1.0.0+1
environment:
sdk: ">=2.7.0 <3.0.0"
dependencies:
flutter:
sdk: flutter
# The following adds the Cupertino Icons font to your application.
# Use with the CupertinoIcons class for iOS style icons.
cupertino_icons: ^1.0.0
google_fonts: ^1.1.1
dev_dependencies:
flutter_test:
sdk: flutter
setelah menambahkan depedency IDE biasanya melakukan pub get secara otomatis tapi jika tidak, kita bisa melakukannya secara manual ketikkan perintah berikut di terminal project atau arahkan terminalnya ke project
flutter pub get
lalu terminal akan menambahkan library nya ke project kita dan sekarang kita bisa menggunakan depedency baru saja kita tambahkan.
Sekian artikel ini Terima Kasih telah membacanya. Have a Good Days 🙂
React js. Javascript library keluaran facebook ini cukup banyak di gandrungi banyak depelover karena performanya yang cukup powerfull. di artikel kali ini saya akan membahas cara penerapan routing di library ini. tetapi, sebelum membahas cara routing di react js saya akan membahas sedikit apa itu routing dalam website.
kalo kita terjemahkan kedalam bahasa indonesia routing adalah rute, jadi seperti namanya pada dasarnya kita memetakan sebuah URL ke sebuah file atau data tertentu. sudah terbayang? mari kita masuk ke routing di react js.
Step 1
Saya asumsikan kalian sudah menginstal project react, jika belum silahkan install disini dan pastikan sudah terinstall node dan npm di pc anda. jika sudah silahkan buka projectnya di code editor kalian kesukaan kalian masing-masing, kali ini saya akan memakai visual studio code untuk code editornya, buka terminal yang mengarah ke directory project anda lalu ketikan “npm start” untuk menyalakan servernya. lalu akan diberikan alamat server lokalnya, “Default: localhost:3000” jika sudah seperti inilah tampak project dan struktur folder awal react js.
Step 2
Untuk mengintegrasikan react router kita membutuhkan library yang bernama react router dom, buka terminal yang mengarah ke di directory project anda lalu ketikan “npm i react-router-dom” atau jika anda menggunakan yarn ketikan “yarn add react-router-dom” klik untuk lihat lebih lanjut.
jika sudah terinstall buka file app yang ada di directory src lalu import library react-router-dom yang tadi kita install
untuk contoh kita akan memidahkan laman about dan home. buatlah file berikut di dalam directory app:
Home.js
About.js
lalu buat struktur react seperti ini di masing masing file
import React from 'react'
function Home() {
return (
<div>
<h1>Home Page</h1>
</div>
)
}
export default Home
import React from 'react'
function About() {
return (
<div>
<h1>About Page</h1>
</div>
)
}
export default About
jika sudah buka file app lalu import kedua komponen tersebut dan bungkus kedalam class Router switch dan route lalu beri masing masing path dalam setiap route. jika sudah kodenya akan seperti ini
import logo from './logo.svg';
import {BrowserRouter as Router, Switch, Route, Link} from "react-router-dom";
import Home from './Home'
import About from './About'
import './App.css';
function App() {
return (
<Router>
<div>
<Switch>
<Route path="/about">
<About />
</Route>
<Route path="/">
<Home />
</Route>
</Switch>
</div>
</Router>
);
}
export default App;
lalu beri link untuk berpindah, senhinnga kode terlihat seperti ini
import logo from './logo.svg';
import {BrowserRouter as Router, Switch, Route, Link} from "react-router-dom";
import Home from './Home'
import About from './About'
import './App.css';
function App() {
return (
<Router>
<div>
<nav>
<ul>
<li>
<Link to="/">Home</Link>
</li>
<li>
<Link to="/about">About</Link>
</li>
<li>
<Link to="/users">Users</Link>
</li>
</ul>
</nav>
<Switch>
<Route path="/about">
<About />
</Route>
<Route path="/">
<Home />
</Route>
</Switch>
</div>
</Router>
);
}
export default App;
mungkin sekian yang bisa saya berikan untuk hari ini. sekian terimakasih.
Flutter sebenarnya sudah menyediakan bottom navigation, tapi disini kita akan belajar bagaimana cara mengcustom Bottom Navigation agar terlihat lebih baik dan lebih fancy menggunakan library curved navigation, jika ingin mengkunjungi dokumentasi nya silahkan buka link berikut ini : https://pub.dev/packages/curved_navigation_bar .
Ok tanpa bertele – tele lagi berikut adalah bentuk dari curved navigation
Sangat keren bukan dan juga untuk implementasi curved navigation sangatlah mudah ok berikut caranya :
Tambahkan Depedency-nya terlebih dahulu di pubspec.yaml berikut adalah depedency nya :
dependencies:
curved_navigation_bar: ^0.3.4 #latest version in nov 2020
seteleh menambahkan depedency jangan lupa melakukan pub get (jika idea / text editor tidak otomatis melakukan pub get ) ok selanjutnya kita perlu membuat file atau statefull widget untuk bottom navigation, berikut adalah contohnya :
Pada kesempatan kali ini kita akan membahas tentang cara membuat API otentikasi menggunakan passport di Laravel. Api sering juga di kaitkan sebagai Web Service digunakan untuk berkomunikasi atau mengintegrasikan dan mengizinkan dua aplikasi yang berbeda secara bersamaan untuk saling terhubung satu sama lain..
Poin yang kita akan buat dalam pembelajaran kali ini :
Masukan command “cd C:\xampp\htdocs\laravel_passport” pada jendela Command Prompt untuk masuk ke direktori project . saya beri nama project saya tadi dengan nama laravel_passport
lalu, silahkan ketik command di bawah ini untuk menginstall package passport di Laravel:
composer require laravel/passport
jika sudah terinstall, buka project anda di text editor (visual studio code/sublime).
3. Konfigurasi Package Passport
Agar package ini bisa dijalankan, maka kita perlu mendaftarkannya dulu di config/app.php. Tambahkan:
Laravel\Passport\PassportServiceProvider::class,
4. Buat Database dan Konfirguarasi
Buat database dengan nama laravel_passport,Lalu tambahkan pada bagian .env seperti berikut:
selanjutnya buka terminal Visual Studio Code, kemudian migrate dengan command :
php artisan migrate
Install passport dengan command agar mendapatkan token keys.
php artisan passport:install
5 .Ubah Model User
Buka User.php di dalam direktori app/User.php,kemudian ubah seperti berikut :
<?php
namespace App;
use Laravel\Passport\HasApiTokens;
use Illuminate\Contracts\Auth\MustVerifyEmail;
use Illuminate\Foundation\Auth\User as Authenticatable;
use Illuminate\Notifications\Notifiable;
class User extends Authenticatable
{
use HasApiTokens, Notifiable;
/**
* The attributes that are mass assignable.
*
* @var array
*/
protected $fillable = [
'name', 'email', 'password',
];
/**
* The attributes that should be hidden for arrays.
*
* @var array
*/
protected $hidden = [
'password', 'remember_token',
];
/**
* The attributes that should be cast to native types.
*
* @var array
*/
protected $casts = [
'email_verified_at' => 'datetime',
];
}
6. Ubah AuthService Provider
buka AuthServiceProvider.phpdi direktoriapp/Providers/AuthServiceProvider.php kemudian ubah seperti ini:
<?php
namespace App\Providers;
use Laravel\Passport\Passport;
use Illuminate\Foundation\Support\Providers\AuthServiceProvider as ServiceProvider;
use Illuminate\Support\Facades\Gate;
class AuthServiceProvider extends ServiceProvider
{
/**
* The policy mappings for the application.
*
* @var array
*/
protected $policies = [
'App\Model' => 'App\Policies\ModelPolicy',
];
/**
* Register any authentication / authorization services.
*
* @return void
*/
public function boot()
{
$this->registerPolicies();
Passport::routes();
}
}
7. Ubah Auth
Buka Config/auth.php , lalu cari kode seperti ini:
Minggu kemarin ada sebuah perusahaan yang melakukan permintaan ke Rumah Coding untuk mengadakan training di kantornya yang berlokasi Solo. Karena permintaan yang cukup mendadak dan di waktu yang tidak tepat sehingga agak sulit mengatur jadwalnya. Kondisi saat itu, semua trainer sedang ada jadwal termasuk trainer Semarang pun berhalangan. Dengan beberapa pertimbangan, akhirnya saya sanggupi permintaan tersebut dengan saya sendiri sebagai trainernya. Sebenernya agak berat bagi saya karena training memakan waktu 4 hari, sedangkan banyak pekerjaan lain yang harus saya kerjakan. Tapi saya coba berpikir lain barangkali ada opportunity lain yang bisa digarap selesai training.
Alhamdulillah training berjalan lancar. Judulnya memang Corporate Training Android Basic Solo, tapi pada kenyataan-nya, justru saya yang banyak belajar dari direktur perusahaan ini. Beliau adalah Big Boss dengan jumlah karyawan mencapai 1000 lebih. Jumlah karyawan yang tidak sedikit untuk ukuran orang seumuran beliau. Karyawan beliau tersebar di seluruh Indonesia, mulai dari kota besar hingga pelosok. Bisnis beliau pun beragam mulai dari payment gateway, travel umroh, hingga apartement. Dan memang saya akui, beliau ada tipe pekerja kelas. Hal itu nampak jelas dari setiap response terhadap setiap tugas-tugas coding yang saya berikan.
Pertanyaan besarnya adalah untuk apa belajar android untuk orang selevel beliau. Alasan pertama adalah hobi. Aslinya beliau ini jurusan teknik informatika. Tetapi karena kesibukan di dunia bisnis, perlahan-lahan skill coding-nya mulai hilang ditelan kesibukan. Maka dari itu beliau request training ke Rumah Coding, tujuan-nya untuk merefresh skill codingnya.
Bisnis beliau yang pertama adalah sofware house. Dulu beliau mempunyai produk software antrian. Software antrian-nya sudah banyak dipakai di seluruh kantor cabang bank BNI di seluruh Kalimantan. Software antrian yang beliau buat termasuk salah satu pionir software antrian, di saat bank-bank yang lain masih menggunakan potongan kertas untuk antrian.
Alasan kedua adalah mencari inspirasi dan ide-ide produk digital yang fresh. Beliau banyak berdiskusi dengan saya mengenai seputar ide-ide produk digital yang bisa dieksekusi. Dan kebetulan saya sedikit banyak paham seluk beluk dunia startup. Dalam benak beliau, sudah ada beberapa ide produk baru yang ingin segera dieksekusi dan beliau banyak bertanya dari sisi teknis pembuatan-nya.
Alasan ketiga adalah beberapa bisnisnya yang sekarang sudah berjalan perlu membutuhkan beberapa aplikasi android. Beliau ingin tau sedikit seluk beluk dunia coding android. Dan ini tidak hanya terjadi pada beliau. Beberapa peserta yang training di Rumah Coding juga banyak yang profesinya sebagai pemilik bisnis (bisnis owner). Mereka ingin membuat aplikasi android dari bisnis-nya yang sekarang. Dan goal mereka sebenernya bukan ingin beralih menjadi android developer. Akan tetapi kadang seorang pemilik bisnis perlu mengetahui sedikit perkara teknis agar dapat mengambil keputusan yang tepat. Dan seperti itulah Steve Jobs. Steve Jobs tidak bisa coding, akan tetapi smart enough untuk menjelaskan hal-hal teknis kepada para pendengarnya.
Dan setelah training selesai, sudah dipastikan beliau langsung memberikan saya beberapa projek untuk digarap. Inilah yang saya sebut diawal sebagai opportunity lain.
Tertarik training di Rumah Coding?
Follow @idrumahcoding dan kunjungi www.rumahcoding.co.id
Saat ini, membangun memiliki koneksi/jaringan merupakan
salah satu hal penting di dunia kerja. Mendapatkan informasi yang kita
butuhkan, adalah saah satu manfaat dari memiliki koneksi. Untuk memiliki
koneksi, kita bisa memulainya dengan interaksi di social media, mengikuti suatu
paguyuban, atau bahkan mengikuti sebuah kursus.
Mengikuti sebuah kursus, adalah cara Pak Sabilal Muhtadin
agar bisa memiliki koneksi dengan teman-teman yang berminat pada programming,
termasuk menjalin koneksi dengan trainernya. Berawal dari ketertarikannya dalam
membuat website, lulusan kebendaharaan STAN ini, mulai mencoba belajar
autodidak dari video pembelajaran yang ada di Youtube.
Namun, hal tersebut berjalan kurang baik, akhirnya diputuskan
untuk mengikuti kursus. Disamping mengetahui cara membuat website, Ia juga
ingin menambah koneksi dari teman teman yang berminat dalam pemrograman. Meski
saat ini, beliau bekerja sebagai PNS di Kementerian Keuangan, dimana
programming adalah hal baru baginya, Ia tetap semangat belajar pemrograman.
Setelah mengikuti kelas PHP Code Igniter di Rumah Coding,
beliau berharap dapat terus mengembangkan kemampuannya, dan bisa keep in
contact dengan trainer. Agar suatu saat ketika mengerjakan project web
tersebut, Ia bisa sharing mengenai permasalahan yang dihadapi.
Halo readers, kali ini kita akan membahas tentang Bandung nih. Karena akhir November kemarin, tepatnya tanggal 30, Rumah Coding berkesempatan mengunjungi objek wisata tersebut. Tujuannya untuk mengagumi keindahan alam ciptaan Allah, dan sebagai ajang refreshing sejenak dari rutinitas harian.
Karena perjalanan dari Depok ke lokasi tujuan cukup jauh, maka diputuskan untuk berangkat pada pukul 05.30 WIB. Namun karena ada sedikit kendala, jam keberangkatan akhirnya mundur menjadi pukul 06.00 WIB. Perjalanan berangkat diselingi dengan pembagian doorprize, serunya, untuk bisa mendapatkan doorprize, peserta diwajibkan menjawab pertanyaan-pertanyaan ajaib yang dilontarkan MC.
Sampai di lokasi pertama yaitu Situ Patenggang jam menunjukkan sekitar pukul 11.00 WIB. Perjalanan yang cukup panjang, namun terbayar dengan pemandangan alam yang indah dan cuaca yang sejuk disana. Acara dilanjutkan dengan perkenalan dari Tim Rumah Coding beserta keluarga. Kemudian dilanjutkan dengan makan siang tentunya disambung dengan acara kuis doorprize lanjutan, dan sesi foto bersama. Sayangnya kondisi Situ agak mengejutkan, yaitu air Situ yang surut/kering cukup banyak, dilihat dari luasnya kondisi tanah yang pecah-pecah.
Setelah istirahat, sholat dan
makan siang, waktunya beranjak ke lokasi wisata selanjutnya, yaitu Kawah Putih.
Namun, baru saja berjalan kea rah bis, hujan turun cukup deras. Setelah
melewati voting yang cukup sengit XD, akhirnya diputuskan rombongan tetap
melanjutkan ke kawah putih, sembari berdoa semoga disana kering, alias tidak
hujan.
Ternyata di area kawah putih, tidak hujan sama sekali, yeaaay. Dengan suka cita, semua antusias untuk menaiki mobil angkutan khusus menuju kawah putih. Jalanan yang tidak rata, berdebu, dan cukup jauh mewarnai perjalanan menuju area kawah. Sesampainya disana, selain kawah putih, ada arena untuk berkuda juga loh.
Usai berfoto, akhirnya diputuskan
kita akan kembali ke bis, menuju lokasi berkutnya yaitu Wisata Belanja
Cibaduyut. Namun di tengah perjalanan, ternyata cukup macet dan dikhawatirkan
perjalanan pulang akan semakin larut bila tetap dilanjutkan. Akhirnya diputuskan
untuk langsung pulang.
Meski ada satu destinasi yang tak sempat disinggahi, namun teman-teman dari Rumah Coding merasa bersyukur bisa memiliki kesempatan mengunjungi objek-objek wisata tersebut.