ปัญหาของ EditPlus 3.0 (จากตอนที่แล้ว) ได้ถูกแก้ไขแล้ว (Path334_0215)

จาก ท่าทางจะไม่ถูกกับ EditPlus 3.0 (ณ. ตอนนี้) เมื่อวาน ผมอีเมลไปบอกทาง Support ของ EditPlus (ตอน 4 ทุ่มคืนวันที่ 17 ก.พ. 51) แล้วก็ได้รับการแก้ไขแล้ว โดยอีเมมลตอบกลับมาพร้อมกับ path สด ๆ ร้อน ๆ เมือตอนเที่ยงที่ผ่านมานี่เองครับ (ไม่ถึง 24 ชั่วโมงสำหรับ path อันนี้ครับ) โหลดได้ที่ http://www.editplus.com/epp300p334_0215.zip 

DATE: 2008-02-15
BUILD: 334

This is a patch file to fix the bugs of EditPlus v3.00

Copyright © 1998-2008 ES-Computing
Contact: [email protected]
Homepage: http://www.editplus.com/

INSTALLATION
============
Extract the files in the ZIP file to EditPlus 3.00 installation directory.

FIXED BUGS
==========

* The default encoding of open file system languages instead of keyboard language.
* Function list could cause program crash in some cases.
* User tool setting could not handle more than 500 characters.
* Increases max number of projects to 200.

ถือเป็นการแก้ไขปัญหาที่รอดเร็วอย่างมาก ไม่เสียทีที่เสียเงินซื้อ ;)

 

ท่าทางจะไม่ถูกกับ EditPlus 3.0 (ณ. ตอนนี้)

พอดีว่าเพิ่ง upgrade ตัว EditPlus เป็น 3.0 แล้วก็ downgrade กลับมาใช้ตัว 2.31 b524 เหมือนเดิมแล้ว เพราะมีปัญหากับไฟล์ที่มีภาษาไทย ที่เป็น encoding แบบ ANSI (ซึ่งเป็นตัว default เดียวกับ Notepad นั้นแหละ) โดยมาหลัง ๆ ผมใช้ encoding ของไฟล์เป็น UTF-8 เกือบหมดแล้ว จะมีบางงานเท่านั้นที่ใช้ ANSI อย่าง latex ที่ผมต้อง compile งานซึ่งเป็น ANSI มันจะดีกว่าเยอะ ไม่ต้องตั้งอะไรมากก็ใช้งานได้ดี (ผมใช้ MikTex 2.7 + ThaiLaTex แบบลงมือไม่ได้เป็น auto นั่งทำอยู่ 2 วัน) โดยไฟล์ที่เปิดมาใน 3.0 มันจะโดย change ตัว encoding ไป CP1252 แทนที่จะเป็น ANSI แทน แบบใน 2.31 น่ะ ซึ่งมันแปลกมาก ๆ ทั้ง ๆ ที่เปิดได้ทั้ง 2.31 และ notepad ก็ ok แต่ใน 3.0 กลับไม่ได้ -_-‘ ลำบากมาก ๆ เลยกลับมาใช้ตัวเดิมซะ

แล้วนี่ก็เพิ่งอีเมลไปแจ้ง support ของ EditPlus แล้วว่ามันมีปัญหานี้ ไม่รู้จะได้เรื่องอะไรหรือเปล่า แต่ว่ามันก็ต้องได้เรื่องแหละ เพราะเราเป็นลูกค้าเค้า ควรจะแก้ปัญหาให้เราได้ (ผมซื้อ license ของ EditPlus มาตั้งแต่ปี 2005 แล้ว)

ปัญหานี้ทำให้เสียเวลานั่งไล่แก้ไข ซะงง เลยว่าเป็นที่ user error หรือว่าเป็นที่ bug กันแน่ แต่เท่าที่เปรียบเทียบแล้วเป็นที่ app แน่นอน

 

ความคืบหน้า PHP Hoffman Framework (6)

วันนี้คงสั้น ๆ หน่อย เพราะกำลัง implement ส่วนของ Access Control List และ Authentication อยู่ครับ และ phase ต่อไปก่อนจะสามารถออก pre-alpha version ได้คงต้องทำส่วนของ view layer ให้ดีกว่านี้ โดยการนำเอา Smarty เข้ามาใช้งานนั้น มันเป็นแบบ single template / single layer มันทำให้การออกแบบ theme/template ที่แปลเปลี่ยนตามลักษณะการใช้งานนั้น ยากพอสมควร พอดีว่าผมได้ concept ของ master page ของ ASP.NET มา ซึ่งจริง ๆ มันก็แบบเดียวกับในพวก joomla หรือ drupal ที่มี template กลาง และเอา view มาใส่ซ้อนลงไปอีกทีนึงนั้นเอง ตอนนี้ไล่ทำทั้งหมดอยู่ แบบว่ามัน late มาจากวันที่ต้อง public source มาหลายวันแล้ว เร่งหูตูบเลยงานนี้

 

ความคืบหน้า PHP Hoffman Framework (5)

จาก ความคืบหน้า PHP Hoffman Framework (4) ตัวความสัมพันธ์ระหว่าง model กับ controller นั้น เพิ่มเติมและปรับเปลี่ยนเพื่อความเหมาะสม โดยถ้าเราจะกำหนด controller ต้องมี namespace หรือ prefix-name (ต่อไปจะเรียกว่า namespace อย่างเดียวครับ) ด้านหน้าเสียก่อน คือ

class controller_<ชื่อ controller> extends Hmf_FlowController {
....
}

โดยให้ extends มาจาก FlowController ครับ

ส่วนของ model ก็เช่นกันครับ

class model_<ชื่อ model> extends Hmf_LogicModel {
    function __construct(){
        parent::__construct();
    }
    ....
}

(อันนี้คือ model แบบมาตรฐาน)

แต่เวลาเรียกเอา model มาใช้ใน FlowController ก็ใช้ method ‘getInstantModel’ ของ FlowController ครับ โดยใส่ชื่อ model ลงไป และเดี่ยวมันจะเติม namespace ให้เอง แบบนี้ครับ

class model_user extends Hmf_LogicModel {
    function __construct(){
        parent::__construct();
    }
    ....
}

class controller_user extends Hmf_FlowController {
    function list($page = 1){

        $user = $this->getInstantModel('user');

        $out['data'] = $user->pagination($page, 5);
        $out['pagenav'] = $user->paginationLink(HttpPage::url('user','list'));

        return $out;

    }
}

แต่ถ้า model_user ไม่มี หรือไม่ได้สร้าง class ไว้ ตัว getInstantModel มันจะไปสร้าง Instant ของ class ของ model นั้นแล้วให้ตัวมันมีคุณสมบัติแบบเดียวกับ class ของ model แบบมาตรฐานด้านบนนั้นแหละครับ พูดง่าย ๆ ก็คือถ้าหาไม่เจอ ก็สร้างให้เลย ส่วนใช้งานได้หรือไม่อีกเรื่องครับ โดย class ของ model แบบมาตรฐานมีคุณสมบติแบบเดียวกับ LogicModel เลยครับ

class controller_user extends Hmf_FlowController {
    function list($page = 1){

        $user = $this->getInstantModel('user');

        $out['data'] = $user->pagination($page, 5);
        $out['pagenav'] = $user->paginationLink(HttpPage::url('user','list'));

        return $out;

    }
}

โดยตัวอย่างด้านบน ถ้าไม่มี model_user ก็ใช้งานได้เหมือนกันครับ ซึ่งสะดวกมากในกรณีที่ใช้ class มาตรฐานทั่วไปครับผม

 

BarCamp Bangkok Winter 2008 @ ช่างคุย

พอดีว่าผมได้รับเชิญให้ไปคุยเรื่อง BarCamp Bangkok Winter 2008 ในรายการ ช่างคุย ที่เว็บ Changkhui.Com ครับ แต่ในเว็บ ณ. ตอนนี้ (วันที่ 12 ก.พ. 51 เวลา 9:55 น.) ยังไม่มีรายการขึ้นในเว็บ แต่ใน podcast’s feed นั้นมีรายการนี้อยู่แล้ว แนะนำให้ subscribe  ตัว podcast ลง itunes หรือโปรแกรมอ่าน feed แล้วโหลดมาฟังได้เลยครับ