Author: kanakorn.h

  • สมัยนี้เขาไม่แนบไฟล์ใหญ่ๆกันแล้ว (Google Drive)

    มีผู้ใช้ถามมาว่า “จะส่งภาพงานอบรมให้เพื่อน ที่ Gmail แต่ทำไมส่งไปไม่ได้ ไม่กี่ภาพเอง ถามเพื่อนเขาก็ว่าพื้นที่เขาไม่เต็ม ทำไม PSU เราไม่ให้ส่งหล่ะ ?!?!?!” …

    ตรวจสอบพบว่า … ไม่กี่ภาพ แต่ขนาดรวมทั้งสิ้น 125 MB, และ Gmail ก็มีข้อจำกัด ไม่ให้ส่ง email ที่มีขนาดรวมไฟล์แนบเกิน 25 MB ในขณะที่ PSU เองไม่ได้จำกัดการส่งออกครับ

    แล้ว … ทำไงดี ???

    ต่อไปนี้เป็นหนึ่งในหลายๆวิธีครับ นั่นคือ ใช้ Google Drive เพื่อการแชร์ไฟล์
    โดยจะใช้วิธีสร้าง Folder แล้วแชร์ทั้งหมด ให้กับผู้อื่น แบบไม่ต้องใช้ Google Account ในการเข้ามาดู
    วิธีการใช้งานมีดังนี้

    0. ท่านต้องมี Google Account (Gmail Account นั่นแหล่ะ)

    1. Login ที่ https://drive.google.com

    login-drive

    2. คลิกที่ Create แล้วเลือก Folder

    create-folder

     

    3. ตั้งชื่อ “ภาพของฉัน”

    newfolder-ภาพของฉัน

     

    4. Upload ภาพไปเก็บใน “ภาพของฉัน” โดยคลิกที่ “ภาพของฉัน” แล้วคลิกที่ Upload (ภาพลูกศรชื้ขึ้น)
    แล้วเลือก Files, จากนั้น เลือกภาพที่ต้องการ เสร็จแล้วคลิกปุ่ม Open

    upload-pics

    5. รอให้ Upload เสร็จ

    upload-complete

    6.  คลิกที่เมนูด้านหลัง “ภาพของฉัน” แล้วคลิก Share … > Share

    share-share

    7. หากต้องการแชร์ให้ผู้อื่น “ที่มี Link” ดูได้ โดยไม่ต้อง Login ให้เลือก Anyone with the link

    แล้วเลือก Can View ดังภาพ แล้วคลิก Save

    (หากต้องการให้ Login ด้วย Google Account เลือก Private
    หากต้องการให้ทุกคน เห็นได้ เลือก Public on the Web)

    sharing-setting

     

    8.ใส่ email address ผู้รับลงไป คั่นด้วย Comma (,)
    หากต้องใส่ข้อความด้วย ก็สามารถทำได้ จากนั้นคลิก Share & Save

    share-save

    9. ผลคือ จะมี email ส่งไปถึงผู้รับ คล้ายอย่างนี้

    email

    10. เมื่อผู้รับคลิก “ภาพของฉัน” ก็จะได้ผลดังนี้ (มาที่ Google)

    result

     

    จึงเรียนมาเพื่อทราบ

  • การจัดการกับ Backscatter Mail

    (อยู่ระหว่างการปรับปรุง)

    เมื่อ Spammer หรือ Virus ในระบบเครือข่ายของเรา พยายามที่จะส่ง email ซึ่ง

    • ส่งจาก (From) email address ปลอมซึ่งไม่มีอยู่จริง
    • ถึง (To, CC, BCC) email address ซึ่งบางส่วนไม่มีอยู่จริง หรือ ผิดรูปแบบ หรือ ปลายทางไม่ยอมรับ email จาก domain ของเราแล้ว

    จดหมายเหล่านั้นจะมีการแจ้งถึงความล้มเหลวของการส่ง ที่เรียกว่า “Undeliverable mail notification” ไปยังผู้ส่ง ซึ่ง ไม่มีอยู่จริง ดังนั้น จะเกิดจดหมายพวกนี้ ค้างใน mail queue จำนวนมาก ทำให้เกิดความล้าช้าในการส่งจดหมายปรกติ โดยจดหมายพวกนี้เราจะเรียกว่า Backscatter mail

     

     

    Reference

    http://www.postfix.org/BACKSCATTER_README.html

  • 20130227-Kbank-Phishing

    มีจดหมายหลอกลวง หน้าตาประมาณนี้
    20130227-phishing-email

    เมื่อคลิก Link เข้าไป โดยผ่าน Google Chrome จะได้หน้าจอเตือนอย่างนี้
    20130227-chrome-warning

    แต่ถ้าเป็น IE, Firefox จะไม่ได้รับการเตือน !!!!
    ซึ่งจะได้หน้าจอประมาณนี้

    20130227-phishing-kbank

    ซึ่งหน้าตา ช่างเหมือนกับของจริงมากๆ

    แต่นี่คือ Website หลอกลวง เพื่อเอาข้อมูลทางการเงินของท่าน 

    โปรดระวัง !!!

    เปรียบเทียบ ของปลอม (ซ้าย) และ ของจริง (ขวา)

    20130227-compare

     

    วิธีสังเกต

    เวปไซต์ของจริง จะต้องมี รูปกุญแจ และเป็นสีเขียว (เข้ารหัสในการส่งข้อมูลด้วย HTTPS และ ใช้ SSL Certificate ที่ได้รับการยอมรับ)

    ด้านซ้ายคือ ของหลอกลวง ด้านขวาคือ ของจริง

    20130227-ssl-compare

    โปรดใช้ความระมัดระวัง

  • เทคนิคการใช้งาน Regular Expression บน Excel

    เมื่อต้องการเลือกข้อมูล หรือจัดกลุ่มข้อมูลที่เป็นข้อความ ยาวๆ ซับซ้อน ก็ต้องคิดถึงการใช้ Regular Expression ซึ่งใช้งานได้ทั่วไปใน Shell Script ต่างๆ แต่เมื่อต้องทำสิ่งเหล่านี้ใน Excel นั้น ค่อนข้างยุ่งยาก  แล้วในที่สุด ก็ไปพบคนใจดี เขียน VBS มาให้ ตามไฟล์นี้ regexp.txt ให้ใช้งาน Regular Express แบบเป็น Formula ง่ายๆ

    วิธีการใช้ติดตั้งใช้งาน

    1. Download ไฟล์ข้างต้นไป แล้วแก้เป็นนามสกุล .bas
    2. เปิด Excel แล้วกดปุ่ม Alt-F11
    3. ไปที่ File > Import File แล้วเลือกไฟล์ .bas ข้างต้น
    4. ผลคือ จะได้ Module ชื่อ regexp
    5. ใน Excel ตั้งแต่ 2007 เป็นต้นไป จะไม่ยอมให้ Excel ใช้งานพวก Macro ต่างๆได้ ดังนั้น ให้ Save เป็นนามสกุล .xlsm จึงจะใช้งานต่อไปได้

    ใน Module นี้ จะได้ฟังก์ชั่นมา 3 อย่างคือ

    1. RegExp : หาว่าใน String นั้นมี Pattern ที่ค้นหาหรือไม่
    2. RegReplace: แทนที่คำที่ค้นหา
    3. RegExtract: แกะเอาเฉพาะ pattern ที่ต้องการออกมา

    ตัวอย่างที่ใช้งานจริง คือการแกะเอา Parameter บางอย่าง จาก URL ที่เก็บมา เพื่อเอาไปประมวลผลต่อด้วย PSPP หรือ SPSS

    สมมุติใน Cell “A1” มี URL ดังนี้

    /webmail/src/right_main.php?PG_SHOWALL=0&newsort=0&startMessage=1&mailbox=INBOX

    ใน Cell “B1” ต้องการดูว่า newsort ตั้งค่าเป็นอะไร ก็เขียนสูตรว่า

    =RegExExtract(“.*newsort=([0-9])&.*”,A1,”$1″)

    ผลที่ได้คือ 0

    หรือ Cell “C1” ต้องการดูค่าว่า mailbox ตั้งค่าอะไรอยู่ ก็ใช้สูตรว่า
    =RegExExtract(“.*mailbox=([a-zA-Z0-9._-]*)&.*”,A1,”$1″)

    Reference

    http://stackoverflow.com/questions/4556910/how-do-i-get-regex-support-in-excel-via-a-function-or-custom-function

  • เทคนิคในการบันทึกความเร็วของ Web Browser มาเก็บไว้ที่ Web Server

    ต่อจาก

    วิธีพัฒนา Squirrelmail Plugin – กรณี pagespeed

    เทคนิคการส่งค่าจาก PHP ให้ JavaScript

    เมื่อรู้ระยะเวลาที่ Web Browser ประมวลผลแล้ว ต่อไปก็ต้องการเก็บข้อมูลต่างๆมาเก็บที่ Web Server เพื่อบันทึกเก็บไว้วิเคราะห์ต่อไป สามารถทำได้โดยการใช้ JavaScript ส่งค่่าผ่าน HTTP GET Method มายัง PHP

    เริ่มจากสร้าง PHP  ให้ชื่อว่า getdata.php สำหรับรับค่าจาก JavaScript ที่ทำงานจาก Web Browser ของผู้ใช้ ดังนี้

    <?php
      $data=$_GET['data'];
      $h = fopen('/var/log/userview.log', 'a');
      fwrite($h, $data . "\n" );
      fclose($h)
    ?>

    สมมุติ เรียกใช้ผ่าน URL ต่อไปนี้

    http://myserver.com/getdata.php?data=xxyyzz

    ก็จะเอาค่า xxyyzz เขียนใส่ไฟล์ /var/log/userview.log และต่อท้ายไปเรื่อยๆ

    ในฝั่งของ JavaScript ให้เขียนโค๊ดดังนี้

    <SCRIPT LANGUAGE="JavaScript">
    var xmlhttp;
    var url;
    var data;
    
    data=servertime + ":" + second + ":" + total ;
    
    url="http://myserver.com/getdata.php?data=" + data;
    
     if (window.XMLHttpRequest)
        xmlhttp = new XMLHttpRequest();
     else
        xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
    
    xmlhttp.open(\'GET\',url, true);
    xmlhttp.send();
    
    </script>

    เท่านี้ก็จะสามารถเก็บค่าต่างๆจาก Web Browser มาไว้ที่ Web Server ได้

  • เทคนิคการส่งค่าจาก PHP ให้ JavaScript

    ต่อจากตอนที่แล้ว “วิธีพัฒนา Squirrelmail Plugin – กรณี pagespeed

    จากการพัฒนา pagespeed plugin สำหรับ Squirrelmail เพื่อแสดงให้ผู้ใช้เห็นถึง “ความเร็ว” ในการประมวลผลจากฝั่ง server ได้แล้ว

    ต่อไปเราต้องการเอาดูว่า  “ความเร็ว” ในการเดินทางและแสดงผลบน Web Browser ของผู้ใช้ เป็นเท่าไหร่
    ทำได้โดยการใช้งาน JavaScript จับเวลาการทำงาน

    โดยเขียนโค๊ดต่อไปนี้ ใน ฟังก์ชั่น pagespeed_top

    echo ' <SCRIPT LANGUAGE="JavaScript">
     beforeload = (new Date()).getTime();
     </script>
     ';

    และส่วนนี้ไปในฟังก์ชั่น pagespeed_bottom

    echo ' <SCRIPT LANGUAGE="JavaScript">
     afterload = (new Date()).getTime();
     seconds = (afterload-beforeload)/1000;
     document.write("Browser Speed: " + seconds + " s");
    </script>
    ';

    เท่านี้ก็จะทราบระยะเวลาในการเดินทางและแสดงผลเสร็จบน Web Browser แล้วแสดงผลต่อผู้ใช้

    ต่อไปหากต้องการ รวมเวลาทั้งสิ้นที่ผู้ใช้ต้องรอ ตั้งแต่การทำงานที่ Squirrelmail จนกระทั้ง แสดงผลเสร็จ
    ก็ต้องเอาค่าตัวแปรจาก PHP ที่ชื่อว่า $showtime มาบวกกับตัวแปรของ JavaScript ที่ชื่อว่า seconds

    จะส่งค่าจาก PHP ให้ JavaScript อย่างไร ???

    ดูเหมือนยาก แต่จริงๆแล้ว ก็เพียงแค่ให้ PHP แสดงผลเป็นตัวแปรของ JavaScript เท่านั้น ก็สามารถทำให้ JavaScript เอาไปใช้งานต่อได้แล้ว ดังนี้

    echo ' <SCRIPT LANGUAGE="JavaScript">
       servertime = ' . $showtime . ';</SCRIPT>'  ;

    แล้วปรับแต่งโค๊ดใน pagespeed_bottom ข้างต้นเป็น

    echo ' <SCRIPT LANGUAGE="JavaScript">
       servertime = ' . $showtime . ';</SCRIPT>'  ;
    
    echo ' <SCRIPT LANGUAGE="JavaScript"> 
    afterload = (new Date()).getTime(); 
    seconds = (afterload-beforeload)/1000; 
    document.write("Browser Speed: " + seconds + " s"); 
    
    total=servertime + seconds;
    
    document.write("Total:" + total + " s");
    </script> ';

    เป็นตัวอย่างเทคนิคในการส่งค่าระหว่างการคำนวนของ PHP และ JavaScript เบื้องต้น

    ติดตามต่อไปในเรื่องของ “เทคนิคในการบันทึกความเร็วของ Web Browser มาเก็บไว้ที่ Web Server”

  • Warning :: spam-20130109

    พบจดหมายหลอกลวง มีเนื้อความประมาณนี้ (แค่นี้จริงๆ — ไม่จำเป็น อย่าได้ตาม link ไปนะครับ)

    http://www.hfh-schule.de/images/perfsedit.php

    เมื่อคลิกแล้ว (ไม่แนะนำให้ทุกท่านทำเช่นนี้ แต่ผมขอทดลองให้ดูเป็นตัวอย่าง) มันจะ detect ว่าเราอยู่ที่ใดในโลก ในตัวอย่างนี้ มันพบว่า IP Address ของผมอยู่ที่ Songkhla

    ก็จะไปยัง website ชื่อ http://workfromyourhome5.com/

    ซึ่งมันจะทำเป็น Phishing Site หน้าตาเหมือนของ CNBC เป๊ะ ดังนี้


    แต่ถ้าสังเกตดีๆ จะเห็นวันที่ update ข่าวนี้เป็น

    Published: Monday, 30 April 2012 | 7:48 AM ET

    แล้วทุก link ในหน้านี้ จะชี้ไปที่

    http://workfromyourhome5.com/go.php

    ซึ่งจะส่งไปยังหน้า page ที่จะหลอกเอาข้อมูลส่วนตัวเราไปครับ ดังนี้

    จึงเรียนมาเพื่อให้ระมัดระวังกันมากๆครับ

  • วิธีพัฒนา Squirrelmail Plugin – กรณี pagespeed

    Squirrelmail เป็น IMAP Client Webmail แบบมาตราฐาน ทำงานบน PHP ซึ่งติดตั้งง่าย ใช้งานได้รวดเร็ว ไม่ต้องกังวลเรื่องความเข้ากันได้กับ Web Browser ของผู้ใช้หลากหลาย เพราะไม่ค่อยมีการใช้งานพวก JavaScript

    มีความง่ายในการต่อขยายความสามารถ โดยผู้พัฒนาเปิดให้เขียน Plugin ได้ง่าย โดยไม่ต้องแก้ไข Code ของระบบโดยตรง ด้วยวิธีการเสียบ Code ผ่านจุดที่กำหนด ที่เรียกว่า “Hook” ทำให้ Plugin ที่เขียนขึ้น สามารถใช้งานต่อไปได้ แม้มีการปรับรุ่นของ Squirrelmail ต่อไป

    ตัวอย่างการเขียน Squirrelmail Plugin เพื่อแสดงความเร็วในการประมวลผลในแต่ละส่วนของ Squirrelmail
    ใช้ชื่อว่า pagespeed (ทำงานบน Squirrelmail 1.4.x)

    1. สร้าง folder ชื่อ pagespeed
    2. สร้างไฟล์ index.php เอาไว้เฉยๆ
    3. สร้างไฟล์ setup.php , ต่อไปนี้ จะกล่าวถึงการเขียนโค๊ตในไฟล์นี้
    4. สร้าง function แรกที่จะเสียบเข้ากับ Hook ต่างๆ ชื่อว่า squirrelmail_plugin_init_pagespeed
      $starttime=0;
      
      function squirrelmail_plugin_init_pagespeed() {
          global $squirrelmail_plugin_hooks;
         // Code Go Here
      }

      ชื่อฟังกชั่นต้องเป็น squirrelmail_plug_init_xxx() โดยที่ xxx ต้องตรงกับชื่อ folder ในที่นี้คือ pagespeed

    5. ต่อไป บอกให้ Squirrelmail รู้ว่า เราจะเสียบฟังก์ชั่น “pagespeed_top” และ “pagespeed_bottom” ที่่จะเขียนต่อไป ไว้ที่ Hook ใดบ้าง ในที่นี้ จะเสียบไว้ที่หน้า Login บริเวณ Hook ชื่อว่า login_top และ login_bottom, จะเขียนโค๊ดดังนี้ใน function squirrelmail_plugin_init_pagespeed ดังนี้
      $squirrelmail_plugin_hooks['login_top']['pagespeed'] = 'pagespeed_top';
      $squirrelmail_plugin_hooks['login_bottom']['pagespeed'] = 'pagespeed_bottom';

      รูปแบบการเขียนคือ
      $squirrelmail_plugin_hooks[‘ตำแหน่งที่จะเสียบ’][‘ชื่อ plugin’] = ‘ชื่อฟังก์ชั่น’;

    6. ต่อไปมาเขียนรายละเอียดของฟังก์ขั่น pagespeed_top และ pagespeed_bottompagespeed_top ทำหน้าที่ดูเวลาเริ่มต้น มีรายละเอียดดังนี้
      function pagespeed_top() {
         global $starttime;
      
         $gentime = microtime();
         $gentime = explode(' ',$gentime);
         $gentime = $gentime[1] + $gentime[0];
      
         $starttime=$gentime;
      }

      ส่วน pagespeed_bottom ทำหน้าที่ ดูเวลาสิ้นสุด แล้วคำนวนเวลาที่ใช้ไป
      จากนั้น ก็แสดงผลการคำนวนได้

      function pagespeed_bottom() {
         global $starttime;
      
         $gentime = microtime();
         $gentime = explode(' ',$gentime);
         $gentime = $gentime[1] + $gentime[0];
         $pg_end = $gentime;
         $totaltime = ($pg_end - $starttime);
         $showtime = number_format($totaltime, 4, '.' , '');
      
         echo 'Speed: ' . $showtime . ' s' ;
      }

    เท่านี้ก็ได้ plugin แล้ว ต่อไปก็เอาไปติดตั้งได้

    หากต้องการวัดความเร็วในหน้าอื่นๆ เช่น ในส่วนของ right_main (ส่วนแสดงรายการ email ที่อยู่ใน mailbox) ก็สามารถเพิ่มเข้าไปในฟังก์ชั่น squirrelmail_plugin_init_pagespeed ดังนี้

    $squirrelmail_plugin_hooks['right_main_after_header']['pagespeed'] = 'pagespeed_top';
    $squirrelmail_plugin_hooks['right_main_bottom']['pagespeed'] = 'pagespeed_bottom';

    รายละเอียดเกี่ยวกับตำแหน่งของ Hook ดูได้ที่นี่ http://squirrelmail.org/docs/devel/devel-4.html#ss4.4

  • ใช้ Powershell แบบ Linux Shell Script

    รวบรวมการทำงานกับ Powershell บน Windows โดยเทียบเคียงกับการใช้ ShellScript บน Linux
    (ทะยอยเขียนบันทึก โปรดติดตามเรื่อยๆ)

    • เลือกบางบรรทัดจากไฟล์ที่มีคำที่ต้องการอยู่
      shellscript: grep someword textfile.txt
      powershell: select-string “someword” textfile.txt
    • เลือกบางบรรทัดจากไฟล์ แล้วแยกด้วยเครื่องหมาย : เพื่อเอาฟิลด์ที่ 3
      shellscript: grep someword textfile.txt | awk -f ‘{FS=”:”}{print $3}’
      powershell: select string “someword” textfile.txt | % { $_.line.split(‘:’)[2];  }
    • เลือกบางบรรทัดจากไฟล์ แล้วเอาลงไฟล์
      shellscript: grep someword textfile.txt  > output.txt
      powershell: select string “someword” textfile.txt | foreach-object {$_.line} > output.txt
    • ดูท้ายไฟล์ตลอดเวลา (ไม่รู้จะใช้คำว่าอะไรดี) และเริ่มดูโดยเอา 3 บรรทัดสุดท้าย ไม่ใช่เริ่มทั้งไฟลฺ์
      shellscript: tail -f mydata.log
      powershell: get-content mydata.log -wait -tail 3