Powered by Blogger.
facebook twitter instagram pinterest bloglovin Email

Yasya Indra Blog

Éclairage et ingénierie

 

MongoDB adalah database berbasis document dimana kalian bisa menyimpan data apapun tanpa adanya skema relasional

Perbedaan yang mencolok dengan MySQL adalah, di MongoDB kalian tidak perlu capek capek menentukan skema database. Tidak perlu memberikan nama disetiap field, tipe datanya, dan berapa karakternya. Sedangkan MongoDB kita memiliki kebebasan untuk memasukkan data dengan field yang beragam. 

MongoDB bisa kalian instal di lokal komputer kalian secara on-premise. Atau bisa juga menggunakan layanan cloud

Ada beberapa case atau keperluan dimana kita harus menggunakan MongoDB secara on-premise. Yaitu terkadang kita harus menjalankan shell untuk development database dan collectionnya. Sedangkan kita tak mau komputer kita terbebani dengan banyak model database. Sudah punya MySQLI di localhost/XAMPP kenapa harus ada MongoDB lagi? Tentu demikian itu akan menjadikan resource komputer kita boros

Maka dari itu daripada menjalankannya di local, kenapa tidak kita coba saja lewat Docker. Bukan berarti cara ini meringankan beban komputer kita, namun kita mencari jalan yang lebih praktis dan kita terkadang perlu ada isolasi antar sistem host dan container, sehingga sistem berjalan lebih aman dan stabil. 

Selain itu, cara ini bisa menambah wawasan kita penggunaan Docker. Yang menurut Programmer Zaman Now, programmer jaman sekarang harus ngerti Docker. Karena dalam pembuatan program terkadang kita harus berjibaku dengan proses development dan production.

Saya disini kita akan belajar menginstall MongoDB pada Docker, mulai dari mendownload image, membuat container, meng-ekspos port, menjalankan, dan menghubungkannya dengan package mongoose dan memasukkan beberapa data di dalamnya

1. Pull Image MongoDB dari Docker Hub

download image dari Docker Hub dengan perintah berikut
docker pull mongo:4.4.6
 

2. Buat Container dari Image MongoDB

Container image harus memiliki nama dan port yang sudah diexpose. Tujuannya dengan port tersebut maka bisa digunakan oleh aplikasi kita secara eksternal, bukan internal antar container saja
Lakukan itu dengan perintah
docker container create --name=mongoserver -p 8080:8181 mongo:4.4.6
 

3. Ekspos Port

Kita telah menambkan port pada container tersebut. Ada 8 digit yang dipisahkan dengan tanda titik dua. Apa maksudnya?
  • 8080, merupakan port yang bisa kita gunakan antar container secara internak saja, apabila kita menggunakannya/menghubungkannya dengan aplikasi di luar Docker, maka takkan bisa
  • 8181, merupakan port yang bisa gunakan layaknya aplikasi on-premise yang benar benar terinstal dalam aplikasi kita, artinya port ini bisa diakses secara eksternal

4. Test Connection Port dengan Robo 3T

Untuk membuktikannya kita akan mencoba Mongodb dari Docker ini dengan aplikasi Robo 3T. Robo 3T itu semacam aplikasi phpmyadmin tapi untuk database berbasis document bukan relasional. 

Caranya install Robo3T
Lalu masukkan localhost dan port 8181, seperti gambar dibawah

Ingat, kenapa kita harus menggunakan 8181? Karena 8181 adalah port yang bisa diakses secara eksternal

Jika berhasil terhubung, maka kalian bisa melihat beberapa collection yang berada dalam database MongoDB



5. Hubungkan MongoDB dari Container dengan module Mongoose

 Kalian harus membuat driver untuk menghubungkan mongodb dengan komputer kalian
Namun sebelumnya kalian harus mongoose


dengan perintah
npm i mongoose

Setelah itu buat file db.js dan contact.js dalam folder berisi kode dibawah

 

5. Insert Beberapa Data

 Maka kita bisa melihat data berhasil dimasukkan


Kesimpulan

Kira kira begitulah cara menggunakan MongoDB dari Docker untuk keperluan development tentu setelah ini kita bisa saja mem-build aplikasi kita kedalam image dan mendeploynya ke dalam container di VPS. Mungkin hal itu bisa saya bahas kapan kapan lagi


Share
Tweet
Pin
Share
No comments

 

Jika pernah menjumpai error seperti ini

Maka kalian tidak sendiri. Saya pun pernah mengalaminya. Error ini terjadi ketika kalian tidak bisa mengirim data lewat POST untuk diproses pada express.js

Hal yang harus ditangani disini adalah kita supaya menambahkan middlewar 

Apa Itu Middleware?

Peranti tengah atau Middleware adalah perangkat lunak komputer yang menyediakan layanan bagi aplikasi perangkat lunak yang tersedia di luar sistem operasi. Peranti tengah dapat digambarkan sebagai "lem perangkat lunak"

 Artinya sebelum data dimasukkan dan dikeluarkan dari backend sehingga bisa ditampilkan di halaman browser kita, ada semacam software atau API yang ada di tengah tengahnya. Supaya data yang dikirimkan bisa sesuai dengan  yang diinginkan

Dalam kasus ini adalah data data dari form html yang ingin disimpan dalam sebuah file berekstensi object

Data data dari form itu tak bisa dibaca oleh nodejs secara mentah mentah. Harus ada semacam aplikasi atau software kecil (middleware) yang menjadi penengah agar bisa diterjemahkan

Middleware itu disebut body-parser. Kalian bisa melihatnya sendiri pada situs dokumentasinya 

Cara menggunakannya kalian harus menginstalnya dulu dengan perintah

npm install body-parser

Setelah itu kalian require dan simpan dalam variabel

const bodyParser = require("body-parser");

Lalu masukan sebagai parameter pada fungsi. app.use( ). sehingga akan code akan tampil seperti ini

app.use(bodyParser.urlencoded({extended:true}))

Setelah itu kalian bisa mencoba mengirimkan data lewat form yang kalian inginkan



Share
Tweet
Pin
Share
No comments

 

Saat ini saya sedang mengerjakan project untuk menggubah aplikasi dari bahasa PHP 5 ke PHP 7.

Namun kendala terbesarnya adalah aplikasi versi jadul ini masih menggunakan struktur per halaman. Bukan MVC. 

Wacana untuk mengubah aplikasi jadul ini ke dalam versi MVC sudah ada sejak pertama kali saya melihat susunan source-code nya. Namun saat itu saya menganggap ini semua merupakan hal yang sulit dan tak mungkin bisa saya pecahkan

Sehingga saya memutuskan untuk lebih baik memperbaiki setiap error yang bermunculan

Penyebab errornya beragam. Mulai dari constant yang tak terhubung, built-in function yang sudah kadar luarsa, dan variabel yang tak dideklerasikan secara global

Satu persatu bisa saya atasi dengan segala cara. Dan aplikasi berjalan sebagaimana seharusnya


 

Sewaktu saya kumpulkan ke client. Ternyata, client saya kecewa karena ternyata source code tersebut masih dengan struktur yang perisi sama. Saya malu. Dan saya akhirnya berubah pikiran untuk menggubah aplikasi ini ke struktur lain, yaitu MVC

Mungkin keputusan itu seakan akan didasari sekedar aplikasi saya terlihat berbeda. Namun, percayalah ketika saya sedikit demi sedikit mengubahnya menjadi MVC. Ternyata berhasil, meskipun saya juga masih bingung bagaimana menyesuaikan mana dulu yang saya atur. Apakah index halaman pertama, atau koneksi ke database

Entahlah. Yang pasti disini saya akan memberikan tips bagaimana jika kalian menghadapi aplikasi dengan struktur jadul seperti diatas

Apa Itu Page-Based App?

Page based application uses pageViewController that switches pages while swiping just like turn pages of a book. single view application creates a single view controller and its view

Adalah aplikasi yang menggunakan controller halaman perview untuk mengubah halaman layaknya buku, yang mana setiap aplikasi view menciptakan sebuah controller baru dan tampilannya

Apa Itu MVC?

Model–view–controller is a software design pattern commonly used for developing user interfaces that divides the related program logic into three interconnected elements. This is done to separate internal representations of information from the ways information is presented to and accepted from the user


Langkah pertama untuk mengubahnya adalah dengan menyusun struktur aplikasi pada folder kita. Dimulai dari app dan public

app berisi  folder core, views, controllers, dan models. Sedangkan public berisi folder img, css, js, dan file index.php

Sedangkan aplikasi dengan page based memiliki struktur folde yang lebih kompleks



Lalu bagaimana cara saya mengubah aplikasi dari MVC ke Page Based App yangs seribet itu?

Caranya adalah dengan membagi antara views dan model.

Sedangkan controller saya khususkan hanya menangani model dan view. Dan tak menangani apapun

Segala function yang berada dala kumpulan class pada struktur aplikasi jadul tersebut akan saya distribusikan menjadi Object pada struktur MVC. Dengan cara menjadikan setiap functionnya adalah file, dan berisi class dan beberapa method

Pasti ada error yang mendera saya selama saya menerjemahkan struktur file ini. Biasanya error berupa built-in function yang sudah kadal luarsa, dan beberapa file yang tak terkoneksi satu sama lain

Built-in function yang sudah kadal luarsa akan saya carikan alternatifnya di internet (jika ada) atau membiarkannya kosong dulu sementara waktu

Tak hanya itu, error berupa constant  yang tak terbaca. Bisa built-in function atau constant yang kita definisikan sendiri pun ada beberapa yang tak terbaca. 

Aplikasi jadul dengan basis Page Based, memiliki file tersendiri dan mengkoneksikannya kepada beberapa file yang membutuhkan dengan requirce_once. Namun hal tersebut ada yang tak berjalan sebagaimana mestinya sehingga saya harus mendefinisikannya kembali pada file tersebut

Contoh file class pada aplikasi Page Based yang berada dalam file common_class.php

 

common_class.php memiliki beberapa class di dalamnya. Termasuk messageStack, toolbar dan lain sebagainya

Lalu saya ubah setiap classnya menjdi beberapa file terpisah dalam folder model

 


Yang selanjutnya file file ini akan menjadi model komunikasi data yang diproses melalui controller. 

Kesimpulan

Segala hal yang saya lakukan dalam proses ini masih mengalami trial and error. Namun, dengan cara ini setidaknya berhasil menyelesaikan beberapa hal seperti, menujukkan tampilan web dengan BASEURL

Kalian bisa melihat sourcecode project tersebut yang mana saat ini sedang saya kerjakan

https://github.com/yasyaindra/phreebooks-but-php8

Share
Tweet
Pin
Share
No comments

 

MVC memiliki kepanjangan Model, View, Controller. Sebuah konsep pemograman dimana kita membagi proses menjadi tiga bagian. 

Model, berfungsi untuk mengolah fungsi seperti mengambil data dari database, mengambil data dari API dan lain sebagainya

View, berfungsi untuk menampilkan tampilan web yang dibangun menggunakan HTML/CSS/Javascript

Controller, berfungsi untuk mengarahkan url/routing sehingga aplikasi bisa menampilkan data dan memproses data seperti yang kita inginkan

Hal pertama yang harus kita lakukan adalah membuat struktur folder yaitu

app

berisi folder core, controllers, views, dan models. file init.php dan .htaccess

 

init.php. merupakan file yang akan mengeksekusi file file penting sehingga segala script berisi class bisa saling terhubung secara inheritance

/app/.htaccess, adalah file yang digunakan untuk mengatur konfigurasi server sehingga tulisan index di url tak perlu lagi dicantumkan

jangan lupa juga untuk membuat file App.php dalam folder core. File ini akan berisi construct, hal hal yang akan dieksekusi saat pertama kali web kita mulai

 Sebagai contoh saya akan menggunakan isi sederhana, yaitu web kita akan memunculkan tulisan 'Hello world' di dalamnya



public

berisi folder css, js. File index.php dan .htaccess



index.php. adalah file berisi instansiasi class app dalam file init.php. instansiasi tersebut tersimpan dalam sebuah variabel $app

.htaccess, memiliki fungsi yang sama seperti  .htaccess pada folder app. namun disini variabel global GET $url disembunyikan dari url


maka tampilan web kita akan muncul seperti ini



Langkah Selanjutnya

Cara Membuat Aplikasi MVC Dengan PHP. #2 Routing

Share
Tweet
Pin
Share
No comments

 


Ketika kalian mempunyai script aplikasi ada saat dimana kita ingin menjalankannya di container docker kita.

Kali ini saya akan memberi tahu caranya. 

Pertama. jalankan container kalian


 

Misalkan saya ingin menyalin file ke /usr/local/apache2/htdocs maka kita harus memasukkan perintah docker cp file-kalian id-image:/htdocs


id-image, bisa kalian temukan dengan perintah docker ps

 


file-kalian, pastikan kalian sudah berada dalam lokasi folder file tersebut

 Lihat terminal container. Maka file berhasil disalin



 


Share
Tweet
Pin
Share
No comments
Newer Posts
Older Posts

About me

About Me

Techbros Writer. Educactor, you name it

Follow Us

  • instagram
  • youtube

Categories

Materi Kuliah Buku Internet Stuff

recent posts

Sponsor

Blog Archive

  • March 2025 (4)
  • February 2025 (1)
  • November 2024 (3)
  • October 2024 (1)
  • January 2024 (1)
  • December 2023 (12)
  • November 2023 (9)
  • October 2023 (1)
  • September 2023 (3)
  • August 2023 (14)
  • July 2023 (3)
  • June 2023 (11)
  • May 2023 (3)
  • April 2023 (1)
  • March 2023 (1)
  • February 2023 (8)
  • January 2023 (6)
  • December 2022 (3)
  • November 2022 (2)
  • October 2022 (3)
  • September 2022 (3)
  • August 2022 (1)
  • July 2022 (1)
  • June 2022 (1)
  • May 2022 (1)
  • March 2022 (4)
  • February 2022 (8)
  • January 2022 (8)
  • December 2021 (4)
  • November 2021 (11)
  • October 2021 (6)
  • August 2021 (9)
  • July 2021 (5)
  • June 2021 (5)
  • May 2021 (4)
  • April 2021 (4)
  • March 2021 (6)
  • February 2021 (2)
  • January 2021 (7)
  • December 2020 (5)
  • November 2020 (2)
  • October 2020 (5)
  • September 2020 (6)
  • July 2020 (1)
  • June 2020 (1)
  • May 2020 (6)
  • March 2020 (1)
  • January 2020 (3)
  • December 2019 (3)
  • November 2019 (12)
  • October 2019 (8)
  • September 2019 (6)
  • August 2019 (8)
  • July 2019 (6)
  • June 2019 (3)
  • May 2019 (8)
  • April 2019 (2)

Report Abuse

Created with by ThemeXpose