Saat bekerja dengan string di atribut tabel QGIS dan ingin mengambil teks tertentu dalam suatu kolom atau field di atibut QGIS kita bisa memanfaatkan banyak fungsi string salah satunya substr.
Sebagai contoh saya ingin melakukan join antara file excel/csv tentang data desa dengan menggunakan kode des BPS 1608010001 dengan 10 digit kode. Dan saya mendapatkan file shp untuk batas desa dari BIG dimana terdapat field dengan atribut 16.08.01.0001. Maka untuk melakukan join saya harus merubah kode kolom dari BIG menjadi seperti kode BPS.
Langkah yang di lakukan dengan menggunakan Open Field Calculator masukan kode
Dalam membuat website atau blog salah satu cara untuk membuat tampilan lebih menarik dan lebih memberikan informasi yang jelas adalah dengan menampilkan gambar. Dengan pertimbangan keamanan dan efisiensi ukuran penyimpan untuk gambar bisa menggunakan layanan cloud. Dalam hal ini salah satunya menggunakan Google Drive sebaga penyedia cloud untuk penyimpanan data. Misal kita simpan gambar-gambar untuk blog atau web kita kemudian kita link kan gambar tersebut dengan memanggil menggunakan tag html img.
Jika langsung dengan melinkan alamat gambar dari Google Drive maka gambar tersebut tidak akan langsung tampil. Sehingga untuk bisa menampilkan gambar tersebut perlu dilakukan langkah-langkah yaitu:
Buka Google Drive,
Upload gambar,
Klik kanan pada gambar pilih share atau bagikan,
Setelah tampil, rubah seting Akses Umum menjadi Siapa saja yang memiliki link,
Salin Link, misal kita dapat link: https://drive.google.com/file/d/1huTfLaQQVrusrwK-US_T1VRFW10pHJ4G/view
Masukan kode ke tag img dengan menambahkan kode https://drive.google.com/uc?export=view&id=[id_image]
Dan ganti [id_image] dengan id image di Google drive dalam hal ini 1huTfLaQQVrusrwK-US_T1VRFW10pHJ4G
Sekarang dengan sedikit perbedaan akan membuat aplikasi Django dan PostgreSQL di Windows.
Langkah yang dilakukan adalah dengan membuat virtual environment terlebih dahulu kemudian baru membuat kontainer dengan Docker. Hal ini dilakukan untuk lebih memahami persamaan dan perbedaan DOcker dengan virtual environment yang biasa dilakukan dalam pengembangan aplikasi Django.
Membuat Virtual Environment
Buka command prompt dan buat direktori kerja
mkdir dockertest
Masuk ke folder direktori kerja
cd dockertest
Buat virtual environment, misal dengan nama venv
python -m venv venv
Aktifkan virtual environment
cd venv/scripts
activate
Setelah virtual environment active dengan ditandai di promt (venv)... Install Djanggo versi terakhir 4,
python -m pip install Django~=4.0.0
Install psycopg2-binary
python -m pip install psycopg2-binary==2.9.3
Buat project Django, misal dengan nama django_project
django-admin startproject django_project .
Lakukan migrate
python manage.py migrate
Jalankan server
python manage.py runserver
Cek di browser dengan alamat http:127.0.0.1:8000, jika berhasil menampilkan halama aplikasi Djanggo maka langkah yang dilakukan berhasil.
Buat file requirements.txt yang berisi paket yang dibutuhkan dari aplikasi Django yang sudah dibuat
pip freeze > requirements.txt
Selanjutnya akan membuat kontainer dengan docker, maka matikan virtual environment.
deactivate
Membuat Docker
Buat file Dockerfile, masukan kode:
vim Dokerfile
Masukan kode kedalam dile Dockerfile:
#Pull base image
FROMpython:3.9
#SEt environment variable
ENVPIP_DISABLE_PIP_VERSION_CHECK1
ENVPYTHONDONTBYTECODE1
ENVPYTHONUNBUFFERED1
#Set work directory
WORKDIR/code
#Install dependecies
COPY./requirements.txt.
RUNpipinstall-rrequirements.txt
#Copy project
COPY..
Sebelum membangun image, buat file .dockerignore
vim .dockerignore
Masukan kode:
.venv
.git
.gitignore
Membangun docker,
docker build .
Membuat file docker-compose.yml
vim docker-compose.yml
Masukan kode, dengan catatan buat dulu database di PostgreSQL dan tentukan user dan password untuk akses ke database:
version: "3.9"
services:
db:
image: postgres
volumes:
- postgres_data:/var/lib/postgresql/data/
environment:
- POSTGRES_DB=postgres
- POSTGRES_USER=postgres
- POSTGRES_PASSWORD=password
web:
build: .
command: python manage.py runserver 0.0.0.0:8000
volumes:
- .:/code
ports:
- "8000:8000"
depends_on:
- db
volumes:
postgres_data:
Lakukan konfigurasi untuk seting database di file docker_project/settings.py
vim docker_project/settings.py
Masukin kode skrip di bagian DATABASES:
DATABASES ={
'default': {
'ENGINE': 'django.db.backends.postgresql',
'NAME': 'postgres',
'USER': 'postgres',
'PASSWORD': 'password',
'HOST': 'db',
'PORT': '5432',
}
}
Menjalankan Docker
docker-compose up
Setelah proses selesai, silahkan cek server di browser dengan memasukan alamat http://127.0.0.1:8000. Jika berhasil menampilkan tampilan halaman aplikasi Django maka langkah-langkah yang dilakukan berhasil.
Atau dengan cara lain dapat dilakukan dengan mengabung perintah build dan docker-compose up dengan cara:
docker-compose up -d --build
Setelah dicek server berlajan, untuk keluar dari tampilan service docker dengan cara tekan Ctrl + C
Selanjutnya akan membuat aplikasi dengan nama accounts, untuk membuat aplikasi untuk pengguna.
Membuat Apps aaccounts
Membuat App dengan nama accounts
docker-compose run web python manage.py startapp accounts
atau
docker-compose exec web python manage.py startapp accounts
Membuat CustomUser dengan menggunakan AbstractUser, edit file #accounts/models.py
from django.db import models
from django.contrib.auth.models import AbstractUser
# Create your models here.
class CustomUser(AbstractUser):
pass
Tambahkan App accounts di bagian INSTALLED_APPS pada file #django_project/settings.py
INSTALLED_APPS = [
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
#local
'accounts.apps.AccountsConfig', #tambahkan
]
Tambahkan juga di bagian bawah file #django_project/settings.py
AUTH_USER_MODEL = 'accounts.CustomUser'
Lakukan makemigrations
docker-compose exec web python manage.py makemigrations accounts
output:
Migrations for 'accounts': accounts/migrations/0001_initial.py - Create model CustomUser
Lakukan migrate
docker-compose exec web python manage.py migrate
output:
Operations to perform:
Apply all migrations: accounts, admin, auth, contenttypes, sessions
Running migrations:
Applying contenttypes.0001_initial... OK
Applying contenttypes.0002_remove_content_type_name... OK
Applying auth.0001_initial... OK
Applying auth.0002_alter_permission_name_max_length... OK
Applying auth.0003_alter_user_email_max_length... OK
Applying auth.0004_alter_user_username_opts... OK
Applying auth.0005_alter_user_last_login_null... OK
Applying auth.0006_require_contenttypes_0002... OK
Applying auth.0007_alter_validators_add_error_messages... OK
Applying auth.0008_alter_user_username_max_length... OK
Applying auth.0009_alter_user_last_name_max_length... OK
Applying auth.0010_alter_group_name_max_length... OK
Applying auth.0011_update_proxy_permissions... OK
Applying auth.0012_alter_user_first_name_max_length... OK
Applying accounts.0001_initial... OK
Applying admin.0001_initial... OK
Applying admin.0002_logentry_remove_auto_add... OK
Applying admin.0003_logentry_add_action_flag_choices... OK
from .formsimport CustomUserCreationForm, CustomUserChangeForm
# Register your models here.
CustomUser = get_user_model()
classCustomUserAdmin(UserAdmin):
add_form = CustomUserCreationForm
form = CustomUserChangeForm
model = CustomUser
list_display = [
"email",
"username",
"is_superuser",
]
admin.site.register(CustomUser, CustomUserAdmin)
Buat superuser untuk admin, misal dengan username: postgresqladmin, email: postgresqladmin@email.com, dan password: testpass123.
docker-compose exec web python manage.py createsuperuser
Lalu coba di browser alamat admin http://127.0.0.1:8000/admin, login dengan user yang tadi dibuat.
Silahkan klik di menu ACCOUNTS/Users, dengan menu tersebut bisa melihat, merubah user dengan menampilkan inputan username dan password serta kemudian menambahkan email dan status user. Silahkan dicoba-coba.
Melakukan test Aplikasi
Setelah dibuat fungsional baru pada aplikasi accounts, selanjutnya dilakukan testing dengan menggunakna unit testing dari framework Django. Testing dilakukan karena meupakan hal penting yang harus dilakukan seperti yang disampaikan oleh pendiri Django yaitu Jacob Kaplan-Moss bahwa "Kode program tanpa dilakukan test adalah sebuah kerusakan dalam desain". Dalam Django terdapat dua tipe test yaitu:
Unit test kecil, cepat, dan terisolasi untuk sebagian fungsi dalam aplikasi.
Test yang terintegrasi dimana besar, lambat, dan unit test dilakukan pada keseluruhan aplikasi.
Dalam contoh ini dilakukan unit test sekala kecil pada bagian fungsi yang baru dibuat. Langkah yang dilakukan adalah:
Edit file #accounts/test.py
vim accounts/tests.py
Dan masukan kode di file #accounts/test.py:
#accounts/test.py
fromdjango.contrib.authimportget_user_model
fromdjango.testimportTestCase
classCustomUserTests(TestCase):
deftest_create_user(self):
User = get_user_model()
user = User.objects.create_user(username="wawanhn", email="wawanhn@email.com", password="testpass123")
Buat folder templates di Direktory kerja dengan nama templates
mkdir templates
Buat file html di folder templates dengan nama _base.html dan home.html
vim templates/_base.html
vim templates/home.html
File _base.html cara penulisan didepan kata base ada underscore ini hanya merupakan kebiasaan yang menunjukan bahwa file ini akan digunakan/extends untuk file html di seluruh aplikasi (diwariskan). Buat kerangka standar file html untuk file #templates/_base.html
<!-- templates/_base.html -->
<!DOCTYPE html>
<html>
<head>
<metacharset='utf-8'>
<title>{% blocktitle %} Toko Buku {% endblocktitle %}</title>
</head>
<body>
<divclass='container'>
{% blockcontent %}
{% endblockcontent %}
</div>
</body>
</html>
Masukan kode program pada file #templates/home.html
<!-- templates/home.html -->
{% extends'_base.html' %}
{% blocktitle %} Home {% endblocktitle %}
{% blockcontent %}
<h1>Tihs is our home page.</h1>
{% endblockcontent %}
Selanjutnya buat routing alamat web index atau link ke halaman saat pertama kali aplikasi dibuka, tambahkan navigasi ke halaman utama dengan mengedit file #django_project/urls.py
fromdjango.contribimportadmin
fromdjango.urlsimportpath, include #tambahkan ini
urlpatterns = [
path('admin/', admin.site.urls),
path('', include('pages.urls')), #tambahkan ini
]
Buat routing di aplikasi pages, yaitu file #pages/urls.py
vim pages/urls.py
Tambahkan kode:
#pages/urls.py
fromdjango.urlsimportpath
from .viewsimport HomePageView
urlpatterns = [
path('', HomePageView.as_view(), name='home'),
]
Edit tampilan view di file #pages/views.py
#pages/views.py
fromdjango.shortcutsimportrender
fromdjango.views.genericimportTemplateView
# Create your views here.
classHomePageView(TemplateView):
template_name = 'home.html'
Untuk melihat perubahan karena sudah menambahkan app pages dan routing, matikan docker dan jalankan lagi
docker-compose down
docker compose up -d
Buka alamat http://127.0.0.1:8000/ maka akan menampilkan tampilan halaman home.html
Dari info diatas dilakukan 4 tes karena terdapat 2 tes sebelumnya untuk Custom User Model. Dan jika menginginkan test hanya untuk untuk aplikasi pages maka perintahnya:
docker-compose exec web python manage.py test pages
Docker adalah layanan yang menyediakan kemampuan untuk mengemas dan menjalankan sebuah aplikasi dalam sebuah lingkungan terisolasi yang disebut dengan container. Dengan adanya isolasi dan keamanan yang memadai memungkinkan kamu untuk menjalankan banyak container di waktu yang bersamaan pada host tertentu.
Docker adalah software open-source yang digunakan untuk meluncurkan (deploy) aplikasi di dalam container virtual. Dengan container virtual ini (containerization), aplikasi bisa dijalankan secara terisolasi di environment yang kompleks sehingga tidak menimbulkan masalah pada environment lainnya.
Docker ini diperkenalkan pada tahun 2013 oleh Solomon Hykes pada acara PyCon. Beberapa bulan setelahnya docker secara resmi diluncurkan, tepatnya pada tahun 2014.
Cara Kerja Docker
Cara kerja Docker adalah dengan menciptakan sebuah ruang isolasi untuk meluncurkan aplikasi atau layanan. Ruang isolasi ini disebut Container, seperti ‘wadah’ yang akan menampung suatu benda agar tidak tumpah ke area lain.
Penjelasan Singkat tentang Container Docker
Docker container adalah sebuah paket software yang berisi semua dependensi yang diperlukan untuk menjalankan aplikasi tertentu. Semua konfigurasi dan instruksi untuk memulai atau menghentikan container diperintahkan oleh sebuah komponen yang disebut ‘image Docker’.
Container ini menghindarkan user dari masalah kompatibilitas yang mungkin terjadi ketika menjalankan aplikasi di beberapa sistem yang berbeda. Sebab, dengan container ini, software akan berjalan dengan cara yang sama di environment mana pun.
Kapan pun image dijalankan user, container baru akan dibuat.
Pengelolaan container juga mudah berkat bantuan Docker API atau command line interface (CLI). Apabila beberapa container diperlukan, user bisa mengontrolnya dengan Docker compose tool.
Selain container yang baru saja dibahas, arsitektur Docker terdiri dari empat komponen utama, yaitu:
Client Docker – komponen utama untuk membuat, mengelola, dan menjalankan aplikasi dalam container. Client Docker adalah metode utama untuk mengontrol server Docker melalui CLI seperti Command Prompt (Windows) atau Terminal (macOS, Linux).
Server Docker – juga disebut daemon Docker. Server Docker menunggu permintaan REST API yang dibuat oleh client Docker serta mengelola image dan container.
Image Docker – komponen yang memerintahkan server Docker terkait persyaratan tentang cara container Docker dibuat. Image bisa didownload dari website seperti Docker Hub. Anda juga bisa membuat custom image, yaitu dengan membuat Dockerfile dan meneruskannya ke server. Perlu diketahui bahwa Docker tidak menghapus image yang tidak digunakan, jadi user harus menghapus data image sendiri agar tidak menumpuk.
RegistryDocker – aplikasi sisi server open-source yang digunakan untuk menghosting dan mendistribusikan image Docker. Registry sangat berguna untuk menyimpan image secara lokal dan mengelolanya sepenuhnya. Atau, user bisa mengakses Docker Hub yang tadi disebutkan, yang merupakan repositori image Docker terbesar di dunia.
Fungsi Docker
Docker memiliki banyak fungsi untuk berbagai contoh penerapan. Di bagian ini, kami akan membahas fungsi Docker dan tiga contoh umum penggunaannya.
Mencoba Software Baru
Dengan Docker, Anda bisa mencoba software baru tanpa harus menginstalnya secara manual. Docker juga berguna kalau Anda memerlukan software yang harus disiapkan cepat.
Sebagai contoh, proses setup server MySQL bisa memakan waktu lama. Nah, dengan Docker, Anda hanya memerlukan satu perintah melalui CLI untuk melakukannya.
Mempelajari CLI
Meskipun bisa berjalan pada semua jenis perangkat, tadinya Docker dirancang khusus untuk Linux. Jadi, kami menyarankan agar Anda mengonfigurasinya pada sistem yang berbasis Linux.
Dengan begitu, Anda pun bisa mempelajari administrasi sistem, command line interface, dan scripting lebih lanjut dengan lebih baik.
Mengurangi Risiko Insiden
Apabila terjadi kegagalan hardware, user bisa segera mengembalikan perubahan apa pun yang dibuat kalau tersedia image Docker.
User hanya perlu mengimpor backup image ke perangkat baru, lalu Docker akan membereskan sisanya. Backup image Docker juga berguna saat developer ingin melakukan rollback ke versi lama software tertentu karena adanya bug atau masalah kompatibilitas.
Kelebihan dan Kekurangan Docker
Nah, setelah Anda memahami apa itu Docker dan fungsinya, sebaiknya cari tahu juga kelebihan dan kekurangannya. Meskipun memiliki banyak manfaat, Docker juga memiliki kelemahan dalam beberapa aspek. Di bagian ini, kami akan membahas kelebihan dan kekurangan software ini.
Kelebihan Docker
Portabilitas – daya tarik utama Docker adalah portabilitasnya. Docker memungkinkan user membuat atau menginstal aplikasi kompleks di perangkat, dan aplikasi tersebut dijamin bisa berjalan. Docker container memiliki semua yang dibutuhkan aplikasi, hanya dengan sedikit atau bahkan tanpa input dari user.
Automasi – dengan bantuan cron job dan Docker container, user bisa mengotomatiskan pekerjaan dengan mudah. Automasi membantu developer menghindari tugas yang membosankan dan repetitif, serta menghemat waktu.
Komunitas – Docker memiliki channel Slack khusus, forum komunitas, dan ribuan kontributor di website developer seperti StackOverflow. Terlebih lagi, ada lebih dari 9 juta image container yang dihosting di Docker Hub.
Kekurangan Docker
Kecepatan – meskipun akan lebih cepat untuk menjalankan aplikasi melalui Docker container daripada di VM, Docker masih lebih lambat dibandingkan dengan menjalankan aplikasi secara native pada server fisik.
Kemudahan penggunaan – Docker tidak dimaksudkan untuk menjalankan aplikasi yang memerlukan Graphical User Interface (GUI). Artinya, user harus familiar dengan baris perintah/command line, dan melakukan semua tindakan di sana. Alur belajar yang rumit, keterbatasan OS tertentu, dan frekuensi update yang lumayan menjadikan Docker sulit untuk dipahami. Bahkan, ketika Anda merasa sudah memahami Docker luar dalam, masih ada orkestrasi yang perlu dipertimbangkan, yang menjadikannya makin kompleks.
Keamanan – Docker berjalan pada sistem operasi host, yang berarti software berbahaya apa pun yang bersembunyi di balik containernya bisa sampai ke mesin host.
Docker vs Virtual Machine
Meski Docker dan Virtual Machine (VM) memiliki fungsi yang serupa, ada perbedaan dari keduanya dalam hal performa, dukungan OS, dan portabilitas.
Perbedaan Docker dan Virtual Machine adalah, container Docker menggunakan OS yang sama dengan host, sedangkan VM memiliki OS tamu yang berjalan dari sistem host. Metode operasi ini memengaruhi performa, kebutuhan hardware, dan dukungan OS.
Agar lebih mudah, simak detail perbandingannya pada tabel di bawah ini.
Docker
Virtual Machine
OS
Menggunakan OS yang sama antar-container
OS baru untuk setiap VM
Keamanan
Kurang aman karena OS dan kernel digunakan bersama
Lebih aman karena VM tidak berbagi sistem operasi
Performa
Performa cepat bahkan dengan beberapa container
Makin banyak VM, performa makin kurang stabil
Waktu booting
Cepat (dalam hitungan detik)
Lambat (dalam hitungan menit)
Memori
Ringan
Memerlukan banyak memori
Kebutuhan ruang penyimpanan
Biasanya dalam ukuran megabyte
Biasanya dalam ukuran gigabyte
Portabilitas
Mudah diluncurkan di berbagai lingkungan
VM sulit di-port ke sistem lain
Meskipun teknologi container Docker lebih unggul pada hampir semua aspek, VM lebih aman karena sistem operasinya tetap terpisah (independen) dari hardware.
Oke kali ini kit acoba akan membuat aplikasi Django dan PostgreSQL di Windows dengan menggunakan Docker, langkah-langkahnya sebagai berikut:
Buka command prompt dan tempatkan di direktori yang telah ditentukan
Buat direktori kerja, misal dengan nama djangodockertest. Di command promt masukan perintah:
mkdir djangodockertest
Masuk ke direktori kerja yang tadi dibuat
cd djangodockertest
Buat file baru dengan nama requirements.txt untuk menyimpan daftar library atau paket aplikasi yang akan diinstal yang dibutuhkan Django. Misal dalam contoh ini saya menggunakan vim sebagai editor teks seperti yang ada di Linux atau Mac. Untuk mendonload aplikasi silahkan dapatkan disini
vim requirements.txt
Masukan daftar aplikasi
Django~=4.0.0
psycopg2-binary==2.9.3
Buat file dengan nama Dockerfile
vim Dockerfile
Masukan kode berikut
FROM python:3
ENV PYTHONUNBUFFERED 1
WORKDIR /code/
COPY requirements.txt /code/
RUN pip install -r requirements.txt
COPY . /code/
Buat file dengan nama docker-compose.yml
vim docker-compose.yml
Masukan kode
version: "3.9"
services:
db:
image: postgres
volumes:
- ./data/db:/var/lib/postgresql/data
environment:
- POSTGRES_DB=postgres
- POSTGRES_USER=postgres
- POSTGRES_PASSWORD=password
web:
build: .
command: python manage.py runserver 0.0.0.0:8000
volumes:
- .:/code
ports:
- "8000:8000"
depends_on:
- db
Buat project baru Django, misal dengan nama djangodockertest
vim docker-compose run web django-admin startproject djangodockertest
Ubah setingan Database di file settings.py yang terdapat di folder djangoprojecttest. dengan catatan di komputer lkal sudah diinstal PostgreSQL dan buat database tertentu.
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.postgresql',
'NAME': 'postgres', #sesuaikan
'USER': 'postgres', #sesuaikan
'PASSWORD': 'password', #sesuaikan
'HOST': 'db', #sesuai setingan di docker-compose.yml
'PORT': 5432,
}
}
Buat makemigrations
docker-compose run web python manage.py makemigrations
Lakukan migrasi
docker-compose run web python manage.py migrate
Jalankan perintah docker-compose up
docker-compose up
Test buka server dengan buka di browser dan masuk ke 127.0.0.1:8000, jika berhasil maka akan tampil halaman awal aplikasi Django.
Selanjutnya, lakukan langkah-langkah untuk membuat user admin dan lain sebagainya.
Jika ingin mematikan service Docker, maka ketikan perintah:
docker-compose down
Demikian contoh sederhana cara menggunakan Docker untuk membuat aplikasi Django dan PostgreSQL, semoga bermanfaat. @wawanhn