Mongodb PHP laravel duplicate key


Beberapa saat yang lalu, saat mengerjakan sebuah project dengan menggunakan laravel dan mongodb saya menemukan error seperti berikut :

caused by :: 11000 E11000 duplicate key error index
error tersebut muncul saat looping tepatnya saat proses insert pada sebuah collection di mongodb contoh script :
for ($i=0; $i < 5; $i++) { 
    $arrayName = array('key1' => 'jono','key2' => 'paniem');

    DB::table('nama_collection')->insert($arrayName);
}

Dalam kasus saya coding di atas akan error karena variable $arrayName memiliki nilai yang sama ketika terjadi looping yang ke dua. Kita perlu menggunakan fungsi unset($arrayName) :
for ($i=0; $i < 5; $i++) { 
    $arrayName = array('key1' => 'jono','key2' => 'paniem');

    DB::table('nama_collection')->insert($arrayName);
    unset($arrayName);
}

Pada coding di atas tidak akan muncul lagi duplicate key pada proses insert di mongodb, karena variable $namaArray sudah di unset.

Mengambil content website dengan Simple Html Dom

Assalamualaikum...
Dalam post kali ini saya akan membuat tulisan tentang Simple HTML Dom. Ini adalam sebuah library PHP yang membantu kita untuk Scraping/Grabing kontent dari sebuah website lain.

Scarping
Adalah proses penggalian sejumlah besar informasi untuk sebuah situs web dalam bentuk html.
Untuk mengikuti tutorial ini kamu paling tidak paham

a. Menguasai PHP (dasar)
b. Html (dasar)
c. CSS (dasar)
d. menggunakan browser Chrome (optional biar enak ngikutin step2 nya nanti).

di sini saya akan menjelaskan cara mengambil text/content dari sebuah website ( BMKG ).

1. Download Simple HTML Dom dari sourceforge.
2. Ektrak file simple_html_dom.php ke folder.
3. Buat file baru dengan nama index.php.

buka index.php
4. Panggil library simple html praser yang sudah kita ektrak dalam satu folder dengan index tadi

index.php:
include('simple_html_dom.php');

5. dalam kasus ini saya akan mengambil text dari website BMKG link :
Text yang akan kita ambil

http://www.bmkg.go.id/BMKG_Pusat/Informasi_Cuaca/Prakiraan_Cuaca/Prakiraan_Cuaca_Indonesia.bmkg

6. Mengetahui element text/content yang mau kita ambil tersebut menggunakan CSS class/id apa.
contoh 1:
<div class="pc-mode"> ini link Pc-mode </div>
berarti element tersebut menggunakan class .pc-mode.

contoh 2:
<div class="pc-mode gambar"> ini link Pc-mode </div>
berarti element tersebut menggunakan class .pc-mode atau .gambar. (memakai 2 class bersama)

7. Buka link yang akan kita ambil text nya.

pada browser chrome : klik kanan - inspect element 

ini adalah hal terpenting dalam tutorial ini (pengambilan class/id), jika kita salah menentukan element nya maka tidak akan muncul hasilnya

pada gambar di atas dapat di lihat class="row(spasi)show-grid(spasi)ft12" . dalam penggunaan elementnya kita dapat menulis .ft12 a yang artinya kita akan mengambil sebuah element di dalam class ft12 yang memiliki tag HTML a (link).

index.php :
//panggil library simple dom parser
include('simple_html_dom.php');

// Url yang akan kita ambil text/content nya
$html = file_get_html('http://www.bmkg.go.id/BMKG_Pusat/Informasi_Cuaca/Prakiraan_Cuaca/Prakiraan_Cuaca_Indonesia.bmkg');

//elemet text yang mau kita ambil
$wilayah = $html->find('.row.show-grid.ft12 a');

// kita looping hasilnya
foreach ($wilayah as $key => $value) {
//fungsi plaintext : mengambil text 
echo $value->plaintext;
echo "<br>";
}
hasil :


untuk post kali ini cukup sekian dulu. Untuk fungsi simple dom parser bisa di baca di web nya. Di post selanjutnya akan saya share cara scraping website lainnya. Jika ada kesulitan bisa tinggal kan koment di bawah :D

Error fopen,fclose on line 44 dan line 44 - AbanteCart


Hemm judulnya kurang menarik ya...haha error ini muncul ketika akan melanjutkan coding applikasi abantecart yang sudah ada. Mungkin karena permissionnya yang saya clone dari gitlab.

Warning: fopen(/home/wwwsapph/public_html/abante/system/logs/error.txt) [function.fopen]: failed to open stream: Disk quota exceeded in/home/wwwsapph/public_html/abante/core/lib/log.php on line 43

Warning: fwrite() expects parameter 1 to be resource, boolean given in /home/wwwsapph/public_html/abante/core/lib/log.php on line 44

Warning: fclose() expects parameter 1 to be resource, boolean given in /home/wwwsapph/public_html/abante/core/lib/log.php on line 45

Warning: fopen(/home/wwwsapph/public_html/abante/system/logs/error.txt) [function.fopen]: failed to open stream: Disk quota exceeded in/home/wwwsapph/public_html/abante/core/lib/log.php on line 43
kalau kalian menemukan error seperti di atas hal ini di karenakan permission. Kita harus merubah permission "error.txt" tepatnya ada di folder abante - system - logs. Kita rubah permissionnya lewat terminal. Pada derektori applikasi kita masuk terlebih dahulu ke folder logs
kita bisa mengecek dengan mengetik pada terminal :
ls
list folder abante
 kita bisa masuk ke folder system/logs atau kita bisa mengatur permissionnya langsung dengan mengetik : (dalam kasus ini saya memakai Mac OS)

sudo chmod 777 system/logs/error.txt
coba reload halaman web kalian, dan error tidak akan muncul kembali. :) 

Halaman baru di customer page - AbanteCart

Asslamualaikum...
Kali ini saya mendapat sebuah project baru, dalam project ini saya di tugaskan membuat sebuah aplikasi memanfaatkan Abantecart.  Masih bingung bagaimana develope ecommerce ini, dan progres saat ini baru sekedar install di local dan mencoba manage inventorynya. Baca-baca di wiki nya, masih agak bingung jadi posting kali ini hanya sekedar catatan.. kalau ada salah bisa di koreksi :)

Menambah sebuah halaman baru di Customer page.

halaman di atas akan muncul setelah user/customer login. Dari yang saya coba untuk membuat sebuah halaman baru kita bisa membuat beberapa file.

1. Masuk ke Storefront - controller - pages - account. Di dalam folder ini ada banyak file php, file file tersebut adalah controller yang akan di gunakan untuk mengatur view dari halaman yang kita buat.

buat sebuah file ,dalam kasus ini saya membuat sebuah file dengan nama hello.php . Kemudian dalam file hello.php kita tulis kode berikut

class ControllerPagesAccountHello extends AController {
  public function main() {
    $this->processTemplate('pages/account/hello.tpl');

    }
}
seperti yang di lihat "ControllerPagesAccountHello" adalah nama yang kita buat dan url yang akan kita tuju di browser nanti "index.php?rt=account/hello". dan "pages/account/hello.tpl" pada line 3 mereferensikan file view yang kan di munculkan.

2. Masuk ke Storeront - view - default_html5 - template - pages - account.

dalam foler ini kita buat file html nya, di AbanteCart menggunakan extensi .tpl kmau bisa baca SMARTY . Buat file dengan nama hello.tpl dan kemudian test dengan tulis string terserah.
kalau sudah kamu bisa buka halaman yang baru kita buat "index.php?rt=account/hello".
http://localhost/~pcmode/abantecart/index.php?rt=account/hello

final

dalam kasus ini saya belum menambahkan bredcump dll ya... :) .

Root Xperia ZL 10.5.A.0.230

Assalamualaikum...
kali ini saya akan share cara root Xperia ZL firmware 10.5.A.0.230. Sebelumnya saya gagal untuk root firmware 10.5.A.0.230. Ini mungkin karena ini adalah update terbaru dari sony jadi cara root yang ada dari XDA atau pun forum kaskus tidak ada yang berhasil.

1. Pertama download dahulu TowelRoot, kemudian install di android kamu. Mungkin kamu bisa mengecek Settings - Security dan check agar dapat menginstall apps dari unknown sources
2. Setelah terinstall kamu bisabuka applikasinya. Kamu akan lihat tampilan seperti di bawah ini,


3. Klik make it ra1n, setelah itu kamu bisa restart android kamu.
4. Untuk mengecek apakah root berhasil atau tidak kamu bisa download root checker di market



Jika tampilan seperti di atas maka proses root sudah berhasil, kamu bisa install applikasi pembantu seperti SUPERSU untuk membantu akses root.
5. Selesai
6. Jangan kabur aje gan... jangan lupa koment ya... :D

cara root ini dari sumbernya berjudul How to root sony Xperia Z 4.4.2 kitkat, tapi saya implementasikan di Xperia ZL berhasil. Jadi cara ini sebenarnya juga bisa di pakai di Xperia  Z kamu.