Pondus: תוכנה לניטור מסת הגוף

בעבר סיקרתי את הכבשה (שמגינה על העיניים). הפעם אסקר עוד תוכנה שקשורה לבריאות: Pondus. מה המטרה של Pondus? כדי לדעת אם אדם סובל מעודף משקל יש לדעת מהי מסת הגוף שלו (BMI). הנוסחה לחישוב BMI מתבססת על משקל וגובה (הנוסחה המדוייקת: BMI = משקל חלקי הגובה בריבוע). מי שמתעצל לחשב, קיימים ברשת מחשבוני BMI (דוגמא). טווח ערכים תקין של BMI‏: 18.5-24.9. ערכים נמוכים מ- 18.5 מציינים תת משקל, ערכים גבוהים מ- 24.9 מציינים משקל יתר. ניתן להיעזר בטבלה הבאה כדי לסווג את טווח ערכי BMI בהקשר הבריאותי:
pondus-bmi

Pondus היא תוכנה שמנטרת את מסת הגוף. כשמריצים אותה בפעם הראשונה היא מבקשת שתזינו את הגובה שלכם. לאחר מכן ניתן בפשטות רבה להזין את המשקל (כדאי לבצע את הבדיקות בזמנים ושעות קבועים). התוכנה מחשבת את מסת הגוף ומציגה בגרף מעקב זה. לתוכנה מאפיינים רבים כגון תכנון משקל, מעקב אחר מסת שריר, אחוזי שומן ועוד… תוכלו להתרשם מהגרפים הבאים (המעקב הפרטי שלי אותו התחלתי לנטר באוקטובר 2011)
מסך הזנת משקל:

pondus-1

גרף מעקב BMI‏:
pondus-4

מסך ההגדרות‏:
pondus-3

מנהל חבילות אולטימטיבי ללינוקס

משתמשי לינוקס תמיד מתגאים במנהלי החבילות של ההפצה שלהם: apt, aptitude, yum, yast, pacman ועוד… לדעתי לא צריך להתגאות כ"כ במנהלי החבילות, מפני שכולם סובלים מאותה בעיה מהותית, שמקשה מאוד על משתמשי לינוקס: בעיית התלויות.

במערכות הפעלה אחרות (חלונות, IOS, אנדרויד, BSD) כל חבילת תוכנה מכילה בדר"כ את כל רכיבי התוכנה הדרושים להפעלתה. נכון: יש חריגים (נניח תוכנות שתלויות בגרסה מסויימת של NET.), אבל בדר"כ רוב התוכנות ניתנות להתקנה קלה ופשוטה יחסית.

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

ב- BSD, למשל, חבילת תוכנה נארזת כך שהיא מכילה את כל החבילות הדרושות להפעלתה. נכון, החבילה תהיה גדולה יותר בנפח, אבל אין את כל הסיבוך הקיים בלינוקס. ב- BSD הגדילו לכת ומאפשרים להריץ את התוכנה באזור "הסגר" (JAIL): החבילה תרוץ בסביבה מבודדת, מבלי שהיא תוכל להשפיע על תוכנות אחרות במערכת ההפעלה.

הייתי רוצה לראות פתרון דומה בלינוקס, ומוזר לי מאוד שעד היום אף חברה לא ניסתה לפתח פתרון דומה. היום רוחב הפס או גודל הדיסק לא מהווה בעיה. הפצה אידיאלית מבחינתי תכיל גרעין לינוקס (Kernel) מאוד יציב שיכיל תמיכה רחבה בהתקני חומרה. הוא לא חייב להיות החדשני ביותר, וניתן ליצור גם מס' Kernels ברמת יציבות שונה (כך שאולי הקרנל החדשני ביותר יתמוך בחומרה חדשה יותר, אבל רוב המשתמשים אולי ירצו להשתמש ב- kernels ישנים ויציבים יותר). Manjaro מיישמת רעיון זה ומאפשרת מעבר פשוט מאוד בין Kernels שונים.

מעבר לקרנל, ההפצה חייבת להכיל חבילות תוכנה שמאפשרות את X, את מנהל החלונות ועוד… לדעתי כל אחד מהמרכיבים הנ"ל אמור להיות עצמאי ולהכיל את כל רכיבי התוכנה הדרושים להפעלתו. חבילות אלה לא חייבות להתשדרג בצורה תכופה והן יהוו את השלד של מערכת ההפעלה.

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

inxi

inxi הוא כלי שבעזרתו ניתן לקבל אינפורצמיה על חומרת המחשב (דגם, יצרן, דרייברים ועוד…).
למרות שמדובר בפקודה שמריצים במסוף, הפלט המתקבל מסודר ויפה:

הרצה של הפקודה inxi ללא פרמטרים תציג פרטים כלליים על כל חומרת המחשב

[ilan@Manjaro ~]$ inxi
CPU~Dual core Intel Core2 Duo CPU P8400 (-MCP-) clocked at Min:800.000Mhz Max:2267.000Mhz Kernel~3.12.6-1-MANJARO x86_64 Up~11:45 Mem~1247.3/1932.8MB HDD~250.1GB(39.0% used) Procs~170 Client~Shell inxi~1.9.17
[ilan@Manjaro ~]$

הדגל b- יציג אינפורמציה טובה יותר על חומרה זאת (אבל עדיין מדובר ברשימה בסיסית)

[ilan@Manjaro ~]$ inxi -b
System: Host: Manjaro Kernel: 3.12.6-1-MANJARO x86_64 (64 bit) Desktop: Xfce 4.10.2 Distro: ManjaroLinux 0.8.8 Ascella
Machine: System: Hewlett-Packard product: HP Compaq 6530b version: F.13
Mobo: Hewlett-Packard model: 30DD version: KBC Version 96.22
Bios: Hewlett-Packard version: 68PDD Ver. F.13 date: 12/08/2009
CPU: Dual core Intel Core2 Duo CPU P8400 (-MCP-) clocked at 2267.00 MHz
Graphics: Card: Intel Mobile 4 Series Integrated Graphics Controller
X.Org: 1.14.5 driver: intel Resolution: 1280×800@60.0hz
GLX Renderer: Mesa DRI Mobile Intel GM45 Express GLX Version: 2.1 Mesa 10.0.1
Network: Card-1: Broadcom BCM4312 802.11b/g LP-PHY driver: b43-pci-bridge
Card-2: Broadcom NetLink BCM5787M Gigabit Ethernet PCI Express driver: tg3
Drives: HDD Total Size: 250.1GB (39.0% used)
Info: Processes: 171 Uptime: 11:49 Memory: 1306.9/1932.8MB Client: Shell (bash) inxi: 1.9.17

קיימים דגלים שימושיים נוספים:

  • ‏‏‏p- יציג פרטים על Partition
  • ‏D- יציג פרטים על הכונן הקשיח
  • ‏n- יציג פרטים על כרטיס הרשת
  • ‏F- יציג רשימה מפורטת על כל חומרת המחשב
  • ‏s- יציג פרטים על חיישנים שונים (מדי טמפרטורה, סיבובי מאווררים ועוד…)

מדובר במס' דוגמאות בלבד (כדאי להריץ man inxi וללמוד על אפשרויות נוספות שהכלי מאפשר לצפות בהם)

BRO – תשובה קצרה וקולעת

bro היא פקודה לשיתוף מידע חברתי של פקודות לינוקס.
הסבר: נניח שאתם רוצים לדעת כיצד לבצע פעולה מסויימת בעזרת rsync. אם תסתכלו ב- man pages של rsync תקבלו עשרות עמודים של הסבר. אין ספק שהמידע שתקבלו מאוד מקיף, אך לכו תמצאו מחט בערימה של שחת… שיטוט באינטרנט יספק תשובות מהירות יותר, אך למה לא להיעזר במידע הקהילתי שמרוכז ב- bropages? הפקודה bro מספקת מידע על פקודה מסויימת בצורה פשוטה ומהירה. כל אחד יכול להוסיף פקודה חדשה למאגר, להעשיר את המידע על פקודה קיימת ואף לדרג את התשובות המוצעות (באמצעות שליחת 'thanks' או 'no').
דוגמאות:

bro rsync

יתן את הפלט הבא:

4 entries for rsync — submit your own example with "bro add rsync"

# Sync 2 folders/destinations recursively, overwrite, update, verbosely
rsync -ruv ~/source/dir ~/destination/dir

bro thanks to upvote (10)
bro …no to downvote (0)

…………………………………………………………………

# Makes the remote folder look *exactly* like the source dir including file
# permissions, ownership, etc.
# -a Archive (sets a number of things).
# -v Versose
# –delete Dangerous! Will remove files on the remote which do not exist
# in source.
# Be sure you have remotedir set properly and maybe run without –delete
# once to ensure that it does what you think it will do.
rsync -av –progress –delete sourcedir user@host:remotedir

bro thanks 2 to upvote (7)
bro …no 2 to downvote (0)

:…skipping…
4 entries for rsync — submit your own example with "bro add rsync"

# Sync 2 folders/destinations recursively, overwrite, update, verbosely
rsync -ruv ~/source/dir ~/destination/dir

bro thanks to upvote (10)
bro …no to downvote (0)

…………………………………………………………………

# Makes the remote folder look *exactly* like the source dir including file
# permissions, ownership, etc.
# -a Archive (sets a number of things).
# -v Versose
# –delete Dangerous! Will remove files on the remote which do not exist
# in source.
# Be sure you have remotedir set properly and maybe run without –delete
# once to ensure that it does what you think it will do.
rsync -av –progress –delete sourcedir user@host:remotedir

bro thanks 2 to upvote (7)
bro …no 2 to downvote (0)

…………………………………………………………………

# Remotely SYNC two directories, smarter than scp and easier than creating
a tar

rsync -rtvP –bwlimit=65 [source] [destination]

# Where
#
# -r is recursive
# -t retains the files' modification time
# -v to show what is going on
# -P shows the progress
# –bwlimit=65 limits the upload to 65Kb/sec

bro thanks 3 to upvote (3)
bro …no 3 to downvote (0)

…………………………………………………………………

# transfer a local file to a remote-server, with progress
rsync –progress localFile.txt remote-server:/targetDirectory

bro thanks 4 to upvote (1)
bro …no 4 to downvote (1)

מספר פקודות שימושיות:

  • bro thanks 4 -‏‎‏ נגיד תודה לתשובה האחרונה שהוצעה
  • bro thanks -‏ נגיד תודה לתשובה הראשונה שהוצעה
  • bro no -‏ נגיד לא לתשובה הראשונה שהוצעה
  • bro add new_command – תוסיף פקודה חדשה לבסיס הנתונים (שם הפקודה new_command)‏ ‏
  • יש להתייחסת ברצינות להערות הקהילה, מפני שלא מתבצע כל סינון ע"י מפתחי התוכנה. דוגמא: אחת התשובות המוצעות לפקודה 'rm' היא הפקודה '/ rm -fr'. מי ששלח את הפקודה ציין שזאת הדרך הטובה ביותר להסיר רוגלות ממערכת ההפעלה… כמובן שהפקודה מסוכנת ותמחק את כל הקבצים במערכת ההפעלה שלכם (אם תריצו אותה כ- root) ולכן היא קיבלה 37 משובים שליליים ורק 3 חיוביים (כך שיש להתייחס ברצינות רבה להערות הקהילה)

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