ซอฟต์แวร์รหัสเปิด

2ชอบ

กิตติกรรมประกาศ

ขอบคุณ จาก http://www.bloggang.com/viewdiary.php?id=lkw2005&month=05-2006&date=25&group=10&gblog=10ball.in.th สร้างด้วยซอฟต์แวร์รหัสเปิดคุณภาพยอดเยี่ยม เราขอขอบคุณผู้ที่มีส่วนร่วมทุกๆท่านครับ ...

1ชอบ

เปิด block cache ใน drupal ถึงแม้มีการใช้ hook_node_grants()

เพิ่มความเร็วให้กับ Drupal 6.x ด้วย block caching

ปกติใน drupal core ถึงแม้จะมี block cache คือ cache สำหรับข้อมูลในแต่ละ block แต่ปกติจะไม่ถูกเปิดใช้งาน (สำหรับผู้ใช้ที่ไม่ได้ล๊อกอิน จะใช้ page cache คือ cache ทีเดียวทั้งหน้า ถ้าไม่เจอจึงใช้ block cache) ซึ่งเราสามารถเปิดใช้งาน block cache ได้ด้วยโมดูล Block Cache Alter และยังสามารถตั้งได้ว่า จะให้ cache เป็น Cache once for everything (global), Per page, Per role, Per role per page, Per user, หรือ Per user per page ตามแต่ลักษณะข้อมูลในแต่ละ block เช่น ถ้า block นี้เนื้อหาเหมือนกันทุกหน้าและทุกผู้ใช้ ก็ตั้งเป็น global, หรือถ้าเนื้อหาจะเปลี่ยนตามกลุ่มผู้ใช้ (User Role) ก็ตั้งเป็น Per role

ทิปตอน restore Drupal จาก backup

ตอน restore Drupal จาก backup บางทีเจอปัญหา เลยเขียนมาแบ่งปันกันครับ ^^

ส่งต่อ (redirect) URL ตอนเปลี่ยน DNS

วิธี redirect traffic ตอนย้ายเว็บโฮสติ้ง และ DNS ยังไม่เปลี่ยนใหม่

ball.in.th เพิ่งย้ายเว็บโฮสติ้ง เลยเอาวิธีแก้ปัญหาที่เจอมาฝากกันครับ ปกติก่อนย้ายโฮส ถ้าสามารถแก้ Time-To-Live (TTL) ของโดเมนใน DNS ได้ก็จะเป็นการดี ลดเวลาลงให้เหลือน้อยๆ เช่น 1800 (ครึ่งชั่วโมง) แต่ใน cPanel หาที่แก้ TTL ไม่เจอ เลยไม่ได้แก้ 555 ดังนั้นพอเปลี่ยน nameserver แล้ว ก็ต้องรอจนกว่า TTL จะหมดเวลา ถ้าไม่อยากรอ ก็สามารถใช้ mod_rewrite redirect traffic ไปที่ IP ของโฮสใหม่ได้เลย (เฉพาะกรณีที่มี IP ส่วนตัวในโฮสใหม่เท่านั้น) ...

ดูด feed และรูปที่เป็น enclosure ใน Drupal

โมดูล feedapi และ feedapi_mapper ใช้สำหรับดูด feed มาสร้างเป็น node ใน Drupal แต่ถ้าอยากดูดรูปมาด้วย (เฉพาะ feed ที่มีรูปใน enclosure หรือส่วนอื่นที่แยกจากเนื้อหาอย่างชัดเจน) ก็สามารถใช้ mapper ด้านล่าง (อันนี้เป็นตัวแก้บั๊กของ ImageField mapper) โดยจะดึงรูปมาบันทึกไว้ และแสดงโดยใช้ filefield และ imagefield ครับ (mapper ด้านล่างเอาไว้ใช้ชั่วคราวครับ จนกว่า FileField mapper จะสามารถทำได้)

  1. เปิดโมดูลทั้ง 4 ที่กล่าวไว้
  2. บันทึกไฟล์ด้านล่างชื่อ feedapi_mapper_imagefield.inc ไว้ใน sites/all/modules/feedapi_mapper
  3. เพิ่ม imagefield เข้าไปใน "ชนิดเนื้อหา" (content-type) ที่จะเอาไว้สร้าง node สำหรับ feed นี้
  4. ตั้งค่า "[user]" ใน Path ของ imagefield ของชนิดเนื้อหา
  5. สร้างผู้ใช้ใหม่ เช่น "host.com"
  6. สร้าง feed node โดยผู้ใช้ใหม่นี้
  7. ไปที่ Map ของ feed node แล้วเลือก map รูปไปยัง field ที่ต้องการ เช่น options->enclosures->image->jpeg: Map to field_image (imagefield): Original file name
  8. รูปที่ดูดมาจะถูกบันทึกไว้ใน sites/default/files/host.com/ ครับ ^ ^
  9. ดูตัวอย่าง node ที่สร้างเสร็จแล้วได้ที่ ข่าวฟุตบอลไทย

debian.thaios.net ไม่สมบูรณ์

เพิ่งลองโหลด Debian 5.02 มาลง เสร็จแล้วมันเพี้ยนๆ  ตัว synaptic package manager ก็ไม่มี เลยเป็นงง ลองลงใหม่อีกรอบ ปรากฎว่าคราวนี้ใช้ mirror ที่ US ลงเสร็จแล้วใช้งานได้ดี จึงน่าจะเป็นที่ mirror ตอนแรก debian.thaios.net ไม่ดี ไม่แนะนำให้ใช้

CentOS 5.3 ห่วยแตก

เพิ่งโหลด CentOS 5.3 มาลองเล่นดู  พยายามติดตั้ง gcc เพิ่มเติม ดันขึ้นว่า Resolving dependencies for updates แต่ก็ไม่ยอมทำอะไร คิดอะไรอยู่ก็ไม่รู้ คลิ๊ก Cancel ก็ไม่ได้ ทำไมห่วยจัง 

พูดถึงห่วย Ubuntu ก็เคยเจอปัญหาเหมือนกัน สรุปแล้ว Debian น่าจะดีสุด 

เริ่มนับสถิติรายวันของ Drupal ตอนเช้า

โมดูล Statistics (มากับ Drupal อยู่แล้ว) ซึ่งเก็บสถิติจำนวนครั้งที่แต่ละ node ถูกอ่าน (node_counter) โดยมีทั้งสถิติรายวัน (daycount) และสถิติทั้งหมด (totalcount) ซึ่งสถิติรายวันจะถูกล้างทิ้ง (reset) ทุกๆ 24 ชั่วโมง โดย statistics_cron() แต่ว่าเรากำหนดไม่ได้ว่าจะครบ 24 ชั่วโมงเมื่อใด เท่าที่อ่าน source code ดู ถ้าเราเรียก cron ทำงานครั้งแรกตอนกี่โมง Drupal ก็จะเริ่มนับสถิติรายวันใหม่ ณ เวลานั้นทุกๆวัน ซึ่งไม่น่าจะถูก เพราะสถิติรายวันน่าจะเริ่มนับใหม่ตอนเช้าของแต่ละวัน ซึ่งเราสามารถแก้ไขได้โดยแก้ statistics_cron() (แก้ Drupal core อีกแล้วครับท่าน 555)

ดูคำที่ใช้ค้นหาเพื่อมาที่เว็บเราใน Drupal

คนทั่วไปใช้คำอะไรหาถึงเจอเว็บเรา บางทีเจอคำประหลาดด้วย 555

คราวก่อนได้แก้ไขหน้า Recent hits เพื่อให้แสดง Referer ซึ่งต้องแก้ไฟล์ที่มากับ Drupal ซึ่งไม่ค่อยถูกหลักเท่าไหร่ เพิ่งไปเจอโมดูล Search Engine Referers ซึ่งทำได้เกือบจะเหมือนกันและใช้ง่ายกว่าเยอะ แต่รุ่นปัจจุบัน (6.x-1.0) ยังไม่แสดงว่าคำที่ใช้ค้น (keyword) นั้นลิงก์มาที่หน้าไหน ต้องแก้ไฟล์อีกนิดหน่อย (แก้ไฟล์จนได้ 555) โดยรวมเอา patch นี้เข้าไปด้วย ก็จะได้ฟังชั่น search_engine_referers_overview() ออกมาเป็น (ส่วนที่แก้เป็นตัวเข้มครับ)

ทำโมดูลกรองคำต้องห้ามใน Drupal

ทีจริงมีโมดูล Wordfilter ซึ่งสามารถกรองคำต้องห้ามได้อยู่แล้ว แต่ว่า Wordfilter จะแก้คำต้องห้ามในเนื้อหาเลย ไม่ได้กรองเฉพาะตอนที่จะแสดงผลเหมือนตัวกรอง (filter) ปกติใน Drupal และไม่กรองเนื้อหาใน CCK text field ที่ทำเพิ่มขึ้นมา พอดูตัวอย่างตาม Wordfilter แล้วทำไม่ยาก ก็ทำใหม่ซะเลย 55 (สำหรับมือใหม่ ดูวิธีสร้างโมดูล helloworld แบบง่ายๆ)

Add page title icons in Drupal

Jazzzz up your Drupal page title with an icon. Also helps drawing attention to the title. ^ ^

a sample page with icon 1Well, I came across an article about how to add page icons in Joomla. Having written a similar howto for drupal (in Thai), I figured this's a good way to illustrate that Drupal, in this particular task, is better than Joomla. So, here it goes.

When I saw that Acquia Marina had block icons, I was like "Cool, I want it too!!". But instead of block icons, it would be even better to have page icons. So, I adapted the technique. Each content type should have its own page title icon, which can be overridden on a page by page basis. For pages that are not "nodes", icons need to be set individually. Beautiful icons from Crystal Project Icons and Oxygen Icons are used. Thanks to eveyone involved in these projects. ^ ^

เพิ่มหน้ายิ้ม (smilies) ให้กับ FCKeditor ใน Drupal

ใน FCKeditor จะมีปุ่มสำหรับใส่หน้ายิ้ม (smilies) แต่ที่ให้มาไม่ค่อยสวยเท่าไหร่ ซึ่งเราสามารถเปลี่ยนได้ โดยเอาหน้ายิ้มมาจากที่อื่นที่สวยงามกว่าครับ เช่น

  • โมดูล Smileys มีหน้ายิ้มชุด Roving โดย Hubert Florin ซึ่งสวยดี
  • Mazes MiniMazes Mini 2 โดย MazeNL77 แจ่ม
  • มีหน้ายิ้มที่ไหนสวยๆอีกช่วยแนะนำด้วยครับ ^ ^

วิธีเพิ่มหน้ายิ้มก็ทำได้โดย

เพิ่มไอคอนให้กับแต่ละหน้าของ Drupal

เพิ่มไอคอนเติมสีสันให้หน้าใน Drupal ดูสดใสขึ้นมาอีกนิสสสส และดึงสายตามาที่หัวข้อด้วย ^ ^

ตัวอย่างไอคอนในหน้า 1วันก่อนเห็นธีม Acquia Marina มีไอคอนของแต่ละบล็อค เลยเกิดกิเลสอยากมีบ้าง (อีกล่ะ 555) แต่อยากมีไอคอนของหน้า ไม่ใช่บล็อค เลยดัดแปลงไอเดียมาเป็นไอคอนสำหรับหน้าซะเลย โดยให้แต่ละชนิดเนื้อหา (content-type) มีไอคอนคนละแบบ (หรือจะตั้งแยกแต่ละหน้าก็ได้) ส่วนหน้าที่ไม่ใช่ node ก็ต้องตั้งเอาเป็นหน้าๆไป ตัวไอคอนก็ไม่มีปัญญาทำเอง ใช้ของสวยๆจาก Crystal Project Icons และ Oxygen Icons ขอขอบคุณมา ณ ที่นี้ด้วยครับ ^ ^

ball.in.th มีส่วนร่วมใน Drupal core patch

เรื่องนี้ไม่มีสาระ 555 แค่อยากจะบอกว่า เราได้มีส่วนร่วมในการแก้บั๊กในระบบแคช (#227228) ของ Drupal core 6.11 นับเป็น core บั๊กอันที่สองในซอฟแวร์รหัสเปิดขนาดใหญ่ที่เรามีส่วนร่วมในการแก้ไข (อันแรกเป็นบั๊กใน JURI() ของ Joomla core 1.5)

สำหรับมือใหม่อย่างเรา นับเป็นความภูมิใจที่ได้มีส่วนร่วมพัฒนาซอฟแวร์รหัสเปิดให้ดียิ่งๆขึ้นไป ^ ^

ย้าย "อ่านต่อ" มาเป็นลิงก์แรก และทำให้เด่นขึ้น

ลิงก์อ่านต่อ กลมกลืนกับลิงก์อื่นเกินไป ไม่โดนเลย

ปกติลิงก์ "อ่านต่อ" จะปนอยู่รวมกับลิงก์อื่นๆตอนดูเฉพาะคำโปรย (node teaser) เช่น "onequad's blog  1 ความเห็น  1 ใหม่  อ่านต่อ  13 reads  แก้ไข  Bookmark this" ช่างไม่เด่นและทำให้สับสนว่าตกลงยังมีต่ออีกหรือเปล่า ต้องย้ายมาเป็นลิงก์อันแรกและทำให้เด่นๆ (ที่จริงอยากทำให้ "อ่านต่อ" ต่อท้ายจากคำโปรยเลย แต่หาวิธีไม่ได้ 55) ...

jQuery UI Dialog Alert & Prompt

เพิ่งลองเล่นกับ jQuery และ jQuery UI ไม่นาน สุดยอดมากๆ แต่เหมือนถ้าข้อมูลเยอะๆ จะยังช้าไม่ทันใจอยู่ เช่น หน้าราคาฟุตบอลมีลิงก์เยอะมาก ถ้า register click event ด้วย jQuery "$('a.ballodds_tip').click(balloddsTip);" จะคิดนานเลย แต่ถ้าใช้วิธีดั้งเดิม คือ "onclick=balloddsTip(this)" จะเร็วกว่ากันเยอะ ไม่รู้ทำอะไรผิดหรือเปล่า

แล้วก็เลยได้ลอง jQuery UI Dialog สวยงามเกินห้ามใจ ลองดูตัวอย่างและดัดแปลงมาเป็น jQuery UI Dialog Alert & Prompt ได้ แต่ก็ถ้าในหน้าใหญ่ๆก็ช้าอีกมากๆเช่นกัน กว่า popup จะโผล่หรือซ่อน ไม่รู้เป็นอะไร ก็เลยต้องกลับไปใช้แบบดั้งเดิมอีกเหมือนกัน คือ alert() กับ prompt() เซ็งโคตร  ใครพอรู้วิธีแก้ช่วยบอกด้วยครับ

perl DBI, mysql, utf8

ในเอกสารบอกว่า ถ้าจะใช้ utf8 ก็แค่ connect แบบนี้

 my $dbh = DBI->connect ($dsn, $user, $password, { RaiseError => 1, AutoCommit => 0, mysql_enable_utf8 => 1 });

ลองกับเครื่องที่บ้าน (MySQL 5) ก็ใช้งานได้ดี แต่มามาใช้กับเครื่องที่โฮส (MySQL 4) กลับใช้ไม่ได้ utf8 กลายเป็นตัวประหลาดไปหมด ต้องเพิ่มพวกนี้เข้าไปด้วยถึงใช้ได้

  $dbh->do('SET character_set_results=utf8');
$dbh->do('SET character_set_client=utf8');
$dbh->do('SET character_set_connection=utf8');

ทำหัวข้อรองเหมือนนิตยสาร ด้วย CCK

หัวข้อรองอยู่ตรงนี้ ^ ^ เหมือนนิตยสารขึ้นมาอีกนึด

เห็นตามนิตยสารมักมีประโยคดึงดูดความสนใจคนอ่าน ไม่รู้เรียกว่าอะไร ขอเรียกว่า "หัวข้อรอง" (Subhead or Deck) แล้วกัน และเห็นที่ Vancouver Magazine Redesign ก็ทำใน Drupal เลยอยากมีบ้าง 555 ซึ่งก็สามารถเพิ่มเข้ามาใน node ได้ด้วย CCK และแก้ไขธีมนิดหน่อย ...

เพิ่ม Referrer ในหน้า Recent hits ใน Drupal

ถ้าเปิด Enable access log ไว้ใน admin/reports/settings จะมีหน้า Recent hits (admin/reports/hits) ซึ่งแสดงการใช้งานเว็บไซต์ล่าสุด แต่หน้านี้ยังขาดข้อมูลสำคัญคือ Referrer ซึ่งแสดงว่าผู้ใช้เข้ามาที่แต่ละหน้าจากที่ใด (ที่ไหนลิงก์มาหาเว็บเราบ้าง) ถ้าผู้ใช้เข้ามาจาก search engine ก็มักจะเห็นคำที่ใช้ค้นหาด้วย เช่น q=คำที่ค้น สำหรับ google ...

ธีม comment-form สำหรับบุคคลทั่วไป (ไม่ได้ล๊อกอิน) ใน Drupal

วิธีบอกบุคคลทั่วไปตรง comment-form ว่าต้องรอตรวจสอบ ก่อนที่จะส่งความคิดเห็น

บุคคลทั่วไป (ไม่ได้ล๊อกอิน หรือ anonymous user) สามารถแสดงความคิดเห็นได้ ถ้าเปิดไว้ใน admin/user/permissions#module-comment ซึ่งโดยทั่วไปคงจะต้องรอการตรวจสอบก่อน ('post comments' เฉยๆ ไม่ใช่ 'post comments without approval') เลยอยากจะหาวิธีบอกบุคคลทั่วไปว่าต้องรอตรวจสอบ ถ้าไม่อยากรอก็ล๊อกอินก่อน (สมาชิกที่ล๊อกอินมีสิทธิ์ 'post comments without approval') ...

 

sponsor 3a sponsor 3a sponsor 3a

Syndicate content
เฟอร์กี้ พักลีกมีทีมชาติ เรามาพักสายตา มาดูน้องกาวกันครับ อากาศไม่ร้อนแต่มาในชุด Bikini ครับ ตามไปเลยที่ http://ball.in.th/angel/25188 12 ชั่วโมงก่อน
เจ้าชายเรียวมะ เย้ เข้าได้แล้ว เข้าเวปนี้ไม่ได้เหมือนจะขาดใจทำอะไรก็ไม่ได้เลย 13 ชั่วโมงก่อน
Jim เย้ๆๆ...เข้าเวปได้แล้ว 15 ชั่วโมงก่อน
ทีมงาน ฮาร์ดดิสเจ้ง เลยทำให้เว็บล่มไป 3 ชั่วโมงครับ ตอนนี้น่าจะเกือบปกติแล้ว 15 ชั่วโมงก่อน
ทีมงาน @ DJJo ลองเล่นไปให้ได้คะแนนกับ%ตามที่กำหนดนะครับ แลัวจะเลื่อนขั้นให้เองครับ ดูคะแนนของท่านแล้วอีกนิดเดียวก็จะได้แล้วครับ 23 ชั่วโมงก่อน