Fakultas Ilmu Komputer UI

Commit 337576c9 authored by YOGI LESMANA  SULESTIO's avatar YOGI LESMANA SULESTIO
Browse files

Add blog

parent c8e96da3
Pipeline #13527 passed with stages
in 3 minutes and 18 seconds
---
layout: post
title:
date: 2019-04-16 10:00:00 +0700
author: yogi
---
Pada blog minggu ini, saya akan menceritakan pengalaman saya mengenai MRCP, bukan Magnetic Resonance Cholangiopancreatography, melainkan:
<!--more-->
Migration, Refactoring/Design Pattern, Clean Code, Persona
**Refactoring**
Salah satu teknik disiplin untuk merestrukturisasi bagian kode yang sudah ada, mengubah struktur internalnya tanpa mengubah perilaku eksternalnya.
Dengan melakukan Refactoring, kita dapat mengurangi biaya perubahan.
Design Pattern adalah solusi dalam permasalahan yang timbul dalam desain perangkat lunak. Salah satu pattern yang kami gunakan adalah Factory Pattern
Factory Method adalah pola desain creational yang berkaitan dengan pembuatan objek. Dalam pola ini, kita membuat objek tanpa memaparkan creation logic ke klien dan
klien menggunakan interface yang sama untuk membuat tipe objek yang baru. Idenya adalah menggunakan static-member function yang membuat dan mengembalikan instance,
menyembunyikan rincian modul kelas dari pengguna
Berikut adalah contoh penggunaan Factory Pattern:
```
class ServerFactory(factory.django.DjangoModelFactory):
ip = factory.Faker('ipv4')
name = factory.Faker('first_name')
location = factory.Faker('first_name')
class Meta:
model = models.Server
```
**Persona**
Penerapan persona dalam proyek
(/assets/images/2019-04-15-uxsona/login.png)
Desainnya sederhana sehingga pengguna internal bisa masuk tanpa harus mengklik tombol-tombol lagi.
(/assets/images/2019-04-15-uxsona/dashboard.png)
Menampilkan statistik sehingga dapat dilihat oleh pengguna internal.
(/assets/images/2019-04-15-uxsona/servers.png)
Menampilkan daftar server yang diserang untuk mengetahui server mana saja yang menjadi sasaran.
(/assets/images/2019-04-15-uxsona/logkecil.png)
Menampilkan detail dari log, di bagian kiri diberikan sebuah kotak yang diberi nama filter log untuk memperjelas dan memudahkan dalam pencarian log tertentu
Apabila lognya ditekan, maka akan muncul keterangan mengenai log yang bersangkutan supaya dapat dipelajari lebih lanjut.
(/assets/images/2019-04-15-uxsona/logs.png)
**Clean Code**
Menulis kode adalah hal yang mudah, akan tetapi kode yang lebih mudah dibaca oleh manusia sulit untuk dilakukan. Ketika kode ditulis dalam sehingga dapat diinterpretasikan dengan lancar, saat itulah kode tersebut dikatakan bersih.
Berikut adalah contoh clean code dalam testing:
```
class ServersUnitTest(TestCase):
def setUp(self):
self.server = Server.objects.create(ip="1.1.1.1", name="simantap")
def test_server_has_attribute_ip(self):
self.assertTrue(hasattr(self.server, 'ip'))
def test_server_has_attribute_name(self):
self.assertTrue(hasattr(self.server, 'name'))
def test_server_has_attribute_location(self):
self.assertTrue(hasattr(self.server, 'location'))
```
**Migration**
Data migration adalah proses penyiapan dan pengubahan data serta perpindahannya secara permanen dari suatu tempat ke tempat lain.
Data migration adalah pertimbangan utama dalam implementasi dan peningkatan sistem. Biasanya dilakukan untuk otomasi data.
Data migration terjadi karena berbagai hal seperti penggantian server atau alasan pemeliharaan.
Berikut adalah contoh penerapan migration ketika penambahan field location:
```
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
('servers', '0005_auto_20190319_1352'),
]
operations = [
migrations.AddField(
model_name='server',
name='location',
field=models.CharField(blank=True, max_length=255, null=True),
),
migrations.RunPython(create_data),
]
```
\ No newline at end of file
Supports Markdown
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment