menu

Showing posts with label how. Show all posts
Showing posts with label how. Show all posts

How - Masalah saat instalasi server pertama kali


Sudah allow cors pada .htaccess tapi api tetap tidak memberikan response dengan benar?
secara default saat menginstall LAMP pertama kali headers memang selalu enabled tapi ada kemungkinan juga belum enabled secara default contohnya saat codedoct setup server ubuntu dengan EC2 milik AWS maka dari itu harus di enabled terlebih dahulu dengan cara,
$ sudo a2enmod headers

Muncul error seperti ini "GD Library extension not available with this PHP" install extension dengan cara,
// PHP5
$ sudo apt-get install php5-gd

// PHP5.6
$ sudo apt-get install php5.6-gd

// PHP7.2
$ sudo apt-get install php7.2-gd

Menggunakan framework Laravel, error 404 not found saat akan hit url selain page home/index?
masalah tersebut biasanya terjadi karena module "rewrite" belum terinstall pada server cara installnya,
$ sudo a2enmod rewrite
$ sudo service apache2 restart
kemudian cek config apache agar terlihat seperti ini,
<virtualhost>
        <directory dist-dev="" projectA-backoffice="" var="" www="">
           Options Indexes FollowSymLinks
           AllowOverride All
           Require all granted
        </directory>

    ServerAdmin webmaster@
    ServerName dev-admin.project-A.com
    ServerAlias www.dev-admin.project-A.com
    DocumentRoot /var/www/projectA-backoffice/dist-dev
    ErrorLog ${APACHE_LOG_DIR}/error.log
    CustomLog ${APACHE_LOG_DIR}/access.log combined
</virtualhost>

Pada server EC2 codedoct sering mendapati error seperti ini: "GPG error 'NO_PUBKEY'",
$ sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys <pubkey>
$ sudo apt-get update

===DONE!===

How - Make yandex business email can open in gmail


Pada tutorial sebelumnya kita sudah membuat sebuah email bisnis dengan yandex sekarang kita akan membuat bagaimana caranya agar email bisnis kita yang hanya bisa dibuka pada yandex mail dapat dibuka juga pada gmail.

Oke langkah pertama silahkan login pada gmail dan temukan setelan atau setting pada halaman utama gmail seperti ini,

  

Kemudian masuk ke "Akun dan Impor" seperti gambar dibawah,


Pada menu tersebut kita akan menemukan pengaturan untuk memeriksa email lain di gmail seperti gambar dibawah,


Klik "Tambahkan akun email" dan akan muncul tampilan seperti gambar dibawah,


Isi alamat bisnis email, selanjutnya klik berikutnya dan akan masuk ke halaman berikut,


Oke pada pengaturan diatas kita ingin mengimpor email dari akun yandex menggunakan POP3 maka pada yandex kita harus pastikan dulu email yandex kita bisa di akses melalui POP3 dengan cara masuk ke halaman setting "Email Clients" pada yandex mail dan mengaktifkan setting POP3 seperti gambar dibawah,


Oke kembali ke halaman gmail yang sebelumnya, pilih import email dari akun saya yang lain(POP3) dan klik "berikutnya" sehingga akan muncul halaman berikut,


Isi nama pengguna dan sandi dari yandex mail, kemudian klik "Tambahkan Akun" maka kita telah berhasil menambahkan akun email yandex pada gmail.
Setelah itu kita akan membuat gmail dapat mengirimkan email dari email yandex, kembali masuk ke halaman setelan di gmail dan masuk ke menu "Akun dan Import" dan cari setting ini,


Klik "Tambahkan alamat email lainnya"


Isi nama dan alamat email sesuai email yandex dan klik "Langkah Berikutnya" dan akan muncul gambar dibawah,


Isi nama pengguna dan sandi sesuai dengan email yandex dan klik "Tambahkan Akun", dan akan tampil halaman berikutnya,


Masukan code yang dikirim oleh gmail ke email yandex, dan verifikasi

===DONE!===

How - Create a business email with Yandex and personal domain


Bingung mau membahas tentang apa, baru kemarin setup membuat email bisnis menggunakan domain codedoct dan Yandex semoga artikel ini bisa membantu bagi siapa yang ingin membuat sebuah email bisnis dengan hanya bermodalkan domain.

Yandex merupakan sebuah perusahaan internet milik Rusia dan merupakan mesin pencari ke-4 terbesar diseluruh dunia berdasarkan informasi dari wikipedia, pada artikel kali ini codedoct akan menggunakan yandex sebagai mail service bagi domain pribadi kita.

Oke hal pertama yang harus dilakukan adalah, membuat akun terlebih dahulu di yandex klik disini, dan akan muncul halaman seperti dibawah,


Jika sudah selanjutnya mendaftarkan domain pada yandex, buka halaman ini dan akan tampak seperti gambar dibawah,


Masukan nama domain dan klik tombol "Sign up free"
Setelah itu kita akan masuk ke sebuah halaman yang tampak seperti gambar dibawah, codedoct akan mendaftarkan yandex sebagai hosting mail melalui cara DNS record, jika teman-teman mau mendaftarkan dengan cara yang lain juga silahkan.


Kemudian buka halaman penyedia domain, dalam hal ini codedoct sudah memappingkan domain dengan menggunakan cloudflare, pada halaman tersebut silahkan buka setting DNS sehingga akan tampak seperti gambar dibawah ini,


Yang pertama masukan record MX isi nama domainnya dan isikan configurasinya sebagai berikut,


Record yang kedua masukan TXT dengan value yang ditampilkan pada halaman yandex mail seperti ini,



Oke setting sudah selesai selanjutnya tinggal tunggu saja paling lambat 1x24jam, jika tidak ada masalah maka indikatornya akan berubah menjadi confirmed seperti ini,



Selanjutnya membuat alamat email bisnis sesuai yang teman-teman mau, masuk ke menu "Organization structure" klik tombol "+Add" dan akan muncul gambar seperti ini,



Jika sudah terisi semua klik Add dan teman-teman sudah bisa menggunakan email bisnis tersebut, silahkan logout dan login kembali dengan account email bisnisnya sehingga akan tampak gambar dibawah,



Klik "Mail" dan taraaaaaa.....


Email bisnisnya sudah jadi,


===DONE!===

Engine - Install zeroMQ and binding PHP ZMQ (Ubuntu OS)


Tutorial kali ini codedoct akan sharing cara setup zeromq dan membinding php-zmq pada server ubuntu, server yang codedoct gunakan adalah ubuntu versi 16.04 dan php yang digunakan adalah versi 5.6.

Pertama yang dilakukan adalah menginstall zeromq dengan cara berikut,
# download file zeromq
$ wget https://github.com/zeromq/libzmq/releases/download/v4.2.2/zeromq-4.2.2.tar.gz

# unpack file tar.gz
$ tar xvzf zeromq-4.2.2.tar.gz

# update ubuntu
$ sudo apt-get update

# install dependency
$ sudo apt-get install -y libtool pkg-config build-essential autoconf automake uuid-dev

# create make file
$ cd zeromq-4.2.2
$ ./configure

# build and install
$ sudo make install

# install zeromq driver on linux
$ sudo ldconfig

# check installed
$ ldconfig -p | grep zmq

Jika sudah lanjutkan dengan membinding zmq dengan php pada server,
# clone file php-zmq
$ git clone git://github.com/mkoppanen/php-zmq.git

# cd to the directory
$ cd php-zmq

# create make file
$ phpize && ./configure

# install package
$ make && make install

Selanjutnya tambahkan zmq.so pada path berikut,
  • /etc/php/5.6/apache2/php.ini
  • /etc/php/5.6/cli/php.ini
seperti ini,


Jika terjadi error berikut,


ketikan code berikut pada terminal,
$ sudo apt-get install php5.6-dev


ketikan code berikut pada terminal,
$ sudo apt-get install -y pkg-config

===DONE!===

How - Manage (CRUD) S3 on laravel


Pada tutorial sebelumnya kita sudah membuat bucket S3 AWS, dan kita sudah berhasil mengupload gambar secara langsung ke S3 sekaligus membuka akses globalnya sehingga gambar bisa dibuka secaral global dengan browse path url nya.

Pada tutorial kali ini codedoct akan memberikan tutorial tentang cara memanage bucket S3 kita melalui website yang menggunakan framework Laravel, dalam hal ini kita akan mengintegrasikan S3 dengan Laravel.

Oke sebelum memulai tutorial ini pastikan Anda sudah expert dalam pemrograman PHP on Laravel jika belum silahkan ikuti tutorialnya terlebih dahulu, klik disini.

Pertama, requirement yang akan kita gunakan adalah,
  • PHP => 5.6
  • Laravel => 5.4
Buka project laravel anda, kemudian install package aws pada laravel, package yang akan kita gunakan adalah league/flysystem-aws-s3-v3, jika laravel anda sudah terinstall versi yang lain maka diremove saja terlebih dahulu karena laravel 5.1 keatas support pada flysystem-aws-s3 versi V3.
Berikut cara remove dan install,
//untuk hapus versi lama
composer remove league/flysystem-aws-s3-v2

//install versi V3
composer require league/flysystem-aws-s3-v3:~1.0

Jika sudah berhasil menambahkan package aws selanjutnya, install juga image intervention untuk mengedit image yang di upload dari sisi server,
php composer.phar require intervention/image

Kemudian buat User IAM pada AWS dengan cara,
Masuk ke akun AWS anda terlebih dahulu dan masuk ke service IAM,


Selanjutnya, akan muncul page seperti gambar dibawah,


Klik button Add user untuk membuat user baru yang akan diperuntukan untuk codedoct-bucket1 yang sudah kita buat, dan akan muncul step pembuatan user seperti pada gambar dibawah,


Isi seperti gambar diatas dengan User name* terserah anda, dan jika sudah klik button "Next:Permissions",


Pada gambar diatas klik menu "Attach existing polices directly" dan klik button "Create policy" yang akan redirect halaman baru untuk membuat policy custom khusus untuk bucket codedoct-bucket1,


Pada gambar diatas ini field Service dengan S3 dan centang "All S3 actions (s3:*)", selanjutnya pada field Resources akan muncul seperti gambar dibawah,


Pilih Specific, pada field bucket klik "Add ARN" dan muncul seperti pop up pada gambar diatas,
isi field Bucket name dengan nama bucket yang sudah kita buat yaitu codedoct-bucket1, dan klik button "Add",


Pada field Object klik "Add ARN" kemudian isi pop up nya seperti pada gambar diatas, klik button"Add" sehingga akan tampak seperti gambar dibawah,


Klik button "Review policy",  dan isi field Name dan Description seperti pada gambar dibawah,


Klik button "Create policy", kemudian kembali pada halaman Set permission sebelumnya, cari policy codedoct yang baru dibuat, centang dan klik button "Next: Review" seperti gambar dibawah,


Dan akan muncul page review seperti gambar dibawah,


Klik button "Create user", dan akan muncul seperti gambar dibawah,


Simpan Access key ID dan Secret access key untuk nanti digunakan pada .env Laravel,
Untuk mengetes apakah User IAM sudah terintegrasi dengan bucket S3 atau belum coba buka service S3 dan buka "Permissions" kita akan melihat pada list pertama "Access for your AWS account" terdapat satu akun,


Terakhir kembali pada laravel, tambahkan pada .env parameter AWS dan pendukungnya,
STORAGE_FILE=s3

AWS_KEY= isi dengan Access key ID
AWS_SECRET= isi dengan Secret access key
AWS_REGION=us-east-1
AWS_BUCKET=codedoct-bucket1

Sekarang laravel anda sudah siap mengupload file pada bucket S3 AWS, untuk code laravelnya bisa dicontoh code dibawah,
<?php
namespace App\Http\Services;

use Illuminate\Support\Facades\Storage;
use Intervention\Image\ImageManagerStatic;

class ImageService
{
    public function uploadImage($file, $folder_path, $for, $size)
    {
        $img = ImageManagerStatic::make($file);
        if ($img->getWidth()) {
            $img->resize($size, null, function ($constraint) {
                $constraint->aspectRatio();
            });
        }
        $img->stream();

        if (env('STORAGE_FILE', 'server')=='s3') {
            $path = 'images/'.$folder_path.'/'.$for->hash_id.'-'.str_random(6).'.'.$file->clientExtension();
            Storage::disk('s3')->put($path, $img->__toString());

            return $path;
        }

        return null;
    }

    public function deleteFile($file)
    {
        if (env('STORAGE_FILE', 'server')=='s3') {
            if (Storage::disk('s3')->has($file)) {
                Storage::disk('s3')->delete($file);
            }
        }

        return true;
    }

    public function getFile($file)
    {
        if (env('STORAGE_FILE', 'server')=='s3') {
            return 'https://s3.amazonaws.com/'.env('AWS_BUCKET').'/'.$file;
        }
    }
}


===DONE!===

How - Setup doctrine in laravel


Pada tutorial kali ini kita akan membahas tentang doctrine, doctrine merupakan sebuah plugin yang dapat digunakan pada laravel yang sangat berguna sebagai ORM (Object Relational Mapper). ORM sendiri merupakan teknik untuk memetakan tabel dari database menjadi objek php.

Doctrine dalam hal ini akan kita gunakan sebagai pengganti dari migration pada laravel, jika pada migration laravel kita akan sangat sulit dalam mengedit sebuah nama kolom pada tabel ataupun menambah kolom baru tanpa mengubah isi tabel, dengan doctrine semua itu akan sangat mudah dilakukan.

Eksperimen ini akan dilakukan dengan menggunakan laravel 5.4, php 5.6, dan dengan MacOS, pastikan php yang terinstall pada komputer anda adalah versi 5.6 karena jika anda menginstall php 7.* akan banyak masalah pada doctrinenya nanti.

Oke langsung saja kita mulai experimennya,

Pertama install dulu laravelnya versi 5.4 lihat disini, dan cek versi php "php -v" pada terminal.


Selanjutnya, install laravel doctrine dengan cara ikuti ketiga langkah dibawah ini,
  1. Install ORM doctrine
  2. Install Extension doctrine
  3. Install Migration doctrine
Jika sudah tambahkan folder doctrine pada path database/migrations/ sehingga akan tampak seperti ini,


Dan edit file migrations.php pada path config/ ubah directory menjadi seperti ini,


Kemudian tambahkan juga folder Entities pada path app/ sehingga akan tampak seperti ini,


Aktifkan extensions SoftDeletes dengan mengedit file doctrine.php pada path config/ seperti ini,



Folder Entities merupakan tempat mapping semua tabel, sekarang buat file baru pada folder Entities dengan nama User.php dan isikan code berikut,

<?php

namespace App\Entities;

use Doctrine\Common\Collections\ArrayCollection;
use Doctrine\ORM\Mapping as ORM;
use Gedmo\Mapping\Annotation as Gedmo;

/**
 * @ORM\Entity
 * @ORM\Table(name="users")
 * @Gedmo\SoftDeleteable(fieldName="deleted_at", timeAware=false)
 */
class User
{
    /**
     * @ORM\Id
     * @ORM\GeneratedValue
     * @ORM\Column(type="integer")
     */
    protected $id;

    /**
     * @var string
     * @ORM\Column(type="string", unique=true)
     */
    protected $email;

    /**
     * @var string
     * @ORM\Column(type="string", nullable=true)
     */
    protected $name;

    /**
     * @var \DateTime
     * @Gedmo\Timestampable(on="create")
     * @ORM\Column(type="datetime")
     */
    protected $created_at;

    /**
     * @var \DateTime
     * @Gedmo\Timestampable(on="update")
     * @ORM\Column(type="datetime")
     */
    protected $updated_at;

    /**
     * @var \DateTime
     * @ORM\Column(type="datetime", nullable=true)
     */
    protected $deleted_at;
}

Setelah itu jalankan doctrine dengan cara,

$php artisan doctrine:migration:diff
$php artisan doctrine:migration:migrate


Sehingga akan membuat sebuah tabel users seperti pada gambar dibawah ini,


Sekarang coba isi tabel tersebut dengan sembarang data misal seperti ini,


Tes doctrine pertama coba kita edit nama kalom name menjadi edit dengan cara edit file User.php pada path app/Entities/ menjadi seperti ini,

<?php

namespace App\Entities;

use Doctrine\Common\Collections\ArrayCollection;
use Doctrine\ORM\Mapping as ORM;
use Gedmo\Mapping\Annotation as Gedmo;

/**
 * @ORM\Entity
 * @ORM\Table(name="users")
 * @Gedmo\SoftDeleteable(fieldName="deleted_at", timeAware=false)
 */
class User
{
    /**
     * @ORM\Id
     * @ORM\GeneratedValue
     * @ORM\Column(type="integer")
     */
    protected $id;

    /**
     * @var string
     * @ORM\Column(type="string", unique=true)
     */
    protected $email;

    /**
     * @var string
     * @ORM\Column(type="string", nullable=true)
     */
    protected $name_edit;

    /**
     * @var \DateTime
     * @Gedmo\Timestampable(on="create")
     * @ORM\Column(type="datetime")
     */
    protected $created_at;

    /**
     * @var \DateTime
     * @Gedmo\Timestampable(on="update")
     * @ORM\Column(type="datetime")
     */
    protected $updated_at;

    /**
     * @var \DateTime
     * @ORM\Column(type="datetime", nullable=true)
     */
    protected $deleted_at;
}

Jalankan kembali migration doctrinenya lagi dengan cara yang sama seperti sebelumnya, dan hasilnya akan tampak seperti dibawah ini,


Tes doctrine selanjutnya yaitu menambah kolom address pada tabel users  dengan cara edit file User.php kembali menjadi seperti ini,

<?php

namespace App\Entities;

use Doctrine\Common\Collections\ArrayCollection;
use Doctrine\ORM\Mapping as ORM;
use Gedmo\Mapping\Annotation as Gedmo;

/**
 * @ORM\Entity
 * @ORM\Table(name="users")
 * @Gedmo\SoftDeleteable(fieldName="deleted_at", timeAware=false)
 */
class User
{
    /**
     * @ORM\Id
     * @ORM\GeneratedValue
     * @ORM\Column(type="integer")
     */
    protected $id;

    /**
     * @var string
     * @ORM\Column(type="string", unique=true)
     */
    protected $email;

    /**
     * @var string
     * @ORM\Column(type="string", nullable=true)
     */
    protected $name_edit;

    /**
     * @var string
     * @ORM\Column(type="text", nullable=true)
     */
    protected $address;

    /**
     * @var \DateTime
     * @Gedmo\Timestampable(on="create")
     * @ORM\Column(type="datetime")
     */
    protected $created_at;

    /**
     * @var \DateTime
     * @Gedmo\Timestampable(on="update")
     * @ORM\Column(type="datetime")
     */
    protected $updated_at;

    /**
     * @var \DateTime
     * @ORM\Column(type="datetime", nullable=true)
     */
    protected $deleted_at;
}

Jalankan kembali migration doctrinenya lagi dengan cara yang sama seperti sebelumnya, dan hasilnya akan tampak seperti dibawah ini,


Dapat dilihat kan perubahannya, sangat mudah untuk mengedit tabel database pada server production jika suatu saat nanti terdapat perubahan.

===DONE!===