1. ทำได้โดยไปที่ เว็บ Longdo ก่อน
2. จากนั้นไปที่
แล้วก็ click details ต้องเปลี่ยนนิดหน่อย
เปลี่ยนตามนี้เลย
เรียบร้อยครับพี่น้อง
ผู้สนับสนุน
วันอาทิตย์ที่ ๒๙ มิถุนายน พ.ศ. ๒๕๕๑
การทำ longdo dict เป็น search provider บน Opera 9.5
วันอาทิตย์ที่ ๑๓ เมษายน พ.ศ. ๒๕๕๑
'''
Dinning Philosopher Symmetric
Moss Rookie
ไม่ควรใช้โปรแกรมนี้ในการอ้างอิงในทางวิชาการใดๆ ทั้งสิ้น
เป็นโปรแกรมที่เขียนขึ้นมาเอง ไม่มีการทำความสะอาด source code ทั้งสิ้น
ทำเพื่อเป็นตัวอย่างในการเขียน Thread ใน python แบบง่ายๆ rookie ๆ
และเำพื่อให้เข้าใจปัญหา Dinning Philosopher ในวิชา OS(ที่เขียนมานี้เป็นในแบบที่ผมเข้าใจ)
โปรแกรมนี้ทำงานโดยจะมีการสร้าง Tread ขึ้นมาตามจำนวนของ Philosopher
และมีจำนวนของ chopstick เท่ากับจำนวนของ Philosopher
chopstick เป็นตัวแปลกลางที่ทุก Tread สามารถเข้าถึงได้
โดยมีกฏว่า
1 เมื่อ Philosopher มี chopstick 2 อันเท่านั้นถึงจะมีโอกาสได้กินอาหาร
2 Philosopher จะสามารถหยิบ chopstick ได้แค่ที่วางอยู่ข้างตัวเองเท่านั้น
3 มีโอกาสกินอาหารได้แค่ 1 ครั้งเท่านั้นต่อการได้ chopstick ครบคู่(ห้ามถือครอง)
4 ไม่มีใครมีสิทธิ์มากกว่ากัน คือห้ามหยิบ chopstick ที่คนอื่นถือครองอยู่
5 ทุกคนต้องมีโอกาสได้กินอาหาร หรือไม่มีใครรอไปตลอดกาล
การทำงานของโปรแกรม
1 รันด้วย python dinning.py
2 เลือกจำนวนของ Philosopher
3 ดูผลการทำงาน
4 กด Ctrl+C เพื่อให้ร้านปิดแล้วให้ Philosopher รีบกินให้เสร็จ(ให้ Tread แต่ล่ะตัวจบการทำงาน ก่อนออกจาก program)
'''
import thread
import threading
import random
import time
import signal
#Magic number
#PRINT = 1 Mean print all action
#ON_THE_TABLE = 0 Mean chopsticks is on the table
#Function handler
def handler(signum,frame):
restaurantOpen = False
while buf < 2 or buf> 10:
self.kount = 0
self.tno = tno
def isdeadlock(self,lis):
for i in range(len(lis)):
# race: "Who got first chopstick
time.sleep(random.randint(1,5))
# wait forever if can not get 2 chopstick or when deadlock occur
while 1:
if chopstick[self.tno%numberOfThread]==ON_THE_TABLE:
# Get left chopstick may cause dead-lock
chopstick[self.tno%numberOfThread]=ON_THE_TABLE
time.sleep(random.randint(1,5))
chopstick[(self.tno+1)%numberOfThread]==ON_THE_TABLE:
if action == PRINT:
print self.tno,"Pick right"
chopstick[(self.tno+1)%numberOfThread]=self.tno
time.sleep(random.randint(1,3))
if chopstick[self.tno%numberOfThread]==self.tno and chopstick[(self.tno+1)%numberOfThread]==self.tno:break
if action == PRINT:
if action == PRINT:
time.sleep(random.randint(1,2))
if action == PRINT:
time.sleep(random.randint(1,2))
kount = 0
while restaurantOpen:
self.eating()
kount +=1
self.drop()
self.think()
#define my Magic number
PRINT = 1 #Mean print all action
ON_THE_TABLE = 0 #Mean chopsticks is on the table
restaurantOpen = True
signal.signal(signal.SIGINT, handler)
action = PRINT
numberOfThread = setNumberOfThread()
chopstick = []
philosopher = []
for i in range(numberOfThread):
print chopstick
print "Start call Tread"
for i in range(1,numberOfThread+1):
for thrd in philosopher:
while restaurantOpen:
for thrd in philosopher:
วันอาทิตย์ที่ ๖ เมษายน พ.ศ. ๒๕๕๑
สร้าง Folder Bookmarks บน Firefox
เปิด Firefox ขึ้นมาแล้วก็ คลิ๊กขวาที่ Bookmarks Toolbar หาเจอไม๊ ใต้ช่อง search อ่ะ แถวนั้นทั้งแถวเลยเรียกว่า Bookmarks Toolbar บริเวณที่ผมคลิ๊กขวาในรูปหน่ะ
(เฮือก!! ติดร่องรอยการค้นหาเราด้วย)
(เฮือก!! อีกที่ติด Blog พี่เทพมาด้วย)
ต่อไปก็เลือกชื่อ Folder ที่ใช้ในการเก็บ Bookmarks ของเราจัดไป !!
แล้วมันก็จะมี Folder ขึ้นแบบนี้ หรือคล้ายๆ กันบน windows
แล้วก็ลากจาก tab ของหน้าที่เราเปิดจะ bookmarks เข้าไปเลย
ทีนี้เราก็เก็บเว็บที่เราชอบไว้ได้อย่างเป็นระเบียบเรียบร้อยแล้ว หาง่ายด้วย
ลืมภาพตอนทำเสร็จแล้วง่ะ ไม่ต้องมีก็ได้มะ
แถม
ตอนแรกนะว่าเขียนเรื่องนี้เรื่องเดียวแหละ, แต่ว่าวันนี้กลับเปิดเครื่องขึ้นมาเป็น Ubuntu แล้วเราก็ทำการเก็บภาพตัวอย่าง, กด print screen ไปตามเรื่อง, ปรากฏว่ามันไม่ได้ หว่ะเฮ้ย !!? เกิดอะไรขึ้นหว่า ทำไมทำไม่ได้ กดใหญ่เลย กดๆๆๆ
แล้วก็เริ่มคิดว่ามันคงไม่ได้แล้วหล่ะ ต้องมีอะไรผิดพลาดแล้วแหละ ลองเปลี่ยนไปกดกับหน้าจอธรรมดา ได้ซะงั้น!! แล้วทำไมตะกี้ไม่ได้หว่า ลองอีกรอบ ก็ไม่ได้เหมือนเดิม แล้วก็เริ่มหาข้อแตกต่างของสองครั้ง เจอแล้วว!! เหตุมันเพราะอย่างนี้นี่เอง
เนื่องจากตอนเก็บภาพหน้าจอเพื่อทำตัวอย่างของผมปกติ จะให้ สภาวะของ mouse มันค้างอยู่อย่างนั้นแล้วก็กด print screen เลยอย่างในภาพแรกนี้เป็นต้น มันทำไม่ได้ครับใน ubuntu เหมือนว่ามันสถานะของ mouse ค้างอยู่จะทำอะไรอย่างอื่นไม่ได้
ถามอาจารย์เลยครับทีนี้เราไม่ใช่คนแรกที่เจอปัญหาแน่ google เลยครับ แล้วในที่สุดก็ได้วิธีมาครับ ไม่งั้นวันนี้ไม่ได้เขียนแน่ ก็เลยเอาวิธีนี้มาบอกด้วยเลย
การ print screen บน linux ubuntu,gnome จริงๆแล้วมันก็ไม่ได้ยากหรอกนะแต่เราไม่รู้ ง่ายมากเลย -"- ดูภาพเอาล่ะกัน
จาก นั้นมันก็จะขึ้นหน้าจอเตรียมถ่ายรูปให้เรา เลือกเลยครับ ภาพเดี่ยว(เฉพาะ window ที่เลือกอยู่) ภาพหมู่(ทั้งหน้าจอ) แล้วก็เลือกเวลาที่เราจะเตรียมตัว Act !! ทีนี้จะทำอะไรก็ทำครับแล้วก็ Act ค้างรอไว้ แล้วก็ แช๊ะ!!
แล้วก็ได้วิธีการถ่ายรูปมาแล้ว

