הזהרה קטנה לגבי Ubiquity

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

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


Ubiquity for Firefox from Aza Raskin on Vimeo.

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

1. הכלי עשיר אבל מתעשר הרבה יותר כשהוא נותן לכם להרשם לפקודות חכמות נוספות שאחרים כותבים, כרגע הוא שומר את ההרשמות האלו בצורה מוזרה – ההרשמות הן למעשה פרטי היסטורית גלישה שמתויגים כהרשמה לפקודה מה שאומר שכשמאפסים את ההסטוריה מאבדים את ההרשמות החיצוניות, כרגע אנשים מדברים על השימוש במחיקת ההיסטוריה לצרכי פרטיות, מה יהיה כשהפריטים פשוט נעלמים בקצב הטבעי שלהם מההיסטוריה (9 ימים ברירת החדל)? לא יודעים, כי המוצר עוד לא בן תשעה ימים אבל קהילת כותבי תוספות עשירה כבר יש 🙂

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

2א. ולמה הפחד? כי מדובר בסקריפטים שרצים מחוץ לארגז החול. נכון, כמו גריזמונקי מדובר בכלי שיכול להגיע לרג'יסטרי של מוזילה ולשכתב אותו, ולכן גם זמינות לו גישות לעוד המון רכיבי מערכת ולמשיכת קוד וכלים רחוקים מהרשת (אני לא יודע אם הוא מוגבל בכלל, כי אני לא מכיר את מבנה הסקיוריטי של מנוע הJS של מוזילה, אבל אינני יודע אם יש משהו שעוצר את הקוד הזה מלהריץ תוכנות חיצוניות ממש במערכת ההפעלה למשל). פקודה ש"נרשמת אליה" היא כל פונקציה שהיא בJS, היא יכולה להיות פקודה שדורכת על פונקציה פנימית של יוביקוויטי או של משתמש אחר, או קוד זדוני מעשרות סוגים. יוביקוויטי כרגע לא מדברים על פתרון בענין. ההמלצה הרשמית שלהם – קחו רק את הקוד שמעניין אתכם, והריצו אותו מקובץ מקומי אחרי שבדקתם אותו, במקום הרשמה לאתר רחוק שעלול "לבגוד" בכם יום אחד. בדיוק כמו שבאתר הסקריפטים של הגריזמונקי מזהירים אתכם לבל תתקינו עדכונים חדשים מדי שעוד לא עברו את עיניהם האולי-פקוחה של עוד כמה חברי קהילה שמבינים בקוד – כי כבר הועלו לשם בעבר סקריפטים זדוניים והבלגאן חגג.

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

הנה, סוף סוף מצאתי משהו מעצבן בדביאן!

כבר הרבה זמן שאני מחפש משהו שיעצבן אותי בדביאן והיום מצאתי – הייתי צריך להוריד סרטים ממסרטת DV ומסתבר שדביאן פשוט זרקו את הדרייברים הישנים של raw1394 מהקרנלים של לני וסיד כי הם "גרמו לבעיות בטיחות ועצבנו אנשים". הפתרון? הסטאק החדש של פיירווייר שנמצא רק ב"אקספרימנטל". כל מי שבאמצע לא יכול להשתמש בחיבורי הפיירוייר שלו כמעט לכלום, אלא אם יקמפל לעצמו קרנל, או יקח מהאקספרימנטל (אבל אני לא יודע אם dvgrab תומך בAPI של הסטאק החדש). בקיצור אני נאלץ לבנות לי שוב קרנל פרטי, מה ששוב יגרום לX שלי לא לעבוד כי אין לי שם דרייבר לNVIDIA, אותו אצטרך לקמפל בעצמי מחדש שוב.

לעומתו אני אוכל מרורים מאובונטו כבר כמה זמן. אצל לקוח שלי מתעקשים להפוך אותו לפלאטפורמת התחנה הרשמית. עד עכשיו התקנתי להם סנטוסים בעזרת קיקסטארט. כל מכונה התקינה לעצמה בדיוק את הקומבינציה הרצויה של RPMים, על מחיצות כמו שביקשתי, חיברה את עצמה לNIS ושאר הדברים פעלו פחות או יותר "מהקופסא" ואת כל זה קיקסטארט עושה בעוד הוא שולח את הלוגים לסיסלוג מרוחק. אצל אובונטו (ואני לצערי מנחש שמשהו דומה יקרה בדביאן) התמיכה בקיקסטארט היא לא ממש רשמית ומאוד חלקית, לעומתה שיטת preseed לא מאפשרת חיבור לNIS או SysLog מרוחק, מכריחה אותי לייצר יוזר אחד (כי אין סיסמא לרוט או אופציה לקבוע אחת בהתקנה), משאירה את התחנה עם NetworkManager שלא עושה תמיד את מה שאני רוצה ואין עליו שליטה או תיעוד. אחרי שיצרתי את קובץ הפריסיד הארוך הזה, עולה התחנה, לוקחת את הקובץ ואז צועקת שהיא לא מצליחה לעשות לו parse, בלי לפרט באיזו מ300 שורותיו היא מתפוצצת, מתלוננת שאין כזו חבילה libc6, וזהו, אין אובונטו. לעומת זאת אם אצרוב CD ואתקין את התחנה ידנית, לפני שאוכל להשתמש בה, אני צריךך להוסיך (ידנית!) שרת SSH, לחבר ידנית לNIS, להוסיף ידנית AUTOFS ולערוך לו (ידנית…) את הקונפיג כדי לאפשר את /net, ולתת (ידנית) סיסמא לרוט ולהוריד (ידנית) את היוזר שהוכרחתי לייצר בזמן ההתקנה.כאילו מישהו בכוונה תיכנן את המערכת שלא תתאים לרשתות בחברה אלא רק לתחנות פרטיות. (או שאולי אני עושה משהו לא נכון, אתם מוזמנים לתקן אותי).

עוד על גיבויים

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

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

1. צרו סקריפט שיגבה את כל ספרית הבית שלכם, וכל טבלה דרושה ממסד הנתונים:

#!/bin/bash

# a generic hack to make a backup tarball of a homedir on a server
# and back it up to a home machine.
# This hack is public domain, and may not be useful to YOU if you don't
# customize it to the bone.

# The design is simple - stick everything in a single directory and rsync it out.
# We keep three days of material back, you still need to
# use rsync to take it home.

mkdir -p ~/backup ; cd ~/backup

mkdir -p current back.1 back.2 # add as necessary!

## first, rotate the directories

mv back.1/* back.2
mv current/* back.1

## set up dates for the backup filenames

TODAY=$(date +%Y-%m-%d)
THISMONTH=$(date --date="$TODAY -1 days" +%Y-%m)
ARCHSINCE=$(date --date="$TODAY -1 days" +%Y-%m-1)

## now dump MySQL, you must edit this to reflect YOUR db names!

for db in db1 db2 ${USER}_db ; do
nice mysqldump -e --add-drop-table --add-locks \
--user=USERNAME --password=PASS --single-transaction -q $db | \
nice gzip -c --rsyncable > current/$(hostname)_sql_$db.gz
done

## Did you notice? I always use gzip --rsyncable so the tarballs are, well, rsync-able!

## Latest web logs - only incremental of this month
( tar --newer-mtime ${ARCHSINCE} -cf - ~/weblogs | nice gzip -c --rsyncable \
> current/$(hostname)-weblogs-${THISMONTH}.tgz ) 2> /dev/null

## I run several sites
for site in ~/sites/* ; do
sitename=$(basename ${site})
( tar -C ~/sites/ -cf - ${sitename} | nice gzip -c --rsyncable \
> current/${USER}-${sitename}.tgz ) 2> /dev/null
done

## Backup all the rest of the homedir:
( tar --exclude=weblogs --exclude=sites --exclude=backup -cf - ~/. | nice gzip -c --rsyncable \
> current/$(hostname)-${USER}home.tgz ) 2> /dev/null

## AGAIN: this script makes a lot of assumptions, many not right for your setup.
## go over it, understand what it does and edit it to YOUR needs with
## YOUR directory names.

2. הריצו אותו כל לילה בשעות הכי פנויות בcron

crontab -e
(this opens an editor and you add in a line to run your script)
MAILTO=yourmail@yourdomain.com
30 3 * * * ~/bin/nightly-backup

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

while ! nice rsync -av SERVER:backup/current/ ~/backups/SERVER/ ; do sleep 1 ; done

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

crontab -e
(this opens an editor and you add in a line to run your script)
MAILTO=yourmail@yourdomain.com
30 4 * * * ~/bin/rsync-nightly-backup | tail -2

אני לא דואג לפרט כאן איך למשוך RSYNC משרת רחוק בלי לשבת ליד המקלדת ולהכניס סיסמא כל פעם, אבל אם תהיה מספיק דרישה אני אוסיף עוד howto קטן בנושא. בינתיים רמז: SSH עם מפתח פרטי וציבורי, כאשר אין passphrase או שאתם דואגים לssh-agent רץ וזמין לפעולת הcron.

ושוב כאמור, כתבתי את כל הנ"ל חפיף, נא לתקן אותי אם שכחתי או פישלתי במשהו.

השתלת דיסק טייק 2

הפציינט הגיע למרפאה תוך תלונות על איטיות זיכרון וכאבי ראש. לטענתו לא ישן כבר 130 יום. מבדיקה מהירה גיליתי שעולים מביטנו צליל ניסור מתכתיים איומים. ללא דיחוי הודעתי לו שעליו להתאשפז בטרם יהיה מאוחר מדי. מהסתכלות תקופתית בתיקו לפני כחודשיים כבר הזמנתי לו דיסק חצי טרה חדש והתכוונתי לזמנו להשתלה אבל הדבר זרח מפרחוני. אני מקווה שלא אחטוף תביעה על הזנחה פושעת. גם ככה ניסיתי עליו תרופות בעייתיות, העברתי אותו לSID וחזרה לLENNY והוא מראה סימני עייפות וטשטוש מזה זמן, וכבר שלושה-ארבעה חודשים פניו נפלו ואין אייקונים מעטרים את פניו כפעם. התייחסתי אליו כאחרון השרתים וויתרתי על הX. בושה.

השכבתי את החולה והרגעתי אותו שיהיה בסדר. הרופא המרדים ביקש ממנו להכנס לטראנס עמוק כדי שנוכל למשוך לו את התקע. "ממש לרדת לרמת מודעות 1?", "לא" אמר לו המרדים. "היום אני אקח אותך כל הדרך ל0!" ושלח למוחו בקשת כיבוי. החולה התנגד. מסתבר שאחרי 130 יום ללא שינה צפו בראשו כמה זומבים שסירבו לעזוב את השטח. הוא שכב שם כ10 דקות במצב קאטטוני, לא נרדם אבל גם לא מגיב לפניותי. נאלצתי לעשות את השנוא עלי ולהרדימו בכח. סמכתי עליו שהוא חזק, בכ"ז כבר בן 11 בגילגולים שונים, כמעט 8 שנים מאז שלקודמו מחקתי בטעות את /etc ונאלצתי לנקוט בצעדים קיצוניים. גם אז כדי להמנע מתביעת רשלנות עזבתי בחשכת לילה את ארץ מנדרקיה, בה שכנתי כ4-5 שנים, וברחתי עם הגופה להרים, לג'ונגלים של ארץ דביאן, כדי להעלות את הגופה באוב ולהחיותה מחדש, במקום בו לא יכירו אותי ואת הגופה החדשה-ישנה. זה הצליח. כשהערתי אותו מתרדמת המוות שלו לא היה לו מושג, הוא חשב שכך נולד, עם זכרונות נעימים בראשו וכשרון נדיר למיון דואר. מעולם לא סיפרתי לו את האמת…

בחזרה על שולחן הניתוחים, פתחתי את ביטנו של החולה ונחרדתי מהזיהומים שהצטברו בו. במרפאה המאולתרת שלי לא תמצאו מכשירי ניקוי אימתניים, פשוט לקחתי שואב אבק ביתי ושאבתי את הזיהום מתוכן ביטנו בגסות. "מה שלא הורג-מחשמל" אמרתי לעצמי בהיסח הדעת, והרופא המרדים הסכים: "ומה שמחשמל – מקצר את החיים לרגע". "איזה קצר!? אל תפתח פה לשטן! תעבור פה מיד על הבטן שלו, בוא נוודא שכל הכבלים תקינים. אני לא רוצה חיבורים מיותרים! מקסימום כבל מאריך אבל בוודאי שלא מקצר!"

אחרי שוידאנו שהכל תקין, שלפנו מביטנו את זוג הדיסקים, שאחד מהם היה אותו מסור שאיים על זכרונו. אחד של 120 ואחד של של 160. אלוהים אדירים, איך חיינו פעם עם כל כך מעט? תקופת צנע של ממש! השארנו את הדיסקים מחוברים בכבלי הטבור שלהם והוספתי לו את הדיסק החדש, מקובע במקום ומחובר בטכנולוגית SATA החדשה. הרבה לתקן בו לא היה לי חשק, אבל לפחות אוכל לדאוג שזכרונותיו יהיו בטוחים לעוד כמה שנים…

הערתי את החולה בעדינות. הוא נבהל לגלות שביטנו פעורה והדיסקים שלו גלויים לכולם. "מה אתה עושה לי? אתה קצב חסר לב!!", "די לבכות!!" שאגתי עליו. "אני מעתיק אותך לדיסק חדש, אבל בשביל זה אתה צריך להיות דלוק. אתה תרגיש קצת נפיחות אבל זה יעבור!". לא סיפרתי לו לאיפה ילכו הדיסקים הישנים אחרי שאגמור איתם, לא רציתי להפחיד אותו עוד יותר. פיזרתי על הדיסקים קצת רוטב tar|tar שיעשה את העבודה בהעדרי והלכתי לאכול צהריים. ביקשתי ממנו לחשוק שיניים ולחכות בלי לזוז. "עוד מעט יעבור" שיקרתי לו. מי כמוני יודע שלוקח כמה שעות להעביר כ"כ הרבה גיגות בין דיסקים, מהירים ככל שיהיו. השארתי אותו שם מייבב ומפחד לזוז. אני מקווה שלא יפגע בעצמו, רק רעש הניסור הזה היה יכול להעביר שרת שפוי על דעתו.

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

המלצות לעכבר אלחוטי בבקשה!

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

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

למיקרוסופט יש כמה עכברים אלחוטיים אבל רובם לא בלותות, ואני לא רוצה לבזבז יותר מUSB בודד על הסיפור (מדובר בלאפטופ ישן בלי BT מובנה) ואלו שכן BT יקרים בלי פרופורציה (אבל אולי שווים את המחיר? עוד לא ניסיתי ביד)

יש את לוגי'טק V270, מכוער אבל נראה נוח (לא ניסיתי)

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

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

תמונות מאוגוסט פנגווין 2008

תייגו את התמונות והעלו אותן לפליקר, מי צריך פרטיות? 🙂

זהו, שיש אנשים שרוצים פרטיות, אז נמנעתי מלהוסיף יותר מדי שמות לתמונות (לא בתיאורים ולא בתגיות). אם מישהו לא אוהב את התמונה שלו (חוץ ממיטל שברור שלא תאהב), תגידו לי מראש שאוריד אותה מה שיותר מהר.

אני מעלה 106 תמונות, מתוך 400 שצילמתי. לא כולן טובות, כי לא צילמתי מספיק חומר כדי למיין ממנו. אם אתם רוצים שאוסיף תג או תיאור עם שמכם, ספרו לי.

חולצות!