Apa sih bedanya UI dan UX?

ui-vs-ux
Standar

Yeah, ini pertanyaan yang cukup sering ditanyakan. Biasanya bingung dengan jargon UI dan UX. Padahal, ini sangat sederhana. Jargon apapun, coba diartikan dulu ke bahasa yang anda mengerti. Misalnya ke Bahasa Indonesia.

UI singkatan dari User Interface. User Interface artinya adalah Antar Muka Pengguna. Apa itu antar muka? Anggap aja atara muka loe dan muka orang lain. Liat wajahnya, tangannya, badannya, dll. Anda bisa tau seseorang dengan melihat mukanya.

Kalau dihubungkan dengan web design, itu sama aja dengan ngeliat tombol, link, navigasi, sidebar, dll. Antara muka loe sebagai pengguna dengan muka di design.

Sedangkan UX singkatan dari User Experience. Coba kira artikan ke Bahasa Indonesia. User Experience artinya Pengalaman Pengguna. Sesuatu yang dialami oleh pengguna saat melihat atau menggunakan karya atau suatu product.

Misalnya saos seperti di gambar, kalau ente menggunakan botol saos itu, mana yang lebih enak? Kalau ente normal, tentu lebih enak yang kanan. Karena saos-nya udah pasti turun ke bawah pas dibutuhkan. Apa yang anda alami? Yaa lebih enak. Nah!! Itulah UX. Apa yang anda alami, enak atau nggak. Good experience atau bad experience?

Kalau dihubungkan dengan web design itu seperti buka website ada popup mengganggu, bentuk tombol nggak seperti tombol sehingga gak tau kalau itu bisa diklik, untuk pencarian ada filter atau tidak, dll.

Simple kan? :/ Gak usah ribet-ribet. Intinya, artikan ke bahasa yang anda mengerti, Bahasa Indonesia.

Laravel 5 – Trik Menggunakan Queue tanpa akses SSH

laravel-framework
Standar

Pada suatu hari… saya membuat code untuk mengirimkan SMS broadcast melalui Zenziva. Seperti yang kita tau, karena ini broadcast, jadi ada kemungkinan pengiriman akan memakan waktu yang cukup lama. Makin besar jumlah user-nya, maka akan makin lama prosesnya.

Jika langsung eksekusi di web tentu saja request akan time out. Jika menggunakan set_time_limit(0), problem request time out bisa diatasi. TAPI, masa iya menunggu berjam-jam menunggu proses pengiriman SMS selesai dilakukan? :/ Belum lagi problem “connection reset” atau browser crash, atau apapunlah.

Solusinya kita bisa menggunakan queue. Queue dalam Bahasa Indonesia artinya adalah antrian. Setiap perintah yang akan dieksekusi akan dimasukkan ke antrian. Enaknya adalah, perintah ini akan dieksekusi pada proses yang berbeda di background. Sehingga kita tidak perlu menunggu http request.

Nah, tapi problem lainnya adalah saya tidak punya akses menggunakan SSH untuk install ini itu seperti Beanstalkd, Redis, Gearman, RabbitMQ, atau apapun itu yang bisa membantu proses queue ini.

Server telah di-install CPanel, tapi bukan shared hosting. Daripada minta akses SSH dan karena environment-nya seakan-akan adalah shared hosting, saya pikir lebih baik sekalian experiment :p (bukan social experiment, ntar ditabok).

How to

By default di Laravel 5, sudah ada queue driver menggunakan database. Driver ini belum ada di Laravel 4. So, tinggal ganti queue driver dan lakukan migrations.

Edit file .env atau config/queue.php, ubah driver menjadi database.

Jalankan artisan command:

php artisan queue:table
php artisan queue:failed-table

Artisan command tersebut akan membuat file di database/migrations.

Buat Job baru

php artisan make:job SmsBroadcast --queued

Ini akan membuat file baru di app/Jobs/SmsBroadcast.php

Jika menggunakan Laravel 5.0, namanya adalah Command, bukan Job. Silahkan pelajari di Laracasts mengenai Command Bus.

Sebagai contoh isi SmsBroadcast saya adalah:

public function __construct($phoneNumber, $message)
{
    $this->phoneNumber = $phoneNumber;
    $this->message = $message;
}

public function handle()
{
    Zenviva::sendSms($this->phoneNumber, $this->message);
}

Lalu pada controller yang akan men-trigger pengiriman SMS

public function postSmsBroadcast()
{
    $users = User::getAllMembers();

    $smsBody = Input::get('sms_body');

    $users->each($users, function($user)
    {
        $job = new SmsBroadcast($user->phone_number, $smsBody);

        $this->dispacth($job);
    });
}

Yap, bagian pertama selesai. Sekarang jika eksekusi method tersebut, maka akan ada record baru ditambahkan ke jobs table. Tapi SMS belum benar-benar dikirimkan. Ini hanya memasukkan perintah yang akan dieksekusi ke antrian.

Untuk menjalankan perintah yang ada di antrian, kita perlu menjalankan artisan command.

php artisan queue:listen

Atau queue:work yang bisa digunakan untuk mengaktifkan daemon

Nah ini dia, karena tidak punya akses SSH di server, kita tidak bisa menjalankan queue:listen. Hmm, Jadi gimana caranya? :/

Kita bisa panggil artisan command langsung dengan menggunakan Artisan class atau facade. Misalnya Artisan::call('queue:listen'). Tapi, jika menggunakan http request, ada kemungkinan ini akan membuat seakan-akan hang. Tapi saya belum coba :| .

Cron for Rescue

Kita bisa manfaatkan kombinasi antara cron dan Laravel Scheduler.

Tambahkan ke app/Console/Kernel.php

protected function schedule(Schedule $schedule)
{
    $schedule->command('queue:work')
             ->everyMinute()
             ->withoutOverlapping();
}

Yap, selesai. Setiap menit akan memeriksa antrian dan sms akan dikirimkan ;)

Jika ada pertanyaan, saran atau cara yang lebih baik–langsung aja isi kolom komentar.

Docker, CoreOS, Google, Microsoft, Amazon And Others Come Together To Develop Common Container Standard

Featured Image -- 1229
Standar

Originally posted on TechCrunch:

Docker, CoreOS, Google, Microsoft and Amazon are now working on a new standard for software containers with the help of the Linux Foundation. Other members of this coalition include Apcera, Cisco, EMC, Fujitsu Limited, Goldman Sachs, HP, Huawei, IBM, Intel, Joyent, Mesosphere, Pivotal, Rancher Labs, Red Hat and VMware — that is, virtually everybody who has a stake in building a thriving container ecosystem.

Docker may have become synonymous with containers, but it’s not the only container format around and not everybody agrees that it should become the standard format. Last December, CoreOS announced that it was launching its own container runtime (rkt) and format (appc), a project that received some support from major players like Google, Red Hat and VMware.

At the time, Docker and CoreOS looked like they were on a collision course, and having even more container formats wasn’t likely going to help the overall ecosystem.

DSC00365

Now, however, the two…

Lihat yang asli 563 kata lagi

Laravel 5 Custom Pagination

laravel-framework
Standar

Several minutes ago my friend ask me about how to create custom pagination with Laravel 5. This is interesting. I’ve never tried create custom pagination on Laravel 5. On Laravel 4, that’s easy. Just change the app/config/view.php with your implementation, and you are done.

By the way, he is a Python programmer. I don’t know what is he doing with Laravel 😕

After seconds looking the source code, Whoaa that’s very easy.

For quick demo, I just put the presenter on app/Http/routes.php file.

<?php

class CustomPresenter implements Illuminate\Contracts\Pagination\Presenter
{
    public function render()
    {
        return 'Alpha and Omega';
    }

    public function hasPages()
    {
        // do something here
    }
}


Route::get('/', function()
{
    $items = range('a', 'z'); // will create a, b, c, ..., z

    $paginatedItems = new Illuminate\Pagination\Paginator($items, 10);

    return view('welcome', compact('paginatedItems'));
});

And add this to the view resources/views/welcome.blade.php

{!! $paginatedItems->render(new CustomPresenter) !!}

And we are done. 😜

Maybe I will add the part two of this post.

Mengirim Email menggunakan Laravel

laravel-framework
Standar

Untuk mengirim email di Laravel sangat mudah. Behind the scene sebenarnya Laravel menggunakan SwiftMailer untuk mengirimkan email. Tersedia beberapa pilihan driver yang sudah bisa digunakan seperti menggunakan MailGun, Mandrill dan SMTP.

Kali ini kita akan bahas setup dan kirim email di Laravel 5 yang masih fresh. So, persiapkan Laravel 5.

Konfigurasi

Pertama kita ubah informasi email dan nama pengirim di config/mail.php.

'from' => ['address' => null, 'name' => null],

Untuk bisa mengirim email, anda bisa mengubahnya menjadi apapun. Tidak harus email asli anda. Misalnya kita ubah menjadi

'from' => [
    'address' => 'no-reply@example.org', 
    'name'    => 'No Reply'
],

Jika anda tidak menggunakan .env, anda bisa mengubah konfigurasi pada file config/mail.php atau system environment anda. Tapi disini saya akan memberi contoh dengan menggunakan .env. Lebih detail mengenai hal ini bisa anda baca di dokumentasi http://laravel.com/docs/master#environment-configuration .

By default setelah selesai instalasi, ada file .env. Buka dan edit file .env

MailTrap.io

MAIL_DRIVER=smtp
MAIL_HOST=mailtrap.io
MAIL_PORT=2525
MAIL_USERNAME=null
MAIL_PASSWORD=null
MAIL_ENCRYPTION=null

Jika anda mau menggunakan mailtrap.io yang sudah disediakan, langsung saja ubah username dan password. Bila belum punya, yaa daftar toh…

Mailtrap.io

Gmail

MAIL_DRIVER=smtp
MAIL_HOST=smtp.gmail.com
MAIL_PORT=465        # atau 587
MAIL_USERNAME=emailanda@gmail.com
MAIL_PASSWORD=password_email_anda
MAIL_ENCRYPTION=tls

Bagi pengguna 2-step authentication akan mendapatkan message dari Google. Tinggal ikut saja informasi dari message tersebut.

Detailnya bisa anda lihat di website Google https://support.google.com/a/answer/176600?hl=en

Yahoo

MAIL_DRIVER=smtp
MAIL_HOST=smtp.mail.yahoo.com
MAIL_PORT=465        # atau 587
MAIL_USERNAME=emailanda@yahoo.com
MAIL_PASSWORD=password_email_anda
MAIL_ENCRYPTION=tls

Detail konfigurasi bisa anda lihat di website Yahoo https://help.yahoo.com/kb/SLN4724.html

Mandrill dan MailGun

Mandrill dan MailGun menyusul (ntah kapan). Mandrill dan MailGun bisa menggunakan API ataupun SMTP.

Zoho Mail

MAIL_DRIVER=smtp
MAIL_HOST=smtp.zoho.com
MAIL_PORT=587
MAIL_USERNAME=emailanda@yahoo.com
MAIL_PASSWORD=password_email_anda
MAIL_ENCRYPTION=tls

Detail informasi konfigurasi SMTP menggunakan Zoho bisa anda lihat di dokumentasinya https://www.zoho.com/mail/help/zoho-smtp.html

Driver “log”

MAIL_DRIVER=log

Saya biasa menggunakan driver log ini untuk development. Driver ini tidak benar-benar mengirimkan email, tapi hanya menulis ke log file di storage/logs, sehingga lebih cepat, aman dan bisa offline.

Laravel Mail Log

MailCatcher

MAIL_DRIVER=smtp
MAIL_HOST=127.0.0.1
MAIL_PORT=1025

Selain menggunakan “log”, saya juga biasa menggunakan MailCatcher untuk melihat apakah email yang dikirimkan sudah sesuai tampilannya atau belum, tanpa harus terhubung ke internet. Dan ini proses-nya cukup cepat.

Detail bagaimana menggunakan MailCatcher bisa anda pelajari di mailcatcher.me

MailCatcher

Kirim email

Agar mudah, kita letakkan saja di app/Http/routes.php. Anda bisa meletakkannya dimanapun, tergantung dari bagaimana anda membuat struktur aplikasi anda.

Route::get('/', function()
{

    // Variable data ini yang berupa array ini akan bisa diakses di dalam "view".
    $data = ['prize' => 'Peke', 'total' => 3 ];

    // "emails.hello" adalah nama view.
    Mail::send('emails.hello', $data, function ($mail)
    {
      // Email dikirimkan ke address "momo@deviluke.com" 
      // dengan nama penerima "Momo Velia Deviluke"
      $mail->to('momo@deviluke', 'Momo Velia Deviluke');

      // Copy carbon dikirimkan ke address "haruna@sairenji" 
      // dengan nama penerima "Haruna Sairenji"
      $mail->cc('haruna@sairenji', 'Haruna Sairenji');

      $mail->subject('Hello World!');
    });

});

Sekarang kita buat view-nya pada resources/views/emails/hello.blade.php yang isinya

Anda mendapatkan hadiah {{ $total }} buah {{ $prize }}

Yup, sekarang buka jalankan php artisan serve, dan buka web browser.

Kesimpulan

Mengirim email menggunakan Laravel sangat mudah. Anda juga bisa memasukkan email ke queue dengan menggunakan facade Mail::queue() atau Mail::later().

Bila anda ingin mengirimkan hanya berupa plain text, anda bisa menggunakan Mail::plain(). Atau hanya bisa text pendek Mail::raw(). Atau bisa juga dengan memasukkan key,

`Mail::send(['plain' => 'view'], ...)`

Detailnya bisa anda pelajari di dokumentasi dan source code :| http://laravel.com/docs/master/mail

Oh, iya… seperti component lain yang ada di komunitas PHP lainnya seperti CakePHP, Symfony, Nette, Aura, Kohana, PHPixie dan Zend Framework; yang saling berbagi dan mengisi di komunitas PHP itu sendiri, anda juga bisa menggunakan mail component ini diluar Laravel.

Bila ada pertanyaan langsung saja di kolom komentar.

Membuat Test di Laravel 5.1

laravel-framework
Standar

Seringkali saya mendapatkan project yang sudah jalan tapi tanpa ada testing didalamnya. Bahkan project yang diklaim dikerjakan oleh programmer veteran sekalipun. Sehingga saya harus extra hati-hati untuk mengubah suatu code.

Contoh kasus misalnya saya memperbaiki bug. Bisa jadi code yang saya ubah untuk suatu page, bug-nya beres. Tapi di page lain ternyata menjadi rusak. Saya harus mengecek satu-persatu efeknya kemana saja. Atau code-nya ini digunakan dimana saja. Tentu saja ini tidak efesien. Membuang waktu dan melelahkan :/

So, salah satu solusinya adalah dengan membuat test terlebih dahulu yang sesuai dengan ekspektasi yang kita inginkan, lalu baru membuat code yang sebenarnya. Banyak sekali jargon yang mungkin membuat anda bingung. Misalnya apa itu TDD? :/ Cek Wikipedia :D

Masih bingung? :/ Saya coba bantu sederhanakan agar lebih mudah dimengerti (dan semoga mengerti). Seperti biasa, saya selalu mengatakan di forum–untuk mengerti sesuatu, ketahui dulu ARTINYA.

TDD adalah singkatan dari Test-Driven Development. Kita artikan per satu-satu kata. Test dan Development udah taulah yaa… Artiin sendiri aja 😓

Kata dasar driven adalah drive yang artinya mengendarai. Jadi driven adalah…? Pengembangan yang dikendarai oleh percobaan. Hmm… ntah kenapa kalau diartikan ke Bahasa Indonesia ini jadi aneh 😖. Tapi semoga anda mengerti maksudnya :D

Bagi sebagian orang yang belum terbiasa, dengan membuat test terlebih dahulu memang awalnya terkesan merepotkan dan membuang waktu, karena fiturnya tidak langsung terlihat. Tetapi ini justru akan membuat anda nyaman di kemudian hari (seperti contoh saya diatas). Misalnya 8 bulan dari sekarang (sudah mulai lupa), anda mengubah suatu code, anda akan tetap yakin dan percaya diri kalau code yang anda ubah tidak membuat yang lain menjadi rusak.

Btw, kita tidak akan bahas unit test disini. Karena tujuannya ini untuk mempermudah pemahaman bagi yang belum pernah atau belum terbiasa menggunakan testing, dan yang juga tidak kalah penting adalah untuk mengubah mindset.

Tapi pada dasarnya unit test itu sama. Ketika anda mau membuat suatu fitur atau code anda buat dulu test atau ekspektasinya, lalu baru buat code-nya.

Simulasi

Sebagai contoh kita buat form untuk guest book, salah satu fitur populer di website pribadi pada era akhir 90-an dan awal 2000-an :D. Ada tiga field pada form ini. Yaitu nama, email dan pesan. Ekspektasi saya:

  • Jika nama tidak diisi, maka muncul pesan error “Nama harus diisi”, dan saya tidak mau datanya masuk ke database.
  • Jika email tidak diisi, maka muncul pesan error “Email harus diisi”, dan saya tidak mau datanya masuk ke database.

  • Jika pesan tidak diisi, maka muncul pesan error “Pesan harus diisi”, dan saya tidak mau datanya masuk ke database.

  • Jika email diisi tapi tidak benar formatnya, maka muncul pesan error “Email yang anda masukkan salah”, dan saya tidak mau datanya masuk ke database.

  • Jika tidak ada problem diatas, maka data akan disimpan di database.

Simple kan? Biasanya hal-hal seperti ini sudah ada di otak.

Kita akan buat test dengan menggunakan Laravel 5.1 (masih development version). Caranya install saja dengan cara

composer create-project laravel/laravel [folder] dev-develop

Jangan lupa buat migrations dan setup database sendiri berdasarkan tiga field tadi. Bila dibutuhkan anda juga bisa membuat model sendiri.

Pembuatan Test

Buat file baru di tests/GuestbookTest.php, isi dengan

<?php

use Illuminate\Foundation\Testing\WithoutMiddleware;
use Illuminate\Foundation\Testing\DatabaseTransactions;

class GuestbookTest extends TestCase
{
    public function test_name_if_empty()
    {
    }
}

Setiap file harus berakhirkan Test. Dan nama method yang akan di-test harus berawalan test. Jika ingin menggunakan nama method tidak berawalan test, anda bisa menambahkan /** @test */ di docblock.

Oke, kita masukkan ekpektasi kita tadi yang berhubungan dengan nama.

public function test_name_if_empty()
{
    $this->visit('/');
}

Artinya saya MENGUNJUNGI halaman dengan route /. Maksudnya home page.

public function test_name_if_empty()
{
    $this->visit('/')
         ->see('Guest Book');
}

Artinya setelah masuk ke homepage, lalu saya MELIHAT tombol dengan tulisan “Guest Book”.

public function test_name_if_empty()
{
    $this->visit('/')
         ->see('Guest Book')
         ->click('Guest Book');
}

Setelah itu saya KLIK tulisan “Guest Book”.

public function test_name_if_empty()
{
    $this->visit('/')
         ->see('Guest Book')
         ->click('Guest Book')
         ->landOn('/guestbook');
}

Setelah saya klik, saya akan MENDARAT di /guestbook

public function test_name_if_empty()
{
    $this->visit('/')
         ->see('Guest Book')
         ->click('Guest Book')
         ->landOn('/guestbook')
         ->submitForm('Submit', [
             'email' => 'kumis@example.org',
             'message' => 'Hello World!'
         ]);
}

Saya isi email dan message, tapi mengosongkan name. Setelah itu click tombol “Submit”.

public function test_name_if_empty()
{
    $this->visit('/')
         ->see('Guest Book')
         ->click('Guest Book')
         ->landOn('/guestbook')
         ->submitForm('Submit', [
             'email' => 'kumis@example.org',
             'message' => 'Hello World!'
         ])
         ->notSeeInDatabase('guestbooks', [
             'email' => 'kumis@example.org',
             'message' => 'Hello World!'         
         ]);
}

Saya tidak mau setelah submit, data malah masuk ke database.

public function test_name_if_empty()
{
    $this->visit('/')
         ->see('Guest Book')
         ->click('Guest Book')
         ->landOn('/guestbook')
         ->submitForm('Submit', [
             'email' => 'kumis@example.org',
             'message' => 'Hello World!'
         ])
         ->notSeeInDatabase('guestbooks', [
             'email' => 'kumis@example.org',
             'message' => 'Hello World!'         
         ])
         ->see('Nama harus diisi');
}

Lalu saya melihat “Nama harus diisi”.

Pembuatan Code

Setelah test-nya selesai, sekarang saatnya kita buat code-nya.

Saya buat routing untuk guestbook. Edit file app/Http/routes.php, lalu tambahkan

Route::get('/guestbook', 'GuestbookController@getPage');
Route::post('/guestbook', 'GuestbookController@postPage');

Setelah itu kita buat Controller-nya menggunakan artisan

php artisan make:controller GuestbookController --plain

Edit file yang baru di-generate tadi di app/Http/Controllers/GuestbookController.php

Tambahkan saja seperti ini kira-kira

public function getPage()
{
    return view('guestbook');
}

public function postPage(Request $request)
{
    $this->validate();
}

Sekarang kita buat page sederhana di resources/views/guestbook.blade.php

<form method="post">

    <input type="text" name="name">
    <input type="text" name="email">
    <input type="text" name="message">
    <input type="submit">

</form>

Oke, sekarang giliran anda membuat agar fitur guest book ini berfungsi. Jika sudah yakin benar, jalankan phpunit.

Bila sudah ada phpunit di global, bila langsung jalankan. Tapi bila belum ada anda bisa menggunakan ./vendor/bin/phpunit, kalau salah akan muncul warna merah beserta informasi kesalahannya apa dan dimana.

Screen Shot 2015-05-28 at 14.13.01

Jika tidak ada kesalahan, warnanya akan hijau.

Screen Shot 2015-05-28 at 14.13.26

Jika diatas sudah berhasil, coba tambahkan semua fitur pengecekan tadi lalu buat menjadi hijau.

Bila masih bingung, anda bisa mampir ke GitHub ini
https://github.com/mul14/laravel-5.1-test-example

Oh yaa… nikmatnya lagi, anda bisa membuat test di Laravel 5.1 ini TANPA harus membuka browser. Cukup fokus di ekspektasi anda, dan buat code-nya, lalu jalankan test untuk memastikan semua sudah berjalan sesuai rencana :D

Bila ada pertanyaan atau kritik silahkan dimasukkin aja di kolom komentar :)

Laravel 5 Simple CRUD Tutorial

Standar

Oke, jika anda sudah berpengalaman di Laravel, anda tidak perlu lanjut membaca. Ini hanya tutorial kecil untuk yang baru terjun ke Laravel. Terutama versi 5.

Beberapa kali saya lihat di group, ada beberapa orang yang bertanya tentang CRUD di Laravel. Walaupun di dokumentasinya sudah cukup jelas dan banyak tutorial lain, tapi pertanyaan ini tetap ditanyakan. Saya kira ini lagi-lagi karena kendala di bahasa.

Saya asumsikan anda sudah berhasil install Laravel 5, dan sudah mengkonfigurasi database. Tapi disini saya akan menggunakan SQLite, karena lebih mudah di-setup.

Konfigurasi Database

Edit file config/database.php, ubah

'default' => 'mysql',

Menjadi

'default' => 'sqlite',

Buat file kosong baru di storage/database.sqlite. Alasannya karena konfigurasi SQLite pada file config/database.php adalah storage_path().'/database.sqlite'.

Caranya jika menggunakan *nix

touch storage/database.sqlite

Jika menggunakan Windows dan belum pakai *nix shell, hmm… buat aja file kosongan biasa pake Notepad.

Migrations

By default di Laravel 5 sudah ada migrations untuk users table. Jadi cukup jalankan migration agar men-generate database schema. Caranya

php artisan migrate

Screen Shot 2015-05-26 at 19.50.43

(C)reate

Anda bisa meletakkan code ini di route, controller, ataupun model. Tapi supaya gampang, kita pakai REPL saja. Ketik di terminal

php artisan tinker

By default di Laravel sudah ada User model. Jadi kita bisa langsung gunakan ini. Pada RELP ketikkan

App\User::create([
    'name' => 'Pertama', 
    'email' => 'me@email.org', 
    'password' => bcrypt(123)
]);

Lalu tekan Enter. Yep, data sudah di-“create” dan masuk ke database. Coba tambahkan beberapa user.

Screen Shot 2015-05-26 at 19.51.44

(R)ead

Untuk membaca data yang sudah disimpan, caranya simple

App\User::all();

Method all() digunakan untuk mendapatkan semua rows. Jika data sudah terlalu banyak, harap berhati-hati menggunakan ini.

App\User::first();

Ini akan mengambil row pertama dari table users.

Screen Shot 2015-05-26 at 19.52.28

Untuk mendapatkan user dengan ID 1

App\User::find(1)

Screen Shot 2015-05-26 at 19.52.11

Untuk pencarian spesifik gunakan where. Misalnya

App\User::where('me@email.org')->first();

Selengkapnya bisa dibaca di dokumentasi.

(U)pdate

Contoh mengubah email dari user dengan ID 1

$user = App\User::find(1);

$user->email = 'email@baru.com';

$user->save();

Contoh mengubah semua nama user

App\User::update(['name' => 'Sama']);

(D)elete

Untuk menghapus caranya sangat mudah. Anda bisa menggunakan destroy atau delete. Keduanya sama-sama menghapus, hanya saja destroy bisa langsung digunakan tanpa melakukan pencarian.

Contoh menggunakan destroy untuk menghapus user dengan ID 1

App\User::destroy(1);

Untuk menghapus banyak sekaligus

App\User::destroy(1, 2, 3, 4);
// atau 
App\User::destroy([1, 2, 3, 4]);

Contoh menggunakan delete

$user = App\User::find(1);

$user->delete();

Sekian… jika ada pertanyaan langsung aja baca dokumentasi http://laravel.com/docs/master. Disitu sudah cukup lengkap informasinya.