วันจันทร์ที่ 22 ธันวาคม พ.ศ. 2557

ความต่างของ Macbook และ Notebook ที่บางคนอาจจะยังไม่รู้

หลายคนคงรู้จักดีกับ Macbook และ Notebook ซึ่งมีให้เห็นกันอยู่ทั่วไป โดยความต่างของ 2 ตัวนี้ก็คือ


  • Macbook เป็นเครื่องคอมพิวเตอร์โน้ตบุ๊ก ตระกูลแมคอินทอชจากบริษัทแอปเปิล และมี OS เป็น Mac OS 
  • Notebook เป็นคอมพิวเตอร์ที่มีขนาดเล็กกว่าไมโครคอมพิวเตอร์ ถูกออกแบบไว้เพื่อนำติดตัวไปใช้ตามที่ต่างๆ มีขนาดเล็ก และน้ำหนักเบา และมี OS เป็น Windows , Linux หรือ อื่นๆ ที่ไม่ใช่เครื่องจากบริษัทแอปเปิล
     แล้วทำไมใครๆก็บอกว่า Macbook ดีและเร็วกว่า Notebook ทั้งที่ CPU , Ram , Harddisk , Size (ขนาด) , การ์ดจอ ฯลฯ บางที่ Notebook อาจจะดูตัวเลขมากกว่าซะด้วยซ้ำ แต่ทำไมใช้ Notebook แล้วมันรู้สึกช้าจังเลยไม่ทันใจ แล้วบางคนทำไมถึงซื้อ Macbbok แต่กลับมาลง OS Windows เพื่อใช้งานกัน ทำไมจึงเป็นเช่นนั้นก็เพราะว่า Macbook ที่มี OS เป็น Mac OS ไม่เหมาะกับการเล่นเกมส์ แล้ว Sofware ส่วนใหญ่ก็พัฒนามาใช้งานได้บน Windows เป็นส่วนใหญ่ครับ Macbook ที่เห็นๆกันส่วนใหญ่จะเป็นการใช้งานด้าน Graphic Design , งาน 3D , Sound engineer 


     แล้วถ้าเราตัดเรื่อง OS ออกไปแล้วลง OS เดียวกันทำไม Macbook ถึงยังเร็วกว่า Notebook ละ จากการเทียบดูอุปกรณ์ขางในต่างๆนอกเหนือจากตัว Body มันแล้ว ที่ทำให้ Macbook เร็วกว่า มีราคาสูงกว่า ก็น่าจะเป็นเจ้าตัว SSD นี้เองละนะครับ และ Notebook ก็สามารถซื้อมาใส่ได้เช่นกันนะครับ แต่ก็ราคาก็แพงหน่อยนะครับตามขนาดพื้นที่จัดเก็บข้อมูล แค่ SSD ตัวนี้จะทำให้เร็วขึ้นจริงเหรอ แล้ว SSD ที่ว่านี้มันคืออะไรกันละ 


     SSD คืออะไร มันก็คือ Solid state drive (โซลิดสเตตไดรฟ์) อุปกรณ์จัดเก็บข้อมูลชนิดหนึ่ง ซึ่งใช้ชิปวงจรรวมที่ประกอบรวมเป็น หน่วยความจำ เพื่อจัดเก็บข้อมูลแบบถาวรเหมือนฮาร์ดดิสก์ เทคโนโลยีของโซลิดสเตตไดรฟ์ถูกสร้างมาเพื่อทดแทนฮาร์ดดิสก์จึงทำให้มีอินเทอร์เฟส อินพุต/เอ้าพุต เหมือนกันและสามารถใช้งานแทนกันได้ และเนื่องจากโซลิดสเตตไดรฟ์ถูกสร้างด้วยวงจรอิเล็กทรอนิกส์จึงไม่มีชิ้นส่วนจักรกลใดๆที่มีการเคลื่อนที่ (หลักการของ ฮาร์ดดิสก์ และ ฟรอปปี้ดิสก์ คือใช้จานแม่เหล็กหมุน) ส่งผลให้ความเสียหายจากแรงกระแทกของโซลิดสเตตไดรฟ์นั้นน้อยกว่าฮาร์ดดิสก์ (หรือทนต่อการแรงสั่นสะเทือนได้ดี) โดยการเปรียบเทียบจากการที่โซลิดสเตตไดรฟ์ไม่ต้องหมุนจานแม่เหล็กในการอ่านข้อมูลทำให้อุปกรณ์กินไฟน้อยกว่า และใช้เวลาในการเข้าถึงข้อมูล (access time) และเวลาในการหน่วงข้อมูล(latency) น้อยกว่าเนื่องจากสามารถเข้าถึงข้อมูลในตำแหน่งต่างๆ ได้รวดเร็วและทันทีโดยไม่ต้องรอการหมุนจานแม่เหล็กให้ถึงตำแหน่งของข้อมูล (ขอบคุณขอมูลเรื่อง SSD จาก wikipedia.org)   

วันอังคารที่ 16 ธันวาคม พ.ศ. 2557

Delphi กับการทำ Form Search (ค้นหา) แบบเจ๋งๆ

Delphi กับการทำ Form Search (ค้นหา) แบบเจ๋งๆ


เริ่มกันที่การติดต่อฐานขอมูลอันนี้ผมขอใช้ Component Zeosdbo และฐานข้อมูล MySQl ในการทำตัวอย่างนี้นะครับ โดยส่วนต่อฐานข้อมูลผมจะวางเอาไว้ที่ Data Module ตามภาพด้านล่าง ซึ่งประกอบด้วย Zconnection , ZQuery , DataSetProvider ทั้งหมด 3 ตัว ซึ่งในส่วนของการเซ็ตค่า Properties การเชื่อต่อฐานข้อมูลผมไม่ขอพูดถึงแล้วกันนะครับเพราะสามารถหาดูได้ทั่วไป

ภาพ Data Module


มาต่อกันนะครับ ให้เราสร้าง VCL Form ขึ้นมา 1 อันครับ ซึ่งใน Form เราเราหยิบ Component ดังต่อไปนี้มาวางนะครับ Edit , DBGride , ClientDataSet , DataSource วางเสร็จก็จะมีตามภาพด้านล่างนี้นะครับ



         เมื่อทำการสร้าง Form และวาง Component เสร็จ เราก็มาเริ่มที่ Edit โดยเราจะใส่ Code การค้นหาใน Event OnKeyUp ของตัว Edit1 โดยผมจะเขียนดังนี้นะครับ


procedure TSearchDataF.Edit1KeyUp(Sender: TObject; var Key: Word;
  Shift: TShiftState);
begin
    if (VarToStr(Key) <> '38') and (VarToStr(Key) <> '40') and (VarToStr(Key) <> '13') then
    begin
      DataModule1.ZQuery1.Close;
      DataModule1.ZQuery1.SQL.Text := ' select  code, name  '+
      ' from “????Table????” '+
      ' where name like "%'+Edit1.Text+'%" limit 100 ';
      DataModule1. ZQuery1.Open;

      ClientDataSet1.Close;
      ClientDataSet1.SetProvider(ClassDMU.DataSetProvider1);
      ClientDataSet1.Open;
    end;
end;

         ซึ่งจะมีการตรวจเช็คค่าการกดคีย์บอร์ดต้องไม่ใช่ปุ่ม Enter , Up , และ Down ก็จะทำในส่วนของการค้นหาขอมูลในฐานข้อมูลแบบ Like เพื่อที่เราจะเอาการกดคีย์บอร์ด Enter , Up , และ Down ไปใช้อย่างอื่น ซึ่งคีย์ Up และ Down เราจะเอาไปใช้ในการเลื่อนตัวเลือก Row ใน DBGrid นั้นเองนะครับ ส่วน Enter เราใช้เมื่อเราเลือกรายการแล้ว
         ต่อมาเขียน Event OnKeyDown ของตัว Edit1 ซึ่งจะเป็นส่วนของการเลื่อน Select Row ของ DBGrid จากการที่เราเลื่อนค่าของ ClientDataSet1 ซึ่งจะไม่ทำให้การ Focus ย้ายออกจาก Edit1 เพื่อให้เราสามารถพิมพ์คำค้นหาเพิ่มต่อได้เลยโดยไม่ต้องใช้เมาส์เลื่อนไปคลิกเลือกสลับไปมาระหว่าง Edit1 และ DBgrid

procedure TSearchDataF.Edit1KeyDown(Sender: TObject; var Key: Word;
  Shift: TShiftState);
  var Message: TCMDialogKey;
begin
                if (VarToStr(Key) = '38') or (VarToStr(Key) = '40') then
                begin     
                                if VarToStr(Key) = '38' then ClientDataSet1.Prior;
                                if VarToStr(Key) = '40' then ClientDataSet1.Next;
                                Key := 0;   
                end;
end;



เท่านี้คุณก็จะได้ Form สำหรับ Search (ค้นหา) ที่ง่ายๆแต่เจ๋งๆไปใช้กัน สามารถค้นหาจากบางคำในประโยคนั้นได้ และสามารถทำงานด้วยคีย์บอร์ดยางเดียวโดยไม่ต้องใช้เมาส์คลิกไปมาให้เสียอารมณ์ ที่เหลือก็แค่เอาไปดัดแปลงใช้กันนะครับ ไม่ยากครับติดส่วนไหนก็ถามได้นะครับ