วันอาทิตย์ที่ 27 เมษายน พ.ศ. 2557

การจัดลำดับแบบไม่ซ้ำกัน โดยมีเงื่อนไข ใน Excel 2010 ด้วย rank.eq() และ sumproduct()

โจทย์ปัญหา
ถ้าต้องการจัดลำดับ โดยกำหนดเกณฑ์ว่า ถ้าได้คะแนนรวมเท่ากัน ให้พิจารณาผลคะแนนอื่นประกอบ เช่น ในการสอบคัดเลือก ถ้าคะแนนรวมได้เท่ากัน ให้พิจารณาคะแนนในการสอบ ภาค ก. ถ้าใครได้คะแนนสอบภาค ก. มากกว่า จะได้ลำดับที่ดีกว่า

สังเกตการจัดลำดับผู้สอบคัดเลือกได้ ในตารางข้างล่างนี้
จากตัวอย่าง จะเห็นว่า ผู้เข้าสอบมีคะแนนรวม ที่เท่ากัน หลายคน เช่น เลขที่ 1, 6 และ 7 ได้คะแนน 100 คะแนน เท่ากัน แต่จัดลำดับที่ต่างกัน โดยพิจารณาจากคะแนนใน ภาค ก. ประกอบ ได้แก่
  • เลขที่ 7 ได้คะแนนรวม 100 คะแนน และได้คะแนนภาค ก. 40 คะแนน ได้ลำดับที่ 4
  • เลขที่ 6 ได้คะแนนรวม 100 คะแนน และได้คะแนนภาค ก. 30 คะแนน ได้ลำดับที่ 5
  • เลขที่ 1 ได้คะแนนรวม 100 คะแนน และได้คะแนนภาค ก. 20 คะแนน ได้ลำดับที่ 6

การเรียงลำดับลักษณะนี้ ใช้ฟังก์ชั่น Rank() อย่างเดียวไม่พอ ต้องใช้ Sumproduct() เพื่อกำหนดเงื่อนไขเพิ่มเติม

วิธีการ มีดังนี

  1. ใช้ RANK.EQ() เพื่อหาลำดับที่ตามปกติ จะได้ดังนี้
  2. จะเห็นว่า มีลำดับที่ซ้ำกัน คือ ลำดับที่ 2 มี 2 คน และ ลำดับที่ 4 มี 3 คน เกณฑ์ต่อมา คือต้องพิจารณาว่า ตำแหน่งที่เท่ากัน หรือซ้ำกัน ใครได้คะแนนในภาค ก. สูงกว่ากัน ผู้ที่ได้คะแนนสูงกว่า จะได้ลำดับที่ดีกว่า 
  3. การพิจารณาตามเงื่อนไขนี้ เราใช้ฟังก์ชั่น Sumproduct() เพื่อหาดูว่า ในบรรดาผู้ที่ได้คะแนนเท่ากัน (จัดกลุ่มด้วย sumproduct) มีผู้ที่ได้คะแนน ภาค ก. (ซึ่งใช้เป็นเกณฑ์ตัดสิน) สูงกว่า คะแนนของคนนั้น ๆ กี่คน ซึ่งจะได้ดังนี้
  4. เมื่อรวมทั้งสองอย่างเข้าด้วยกัน ก็จะได้ลำดับที่ ที่ไม่ซ้ำกันเลย ดังนี้
  5. ถ้ามีเงื่อนไขเพิ่มเติม เช่น เมื่อพิจารณาจาก ภาค ก. แล้ว ก็ยังเท่ากันอีก ให้พิจารณาภาค ข. ต่อไป ก็ให้หาลำดับที่ ที่ซ้ำกันต่อ และกำหนดให้ภาค ข. (คอลัมน์ D) เป็นเกณฑ์ เป็นต้น 
  6. ในตัวอย่างข้างล่าง มีการปรับคะแนนของคนที่ 1 และคนที่ 5 เพื่อให้คะแนนภาค ก. เท่ากัน ทำให้ได้ลำดับที่เท่ากัน ดังนั้นจึงต้องไปพิจารณาคะแนน ในภาค ข. ซึ่งไม่เท่ากัน จึงทำให้ได้ลำดับที่ ที่ไม่ซ้ำกัน
  7. ดูรายละเอียดเพิ่มเติมเรื่อง sumproduct คลิกที่นี่
  8. ดาวน์โหลดไฟลตัวอย่าง คลิกที่นี่

วันจันทร์ที่ 21 เมษายน พ.ศ. 2557

การสร้างภาพสามมิติและเงา ด้วย Illustrator cs6

ภาพที่ต้องการสร้างคือ ภาพข้างล่าง


วิธีการสร้าง

  1. การสร้างภาพขวดสามมิติ
  2. การสร้างเงา
  3. การปรับตำแหน่งแสงและแปะภาพที่ขวด
การสร้างขวดสามมิติ
  1. เปิดโปรแกรม และนำภาพพื้นหลังเข้า โดยไปที่ File > Place...
  2. กำหนด Fill เป็นไม่ไม่ และกำหนด Stroke เป็นสีเขียว ความหนาของเส้นคือ 1 pixel
  3. ใช้ Pen Tool วาดภาพขวด ดังภาพ
  4. ไปที่ Effect > 3D > Revolves... แล้วคลิก OK
  5. ใช้ White Arrow Tool ปรับแต่งภาพขวด โดยปรับตำแหน่งของจุด Anchor point จนได้ภาพขวดที่ต้องการ ดังภาพ
การสร้างเงา
  1. เลือกชั้นรูปขวดที่สร้างขึ้น
  2. คัดลอกและวาง โดยกด Ctrl + C และ Ctrl + F จะเกิดชั้นใหม่อีกหนึ่งชั้น ให้ซ่อนชั้นบน โดยคลิกที่ตา และคลิกเลือกชั้นล่าง
  3. ไปที่ Object > Expand Appearance
  4. เปิดแถบสี (Window > swatches) และเลือกสีเทา
  5. เปิด Pathfinder (Window > Pathfinder) และเลือก Unite
  6. ลดจำนวนจุด Anchor point ให้น้อยลง โดยไปที่ Object > Path > Simplify path ปรับค่า ดังภาพ
  7. คลิก OK
  8. เลือกเครื่องมือลูกศรสีดำ เปิดชั้นขวด และคลิกช่องลูกกุญแจเพื่อล็อคชั้นนี้
  9. เลือกชั้นขวดสีเทา และเลื่อนตำแหน่ง ดังภาพ
  10. ปรับความทึบแสง Opacity ให้เหลือ 70%
  11. ปรับขอบเงาให้เบลอ โดยไปที่ Effect > Blur > Gaussian Blur
การปรับตำแหน่งแสงและแปะภาพที่ขวด
  1. ใช้ Black Arrow Tool  และคลิกที่ลูกกุญแจของชั้นขวดเพื่อปลดล็อค และเลือกที่ชั้นขวด
  2. เปิด Appearance Panel โดยไปที่ Window > Appearance
  3.  คลิก Preview เลื่อนตำแหน่งแสงให้แสงเข้าตรงข้ามกับเงา 
  4. เพิ่มภาพข้างขวด โดยไปที่ Map Art
  5. คลิกเลื่อนลูกศร เพื่อเลือกพื้นผิวที่จะวางภาพ โดยสังเกตเส้นสีแดงประกอบ พื้นที่ที่ต้องการคือบริเวณด้านข้างขวด
  6. ภาพที่จะนำมาใช้ จะเป็น Symbol ถ้าต้องการภาพใด ให้ทำให้เป็น Symbol เสียก่อน ในตัวอย่างนี้ จะใช้ภาพดอกเยบีร่า ซึ่งมีอยู่แล้ว ให้คลิกเลือกจากใน symbol
  7. ปรับภาพดอกเยบีร่า โดยลากปุ่มที่เส้นขอบ หรือลากย้ายตำแหน่ง ให้ได้ตามที่ต้องการ โดยดูภาพที่ปรากฎบนขวดประกอบ
  8. คลิก OK ทุกหน้าจอ เพื่อปิดหน้าจอ จะได้ภาพที่ต้องการ
  9. สารมารถปรับแต่งเงา โดยใช้เครื่องมือ ลูกศรสีขาว เพื่อย้ายจุด Anchor Point หรือใ้ช้ Pen tool สร้างจุดเงาเพิ่มเติมได้ ดังภาพ

วันพฤหัสบดีที่ 3 เมษายน พ.ศ. 2557

การส่งค่าตัวแปร ระหว่าง javascript และ php (2)

การส่งค่าจาก Javascript  ไปยังไฟล์ Php

ถ้าต้องการสร้างปุ่มกด ใน Javascript เพื่อให้ส่งค่าไปยัง ไฟล์ php สามารถทำได้ โดย ใช้คำสั่ง window.location.herf เช่น

ตัวอย่างไฟล์ html ส่งค่าตัวแปร Javascript ไปยังไฟล์ php

<!DOCTYPE html>
<html>
<body>
<p>การส่งค่าตัวแปร จาก Javascript ไปยังไฟล์ php ด้วย query string</p>
<button type="button" onclick="myFunction()"  onmouseover="this.style.cursor='pointer';">ส่งค่าตัวแปร</button>

<script>
function myFunction()
{
  var myJsVar = "สมศักดิ์";
  window.location.href = "my_php.php?name=" + myJsVar;
}
</script>

</body>
</html>

ตัวอย่างข้างต้น ส่งตัวแปร Javascript ชื่อ myJsVar ไปยังไฟล์ php ชื่อ my_php.php
ข้อสังเกต
ปกติปุ่มของ Javascript จะไม่แสดงรูปนิ้วมือเมื่อนำเมาส์ไปวางที่ปุ่ม ถ้าต้องการให้เคอร์เซอร์เปลี่ยนเป็นรูปมือ ให้ใช้คำสั่ง onmouseover="this.style.cursor='pointer' เพิ่มเข้าไปที่ปุ่ม นอกจากรูปมือ ยังสามารถเปลี่ยนเป็นรูปอื่น ๆ ได้อีก เช่น default (รูปลูกศร) help (รูปลูกศร+เครื่องหมายคำถาม) เป็นต้น


ไฟล์ my_php.php มีดังนี้

<?php
$thisName = $_GET['name'];
echo"name: $thisName";
?>

แสดงผล ไฟล์ html ส่งค่าตัวแปร Javascript ไปยังไฟล์ php


แสดงผล ไฟล์ my_php.php รับค่าตัวแปรที่เป็น Javascript




การส่งค่าตัวแปรจาก php ไปยัง Javascript ในไฟล์เดียวกัน (ไฟล์ PHP)

การส่งค่าจากตัวแปร php ในไฟล์ PHP ไปยังตัวแปร Javascript สามารถทำได้โดยตรง โดยใช้ฟังก์ชัน print หรือ echo ให้แสดงค่าตัวแปร ในรูปแบบของ Javascript เช่น

<script>
var myJavascriptVar = "<? print myPhpVar ?>";
</script>

ตัวอย่างข้างล่างนี้ เป็นไฟล์ php ที่มีการส่งค่าตัวแปรจาก php ไปแสดง โดยใช้ Javascript รับค่าจากต้วแปร php และนำมาแสดงในตำแหน่งที่กำหนด

<html>
<body>
<?php
 $username = "สมทรง";
?>
<script>
 var username = "<?php print $username ?>";
</script>
ชื่อ
<p id="thisName">.............</p>
<script>
function showName ()
{
document.getElementById('thisName').innerHTML= username;
}
</script>
<button type="button" onclick="showName()"  onmouseover="this.style.cursor='pointer';">ส่งค่าตัวแปร</button>
</body>
</html>

แสดงผลก่อนกดปุ่มส่ง (ไฟล์ PHP)


แสดงผลหลังกดปุ่มส่ง (ไฟล์ PHP เดียวกัน)