About

Thitipat Donpraiwan,
a creative developer

Hi I’m bent, this is my personal site, use for note everything I’m interested.   view full »

contact me at – bentino [at] gmail.com

Goodbye 104,755 views, just moved.

My official website are available now, please continue reading at bentino.me. This site are don’t post anymore, just archived.

drupal “Call to undefined function views_include()”

This conflict maybe appear when using Views in drupal (everybody use it!), easily fix by edit at

sites/all/modules/views/includes/plugins.inc

See this line:

// @todo: Remove this once update.php can use the registry
views_include('base');

and comment code at

// views_include('base');

Your site should be back again.

Export Password จาก Keychain Access [MAC]

บนแมคจะมีโปรแกรมที่เป็นศูนย์กลางในการจัดเก็บ Password และ Certificate ต่างๆ ที่เรียกกันว่า Keychain Access ทำให้มีความสะดวกและข้อมูลต่างๆ ถูกเก็บอย่างเป็บระบบ
เรื่องมีอยู่ว่าเพิ่งจะเปลี่ยนเครื่องใหม่

ซวยเลย.. ข้อมูลยังอยู่ในเครื่องเก่า ไฟล์ยังก๊อปมาได้ แต่พวก Password นี่สิ จะให้ใส่ใหม่ก็ขี้เกียจไปรื้อข้อมูลเก่าๆ ของลูกค้าส่วนมากก็ไม่ได้จำ (แล้วดันมีเยอะอีกนะ)

คงไม่ใช่เราคนเดียวบนโลกหรอกที่เจอปัญหานี้ เสิร์ชไม่นานก็เจอ

ใน terminal จะมีมอดูลที่ชื่อว่า security โดยพิมพ์คำสั่งดังนี้ลงไป

$security dump-keychain -d login.keychain
    Remark

  • ถ้าไม่มี -d option จะเป็นการ dump ข้อมูลทุก field ยกเว้น password field
  • คำสั่งนี้จะ dump ข้อมูลทั้งหมดที่อยู่ใน login.keychain (keychain ปกติของผู้ใช้) โดยข้อมูลจะถูก dump ไว้ที่
    “/Users//Library/Keychains/login.keychain”

Scroll/Follow Sidebar, CSS & jQuery Techniques

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

ปกติแล้ววิธีที่ง่ายที่สุดในการทำเมนูเลื่อนตามคือการใช้ CSS โดยระบุ

position: fixed;

Sidebar ก็จะล็อคไปตามขนาดหน้าจอ แต่ปัญหาของเว็บนี้คือ เมนูจะมีจำนวนมาก เมื่อเลื่อนมาจนถึง footer แล้วจะพบว่า เมนูล้นกินเข้ามาใน footer ตามภาพ

Overlapped menu

ปัญหาจะเป็นเรื่องของการแสดงผลที่ถูกต้องมากกว่า ดังนั้นวิธีการของเราก็คือ ทำอย่างไรให้ sidebar เลื่อนตามจนถึงแค่ footer เท่านั้น

jQuery จึงเป็นคำตอบของเรา

(บอกตามตรงว่าทุกวันนี้แทบจะเขียน Javascript แท้ๆ ไม่เป็นแล้ว ใช้แต่ jQuery ตลอด > <) จากการลอง jQuery Library เกี่ยวกับการ scroll หลายๆ ตัว มีอยู่ตัวหนึ่งที่ตรงกับความต้องการพอดี ชื่อว่า ScrollFollow

แต่ก็มีปัญหาว่า Library ตัวนี้เขียนมาได้ไม่ยืดหยุ่นพอ ข้อจำกัดมีบางอย่าง เช่น

  1. Element ที่อ้างถึง ต้องเป็น ID เท่านั้น
  2. ไม่สามารถใช้กับ div ที่ซ้อนๆ กันได้ (มันจะอ้างอิงได้ parent เดียว)
  3. ​การเขียน Option ที่ไม่ชัดเจน

สรุปคือใช้ยากนั่นแหละ 😛
จะให้ปรับโครงสร้างเว็บเพื่อให้เข้ากับ Library ตัวนี้ คิดว่าเปลืองแรงมากกว่า เลยเขียนเอาใหม่ซะเลย

นี่เป็นโค้ดตัวอย่างครับ
$(function() {
  var $sidebar = $("#sidebar"),
      $window = $(window),
      offset = $sidebar.offset(),
      topPadding = 15;

  $window.scroll(function() {
    if ($window.scrollTop() > offset.top) {
      $sidebar.stop().animate({
        marginTop: $window.scrollTop() - offset.top + topPadding
      });
    } else {
      $sidebar.stop().animate({
        marginTop: 0
      });
    }
  });
});

เนื่องจากเมนูของเว็บที่ทำเป็น dynamic เมนูที่จะมีการ expand ได้ ทำให้ขนาดความสูงของเมนูจะต้องนำเข้ามาคำนวณร่วมด้วยเพื่อไม่ให้เลื่อนเกินกว่า footer

นี่เป็นโค้ดตัวอย่างที่ปรับปรุงเพิ่มในส่วนของการตรวจสอบระยะ footer

$window.scroll(function() {
  if ($window.scrollTop() > offset.top) {
    if( $window.scrollTop() < $footer_offset.top-(topPadding+$sidebar.height())) {
      $sidebar.stop().animate({
        marginTop: $window.scrollTop() - offset.top + topPadding
      });
    }
  } else {
    $sidebar.stop().animate({
      marginTop: 0
    });
  }
});

ดูตัวอย่างได้ ที่นี่ (demo here)

เอาไปปรับใช้กันดูนะครับ

ที่มา: ScrollFollow, CSS-Tricks.com

Short Code บน WordPress

บน CMS ยอดนิยมอย่าง WordPress นั้น จะมีระบบที่เรียกว่า Short code อยู่ ไว้อำนวยความสะดวกได้หากเราต้องการให้ข้อมูลที่เราโพสต์นั้นเป็น dynamic หรือ แสดงผลวิวที่มีความซับซ้อน เช่น Gallery, Chart ฯลฯ ทั้งนี้จะใช้ได้หรือไม่ได้นั้นก็อยู่ที่ plugin แต่ละตัวได้สร้างไว้ให้หรือไม่

เวลาใช้เราก็สามารถพิมพ์แทรกเข้าไปใน content editor ได้เลย มีรูปแบบประมาณนี้

แต่หากเราต้องการใส่ code ที่นอกเหนือจาก content editor เช่น ใน template ไฟล์ต่างๆหากใส่ shortcode ไปตรงๆ php จะไม่รู้จัก

ทาง WordPress ก็ได้ทำช่องทางการเรียกใช้งานมาให้แล้วโดยเรียกฟังก์ชั่นนี้แทน