วันพุธที่ 26 ตุลาคม พ.ศ. 2559

PHP อ่านค่าของ EXIF Metadata ของรูปภาพ

จะใช้ function ที่ชื่อว่า exif_read_data()  เช่นตัวอย่างนี้

<?php
$exif = exif_read_data('<filename>', 0, true);
echo "<filename>:<br />\n";
foreach ($exif as $key => $section) {
    foreach ($section as $name => $val) {
        echo "$key.$name: $val<br />\n";
    }
}
?>

โดย PHP จะไปอ่านค่าของ Metadata ของ รูปภาพและเอามาวนลูปแสดงผล

ทั้งนี้จะต้องไปเพิ่ม exetension ใน PHP.ini 
extension=php_exif.dll
และ Restart Web Server ก่อนถึงจะใช้ได้นะครับ

วันพฤหัสบดีที่ 15 กันยายน พ.ศ. 2559

ปัญหา PHP JSON ไม่แสดงภาษาไทย

ไปพบปัญหาของ Function json_encode ของ PHP ว่าจะไม่แสดงภาษาไทย  แต่จะแสดงเป็น Code แทนเช่น \u0e1a\u0e23\u0e34\u0e29\u0e31\u0e17  หากเข้าไปดูใน Web ต่างๆของคนไทยเขาขะให้ใช้ Function iconv() ในการแก้ปัญหา  ซึ่งลองแล้วไม่ได้ เลยลองหาที่อื่นดู  พบวิธีที่ง่ายกว่าโดยเป็น Custom Function ชึ้นมาเอง คือ

 function jsonRemoveUnicodeSequences($struct) {
   return preg_replace("/\\\\u([a-f0-9]{4})/e", "iconv('UCS-4LE','UTF-8',pack('V', hexdec('U$1')))", json_encode($struct));
}

หรือ

function raw_json_encode($input, $flags = 0) {
    $fails = implode('|', array_filter(array(
        '\\\\',
        $flags & JSON_HEX_TAG ? 'u003[CE]' : '',
        $flags & JSON_HEX_AMP ? 'u0026' : '',
        $flags & JSON_HEX_APOS ? 'u0027' : '',
        $flags & JSON_HEX_QUOT ? 'u0022' : '',
    )));
    $pattern = "/\\\\(?:(?:$fails)(*SKIP)(*FAIL)|u([0-9a-fA-F]{4}))/";
    $callback = function ($m) {
        return html_entity_decode("&#x$m[1];", ENT_QUOTES, 'UTF-8');
    };
    return preg_replace_callback($pattern, $callback, json_encode($input, $flags));
}

โดยใช้ Function ใดก็ได้ครับ

หรือหากใช้ PHP Version ที่สูงกว่า 5.4 สามารถใช้ Code ตามนี้ไได้นะครับ

$json=json_encode([$json_data],JSON_UNESCAPED_UNICODE);

การใช้งาน Node.JS - การติดตั้ง express และสร้าง Project แรก

ในส่วนนี้จะเป็นการติดตั้ง library ชื่อ express เพื่อใช้สร้าง Web App ขึ้นมา โดยขั้นตอนคือ
  1. สร้าง Folder Project  ขึ้นมา 1 Folder และเปิด Folder ขึ้นมาจากนั้นกด Shift ค้าง และ Click Mouse ขวา เพื่อเข้าสู่หน้า Command Line
  2.  เมื่อเข้าหน้า Command แล้วให้พิมพ์ว่า  npm install -g express-generator
    เพื่อติดตั้ง Library Express เข้าแบบ ไปใน Project หากพิมพ์ถูกต้อง NPM ก็จะติดตั้ง Library express ดังรูป

  3. พิมพ์  express เพื่อให้ nodeJS สร้าง Folder และ copy file ที่จำเป็นต้องใช้เข้ามา ดังรูป

    หากไม่มีข้อผิดพลาด ใน Folder Project  ของเราจะมี Folder และ File ตามในรูป
  4. พิมพ์ npm install   เพื่อ download File ที่เกี่ยวข้องเข้ามาใน Project ของเรา ดังรูป


  5. เมื่อติดตั้งสำเร็จให้พิมพ์ npm start เพื่อทดสอบว่าใช้ๆด้หรือไม่  หากไม่มีปัญหาจะขึ้นมาดังรูป
  6. ลองเปิดหน้า Browser ขึ้นมาแล้วพิมพ์ URL ว่า http://127.0.0.1:3000 จะขึ้มมาดังรูป



  7. หากต้องการจะเปี่ยน Port นั้น สามารถเข้าไปเปลี่ยนได้โดยเข้าไปที่ Folder bin จะมี file ชื่อ www ที่ไม่มีนามสกุลอยู่  ลองเปิดดูและสามารถเปลี่ยน Port ได้ตามรูป

  8. Folder ต่างๆใน Project นั้นจะมีหน้าที่มต่างๆกันไปคือ
    ==>Folder - bin ทำหน้าที่ เก็บค่า config ต่างๆ
    ==>Folder - node_modules ทำหน้าที่ เก็บ File Library Modules ต่างๆที่ได้จาก npm install
    ==>Folder - public ทำหน้าที่ เก็บ resource ของ Project เช่น พวก Images หรือ javascript Client
    ==>Folder - routes ทำหน้าที่ เก็บ File JS
    ==>Folder - views ทำหน้าที่ เก็บ Template HTML ต่างๆของระบบ (นามสกุล .ejs)
    ==>Files - app.js ทำหน้าที่ เป็น File เริ่มต้นของระบบ
    ==>Files - package.json ทำหน้าที่ เก็บรายละเอียดต่างๆของ Project

  9. เนื่องจากเราใช้ File .ejs เป็น HTML Template ในการแสดงผลของ Project จึงต้องมีการแก้ค่า Config บางอย่างเพิ่มเติมคือ
    แก้ File package.json โดยการเปิดบน Notepad แล้วแก้ส่วนที่เป็น
    "jade": "~1.11.0", เป็น  "ejs":"*", ดังรูป

    แก้เป็น
  10. จากนั้นเข้า command line พิมพ์ npm install ejs เพื่อติดตั้ง ejs viewer module
  11. เพื่อเป็นการลดขนาดของ File ที่อยู่ใร Project เรา  ให้ uninstall module jade ออก โดยพิมพ์
    npm uninstall jade ดังรูป

  12. จากนั้นเข้าไปที่ File app.js เพื่อ Config ให้ใช้ File ejs ได้โดยลบบรรทัดที่เป็น
    app.set('view engine', 'jade');
    และเพิ่ม
    app.set('view engine', 'html');
    app.engine("html",require("ejs").renderFile);
    ดังรูป

  13. จากนั้นลอง start project ขึ้นมาอีกครั้งโดยใช้คำสั่ง npm start  และลองเข้า Browser และเรียก URL นี้ดู จะขึ้น Error ดังรูป

  14. สาเหตุที่ Error นั้นเนื่องจาก เรายังไม่มี file html template ในการแสดงผล  โดยเราจะสร้าง file .html เพื่อใช้ในการแสดงผล ซึ่ง File html เหล่านี้จะอยู่ใน Folder views ใน Project ของเรา ลองสร้าง file ชื่อ error.html โดยใน File ดังกล่าวจะมี Code ดังนี้
  15. ส่วนของ Tag Body ตามที่วงกลมไว้จะเป็นส่วนที่รับค่ามาแสดงบน Template

    โดยค่านั้นจะมาจาก File app.js ในการส่งค่า Error มา
  16. สร้างขึ้นมาอีก 1 file และให้ใช้ชื่อว่า index.html  โดยข้างใน File มี code ดังนี้

    ลองเรียกใหม่จะขึ้นหน้า Web Page แล้วมาดังรูป

วันพฤหัสบดีที่ 8 กันยายน พ.ศ. 2559

การใช้งาน Node.JS - การเรียกหน้า Page และการรับ-ส่งค่า

ในการรับและส่งค่าต่างๆ หรือการเรียก Page ต่างๆของ NodeJS และ Express นั้นจะใช้เป็น

http://sitename/route/action/parameter  เช่น 
http://127.0.0.1:3000/home/login/1  จะหมายถึง เรียกไปยัง site 127.0.0.1 ที่ Port 3000 โดยจะไปเรียก file script ที่ชื่อ home ที่อยู่ใน folder route และมี action ชื่อ login พร้อมทั้งส่ง Parameter =1 โดยที่ค่า action และ parameter จะส่งไปหรือไม่ก็ได้ 
ต่อไปก็จะลองสร้าง route ขึ้นมาใหม่อีก 1 route ใช้ชื่อว่า news.js อยู่ใน Folder routes โดยที่ข้างในจะมี code คือ

หลังจากนั้นให้เปิด file app.js และเพิ่มคำสั่ง
var news=require('./routes/news'); 
และ
app.use('/news',news); 
เพื่อให้ระบบรู้จัก route ใหม่ที่เราสร้างขึ้นมา ดังรูป

เมื่อ save app.js แล้วลอง run project ใหม่อีกครั้งโดยใช้คำสั่ง npm start ผ่านทาง command line อีกครั้ง
จากนั้นเปิด Browser และใส่ URL 127.0.0.1:3000/news จะขึ้นผลลัพธ์ดังรูป


จะเห็นว่าหน้า Browser จะแสดงข้อมูลเหมือนกับที่เป็นหน้า index.html   ทั้งนี้เนื่องจากใน file news.js นั้นเราสั่งเรียก file index.html มาแสดงผล

ทีนี้ลองเพิ่มในส่วนของส่งค่า Action เพิ่มลงใน file news.js  โดยการพิมพ์ code ต่อไปนี้
route.get('/feed',function(req,res,next){    res.send('Show Feed Action in Route News');})
เป็นการส่งค่า Action feed โดยจะส่งเป็นแบบ GET ไปให้ และProject จะส่ง Message "Show Feed Action in Route News" กลับมาแสดงลงบน WebPage 


ทีนี้สร้าง file ชื่อ news.html ไว้ใน Folder views  โดยข้างในมี code คือ

จากนั้นเข้าไปแก้ File news.js ใน Folder routes เป็นตามนี้
แล้วให้ลอง Run Project ใหม่  จากนั้นเปิด Browser เข้า URL เป็น http://127.0.0.1:3000/news จะได้หน้าตาเป็นแบบนี้

ลองพิมพ์คำค้นและกดปุ่ม Search และดูผลลัพธ์ที่เกิดขึ้น

เมื่อมาดูในส่วนของ Commandline จะพบว่ามีข้อมูลที่มาแสดงในรูปแบบของ JSON เยอะไปหมด แต่ที่หน้าสนใจคือ

ในส่วนของที่ขีดเส้นใต้จะเห็นว่าระบบนั้นรับค่าตัวแปรมาเป็น JSON แสดง  หากเราต้องการที่จะอ้างอิงก็ทำได้โดยการอ้างอิงผ่านตัวแปร req  เช่น 
req.body.txtkeyword

เราสามารถส่งค่าแบบ GET ในรูปแบบของ Pretty URL (SEO URL) เช่น 
http://127.0.0.1:3000/news/search/2016/
คือ เรียก route news ผ่าน Action search โดยส่ง Parameter หนึ่งตัวมีค่าเท่ากับ 2016
ใน Code ของ file news.js เพิ่มดังนี้
คือ เราจะสร้าง Action ขึ้นมา 2 ตัว ใช้ชื่อ Search เหมือนกัน  แต่จะรับ Parameter ต่างกัน โดยที่ Action แรกจะรับเพียง 1 Parameter ชื่อ keyword แต่อีกอันจะรับ 3 Parameter คือ keyword1 ,keyword2 และ keyword3  เมื่อเปิดผ่าน Browser จะเป็นดังนี้

แบบ 1 Parameter

แบบ 3 Parameter






วันจันทร์ที่ 15 สิงหาคม พ.ศ. 2559

การใช้งาน Node.JS - การติดตั้ง NodeJS และการใช้งานเบื้องต้น

      NodeJS  เป็นการเขียน Javascript ในฝั่งที่เป็น Server ไม่ว่าจะเป็น Web App หรือ Script บนฝั่ง Server นั่นเอง
      ข้อดีของ NodeJS คือความรวดเร็วในการประมวลผล ,การทำงานแบบ Async คือไม่ต้องทำงานเป็นลำดับ  แต่จะพยายามทำงานให้เสร็จเร็วที่สุด (ซึ่งเราสามารถที่จะให้รอการทำงานให้ส่วนอื่นๆแล้วค่อยให้ประมวลผลต่อได้) และที่สำคัญคือรองรับในทุก Platform หลัก  ไม่ว่าเป็น Windows ,MAC ,Linux
      ในการติดตั้ง NodeJS ให้ไป Download ตัวติดตั้งได้ที่ https://nodejs.org/en/download/ ให้เลือก Platform ให้ตรงกับ OS ที่เราไปติดตั้ง และถูกทั้งประเภทของ CPU ของเครื่อง  โดยการติดตั้งนี้จะทำการลงโปรแกรม 2 ตัวคือ NodeJS และ NPM

     เมื่อติดตั้งเสร็จแล้ว  ให้ลองเปิดหน้า command line และพิมพ์ว่า node -v หากไม่มีปัญหาจะขึ้นหมายเลข Version ของ NodeJS ที่เราติดตั้งไป ดังรูป


ในการใช้งานเบื้องต้นของ NodeJS ได้โดยผ่านหน้า command โดยพิมพ์ node และกด Enter ดังรูป
ลองพิมพ์ว่า console.log('hello') และกด Enter ก็จะขึ้นผลลัพธ์คำว่า hello ดังรูป

หรือจะประกาศตัวแปรขึ้มมาและใส่ค่าเข้าตัวแปรก็ได้ เช่น
ในส่วนนี้คือประกาศ ตัวแปร x ขึ้นมา และให้ตัวแปร x มีค่าเท่ากับ 1  จากนั้นก็ให้แสดงค่าตัวแปร x ออกมาบนหน้าจอ  จะเห็ได้ว่าในการพิมพ์คำสั่งแบบนี้จะได้ทีละบรรทัดเท่านั้น  หากต้องการที่จะเขียนเป็น Batch File ก็ได้  โดยจะต้องเขียนเป็น File .JS เช่น

var http = require('http');
http.createServer(function (req, res) {
  res.writeHead(200, {'Content-Type': 'text/plain'});
  res.end('Hello World\n');
}).listen(1337, '127.0.0.1');
console.log('Server running at http://127.0.0.1:1337/');
โดยพิมพ์ลงไปใน nodepad แล้ว save เป็น file ชื่อ webserver.js  จากนั้นเข้าหน้า command และพิมพ์ว่า node webserver.js เพื่อเรียกใช้จะขึ้นมาดังรูป
คำสั่งนี้เป็นการสร้าง Web Server ขึ้นมาโดยจะใช้ Port ที่ 1337  หากเปิด Browser ขึ้นมาและพิมพ์ว่า http://127.0.0.1:1337 ก็จะขึ้นมาดังรูป


หากต้องการออกจาก nodeJS ให้พิมพ์กด ctrl+C

หมายเหตุ  จะต้องให้ Path ในส่วนของหน้า command อยู่ที่เดียวกับ File .JS เสียก่อนถึงจะสามารถใช้งานได้

  จะเห็นได้ว่าเราสามารถใช้ NodeJS ในการทำเป็น Web Server เพื่อที่จะรับ Request ของ Web ได้แต่ก็จะยุ่งยากเกินไป  แต่เราก็สามารถใช้ Library ช่วยได้

fanslave3

get-fans-468x60-2