เลเยอร์สำหรับเช็คน้ำหนักแสงเงาของภาพ by

31
Jan
0

LIS
1 ร่างภาพ

A1

2 สร้างเลเยอร์ใหม่แล้วกดปุ่มนี้
A2

3 เลือก Hue/Saturation
A3

4 ปรับ Saturation ให้ต่ำที่สุด
  

LIS01 LIS02 LIS03 LIS04
5 เลือกสีที่เราต้องการให้เป็นสีหลักของภาพมาลงสีให้ได้น้ำหนัก โดยที่เปิดเลเยอร์เช็คเงาเอาไว้

 LIS05 LIS06 LIS07 

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

LIS08
7 ใช้บรัชที่มีเท็กเจอร์ เก็บรายละเอียดส่วนที่ต้องการ เราก็จะได้ภาพที่แสงเงาไม่เพี้ยนไปเพราะการซูมเก็บรายละเอียดทีละส่วน

Integration Test ใน Unity Test Tools by

31
Jan
0

จาก Blog ที่แล้ว เรื่อง Unity Test Tools วันนี้เรามาลงรายละเอียดกันเรื่อง Assertion Component และ Integration Test Tools ก่อนอื่นแนะนำให้ Download Project นี้ไป และ Download Unity Test Tools version ล่าสุดไปดูครับ (แกะ zip แล้วติดตั้ง Unity Test Tools ลงไป) ประกอบตัวอย่างในนี้

Assertion Component อย่างที่บอกไว้ใน blog ที่แล้วคือเราสามารถทดสอบได้โดยไม่ต้องเขียนโปรแกรม สร้างไฟล์ C# ขี้นมาใหม่เลยด้วยซ้ำ มักใช้กับ Integration Test (โดยติ๊กช่อง Suceed on Assertion เอาไว้) ซึ่งการ Test 1 Test จะมีองค์ประกอบต่างๆ ดังนี้

โดยมีตัวอย่างการใช้งาน (Scene Level 1) ดังนี้

integration

  1. FakeInput (When) เพื่อจำลองการใช้งานหรือเล่นเกมของผู้เล่น เช่น เปลี่ยนจาก Input จริงๆ ซึ่งเป็นการกดคีย์บอร์ดปุ่มลูกศรซ้ายค้าง มาเป็นการสั่งให้เซ็ตความเร็วยานอวกาศและเคลื่อนที่โดยอัตโนมัติด้วยทิศทางความเร็วอย่างไรโดยผ่าน Inspector โดยตรง ไม่ต้องรอ user สั่ง ซึ่งเราควรจะสร้าง Interface มาเป็นตัวกลางระหว่าง Class FakeInput และ Class RealInput ให้ทั้งสอง class นี้ implement function เดียวกันก็จะลดโอกาสการลืมแก้ไขไฟล์ใดไฟล์หนึ่งได้ (IUserInputProxy เป็นตัวอย่าง Interface และ Class FakeUserInput กับ RealInput ที่ implement IUserInputProxy ด้วยกันทั้งคู่)
  2. เงื่อนไขการทดสอบที่คาดหวัง (Then) จากรูปด้านบนก็คือตำแหน่งของ x ต้องน้อยกว่าศูนย์ (Compare To Constant Value น้อยกว่า Constant คือ 0) หรือพูดอีกในที่ตัวยานอวกาศต้อง “ขยับออกจากที่เดิมเมื่อมีการใส่ Input เข้าไปเป็นเวลา 1 วินาทีไม่ว่าจะเป็น RealInput หรือ FakeInput ก็ตาม”
    integration2
  3. GameObject ต่างๆ ที่เกี่ยวข้องกับการ Test (Given) อันนี้ก็ตรงไปตรงมา คือ Object ตัวไหนมีผลกับตัวไหนบ้าง การทดสอบยิงจำเป็นต้องมีวัตถุอะไรบ้างในฉาก ใน Project ตัวอย่างนี้จะมีเพียงยาน Spaceship ที่เราใช้ควบคุมไปมาเท่านั้น

เมื่อวางองค์ประกอบครบ ถัดมาเรามาลองรันดูกันดีกว่า เปิดหน้าต่าง  Unity Test Tools -> Integration Test Runner ขึ้นมาจะได้ดังรูป
integration4

integration3

กด Run All เพื่อทดสอบ Test ก็จะพบว่า Test Fail เพราะเรายังไม่ได้แก้ไขให้ยานขยับเมื่อกดปุ่มซ้ายบนคีย์บอร์ดนั่นเอง ดังนั้นหน้าที่ของเราตอนนี้ก็ต้องแก้ไขให้ Test มันทำงานได้ถูกต้องด้วยการเปิดไฟล์ SpaceshipMotor.cs ขึ้นและแก้ไขตาม comment ในไฟล์นั้น (เขียนไว้ค่อนข้างดีอยู่แล้ว) หากแก้ได้ถูกต้องโดยขยับได้ทั้ง MoveHorizontally และ MoveVertically เมื่อ Run All Test อีกรอบจะพบว่า Test รันได้ถูกต้องหมดเรียบร้อย :)

นอกจากนี้หากเราไม่ต้องการใช้ Assertion Component เพราะไม่พบเงื่อนไขการทำงานสำเร็จที่เราต้องการ เราสามารถสร้างเงื่อนไข Integration Test ผ่านโดยไม่ต้องใช้ Assertion Component ก็ได้โดยจะต้อง Coding โดยใส่คำสั่ง “Integration.Pass()” เข้าไปเพื่อบอกว่ารัน Test ผ่านแล้ว เราสามารถใส่ในบริเวณจุดสิ้นสุดของ Code ที่ถ้าถูกรันแล้วจะถือว่า Test ผ่านได้เช่นกัน

หากสังเกตจะพบว่าเรามี Spaceship ใหม่ในแต่ละ Test แยกกันหมดเลย ตรงนี้เอาไว้เหมือนการ Reset ค่า Environment ต่างๆ ให้ทดสอบใหม่โดยเริ่มต้นที่ตำแหน่งนี้ๆ ทำให้เราสามารถแยก Test แต่ละ Test เป็นอิสระต่อกันโดยไม่ขึ้นกับลำดับก่อนหลังการ Test ได้ แต่หากมี Object ที่ต้องใช้ทุกๆ การ Test จริงๆ โดยไม่มีการเปลี่ยนแปลงอะไรเช่น Library กลางเราสามารถสร้าง Object นั้นไว้นอก Test Component ได้ครับ เพียงเท่านี้เราก็จะสามารถใช้ Object เดียวกันในทุกๆ Test ได้ (แต่ต้องระวังเรื่องการเปลี่ยนแปลงค่าที่ Object กลางตัวนี้แทนว่าจะไม่ทำให้เกิดปัญหาเวลา run test สลับลำดับกัน)

จากนี้ไปจะมี Scene ถัดๆ ไปเป็นแบบฝึกหัดให้ลองกัน สามารถลองไปแก้ไขเรื่อยๆ จนกว่าจะใช้การได้เป็นเกมสุดท้ายใน Scene “The Game” ได้เลย แลดูสนุกใช่ไหมครับ น่าจะช่วยให้เข้าใจการใช้งาน Assertion Component กับ Integration Test มากขึ้นนะครับ

การตั้ง”Auto Save”ใน PS cs6 กันง่ายๆ by

31
Jan
0

ถ้าเคยเจอปัญหา คอมค้าง ไฟดับ หรือกดลืมเซฟ และปิดงานโดยไม่ตั้งใจ ถ้าเป็น มาลองตั้งค่า Auto Save กันดูครับ
1.เปิดโปรแกรม PS ขึ้นมา
2.โดยกดไปที่ Edit > Preference > File Handling
01

3.เมื่อขึ้นป๊อปอัพ ให้เลือกติ้กถูกที่ Automatically Save Recovery Information Every และตั้งเวลาที่ให้ Auto Save ต่ำสุดที่ทุกๆ5นาที
02
เมื่อพอใจก็กด OK

แค่นี้ก็ช่วยเซฟงานที่เราได้ระดับนึงแล้ว และถ้าคอมดับครั้งต่อไป โปรแกรมก็จะเปิดงานที่ออโต้เซฟไว้ล่าสุด โดยชึ้นเป็นชื่อไฟล์งานของเรา-Recovered ครับผม

[photoshop]วิธีการทำหมอกควัน by

29
Jan
1

1.ลาก Selection เป็นโค้งๆยังไงก็ได้

2.เท Gradient ขาว-ดำ ในแนวตั้ง

3.Filter > Distort > Wave

4.ปรับค่าต่างๆแล้วลองกดปุ่ม Randomize ดู

5.เมื่อทำคำสั่ง Wave เสร็จแล้ว เลือกคำสั่ง Edit > Fade Wave

ปรับ opacity ไปที่ 50%

6.ทำคำสั่ง Wave, Fade Wave ไปเรื่อยๆจนกว่าจะพอใจ

7.เวลาใช้งานจริงให้ปรับ layer เป็น Screen เพื่อเอาสีดำของหมอกออกไป

หากต้องการให้หมอกชัดเจนขึ้น สามารถปรับ Level ได้

วิธีใช้งาน Helper และ View สำหรับสร้าง Table by

28
Jan
0

สำหรับการเขียนโปรแกรม Back-end บางทีก็ต้องชั่งน้ำหนักระหว่างภาษาว่าใช้ภาษาไหนมากกว่ากัน ซึ่งก็ขึ้นอยู่กับความถนัดของแต่ละคนด้วย
ตัวอย่างนี้แสดงให้เห็นวิธีใช้ Codeigniter helper และ View โดยเน้นไปทาง ฝั่ง CI มากกว่า HTML
$this->load->helper('html');
$this->load->helper('url');
$this->load->library('table');
$this->table->set_template(['table_open' => '<table border="1">"]);
$this->table->set_caption('News List');
$this->table->set_heading('Logo', 'Subject', 'Publish date');
foreach ($this->CI->db->get('news')->result_array() as $row) {
$this->table->add_row(empty($row['logo']) ? ' ' : img(base_url() . 'assets/images/default/news_logo/' . $row['logo']), $row['subject'], $row['publish_date']);
}
$data['news_list'] = $this->table->generate();
$this->load->view('master/news', $data);

อธิบายคำสั่งสำคัญได้ดังนี้ครับ

  • $this->table->set_template ใช้สำหรับกำหนดลักษณะของตารางโดยใส่ config ต่างๆ เป็น array ลงไป
  • $this->table->set_caption ใช้กำหนด caption ของตาราง ใส่ string ได้เลย
  • $this->table->set_heading ใช้กำหนดหัวข้อของแต่ละคอลัมน์ ใส่ string คั่นด้วยลูกน้ำไปเรื่อยๆ ได้เลย
  • $this->table->add_row เป็นการใส่ข้อมูลแต่ละแถว สามารถใช้วน loop ได้อย่างง่ายมาก
  • $this->table->generate คำสั่งสำหรับสร้าง html ตามที่ได้ตั้งค่าไว้ที่ด้านบนแล้ว
กู้เงิน | เศรษฐกิจพอเพียง | สินเชื่อบุคคล | สมัครบัตรกดเงินสด | สินเชื่อ | เงินกู้ด่วน | ยืมเงินทรูมูฟ | เงินด่วนนอกระบบ