Home Blog Page 4

Berkenalan dengan Spring

0

Spring Framework merupakan salah satu teknologi terkemuka dalam dunia pengembangan perangkat lunak berbasis Java. Dikembangkan sebagai sebuah framework open-source, Spring hadir dengan sejumlah fitur dan kemudahan yang membuatnya menjadi pilihan utama para pengembang. Salah satu keunggulan utama Spring adalah fleksibilitasnya dalam mendukung pengembangan aplikasi untuk berbagai keperluan, mulai dari aplikasi web hingga desktop dan mobile.

Teknologi Spring tidak hanya sekadar sebuah framework, tetapi juga menyediakan solusi lengkap untuk kebutuhan pengembangan perangkat lunak. Keberagaman fitur yang dimilikinya membuat Spring dapat digunakan untuk membangun aplikasi dengan skala kecil hingga besar. Dengan dukungan untuk pengembangan aplikasi web, desktop, dan mobile, Spring memberikan kemudahan bagi para pengembang untuk menciptakan solusi yang sesuai dengan kebutuhan proyek mereka.

Keunggulan Spring dalam Pengembangan Perangkat Lunak

Keunggulan Spring tidak terbatas pada kemampuannya untuk mendukung berbagai jenis aplikasi. Spring juga dikenal karena kemudahan dalam manajemen transaksi, sehingga pengembang dapat fokus pada logika bisnis tanpa harus khawatir tentang kompleksitas transaksi. Selain itu, Spring menyediakan model pengembangan MVC yang fleksibel, memisahkan antara logika bisnis, presentasi, dan kontrol dengan jelas. Hal ini memudahkan pengembangan dan pemeliharaan kode.

Selain fleksibilitas dan manajemen transaksi yang baik, Spring juga memberikan dukungan integrasi yang luas. Para pengembang dapat dengan mudah mengintegrasikan Spring dengan berbagai teknologi dan framework lain, seperti Hibernate dan MyBatis. Dengan demikian, Spring tidak hanya menjadi sebuah framework, melainkan juga sebuah ekosistem pengembangan perangkat lunak yang lengkap.

Implementasi Spring Framework dalam Proyek

Implementasi Spring Framework dalam proyek pengembangan perangkat lunak dapat dilakukan dengan langkah-langkah yang terstruktur. Pertama, pengembang perlu memahami kebutuhan proyek dan memilih modul Spring yang sesuai. Setelah itu, konfigurasi dapat dilakukan dengan mudah, mengikuti pola-pola desain yang telah disediakan oleh Spring. Dengan model pengembangan yang terorganisir, proyek dapat berkembang secara konsisten dan dapat diintegrasikan dengan komponen-komponen lainnya.

Dalam mengimplementasikan Spring, penting untuk memanfaatkan keunggulan-keunggulan seperti Dependency Injection (DI) dan Inversion of Control (IoC). Fitur ini membantu dalam manajemen objek dan mempermudah pengujian aplikasi. Selain itu, penggunaan anotasi Spring juga dapat mempercepat pengembangan dengan mengurangi boilerplate code. Dengan pemahaman yang mendalam tentang teknologi Spring, para pengembang dapat meningkatkan produktivitas dan merancang aplikasi yang handal.

Desain Karakter Avatar Remaja 3D

0

Dalam dunia desain, memiliki aset berkualitas tinggi menjadi kunci untuk menciptakan karya yang menarik dan profesional. Salah satu aset yang sedang tren dan banyak digunakan adalah ilustrasi karakter avatar remaja 3D. Berikut adalah ulasan lengkap tentang desain karakter ini, bersama dengan spesifikasi dan kegunaannya.

Ilustrasi Karakter 3D untuk Berbagai Kebutuhan Desain
Desain karakter avatar remaja 3D adalah solusi visual yang serbaguna untuk kebutuhan desain Anda. Dengan 8 objek yang unik, setiap karakter menyajikan ekspresi dan gaya remaja yang berbeda. Ilustrasi ini dapat diaplikasikan dalam berbagai konteks, termasuk desain web, animasi, UI design, presentasi slide, poster, dan banyak lagi. Kelebihan utama dari ilustrasi ini meliputi:

  • 8 Objek: Setiap ilustrasi menyertakan 8 objek karakter remaja yang berbeda, memberikan variasi dan pilihan untuk proyek desain Anda.
  • High-Quality Render: Menghadirkan hasil render berkualitas tinggi, setiap ilustrasi menonjolkan detail dan kualitas gambar yang superior.
  • Dimensi 3000×3000 px: Dengan dimensi sebesar 3000×3000 px, ilustrasi ini memberikan fleksibilitas untuk digunakan dalam berbagai ukuran dan format desain.

Berkas yang Disediakan
Ketika Anda mengunduh ilustrasi karakter avatar remaja 3D ini, Anda akan mendapatkan dua jenis berkas yang sangat berguna untuk penggunaan desain Anda:

  • PNG: Berkas PNG memungkinkan Anda untuk menggunakan ilustrasi ini dengan mudah di berbagai platform dan aplikasi desain grafis. Kualitas gambar tetap optimal tanpa kehilangan detail.
  • OBJ: Berkas OBJ menyediakan model objek 3D yang dapat diedit, memungkinkan kreativitas Anda mengubah karakter sesuai kebutuhan proyek.

Spesifikasi Teknis

  • Tipe Berkas Grafis: PNG
  • Aplikasi Desain yang Didukung: Adobe Photoshop
  • Dimensi: 3000px x 3000px

Dengan kombinasi kualitas render tinggi, variasi objek yang disediakan, dan dukungan format berkas yang luas, ilustrasi karakter avatar remaja 3D ini menjadi pilihan unggul untuk meningkatkan nilai estetika proyek desain Anda.

LINKDOWNLOAD
LINKDOWNLOAD
LINKDOWNLOAD

Membuat Multiple Class dalam C#

0

D

alam pemrograman berorientasi objek (OOP) dengan menggunakan bahasa pemrograman C#, deklarasi class adalah langkah awal untuk membentuk struktur program. Pada umumnya, satu file dapat mengandung beberapa class yang saling terkait. Proses ini dimulai dengan mendeklarasikan class menggunakan kata kunci class diikuti oleh nama class yang diinginkan. Setelah itu, kita dapat menentukan field atau atribut yang menjadi bagian dari class tersebut. Field ini merepresentasikan data atau informasi yang ingin disimpan oleh class. Selain itu, dapat juga menambahkan method, yaitu fungsi-fungsi atau perilaku yang terkait dengan class tersebut. Deklarasi class dalam satu file memungkinkan pengembang untuk menyusun struktur program dengan lebih teratur dan terorganisir.

Penting untuk diingat bahwa setiap class dapat memiliki deklarasi access modifier, seperti public, private, atau protected, yang mengontrol tingkat akses terhadap class tersebut. Dengan deklarasi class yang baik, pengembang dapat membangun fondasi yang kuat untuk implementasi lebih lanjut dalam pengembangan aplikasi berbasis OOP menggunakan C#.

Penambahan Class pada File yang Berbeda
Ketika proyek semakin berkembang, seringkali kita membutuhkan pendekatan yang lebih terstruktur untuk mengorganisir class. Pada kasus ini, kita dapat menempatkan class-class yang terkait dalam file yang berbeda-beda. Hal ini memberikan kejelasan dan keterbacaan kode yang lebih baik, serta mempermudah dalam manajemen proyek. Untuk menambahkan class pada file yang berbeda, kita cukup membuat file baru dengan ekstensi .cs dan mendeklarasikan class di dalamnya seperti biasa. Dalam file utama, kita dapat menggunakan class tersebut dengan melakukan pemanggilan sesuai dengan namespace dan nama class yang sudah dideklarasikan.

Penyusunan class pada file yang berbeda memberikan fleksibilitas yang besar, terutama ketika proyek mencapai skala yang besar. Pengelompokan class yang memiliki fungsi atau tujuan yang serupa dapat dilakukan dengan lebih teratur, dan setiap file dapat diatur sesuai dengan struktur logis dari aplikasi yang sedang dikembangkan.

Implementasi dalam Source Code
Implementasi dari konsep membuat multiple class dalam C# dapat dilihat dalam source code berikut:

// File: Person.cs
public class Person
{
// Fields
public string Name;
public int Age;

// Method
public void DisplayInfo()
{
Console.WriteLine("Name: {Name}, Age: {Age}");
}
}

// File: Program.cs
class Program
{
static void Main()
{
// Penggunaan class Person
Person person1 = new Person();
person1.Name = "Slamet";
person1.Age = 30;
person1.DisplayInfo();

// Penggunaan class lainnya (jika ada)
}
}

Dalam contoh di atas, class Person dideklarasikan dalam file terpisah, yaitu Person.cs. Kemudian, class tersebut dapat digunakan dan diinisiasi dalam file Program.cs. Dengan pendekatan ini, pengembangan aplikasi menjadi lebih terstruktur dan mudah dipelihara.

Contoh Source Code 1 untuk Latihan Multiple Class :

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace _2024_01_08_S03
{
//SOURCE CODE 0049
class Atk {
public string nama;
public string satuan;
public double harga;

}

class Barang
{
string nama;
string merk;
string jenis;
double netto;
string kadaluarsa;

static void devIdentity()
{
Console.WriteLine("-----------------------------");
Console.WriteLine(" APP, Oleh : Elfay ");
Console.WriteLine("-----------------------------");
}

static void Main(string[] args)
{
Barang bumbu = new Barang();
Barang penyedapRasa = new Barang();
Barang beras = new Barang();

Atk buku = new Atk();
buku.nama = "SIDU";
buku.satuan = "rim";
buku.harga = 60000;


devIdentity();

Console.WriteLine("Masukkan nama bumbu : ");
bumbu.nama = Console.ReadLine();
Console.WriteLine("Merk : ");
bumbu.merk = Console.ReadLine();
Console.WriteLine("Jenis bumbu : ");
bumbu.jenis = Console.ReadLine();
Console.WriteLine("Netto bumbu : ");
bumbu.netto = double.Parse(Console.ReadLine());
Console.WriteLine("Tanggal kadaluarsa : ");
bumbu.kadaluarsa = Console.ReadLine();

Console.WriteLine();
Console.WriteLine("Masukkan nama penyedap rasa : ");
penyedapRasa.nama = Console.ReadLine();
Console.WriteLine("Masukkan merk penyedap rasa : ");
penyedapRasa.merk = Console.ReadLine();
Console.WriteLine("Masukkan jenis penyedap rasa : ");
penyedapRasa.jenis = Console.ReadLine();
Console.WriteLine("Masukkan netto penyedap rasa : ");
penyedapRasa.netto = double.Parse(Console.ReadLine());
Console.WriteLine("Masukkan kadaluarsa penyedap rasa : ");
penyedapRasa.kadaluarsa = Console.ReadLine();

Console.WriteLine();
Console.WriteLine("Masukkan nama beras : ");
beras.nama = Console.ReadLine();
Console.WriteLine("Masukkan merk beras : ");
beras.merk = Console.ReadLine();
Console.WriteLine("Masukkan jenis beras : ");
beras.jenis = Console.ReadLine();
Console.WriteLine("Masukkan netto beras : ");
beras.netto = double.Parse(Console.ReadLine());
Console.WriteLine("Masukkan kadaluarsa beras : ");
beras.kadaluarsa = Console.ReadLine();

Console.WriteLine();
Console.WriteLine("Bumbu : ");
Console.WriteLine("Nama : " + bumbu.nama);
Console.WriteLine("Merk : " + bumbu.merk);
Console.WriteLine("Jenis : " + bumbu.jenis);
Console.WriteLine("Netto : " + bumbu.netto);
Console.WriteLine("Expired : " + bumbu.kadaluarsa);

Console.WriteLine("------------------------");
Console.WriteLine("Penyedap Rasa : ");
Console.WriteLine("Nama : " + penyedapRasa.nama);
Console.WriteLine("Merk : " + penyedapRasa.merk);
Console.WriteLine("Jenis : " + penyedapRasa.jenis);
Console.WriteLine("Netto : " + penyedapRasa.netto);
Console.WriteLine("Expired : " + penyedapRasa.kadaluarsa);

Console.WriteLine("------------------------");
Console.WriteLine("Beras : ");
Console.WriteLine("Nama : " + beras.nama);
Console.WriteLine("Merk : " + beras.merk);
Console.WriteLine("Jenis : " + beras.jenis);
Console.WriteLine("Netto : " + beras.netto);
Console.WriteLine("Expired : " + beras.kadaluarsa);

Console.WriteLine("------------------------");
Console.WriteLine("Buku : ");
Console.WriteLine("Nama : " + buku.nama);
Console.WriteLine("Satuan : " + buku.satuan);
Console.WriteLine("Harga : " + buku.harga);

Console.ReadKey();

}
}
}

Contoh Source Code 2 untuk Latihan Multiple Class :

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace _2024_01_08_S03
{
//SOURCE CODE 0050
class Atk
{
public string nama;
public string satuan;
public double harga;

}

class Mainan {
public string nama;
public string satuan;
public double harga;
}

class Plastik {
public string nama;
public string jenis;
public double ukuran;
public string satuan;
public double harga;
}

class Barang
{
string nama;
string merk;
string jenis;
double netto;
string kadaluarsa;

static void devIdentity()
{
Console.WriteLine("-----------------------------");
Console.WriteLine(" APP, Oleh : Elfay ");
Console.WriteLine("-----------------------------");
}

static void Main(string[] args)
{
Barang bumbu = new Barang();
Barang penyedapRasa = new Barang();
Barang beras = new Barang();

Atk buku = new Atk();
buku.nama = "SIDU";
buku.satuan = "rim";
buku.harga = 60000;

Mainan mobil = new Mainan();
mobil.nama = "Truck Monster";
mobil.satuan = "buah";
mobil.harga = 35000;

Plastik bungkusJajan = new Plastik();
bungkusJajan.nama = "Plastik Cap Daun";
bungkusJajan.jenis = "Biasa";
bungkusJajan.ukuran = 12;
bungkusJajan.satuan = "bungkus";
bungkusJajan.harga = 20000;

devIdentity();

Console.WriteLine("Masukkan nama bumbu : ");
bumbu.nama = Console.ReadLine();
Console.WriteLine("Merk : ");
bumbu.merk = Console.ReadLine();
Console.WriteLine("Jenis bumbu : ");
bumbu.jenis = Console.ReadLine();
Console.WriteLine("Netto bumbu : ");
bumbu.netto = double.Parse(Console.ReadLine());
Console.WriteLine("Tanggal kadaluarsa : ");
bumbu.kadaluarsa = Console.ReadLine();

Console.WriteLine();
Console.WriteLine("Masukkan nama penyedap rasa : ");
penyedapRasa.nama = Console.ReadLine();
Console.WriteLine("Masukkan merk penyedap rasa : ");
penyedapRasa.merk = Console.ReadLine();
Console.WriteLine("Masukkan jenis penyedap rasa : ");
penyedapRasa.jenis = Console.ReadLine();
Console.WriteLine("Masukkan netto penyedap rasa : ");
penyedapRasa.netto = double.Parse(Console.ReadLine());
Console.WriteLine("Masukkan kadaluarsa penyedap rasa : ");
penyedapRasa.kadaluarsa = Console.ReadLine();

Console.WriteLine();
Console.WriteLine("Masukkan nama beras : ");
beras.nama = Console.ReadLine();
Console.WriteLine("Masukkan merk beras : ");
beras.merk = Console.ReadLine();
Console.WriteLine("Masukkan jenis beras : ");
beras.jenis = Console.ReadLine();
Console.WriteLine("Masukkan netto beras : ");
beras.netto = double.Parse(Console.ReadLine());
Console.WriteLine("Masukkan kadaluarsa beras : ");
beras.kadaluarsa = Console.ReadLine();

Console.WriteLine();
Console.WriteLine("Bumbu : ");
Console.WriteLine("Nama : " + bumbu.nama);
Console.WriteLine("Merk : " + bumbu.merk);
Console.WriteLine("Jenis : " + bumbu.jenis);
Console.WriteLine("Netto : " + bumbu.netto);
Console.WriteLine("Expired : " + bumbu.kadaluarsa);

Console.WriteLine("------------------------");
Console.WriteLine("Penyedap Rasa : ");
Console.WriteLine("Nama : " + penyedapRasa.nama);
Console.WriteLine("Merk : " + penyedapRasa.merk);
Console.WriteLine("Jenis : " + penyedapRasa.jenis);
Console.WriteLine("Netto : " + penyedapRasa.netto);
Console.WriteLine("Expired : " + penyedapRasa.kadaluarsa);

Console.WriteLine("------------------------");
Console.WriteLine("Beras : ");
Console.WriteLine("Nama : " + beras.nama);
Console.WriteLine("Merk : " + beras.merk);
Console.WriteLine("Jenis : " + beras.jenis);
Console.WriteLine("Netto : " + beras.netto);
Console.WriteLine("Expired : " + beras.kadaluarsa);

Console.WriteLine("------------------------");
Console.WriteLine("Buku : ");
Console.WriteLine("Nama : " + buku.nama);
Console.WriteLine("Satuan : " + buku.satuan);
Console.WriteLine("Harga : " + buku.harga);

Console.WriteLine("------------------------");
Console.WriteLine("Mainan : ");
Console.WriteLine("Nama : " + mobil.nama);
Console.WriteLine("Satuan : " + mobil.satuan);
Console.WriteLine("Harga : " + mobil.harga);

Console.WriteLine("------------------------");
Console.WriteLine("Plastik : ");
Console.WriteLine("Nama : " + bungkusJajan.nama);
Console.WriteLine("Jenis : " + bungkusJajan.jenis);
Console.WriteLine("Ukuran : " + bungkusJajan.ukuran);
Console.WriteLine("Satuan : " + bungkusJajan.satuan);
Console.WriteLine("Harga : " + bungkusJajan.harga);

Console.ReadKey();

}
}
}

Contoh Source Code 3 untuk Latihan Multiple Class :

//File Program.cs

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace _2024_01_09_03
{
//SOURCE CODE 0051
class Atk
{
public string nama;
public string satuan;
public double harga;

public void diskonATKJanuari() {
Console.WriteLine("Diskon harga 50%.");
}

}

class Mainan
{
public string nama;
public string satuan;
public double harga;

public void diskonToysJanuari()
{
Console.WriteLine("Diskon harga 30%.");
}
}

class Plastik
{
public string nama;
public string jenis;
public double ukuran;
public string satuan;
public double harga;

public void diskonPlasJanuari()
{
Console.WriteLine("Diskon harga 40%.");
}
}

class Barang
{
string nama;
string merk;
string jenis;
double netto;
string kadaluarsa;

static void devIdentity()
{
Console.WriteLine("-----------------------------");
Console.WriteLine(" APP, Oleh : Elfay ");
Console.WriteLine("-----------------------------");
}

static void Main(string[] args)
{
Barang bumbu = new Barang();
Barang penyedapRasa = new Barang();
Barang beras = new Barang();

Atk buku = new Atk();
buku.nama = "SIDU";
buku.satuan = "rim";
buku.harga = 60000;

Mainan mobil = new Mainan();
mobil.nama = "Truck Monster";
mobil.satuan = "buah";
mobil.harga = 35000;

Plastik bungkusJajan = new Plastik();
bungkusJajan.nama = "Plastik Cap Daun";
bungkusJajan.jenis = "Biasa";
bungkusJajan.ukuran = 12;
bungkusJajan.satuan = "bungkus";
bungkusJajan.harga = 20000;

Karyawan staf01 = new Karyawan();
staf01.namaStaf = "Anggita Sapna";
staf01.hpStaf = "081331205638";
staf01.umurStaf = 26;
staf01.levelStaf = 3;
staf01.gajiPokok = 2150000;

devIdentity();

Console.WriteLine("Pegawai : " + staf01.namaStaf);
Console.WriteLine("No. HP : " + staf01.hpStaf);
Console.WriteLine("Usia : " + staf01.umurStaf);
Console.WriteLine("Level : " + staf01.levelStaf);
Console.WriteLine("Gaji : " + staf01.gajiPokok);

/*
Console.WriteLine("Masukkan nama bumbu : ");
bumbu.nama = Console.ReadLine();
Console.WriteLine("Merk : ");
bumbu.merk = Console.ReadLine();
Console.WriteLine("Jenis bumbu : ");
bumbu.jenis = Console.ReadLine();
Console.WriteLine("Netto bumbu : ");
bumbu.netto = double.Parse(Console.ReadLine());
Console.WriteLine("Tanggal kadaluarsa : ");
bumbu.kadaluarsa = Console.ReadLine();

Console.WriteLine();
Console.WriteLine("Masukkan nama penyedap rasa : ");
penyedapRasa.nama = Console.ReadLine();
Console.WriteLine("Masukkan merk penyedap rasa : ");
penyedapRasa.merk = Console.ReadLine();
Console.WriteLine("Masukkan jenis penyedap rasa : ");
penyedapRasa.jenis = Console.ReadLine();
Console.WriteLine("Masukkan netto penyedap rasa : ");
penyedapRasa.netto = double.Parse(Console.ReadLine());
Console.WriteLine("Masukkan kadaluarsa penyedap rasa : ");
penyedapRasa.kadaluarsa = Console.ReadLine();

Console.WriteLine();
Console.WriteLine("Masukkan nama beras : ");
beras.nama = Console.ReadLine();
Console.WriteLine("Masukkan merk beras : ");
beras.merk = Console.ReadLine();
Console.WriteLine("Masukkan jenis beras : ");
beras.jenis = Console.ReadLine();
Console.WriteLine("Masukkan netto beras : ");
beras.netto = double.Parse(Console.ReadLine());
Console.WriteLine("Masukkan kadaluarsa beras : ");
beras.kadaluarsa = Console.ReadLine();

Console.WriteLine();
Console.WriteLine("Bumbu : ");
Console.WriteLine("Nama : " + bumbu.nama);
Console.WriteLine("Merk : " + bumbu.merk);
Console.WriteLine("Jenis : " + bumbu.jenis);
Console.WriteLine("Netto : " + bumbu.netto);
Console.WriteLine("Expired : " + bumbu.kadaluarsa);

Console.WriteLine("------------------------");
Console.WriteLine("Penyedap Rasa : ");
Console.WriteLine("Nama : " + penyedapRasa.nama);
Console.WriteLine("Merk : " + penyedapRasa.merk);
Console.WriteLine("Jenis : " + penyedapRasa.jenis);
Console.WriteLine("Netto : " + penyedapRasa.netto);
Console.WriteLine("Expired : " + penyedapRasa.kadaluarsa);

Console.WriteLine("------------------------");
Console.WriteLine("Beras : ");
Console.WriteLine("Nama : " + beras.nama);
Console.WriteLine("Merk : " + beras.merk);
Console.WriteLine("Jenis : " + beras.jenis);
Console.WriteLine("Netto : " + beras.netto);
Console.WriteLine("Expired : " + beras.kadaluarsa);
*/

Console.WriteLine("------------------------");
Console.WriteLine("Buku : ");
Console.WriteLine("Nama : " + buku.nama);
Console.WriteLine("Satuan : " + buku.satuan);
Console.WriteLine("Harga : " + buku.harga);
buku.diskonATKJanuari();

Console.WriteLine("------------------------");
Console.WriteLine("Mainan : ");
Console.WriteLine("Nama : " + mobil.nama);
Console.WriteLine("Satuan : " + mobil.satuan);
Console.WriteLine("Harga : " + mobil.harga);
mobil.diskonToysJanuari();

Console.WriteLine("------------------------");
Console.WriteLine("Plastik : ");
Console.WriteLine("Nama : " + bungkusJajan.nama);
Console.WriteLine("Jenis : " + bungkusJajan.jenis);
Console.WriteLine("Ukuran : " + bungkusJajan.ukuran);
Console.WriteLine("Satuan : " + bungkusJajan.satuan);
Console.WriteLine("Harga : " + bungkusJajan.harga);
bungkusJajan.diskonPlasJanuari();

Console.ReadKey();

}
}
}

//File Karyawan.cs

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace _2024_01_09_03
{
public class Karyawan
{
public string namaStaf;
public string hpStaf;
public int umurStaf;
public int levelStaf;
public double gajiPokok;

public void mottoStaf() {
Console.WriteLine("Unggul dalam pikir, dzikir, dan ikhtiyar.");
}

}
}


Pemrograman Berorientasi Obyek: Class dan Object dalam C#

0

P

emrograman berorientasi obyek atau Object Oriented Programming (OOP) adalah paradigma pemrograman yang berfokus pada pengorganisasian dan struktur data menggunakan objek yang memiliki atribut (field) dan perilaku (method). Dalam OOP, “Class” dan “Object” merupakan dua konsep utama yang digunakan untuk menciptakan struktur program yang modular dan mudah dimengerti.

Class adalah blueprint atau cetak biru dari objek. Class mendefinisikan atribut dan perilaku yang akan dimiliki oleh objek yang nantinya akan dihasilkan dari class tersebut. Atribut dalam class disebut sebagai field, dan perilaku disebut sebagai method. Deklarasi class dilakukan dengan menggunakan kata kunci class diikuti oleh nama class dan blok kode yang berisikan field dan method. Class menyediakan struktur umum yang nantinya akan digunakan untuk membuat objek.

Deklarasi Class dalam C#

Dalam C#, deklarasi class dimulai dengan kata kunci class diikuti oleh nama class. Sebagai contoh, jika kita ingin membuat class untuk merepresentasikan seorang siswa, kita dapat membuat class bernama “Siswa”. Berikut adalah contoh deklarasi class sederhana dalam C#:

public class Siswa
{
// Field atau atribut
public string Nama;
public int Umur;

// Method
public void Perkenalan()
{
Console.WriteLine("Halo, nama saya {Nama} dan saya berusia {Umur} tahun.");
}
}

Pada contoh di atas, class “Siswa” memiliki dua field yaitu “Nama” dan “Umur”, serta satu method yaitu “Perkenalan”. Field merepresentasikan data yang dimiliki oleh objek, sedangkan method merepresentasikan perilaku objek.

Pembuatan Object C#

Setelah mendeklarasikan class, langkah selanjutnya adalah membuat objek dari class tersebut. Proses menciptakan objek dari class disebut sebagai inisiasi objek. Dalam C#, objek dapat diinisiasi menggunakan kata kunci new diikuti oleh nama class dan tanda kurung. Setelah objek terbentuk, field dalam objek dapat diakses dan diubah nilainya, dan method dapat dipanggil.

public class Siswa
{
// Field atau atribut
public string Nama;
public int Umur;

// Method
public void Perkenalan()
{
Console.WriteLine("Halo, nama saya {Nama} dan saya berusia {Umur} tahun.");
}

static void Main()
{
// Membuat objek dari class Siswa
Siswa siswa1 = new Siswa();

// Menginisiasi nilai field
siswa1.Nama = "Ananda";
siswa1.Umur = 16;

// Memanggil method
siswa1.Perkenalan();
}

}

Pada contoh di atas, kita membuat objek siswa1 dari class Siswa, menginisiasi nilai field Nama dan Umur, dan memanggil method Perkenalan. Dengan menggunakan class dan objek, program dapat diorganisir dengan lebih terstruktur dan mudah dipahami. Konsep ini merupakan inti dari pemrograman berorientasi obyek dalam C#.

Contoh 1 source code tentang Class dan Object sebagai bahan belajar dan latihan :

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace _2024_01_08
{ //SOURCE CODE 0046
class Buah
{
//field
string warnaBuah01 = "merah";
string warnaBuah02 = "hijau";
string warnaBuah03 = "kuning";

static void tampilIdentitas() {
Console.WriteLine("===========================");
Console.WriteLine(" Aplikasiku, oleh : Elfay ");
Console.WriteLine("===========================");
}

static void Main(string[] args)
{
tampilIdentitas();

Buah manggis = new Buah();
Console.WriteLine(manggis.warnaBuah01);
Console.WriteLine(manggis.warnaBuah02);
Console.WriteLine(manggis.warnaBuah03);

Buah pisang = new Buah();
Console.WriteLine(pisang.warnaBuah01);
Console.WriteLine(pisang.warnaBuah02);
Console.WriteLine(pisang.warnaBuah03);


Console.ReadKey();
}
}
}

Contoh 2 source code tentang Class dan Object :

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace _2024_01_08_S02
{ //SOURCE CODE 0047
class Pesawat
{
string warna;
double kecepatan;
string senjata;

static void identityDev() {
Console.WriteLine("======================");
Console.WriteLine("Aplikasi, Oleh : Elfay");
Console.WriteLine("======================");
}

static void versiAplikasi() {
Console.WriteLine("Versi 0.0001");
Console.WriteLine("----------------------");
}

static void Main(string[] args)
{
identityDev();
versiAplikasi();

Pesawat raptor = new Pesawat();
Pesawat typhoon = new Pesawat();

raptor.warna = "Metalik";
raptor.kecepatan = 500;
raptor.senjata = "Peluru Kendali";

typhoon.warna = "Black";
typhoon.kecepatan = 550;
typhoon.senjata = "Misil Ultrasonik";

Console.WriteLine(raptor.warna);
Console.WriteLine(raptor.kecepatan);
Console.WriteLine(raptor.senjata);

Console.WriteLine();
Console.WriteLine(typhoon.warna);
Console.WriteLine(typhoon.kecepatan);
Console.WriteLine(typhoon.senjata);

Console.ReadKey();

}
}
}

Contoh 3 source code tentang Class dan Object :

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace _2024_01_08_S03
{
//SOURCE CODE 0048
class Barang
{
string nama;
string merk;
string jenis;
double netto;
string kadaluarsa;

static void devIdentity() {
Console.WriteLine("-----------------------------");
Console.WriteLine(" APP, Oleh : Elfay ");
Console.WriteLine("-----------------------------");
}

static void Main(string[] args)
{
Barang bumbu = new Barang();
Barang penyedapRasa = new Barang();
Barang beras = new Barang();

bumbu.nama = "Kemiri";
bumbu.merk = "Desaku";
bumbu.jenis = "Serbuk";
bumbu.netto = 0.5;
bumbu.kadaluarsa = "8 Agustus 2024";

penyedapRasa.nama = "MSG";
penyedapRasa.merk = "Sasa";
penyedapRasa.jenis = "Serbuk";
penyedapRasa.netto = 0.25;
penyedapRasa.kadaluarsa = "12 November 2024";

beras.nama = "Super";
beras.merk = "Mangga";
beras.jenis = "Pack";
beras.netto = 100000;
beras.kadaluarsa = "10 Desember 2026";

devIdentity();
Console.WriteLine("Bumbu : ");
Console.WriteLine("Nama : " + bumbu.nama);
Console.WriteLine("Merk : " + bumbu.merk);
Console.WriteLine("Jenis : " + bumbu.jenis);
Console.WriteLine("Netto : " + bumbu.netto);
Console.WriteLine("Expired : " + bumbu.kadaluarsa);

Console.WriteLine("------------------------");
Console.WriteLine("Penyedap Rasa : ");
Console.WriteLine("Nama : " + penyedapRasa.nama);
Console.WriteLine("Merk : " + penyedapRasa.merk);
Console.WriteLine("Jenis : " + penyedapRasa.jenis);
Console.WriteLine("Netto : " + penyedapRasa.netto);
Console.WriteLine("Expired : " + penyedapRasa.kadaluarsa);

Console.WriteLine("------------------------");
Console.WriteLine("Beras : ");
Console.WriteLine("Nama : " + beras.nama);
Console.WriteLine("Merk : " + beras.merk);
Console.WriteLine("Jenis : " + beras.jenis);
Console.WriteLine("Netto : " + beras.netto);
Console.WriteLine("Expired : " + beras.kadaluarsa);


Console.ReadKey();

}
}
}

Java Builder : Antara Ant, Maven, dan Gradle

0

Java Builder adalah pola desain kreatif dalam pemrograman yang memungkinkan konstruksi objek kompleks secara langkah-demi-langkah. Pada dasarnya, Java Builder memisahkan proses pembuatan objek dari representasinya, memberikan keleluasaan dalam mendefinisikan langkah-langkah pembuatannya. Pola ini sangat berguna dalam pengembangan proyek-proyek besar di mana kompleksitas objek yang dibuat dapat dikontrol dengan lebih efisien.

Dalam penggunaannya, Java Builder sering digunakan untuk membangun objek yang memiliki banyak atribut atau konfigurasi yang bersifat opsional. Misalnya, pada proyek-proyek Android, penggunaan Java Builder dapat ditemui dalam pembuatan objek konfigurasi aplikasi yang memiliki banyak opsi, seperti tema, izin, dan pengaturan lainnya. Selain itu, dalam pengembangan aplikasi desktop dan web, Java Builder dapat membantu dalam menciptakan objek yang kompleks dan disesuaikan dengan kebutuhan proyek.

Perbedaan Ant, Maven, dan Gradle

Ant, Maven, dan Gradle merupakan alat-alat manajemen proyek yang berfokus pada pembangunan perangkat lunak dalam pemrograman Java. Perbedaan utama di antara ketiganya terletak pada pendekatan dan fungsionalitasnya. Ant, yang awalnya dikembangkan untuk memenuhi kebutuhan kompilasi dan pembangunan proyek Java, menggunakan skrip XML untuk mendefinisikan langkah-langkah pembangunan. Sementara itu, Maven menggunakan Model Objek Proyek (POM) untuk mengelola proses pembangunan, manajemen dependensi, dan distribusi proyek.

Di sisi lain, Gradle mengadopsi pendekatan yang lebih modern dengan menggunakan DSL (Domain-Specific Language) untuk mendefinisikan proyek. Gradle memiliki fleksibilitas yang tinggi dan memungkinkan pengembang untuk menyesuaikan konfigurasi proyek sesuai kebutuhan. Kelebihan ini membuat Gradle menjadi pilihan yang populer, terutama dalam proyek-proyek besar dan kompleks.

Implementasi dalam Project

Dalam implementasinya, pemilihan antara Ant, Maven, atau Gradle tergantung pada kebutuhan proyek dan preferensi pengembang. Ant, dengan skrip XML-nya, sering digunakan dalam proyek-proyek kecil atau proyek-proyek yang membutuhkan kendali yang sangat spesifik. Maven, dengan pendekatan konvensi daripada konfigurasi, cocok digunakan dalam proyek-proyek dengan struktur standar dan manajemen dependensi yang baik. Sementara itu, Gradle sering menjadi pilihan untuk proyek-proyek yang membutuhkan fleksibilitas tinggi dan penyesuaian konfigurasi yang mendalam.

Dalam konteks pengembangan Android, Gradle menjadi pilihan utama karena dukungannya yang kuat terhadap proyek-proyek Android. Proyek-proyek besar dengan struktur yang kompleks dan banyak dependensi dapat dielola dengan lebih efisien menggunakan Gradle. Namun, setiap alat memiliki kelebihan dan kekurangan masing-masing, dan pemilihan harus disesuaikan dengan kebutuhan dan karakteristik spesifik dari proyek yang sedang dikembangkan.

Paket Icon 3D Artificial intelligence

0

Berikut ini merupakan Artificial intelligence 3D Icon Pack yang di dalamnya terdapat icon 3D yang cocok untuk berbagai kebutuhan desain. Anda dapat mengimplementasikannya pada desain cetak, pengembangan APP, desain UI, desain web, presentasi, poster, iklan di media sosial, content creator dan masih banyak lagi.

Pada paket ini disiapkan 10 aset unik berbasis 3D dengan hasil render high quality. Selain itu, disertakan pula file project Blender sehingga kita dapat melakukan modifikasi, semisal warna atau bentuk, sesuai dengan kebutuhan kita. Selamat berkreasi.

LINKDOWNLOAD
LINKDOWNLOAD
LINKDOWNLOAD

Framework Java Terbaik untuk Proyek Web 2024

0

Java Framework adalah kumpulan kode yang telah ditentukan sebelumnya yang digunakan oleh para pengembang untuk membuat aplikasi web. Framework Java dalam pengembangan Java mencakup kelas dan fungsi yang mengontrol hardware, memproses input, dan berkomunikasi dengan aplikasi sistem. Framework Java berisi kode dan pustaka yang sudah ditulis sebelumnya, membantu pengembang membangun aplikasi tanpa harus menulis semua kode secara individual, dan biasanya bersifat open source.

Beberapa manfaat terbaik menggunakan framework Java untuk pengembangan Java antara lain:

Simplifikasi Kode
Pengembang yang berdedikasi menggunakan framework Java untuk menyederhanakan kode. Framework ini menghasilkan kode-kode yang sudah ditentukan, mengurangi kebutuhan menulis kode secara individual.

Berbagai Opsi Pengembangan
Selain menyederhanakan kode, framework untuk pengembangan Java menawarkan berbagai opsi dan fitur kepada pengembang. Framework pengembangan web Java memberikan platform untuk mengembangkan aplikasi responsif secara efisien.

Keamanan dan Keandalan
Framework pengembangan web Java menyediakan pustaka keamanan Java dan keandalan untuk aplikasi web yang telah diprogram. Dibangun dengan metode dan algoritma yang aman, andal, dan adaptif, framework akan selalu melakukan 100% dari tujuannya tanpa menyebabkan gangguan atau kerusakan pada aplikasi web Anda.

Dukungan yang Lebih Baik
Framework Java memiliki forum besar atau kelompok dukungan yang luas. Mereka membantu menyelesaikan masalah, memberikan solusi, dan menjawab pertanyaan pengguna. Dokumentasi yang baik juga disediakan untuk memahami framework pengembangan web Java.

Efisiensi yang Ditingkatkan
Tugas sehari-hari dapat diselesaikan dengan mudah menggunakan fungsi yang sudah ditentukan. Proses pengembangan web secara keseluruhan menjadi lebih mudah, cepat, dan efisien.

Framework Java Populer untuk 2024

  • Spring
    • Spring adalah framework pengembangan web Java open source yang ringan. Framework ini menyediakan dukungan infrastruktur untuk mengembangkan aplikasi Java dan populer untuk menciptakan aplikasi berperforma tinggi dengan menggunakan objek Java biasa.
  • Google Web Toolkit (GWT)
    • GWT adalah framework UI web Java terbaik dengan komunitas open source yang populer. Ringan dan mudah diintegrasikan.
  • Hibernate
    • Hibernate adalah salah satu framework populer yang menyediakan lapisan abstraksi untuk pemetaan objek relasional. Mengurangi kompleksitas implementasi database.
  • Struts
    • Struts adalah framework Java terbaik berbasis teknologi seperti JSP, JSTL, XML. Menyediakan implementasi arsitektur MVC dan kerangka kerja validasi siap pakai.
  • Play
    • Play adalah framework pengembangan web Java yang tangguh dan menjadi salah satu framework terbaik untuk REST API. Menggunakan Scala untuk pengembangan.
  • Grails
    • Grails adalah framework sumber terbuka teratas yang memungkinkan pengembangan aplikasi web dinamis dengan cepat menggunakan Java, Groovy, dan SQL.
  • JavaServer Faces (JSF)
    • JSF adalah teknologi open source untuk mengembangkan antarmuka pengguna  dengan Java. JSF mendukung pengembangan antarmuka pengguna dengan arsitektur berbasis komponen.
  • Dropwizard
    • Dropwizard adalah framework sumber terbuka untuk pengembangan Java yang memungkinkan pembuatan layanan RESTful. Menggunakan Hibernate sebagai lapisan akses data.
  • Vaadin
    • Vaadin adalah framework Java sumber terbuka terbaik untuk pengembangan web yang memungkinkan pembuatan aplikasi web kaya fitur dan lintas platform.
  • Wicket
    • Wicket adalah framework Java sumber terbuka yang memungkinkan pembuatan aplikasi web berfitur lengkap menggunakan pemrograman Java.
  • Blade
    • Blade adalah framework pengembangan web Java yang paling ringan dan penuh kinerja. Cocok untuk pengembangan aplikasi web full-stack.
  • ATG
    • ATG adalah platform komersial pengembangan web Java untuk situs e-commerce. Dimiliki oleh Oracle dan mendukung aplikasi B2B dan B2C yang besar dan kompleks.

Method dalam C#

0

Method merupakan sebuah blok kode yang hanya berjalan ketika ia dipanggil. Kita bisa melakukan passing data, yang dikenal sebagai parameter, ke dalam sebuah method.

Method digunakan untuk mengimplementasikan action tertentu dan dikenal juga dengan istilah fungsi. Lalu, mengapa kita menggunakan method ? Keuntungan utamanya adalah reuse code. Jadi, kita bisa membuat kode sekali tapi dapat digunakan secara berkali-kali.

Membuat dan Memanggil Method
Sebuah method didefinisikan dengan nama-method, diikuti tanda kurung (). Secara default, C# menyediakan beberapa method yang telah ditentukan, seperti fungsi Main().

class Program
{
static void Methodku() 
{
// kode yang akan dieksekusi

}
}

Untuk memanggil sebuah method, kita cukup menuliskan nama method diikuti dengan tanda () dan semicolon (;).

static void Methodku() 
{
Console.WriteLine("Semangat");
}

static void Main(string[] args)
{
Methodku(); //memanggil Methodku
}

Parameter dan Argumen
Kita dapat meneruskan informasi ke method sebagai parameter. Di dalam method, parameter ini bertindak sebagai variabel.

static void Methodku(string namanya) 
{
Console.WriteLine(namanya + " Wikrama");
}

static void Main(string[] args)
{
Methodku("Ardian");
Methodku("Cantika");
Methodku("Gilang Anja");
}

Pada contoh kasus di atas, method bernama Methodku memiliki parameter bertipe string dengan nama “namanya”. Dalam fungsi Main(), Methodku dipanggil dengan menyertakan parameternya. Parameter yang diteruskan pada method dinamakan “Argument”. Jadi, “namanya” adalah parameter, sedangkan “Ardian”, “Cantika”, dan “Gilang Wijaya” adalah argumen.

Contoh source code untuk belajar Method :

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace _2024_01_02_
{
//SOURCE CODE 0043
class Program
{
//Method judulApp dengan parameter 'pembuat'
static void judulApp(string pembuat) {
Console.WriteLine("=============================");
Console.WriteLine(" APLIKLASIKU ");
Console.WriteLine(" Oleh : " + pembuat );
Console.WriteLine("=============================");
}

static void hitunganPP(int aa, int bb) {
int panjang;
int lebar;
int luasPP;

panjang = aa;
lebar = bb;
luasPP = panjang * lebar;

Console.WriteLine("Luas Persegi Panjang dengan P : " + panjang + " dan L : " + lebar + " adalah " + luasPP);
}

static void identitasku(string nm, string kota){
Console.WriteLine("Namaku : " + nm);
Console.WriteLine("Alamat : " + kota + " City");
}

static void segitiga(double ab, double cb)
{
double alas = ab;
double tinggi= cb;
double luasSegitiga;
luasSegitiga = 0.5 * alas * tinggi;

Console.WriteLine("Luas segitiga dengan alas = " + alas + " dan tinggi = " + tinggi + " adalah " + luasSegitiga);

}

static void Main(string[] args) //Method Main
{
judulApp("ELFAY");
identitasku("Elfay", "Surabaya");
hitunganPP(45,16);
segitiga(14,18);


Console.ReadKey();
}

}
}
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace _2024_01_02_002
{ //SOURCE CODE 0044
// untuk SOURCE CODE 0045, SC 0044 ini ditambah dengan fungsi pengurangan dan pembagian
class Program
{
static void identitas() {
Console.WriteLine("=============================================");
Console.WriteLine(" Belajar Method ");
Console.WriteLine(" Oleh : Elfay ");
Console.WriteLine("=============================================");

}

static int penambahan(int aa, int bb) {
int angka1 = aa;
int angka2 = bb;
int hasilTambah = angka1 + angka2;

return hasilTambah;
}

static int perkalian(int cc, int dd) {
int angSatu = cc;
int angDua = dd;
int hasiKali = angSatu * angDua;

return hasiKali;
}

static void Main(string[] args)
{
int number1;
int number2;

number1 = penambahan(100, 250);
number2 = perkalian(18, 26);

//Console.WriteLine(number1);
//Console.WriteLine(number2);
identitas();
Console.WriteLine();
Console.WriteLine("Hasil penjumlahan angka 100 dan 250 adalah " + number1);
Console.WriteLine("Hasil penjumlahan angka 18 dan 26 adalah " + number2);

Console.ReadKey();
}
}
}


Aset Desain : 50 Flex Poster Background

0

Kumpulan gambar latar belakang dengan kualitas bagus, cocok sebagai alternatif bahan desain anda. Koleksi background bisa diimplementasikan dalam berbagai karya desain utamanya pembuatan poster. Anda bisa memanfaatkan berbagai editor atau tool grafis dalam implementasinya.

Beragam pilihan gambar yang ada dalam koleksi ini menawarkan cita rasa genre karya yang tentunya unik. Secara umum, tentu menyesuaikan kreatifitas user dalam penggunaannya. Semoga sedikit aset ini bisa bermanfaat dan membantu para kawan desainer dalam pekerjaannya. Terima kasih.

LINKDOWNLOAD
LINKDOWNLOAD
LINKDOWNLOAD

Uji Coba Database LiteDB

0

LiteDB merupakan sebuah database yang ringan (lightweight), open source, dan bersifat NoSQL database (seperti MongoDB). Mengingat ukuran database-nya yang kecil, LiteDB cocok untuk proyek skala kecil.

Berdasarkan laman resminya, pengembangan LiteDB terinspirasi dari MongoDB database dan API-nya pun sangat mirip dengan API .NET official milik MongoDB. Penggunaannya sangat mudah. Kita tinggal meng-copy-kan file LiteDB.dll ke dalam folder Bin project kita dan menambahkannya ke dalam Reference.

Mengingat LiteDB ini sifatnya adalah aplikasi yang serverless, kita tidak perlu melakukan instalasi aplikasi lain sebelum bisa menggunakannya. Kita juga tidak perlu memikirkan arsitektur client-server dengan metode penggunaannya yang sederhana.

“An open source MongoDB-like database with zero configuration – mobile ready”

Selanjutnya, di sini kita juga mencoba bagaimana implementasi sederhana dari LiteDB ini. Langkahnya, kita membuat sebuah project berbasis WinForm di Ms. Visual Studio (uji coba ini menggunakan Ms. Visual Studio 2012), lalu pada form yang tampil, kita menambahkan dua button dengan masing-masing teksnya “Go” dan “Exit”. Button “Go” untuk mengeksekusi code uji coba LiteDB, sedangkan button “Exit” untuk keluar aplikasi.

Sebelum memasukkan code, jangan lupa untuk menambahkan LiteDB.dll dengan cara klik kanan project lalu pilih “Add Reference…”. File LiteDB.dll sudah kami sertakan dalam project yang bisa didownload pada link di bawah.

A lightweight and open-source NoSQL database designed for small projects

Langkah berikutnya adalah kita menambahkan source code untuk uji coba yang diambil dari laman “Getting Started” resmi. Silakan lakukan penyesuaian dengan kebutuhan project yang kita gunakan.

Adapun source yang kita gunakan bisa dilihat di bawah ini :

// Create your POCO class entity
public class Customer
{
    public int Id { get; set; }
    public string Name { get; set; }
    public string[] Phones { get; set; }
    public bool IsActive { get; set; }
}

// Open database (or create if doesn't exist)
using(var db = new LiteDatabase(@"C:\Temp\MyData.db"))
{
    // Get a collection (or create, if doesn't exist)
    var col = db.GetCollection<Customer>("customers");

    // Create your new customer instance
    var customer = new Customer
    { 
        Name = "John Doe", 
        Phones = new string[] { "8000-0000", "9000-0000" }, 
        IsActive = true
    };
	
    // Insert new customer document (Id will be auto-incremented)
    col.Insert(customer);
	
    // Update a document inside a collection
    customer.Name = "Jane Doe";
	
    col.Update(customer);
	
    // Index document using document Name property
    col.EnsureIndex(x => x.Name);
	
    // Use LINQ to query documents (filter, sort, transform)
    var results = col.Query()
        .Where(x => x.Name.StartsWith("J"))
        .OrderBy(x => x.Name)
        .Select(x => new { x.Name, NameUpper = x.Name.ToUpper() })
        .Limit(10)
        .ToList();

    // Let's create an index in phone numbers (using expression). It's a multikey index
    col.EnsureIndex(x => x.Phones); 

    // and now we can query phones
    var r = col.FindOne(x => x.Phones.Contains("8888-5555"));
}

Setelah semuanya selesai, kita bisa melakukan Run pada project kita. Apabila berhasil, seharusnya akan muncul file berekstensi .db di dalam direktori Bin. File .db ini bisa kita buka menggunakan LiteDB Studio yang juga kami sertakan di dalam folder project. Uji coba berhasil dilakukan dan sesuai dengan deskripsi yang diberikan, LiteDB memang sangat ringan dan sangat praktis dalam penggunaannya.

LINKDOWNLOAD
LINKDOWNLOAD
LINKDOWNLOAD

0FansLike
0FollowersFollow
0SubscribersSubscribe
- Advertisement -

Recent Posts