Monday, September 2, 2019

GoJek terlambat membuat saya jatuh cinta

Oke tulisan ini bukan tentang cinta - cintaan ya, tulisan ini merupakan curahan pemikiran saya sebagai seorang pelanggan ojek online. Tulisan ini tidak bermaksud menjatuhkan atau mendiskreditkan pihak - pihak terkait, tulisan ini pure curahan saya aja terkait pengalaman saya ber ojol ria. 

Kisah di mulai ketika saya pertama kali kerja di jakarta pada akhir tahun 2016, sebenarnya ojek online ini sudah populer jauh sebelum itu, namun di Bandung masih belum terasa hype nya dan masih banyak ojek pangkalan yang menentang adanya ojek online. 

Balik ke saya yang di jakarta, pertama saya di jakarta saya tidak terlalu peduli dengan ojek online karena jarang sekali kemana - mana dan kemana - mana naik busway KRL udah cukup. Namun seiring dengan berjalan nya waktu, keperluan akan ojek online tidak dapat di hindari. Saya banyak menemui situasi dimana ojek online diperlukan, selain itu waktu itu mereka (perusahaan OJOL) sedang gencar - gencar nya ngasih promo.

Dari situ saya install aplikasi ojek online. Ada dua pilihan, Gojek dan Grab (Uber belum masuk waktu itu). Saya sebagai anak bangsa tentu memilih Gojek yang merupakan karya anak bangsa (nama perusahaan nya aja PT Aplikasi Karya Anak Bangsa). Install install install, masuk lah ke bagian registrasi, naaah di sini saya lupa detail nya tapi yang saya inget saya terkendala di registrasi ini entah stuck di aplikasi nya entah perihal verifikasi nya entahlah, lupa saya udah lama soal nya ... intinya saya mengalami kesulitan dan aplikasi gojek nya ga bisa di pake. 

Saya ngga ribet cari solusi kayak ngehubungin atau kirim email ke CS nya gojek, karena waktu itu Gojek bukan satu satu nya aplikasi sejenis. Saya coba install aplikasi ojol bikinan negara tetangga, Grab. Install install install, masuk ke bagian registrasi, isi isi data, done aplikasi langsung bisa di pake. Saya ngga inget detail nya, tapi kemudahan nya terasa banget. Di sinilah titik dimana saya menjadi pengguna ojol yang sering menggunakan Grab sampe sekarang dan jadi platinum user nya, meskipun pada akhir nya saya bisa juga registrasi di GoJek dan menjadi pengguna Gojek juga di beberapa situasi. Namun kesan pertama yang di berikan Grab sangat berarti bagi saya (sori lebay).

Okeee sampe di sini dulu, tulisan ini akan di update atau di lanjut di postingan selanjut nya ... 



Share:

Friday, August 9, 2019

5 Gitar Instrumental Rock Keren yang ada di Youtube

Banyak banget gitaris handal kayak Steve Vai, Joe Satriani, John Pettrucci, dan lain - lain. Mereka terkenal, lagu nya juga enak - enak, skill gausah di tanya lagi.

Di postingan ini, saya ga akan bahas lagu - lagu mereka. Saya yakin banyak orang udah tau lagu - lagu mereka, mungkin di postingan lain sepertinya. Saya ingin menunjukan beberapa lagu, tepat nya lima lagu instrumen gitar melodic yang menurut saya enak dari youtube. Tanpa basa basi, selamat mendengarkan. 

1. Sixto sounds, Steppo & Zircon - The passing of the blue crown


lagu ini merupakan versi remix dari lagu tema megaman 3, bisa cek disini.

2. Robert Spurling - Overcome





3. Robert Spurling - Falling Behind


4. 彩音 - XI-ON - Kaze no Junkan ~ Wind Tour



5. a2c - Crying Moon



Gimana, gimana? enak? tuliskan pendapat kalian atau rekomendasi lagu - lagu sejenis yang menurut kalian enak di kolom komentar ya. 





Share:

Wednesday, July 3, 2019

K2 Administrator Account dan K2 Service Account

Di dalam K2 ada dua akun yang di definisikan dalam konfigurasi
  1. Admin Account 
  2. Service Account

Admin account adalah akun admin untuk akses semua fitur k2
Service Account adalah akun untuk keperluan akses koneksi service - service k2 

Admin account & service account bisa di setting di k2 blackpearl setup manager.

Contoh koneksi K2 menggunakan service account.
Pada bagian connection string bagian Integrated, jika di isi true maka username dan password akan mengambil dari sistem yang sudah di definisikan di configuration manager. Jika false, maka kita yang define sendiri. 


contoh connection string nya: 
Integrated=False;IsPrimaryLogin=True;Authenticate=True;EncryptedPassword=True;Host=localhost;Port=5252;WindowsDomain=domain;UserID=akun_admin;Password=password

Melihat Service Account mana yang sedang di gunakan

  1. Masuk ke server aplikasi
  2. masuk ke services.msc
  3. cari k2 blackpearl server
  4. klik kanan properties
  5. pilih tab Log On

Problem terkait : 

  1. Server is not configured for windows authentication
problem ini biasanya di sebabkan karena Service Account yang terdaftar di configuration manager ada problem. Coba configure ulang setup manager nya. kalau masih tidak bisa pakai saja Integrated=False dan definisikan sendiri username dan password di connection string nya, seperti contoh di atas.

  1. User ... does not have Administrator rights.
Problem ini terjadi karena K2 Administrator Account nya salah, ganti dengan akun K2 Administrator yang sesuai menggunakan setup manager
Share:

Monday, June 24, 2019

Cara shrink database file SQL Server

Oke, karena sering dapet keluhan terkait disk server yang membengkak, banyak cara agar size nya bisa berkurang. Salah satu nya nge shrink database file nya SQL Server. 

Tanpa basa - basi lagi langsung saja kita terjun ke tata cara nya :

1. Cek size dari database file yang ada
select name as logical_name, (size*8)/1024 sizeMB from sys.master_files 

2. Shrink file database nya!
USE [Nama_DB]

GO
ALTER DATABASE [Nama_DB]

SET RECOVERY SIMPLE WITH NO_WAIT;

GO

DBCC SHRINKFILE('Nama_file' , 1);  --Nama_file bisa di dapat dari hasil query sebelumnya. 

GO

ALTER DATABASE [Nama_DB]

SET RECOVERY FULL WITH NO_WAIT;

GO


Done...

Catatan : di tulisan kali ini saya hanya membahas cara shrink nya saja, terkait efek samping, kegunaan, pengertian shrink itu sendiri bisa di cari di google. Atau mungkin saya bahas di postingan berbeda (mungkin, lain waktu, entah kapan). Untuk cari aman, biasanya saya cuman melakukan shrink ke file - file 'Log' nya aja,  karena belum tau efek samping nya. 

silahkan tinggalkan komentar, CMIIW jika ada yang kurang tepat dari postingan ini. 

Selamat bekerja ...
Share:

Friday, June 7, 2019

Entity Framework vs Dapper siapa yang lebih enak?

Pada saat membuat aplikasi menggunakan .NET terdapat beberapa pertimbagan ORM mana yang mau di pakai. Apakah ORM yang cepat dan efisien tapi minim fitur? atau ORM yang dengan kecepatan sedikit lebih lambat tapi memiliki fitur lengkap? hmmm ...

Dalam artikel ini saya akan membandingkan dua ORM yang biasa digunakan di dalam pengembangan apliaksi menggunakan .NET yaitu Dapper dan Entity Framework.

Sebelum kita mulai berikut pengertian dari ORM. Secara sederhana ORM (Object Relational Mapping) adalah sebuah layer di dalam pemrograman yang menjembatani/ memetakan database dengan object di dalam aplikasi.


Oke kita mulai perbandingan antara EF dengan Dapper

1. Entity Framework

Entity Framework adalah framework buatan microsoft. EF memberikan kemudahan bagi developer seperti men generate table dari class yang dibuat, men generate fungsi CRUD dan lain lain.

Berikut kelebihan dan kekurangan dari EF.

Kelebihan

  • Memberikan fitur generate code secara otomatis
  • Memberikan fitur desain secara visual model dan mapping object
  • Support LINQ (bahasa untuk query query an bikinan microsoft juga)
  • Grrratis (sudah include untuk versi .NET 3.5 SP1 keatas)
Kekurangan
  • Keterbatasan modifikasi, karena code dan query sudah di generate
  • Jika ada perubahan skema di dalam database, skema di EF juga harus di update
  • Kurang cocok untuk domain model/ aplikasi yang besar
  • Lazy Loading (silahkan di gugel)
2. Dapper

Dapper adalah ORM yang dikembangkan secara open source. Jika di kategorikan, dapper masuk kedalam kategori Micro ORM. Micro ORM adalah ORM versi lite dengan versi dasar seperlunya yang berorientasi pada performa. Dapper memiliki julukan "King Of Micro ORM" dengan performa yang dapat diandalkan. 

Berikut kelebihan dan kekurangan dari Dapper 

Kelebihan 
  • Kemudahan merubah hasil query menjadi object
  • Cepat dan efisien
  • Kemudahan eksekusi query
  • Grrratis (Open source)
Kekurangan
  • Tidak men generate class model ( harus bikin sendiri )
  • Tidak men generate query ( harus bikin sendiri )
  • Tidak dapat menelusuri object dan perubahan nya ( salah satu fitur full ORM )

Kesimpulan
Dari pemaparan di atas EF dan Dapper memiliki tempat nya masing - masing tergantung dari kepentingan dan keperluan dari developer. Entah itu EF dengan kecepatan development nya yang memberikan kemudahan bagi developer dengan men generate ini dan itu? atau Dapper dengan kecepatan query nya yang dapat diandalkan tapi beberapa bagian harus bikin sendiri? It's up to our need sebagai developer.

Namun preferensi pribadi saya, saya lebih memilih dapper dengan performa query nya meskipun dalam beberapa kasus Full ORM bisa lebih cepat karena ada fitur cache di dalam nya, namun hal itu hanya berlaku untuk pemanggilan objek yang sama saja. Kekurangan nya yang tidak memberikan fitur "Generate" justru menurut saya merupakan kelebihan dimana kebebasan modifikasi ada di tangan kita sebagai developer. Bagaimana menurut anda? manakah yang lebih gurih? silahkan tinggalkan komentar ... 


Share:

Monday, March 25, 2019

Hal Dasar Yang Perlu Diketahui dalam React JS

  1. Component/ Functional component
Component adalah method/ perilaku yang merepresentasikan bagian dari web misal textbox, label, radiobutton, etc. React di tulis di dalam tag script denga type "text/babel". Berikut contoh penulisan component :

<script type="text/babel">
function OurFirstComponent() {
return (
// Code that represents the UI element goes here
);
}
</script>

atau dapat di tulis juga seperti ini

const OurFirstComponent = () => {
return (
// Stuff to make this component goes here
);
}

  1. JSX
Selain menggunakan HTML Rect juga dapat menggunakan JSX. JSX merupakan script HTML yang di tuliskan di dalam script javascript, berikut contoh nya : 

<script type="text/babel">
function OurFirstComponent() {
return (
<h1>Hello, I am a React Component!</h1>
);
}
</script>

Note : karena "class" merupakan reserved word di javascript jadi kita harus mengganti atribut tag "class" html menjadi ClassName di JSX.

  1. ReactDOM
ReactDOM merupakan bagian dari react JS yang bertugas untuk melakukan render JSX ke halam HTML. berikut contoh nya : 
<script type="text/babel">
function OurFirstComponent() {
return (
<h1>Hello, I am a React Component!</h1>
);
}
const placeWeWantToPutComponent = document.getElementById('hook'); //hook adalah id dari tag
ReactDOM.render(OurFirstComponent(), placeWeWantToPutComponent);
</script>

Atau kita dapat melakukan nya seperti ini : 

ReactDOM.render(<OurFirstComponent />, placeWeWantToPutComponent);

  1. Component di dalam Component
Kita dapat memanggil component di dalam component, contoh : 
<script type="text/babel">
function OurFirstComponent() {
return (
<h1>I am the child!</h1>
);
}
function Container() {
return (
<div>
<h1>I am the parent!</h1>
<OurFirstComponent />
</div>
);
}
const placeWeWantToPutComponent = document.getElementById('hook');
ReactDOM.render(<Container />, placeWeWantToPutComponent);
</script>

  1. Class Component
Jika sebelum nya component bisa di katakan sebagai method/function, React menyediakan penggunaan class di dalam javascript sebagai Component, yang di namakan Class Component. Berikut contoh penggunaan nya :

class Container extends React.Component {
render() {
return (
<div>
<h1>I am the parent!</h1>
<OurFirstComponent />
</div>
);
}
}
const placeWeWantToPutComponent = document.getElementById('hook');
ReactDOM.render(<Container />, placeWeWantToPutComponent);

Class component harus memiliki function render() untuk mengembalikan nilai JSX yang ada di dalam nya. Sama seperti Component/ Functional Component, Class Component dapat di panggil menggunakan notasi seperti ini : <SebuahClassComponent /> 

Note ; Jika masih isa pakai functional component usahakan jangan pakai class component karena agak sulit dibaca (kata author nya). 

  1. Javascript di dalam JSX
Berikut cara memanggil javascript di dalam JSX : 

class Container extends React.Component {
render() {
const greeting = 'I am a string!';
return (
<div>
<h1>{ greeting }</h1>
<OurFirstComponent />
</div>
);
}
}

Contoh lain nya : 

class Container extends React.Component {
render() {
const addNumbers = (num1, num2) => {
return num1 + num2;
};
return (
<div>
<h1>The sum is: { addNumbers(1, 2) }</h1>
<OurFirstComponent />
</div>
);
}
}

  1. State 
Class Component dapat menyimpan informasi tentang informasi yang sedang terjadi, informasi tersebut di sebut dengan state. Berikut contoh penggunaan nya : 

class Container extends React.Component {
constructor(props) {
super(props);
this.state = { isMusicPlaying: false };
}
render() {
return (
);
}
}

dari code di atas state di isi object dengan key isMusicPlaying dan value false. 

Sifat pendefinisian constructor nya bersifat baku, harus seperti itu :  
constructor(props) {
super(props);
}

Note : props adalah informasi yang di bagikan dari parent ke child.

  1. Event Handler
class Container extends React.Component {
constructor(props) {
super(props);
this.state = { isMusicPlaying: false };
}
handleClick(event) {
if (event.state.isMusicPlaying) {
event.setState({ isMusicPlaying: false });
} else {
event.setState({ isMusicPlaying: true });
}
};
render() {
let status = this.state.isMusicPlaying
? 'Playing :)'
: 'Not playing :(';
return (
<div>
<h1 onClick={this.handleClick.bind(this)}>{ status }</h1>
</div>
);
}
}

Dari code di atas, pada saat pertama kali dio render(), program akan mengecek apakah state true atau false. Jika true maka "Playing" jika false maka "Not Playing". 

Selanjutnya di dalam bagian JSX, pada tag h1 di tambahkan event listener javascript "onClick". event tersebut diisi dengan method handleClick yang akan mengeksekusi sesuatu jika tag h1 di click. 

Note : sebenar nya di dalam method handleClick parameter event bisa di ganti pakai this aja, jadi ga usah pakai parameter.

  1. Hubungan komunikasi antar Component
Berikut contoh hubungan antara class component dengan component (function) diluar class tersebut : 

class Container extends React.Component {
constructor(props) {
super(props);
this.state = { isMusicPlaying: false };
}
handleClick() {
if (this.state.isMusicPlaying) {
this.setState({ isMusicPlaying: false });
} else {
this.setState({ isMusicPlaying: true });
}
};
render() {
return (
<div>
<PlayButton isMusicPlaying={this.state.isMusicPlaying} />
</div>
);
}
}

berikut isi dari function PlayButton
function PlayButton(props) {
const className = props.isMusicPlaying ? 'play active' : 'play';
return <a href="#" title="Play video" className={className} />;
}

function PlayButton menerima object yang di passing dari class Containe dimana function PlayButton di panggil.

Selain mempassing informasi, kita juga bisa mempasing function seperti contoh sebagai berikut : 
function PlayButton(props) {
const className = props.isMusicPlaying ? 'play active' : 'play';
return <a onClick={props.onClick} href="#" title="Play video" className={className} />;
}
class Container extends React.Component {
constructor(props) {
super(props);
this.state = { isMusicPlaying: false };
}
handleClick() {
if (this.state.isMusicPlaying) {
this.setState({ isMusicPlaying: false });
} else {
this.setState({ isMusicPlaying: true });
}
};
render() {
return (
<div>
<PlayButton
onClick={this.handleClick.bind(this)}
isMusicPlaying={this.state.isMusicPlaying}
/>
</div>
);
}
}



dari code di atas, dapat kita lihat di bagian render() dimana Component PlayButton di panggil, di beri dua parameter yaitu onClick yang berupa function dan isMusicPlaying. Keduanya di bugnkus menjadi props pada saat di terima di Component PlayButton.

Tulisan ini merupakan penyampaian versi saya dari link berikut : https://medium.freecodecamp.org/everything-you-need-to-know-about-react-eaedf53238c4

silahkan di kunjungi. bagus, mudah di pahami. 
 
Share: