TL2RSS – הגרסא הידידותית

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

החלטתי ועשיתי.

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

כדי שהדבר הזה יעבוד, TL2RSS צריך להתחזות למשתמש רגיל שמתחבר לטורנטליץ'. מכיוון שהדפדפן של המשתמש לא מתחבר לטורנטליץ' אלא לTL2RSS צריך לזייף את הReferrer ואת שדה הHost בבקשת הHTTP שנשלחת לטורנטליץ'.

עד כאן הכל טוב ויפה.  אבל הקפצ'ה סירבה לעבוד בטענה שהאתר לא מאושר לגשת אליה.
כמובן – הקפצ'ה באה מאתר אחר, api.recaptcha.com, והדפדפן של המשתמש מלשין שהמשתמש לא הגיע מטורנטליץ', הנבלה.

אז מה עושים?
משכתבים.
בכל מקום בדף הHTML של הלוגין החלפתי את api.recaptcha.com בlocalhost:8080/external:api.recaptcha.com  (כאשר localhost:port הם הפרטים הנכונים של השרת שעליו רצה TL2RSS).

ברגע שהפרקוסי של TL2RSS זיהה URL שהקובץ בו מתחיל בexternal:, הוא מתייחס אליו כאל פקודה לבצע פרוקסי אל הכתובת שאחרי הexternal, תוך שהוא מזייף את הreferrer לזה של טורנטליץ'.
זה פתר את הבעיה הראשונה, והקפצ'ה הופיעה – אבל זה לא הספיק: התמונה בתוך הקפצ'ה לא הגיעה.
מסתבר שריקפצ'ה שולחים גם איזה ג'אווהסקריפט קטן שפונה אליהם חזרה, וגם בו הייתי צריך לשכתב את הכתובת שת השרת שלהם בכתובת של הפרוקסי.

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

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

שחררתי את כל השיפורים בגרסא 1.2.

הRSS של טורנטליץ' מעולם לא היה יציב כל כך.

TL2RSS חזרה לחיים

כהרגלם בקודש, מנהלי טורנט-ליץ' הפסיקו עוד פעם לספק פיד RSS של הטורנטים האחרונים.
בפעם האחרונה שהם עשו את זה – לפני כשנה – כתבתי תוכנה שעושה את זה במקומם, הוחרמתי מהאתר לכמה ימים, ובסוף הם הבינו שהם עושים שטויות והפעילו את החשבון שלי.
אחרי כמה שבועות הRSS חזר, ובמקביל הם שמו שם קפצ'ה בכניסה שדפקה את התוכנה שכתבתי.
מכיוון שהם החזירו גם ככה את הRSS, החלטתי לעזוב את זה, ולא נגעתי בתוכנה שוב.
לא נגעתי בה שוב עד שהם עוד פעם הפסיקו לספק RSS, בהתחלה חשבתי שזו תקלה. הם טובים בתקלות עם הRSS. גם כשהוא עובד הוא לא עובד לפעמים.
אחרי שבועיים שלושה, שבהם הם לא הגיבו לשאלות בנושא, החלטתי להחיות את TL2RSS, ובבוקר קצר אחר תיקנו אותו כך שיעקוף את הקפצ'ה:
פשוט, במקום להכנס עם שם משתמש וסיסמא, עכשיו היא נכנסת עם SESSION ID שהמשתמש משיג בעצמו כשהוא עובר את הקפצ'ה.
שחררתי גרסא חדשה באתר הפרוייקט, ולפחות בשבילי התוכנה עובדת היטב.
לא ראיתי יותר מדי משתמשים לתוכנה, אבל ביננו, כתבתי אותה בשבילי.
מי שרוצה, יכול לקחת מהבלוג של הפרוייקט.

ואנא, אל תטרחו לבקש הזמנות לטורנט ליץ'. אין לי.

גוגל וM-Labs שחררו מכשירים לבדיקת מהירות הרשת

גוגל וM-Labs שחררו סט כלים שנועדו לבדוק אם ספק האינטרנט שלכם משחק משחקים מלוכלכים מאחורי גבכם.
בין היתר, הכלי יבדוק הורדת ביט-טורנט מול הורדת HTTP מכמה שרתים ברחבי העולם, וידע לזהות אם הספק שלכם פוגע בתקשורת של ישומים שמשתמשים בפרוטוקול הביט-טורנט.
מזכיר קצת את מה שהצעתי לפני שנה וחצי:
שגוף ניטראלי יקיים בדיקות מהירות (אוטומטיות) לכל אחת מספקי הרשת ויציג את התוצאות במקום מרוכז.
נשאלת השאלה, מה ימנע מספקי האינטרנט (שלא נודעו במיוחד בהגינות ובמשחק ההוגן לתעדף ספציפית את שרתי הבדיקה).
שאלה טובה.
M-Labs, המפתחים של הכלים ישחררו אותם ברשיון קוד פתוח ויעודדו אנשים להריץ אותם על שרתים משלהם.
אם זה יקרה, אנשים יוכלו לבצע את הבדיקות מול שרתים 'אנונימיים' שספקי האינטרנט שלהם לא תעדפו.

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

כצפוי, מקורות (אנונימיים) מתחום הISP כבר מכינים מאגר תרוצים למכירה למשתמשים עצבניים:

However, one ISP industry source, who asked not to be identified, questioned whether the tools would accurately point to the cause of broadband problems. Spyware or malware on computers can affect browser performance, and problems with the wider Internet can cause slowdowns, the source said.

כרגע האתר של M-Labs לא זז, כנראה שהם לא צפו את העניין שהשרות שלהם יעורר (ואת אפקט הסלאשדוט).

מורידים את האשפה

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

אז מדי פעם נגמר המקום וצריך למחוק זבל שהצטבר בכל מני פינות חשוכות של ההארדיסק.
הפרוצדורה הרגילה של כשנגמר לי המקום בדביאן היא למחוק לוגים ישנים, למחוק את המטמון של apt-get וסתם לתייר בהרדיסק ולחפש דברים גדולים.
כשנגמר לי המקום היום חשבתי שחייבת להיות דרך יותר נוחה, אז חיפשתי כזו:
[code]
root@main:~\# apt-cache search disk usage tree
kdirstat – graphical disk usage display with cleanup facilities
[/code]
נשמע מעניין, התקנתי וזה אכן בדיוק מה שרציתי.
kdirstat היא תוכנת KDE נחמדה שמאפשרת לראות בצורה נוחה אלו ספריות תופסות הרבה מקום, ואפילו לפעול לנקות אותן ישר מתוך התוכנה במגוון צורות (למחוק, לכווץ, להריץ make clean וכו').
היא מראה גם עץ ספריות שבו ברור כמה תופסת כל ספריה (עם כל המשפחה של הילדים שלה), וגם חיוון וויזואלי של כל הספריות כספריות גדולות הן ריבועים יותר גדולים (מגניב אבל לא מאוד שימושי).
בתמונה פה למשל, גיליתי שספריית הlocale תופסת 435 מגה, ונזכרתי שיש כלי בשם localepurge שמנקה אוטומטית קבצי locale לא רלוונטייים (בשפות אחרות מהשפות שהגדרתם שאתם מעוניינים בהם).
localepurge הצליח לנקות 470 מגה – כנראה הוא הצליח למצוא עוד קבצי תרגום תועים בכל מני חורים אחרים.

kdirstat

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

למשתמשי חלונות המרובים שקוראים פה, תעברו ללינוקס.
סתם, יש לי גם כמה טיפים בשבילכם:
0. נסו את WinDirStat (ותודה לאריה)
1. תבטלו את הSystem restore ממאפייני המערכת, הוא תופס עשרות אם לא מאות מגה בייטים.
2. תזיזו את קובץ הדפדפוף למחיצה שונה מזו שחלונות מותקנת בה (שוב, מאפייני מערכת).
3. תזיזו את ספריית הTEMP למחיצה אחרת. (כן, ניחשתם – מאפייני מערכת)
4. תסירו תוכנות שמנות, ותתקינו אותן במחיצה אחרת.

הבאג שנלכד

מאז שעברתי לשרת החדש, היו לי בעיות עם שרת האפאצ'י: לפעמים הוא פשוט הפסיק לענות לבקשות, וחזר לעצמו רק אחרי restart.
בהתחלה לא היה לי ברור מה גורם לזה. חקרתי איך אפשר לראות מה עושה האפאצ'י בזמן שהוא רץ, וגיליתי את mod-status, שמאפשר לדעת מה עושה כל Worker באפאצ'י, ועוד כמה דברים שימושיים.
חיכיתי בסבלנות שהבעיה תופיעה שוב, וכשהיא קרתה אחרי כמה ימים – גיליתי כמובן שאני לא יכול לגשת לURL של mod-status בגלל הבעיה.
הצעד הבא היה לכתוב סקריפט קטן שידגום את הstatus של האפאצ'י כל שתי דקות וישמור את התשובה לקובץ.
אחרי כמה ימים הבעיה שוב קרתה והפעם ראיתי שרוב הWorkerים בשרת היו עסוקים בלנסות לדבר עם trac, שלא ממש ענה בגלל איזו שהיא בעיה עם בסיס הנתונים שלו.
פניתי לקבוצת הדיון של מפתחי trac, והם הציעו שאני אשדרג את sqlite (שהוא בסיס הנתונים שtrac משתמש בו ברוב ההתקנות), וגם ביקשו דברים שדורשים די הרבה זמן – כמו לקמפל את mod-wsgi עם מידע דיבאג, ולהתחבר אליו עם gdb ברגע שהעסק תקול כדי לראות מה הוא עושה.
שידרגתי, וכמובן שהבעיה לא נפתרה – אבל לא מצאתי זמן לעשות את מה שהם ביקשו.
בשלב הזה כבר הייתי די מעוצבן מזה שכל כמה ימים נופל לי האפאצ'י עד שאני בועט בו, והתקנתי את Monit, שמנתר את השרת ויכול להפעיל אותו מחדש אוטומטית אם הוא נופל (עוד על Monit בקרוב).
Monit איתחל את השרת תוך 4-5 דקות מרגע שהבעיה הופיע, וזה שינה את הסימפטומים מהמצב החמור של "השרת לא עונה לכמה שעות כל כמה ימים" למצב הנסבל של "השרת לא עונה לכמה דקות כל כמה ימים".
נסבל, וכדרכם של עצלנים, סבלתי עד שלפני כמה ימים Monit פישל ולא עבד משום מה, והשרת שוב היה למטה חצי לילה.
פניתי שוב לקבוצת הדיון של trac – הפעם מצויד בכל מידע הדיבאג שהם ביקשו, וסיפרתי להם שלמרות ששידרגתי הבעיה ממשיכה.
בינתיים ניסתי לראות איך אני משחזר את הבעיה – חיפשתי כלי לStress test לשרתי HTTP, משהו פשוט שיאפשר לי להפציץ URL בודד.
מצאתי את Siege, כלי פשוט שנותן בדיוק את זה.
בשימוש פשוט בSiege, גיליתי שאני מצליח להפיל את השרת אם אני מפעיל 15 משתמשים מול הURL של קו הזמן של trac, אחד הדפים הדורשניים ביותר במערכת.

במקביל פניתי לערוץ הIRC של טראק, ודיברתי עם osimons – אחד המפתחים של trac – על הבעיה.
גילינו שכשאני מריץ את Siege, טראק פותח את קובץ בסיס הנתונים מאות פעמים, מה שלא בדיוק הסתדר עם זה שיש בטראק Connection pooling.
המשכתי לחקור את העניין לבד, ובסוף גיליתי שהConnection pooling בכלל מכובה עבור חיבורי SQLite במכונות שלא מריצות… חלונות NT.
הגיוני? לא יודע. הפעלתי מחדש את העסק, ומאז נפתרה הבעיה.

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

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

בעיית שעון בשרתי לינוקס

לאחרונה נתקלתי בבעיה עיקשת וקשה לפיתרון:
השעון של אחד השרתים שאני אחראי אליהם החליט שדיוק זה לא הקטע שלו, ונדד משהו כמו ארבע שעות בכל יום.
סינכרון NTP יומי גרם לקפיצת זמן של 4-5 שעות בכל פעם, וברור היה שצריך לפתור את הבעיה האמיתית.
החשוד המיידי בבעיות שעון בדרך כלל הוא הBIOS או הסוללה של הCMOS, והפתרון הכי זריז אם זו אכן הבעיה היא להעביר את הדיסק של השרת למכונה אחרת.
חברת ההוסטינג עשתה את זה, והתברר שזה לא פתר את הבעיה.
כדי לעשות דברים יותר מעניינים, אני אוסיף ואגיד שיש בחווה ארבעה שרתים, חלקם עם חומרה כמעט זהה לזו של השרת המאחר והם לא סבלו מהבעיה.
בנוסף, כל השרתים הריצו דביאן Etch עם קרנל 2.6.18 סטנדרטי של דביאן (שהיא הגרסא הרשמית של דביאן Etch), בהבדל אחד: המכונה המאחרת הריצה קרנל של 64 ביט.
לא משהו שאמור לגרום לכזו בעיה, אבל בכל זאת הבדל.
השוואה של קבצי הקונפיגורציה של הקרנלים (בדיביאן קרנלים סטנדרטיים מגיעים עם קובץ הקונפיגורציה שאיתו קומפל הקרנל והוא יושב בספריית /boot) הראתה הבדל מעניין בין הקרנל המאחר לבין אלו שלא:
הקרנל המאחר לא קומפל עם GENERIC_TIME, והאחרים כן.
עדיין לא מוכיח כלום, אבל מעניין.
מסתבר שבלינוקס יש כמה מקורות לעדכון השעון הפנימי, חלקם מדוייקים יותר, חלקם מדוייקים הרבה פחות.
המקורות של הקרנל שרץ כרגע זמינים בקובץ
[code]
/sys/devices/system/clocksource/clocksource0/available_clocksource
[/code]
במכונה המאחרת היה זמין רק מקור אחד עם שם מוזר: jiffies
שהוא גם המקור הכי לא מדוייק שיש (למעשה הקרנל מעדכן איזה משתנה פנימי בקצב שאמור להיות תואם את המציאות, מה שלא ממש עובד)

במכונות האחרות היו זמינים כמה מקורות: acpi_pm jiffies tsc pit

ברגע שעידכנתי את הקרנלים בכל המכונות לגרסא 2.6.26, הבעיה נפתרה ולכל השרתים היו את אותם מקורות שעון.

sqlfairy

הסיטואציה הבאה תהיה מוכרת לכמה מפתחים:

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

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

איך מעבירים את השינויים האלו למערכת הפרודקשן?

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

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

בגדול, כדי לעבור מסכימה אחת לשניה, מה שצריך לעשות זה להוריד את המבנה של שני הסכימות לקובץ עם mysqldump, למשל:
[code]
source db.conf
mysqldump –no-data -h $HOST -u $USER –password=$PASS $DB_NAME $TABLES | gzip > struct.sql.gz
[/code]

כאשר הקובץ db.conf מכיל את המשתנים הדרושים להתחבר:
[code]
HOST=server_host (usually localhost)
USER=username
PASS=password
DB_NAME=database_name
TABLES="table1 table2 table3"
[/code]

ברגע ששיש לנו את שתי הסכימות ביד, ואחרי שהתקנו את SQLFairy כמובן (apt-get install sqlfairy על דביאן לני, אם אתם על Etch תתקינו ידנית מהקוד, הגרסא שבEtch לא עובדת טוב), אפשר לקבל הוראות מעבר מסכימה אחת לשניה כך:
[code]
sqlt-diff current.sql=MySQL new.sql=MySQL 2> /dev/null > diff.sql
[/code]

זה יפיק הוראות מעבר (CREATE , ALTER, DROP) שיהיה אפשר להריץ על בסיס הנתונים כדי לישר קו בין הסכימות.
(אני שולח את stderr ל/dev/null כי יש אזהרות חסרות חשיבות מהסקריפט שנובעות מגרסת perl יותר חדשה מזו שהסקיפט פוחת עליה)
אני משתמש בסקריפט דומה לזה כדי להפוך את התהליך ליותר קל (הקובץ prod-struct.sql.gz מכיל את מבנה הסכימה שאני רוצה לקבל) :
[code]
#! /bin/bash
source db.conf
mysqldump –no-data -h $HOST -u $USER –password=$PASS $DB_NAME $TABLES > current.sql
zcat prod-struct.sql.gz > new.sql
sqlt-diff current.sql=MySQL new.sql=MySQL 2> /dev/null > diff.sql
cat diff.sql
echo "Type yes to apply changes"
read RESP
[[ $RESP == "yes" ]] || { rm -f current.sql diff.sql new.sql;exit; }
echo "updating database structure"
cat diff.sql | mysql -h $HOST -u $USER –password=$PASS $DB_NAME
rm current.sql new.sql diff.sql
[/code]

בוקסי

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

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

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

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

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

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

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

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

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

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

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

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

הנה סירטון קצר שמדגים את יכולות המערכת:

quick intro to boxee from boxee on Vimeo.

אם לסכם,
אני מת על המערכת הזו, שידרוג אסטרונומי מfreevo בו השתמשתי עד עכשיו.
מומלץ בחום.

שדרוג דביאן Etch לLenny

שדרגתי את השרת שמפעיל את הבלוג הזה ואת האתר של פיירסטטס מדביאן Etch לדביאן Lenny.
הסיבה היא שקצתי בחבילות ישנות, ספציפית יש לי בעיה באתר של פיירסטטס (שרץ על trac) שמאוד יכול להיות שנובעת מגרסא ישנה של python ו/או גרסא ישנה של sqlite.

בכל אופן, השדרוג לא היה חלק במיוחד, אבל נראה שהוא הסתיים בהצלחה.
באופן רגיל, שדרוג של הפצת דביאן מתבצע כך:
משנים את /etc/apt/sources.list ומחליפים כל אזכור של etch בlenny.
מבצעים apt-get update
מבצעים apt-get dist-upgrade
ומקווים לטוב.

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

כדי לצמצם את הזמן שהאתר היה למטה, הורדתי מבעוד מועד את כל החבילות על ידי הרצת:
apt-get dist-upgrade –download-only
שמוריד את מה שצריך אבל לא מתקין.

אחרי ההכנות האלו, הרצתי dist-upgdade רגיל בתקוה שההרפתקאה לא תהפוך לסופת חרא.
אחרי השדרוג, הבעיה הראשונה שהבחנתי בה היתה שהאפאצ'י מתלונן על זה:
[code]
apache2[Fri Oct 24 19:09:36 2008] [warn] NameVirtualHost *:80 has no VirtualHosts
[/code]
מסתבר שהחברים בדביאן החליטו להוסיף את ההצהרה על שימוש בהוסטים וירטואליים לקובץ הports.conf, מה שאמר שהיו שתי הצהרות כאלו.
הודעת השגיאה הסתומה שקיבלתי היא התוצאה.
הסרתי את ההגדרה שלי והבעיה נעלמה.

בעיה נוספת היא שtrac הפסיק לעבוד.
האמת היא שמכיוון שלא התקנתי את trac דרך apt-get הייתי מופתע אם הוא ההיה ממשיך לעבוד.
הסיבה הפעם היא שדביאן לני מתשמש בPython 2.5 ומכיוון שתוכניות פייתון מותקנות משום מה לתוך ספריה שספציפית לגרסאת הפייתון, הייתי צריך להתקין מחדש את trac לתוך פייתון 2.5.
עד כאן הכל טוב.

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

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

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

Debian live

מחר אני נוסע לאינטל חיפה כדי לבדוק את הביצועים של תוכנה שאנחנו מפתחים על הדור הבא של המעבדים של אינטל (ארכיטקטורת Nehalem), שישוחררו עוד כחודש וחצי.
אני הולך לבדוק מכונה עם שני מעבדים של ארבעה ליבות כל אחד, כאשר כל ליבה מריצה שני נימים (אינטל מחזירים את הHyperThreading) – ככה שבעצם המוכנה הזו תהיה שקולה למדי למכונה עם 16 ליבות.
הארכיטקטורה החדשה של נהלם צפויה לתת ביצועים טובים משמעותית לעומת הדור הנוכחי (לכל ליבה), בצריכת חשמל יותר נמוכה.
מומלץ מאוד לראות את הדמו.

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

חשבתי לעצמי שיהיה נחמד לבוא עם סביבה מוכנה במקום לבוא ולהתקין הכל במקום בסביבה זרה, ומה יותר מתאים לזה מLIVE CD + כונן קשיח נייד?
הבחירה הטבעית שלי היתה Knoppix, הורדתי את הISO, העלתי אותו בVirtualBox, שמתי את האפליקציה על הדיסק הנייד והתחלתי לנסות להפעיל אותה.
למרבה הצער היו מלא בעיות, כשהקש ששבר את ראש הגמל היה שlibstdc++ היה מגרסא לא מתאימה.
החלטתי לוותר על התענוג, וביגוני חיפשתי בגוגל "Debian live cd".
התוצאה המפתיעה היא שיש פרוייקט בשם Debian live!

כמו תמיד עם live cd, חיפשתי מאיפה מורידים את הISO, התחלתי להוריד, ולמרבה המזל מהירות ההורדה היתה כ20K בשניה.
למה מזל?
כי במהירות כזו, היה לי מספיק זמן כדי להסתכל קצת מסביב.

About

A Debian Live system is a Debian operating system that does not require a classical installer to use it. It comes on various media, including CD-ROM, USB sticks, or via netboot.

Why Debian Live?
Although the Debian Live project is about the framework to create your own customized Live system, we offer some prebuilt images. Currently, builds for three desktop environments (GNOME, KDE and Xfce) as well as the standard system are available.

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

מסתבר שהתהליך הוא פשוט במיוחד. כדי ליצור דיסק בסיסי ועובד:
[code]
apt-get install live-helper
mkdir live-cd
cd live-cd
lh_config
lh_build
[/code]

במילים, מתקינים את live-helper, יוצרים ספרית עבודה, משתמשים בlh_config כדי ליצור קופיגורציה בסיסית, ובlh_build כדי לבנות ממנה ISO.
התהליך יכול לקחת זמן, ומומלץ להתקין את apt-cacher כדי לחסוך בזמני הורדה של חבילות דביאן.
אפשר לבדוק את הISO עם VirtualBox. המערכת שהוא מכיל היא בסיסית מאוד, אבל אפשר להתקין בתוכה מה שרוצים עם apt-get.
יש כמה דרכים להוסיף חבילות שיהיו מותקנות מראש בISO:
כדי להוסיף חבילות סטנדרטיות, בסך הכל צריך להוסיף את השם שלהן בLH_PACKAGES בקובץ config/chroot בספרייית הקונפיגורציה שיצרתם.
יש גם דרכים להוסיף חבילות מותאמות אישית, ואפשר גם להוסיף קבצים ספציפייים בקלות.
מי שהתקין את apt-cacher ירצה לשנות את מקורות ההתקנה של יצירת הISO, אפשר לעשות את זה על ידי עריכה של config/bootstrap.

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

אני ממליץ בחום על Debian live למי שצריך Live CD.
קל מאוד ליצור דיסקים איתו, והתוצאה היא מערכת דביאן לכל דבר, שעולה מCD/DVD.