Virtual Environments แบบกำหนด version ของ python

จาก doc อันนี้ http://docs.python-guide.org/en/latest/dev/virtualenvs/

Install virtualenv via pip:

$ pip install virtualenv

Create a virtual environment for a project:

$ cd my_project_folder
$ virtualenv 

ถ้าต้องการ สร้าง project Virtual Environments แบบกำหนด version ของ python จะใช้คำสั่ง

แบบกำหนดเป็น python 2.x

virtualenv -p $(which python2) 

แบบกำหนดเป็น python 3.x

virtualenv -p $(which python3) 

หลังจากที่สร้าง project เรียบร้อยแล้วการจะติดตั้งอะไรเข้าไปใน project จำเป็นต้อง activate project ก่อน

source bin/activate

การติดตั้งอะไรเข้าไปให้ใช้ คำสั่ง pip install ได้ตามปกติ

pip install requests

เมื่อจะไม่ใช้งานแล้วให้ใช้คำสั่ง

$ deactivate

docker cmd

install php:7.0.10-apache none map share folder

docker run --name php7.0.10 -d -p 80:80 php:7.0.10-apache

install php:7.0.10-apache map share folder

docker run --name php7.0.10 -d -p 80:80 -v /Users/tmac/www/:/var/www/html/ php:7.0.10-apache

ลองตรวจสอบว่ามี Container ตัวไหนรันอยู่บ้าง

docker ps

Stop container

docker stop php7.0.10

ดูรายการ container ทั้งหมดที่มีอยู่ในเครื่อง

docker ps -a

Remove container

docker rm php7.0.10

Start container

docker start php7.0.10

ดู ip ของ Docker Machine

docker-machine ls

SSH เข้าไปที่ Docker Machine

docker-machine ssh default

การสร้าง Container

docker run --name demo -d -p 8080:80 -v /home/me:/home/docker image

ตัวอย่าง

docker run --name myweb -p 8080:80 -v /myweb:/var/www/html -d nginx

คำสั่งอาจจะดูยาวหน่อย เพราะคำสั่ง docker run จะต้องมีการใส่ option เข้าไปด้วย

--name demo คือ การตั้งชื่อให้กับ container โดยเมื่อเราใช้คำสั่ง start stop หรือ rm สามารถสั่งงาน container ได้จากชื่อ container ได้เช่นกัน
-d เป็นการสั่ง contianer ให้รันแบบ background
-v /home/me:/home/docker คือการ mount volume หรือเป็นการแชร์ไฟล์ระหว่าง container กับเครื่องเราให้สามารถเรียกใช้ไฟล์ร่วมกันได้
-p 8080:80 เป็นการ map port ระหว่างเครื่อง และ container เช่น อย่าง container ของ nginx จะใช้ port 80 เป็น default หากต้องการให้เครื่องใช้ port 8080 เราก็กำหนดให้เป็น -p 8080:80
image ชื่อของ Docker image ที่เราต้องการเรียกใช้ (จากตัวอย่างจะใช้ nginx เป็น image)

 

ที่มา: การใช้งาน Docker เบื้องต้น

Mac: Compress a folder into multiple zip files

Create multiple zip use command

zip -r -s 64 archive.zip FolderName/
  • 64 is the size of the split (in this case 64Mb).
  • Use -s to set the split size and create a split archive.
  • The size is given as a number followed optionally by one of k (kB), m (MB), g (GB), or t (TB) (the default is m).

laravel 5.3 authentication with jenssegers-mongodb

Add package https://github.com/jenssegers/Laravel-MongoDB-Session to laravel

Install using composer:

composer require jenssegers/mongodb-session

Change the session driver in app/config/session.php to mongodb:

'driver' => 'mongodb',

Optional: change the connection to a connection using the mongodb driver from app/config/database.php:

'connection' => 'mongodb',

config/app.php

'providers' => [
Jenssegers\Mongodb\MongodbServiceProvider::class,
Jenssegers\Mongodb\Session\SessionServiceProvider::class, 
Jenssegers\Mongodb\Auth\PasswordResetServiceProvider::class,

User model

namespace App;

use Illuminate\Notifications\Notifiable;
use Jenssegers\Mongodb\Eloquent\Model as Eloquent;
use Illuminate\Auth\Authenticatable;
use Illuminate\Auth\Passwords\CanResetPassword;
use Illuminate\Foundation\Auth\Access\Authorizable;
use Illuminate\Contracts\Auth\Authenticatable as AuthenticatableContract;
use Illuminate\Contracts\Auth\Access\Authorizable as AuthorizableContract;
use Illuminate\Contracts\Auth\CanResetPassword as CanResetPasswordContract;

class User extends Eloquent implements AuthenticatableContract, AuthorizableContract, CanResetPasswordContract
{
    use Authenticatable, Authorizable, CanResetPassword;
    use Notifiable;

    /**
     * The database table used by the model.
     *
     * @var string
     */
    protected $collection = 'users';

    /**
    * The database primary key value.
    *
    * @var string
    */
    protected $primaryKey = '_id';

    /**
     * The attributes that are mass assignable.
     *
     * @var array
     */
    protected $fillable = [
        'name', 'email', 'password',
    ];

    /**
     * The attributes that should be hidden for arrays.
     *
     * @var array
     */
    protected $hidden = [
        'password', 'remember_token',
    ];
}

and try to register/login