- เป็นครั้งแรกที่คนใช้ IE6 ลดต่ำลงกว่า 30% แล้วเยี่ยม! ...
- เพิ่งรู้ว่าเว็บนี้เปิดใน IE6 ที่ไม่ใช่ wide screen แล้วเน่ามาก!! ถ้าไม่ได้เพื่อนบอกคงไม่รู้นะนี่ :-( ...
- มีอะไรก็เข้าไปคุยกันที่ เว็บบอร์ด มั่งนะครับ ^^...
- เลิกใช้ Internet Explorer เถอะครับ ลองเปลี่ยนเป็น Firefox ดูแล้วจะพบว่ามันเจ๋งขนาดไหน :-D...
หน้าหลัก - BlackDemon Project!
เมื่อสองวันก่อนเกิดคึกขึ้นมาเลยมีอารมณ์อยากจับเว็บแต่งตัวซะใหม่ ตอนแรกก็เบื่อๆ Joomla ล่ะว่าจะเปลี่ยนไปใช้ Drupal ซักหน่อย
แต่ติดตรงที่ว่า Drupal มี theme ที่ถูกใจน้อยโคตร! ไอ้เราก็ไม่ใช่ Designer ที่จะทำ theme ได้ออกมาดูดีซะหน่อย เลยตัดสินใจใช้ Joomla ครือเก่านี่ล่ะง่ายดี
ในเมื่อมันดีอยู่แล้วจะเปลี่ยนไปใย อิอิ![]()
พอเลือกได้แล้วว่าจะใช้ Joomla ก็มาถึงว่าจะเลือกเอา board แบบไหนตอนที่เลือกนี้มีคิดๆไว้อยู่สองตัวคือ Agora Forum กับ Kunena Forum
ส่วนบอร์ดแยกแบบ SMF หรือ phpBB ไม่เอาล่ะ(เว็บเก่า bridge กับ phpBB3 โดย Rokbridge) อยากให้มันรวมกันเป็นก้อนไปเลยคิดว่าน่าจะดีกว่า ในที่สุดก็เลือก Agora แต่ดูเหมือนจะมีปัญหากับการตัดคำไทยอยู่
แต่ว่าก็ลงๆไปก่อน ถ้าไม่ถูกใจเดี๋ยวเปลี่ยนไปเป็น Kunena แทน
เริ่มมาก็ลง Joomla แบบ clean ก่อนเลย แล้วตาม extension พวกโมดูลและปลั๊กอินที่น่าสนใจต่างๆ ลงเสร็จก็มาะ tune ให้หลายๆอย่างมันเข้าที่เข้าทางซักหน่อย
ก็ออกมาแจ่มเจ๋งเป็ด! หลังจากนั้นก็มาเทสกับ browser ต่างๆก็ ok ดูดีมากยกเว้น IE6 ที่ logo มันไม่โปร่งแสง! ห่วยแสรดดดด ![]()
ครั้นจะให้มาเสียเวลาแก้ Style sheet ก็ไม่ใช่เรื่องงั้นก็ดองมันไว้งั้นล่ะ แถมลง IE6 warning เอาไว้ด้วย คึคึ 
จากนั้นก็ import DB จากอันเก่ามาอันใหม่ เปิดดู browser ต่างๆ อืมมม ก็โอเค แต่พอเปิดใน IE6 เท่านั้นล่ะ เละครับเละ! หน้า page เละไปหมดเลย ![]()
ความจริงไม่สนใจจะแก้ก็ได้ แต่เดี๋ยวโดนข้อหาเหยียดชนชั้น
เลยต้องแก้ให้อย่างน้อยหน้าเพจไม่เละให้อ่านออกซักหน่อยละกัน
ว่าแล้วก็เลยไปควานหาบทความที่ทำให้ template เละพบอยู่สองอันคือบทความ อันนี้ กับ อันนี้ เลยต้องมานั่งแก้อีก รู้สึกจะมีปัญหาเรื่อง table นี่ล่ะเสียเวลาจริงๆ ![]()
พอแก้เสร็จเจอปัญหาจูมล่ามองไม่เห็น user ที่ insert เข้าไปอีกเซ็งเป็ดเลยควานหาวิธีก็ได้มาว่า มีปัญหาเรื่อง Auto increment ในบางตารางของจูมล่าให้เรียกคำสั่ง SQL ตามนี้
DELETE FROM jos_core_acl_aro WHERE id <> 62; DELETE FROM jos_core_acl_groups_aro_map WHERE aro_id <> 62; INSERT INTO jos_core_acl_aro (section_value, value , name) SELECT 'users', id, name from jos_users WHERE id NOT IN (SELECT value from jos_core_acl_aro WHERE id = 62); INSERT INTO jos_core_acl_groups_aro_map (group_id, aro_id) SELECT 18, id FROM jos_core_acl_aro where id <> 62;
เสร็จแล้ว user ก็จะตรงกันจากนั้นก็ไปที่ component->Agora Forum-> Maintenance-> DB tool-> Sync user ให้ตรงกัน
จากนั้นก็เข้าไปใน db เข้าไปในตาราง jos_core_acl_aro ดูว่า ago_id อันไหนมันเป็น Super Admin แล้วก็กลับมาแก้ใน jos_core_acl_groups_aro_map ให้ group_id เป็น 25 แค่นี้ก็เรียบร้อย
เว็บเสร็จแล้วก็เพิ่มบทความใหม่ซักหน่อย(ความจริงไม่ใหม่หรอก ทำไว้นานแล้วแต่ไม่ได้ publish - -")เจอปัญหาบทความเละกับ IE6 อีก(โอ้ววน้องเจ้า ช่างเอาใจยากนัก
)
เลยมาควานหาๆ ดูผมว่ามีปัญหากับ code highlight นี่เองเลยต้องไปหาส่วนเสริมพวก code display มาลงใหม่อีก 
โดยส่วนของ highlight code ผมใช้ RJ insertcode ที่เป็น plug-in เสริมของ JCE เลยต้องหา highlight code ตัวอื่นมาลงเลือกไปเลือกมาก็ได้ Codecitation มาใช้
เสร็จแว้วว ใช้เวลาทั้งหมด 5 ชม.เต็มๆในการอัพคร้้งนี้ วะฮ่าฮ่า ![]()
วางโค้ดแล้วเรียกใช้เมธอดตามที่ต้องการ
โค้ดนี้ใช้ได้กับ .Net Framework 1.1 ขึ้นไป
อ๊ะ! อย่าลืม using System.Security.Cryptography ด้วยล่ะ
byte[] encBytes = EncryptDataByte(Encoding.UTF8.GetBytes(data), password, PaddingMode.ISO1012return Convert.ToBase64String(encBytpublic static string DecryptData(string data, string passw}//--------------------------- AES Encryption String ---------------------------------------------
public static string EncryptData(string data, string password)
{
byte[] encBytes = EncryptDataByte(Encoding.UTF8.GetBytes(data), password, PaddingMode.ISO10126);
return Convert.ToBase64String(encBytes);
}
public static string DecryptData(string data, string password)
{
byte[] encBytes = Convert.FromBase64String(data);
byte[] decBytes = DecryptDataByte(encBytes, password, PaddingMode.ISO10126);
return Encoding.UTF8.GetString(decBytes);
}
//--------------------------- AES Encryption Byte ---------------------------------------------
public static byte[] EncryptDataByte(byte[] data, string password, PaddingMode paddingMode)
{
PasswordDeriveBytes pdb = new PasswordDeriveBytes(password, Encoding.UTF8.GetBytes("Salt"));
RijndaelManaged rm = new RijndaelManaged();
rm.Padding = paddingMode;
ICryptoTransform encryptor = rm.CreateEncryptor(pdb.GetBytes(16), pdb.GetBytes(16));
using (MemoryStream msEncrypt = new MemoryStream())
using (CryptoStream encStream = new CryptoStream(msEncrypt, encryptor, CryptoStreamMode.Write))
{
encStream.Write(data, 0, data.Length);
encStream.FlushFinalBlock();
return msEncrypt.ToArray();
}
}
public static byte[] DecryptDataByte(byte[] data, string password, PaddingMode paddingMode)
{
PasswordDeriveBytes pdb = new PasswordDeriveBytes(password, Encoding.UTF8.GetBytes("Salt"));
RijndaelManaged rm = new RijndaelManaged();
rm.Padding = paddingMode;
ICryptoTransform decryptor = rm.CreateDecryptor(pdb.GetBytes(16), pdb.GetBytes(16));
using (MemoryStream msDecrypt = new MemoryStream(data))
using (CryptoStream csDecrypt = new CryptoStream(msDecrypt, decryptor, CryptoStreamMode.Read))
{
byte[] fromEncrypt = new byte[data.Length];
int read = csDecrypt.Read(fromEncrypt, 0, fromEncrypt.Length);
if (read < fromEncrypt.Length)
{
byte[] clearBytes = new byte[read];
Buffer.BlockCopy(fromEncrypt, 0, clearBytes, 0, read);
return clearBytes;
}
return fromEncrypt;
}
}
วิธีใช้ก็แค่ เรียก EncryptData("ข้อความต้นฉบับ","รหัสลับโคด");
วันก่อนได้ลง Vmware เวิร์กสเตชัน 6.5.x ซึ่งก็สามารถติดตั้งกับ Windows 7 RC buid 7100 โดยไม่มีปัญหา. สามารถใช้ VM ได้ปกติ
แต่ดันมีปัญหากับเครือข่าย NAT นิดหน่อยโดยสามารถ ping เห็น host ข้างนอกแต่ไม่สามรถเรียก web page ได้ (ไม่รู้มันเป็นไร - -") เลยไปค้นหาวิธีมาให้ทำตามนี้ครับ
1. Run the Virtual Network Editor as Administrator (Use RunAS or right click and Run as Administrator on vmnetcfg.exe)
2. Goto Host Virtual Adapters and remove all VMNet instances (VMNet1 and VMNet8 typically).
3. Click Apply.
4. Add New and Assign it the new adapter to VMnet1.
5. Click Apply.
6. Select the Host Virtual Networking tab.
7. Click the > next to VMnet1 and change the address and subnet to the ICS network (192.168.0.0 / 255.255.255.0)
8. Click Apply.
9. Go to the NAT tab and select VMNet1.
10. Click Edit and change the Gateway to the ICS gateway IP (192.168.0.1)
11. Click Apply and restart the NAT service. (Counter-intuitive, I know.)
12. Go to the DHCP tab.
13. Add VMNet1 and remove all others.
14. Click Apply.
15. Select Properties of VMNet1 in DHCP Tab.
16. Enter a Start and End Address for DHCP Scope (192.168.0.50 to 192.168.0.75 as an example)
17. Adjust client lease to a few days to avoid potential DHCP client renewal timeouts.
18. Click OK / Click Apply.
19. Select Host Only Networking for every VM that needs NAT out to your host network/internet.
20. Enable ICS (Internet Connection Sharing) on the W7 Host network card that provides connectivity. Select VMNet1 as the network card that needs access.
แค่นี้ก็ใช้ได้แล้วครับ :)
การทำงานของมันก็คือเปลี่ยนจากใช้ NAT มาเป็น Share Network จาก Host(เครืองเรา)ไปให้ตัว VMware นั่นเอง
ลองดูรูปประกอบ ในการแก้ไข Virtual Network Editor กด "อ่านต่อ" ครับ
ปัญหา ใหญ่เรื่องหนึ่งสำหรับภาษา OO เช่น .Net และ Java คือบางครั้งในการทำงานที่มีการเรียกใช้ function แต่มีความไม่เข้ากันในภาษาอื่นๆ
เช่นการเรียกใช้ในภาษา PHP เราสามารถเรียกใช้ฟังก์ชั่น MD5 และแค่ป้อน string เข้าไปเราก็สามารถได้ string ที่ผ่านการ hash มาได้แบบง่ายๆ
แต่ใน .Net ต้องมายุ่งยากกว่านั้น ผมเลยมีวิธีง่ายๆกว่านั้นคือสร้างเป็น class เอาไว้ใช้เอง หรือทำเป็น .dll เอาไว้ใช้กับโปรแกรมอื่นๆได้ด้วย
ตัวอย่างนี้จะใช้ได้กับ MD5, SHA1, SHA256 และ SHA512 ครับ
using System;
using System.Security.Cryptography;
using System.Text;
namespace Hash
{
public class Hash
{
public Hash() { }
public enum HashType : int
{
MD5,
SHA1,
SHA256,
SHA512
}
public static string GetHash(string text, HashType hashType)
{
string hashString;
switch (hashType)
{
case HashType.MD5:
hashString = GetMD5(text);
break;
case HashType.SHA1:
hashString = GetSHA1(text);
break;
case HashType.SHA256:
hashString = GetSHA256(text);
break;
case HashType.SHA512:
hashString = GetSHA512(text);
break;
default:
hashString = "Invalid Hash Type";
break;
}
return hashString;
}
public static bool CheckHash(string original, string hashString, HashType hashType)
{
string originalHash = GetHash(original, hashType);
return (originalHash == hashString);
}
private static string GetMD5(string text)
{
UnicodeEncoding UE = new UnicodeEncoding();
byte[] hashValue;
byte[] message = UE.GetBytes(text);
MD5 hashString = new MD5CryptoServiceProvider();
string hex = "";
hashValue = hashString.ComputeHash(message);
foreach (byte x in hashValue)
{
hex += String.Format("{0:x2}", x);
}
return hex;
}
private static string GetSHA1(string text)
{
UnicodeEncoding UE = new UnicodeEncoding();
byte[] hashValue;
byte[] message = UE.GetBytes(text);
SHA1Managed hashString = new SHA1Managed();
string hex = "";
hashValue = hashString.ComputeHash(message);
foreach (byte x in hashValue)
{
hex += String.Format("{0:x2}", x);
}
return hex;
}
private static string GetSHA256(string text)
{
UnicodeEncoding UE = new UnicodeEncoding();
byte[] hashValue;
byte[] message = UE.GetBytes(text);
SHA256Managed hashString = new SHA256Managed();
string hex = "";
hashValue = hashString.ComputeHash(message);
foreach (byte x in hashValue)
{
hex += String.Format("{0:x2}", x);
}
return hex;
}
private static string GetSHA512(string text)
{
UnicodeEncoding UE = new UnicodeEncoding();
byte[] hashValue;
byte[] message = UE.GetBytes(text);
SHA512Managed hashString = new SHA512Managed();
string hex = "";
hashValue = hashString.ComputeHash(message);
foreach (byte x in hashValue)
{
hex += String.Format("{0:x2}", x);
}
return hex;
}
}
} วิธีเรียกใช้ก็ GetHash(string,HashType) ก็จะได้ string ที่เข้ารหัสมาเรียบร้อยแล้ว
หรือถ้าต้องการตรวจสอบว่าเป็นการเข้ารหัสแบบใดก็เพียงเรียกใช้ CheckHash(string,string,HashType)
วิธีตรวจจับ browser IE6 แบบง่ายๆ ด้วย jQuery นะจ๊ะ
1 | <link type="text/css" href="jscript/jquery/themes/redmond/ui.all.css" rel="stylesheet" /> |
1 | if (jQuery.browser.msie) { |
1 | <div id="checkBrowserBox" title="โอ๊ะโอ" style="Display:none"> |

บทความ อื่นๆ ...
หน้า 6 จาก 9
Short Articles
เมื่อก่อนผมหวงความเป็นส่วนตัวมากๆ ทั้งๆที่อาจจะไม่สำคัญอะไร แต่ไม่รู้ล่ะ ผมหวงของผมนี่(เกรียนดีมั้ยล่ะ) การใช้งานในผลิตภัณฑ์ต่างๆของ Google ซึ่งก็รู้อยู่แล้วว่า การใช้งานต่างๆมีการตั้งค่าปริยาย(Default) ทำให้ Google มีสิทธิ์เก็บข้อมูลต่างๆ ไม่ว่าจะเป็น - Google...
Read More...เมื่อวานนี้ (26/11/2009) ทาง Mininova ได้ออกประกาศจำกัดการเผยแพร่เนื้อหา(งดอัพโหลดและลบไฟล์ torrent ออก) อันเป็นผลสืบเนื่องมาจากกรณีคำสั่งของศาลแห่งอูเทรคต์ ประเทศเนเธอแลนด์ เนื่องจากว่าทาง Mininova ไม่สามารถมีระบบที่กรองข้อมูลที่ละเมิดลิขสิทธิ์ได้ 100% ก็เลยต้องจำกัดเนื้อหาและการใช้งานเอาไว้ก่อน...
Read More...ช่วงนี้ไม่ค่อยมีตังค์ใช้เลย คิดไปมาคิดมา เปิดระบบรับงาน outsource ดีกว่า ถ้าใครผ่านมาเห็นอยากจ้างงานกระผมก็ยินดีรับใช้ครับ ราคาถูกแพงต่อรองกันได้ครับ ดูรายละเอียดเพิ่มเติมได้ที่นี่
Read More...

