Tag Archive configuration

php: xdebug

การเขียน unit testing หรือทำ uat โปรแกรมที่เขียนว่ามีข้อบกพร่องบ้างหรือเปล่า การ debug ใน php จะนิยมใช้ XDEBUG EXTENSION FOR PHP การติดตั้ง xdebug ใน xampp ไม่ยากเลย (ง่ายกว่าใน docker ตั้งเยอะ) ผมเคยเขียนการติดตั้งไว้ใน ตรวจสอบโค้ดและวัดความเร็ว PHP ด้วย xdebug แต่ไม่ได้อธิบายขั้นตอนอย่างละเอียดเอาไว้ ครั้งนี้จะเขียนวิธีอย่างละเอียด

การติดตั้ง xdebug

  1. download extension มาจาก XDEBUG EXTENSION FOR PHP | DOWNLOADS
    แต่ถ้าไม่แน่ใจ ทางผู้พัฒนาได้ทำ Tailored Installation Instructions ไว้ให้ แค่ copy หน้า phpinfo ของเว็บที่เราใช้มาวางใน textarea แล้วกด Analyse my phpinfo() output ก็จะได้ version และ config มาแล้ว
  2. นำไฟล์ .dll ไปไว้ใน php’s Extensions directory: เช่น C:\xampp\php\ext
  3. เปิดไฟล์ php’s Configuration File: เช่น C:\xampp\php\php.ini เพิ่มคอนฟิก[code language=”text” title=”xdebug configuration”]
    [Xdebug]
    xdebug.profiler_append = 1
    xdebug.profiler_enable = 0
    xdebug.profiler_enable_trigger = 0
    xdebug.profiler_output_dir = "C:\xampp\tmp"
    xdebug.profiler_output_name = cachegrind.out.%t.%p
    xdebug.remote_enable = true
    xdebug.remote_handler = "dbgp"
    xdebug.remote_host = "localhost"
    xdebug.remote_port = 9000
    xdebug.trace_output_dir = "C:\xampp\tmp"
    zend_extension = "C:\xampp\php\ext\php_xdebug-2.5.5-7.1-vc14.dll"[/code] ด้านล่างของไฟล์
  4. เปิดและปิด Apache ใหม่อีกครั้ง

เปิดหน้า phpinfo อีกครั้ง ลองค้นหาคำว่า xdebug อีกครั้ง ถ้าเจอแปลว่าการติดตั้งเสร็จแล้ว

ติดตั้ง imagick ImageMagick ใน windows (xampp)

การติดตั้ง imagick (ImageMagick) มันจะมีขั้นตอนพิเศษคือ copy .dll นอกจาก php_imagick.dll ใส่ไว้ใน apache\bin และต้องเซ็ต ENVIRONMENT PATH ด้วย

ขั้นตอนการติดตั้งแบบละเอียด

  1. เปิด phpinfo ดู PHP Version ของ server ที่ต้องการจะติดตั้ง
  2. เปิด PECL: imagick download สังเกต สัญลักษณ์ windows คลิกไปจะบอกว่า version นี้สามารถใช้กับ php version ไหนได้บ้าง ลองไล่จาก version ใหม่ล่าสุดลงมาของใหม่ยังไงก็ดีกว่าของเก่าๆ จากนั้นเลือกไฟล์จากข้อมูลใน phpinfo
    Thread Safety
    disabled
    แทนด้วย NTS
    enabled
    แทนด้วย TS
    Architecture
    เป็น x64 หรือ x86

    เช่น 7.1 Thread Safe (TS) x64 คือ php version = 7.1 Thread Safety = enable Architecture = x64 คลิกโหลดมาจะได้ไฟล์ php_imagick-3.4.3-7.1-ts-vc14-x86.zip

  3. แตกไฟล์ที่โหลดมาให้ php_imagick.dll ไปที่ folder extension_dir ใน phpinfo (เช่น C:\xampp\php\ext)
  4. แตกไฟล์นามสกุล .dll ที่เหลือไปที่ apache/bin (เช่น C:/xampp/apache/bin)
  5. เปิดไฟล์ php.ini ขึ้นมา โดยดูจาก Loaded Configuration File ใน phpinfo (เช่น C:\xampp\php\php.ini) เพิ่ม[code language=”text” title=”php.ini”]…
    extension=php_imagick.dll
    …[/code]
  6. โหลดตัวโปรแกรม ImageMagick มาจาก Windows Binary Release เลือก version ที่ต้องการโดย
    Q
    คือ bits-per-pixel มีให้เลือก 8 กับ 16 ยิ่งเยอะภาพจะยิ่งชัดแต่ตัวไฟล์จะใหญ่กว่า
    x86 / x64
    คือ Architecture ของ windows ที่ใช้อยู่ เลือกให้ตรงกับเครื่อง server ถ้าไม่ได้ใช้ Windows 32-bit ใช้ x64 จะดีกว่า

    โหลดแล้วติดตั้งตามปกติ อย่าลืมติ๊ก Add application directory to your system path

  7. restart apache จากนั้น ค้นหา imagick ถ้าขึ้นแสดงว่าติดตั้งสำเร็จ และดู PATH จะมี folder ที่ติดตั้ง Magick เช่น C:\Program Files\ImageMagick-7.0.5-Q16; Image ไว้ (ถ้าไม่มีลอง restart windows ดู)

zopim: Options Mobile Vertical Offset

เพราะว่างานที่ทำในส่วนของ mobile จะมี bar แสดงเพิ่มขึ้นมาด้านล่างต่างจาก desktop แต่เจ้า zopim มันจะอยู่ล่างสุดเหมือนกัน ทำให้ซ้อนกันดูไม่สวยและใช้งานได้ยากลำบาก จึงตั้งใจที่จะย้าย zopim ขึ้นไปอีก ที่สำคัญคือ จะเป็นตัวอย่างให้เรา config options ให้กับ zopim ที่มันใช้วิธีต่างจากเจ้าอื่นๆมาก

ถ้าต้องการให้ zopim ขึ้นมาจากล่างสุดในแนวตั้งสามารถใช้คำสั่ง[code language=”javascript” title=”zopim:options”]$zopim.livechat.button.setOffsetVerticalMobile( ความสูง );[/code]

ตัวอย่าง code[code language=”html” title=”zopim.setOffsetVerticalMobile.html”]<!doctype html>
<html>
<head>
<meta charset="utf-8">
<title>zopim: Mobile Vertical Offet</title>
<link href="vendor/twbs/bootstrap/dist/css/bootstrap.min.css" rel="stylesheet" type="text/css">
<style>
#footerMobile {
background: #c00000;
bottom: 0;
height: 200px;
position: fixed;
width: 100%;
}
</style>
</head>
<body>
<div class="visible-sm visible-xs" id="footerMobile">
<h1>You’re probably not using a phone.</h1>
</div>
<script>

<!–Start of Zendesk Chat Script–>
window.$zopim||(function(d,s){var z=$zopim=function(c){z._.push(c)},$=z.s=
d.createElement(s),e=d.getElementsByTagName(s)[0];z.set=function(o){z.set.
_.push(o)};z._=[];z.set._=[];$.async=!0;$.setAttribute("charset","utf-8");
$.src="https://v2.zopim.com/?4fGXBEtxEXbPQBeWWwFwSqG8wmMQ6pAT";z.t=+new Date;$.
type="text/javascript";e.parentNode.insertBefore($,e)})(document,"script");
<!–End of Zendesk Chat Script–>

<!–Start of Zendesk Chat Script Custom Options –>
$zopim(function() {
$zopim.livechat.button.setOffsetVerticalMobile(60);
});
<!–End of Zendesk Chat Script Custom Options–>

</script>
</body>
</html>[/code]

อ่านเพิ่มเติม$zopim.livechat.button

CodeIgniter: Composer

โดยปกติ composer จะเก็บไฟล์โดยสร้าง folder vendor ใน folder เดียวกับไฟล์ composer.json

ใน codeinigter ว่างไฟล์ composer.json ไว้นอกสุดแต่ในไฟล์ \application\config\config.php กลับเขียน[code language=”php” title=”\application\config\config.php”]/*
|————————————————————————–
| Composer auto-loading
|————————————————————————–
|
| Enabling this setting will tell CodeIgniter to look for a Composer
| package auto-loader script in application/vendor/autoload.php.
|
| $config[‘composer_autoload’] = TRUE;
|
| Or if you have your vendor/ directory located somewhere else, you
| can opt to set a specific path as well:
|
| $config[‘composer_autoload’] = ‘/path/to/vendor/autoload.php’;
|
| For more information about Composer, please visit http://getcomposer.org/
|
| Note: This will NOT disable or override the CodeIgniter-specific
| autoloading (application/config/autoload.php)
*/[/code]คือ พี่แกให้เก็บไฟล์ไว้ที่ application/vendor ไม่ใช่ /vendor

ปัญหานี้แก้ได้โดยเพิ่ม[code language=”javascript” title=”composer.json”]{

"config": {
"vendor-dir": "application/vendor"
},

}[/code]หลังจากนั้นก็ไปเปิด auto-load โดยเปลี่ยน[code language=”php” title=”\application\config\config.php”]$config[‘composer_autoload’] = false;[/code]เป็น[code language=”php” title=”\application\config\config.php”]$config[‘composer_autoload’] = true;[/code]แล้วทดลองใช้ command[code language=”text” title=”command”]composer update[/code]จะเห็นว่าไฟล์เข้าไปที่ application/vendor แล้ว

ถ้า composer โหลดไฟล์มาไม่ได้เพราะติด proxy อ่าน

อ่านเพิ่มเติม

CodeIgniter: แยก config

การดึงค่าคอนฟิกของโค้ทอินิกเตอร์สามารถทำได้โดย ใช้คำสั่ง[code language=”php”]$this->config->item(‘ ตัวแปร ‘);[/code] โดยจะดึงมาจากไฟล์ \application\config\config.php เป็นหลัก แต่ถ้าต้องการแยก config ออกมาเป็นส่วนๆ เพื่อความง่ายในการจัดการ สามารถสร้างไฟล์ ขึ้นมาใน application\config ได้[code language=”php” title=”\application\config\caching.php”]<?php
defined(‘BASEPATH’) OR exit(‘No direct script access allowed’);

$config[‘caching’][‘adapter’] = ‘memcached’;
$config[‘caching’][‘backup’] = ‘file’;[/code]

จากนั้นเราจะอ่าน configuration เข้ามาในระบบของเราสามารถทำได้ 2 วิธีคือ

  1. เป็นค่าที่เราต้องใช้บ่อยๆแทบทุกหน้า เพิ่มเข้าไปใน Auto-loading เปิดไฟล์ \application\config\autoload.php เพิ่มชื่อไฟล์ลงไปใน[code language=”php” title=”\application\config\autoload.php”]$autoload[‘config’][/code]เช่น[code language=”php” title=”\application\config\autoload.php”]…
    $autoload[‘config’] = [‘caching’];
    …[/code]
  2. ถ้าต้องการใช้เฉพาะบางไฟล์ ทำได้โดยการ load ใน controller ที่ต้องการโดยใช้คำสั่ง[code language=”php”]

    $this->config->load(‘caching’);
    …[/code]

ผมใช้หน้าแรกแสดงตัวอย่างการใช้[code language=”php” title=”\application\controllers\Welcome.php”]<?php
defined(‘BASEPATH’) or exit(‘No direct script access allowed’);

class Welcome extends CI_Controller
{
public function __construct()
{
parent::__construct();

echo ‘charset = ‘ . $this->config->item(‘charset’);

//$this->config->load(‘caching’);

echo ‘<pre>’, print_r($this->config->item(‘caching’), true), ‘</pre>’;
}
…[/code]

อ่านเพิ่มเติม

config codeigniter by environments

ที่ทำงานมี process ในการพัฒนา development > test > production โดยแต่ละ server จะมี config และ database แยกออกจากกันเพื่อความปลอดภัย โดย codeigniter สามารถแยก config ได้โดยการเปลี่ยน Environments ซึ่งโดยปกติจะมี 3 สภาพแวดล้อมคือ development, production, testing และแล้วแต่ท่านจะตั้ง

การทำระบบ config สามารถทำได้โดย

  1. ได้โดยเปิดไฟล์ \.htaccess เพิ่ม [code language=”text” title=”.htaccess”]…
    SetEnv CI_ENV development
    …[/code]เข้าไป หรือเข้าไปแก้ไฟล์ \index.php แก้บรรทัด[code language=”php” title=”index.php”]define(‘ENVIRONMENT’, isset($_SERVER[‘CI_ENV’]) ? $_SERVER[‘CI_ENV’] : ‘development’);[/code]เป็น[code language=”php” title=”index.php”]define(‘ENVIRONMENT’, ‘development’);[/code]
  2. ไปที่ \application\config สร้าง folder ไว้เก็บ configuration ตามชื่อ Environments เช่น \application\config\development, \application\config\production, \application\config\testing
  3. copy config ไฟล์ มาจาก \application\config จากนั้นก็ลบข้อมูลเดิมออกแล้วใส่เฉพาะส่วนที่แตกต่างกันเช่น \application\config\development\constants.php[code language=”php” title=”pplicationconfigdevelopmentconstants.php”]<?php
    defined(‘BASEPATH’) or exit(‘No direct script access allowed’);

    define(‘TITLE’, ‘development’);
    [/code]ทำแบบเดียวกันกับไฟล์อื่นๆ ถ้ามี config ที่ต่างกัน เช่น \application\config\development\database.php

  4. ทดสอบโดยเปิดไฟล์ \application\views\welcome_message.php แก้เป็น[code language=”php”]<?php
    defined(‘BASEPATH’) or exit(‘No direct script access allowed’);
    ?><!DOCTYPE html>
    <html lang="en">
    <head>
    <meta charset="utf-8">
    <title><?=TITLE;?></title>

    <style type="text/css">

    ::selection { background-color: #E13300; color: white; }
    ::-moz-selection { background-color: #E13300; color: white; }

    body {
    background-color: #fff;
    margin: 40px;
    font: 13px/20px normal Helvetica, Arial, sans-serif;
    color: #4F5155;
    }

    a {
    color: #003399;
    background-color: transparent;
    font-weight: normal;
    }

    h1 {
    color: #444;
    background-color: transparent;
    border-bottom: 1px solid #D0D0D0;
    font-size: 19px;
    font-weight: normal;
    margin: 0 0 14px 0;
    padding: 14px 15px 10px 15px;
    }

    code {
    font-family: Consolas, Monaco, Courier New, Courier, monospace;
    font-size: 12px;
    background-color: #f9f9f9;
    border: 1px solid #D0D0D0;
    color: #002166;
    display: block;
    margin: 14px 0 14px 0;
    padding: 12px 10px 12px 10px;
    }

    #body {
    margin: 0 15px 0 15px;
    }

    p.footer {
    text-align: right;
    font-size: 11px;
    border-top: 1px solid #D0D0D0;
    line-height: 32px;
    padding: 0 10px 0 10px;
    margin: 20px 0 0 0;
    }

    #container {
    margin: 10px;
    border: 1px solid #D0D0D0;
    box-shadow: 0 0 8px #D0D0D0;
    }
    </style>
    </head>
    <body>

    <div id="container">
    <h1>Welcome to CodeIgniter!</h1>

    <div id="body">
    <?php
    echo ‘<br>ENVIRONMENT = ‘ . ENVIRONMENT;
    echo ‘<br>FILE_READ_MODE = ‘ . FILE_READ_MODE;
    echo ‘<br>title = ‘ . TITLE;
    ?>
    </div>

    <p class="footer">Page rendered in <strong>{elapsed_time}</strong> seconds. <?php echo (ENVIRONMENT === ‘development’) ? ‘CodeIgniter Version <strong>’ . CI_VERSION . ‘</strong>’ : ”; ?></p>
    </div>

    </body>
    </html>[/code]

  5. เปิดหน้าแรกและสังเกตผลลัพธ์

ค่าในไฟล์ config จะถูกเพิ่มจากของเดิมโดยเลือกมาจากไฟล์ใน folder ที่ชื่อเดียวกับ environments ไม่ใช่แทนที่ของเดิมสังเกตได้จากค่า FILE_READ_MODE ที่ไม่มีในไฟล์ \application\config\development\constants.php ที่เราแยกออกมา

สร้าง muti site ใน laravel

ต้องการสร้างเว็บรองรับหลายๆ บริษัท โดยที่ใช้ code ชุดเดียวกันและให้ฝ่ายที่ดูแลสามารถเพิ่มข้อมูลและเว็บไซต์ ได้เองโดยที่ไม่ต้องใช้ความรู้ทางด้านการเขียนโปรแกรมเลย

เจอ package ชื่อ delatbabel/site-config แต่เพราะว่าเค้ารองรับแค่ laravel 5.1 เลยต้องสร้าง project ใหม่ตั้งแต่ต้นเลย

  1. พิมพ์ command[code language=”text” title=”installation 1=5.1″]composer create-project laravel/laravel sites "5.1.*"[/code]
  2. แก้ config ในไฟล์ .env ให้ติดต่อ databse ได้[code language=”text” title=”.env”]…
    DB_CONNECTION=mysql
    DB_HOST=127.0.0.1
    DB_DATABASE=sites
    DB_USERNAME=root
    DB_PASSWORD=xxx
    …[/code]
  3. เพิ่ม package ในไฟล์ composer.json[code language=”php” title=”composer.json”]…
    "require": {
    "php": ">=5.5.9",
    "laravel/framework": "5.1.*",

    "delatbabel/site-config": "~1.0"
    },
    …[/code]
  4. run command[code language=”text” title=”command”]
    composer update
    [/code]
  5. เปิดไฟล์ config\app.php เพิ่ม[code language=”php” title=”configpp.php”]

    ‘providers’ => [

    Delatbabel\SiteConfig\SiteConfigServiceProvider::class,

    ],

    ‘aliases’ => [

    ‘SiteConfigSaver’ => Delatbabel\SiteConfig\Facades\SiteConfigSaver::class,

    ],
    …[/code]

  6. เพิ่ม Boostrap the Config Loader ใน 2 ไฟล์ คือ \app\Console\Kernel.php และ \app\Http\Kernel.php ต้องครบ 2 ไฟล์นะครับ ผมใส่ไม่ครบงงอยู่นานมากทำไม่มันมันใช้ไม่ได้[code language=”php” title=”\app\Http\Kernel.php”]

    protected function bootstrappers()
    {
    $bootstrappers = parent::bootstrappers();

    // Add the SiteConfig bootstrapper to the end.
    $bootstrappers[] = ‘Delatbabel\SiteConfig\Bootstrap\LoadConfiguration’;

    return $bootstrappers;
    }
    …[/code]

  7. Incorporate and Run the Migrations โดย run command[code language=”text” title=”command”]
    php artisan vendor:publish –tag=migrations –force
    php artisan migrate[/code]

การติดตั้งเสร็จแล้ว ที่นี้จะทดลองใช้งาน

  1. สร้างไฟล์ \app\Http\Controllers\HomeController.php[code language=”php” title=”\app\Http\Controllers\HomeController.php”]
    <?php

    namespace App\Http\Controllers;

    use App\User;
    use App\Http\Controllers\Controller;

    class HomeController extends Controller {

    /**
    * Show the profile for the given user.
    */
    public function index()
    {

    return ‘title = ‘.config(‘config.title’);

    $config = config()->all();

    return ‘<pre>’. print_r($config ,true).'</pre>’;
    }

    }
    [/code]

  2. เพิ่ม route ในไฟล์ \app\Http\routes.php [code language=”php”]

    Route::get(‘/’, ‘[email protected]’);

    [/code]
  3. ทดลอง set domain ขึ้นมาเทส เปิดไฟล์ C:\Windows\System32\drivers\etc\hosts [code language=”php” title=”host”]

    127.0.0.1 phunsanit.com
    127.0.0.1 pitt.com

    [/code]
  4. เพิ่มข้อมูลทกสอบโดยใช้ [code language=”sql” title=”sql”]
    INSERT INTO `configs` (`id`, `website_id`, `environment`, `group`, `key`, `value`, `type`, `created_at`, `updated_at`) VALUES
    (1, 1, NULL, ‘config’, ‘title’, ‘localhost’, ”, ‘0000-00-00 00:00:00’, ‘0000-00-00 00:00:00’),
    (2, 1, ‘prod’, ‘config’, ‘title’, ‘localhost ON production’, ”, ‘0000-00-00 00:00:00’, ‘0000-00-00 00:00:00’),
    (3, 1, ‘test’, ‘config’, ‘title’, ‘localhost IN TEST SERVER’, ”, ‘0000-00-00 00:00:00’, ‘0000-00-00 00:00:00’),
    (4, 2, NULL, ‘config’, ‘title’, ‘pitt.com’, ”, ‘0000-00-00 00:00:00’, ‘0000-00-00 00:00:00’),
    (5, 2, ‘prod’, ‘config’, ‘title’, ‘pitt.com ON production’, ”, ‘0000-00-00 00:00:00’, ‘0000-00-00 00:00:00’),
    (6, 2, ‘test’, ‘config’, ‘title’, ‘pitt.com IN TEST SERVER’, ”, ‘0000-00-00 00:00:00’, ‘0000-00-00 00:00:00’);

    INSERT INTO `websites` (`id`, `name`, `http_host`, `environment`, `created_by`, `updated_by`, `created_at`, `updated_at`, `deleted_at`) VALUES
    (1, ‘prototype’, ‘localhost’, ‘test’, NULL, NULL, ‘0000-00-00 00:00:00’, ‘0000-00-00 00:00:00’, NULL),
    (2, ‘prototype’, ‘pitt.com’, ‘test’, NULL, NULL, ‘0000-00-00 00:00:00’, ‘0000-00-00 00:00:00’, NULL);
    [/code]

  5. ทดสอบโดยเปิด http://localhost/mcms/public/ และ http://pitt.com/mcms/public/

นำไปดัดแปลงให้เหมาะกับงานที่ทำครับ

ติดตั้ง laravel ลั๊ลลาเวล

  1. ก่อนอื่นถ้าไม่มี composer ก็ลงมันก่อน
  2. จากนั้น update เจ้า composer ซะก่อนตามธรรมเนียม รีสตาร์ต เพื่อป้องกันปัญหาเปิด command ออกมาพิมพ์[code language=”text”]
    composer self-update
    [/code]
  3. เพิ่มตัวติดตั้ง laravel ก่อนด้วยคำสั่ง[code language=”text”]
    composer global require "laravel/installer"[/code]
  4. ไปที่ที่จะเก็บงานก่อน[code language=”text”]
    D:
    cd D:\xampp\htdocs
    [/code]
  5. สร้างโปรเจคใหม่ชื่อ laravel52[code language=”text”]
    composer create-project –prefer-dist laravel/laravel laravel52
    [/code] ตอนนี้ไฟล์จะถูกสร้างขึ้นมาใน D:\xampp\htdocs\laravel52 เป็นอันสร้างโครงสร้างสำเร็จ
  6. เชื่อมต่อ database โดยไปที่ file \config\database.php แก้ [code language=”text” title=”configdatabase.php”]
    ‘default’ => env(‘DB_CONNECTION’, ‘mysql’),
    [/code]เป็นชนิดฐานข้อมูลที่ใช้ได้คือ

    • MySQL
    • Postgres
    • SQLite
    • SQL Server

    หลังจากนั้นก็ไปแก้ ในอาเรย์ connections เฉพาะ index ที่ตรงกับค่าของ DB_CONNECTION

  7. สร้างตารางใหม่โดย command[code language=”text”]
    cd laravel52
    php artisan migrate
    [/code]เข้าไปดูใน databse ไม่มีอะไรเกิดขึ้น งง ซิครับ
  8. เป็นเพราะ laravel ใช้ config ในไฟล์ .env แก้[code language=”text” title=”.env”]
    DB_CONNECTION=mysql
    DB_HOST=127.0.0.1
    DB_PORT=3306
    DB_DATABASE=homestead
    DB_USERNAME=homestead
    DB_PASSWORD=secret
    [/code] และ command[code language=”text”]
    php artisan migrate
    [/code]อีกครั้ง ถ้า config ถูกต้องจะมีตาราง migrations, password_resets, users ขึ้นมา

การติดตั้งเบื่้อต้นสำเร็จแล้ว

แก้เน็ตค้างกับเราเตอร์ 3 เสา

เพราะว่าที่บ้านใช้เน็ตแบบ 24/7 จริงๆ ถึงจะอยู่แค่คนเดียว มีแค่ nas กับมือถือที่ต่อเน็ตอยู่ตลอดเวลา กับ tv ที่ไว้ดูหนังออนไลน์เวลาพัก แต่เราเตอร์ได้มาจากทรูมันค้างตลอดศก วัน สองวันต้องมากด restart มันทีหนึ่ง งานไม่ได้หนักแต่มันเสียอารมณ์มากเลย ยิ่งถ้ากำลังดูหนังจาก youtube ในทีวีอยู่ เคยไปขอตัวใหม่มาใช้ ไม่นานก็เป็นอีก

เดินๆ งานคอมอยู่เห็นขายเยอะเลย หลายรุ่น ตัวเจ็บๆ ก็เยอะ asus ก็น่าสนหลายตัวแต่แพง ซื้อไม่ลง เดินดูเรื่อยๆ เห็น D-link dir809 Wireless AC750 Dual Band Router แปะอยู่ตัวโตๆ 900 เอง แถมดูโหงวเฮ้งมี 3 เสา ไกล้ๆ เขียน dual band 2.4 GHz. กับ 5 GHz. ไม่ใช่ repeater ความโลภเข้ามาทันที ถามดูประกันตลอดอายุ ก็จัดซิครับ

พอมาถึงบ้านจักการ config เข้าไปที่ http://192.168.0.1 user admin pass ไม่ต้องใส่ เข้าไปแก้ ตามที่ router ตัวเก่าก็แล้ว ใช้ไม่ได้ โทรถามทรูขอ pass ใหม่ ก็ใช้ไม่ได้ โทรไปโทรมา เค้าเช็คจากชื่อรุ่นว่ามันไม่มี modem adsl ในตัว T-T พลาดละ มิน่าถึงถูกตัวอื่น 3000 ถึงหมื่นต้นๆทั้งนั้น

โดยสรุปคือ ต้องใช้ router ตัวเดิมต่อเน็ต แล้วต่อสายแลนเข้าตัวนี้จ่ายเน็ตแทน อนาถยิ่งนัก

  1. ต่อสานแลนจาก router เดิมที่ใช้ออกเน็ต
  2. config โดนเปิดเน็ตเข้าไปที่ http://192.168.0.1 user กรอกadmin pass ไม่ต้องใส่
  3. กด easy setup ใส่ ชื่อ wifi ใหม่ในช่อง Wireless Network Name (SSID) และใส่ password wifi ในช่อง Wireless Password ทั้งสองตัวแต่ Wireless Network Name (SSID) ต้องใช้คนละชื่อกัน
  4. เปลี่ยน password ตัวเร้าเตอร์ใหม่ กันมือเลวมาขโมยเล่น ใน tools ใต้ ADMINISTRATOR ใส่ password เข้าไปใหม่
  5. เข้าไปปิด การจ่าย wifi ของเราเตอร์ตัวเดิม งานมันจะได้ไม่หนัก ไม่น้อยใจฆ่าตัวตายบ่อยๆ
  6. จากที่ใช้มาเดือนกว่าๆ สัญญานนิ่งมาก ไกล ไม่ค้างเลย เพิ่งมาค้างตอนมีคนมาช่วยใช้อีก 3 คนแต่สั่ง restart ครั้งเดียวก็ไม่เป็นอีก จากราคาที่จ่ายไปก็ถือว่าคุ้มอยู่

Yii2 Fixed jQuery version

งานที่ทำใช้ jQuery plugin ที่จำกัดอยู่ที่ไม่เกินเวอร์ชั่น 2.1.3 เท่านั้น แต่ทุกครั้งที่ update yii โดยใช้คำสั่ง composer update มันจะเปลี่ยนเจคิวรี่เป็นตัว 2.1.4 ทุกครั้ง ต้องมาเปลี่ยนทุกครั้งเลย แก้ได้โดยไปสั่งใช้คอมโพสเซอร์โหลดตัวที่ต้องการมา

  1. แก้ composer.json เพิ่ม
    [code language=”php” title=”composer.json”]
    "require": {

    "components/jquery": "2.1.3"

    },
    [/code]
  2. ไปใช้ command พิมพ์ composer update มันจะโหลดเจคิวรี่มาเก็บไว้ที่ \vendor\components\jquery
  3. สั่งให้ยีสองโหลด jquery ตัวนี้มาใช้โดยกำหนด
    [code language=”php” title=”main.php”]

    ‘components’ => [

    ‘assetManager’ => [
    ‘bundles’ => [
    ‘yii\web\JqueryAsset’ => [
    ‘baseUrl’ => ‘@web’,
    ‘js’ => [
    ‘../../vendor/components/jquery/jquery.min.js’,
    ],
    ‘sourcePath’ => null
    ],
    ],
    ],

    [/code]

yii จะเปลี่ยน link จาก[code lang=”html”]<script src="/YiiAdvanced/frontend/web/assets/41df07c8/jquery.js"></script>
[/code]เป็น[code lang=”html”]<script src="/YiiAdvanced/frontend/web/../../vendor/components/jquery/jquery.min.js"></script>[/code]หลังจากนี้ถึงจะอัพเดตกี่ครั้ง jquery ก็จะยังเป็นตัวเดิมอยู่