ארכיון יומי: 29 אוגוסט, 2010

קצת טיפים לתכנות ברובי

הצטברו לי ב3 חודשים האחרונים כמה קטעי קוד נחמדים ברובי אשר לא יכולים להכיל פוסט משל עצמם ככה סתם כי אין הרבה מה לכתוב, אבל יהיה מאוד נחמד לרכז אותם בייחד.

חיפוש מספר בטווח:

a = 1
b = '9'
(a..b.to_i).include? 5
#=> true

זה קוד הרבה יותר הגיוני מאשר לחפש גדול שווה וקטן שווה ל5 שיש ברוב השפות הקיימות.

קבלת ה pid שלי (אני מציג 2 דרכים):

puts $$
puts Process.pid

הדרך הראשונה היא דרך ה"פרל", והשנייה היא יותר object oriented.
קבל ה pid של אבא (או שלי, אם אני האבא של עצמי):

puts Process.ppid

אם אנחנו רוצים לשנות המשתמש שלנו או המשתמש האפקטיבי שלנו ברובי, לצערי חייבים לדעת מה המספר של המשתמש (או קבוצה במידה ויש צורך בקבוצה), ועושים את זה בצורה הבאה:

Process.euid = 0 # you shell be root user (if you are allowed)
Process.egid = 0 # you shell be root group (if you are allowed)

זה כמובן חשוב אם אנחנו מריצים תהליך כroot (למשל) ורוצים להיות משתמש אחר, בד"כ nobody כלשהו.

משחקי חתול ועכבר של signals:

 # The victim
trap('KILL'){ # Yes only proc is allowed, and there is no support for block
  puts "Ouch, that's hurt! Goodbye cruel world !"
}
trap(3) {
  puts "I'm not quitting this stupid execution !"
}

# The killer
Process.kill(9, pid) # signal number. if you pass it as string, it will add SIG before 9
Process.kill('QUIT', pid) # signal name... Lower case will add SIG before quit

טוב זו כל האלימות שאציג כאן כרגע, או סתם טיפים …