Showing posts with label aplikasi. Show all posts
Showing posts with label aplikasi. Show all posts

Menjalankan gitlab runner menggunakan docker

Tutorial ini merupakan catatan belajar saya dalam menggunakan GitLab CI/CD dan Docker.

Gitlab Runner adalah sebuah service yang digunakan untuk menjalankan job dan mengirimkan hasilnya kembali ke GitLab.. Shared runner sudah tersedia di Gitlab dan dapat digunakan gratis, tapi anda tetap dapat menghubungkan private runner anda ke gitlab jika kurang puas dengan Shared Runner yang disediakan.


Untuk menjalankan gitlab runner menggunakan docker gunakan perintah 

docker run -d --name gitlab-runner --restart always \

-v /var/run/docker.sock:/var/run/docker.sock \

-v /srv/gitlab-runner/config:/etc/gitlab-runner \

 -v /usr/bin/docker:/usr/bin/docker \

gitlab/gitlab-runner:latest


*Pastikan sudah terinstall docker


Melihat container yang ada di docker dengan perintah docker ps -a

Terlihat terdapat satu container yang berjalan dengan nama gitlab-runner




Untuk masuk ke dalam container gunakan perintah 

docker exec -it gitlab-runner bash




Untuk mendapatkan  URL dan Token yang akan didaftarkan di gitlab runner dan melihat

gitlab runner yang sudah terdaftar di server gitlab, dengan masuk ke halaman:

setting->CI/CD->Runner




Terdapat register runner dengan url dan token yang akan digunakan pada gitlab runner.

Untuk menghubungkan gitlab-runner dengan server gitlab gunakan perintah 

Gitlab-runner register maka akan menampilkan inputan:

Isian yang dimasukkan diambil dari halaman setting->CI/CD->Runner pada server gitlab yang telah dilihat sebelumnya. 

Terutama Gitlab install URL dan Registration token 


Jika tidak perlu masuk dalam container bisa menggunakan perintah:

docker exec gitlab-runner gitlab-runner register



Jika di server gitlab gitlab-runner belum jalan, lakukan verify gitlab runner dengan perintah:

docker exec gitlab-runner gitlab-runner verify


Sekarang gitlab runner di docker  kita sudah tersambung dengan server gitlab .


Untuk menjalankan gitlab runner yang sudah didaftarkan untuk  project  pastikan pilihan enable shared runners for this project didisable (dimatikan).


Note: jika saat menjalankan pipeline terdapat output error docker not found solusinya


1. Create docker group if not exist : sudo groupadd docker

2. Add user to docker group : sudo usermod -aG docker ${USER}

3. Change docker.sock to new permission : sudo chmod 666 /var/run/docker.sock

4. Finally restart docker daemon service : sudo systemctl restart docker



Source Code Aplikasi Resep masakan menggunakan Flutter

Hari ini saya ingin membagikan source code aplikasi resep masakan menggunakan Flutter,dimana aplikasi ini menggunakan API dari https://masak-apa-tomorisakura.vercel.app/ dan sudah mendukung null safety.

Aplikasi ini memiliki fitur:
1. Daftar resep terbaru
2. Daftar resep per kategori
3. Daftar kategori
4. Pencarian resep

Beberapa tampilan dari aplikasi ini





Demo aplikasi silahkan klik disini

Untuk mendownload source code nya silahkan klik tombol di bawah
download[4]

Menjalankan Winbox dengan wine pada linux

Bagi Pengguna linux untuk menjalankan aplikasi windows tidak mudah, salah satu cara untuk menjalankan aplikasi windows di linux bisa menggunakan wine. Pertama pastikan teman” sudah menginstall aplikasi paket wine.Untuk mengecek apakah wine sudah terinstall apa belum dengan mengetikkan wine --version.



Sebelum memulai pastikan kita memiliki 2 file yang sudah didownload yaitu aplikasi winbox.exe dan gambar Winbox.png, disini filenya saya simpan di folder KetikanMD. Untuk aplikasi winbox bisa di download melalui link ini.

https://mikrotik.com/download



  • Copy 2 file yang sudah didownload ke folder windows pada folder  instalasi wine



  • Pastikan kedua file sudah ada di folder windows


Sekarang kita coba menjalankan winbox tanpa harus berada dengan satu folder dengan aplikasi winbox.exe


  • Untuk  membuat pintasan yang memungkinkan aplikasi untuk dijalankan, kita buatkan file winbox.desktop di folder /usr/share/applications 




  • Membuat file winbox.desktop menggunakan nano, disini teman” bebas menggunakan editor yang teman” mengerti.


  • Berikut isian file winbox.Desktop





[Desktop Entry]
Name=Winbox
GenericName=Mikrotik winbox
TryExec=wine winbox
Exec=wine winbox.exe
Terminal=false
Icon=/home/ion/.wine/drive_c/windows/Winbox.png
Type=Application
Categories=Internet
Comment=Remote Mikrotik
Keywork=mikrotik;winbox

Jika semua langka diatas sudah dilakukan maka kita telah berhasil menjalankan aplikasi winbox.  

Membuat Makefile dan kegunaannya

     Sekarang kita akan mempelajari makefile. Apa Sih itu makefile, Makefile adalah kumpulan script yang akan di-eksekusi oleh command make. make merupakan automation-tools yang diciptakan di Unix-type OS. Jadi jika OS anda merupakan satu clan dengan Unix (Linux, MacOS) maka command ini seharusnya ada.

Beberapa kegunaan makefile yaitu ketika kita diharuskan mengetikkan command yang panjang  tiap kali melakukan sesuatu dan harus menghafal semua command yang panjang tersebut. Namun  telah dibuat suatu cara untuk mempermudah pekerjaan tersebut, yaitu dengan penggunaan makefile.

Konsepnya sederhana, kita hanya perlu define beberapa command dan proses yang akan dilakukan didalam Makefile. Selanjutnya kita tinggal memanggil script tersebut dengan command make.

Jika kita menjalankan make, Program ini akan mencari sebuah file bernama makefile pada direktori, lalu mengeksekusinya. Jika terdapat beberapa makefile, maka dapat pula dieksekusi dengan perintah :

make –f makefile


Adapun lebih lengkap mengenai make dapat dilihat dengan man make.


Untuk case ini kita mempunyai project django dan menjalankan project django menggunakan makefile. Kita sudah membuat file dengan nama Makefile didalam folder yang sama dengan project django seperti dibawah ini.


*Bagi teman” yang belum tahu cara instalasi django bisa kunjungi link ini.



Kita  memiliki Makefile dengan isi seperti gambar dibawah.

Penjelasan:

Baris 2,6,10:
- nama definisi command saat dipanggil make

Baris 3,7,11:

    - eksekusi command pada django

.PHONY: runserver

  • berarti kata "runserver" tidak mewakili nama file di Makefile ini;

  • berarti Makefile tidak ada hubungannya dengan file bernama "runserver" di direktori yang sama.


Cara menggunakan makefile untuk memanggil define command yang kita buat yaitu dengan cara seperti berikut:

  • Menjalankan server Django

Penjelasan:

Make runserver

                kata “runserver” mewakili definisi command yang merujuk ke command “@python                               manage.py runserver”  yang sudah kita buatkan sebelumnya di dalam file Makefile.



  • Create app project Django


Penjelasan:

Make createartikel

                  kata “createartikel” mewakili definisi command yang merujuk ke command “@python                          manage.py startapp artikel” yang sudah kita buatkan sebelumnya di dalam file Makefile,                   setelah mengeksekusi perintah “Make createartikel” secara otomatis akan terbuat folder                      dengan nama artikel.                 


  • Create app project Django secara dinamis dengan variabel

Penjelasan:

Make createapp app=berita
- kata “createapp” mewakili definisi command yang merujuk ke command “@python                  manage.py startapp $(app)” yang sudah kita buatkan sebelumnya di dalam file                      Makefile.

        - Kata “app” merupakan nama variabel yang sudah didefinisikan di command “@python              manage.py startapp $(app)”.

        - Kata “berita” merupakan nama app yang akan kita buatkan, kata “berita” bisa diubah              sesuai keinginan.

 Setelah selesai mengeksekusi perintah “Make createapp app=berita” secara otomatis akan terbuat folder dengan nama berita


Begitu kira” penggunaan makefile, teman” bisa menggunakan makefile sesuai kebutuhan.


Lebih jauh tentang makefile bisa kunjungi artikel berikut.

https://www.gnu.org/software/make/manual/make.html


Tutorial Membuat Spinner Multi Select Menggunakan flutter

Selamat malam teman teman,pada kesempatan kali ini saya ingin membagi tutorial bagaimana cara membuat spinner multi select menggunakan flutter dengan memanfaatkan package multi_select_flutter. Pada tutorial kali ini saya menggunakan versi ^4.0.0 .

Adapun hasil akhir tampilan dari tutorial kali ini adalah seperti berikut:





Disini saya mengasumsikan teman teman sudah bisa membuat project baru flutter, Di tutorial ini saya menggunakan IDE Android Studio, bagi teman teman yang menggunakan IDE Visual Studio Code tidak masalah karena itu tergantung dari kenyamanan teman teman dalam menulis code....

OK,Untuk menggunakan package multi_select_flutter kita harus menambahkan pada file  pubspec.yaml seperti contoh dibawah:


Jangan lupa setelah menambahkan dependencies ke pubspec.yaml agar melakukan perintah flutter pub get  pada terminal yang bertujuan memerintahkan flutter untuk menambahkan dependencies ke folder dependencies yang telah flutter sediakan.


Atau bisa dengan cara klik "Pub get" pada sudut kanan  atas di file pubspec.yaml.

Selanjutnya kita perlu ubah isi dari file main.dart  menjadi seperti berikut:

import 'package:flutter/material.dart';
import 'package:multi_select_flutter/bottom_sheet/multi_select_bottom_sheet_field.dart';
import 'package:multi_select_flutter/chip_display/multi_select_chip_display.dart';
import 'package:multi_select_flutter/util/multi_select_item.dart';

void main() {
  runApp(MyApp());
}

class MyApp extends StatelessWidget {
  // This widget is the root of your application.
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'Multi Select',
      theme: ThemeData(
        primarySwatch: Colors.blue,
      ),
      home: MyHomePage(title: 'Multi Select'),
    );
  }
}

class MyHomePage extends StatefulWidget {
  MyHomePage({Key? key, required this.title}) : super(key: key);
  final String title;

  @override
  _MyHomePageState createState() => _MyHomePageState();
}

class _MyHomePageState extends State<MyHomePage> {
  static List<SpinnerMulti> _angka = [
    SpinnerMulti(id: 1, name: "Satu"),
    SpinnerMulti(id: 2, name: "Dua"),
    SpinnerMulti(id: 3, name: "Tiga"),
    SpinnerMulti(id: 4, name: "Empat"),
    SpinnerMulti(id: 5, name: "Lima"),
  ];
  final _itemsAngka = _angka
      .map((angka) => MultiSelectItem<SpinnerMulti>(angka, angka.name))
      .toList();
  List<SpinnerMulti?> _selectedAngka = [];

  @override
  void initState() {
    super.initState();
  }

  @override
  Widget build(BuildContext context) {
    return Scaffold(
        appBar: AppBar(
          title: Text(widget.title),
        ),
        body: Container(
          padding: EdgeInsets.symmetric(vertical: 20, horizontal: 10),
          child: SingleChildScrollView(
            child: Column(
              children: [
                Container(
                    decoration: BoxDecoration(
                      border: Border.all(
                        color: Color.fromRGBO(33, 33, 33, 0.5),
                        width: 1,
                      ),
                      borderRadius: BorderRadius.circular(10),
                    ),
                    child: MultiSelectBottomSheetField<SpinnerMulti?>(
                      initialChildSize: 0.7,
                      decoration: BoxDecoration(color: Colors.transparent),
                      maxChildSize: 0.95,
                      title: Text("Angka"),
                      buttonText: Text(
                        "Angka",
                        style:
                            TextStyle(color: Color.fromRGBO(33, 33, 33, 0.7)),
                      ),
                      items: _itemsAngka,
                      searchable: true,
                      searchHint: "Cari",
                      buttonIcon: Icon(
                        Icons.add_circle_outline,
                        color: Color.fromRGBO(33, 33, 33, 0.5),
                      ),
                      cancelText: Text("Tutup"),
                      onConfirm: (values) {
                        setState(() {
                          _selectedAngka = values;
                        });
                      },
                      chipDisplay: MultiSelectChipDisplay(
                        decoration: BoxDecoration(
                          border: Border(
                            top: BorderSide(
                                width: 1.0,
                                color: Color.fromRGBO(33, 33, 33, 0.5)),
                          ),
                        ),
                        onTap: (item) {},
                      ),
                    ) // This trailing comma makes auto-formatting nicer for build methods.
                    ),
              ],
            ),
          ),
        ));
  }
}

class SpinnerMulti {
  final int id;
  final String name;

  SpinnerMulti({required this.id, required this.name});
}

Setelah semua langkah sudah kita lakukan,silahkan running project nya...


Sekian tutorial kali ini, Jangan sungkan untuk bertanya di kolom komentar di bawah jika mendapat  error....

 

Cara instalasi Framework Django

 Kali ini ketikanMD akan membuat tutorial yang sesuai dengan judulnya yaitu instalasi Framework django.

1. Pastikan kita sudah menginstall python, untuk mengecek dengan perintah python --version

2. Sekarang kita akan melakukan install PIP, PIP yaitu (PIP Install Packages) / Paket manager pada pemrograman python.

# apt install python3-pip python-dev

3. Melakukan verifikasi instalasi PIP.

$ pip3 -V


4. Selanjutnya kita akan membuat folder  di “~/ketikanMD/” dengan nama “django” untuk menampung project django kita.

5. membuat Env (pastikan sudah berada di dalam folder project) dengan Module yang digunakan untuk membuat Virtual Environments yaitu module venv, kegunaan Virtual environments untuk membuat sebuah environment yang terisolasi dari dunia luar. Sehingga, modul python apapun yang diinstall tidak mempengaruhi environment global, dan yang terpenting, project lainnya. 
$ python -m venv env
* Terlihat ada folder dengan nama env

6. masuk/mangaktifkan Virtual Environment
$ source env/bin/activate
* Terlihat ada tanda (env) setalah mengeksekusi perintah diatas
7. Melihat package yang sudah diinstall pip.

8. Melakukan upgrade pip
$ pip install --upgrade pip


9. Melakukan instalasi django  disini kita akan instalasi versi 2.2, disini bisa sesuaikan dengan versi django kebutuhan teman".
$ pip install Django==2.2

10. Mengecek instalasi paket django menggunakan pip

11. Sekarang kita akan membuat project django dengan nama project “ketikanMD” dengan perintah django-admin startproject ketikanMD, secara otomatis akan terbuat folder berdasarkan nama project yang sudah ditentukan yaitu ketikanMD.

12. Menjalankan project yang kita buat, pastikan kita masuk ke dalam folder project kita yaitu ketikanMD

$ python manage.py runserver


13. Buka browser dan masukkan url http://127.0.0.1:8000 (sesuaikan dengan tampilan tanda kotak merah).



Sekarang kita sudah berhasil menginstall django dan menjalankan project django

14. Untuk Keluar dari environment
$ deactive
* secara otomatis tanda (env) akan hilang

Semoga Berhasil