ค้นหาบทความ

โพสต์แนะนำ

ย้าย Blog ไปที่ TechDiary

วันศุกร์ที่ 21 ธันวาคม พ.ศ. 2555

โปรแกรมแก้ไขคำผิดอัตโนมัติ ในกรณีลืมเปลี่ยนภาษาบน keyboard

ผมเจอบ่อยครับ เพราะผมพิมพ์สัมผัสไม่เป็น ประมาณว่า พิมพ์ไปยาวยืด แต่พอเงยหน้าจาก keyboard มาดูหน้าจอ ดันเป็นภาษาที่ไม่ต้องการพิมพ์ เช่นอยากพิมพ์คำว่า สวัสดี แต่ลืมเป็น keyboard เป็นภาษาไทย ก็กลายเป็น l;ylfu

ต้องใช้โปรแกรมนี้เลยครับ แล้วคุณจะลืมปุ่มเปลี่ยนภาษาไปเลย

>>Download<<

ต้องขอบคุณผู้พัฒนาด้วยครับ

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

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

อวสาน MSN/WLM


18 เดือน หลังจากไมโครซอฟท์ประกาศว่า ต้องจ่ายเงินเดือนให้กับผู้พัฒนา Windows Live Messenger (WLM) หรือชื่อก่อนหน้านี้คือ MSN เป็นเงินสูงถึง $8.5 พันล้าน หรือประมาณ 2 แสน 6 หมื่นล้านบาทเลยทีเดียว
                ไมโครซอฟท์ได้ให้ข่าวว่าจะปิด MSN ในเดือนมีนาคม 2013 (.. 2556) ยกเว้นประเทศจีนที่ยังจะเปิดต่อ ซึ่งสะท้อนให้เห็นถึงการให้ความสำคัญกับ messenger ตัวใหม่ที่เพิ่งซื้อมานั่นก็คือ Skype
                WLM เปิดตัวเมื่อปี 1999 ในชื่อ MSN Messenger และได้เพิ่มความสามารถในด้านต่างๆมาตลอด ไม่ว่าจะเป็น การแชร์รูปภาพ การโทรแบ video แม้กระทั่งการเล่นเกมออนไลน์ โดยในปี 2009 ก็มียอดผู้ใช้ถึง 330 ล้านคนทั่วโลก
                จากการวิจัยพบว่า มีผู้ใช้ WLM มากเป็นสองเท่าของผู้ใช้ Skype เป็นรองก็แค่ Yahoo Messenger แต่การวิจัยก็พบว่า ยอดผู้ใช้ตกลงถึงปีละ 8.3 ล้านคน นั่นคือ 48% ต่อปี ในขณะที่ยอดผู้ใช้ Skype กลับเพิ่มขึ้นเรื่อยๆ ในช่วงเดียวกัน
                แต่ยังดีที่ Skype มี option ให้สามารถใช้ user เดียวกับที่ใช้ใน WLM ได้

ที่มา: BBC News

วันพฤหัสบดีที่ 22 พฤศจิกายน พ.ศ. 2555

ทำให้ VS2008 build Smart Device Project ให้เร็วขึ้น

1) เปิดไฟล์ C:\WINDOWS\Microsoft.NET\Framework\v3.5\Microsoft.CompactFramework.Common.targets for editing.

2) เปลี่ยนตรงนี้:

  <Target

    Name="PlatformVerificationTask">

    <PlatformVerificationTask

      PlatformFamilyName="$(PlatformFamilyName)"

      PlatformID="$(PlatformID)"

      SourceAssembly="@(IntermediateAssembly)"

      ReferencePath="@(ReferencePath)"

      TreatWarningsAsErrors="$(TreatWarningsAsErrors)"

      PlatformVersion="$(TargetFrameworkVersion)"/>

  </Target>


ให้เป็นแบบนี้:


  <Target

    Name="PlatformVerificationTask">

    <PlatformVerificationTask

      Condition="'$(DoPlatformVerificationTask)'=='true'"

      PlatformFamilyName="$(PlatformFamilyName)"

      PlatformID="$(PlatformID)"

      SourceAssembly="@(IntermediateAssembly)"

      ReferencePath="@(ReferencePath)"

      TreatWarningsAsErrors="$(TreatWarningsAsErrors)"

      PlatformVersion="$(TargetFrameworkVersion)"/>

  </Target>

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

การ SELECT ข้อมูลแบบ Random ของ Database ต่างๆ



Select a random row with MySQL:
SELECT column FROM table
ORDER BY RAND()
LIMIT 1

Select a random row with PostgreSQL:
SELECT column FROM table
ORDER BY RANDOM()
LIMIT 1

Select a random row with Microsoft SQL Server:
SELECT TOP 1 column FROM table
ORDER BY NEWID()

Select a random row with IBM DB2:
SELECT column, RAND() as IDX
FROM table
ORDER BY IDX FETCH FIRST 1 ROWS ONLY

Select a random record with Oracle:
SELECT column FROM
( SELECT column FROM table
ORDER BY dbms_random.value )
WHERE rownum = 1

ที่มา: http://www.petefreitag.com/item/466.cfm

Waterfox 64bit โคตรเร็ว

วันนี้ ได้ลอง browser ใหม่ในสายของ firefox ที่แยกออกมาเพื่อเครื่องที่เป็น windows 64bit โดยเฉพาะ
โดยใช้ขื่อ Waterfox เป็นรุ่นที่ทำการจัดการ ram, cpu, graphic card ได้ดีมาก ขอบอกว่าประทับใจในความเร็วอย่างมาก จากที่เคยติดใจในความเร็วของ chrome ตอนนี้ต้องมาแบ่งใจให้ Waterfox อย่างเลี่ยงไม่ได้

ใครใช้เครื่อง 64 bit ลองดู: http://download.cnet.com/Waterfox-64-Bit/3000-2356_4-75575521.html?tag=rb_content;main

วันพุธที่ 7 พฤศจิกายน พ.ศ. 2555

วันจันทร์ที่ 5 พฤศจิกายน พ.ศ. 2555

ฟังก์ชั่นหา Day of Year


function dayofyear(d) {   // d is a Date object
   var yn = d.getFullYear();
   var mn = d.getMonth();
   var dn = d.getDate();
   var d1 = new Date(yn,0,1,12,0,0); // noon on Jan. 1
   var d2 = new Date(yn,mn,dn,12,0,0); // noon on input date
   var ddiff = Math.round((d2-d1)/864e5);
   return ddiff+1;
}



ที่มา: http://www.webdeveloper.com/forum/showthread.php?125428-Does-javascript-have-a-simple-get-day-of-the-year-type-function&p=657625

วันจันทร์ที่ 15 ตุลาคม พ.ศ. 2555

ทำไมต้อง Eject flash drive ก่อนถอดออกจากเครื่องคอมพิวเตอร์


Flash drive, pen drive หรือ thumb drive แล้วแต่จะเรียก แต่ทั้งหมดนั่นก็คือสื่อบันทึกข้อมูลที่ต่อเข้ากับเครื่องคอมพิวเตอร์ ผ่านทางพอร์ต USB ส่วนใหญ่แล้วจะมีขนาดเล็ก พกพาง่าย (บางอันก็เล็กเกินไป หายง่ายด้วย) หลายๆ คนอาจจะสงสัยว่า ทำไมก่อนที่จะถอดออกจากเครื่องคอมฯ จะต้องทำการ “Eject” หรือ Safety Remove เสียก่อน และทำไมถ้าไม่ทำอย่างนั้น ข้อมูลจะเสียหาย?
   
โดยทั่วไป OS ต่างๆ (Windows, OS X, Linux …) จะใช้วิธีการที่เรียกว่า “Write Caching” ในการเขียนไฟล์ไปยัง Drive ต่างๆ Write Caching ก็คือการ “สะสม หรือ Cache” คำสั่งร้องขอในการเขียนไฟล์ไปยัง drive ต่างๆ ไว้จำนวนหนึ่งก่อน (คือ สั่งให้ copy file ก็อาจจะยังไม่ทำทันที) แล้วทำทีเดียวพร้อมกัน เพื่อเพิ่มประสิทธิภาพในการเชื่อมต่อ และเขียนไฟล์ไปยัง drive นั้นๆ
   
ทีนี้ ถ้าอยู่ดีๆ เราดึง flash drive ออก เพราะนึกว่า copy file ลงไปเรียบร้อยแล้ว โดยที่ไม่ทำการ Eject เสียก่อน ก็จะทำให้ข้อมูลที่ค้าง หรือยังไม่ได้เขียนลงไปจริงๆ หรือเขียนยังไม่เสร็จนั้น เสียหายได้ เนื่องจากการ Eject นั้น เป็นการบอก OS ว่า “มีอะไรที่ทำค้างอยู่ ก็ทำให้เสร็จซะ ฉันจะเอาออกแล้ว”

ยังโชคดีหน่อยสำหรับคนที่ใช้ Microsoft Windows เพราะว่า โดยปกติแล้วถ้า windows มองว่า drive ไหนเป็น drive ภายนอก หรือ Removable Drive แล้ว มันจะปิดฟังก์ชั่น Write Caching สำหรับ drive นั้นให้เอง ทำให้สามารถถอด flash drive ได้โดยที่ไม่ต้องเสี่ยงกับข้อมูลเสียหาย ส่วน OS X และ Linux นั้น เปิดใช้งาน Write Caching สำหรับทุกๆ drive
   
อย่างไรก็ตาม แม้ windows จะไม่ใช้ write caching กับ removable drive เราก็ยังควรที่จะ Eject ก่อนจะถอดทุกครั้ง เพราะบางทีหากเกิดเพี้ยนขึ้นมา มองว่า flash drive เรา ไม่ใช่ removable drive ขึ้นมา (เกิดได้จากหลายสาเหตุ) มันก็จะเปิดใช้งาน write caching ทันทีที่มีการเขียนไฟล์ลง drive นั้น สรุป Eject ดีที่สุด แต่ถ้าเผลอดึงออกมา ก็อุ่นใจได้ระดับหนึ่ง หาก windows ไม่เพี้ยนซะก่อน

วันจันทร์ที่ 24 กันยายน พ.ศ. 2555

8 password ที่ชอบใช้กันมากที่สุด

ข้อมูลเกือบทั้งหมดได้มาจาก avast.com ส่วนข้อแรกจากประสปการณ์ เพราะไปที่ไหนก็เห็นใช้กัน

1. P@ssw0rd
2. welcome
3. password
4. Welcome1
5. welcome1
6. Password2
7. 123456
8. Password01

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

ขนาดกระดาษ A3, A4 และอื่นๆ

ต้องใช้ตอนเขียน Reporting Service (SSRS)

Metric Name

A5

A4

A3

A3+

A2

A1

A0
Metric Size

148 x 210 mm

210 x 297 mm

297 x 420 mm

329 x 483 mm

420 x 594 mm

594 x 841 mm

841 x 1189 mm
U.S. Equivalent

5.8 x 8.3 inches

8.3 x 11.7 inches

11.7 x 16.5 inches

13 x 19 inches

16.5 x 23.4 inches

23.4 x 33.1 inches

33.1 x 46.8 inches

วันพุธที่ 19 กันยายน พ.ศ. 2555

Excel VBA บังคับให้ตัวเลข เก็บเป็นตัวอักษร

เขียน VBA ไปก็งงไป อ่านรหัสสินค้ามา เป็น 0001 แต่พอเอาลง excel มันกลับมองเป็นเลข 1 อย่างเดียว และก็ไม่อยากใส่เครื่องหมาย ' ข้างหน้า เพื่อให้ excel มองว่าเป็น text กว่าจะหาวิธีแก้ได้
ตามนี้เลย:

Sheets("mySheet").Range("A1").NumberFormat="@"

บังคับให้ cell A1 แสดงข้อมูลเป็น text ไม่ใช่ตัวเลข

วันพฤหัสบดีที่ 23 สิงหาคม พ.ศ. 2555

Windows 8 เอา Start Menu กลับมา

เบื่อ Windows 8 หาโปรแกรมยาก Start Menu หาย เอากลับมาเลย M$ จะเน้น tablet ไปไหน ทำงานจริงเค้าใช้ PC ไม่ก็ laptop เฟ้ย เอ้า ไม่ใช่ก็ไกล้เคียง โดยใช้ Freeware ตัวนี้ จะได้ start menu ที่เหมือน windows 7 กลับมา ViStart

วันศุกร์ที่ 10 สิงหาคม พ.ศ. 2555

Hacker อิหร่าน ถล่มเว็บอิสราเอล



แฮ็กเกอร์รายหนึ่งที่ใช้ชื่อแทนตัวเองว่า You-r!-k@n  อ้างว่าได้ทำการแฮ็ก และเปลี่ยนแปลงหน้าเว็บไซต์ต่างๆ จำนวน 91 เว็บ ซึ่งเป็นเว็บของหน่วยงานรัฐ หน่วยงานการศึกษา และบริษัทเอกชนของอิหร่าน โดยทำไปเพื่อประท้วงรัฐบาลอิหร่านในข้อหา สนับสนุนผู้ก่อการร้าย และสร้างอาวุธนิวเคลียร์เพื่อทำลายอิสราเอล
You-r!-k@n  กล่าวว่า เขาเริ่มด้วยการแทนที่หน้าเว็บไซต์เหล่านั้นด้วยรูปธงชาติอิสราเอล พร้อมกับข้อความ This site is hacked by You-r!-k@n. Say no to terror. Say no to nuclear Iran.แปลว่า อิหร่านจงอย่ายุงกับผู้ก่อการร้าย อย่ายุ่งกับนิวเคลียร์ จากนั้นก็ทำการลบเว็บทั้งหมดทิ้ง จากข้อมูลจากอีเมล์ที่เขาได้ส่งให้ InfoWorld และ InfoSec Island กล่าวว่า เว็บไซต์ทั้งหมดได้ถูกลบไปแล้ววันนี้ (del *.*:-) ฉันมี console backdoor ติดตั้งไว้บน server ด้วย DNS และ web server ไม่มีอีกต่อไปแล้ว แต่ทว่า เขาก็ไม่ได้ให้รายชื่อเว็บทั้งหมดที่เขาแฮ็ก แต่ชื่อเว็บทั้งหมดที่เข้าเอ่ยถึง ไม่สามารเข้าไปดูได้ในขณะเขียนเรื่องนี้

นอกจากนี้ยังมีข้อความโต้ตอบทางอีเมล์กับ InfoWorld ดังนี้
InforWorld: คุณใช้เวลานานเท่าไหร่ในการจัดการกับเว็บทั้ง 91 แห่ง ตั้งแต่เริ่มวางแผน จนสำเร็จทั้งหมด
You-r!-k@n: ประมาณ 3 วัน

InfoWorld: คิดว่าง่าย หรือยากกว่าที่คิดในการแฮ็กเว็บทั้งหมดนั้น?
You-r!-k@n: ไม่ได้ยากที่สุดตั้งแต่ที่เคยทำมา อันที่ยากที่สุดสำหรับผมคือที่ irimo.ir (หน่วยงานอุตุนิยมของอิหร่านที่เจาะในเดือน พ.ค.) ซึ่งใช้เวลาถึง 2 เดือน ผมวางแผนที่จะยกระดับสิทธิ์จากผู้เข้าชมเว็บทั่วไป ให้กลายเป็นผู้จัดการระบบโดเมนทั้งโดเมน มันเป็นโดเมนใหญ่ ครอบคลุมเว็บสัก 2-3 เว็บได้ จากนั้นก็ลบ AD ทั้งหมดทิ้ง ทำให้พวกเขาใช้เวลาเป็นอาทิตย์ กว่าจะกู้กลับมาได้ แต่รับรองว่ากู้ได้ไม่หมดหรอก

InfoWorld: เว็บเหล่านี้มีจุดอ่อนเรื่องความปลอดภัยใช่มั้ย? คุณแปลกใจกับจุดอ่อนต่างๆ ที่คุณเจอหรือเปล่า?
You-r!-k@n: อืมคือผมก็ไม่ใช่มือใหม่ ผมเลยไม่แปลกใจเท่าไหร่ มันเป็นการโจมตีแบบเป็นขั้นเป็นตอน เริ่มจาก SQL Injection เข้าไปในหน้าของผู้ดูแลเว็บ เพื่อหาจุดอ่อน เพื่อให้ผมอัพโหลดไฟล์ ASP เข้าไปได้ จากนั้นก็เข้า command promt และยกระดับสิทธิ์ของตัวเอง จากนั้นก็ port fun J และแล้วก็ได้เป็น Admin

InfoWorld: คุณยกตัวอย่างสักเรื่องสองเรื่องให้ฟังได้มั้ยว่าคุณได้ใช้ social engineering ยังไงบ้าง?
You-r!-k@n: อืม.. มีบริษัทของอิหร่านแห่งหนึ่ง ที่ผมได้แฮ็กอีเมล์อันนึง จากนั้น ส่งอีเมล์หาเพื่อนร่วมงานของคนๆ นั้น โดยใช้ข้อความว่า เจ๋ง ลองดูนี่สิ http://xxx.xxx.xxx.xx” มันเป็น URL หลอก เพื่อจะทำการติดตั้ง malware บน mail server แค่คลิกลิงค์ พวกเขาก็เสร็จ

InfoWorld: เห็นคุณบอกในข้อความแรกของคุณว่า เจ้าของเว็บไซต์จะต้องสร้างเว็บขึ้นมาใหม่หมดตั้งแต่ต้น คุณแน่ใจเหรอว่าพวกเข้าจะไม่มีไฟล์สำรอง?
You-r!-k@n: ผมไม่แน่ใจหรอกว่าพวกเขามีไฟล์สำรองหรือเปล่า แต่ถึงจะมี ก็ไม่รู้ว่าจะอัพเดทล่าสุดหรือเปล่า ปัญหาใหญ่ที่สุดของพวกเขาคือหาจุดอ่อนให้เจอ เพาระถ้าไม่ปิดจุดอ่อนนั้น ถึงจะเอาไฟล์สำรองมาแทน ผมก็เข้าไปอีกได้อยู่ดี

InfoWorld: ถ้าคุณทำความเสียหายให้เว็บตั้ง 91 เว็บได้ คุณคิดว่าจะมีคนที่มีฝีมือพอกันมาทำแบบนี้กับอิสราเอล สหรัฐฯ หรือว่าประเทศอื่นมั้ย?
You-r!-k@n: สิ่งที่ผมมั่นใจคือ ในอิสราเอลเอง และทุกๆ ประเทศทั่วโลก ก็มี server ที่มีจุดอ่อนอยู่ทั้งนั้นแหละ


แปลจาก InfoWorld.com

วันศุกร์ที่ 13 กรกฎาคม พ.ศ. 2555

.NET WinForm แก้ฟอร์ม กระพริบ ถ้ามี control เยอะๆ

ในกรณีที่ form มี control เยอะๆ (หรือ form ทีรูปเป็น background หรือมี TabControl ใน form) การเปิด form หรือ สลับ form ไปมา อาจจะทำให้เกิดการกระพริบของ control ต่างๆ ได้ ถึงแม้จะให้ Double Buffer เป็น true แล้วก็ตาม นี่คือโค้ด การ override property ของ form ที่ชื่อว่า CreateParams


ปกติแล้วเวลา form (หรือ control อื่นๆ) ทำการ update ตัวเอง (Paint) มันจะวาดทับพื้นที่ทั้งหมดของตัวเอง แล้ว วาด control ที่อยู่ในตัวมันใหม่อีกที ทำให้หากมี control เยอะๆ จะเกิดการกระพริบในการวาด
ตัวเลข style ที่เป็นเลข &H2000000 ก็คือ style ที่ชื่อว่า WS_CLIPCONTROLS เป็นการบอกว่า ให้วาดเฉพาะส่วนที่ไม่มี control อื่นๆ อยู่เท่านั้น จึงทำให้การวาด (paint) เร็วขึ้น



Protected Overrides ReadOnly Property CreateParams() As _
System.Windows.Forms.CreateParams
        Get
            Dim cp As CreateParams = MyBase.CreateParams
            Dim OSVer As Version = _
            System.Environment.OSVersion.Version()


            Select Case OSVer.Major
                Case 5
                    If OSVer.Minor > 0 Then
                        cp.ExStyle = cp.ExStyle Or &H2000000
                    End If
                Case Is > 5
                    cp.ExStyle = cp.ExStyle Or &H2000000
            End Select


            Return cp


        End Get
End Property


สาเหตุที่ต้องตรวจสอบ version ของ windows เนื่องจากใน Windows ที่ต่ำกว่า XP จะทำให้ form แบบ MDI กิน cpu มาก จนทำให้โปรแกรมแฮงก์ได้


Credit: 
Stuart Blackler@http://sblackler.net
Marius Bancila@http://www.codeguru.com



วันอังคารที่ 10 กรกฎาคม พ.ศ. 2555

Bye bye Thunder Bird

Mozilla plans to let go of its open-source e-mail software, with hopes that other people will keep Thunderbird alive, TechCrunch says.

Read more: download.cnet.com

วันศุกร์ที่ 1 มิถุนายน พ.ศ. 2555

ฟังก์ชั่น Excel VBA SaveAs dialog และเขียน TextFile


Sub WriteFile(fname As String, txt As String)     'เขียน Text File
    Dim fso As New FileSystemObject
    Dim stream As TextStream


    Set stream = fso.CreateTextFile(fname, True)
    stream.Write (txt)
    stream.Close
End Sub


Function SaveDialog() As String       'เปิด Dialog ถามชื่อ File
    Dim ret As String


    ret = Application.GetSaveAsFilename("Output.xml", _
          "XML files (*.xml),*.xml", 1, "Save XML Output")


    If ret <> "False" Then
        SaveDialog = ret
    End If
End Function


ถ้าจะใช้ FileSystemObject ต้อง reference Microsoft Scripting Runtime ด้วย โดยในหน้า VB ไปที่ Tool -> References...

MS Excel: Format Function


MS Excel: Format Function with Strings (VBA only)


In Excel, the Format function takes an expression and returns it as a formatted string.
The syntax for the Format function is:
Format ( expression, [ format ] )
expression is the value to format.
format is optional. It is the format to apply to the expression. You can either define your own format or use one of the named formats that Excel has predefined such as:
FormatExplanation
General NumberDisplays a number without thousand separators.
CurrencyDisplays thousand separators as well as two decimal places.
FixedDisplays at least one digit to the left of the decimal place and two digits to the right of the decimal place.
StandardDisplays the thousand separators, at least one digit to the left of the decimal place, and two digits to the right of the decimal place.
PercentDisplays a percent value - that is, a number multiplied by 100 with a percent sign. Displays two digits to the right of the decimal place.
ScientificScientific notation.
Yes/NoDisplays No if the number is 0. Displays Yes if the number is not 0.
True/FalseDisplays True if the number is 0. Displays False if the number is not 0.
On/OffDisplays Off if the number is 0. Displays On is the number is not 0.
General DateDisplays date based on your system settings
Long DateDisplays date based on your system's long date setting
Medium DateDisplays date based on your system's medium date setting
Short DateDisplays date based on your system's short date setting
Long TimeDisplays time based on your system's long time setting
Medium TimeDisplays time based on your system's medium time setting
Short TimeDisplays time based on your system's short time setting

Applies To:

  • Excel 2007, Excel 2003, Excel XP, Excel 2000

For Example:

Format("210.6", "#,##0.00")would return '210.60'
Format("210.6", "Standard")would return '210.60'
Format("0.981", "Percent")would return '98.10%'
Format("1267.5", "Currency")would return '$1,267.50'
Format("Sep 3, 2003", "Short Date")would return '9/3/2003'

VBA Code:

The Format function can only be used in VBA code. For example:
Dim LValue As String
LValue = Format("0.981", "Percent")
In this example, the variable called LValue would now contain the value of '98.10%'.

วันศุกร์ที่ 25 พฤษภาคม พ.ศ. 2555

พิมพ์เครื่องหมาย ~ ใน Windows

        เครื่องหมาย ~ มีชื่อว่า Tilde (ออกเสียงว่า ทีล-เด, ทีล-ดา, ทีล-เดอ แล้วแต่จะอ่านแบบไหน แบบเสปน หรือแบบ เนเธอร์แลนด์ หรือแบบ ...) เป็นปุ่มบนคีย์บอร์ดที่ใช้เปลี่ยนภาษา สำหรับคนไทยที่ใช้คอมพิวเตอร์หลายๆ คน ใช้กันจนชิน จนถือเป็นปุ่มที่มีประโยชน์อย่างเดียวคือเปลี่ยนภาษา

        แต่เมื่อถึงคราวต้องการพิมพ์ตัว Tilde นี้ออกมาจริงๆ บนหน้าจอคอมฯ แล้ว ก็ต้องกด Shift แล้วกดปุ่ม ~ ตาม ถ้าใน Windows XP ก็ไม่มีปัญหาอะไร แต่พอเจอ Windows 7 แล้ว งงงง!! กดยังไงก็กลายเป็นเปลี่ยนภาษาอยู่ดี สำหรับคนที่ตั้งปุ่ม Ctrl+Shift หรือ Alt+Shift เป็นปุ่มเปลี่ยนภาษาคงไม่เจอเรื่องนี้ แต่ถ้าคนที่ชอบตั้งปุ่ม Tilde นี้เป็นปุ่มเปลี่ยนภาษาแล้วละก็ ...

        ถ้าจะพิมพ์เครื่องหมาย Tilde ใน MS Word หรือ Notepad หรือโปรแกรมอื่นใน Windows 7 (ไม่รู้ Vista, Win8 เป็นหรือเปล่า)

 ให้กด Shift+ปุ่ม Tilde ค้างไว้ชั่วอึดใจนึง (ประมาณ 1 วินาทีมั้ง) เจ้าตัวอักษร ~ ก็จะโผล่มาครับ แต่ต้องกดในขณะที่เป็นภาษาอังกฤษอยู่นะ ถ้ากดตอนที่คีย์บอร์ดเป็นภาษาไทยอยู่ จะออกมาเป็นเครื่องหมายเปอร์เซนต์ %


วันศุกร์ที่ 11 พฤษภาคม พ.ศ. 2555

.NET Save Excel Error: Old Format or Invalid Type Library

ถ้าใช้ VB หรือ C# .NET สร้าง Excel File แล้วเกิด Error ประมาณนี้



Error: 0x80028018 (-2147647512)
Description: Old Format or Invalid Type Library


อาจจะเกิดปัญหาจาก Locale ของเครื่องไม่ตรงกับ ภาษาในเวอร์ชั่นของ excel เช่น ใช้ Excel เวอร์ชั่นภาษาอังกฤษ แต่ Locale ของเครื่องเป็นภาษาไทย เป็นต้น


การแก้ไขคือ ให้ปรับ Locale ในโค้ดเป็น En-US ก่อน แล้วถึงตามด้วยโค้ดที่ทำงานกับไฟล์ Excel พอทำงานกับ Excel เสร็จ ก็ restore locale กลับ เช่น


  'backup ค่า Locale เดิม

  Dim oldCI As System.Globalization.CultureInfo = _
      System.Threading.Thread.CurrentThread.CurrentCulture
  
  'ตั้งค่า Locale ใหม่
  System.Threading.Thread.CurrentThread.CurrentCulture = _
      New System.Globalization.CultureInfo("en-US")


'code ที่ทำงานกับ file Excel
'...


'restore ค่าเดิมกลับ
  System.Threading.Thread.CurrentThread.CurrentCulture=oldCI