โพสต์

กำลังแสดงโพสต์จาก กันยายน, 2008

Desktop Background ทีดี

รูปภาพ
ใน gnome community มีประกวดทำ Background สำหรับ 2.24 เค้าบอกเงื่อนไขในการส่งประกวดได้น่าสนใจมาก



เค้าว่าพื้นหลังไม่ควรเป็นจุดสนใจ มีการไล่สีเรียบๆ และต้องช่วยขับให้ตัวเนื้อหาด้านหน้าพื้นหลังดูคมมากขึ้น ลองดูตามรูป

พื้นหลังที่เข้าข่ายควรมีลักษณะ 4 ข้อ ดังนี้

ไม่ทำตัวเป็นจุดสนใจ ควรจะมั่วๆ เข้าไว้ ระวันการใส่รายละเอียด อย่างเส้นคมๆ หรือตัวอักษรที่อ่านออก โดยเฉพาะอย่างยิ่ง ข้อความหรือรูปสัญลักษณ์ อย่ามองข้ามเส้นคมๆ แม้ว่าสีจะไม่โดดออกมา เพราะจะทำให้อ่านข้อความด้านหน้าได้ยาก




ไล่สี เป็นสีสว่างหรือสีนวลๆ ก็ดี แต่ต้องระวังเส้นคมๆ ที่เกิดขึ้น ถ้าเราไม่มีรูปที่เข้าข่าย ลองใช้โปรแกรมวาดรูป ไล่สีดู ยังไงก็ดีกว่าภาพสีเดียว (สร้างเองก็ได้ไม่ต้อง download)




ภาพแฝงนัย ภาพที่มีรายละเอียดมั่วๆ และภาพไล่สีแนวตั้ง จะช่วยสร้างความลึกได้ ลองนึกถึงภาพภูเขา ภาพภูมิทัศน์ ภาพท้องฟ้าที่มองไปใกลๆ ทำให้ภาพดูเบาขึ้น ไม่เด่นเกินหน้าเนื้อหา




ไม่สร้างจุดสนใจ พื้นหล้งต้องไม่ดึงความสนใจไปจากเนื้อหาด้านหน้า อาจใช้ภาพที่ดูกระจัดกระจายก็ได้ แต่ต้องดูเรื่ององค์ประกอบ และความสมดูลย์ของทั้งภาพให้ดี ไม่งั้นความไม่สมดูลจะกลายจ…

Object inheritance ของ ruby

ไหนๆ เขียนเรื่อง Object แล้วถ้าไม่เขียนเรื่อง Inheritance, include module ก็จะไม่ครบวงจร การสืบทอดความสามารถของ class แม่ในภาษา ruby ใช้เครื่องหมาย "<" เป็นสัญลักษณ์ประมาณว่า เอาความสามารถของด้านขวาไปใส่ด้านซ้าย

class Circle attr_accessor :circle, :radious class << self; attr_accessor :count end end class Ring < Circle end ring = Ring.new ring.circle = 5 puts ring.circle #=> 5 Ring.count = 3 Circle.count = 8 puts Ring.count #=> 3 puts Circle.count #=> 8
จากตัวอย่าง Ring ได้คุณสมบัติทุกอย่างจาก Circle ทั้ง class level และ instance level แต่ไม่ได้ ใช้ค่าของ count ร่วมกัน หากต้องการให้ใช้ร่วมกันเราต้องเขียนความสัมพันธ์ขึ้นมาเอง เช่น

class Ring < Circle def count=(c) Circle.count = c end end
ใน ruby ยังมีการดึงคุณสมบัติอีกแบบโดยการ include module

module Sing def wing "Say wing!!" end end class Circle include Sing end circle = Circle.new circle.wing
การ include module ก็คล้ายกับการเอา…

Object ในภาษา ruby

ผมพบว่าการใช้ ruby ในการเรียนรู้เรื่อง OOP เป็นเรื่องที่สนุกทีเดียว ทุกอย่างในภาษานี้เป็น Object ไปหมด แม้แต่ nil ยังเป็น object ด้วย ในตอนแรกผมมุ่งศึกษาตัว Rails เป็นหลัก และพบว่าหากไม่ใช่ Ruby แล้ว Rails คงเกิดได้ยากมาก หากต้องการศึกษา rails ให้มากกว่านี้ผมต้องแม่นเรื่อง Object ของ Ruby ให้มากขึ้น และบทความนี้ผมจะใช้สำหรับเป็น Reference ของตัวเอง ![object](/downloads/object1.png) ทดลองสร้าง Class Circle เพื่อเป็นพิมพ์เขียวให้กับ Object circle #circle.rb class Circle @@count @radious @circle end puts Circle.class_variables #=> @@count puts Circle.instance_variables #=> @circle@radious puts Circle.count #=> undefined method `count' @@count เป็นตัวแปรของ class หรือเรียกว่า class variable ส่วน @radious และ @circle เป็นตัวแปรของ object เมื่อ object ถูกสร้างขึ้น หรือเรียกว่า instance variable ซึ่งจะอธิบายความแตกต่างอีกทีหนึ่ง สังเกตุ error ของบรรทัดสุดท้าย เราจะพบว่า ruby ไม่สามารถอ้างอิงไปที่ตัวแปรโดยตรง แต่จะถามหา method เลย แปลว่าทุกอย่างต้องผ่าน method ท…