Selamat Datang di blog sederhana saya,Semoga apa yang Kalian Inginkan dapat terpenuhi disini.

Menggunakan Doctrine di Symfony 4

Oke lanjut lagi tulisan saya tentang Framework Symfony, kali ini saya lanjutkan membahas tentang penggunaan doctrine untuk melakukan operasi ke database. Untuk membaca tulisan saya sebelumnya mengenai controller, bisa di baca di sini : https://catatan-pemrograman.blogspot.com/2018/09/membuat-halaman-di-symfony-4.html.

Sekilas tentang ORM

ORM / Object Relation Mapping adalah teknik mengkombinasikan / menselaraskan antara database yang RDBMS yang kebanyakan adalah database relasional yang berbasis relasi antar tabel ke dalam pemrograman berbasis objek / Object Oriented atau lebih jelasnya bisa dibaca (di sini). ORM digunakan untuk menjembatani antara pemrograman relasional dengan pemrograman objek. Saat ini ada banyak ORM yang sudah lazim digunakan orang yang biasanya sudah menjadi default framework. Contoh kalau di PHP ada active record yang dipakai sama Code IgniterEloquent yang dipakai sama Laravel, dan Doctrine sama Propel yang dipakai sama Symfony. 

Di Symfony 4, secara default kita belum menginstall ORM berbeda dengan Symfony versi sebelumnya yang secara default kita sudah lengkap dengan ORM Doctrine. Untuk SYmfony 4 kita bisa melakukan instalasi manual menggunakan composer untuk menambahkan doctrine di project symfony 4 yang sedang anda buat. 

Instalasi Doctrine di Symfony 4

untuk melakukan instalasi doctrine, anda bisa menjalankan perintah berikut di dalam folder project symfony anda menggunakan CMD : 

composer require symfony/orm-pack

maka akan keluar perintah sebagai berikut :



sampai disini kita sudah berhasil menambahkan ORM Doctrine di project symfony. selanjutnya koneksi ke database MySQL

Menggunakan Doctrine dengan MySQL

pertama kita buat database baru di mysql, untuk tulisan ini saya coba buat database dengan nama tutorial. Untuk membuat database baru, anda bisa menggunakan perintah di console sebagai berikut :

php bin/console doctrine:database:create

kemudian buka file .env yang berada di folder project symfony. Kira-kira isinya seperti ini


# This file is a "template" of which env vars need to be defined for your application
# Copy this file to .env file for development, create environment variables when deploying to production
# https://symfony.com/doc/current/best_practices/configuration.html#infrastructure-related-configuration

###> symfony/framework-bundle ###
APP_ENV=dev
APP_SECRET=859bdea01e182789f006e295b33275af
#TRUSTED_PROXIES=127.0.0.1,127.0.0.2
#TRUSTED_HOSTS=localhost,example.com
###< symfony/framework-bundle ###

###> doctrine/doctrine-bundle ###
# Format described at http://docs.doctrine-project.org/projects/doctrine-dbal/en/latest/reference/configuration.html#connecting-using-a-url
# For an SQLite database, use: "sqlite:///%kernel.project_dir%/var/data.db"
# Configure your db driver and server_version in config/packages/doctrine.yaml
DATABASE_URL=mysql://db_user:db_password@127.0.0.1:3306/db_name
###< doctrine/doctrine-bundle ###

kemudian cari kode yang ini

DATABASE_URL=mysql://db_user:db_password@127.0.0.1:3306/db_name

dan ganti menjadi

DATABASE_URL=mysql://root:@127.0.0.1:3306/tutorial

sampai disini kita sudah berhasil melakukan koneksi ke database MySQL. Mudah bukan ?? selanjutnya kita coba buat tabel.

Membuat Entity

di doctrine, tabel yang ada di database diwaliki dengan sebuah entity. Untuk memudahkan membuat entity, kita bisa menggunakan MakerBundle untuk melakukan generate entity, controller, form dll. Dan untuk pembahasan MakerBundle insya allah saya tulis di kesempatan yang akan datang. Sekarang kita install MakerBundle dengan perintah berikut : 

composer require symfony/maker-bundle --dev

setelah selesai, kita bisa mulai membuat Entity. Untuk membuat entity silahkan jalankan perintah berikut di console: 

php bin/console make:entity

dan ikuti petunjuk yang diberikan.  Di sini saya membuat dua entity yang bernama MNews dan MCategory. Setelah selesai, maka anda akan punya Entity yang disimpan di folder src/Entity dan repository yang disimpan di folder src/Repository seperti berikut.


mudah bukan ??. Entity MNews ada beberapa field antara lain : created_at (datetime), title (string, 255), content (text) dan entity MCategory punya beberapa field antara lain : kode (string, 255), dan name (string, 255). Untuk menambahkan field di entity MNews yang berelasi ke entity MCategory anda bisa menjalankan perintah make:entity di atas dan menuliskan nama entity Mews dan tambahkan field category yang bertipe relation seperti gambar berikut: 


pada gambar diatas saya menggunakan relasi Many to One dengan asumsi setiap news mempunyai category. Maka entity MNews saya menjadi seperti berikut: 


<?php // src/Entity/MMews.php

namespace App\Entity;

use Doctrine\ORM\Mapping as ORM;

/**
* @ORM\Entity(repositoryClass="App\Repository\MNewsRepository")
*/
class MNews
{
/**
* @ORM\Id()
* @ORM\GeneratedValue()
* @ORM\Column(type="integer")
*/
private $id;

/**
* @ORM\Column(type="datetime")
*/
private $created_at;

/**
* @ORM\Column(type="string", length=255)
*/
private $title;

/**
* @ORM\Column(type="text", nullable=true)
*/
private $content;

/**
* @ORM\ManyToOne(targetEntity="App\Entity\MCategory", inversedBy="mNews")
*/
private $category;

public function getId(): ?int
{
return $this->id;
}

public function getCreatedAt(): ?\DateTimeInterface
{
return $this->created_at;
}

public function setCreatedAt(\DateTimeInterface $created_at): self
{
$this->created_at = $created_at;

return $this;
}

public function getTitle(): ?string
{
return $this->title;
}

public function setTitle(string $title): self
{
$this->title = $title;

return $this;
}

public function getContent(): ?string
{
return $this->content;
}

public function setContent(?string $content): self
{
$this->content = $content;

return $this;
}

public function getCategory(): ?MCategory
{
return $this->category;
}

public function setCategory(?MCategory $category): self
{
$this->category = $category;

return $this;
}
}

dan ini entity MCategory


<?php // src/Entity/MCategory.php

namespace App\Entity;

use Doctrine\Common\Collections\ArrayCollection;
use Doctrine\Common\Collections\Collection;
use Doctrine\ORM\Mapping as ORM;

/**
* @ORM\Entity(repositoryClass="App\Repository\MCategoryRepository")
*/
class MCategory
{
/**
* @ORM\Id()
* @ORM\GeneratedValue()
* @ORM\Column(type="integer")
*/
private $id;

/**
* @ORM\Column(type="string", length=255)
*/
private $code;

/**
* @ORM\Column(type="string", length=255)
*/
private $name;

/**
* @ORM\OneToMany(targetEntity="App\Entity\MNews", mappedBy="category")
*/
private $mNews;

public function __construct()
{
$this->mNews = new ArrayCollection();
}

public function getId(): ?int
{
return $this->id;
}

public function getCode(): ?string
{
return $this->code;
}

public function setCode(string $code): self
{
$this->code = $code;

return $this;
}

public function getName(): ?string
{
return $this->name;
}

public function setName(string $name): self
{
$this->name = $name;

return $this;
}

/**
* @return Collection|MNews[]
*/
public function getMNews(): Collection
{
return $this->mNews;
}

public function addMNews(MNews $mNews): self
{
if (!$this->mNews->contains($mNews)) {
$this->mNews[] = $mNews;
$mNews->setCategory($this);
}

return $this;
}

public function removeMNews(MNews $mNews): self
{
if ($this->mNews->contains($mNews)) {
$this->mNews->removeElement($mNews);
// set the owning side to null (unless already changed)
if ($mNews->getCategory() === $this) {
$mNews->setCategory(null);
}
}

return $this;
}
}

sampai disini, kita akan melakukan generate entity menjadi tabel di database. silahkan jalankan perintah berikut :

php bin/console make:migration

perintah diatas akan membuatkan satu file migrasi di folder src/Migrations yang berisi kode sql untuk migrasi ke database. Kemudian untuk melakukan migrasi, silahkan jalankan kode berikut :

php bin/console doctrine:migrations:migrate

jika berhasil maka di database akan ada tabel m_news dan m_category seperti berikut :


gimana ? mudah bukan ? dan setiap ada perubahan struktur entity, maka jalankan kedua perintah di atas untuk memasukkannya ke database.

Melakukan Query Menggunakan Doctrine

Setelah sebelumnya kita telah membuat 2 tabel (m_news dan m_category ), maka kali ini kita akan mencoba melakukan operasi ke database seperti insert, update, delete, dan read ke tabel. 

untuk latihan membuat query, pertama kita buat dulu controllernya, untuk membuat controller bisa dibaca di tulisan saya sebelumnya atau mengunakan generator MakerBundle seperti halnya membuat entity. Untuk membuat controller menggunakan MakerBundle, silahkan jalankan perintah berikut di console :

php bin/console make:controller

dan ketik nama controllernya seperti berikut :


dan silahkan cek di folder src/Controller, dan sudah ada controller yang anda buat. Berikut isi controller yang saya buat


<?php // src/COntroller/CategoryController.php

namespace App\Controller;

use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use Symfony\Component\Routing\Annotation\Route;

class CategoryController extends AbstractController
{
/**
* @Route("/category", name="category")
*/
public function index()
{
return $this->json([
'message' => 'Welcome to your new controller!',
'path' => 'src/Controller/CategoryController.php',
]);
}
}

dan kita panggil di browser,

 http://localhost/tutorial/public/index.php/category 

maka muncul seperti berikut,


dalam seri tulisan saya kali ini dan kedepan, saya akan menggunakan model api jadi sementara tidak membahas frontend menggunakan twig dan hanya menggunakan output json. Untuk menyimpan data ke database, contohnya seperti berikut.


<?php // src/COntroller/CategoryController.php
namespace App\Controller;

// tambahkan kode berikut untuk melakukan import entity MCategory
use App\Entity\MCategory;

class CategoryController extends AbstractController
{
// buat function beserta routing
/**
* @Route("/category_insert", name="category_insert")
*/
public function insert()
{
// kita definisikan entity manager
$entityManager = $this->getDoctrine()->getManager();
// membuat object category dan set value
$MCategory = new MCategory();
$MCategory->setCode('rt');
$MCategory->setName('Rumah Tangga');
// menyimpan object ke database
$entityManager->persist($MCategory);
$entityManager->flush();

return $this->json(['status' => true, 'messages' => 'saved data successfully.']);
}
}

kemudian panggil di browser, maka akan muncul halaman seperti berikut:


dan kita lihat di database.


mudah bukan ? Untuk menangkap data dari form / inputan user, kita gunakan object dari Request yang telah disediakan oleh symfony, seperti berikut :


<?php // src/COntroller/CategoryController.php

namespace App\Controller;
// tambahkan Class Request
use Symfony\Component\HttpFoundation\Request;

class CategoryController extends AbstractController
{

/**
* @Route("/category_insert", name="category_insert")
*/
public function insert(Request $request)
{
// ambil data dari inputan user
$code = $request->get('code', null);
$name = $request->get('name', null);

// kita definisikan entity manager
$entityManager = $this->getDoctrine()->getManager();
// membuat object category dan set value
$MCategory = new MCategory();
$MCategory->setCode($code);
$MCategory->setName($name);
// menyimpan object ke database
$entityManager->persist($MCategory);
$entityManager->flush();

return $this->json(['status' => true, 'messages' => 'saved data successfully.']);
}
}

dan untuk melakukan  input bisa dengan memanggil url seperti berikut :

http://localhost/tutorial/public/index.php/category_insert?code=test&name=Test

namun function di atas masih bisa dilakukan input melalui method GET, jadi agar sedikit lebih aman kita ganti method yang di izinkan hanya POST seperti berikut:


<?php

namespace App\Controller;
...

class CategoryController extends AbstractController
{
    ......
    // tambahkan method pada routing
/**
* @Route("/category_insert", name="category_insert",methods={"POST"})
*/
public function insert(Request $request)
{
if($request->getMethod() == Request::METHOD_POST){
// ambil data dari inputan user
$code = $request->get('code', null);
$name = $request->get('name', null);

// kita definisikan entity manager
$entityManager = $this->getDoctrine()->getManager();
// membuat object category dan set value
$MCategory = new MCategory();
$MCategory->setCode($code);
$MCategory->setName($name);
// menyimpan object ke database
$entityManager->persist($MCategory);
$entityManager->flush();

return $this->json(['status' => true, 'messages' => 'saved data successfully.']);
}else{
return $this->json(['status' => false, 'messages' => 'method "'.$request->getMethod().'" not allowed.']);
}
}
}

dan silahkan insert data menggunakan POSTMAN atau yg lain untuk pengitim data menggunakan method POST.

berikut contoh cara untuk melakukan query ke database :


<?php

namespace App\Controller;

use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use Symfony\Component\Routing\Annotation\Route;
use App\Entity\MCategory;
use Symfony\Component\HttpFoundation\Request;

class CategoryController extends AbstractController
{
/**
* @Route("/category", name="category")
*/
public function index()
{
// kita definisikan repository
$repository = $this->getDoctrine()->getRepository(MCategory::class);

// mengambil semua isi database
$MCategorys = $repository->findAll();
$data = [];
foreach($MCategorys as $MCategory){
$data[] = [
'id' => $MCategory->getId(),
'code' => $MCategory->getCode(),
'name' => $MCategory->getName()
];
}
return $this->json([
'status' => true,
'data' => $data,
]);
}

}

dan berikut beberapa contoh cara melakukan query ke database :


<?php

namespace App\Controller;

use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use Symfony\Component\Routing\Annotation\Route;
use App\Entity\MCategory;
use Symfony\Component\HttpFoundation\Request;

class CategoryController extends AbstractController
{
/**
* @Route("/category", name="category")
*/
public function index()
{
// kita definisikan repository
$repository = $this->getDoctrine()->getRepository(MCategory::class);

// mengambil berdasarkan id / primary key
$MCategory = $repository->find($id);

// mengambil satu data menggunakan key tertentu
$MCategory = $repository->findOneBy(['name' => 'Test']);
// atau mengambil bedasarkan code dan name
$MCategory = $repository->findOneBy([
'code' => 'test',
'name' => 'Test'
]);

// mengambil banyak data dan melakukan shorting berdasarkan name
$MCategorys = $repository->findBy([], ['name' => 'ASC']);

// mengambil semua isi database
$MCategorys = $repository->findAll();
.....
}

}

cukup sekian dulu tulisan saya kali ini semoga bermanfaat, lain waktu kita lanjutkan membuat CRUD menggunakan API dan POSTMAN. Terima kasih
Share:

Membuat Halaman di Symfony 4

Melanjutkan tulisan saya sebelumnya mengenai symfony 4, kali ini saya coba tulis mengenai pembuatan halaman web dengan symfony. untuk tutorial sebelumnya, bisa dibaca di bagian I : https://catatan-pemrograman.blogspot.com/2018/09/memulai-symfony-4.html

Membuat Halaman / Controller

Direktori / folder untuk bekerja kita adalah folder src. dan untuk membuat halaman web kita perlu buat controller yang kita simpan di dalam folder src/Controller. Berikut ini saya buat Controller dengan nama HelloController.php 

<?php
namespace App\Controller;

use Symfony\Component\HttpFoundation\Response;

/**
* Description of HelloController
*
* @author NUR HIDAYAT
*/

class HelloController {

public function index()
{
$number = random_int(0, 100);
return new Response(
'<html><body>Lucky number: '.$number.'</body></html>'
);
}
}
file controller diatas berisi satu function dengan nama index yang mengeluarkan output berupa nomor acak. Dan untuk mengakses halaman tersebut coba buka di browser dengan url berikut:

http://localhost/tutorial/public/index.php/hello 


dan ternyata muncul error seperti berikut :


di halaman tersebut terdapat notifikasi sebagai berikut : 

No route found for "GET /hello"

pesan error tersebut muncul karena kita belum menambahkan routing untuk halaman tersebut dan kita harus menambahkan routing di file routes.yml yang berada di dalam folder config dan tambahkan kode berikut :

hello:  # nama routing

    path: /hello # path / url routing

    controller: App\Controller\HelloController::index # controller tujuan yg akan dijalankan


setelah ditambahkan di routes.yml, kemudian coba refresh halaman di browser

dan kira-kira begitulah hasilnya di browser.

Melihat Daftar Routing


untuk melihat daftar routing yang telah dibuat, anda bisa menggunakan perintah berikut di CMD : 

php bin/console debug:router

maka anda akan mendapatkan hasil seperti berikut :


Routing Menggunakan Anotations

Untuk membuat controller kita harus mendaftarkannya di file routes.yml seperti contoh sebelumnya. ribet kan ? karena kita harus bolak balik buka controller dan file config. Untuk mendaftarkan routing kita bisa menggunakan cara lain, yaitu annotations. yaitu dengan menggunakan syntax sejenis komentar yg ada di dalam controller tapi dibaca oleh symfony sebagai pengenal routing. untuk menggunakan annotation kita perlu menambahkannya menggunakan composer :

composer require annotations

tunggu sampai proses instalasi selesai.


setelah selesai, maka kita perlu menambahkan routing di controller sehingga menjadi seperti berikut :


<?php

namespace App\Controller;

use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\Routing\Annotation\Route;

/**
* Description of HelloController
*
* @author NUR HIDAYAT
*/

class HelloController {

/**
*
* @Route("/hello", name="hello")
*/

public function index()
{
$number = random_int(0, 100);
return new Response(
'<html><body>Lucky number: '.$number.'</body></html>'
);
}
}

kemudian hapus routing yang telah kita daftarkan di file routes.yml tadi dan jalankan url di browser.

Bagaimana ? lebih mudah ? atau lebih ribet ?

Struktur Folder di Symfony 4

sekarang saya lanjutkan untuk membahas struktur folder project. Symfony 4 secara default berisi beberapa folder antara lain : 

  • config, berisi file konfigurasi seperti routing, service dll
  • src, folder tempat kita bekerja seperti membuat controller, form, entity dll
  • templates, berisi template twig, html dll
  • bin, berisi file yang di eksekusi di console seperti bin/console debug:router dll
  • var, berisi file cache aplikasi dan log
  • vendor, berisi repository pihak ketiga yang kita install menggunakan composer
  • public, berisi file index.php dan semua file yang bisa diakses oleh publik / umum
sementara sekian dulu tulisan saya kali ini, saya lanjutkan di lain kesempatan untuk membuat interaksi dengan database MySQL menggunakan ORM Doctrine.

update : tulisan selanjutnya tentang doctrine di symfony => https://catatan-pemrograman.blogspot.com/2018/09/menggunakan-doctrine-di-symfony-4.html
Share:

Memulai Symfony 4

Setelah sekian lama saya vakum dari menulis di blog ini karena terlalu sibuk cari duwit, sekarang saya coba luangkan waktu buat menulis hal yang baru saja saya pelajari. Apa itu ? yah..... Symfony 4

Kenapa Symfony ?

bukan karena fanatik atau gimana sih, tapi memang kebetulan di kantor, kerjaan saya tiap hari ngoding pakai framework symfony ini cuma yang versi jadul alias Symfony versi 1. Dan karena saya pengen upgrade framework, makanya saya pelajarin symfony yang versi terbaru saat tulisan ini dibuat yaitu Symfony 4.1. Dan semoga saya biasa tetap konsisten melanjutkan tulisan ini ke tahapan selanjutnya. Di bagian awal ini saya mau memulai dengan tutorial instalasi Symfony 4.

Instalasi Symfony 4

tulisan ini saya ambil dan pelajari dari situs resmi Symfony di https://symfony.com/. Untuk melakukan instalasi, anda harus terlebih dahulu menginstal composer di komputer. Composer bisa diunduh di halaman resmi di https://getcomposer.org/

Symfony 4 hadir dengan pendekatan yang agak berbeda dari versi sebelumnya. kalau di versi sebelumnya ketika install anda akan mendapatkan satu project utuh yang sudah lengkap dengan berbagai repositoy seperti modul twig ( template engine ), doctrine ( database ORM ), dll maka di symfony 4 kita hanya mendapatkan versi dasar yang untuk menambahkan berbagai repository tambahan bisa di install menggunakan composer. Untuk instalasi anda bisa masuk ke direktory / folder tempat anda akan melakukan koding php menggunakan command line / CMD: 

kalau saya di : F:\xampp_72\htdocs

kemudian jalankan perintah berikut

composer create-project symfony/skeleton nama-folder

kemudian tunggu hingga proses instalasi selesai ( disini saya memakai folder tutorial untuk project symfony kali ini ).


sampai disini kita sudah berhasil melakukan instalasi. untuk membukanya silahkan nyalakan server php dan buka di browser url berikut : 

http://localhost/nama-folder/public/ 

maka akan terbuka halaman seperti berikut.


project yang kita biat adalah project minimal ( tanpa template engine, tanpa database ORM dll) sehingga kita harus menambahkan sendiri repository tambahan tersebut menggunakan composer dan akan kita bahas pada tulisan selanjutnya.

Menjalankan project Symfony menggunakan Virtual Server

project Symfony bisa juga dijalankan menggunakan virtual server. Apa maksudnya ?
jawabnya ada diujung langit...
kita kesana dengan seorang anak...
anak yang tangkas dan juga pemberani..... :D

maaf-maaf becanda, menggunakan virtual server berarti kita tidak memakai / tidak usah menyalakan service web server seperti apache / nginx dll tapi cukup menjalankan CMD. Pertama masuk dulu ke direktory / folder project symfony ( kalo saya di folder tutorial ) install dulu repository symfony web server :

composer require symfony/web-server-bundle --dev

tunggu sampai proses instalasi selesai


jika sudah selesai, jalankan perintah berikut: 

php bin/console server:run

maka :


kemudian buka di web browser :

 http://localhost:8000/ 

dan project bisa dijalankan tanpa menyalakan service web server anda.

sekian dulu tulisan saya kali ini, kita coba buat halaman web di tulisan saya selanjutnya.

selanjutnya di https://catatan-pemrograman.blogspot.com/2018/09/membuat-halaman-di-symfony-4.html
Share:

license key eset antivirus Terbaru 2019


Update terbaru license eset anti virus Internet security
ESET Smart Security Premium 10-12 (update Oktober 2019)
free trial
DEAS-W33T-7ACV-V8N7-VJCW
DEAS-W33T-7F4C-CW88-WBRV

==========================
K9GF-XXTK-NNNJ-XGD6-ADJP 10/01/2019
-XP97-R4NS WPPW-R3RP-HEME 10/1/2019
U79H-X8C8-V4UB-9B9V-2DM2 18.9.2019
BFJT-XMCW-BN64-BHWK-EMHX 18.5.2020
FRAJ-WRB5-PR96-6KAT-4UA5 12/6/2020
AHH4- XKV8-V2GB-DAAH-N8HR 09/18/2019
FRAJ-WRB5-PR96-6KAT-4UA5 06/12/2020
BFJT-XMCW -BN64-BHWK-EMHX 05/18/2020
5P43-XW25-XDKR-S584-WA3X 09/21/2019
C84N-XKU3-HHM6-WUKJ-RRBN 09/21/2019
MH6V-XD5F-FCVB-4PCR-29J5 09/21/2019

RUAW-W33S-XHEJ-J4T6-X3ES 05.05.2020

BWK5-XH98-NPTP-RSXS-X2F7---work 100% (Juni 2019)

CNDU-W33J-9MK7-77VH-6UH2 (08/13/2020)

Dapat dari searching bah google, ane share nih license eset antivius / SN anti virus eset 2018 - 2027
license key eset internet security : cndu-w337-wafe-euu9-f55m (13-03-2019)
terbaru nya eset anti virus internet security 2019 CNDU-W33B-UAJ8-8NB7-PVU6
License Key: CNDU-W33B-UAJ8-8NB7-PVU6
Expiration: 10/11/2019

Trial key SV55-X8TC-CF28-DABN-UFHH
Expiration 31/7/2019

License Key: FRAJ-WRCJ-KXX9-9V47-4AA7
Expiration: 29/09/2019

License Key: CNDU-W33B-UAJ8-8NB7-PVU6

Expiration: 10/11/2019
DEAS-W33H-C4V4-4C8V-FJM4 
DEAS-W33H-CCAJ-JPGA-X6TM 
TKTT-X32S-BE3J-GK82-59CH 
CNDU-W33B-UAJ8-8NB7-PVU6 
DEAS-W33H-C6BB-B8GK-TU9W


SN Eset Nod32

(EIS ESS)
M33F-XDJ3-5D4X-UFH7-4KRG (serial sudah teruji 2027)
13 Oktober 2019
TR4C-XS66-DGPE-XUR8-G76K
2UBC-XHWD-CWK7-7H6N-AN7R
JK78-X6GH-F9AU-MFEA-T99X
13 juni 2018
"(EIS)"
XGWN-X8A3-938T-X2HX-B77A
HXKH-XP59-F5RK-RC4X-HP42
HWMT-XVFR-MH2H-7TFP-5WJH
13 juni 2018
"(EAV)"
3KUR-XA27-GNDU-ABBP-CNFM
13 Juni 2019
XTEG-X9P3-857C-6BDA-TFSH
UUBD-X8VG-9BT4-49DU-K8UM
16 Juni 2018
"(EMS)"
Username : EAV-0221255465
Password : 3atukfntse
Expire : 27 Juni 2018
Username : EAV-0222258379
Password : jv2j5ubjx3
Expire : 27 juni 2018
Username : EAV-0222258379
Password : jv2j5ubjx3
Expire : 08 Juli 2018
DEAS-W33G-VAJF-FXBT-SD8S
RUAW-W33E-XAHW-W7ER-AACA
"(ESSP)"
CAV9-XHPM-3JWC-H572-J3TW
ASEA-XSFK-DXBA-6DP3-PBNG
BAVA-XWRT-7UTV-S4WT-5A47
42R4-X858-MKVK-4AP8-TXM7
FVHG-XJWH-MN6C-FX2X-FTMT
26 Mei 2018
Sumber : Komunitas Eset Indonesia

Share:

Cara Membatasi Bandwidth Tanpa Software

Bandwidth adalah suatu nilai konsumsi transfer data yang dihitung dalam bit/detik atau yang biasanya disebut dengan bit per second (bps), antara server dan client dalam waktu tertentu,
Sumber dari google serach.

Sebagai Pengguna Internet biasanya kita suka terhambat dengan bandwidth, apalagi kalau pengguna di satu jaringan, untuk membatasi bandwidth tanpa software saya akan sedikit share, mesti cara ini sudah tidak asing lagi hehehe.


Ikuti langkah-langkah di bawah ini

Cara Membatasi Bandwidth Tanpa Software
Cara Membatasi Bandwidth Tanpa Software

Cara Membatasi Bandwidth Tanpa Software

Cara Membatasi Bandwidth Tanpa Software

Cara Membatasi Bandwidth Tanpa Software

Cara Membatasi Bandwidth Tanpa Software


















Setelah langkah tersebut diatas silahkan anda coba sendiri.


Share:

Contoh Perhitungan Algoritma Learning Vector Quantization

Melanjutkan tulisan saya tentang algoritma Learning Vector Quantization yang lalu, kali ini saya akan melanjutkan dengan contoh perhitungan manual. Berikut ini contoh data yang akan kita hitung.

No
X1

X2

X3

X4

target
1
0
1
1
0
0
2
0
0
1
1
1
3
1
1
1
1
0
4
1
0
0
1
1

pada contoh di atas, saya menggunakan 4 data sebagai data training beserta target yang bertujuan untuk mendapatkan bobot yang akan digunakan pada proses klasifikasi. Bobot awal adalah { 1, 1, 1, 0} dan { 1, 0, 1, 1} dengan learning rate 0,05 dengan fungsi pembelajaran = 0,1.

Pelatihan

Iterasi ke 1

1. Data ke 1 { 0, 1, 1, 0} dengan target 0, bobot = {{ 1, 1, 1, 0},{ 1, 0, 1, 1}}
     - menghitung bobot untuk masing masing output : 
        kelas 0 = sqrt(((0-1)^2)+((1-1)^2)+((1-1)^2)+((0-0)^2)) = 1
        kelas 1 = sqrt(((0-1)^2)+((1-0)^2)+((1-1)^2)+((0-1)^2)) = 1.7320508075689
     - menentukan kelas pemenang : 
       output = min(kelas 0, kelas 1) =  kelas 0
     - update bobot : 
       karena target 0 sama dengan output 0, maka update bobot : 
       W11 = 1 + (0.05*(0 - 1)) = 0.95
       W12 = 1 + (0.05*(1 - 1)) = 1
       W13 = 1 + (0.05*(1 - 1)) = 1
       W14 = 0 + (0.05*(0 - 0)) = 0
     
      maka diperoleh bobot baru = {{ 0.95, 1, 1, 0},{ 1, 0, 1, 1}} untuk digunakan pada perhitungan            data selanjutnya

2. Data ke 2 { 0, 0, 1, 1} dengan target 1, bobot = {{ 0.95, 1, 1, 0},{ 1, 0, 1, 1}}
    - menghitung bobot untuk masing masing output :
        kelas 0 = sqrt(((0-0.95)^2)+((0-1)^2)+((1-1)^2)+((1-0)^2)) = 1.7036725037401
        kelas 1 = sqrt(((0-1)^2)+((0-0)^2)+((1-1)^2)+((1-1)^2)) = 1
     - menentukan kelas pemenang : 
       output = min(kelas 0, kelas 1) =  kelas 1
     - update bobot : 
       karena target 1 sama dengan output 1, maka update bobot : 
       W21 = 1 + (0.05*(0 - 1)) = 0.95
       W22 = 0 + (0.05*(0 - 0)) = 0 
       W23 = 1 + (0.05*(1 - 1)) = 1
       W24 = 1 + (0.05*(1 - 1)) = 1
      
       maka diperoleh bobot baru = {{ 0.95, 1, 1, 0},{ 0.95, 0, 1, 1}} untuk digunakan pada perhitungan data selanjutnya

3. Data ke 3 { 1, 1, 1, 1} dengan target 0, bobot = {{ 0.95, 1, 1, 0},{ 0.95, 0, 1, 1}}
    - menghitung bobot untuk masing masing output :
        kelas 0 = sqrt(((1-0.95)^2)+((1-1)^2)+((1-1)^2)+((1-0)^2)) = 1.001249219725
        kelas 1 = sqrt(((1-0.95)^2)+((1-0)^2)+((1-1)^2)+((1-1)^2)) = 1.001249219725
     - menentukan kelas pemenang : 
       output = min(kelas 0, kelas 1) =  kelas 0, 
       - karena output antara kedua kelas sama besar, bisa dipilih salah satu sebagai output
     - update bobot : 
       karena target 0 sama dengan output 0, maka update bobot : 
       W11 = 0.95 + (0.05*(1 - 0.95)) = 0.9525
       W12 = 1 + (0.05*(1 - 1)) = 1
       W13 = 1 + (0.05*(1 - 1)) = 1
       W14 = 0 + (0.05*(1 - 0)) = 0.05
      
     maka diperoleh bobot baru = {{ 0.9525, 1, 1, 0.05},{ 0.95, 0, 1, 1}} untuk digunakan pada perhitungan data selanjutnya

4. Data ke 4 { 1, 0, 0, 1} dengan target 1, bobot = {{ 0.9525, 1, 1, 0.05},{ 0.95, 0, 1, 1}}
    - menghitung bobot untuk masing masing output :
        kelas 0 = sqrt(((1-0.9525)^2)+((0-1)^2)+((0-1)^2)+((1-0.05)^2)) = 1.7043345475581
        kelas 1 = sqrt(((1-0.95)^2)+((0-0)^2)+((0-1)^2)+((1-1)^2)) = 1.001249219725
     - menentukan kelas pemenang : 
       output = min(kelas 0, kelas 1) =  kelas 1
     - update bobot : 
       karena target 1 sama dengan output 1, maka update bobot : 
       W21 = 0.95 + (0.05*(1 - 0.95)) = 0.9525
       W22 = 0 + (0.05*(0 - 0)) = 0
       W23 = 1 + (0.05*(0 - 1)) = 0.95
       W24 = 1 + (0.05*(1 - 1)) = 1

      maka diperoleh bobot baru = {{ 0.9525, 1, 1, 0.05},{ 0.9525, 0, 0.95, 1}} untuk digunakan pada perhitungan data selanjutnya

- setelah semua data selesai dihitung, update learning rate : 
    learning rate baru = fungsi pembelajaran * learning rate;
                                 = 0.1 * 0.05 = 0.005
karena dalam satu iterasi semua data sudah diklasifikasikan dengan benar, maka iterasi pelatihan bisa dihentikan dan memakai bobot terakhir untuk digunakan dalam proses klasifikasi / prediksi. Jika dalam satu iterasi ada yang outputnya belum tepat, maka dilanjutkan ke iterasi berikutnya sampai dengan data diklasifikasikan dengan benar atau telah mencapai maksimal iterasi yang telah ditentukan.

Klasifikasi / Prediksi

Setelah didapat bobot hasil pelatihan yaitu {{ 0.9525, 1, 1, 0.05},{ 0.9525, 0, 0.95, 1}}, maka kita coba melakukan uji coba klasifikasi terhadap dua data yaitu { 1, 1, 1, 0} dan { 1, 0, 1, 1}.

1. Data ke 1 { 1, 1, 1, 0}

kelas 0 = sqrt(((1-0.9525)^2)+((1-1)^2)+((1-1)^2)+((0-0.05)^2)) = 0.068965571120669
kelas 1 = sqrt(((1-0.9525)^2)+((1-0)^2)+((1-0.95)^2)+((0-1)^2)) = 1.4158941521173
output = kelas 0

2. Data ke 2 { 1, 0, 1, 1}

kelas 0 = sqrt(((1-0.9525)^2)+((0-1)^2)+((1-1)^2)+((1-0.05)^2)) = 1.3801290700511
kelas 1 = sqrt(((1-0.9525)^2)+((0-0)^2)+((1-0.95)^2)+((1-1)^2)) = 0.068965571120669
output = kelas 1

Sekian tulisan saya kali ini, semoga bermanfaat.
Share:
  • ()
  • ()
Show more

Halaman