אחת הסדרות שלקחתי איתי לסיאטל בהמלצה של חבר היא דקסטר.
לקחתי את כל העונה הראשונה, וראיתי את הפרק האחרון בטיסה חזרה.
הגיבור הראשי בסדרה הוא.. תחזיקו - רוצח סדרתי בשם דקסטר מורגן (מייקל סי האל ששיחק את דיויד פישר בSix feet under).
דקסטר אומץ בגיל שלוש על ידי שוטר בשם הארי מורגן, שזיהה שיש בו דחפים אפלים, ולימד אותו לנתב אותם לכיוונים חיוביים כמו למשל שיסוף גרונם של רוצחים שטובחים בחפים מפשע.
דקסטר עובד במשטרת מיאמי בתור מנתח תבניות דם, מה שנותן לו גישה למידע וכלים שעוזרים לו למצוא קורבנות.
הסדרה מומלצת, אבל ממש לא לרכי לבב.
בקרוב בערוץ האינטרנט הקרוב לביתכם.
כבר בטיול האחרון להולנד וגרמניה חשבתי לקנות Nintendo Wii, אבל פשוט אי אפשר היה למצוא Wii באף חנות.
חצי שנה אחר כך, בחג המולד, המצב לא יותר טוב: למעשה, הוא יותר גרוע:
מי שרוצה לקנות Wii בחנות, יכול להרשם ולקבל אותו ב21 בינואר, שזה כמה שבועות אחרי שאני חוזר.
למזלי, השותף שלי לנסיעה - יניב - היה ממש לחוץ על Wii, והסכים לחפש בנרות בתנאי שאני אקנה אם הוא מוצא.
הוא גילה כמה אתרים שמתמחים בחיפושיי Wii, כשהמעניין בהם הוא wii.FindNearBy.net שמאפשר חיפוש עם אינטגרציה לגוגל מפות ולכמה רשתות מאוד משמעותיות (Ebay, אמזון, וולמארט, Target וכו’).
במילים אחרות:
תמצא לי כל מי שמוכר Wii ברדיוס של 25 מיילים (או כל מרחק אחר) ממני.
מצאנו ככה Wii ב315$ בEbay, ובאותו יום נפגשתי עם המוכר בקניון South center שנמצא במרחק חמש דקות נסיעה מהמלון, והכסף החליף ידיים, וגם הWii. על הדרך קניתי בקניון את Super mario galaxy לWii, כדי שיהיה מה לשחק.
הWii ממש חדש, והגיע עם הניילונים בקופסא. מסתבר שהילדים שם רצו נורא PS3 לקריסמס, ופניהם נפלו למראה הWii.
החוויה של קניה באיביי בארצות הברית שונה לגמרי מאשר בארץ, ולו בגלל שקל מאוד למצוא מישהו שמוכר מה שאתם רוצים בקרבתכם. ההבדל משמעותי מאוד: במקום לשלם מחיר מופקע כדי לקבל את זה בדואר איטי לארץ, נפגשים באיזה מקום ואוספים את הרכש במהירות.
למרבה הצער, הטלוויזיה במלון מצו’קמקת למדי ואין לה חיבורים RCA מתאימים, אז לא יצא לי לבדוק את הרכש החדש, אבל הזמן לזה יגיע :).
הWii שלי צורך במתח ב110 וולט, ואני עדיין מחפש פתרון לזה:
או שאני אקנה פה ספק כוח שמתאים גם ל220 וולט (קצת קשה למצוא פה), או שאני אקנה בארץ ממיר 220 -> 110 וולט.
בכל מקרה, אני לא מודאג - הבעיה הזו פתירה.
לפני כמה שבועות הפיד RSS של TorrentLeech (להלן TL), ספק הסדרות העיקרי שלי, התחיל להחזיר 404 (דף לא נמצא).
אין פה שום דבר חדש, הפיד הזה אף פעם לא היה יציב במיוחד, לכן חיכיתי בסבלנות כשבוע, ואז התלוננתי בערוץ הIRC שהלינק של הפיד לא עובד.
גורם “רשמי” מסר לי שהפיד לא יחזור כי השתמשו בו לרעה.
ניסיתי לברר את פשר השימוש הפוחז, ואפילו הצעתי את עזרתי במציאת פיתרון, אך לשוא:
הילדון זב החוטם מסר שלא משנה מה אני אגיד או אעשה, הפיד לא חוזר.
הסברתי לו בדרכי נועם שאם המידע זמין באתר, אין שום הבדל כי אפשר להפוך אותו לפיד, אבל זה לא עזר.
אז החלטתי לעשות בדיוק את זה, וכך נולדה תוכנה חדשה - TorrentLeech2RSS.
בגדול, הרעיון הוא כזה:
שרת מקומי דוגם את TL, נניח פעם בחצי שעה.
השרת נכנס לTL, מזדהה עם שם המשתמש והסיסמא של המשתמש בTL, מוריד את דף הHTML שמכיל את רשימת הטורנטים בכל אחת מהקטגוריות הנבחרות, מפענח את הדף, ומחלץ ממנו את השם, הלינק, המזהה והתאריך של כל טורנט, ושומר אותם בזכרון.
במקום להשתמש בכתובת הRSS של TL (שאינה עימנו עוד), המשתמש מכניס כתובת של TorrentLeech2RSS, שמכין דף RSS ומחזיר אותו למבקש.
TorrentLeech2RSS גם משכתב את הלינקים בתוך הRSS שיעברו דרכו, כדי שיוכל להוסיף פרטי הזדהות שיעברו לשרת של TL ברגע שהמשתמש מנסה להוריד טורנט (אחרת הTracker של TL לא משתף פעולה עם המשתמש).
בחרתי לכתוב את tl2rss בשפת ג’אווה.
הצעד הראשון, וכנראה הכי קשה בתהליך, הוא להכנס תכנותית לאתר, התהליך מורכב יחסית וכולל כמה שלבים.
כדי להבין מה אני אמור לשלוח ומתי, השתמשתי בWireShark, וניטרתי את התעבורה שנוצרת כשאני מבצע לוגין בעזרת הדפדפן.
שימו לב במיוחד לאפשרת של Follow TCP Stream, שמציגה שיחת HTTP שלמה בצורה ברורה.
ברגע שהקוד הצליח להזדהות מול השרת, לבקש דף שמתאים לקטגוריה רלוונטית זה קל. אבל מה עושים עם הדף?
הדפים של TorrentLeech הם דוגמא לאיך נראה קוד HTML מבולגן ולא תקני, ערבוביה של תגיות HTML שכוללות תוכן, עיצוב ועימוד.
בקיצור, לא משהו שכיף במיוחד לחפוש בתוכו אחרי מידע.
הגישה הנאווית לבעיות כאלו היא שימוש בביטוי רגולרי, אבל זה לא יעבוד טוב בכל המקרים (מה קורה למשל אם יש HTML בתוך התאור של הטורנט?).
בחרתי ללכת לגישה טיפה יותר חזקה, והיא פירוק מלא של הHTML למבנה נתונים בזכרון, וניתוח של אותו מבנה.
ספרית ג’אווה שמאפשרת parsing כזה לHTML היא htmlparser הוותיקה.
אבל גם אם htmlparser מחזירה לנו עץ אובייקטים נוח, איך מוציאים ממנו את מה שמעניין? הוא ענק וסבוך ויותר מכל מסובך.
למזלי מצאתי בונה פילטרים ויזואלי עם htmlparser. אפשר להריץ אותו עם Java web start:
או פשוט להריץ את הקוד ישירות (org.htmlparser.parserapplications.filterbuilder.FilterBuilder). עורך הפילטרים מאפשר ליצור פילטרים מורכבים בהדרגתיות תוך בדיקה מתמדת של התוצאה על דף הHTML שאתם רוצים לבדוק.
אזהרה: הוא לא הכי ידידותי בעולם, לוקח זמן להתרגל אליו - אבל הוא עובד.
לדוגמא, נניח שאנחנו רוצים לחלץ את רשימת השחקנים מהסרט ביוולף בIMDB.
קודם נכניס בשורה התחתונה את הURL, אחר כך נלחץ על fetch page, ואז נקבל את הHTML כעץ בחלק הימני.
ברגע שיש לנו את הHTML, נתחיל לפלטר. חיפוש קצר אחרי שם של אחד השחקנים (Musician #2) מצא את הטבלא, ולמרבה הנוחות אפשר לראות שclass הCSS שלה הוא cast. זה מצויין, כי זה יאפשר לנו לדוג את הטבלא בקלות:
נוסיף פילטר של תכונות (attributes), נכניס בו את התכונה class עם הערך cast.
קליק ימני על הפילטר, execute filter, ונקבל חלון קטן בצד ימין עם התוצאות.
בינגו, יש לנו את הטבלה.
אבל אנחנו רוצים רק את רשימת השחקנים, אז צריך לעדן את הפילטר.
נוסיף שאנחנו רוצים רק טגים בשם TR, שיש להם הורה שהוא טבלא עם תכונה של class שערכו cast:
אפשר להמשיך, אבל הרעיון - אני מקווה - ברור.
ברגע שאנחנו מרוצים מהפילטר שיצרנו, אפשר לשמור אותו.
זה מה שיוצא (גרסא מקוצרת):
// Generated by FilterBuilder. http://htmlparser.org // [aced0005737200206f.......17374]
אז עכשיו שאנחנו יודעים לקחת דף HTML ולהוציא ממנו טקסט של RSS, נשאר רק לאפשר לקורא RSS רגילים לגשת אליו.
הדרך הטבעית תהיה להריץ שרת ווב קטן, שיגיש את קובץ הRSS למי שמבקש.
בחרתי להשתמש בJetty, שהוא שרת ווב קטן וגמיש בג’אווה, שמאפשר גם שילוב פשוט וקל בתוך אפליקציות אחרות.
לא להבהל מגודל ההורדה שלו, כדי להשתמש בו בתוך האפליקציה שלכם מספיק לקחת שלושה Jarים בגודל כולל של כ700K.
ככה משלבים את Jetty בתוך הישום שלכם, שימו לב כמה שזה פשוט.
Server server = new Server(8080);
server.setHandler(handler);
server.start();
כדי לגשת אליו, נפתח את הדפדפן על http://localhost:8080 במקרה שלנו.
עכשיו רק נשאר לקשור את החוטים ביחד.
פתחתי בלוג קטן לפרוייקט, וחיש מהר החשבון שלי בTorrentLeech הושעה. כשביררתי מה הסיפור נאמר לי שהם חוששים שאני אגנוב למשתמשים סיסמאות.
הצעתי להם לבדוק את הקוד, ושעד אז אני אוריד את הלינק, וכך עשיתי, והחשבון שלי שוחזר.
בינתיים הם עדיין לא חזרו אלי, והסבלנות קצת פקעה.
מי שרוצה להוריד את הקוד יכול להוריד אותו מפה עם לקוח Subversion.
מי שרוצה להוריד את הבינארי מוזמן להוריד אותו מפה.
יש הוראות שימוש בתוך קובץ הREADME.
tl2rss משוחרר תחת רשיון GPL-3.0.
מי שלא ראה את סופראנוס, לא להריץ ולא לקרוא את התגובות, לכו לראות את הסדרה. שלושה חודשים - זוז!
מי שכן, ויגיד איזה פרט עלילה חשוב מאוד חסר פה יזכה בתהילת עולם.
כמו שאמרתי, קניתי נגן MP3 נייד, Sansa e280 עם 8 ג’יגה זכרון פלאש ותמיכה ברדיו.
התקנתי עליו את הנגן פתוח הקוד, Rockbox, ואני מרוצה.
רוקבוקס תומך בכל מה שאני צריך מבחינת שמישות, וגם בכמה דברים שאני לא ממש צריך, כמו משחק דום :).
יש לו סייר קבצים שמאפשר לעיין בקבצים בקלות, למחוק, להזיז וליצר רשימות ניגון.
בנוסף, הוא מגיע עם די הרבה פלאינים, תוכנות פשוטות (מטרונום למשל, שמאפשר לשמור על קצב הליכה קבוע) וערכות נושא.
במבט ראשון רוקבוקס נראה די מכוער, במיוחד אחרי שרואים את התוכנה המקורית שמגיעה עם הנגן, אבל אחרי שמשחקים קצת עם ערכות הנושא הוא נראה הרבה יותר טוב.
מה שבטוח זה שהוא נותן הרבה יותר פונקציונליות, ומאפשר - למי שבאמת רוצה - לשנות ולהרחיב את הנגן שלו. ההגבלה היחידה היא הדמיון.
מומלץ לגבות את הסנסה לפני שמתקינים עליו את רוקבוקס, אתם לא רוצים להתקע עם משקולת נייר יקרה ולא כבדה מספיק.
לפני שמחברים את הסנסה למחשב צריך לשנות את זיהוי הUSB שלו לMass storage class, או MSC. זה יאפשר למחשב לזהות אותו ככונן כמו כל כונן קשיח.
ללינוקסאים, כדי לגבת את כל הSansa, בהנחה שהוא הופיע בשם /dev/sdb
השתמשו בפקודה:
שתיצור עותק בינארי של כל הכונן (זה 8 ג’יגה, אז זה יקח זמן).
אפשר לגבות רק את המחיצה השניה (sdb2), שמכילה את התוכנה של הנגן, אבל אני חושב שליתר ביטחון עדיף לגבות את הכל.
בהנחה שהסנסה שלכם ריק, הgzip יתפוס כ100 מגה-בייט.
משתמשי חלונות מוזמנים לחפש פתרון בעצמם (רצוי כזה שלא דורש הקלדת פקודות קצרות אך מוזרות).
אחרי חודשים יבשים בהם כל הסדרות היו בהפסקה, נגמרה הבצורת.
הסדרות האלו ממשיכות:
Prison break עונה שלישית.
Heroes עונה שניה.
The unit עונה שלישית.
כל פרקי הפתיחה של אלו היו מצויינים.
בדיקה קצרה מראה שTraveler הסתיימה, חבל - היה לה פוטנציאל.
המפיק עונה על כל השאלות הפתוחות בבלוג.
לגבי Lost, קצת קשה למצוא מידע על העונה הבאה, אבל מקור לא רשמי טוען שהיא תמשיך בינואר.
לפי אותו מקור, גם Battlestar galactica תמשיך בינואר, עם העונה הרביעית והאחרונה.
סדרה חדשה שכדאי לבדוק היא Journeyman, עם קווין מקיד המצויין מרומא (שגם הפסיקה, ימח שמם של HBO).
אם פיספתי עוד המשכים או סדרות טובות חדשות, ספרו בתגובות.
אחרי BioShock (אחלה משחק, סוף קצת מאכזב, חסר מצב ריבוי שחקנים), ושבירת שיאים חוזרת בGeometry wars (כרגע אני עומד על 1.53 מליון נקודות), הגיע הזמן לרענן.
Valve שחררו חבילת משחקים חדשה בשם Orange box בPre-release, עם כמה דברים מאוד מעניינים: פורטל
משחק פאזלים מרחביים בעולם תלת מימדי.
Team fortress 2
אחד ממשחקי הרשת המצופים ביותר השנה, שלוקח את המשחק מבוסס הקלאסים לרמה חדשה. (בטא זמינה למזמיני האורנג’ בוקס ממחר - 17.9)
אין טוב כמראה עיניים:
כל זה, בייחד עם עוד כמה דברים פחות מעניינים שכבר יש לי (Half-life 2, וEpisode 1 למשל), ב45$ בSteam.
מצטער שזה נשמע כמו פרסומת לValve, אבל אלו באמת דברים טובים במחיר נמוך.
עוד דבר קטן ונחמד:
Valve חשבו על אותם חבר’ה שיקנו את החבילה הזו (Orange box) כאשר כבר יש להם את Half-life 2 ו/או את Episode 1, והם סידרו אפשרות לתת אותם כמתנה.
אז מי שרוצה אחד מהם (או אולי את שניהם?), שיגיב וישכנע אותי שמגיע לו. (או שתגיב, יש אפליה מתקנת לבנות, אז כדאי :).
המשחקים באורנג’ בוקס ישוחררו ב10.10, ורק אז אני אוכל לתת את המתנות, אז יש זמן לחשוב על סיבה טובה.
לפני כמה חודשים צפריר נתן לי שם משתמש וסיסמא לSteam, כנראה אחרי שהוא קנה כרטיס מסך של ATI וקיבל הורדה של Half-life2 - deathmatch בחינם.
כמה חודשים עברו, נגמרו המבחנים - והחלטתי לבדוק את העניין.
ההורדה כללה את Half-life 2 - The lost coast, שזה בעצם הדגמה טכנולוגית של יכולות הHDR של מנוע הSource, וכן את אותו Deathmatch.
מתוך הממשק של Steam, הורדתי והפעלתי את המשחקים, וראיתי כי טוב.
אחרי כשבוע קיבלתי מחבר בעבודה המלצה לGeometry wars שנמכר בעבור חופן דולרים (3.95$). החלטתי להוריד ולראות.
ממשק הקניה היה פשוט למדי, ההורדה היתה מהירה ותוך דקות כבר שיחקתי במשחק, שהתגלה כפנינת ארקייד מהנה.
מה שמצא חן בעיניי זה שיכלתי להתקין את המשחק בקלות ובחוקיות גם במחשבים אחרים (בעבודה למשל, אהם).
דבר נחמד נוסף, זה שValve הפכו לספק של חברות משחקים רבות, וניתן לקנות דרך Steam משחקים של ID, Eidos, Activision ועוד.
המחירים של משחקים חדשים דומים לאלו שבחנות (45$-50$), ושל משחקים ישנים נמוכים בהרבה.
במקרים רבים אפשר לקנות בזול חבילות שלמות, כמו חבילת הHalf-life של Valve, שכוללת את כל משחקי הHalf-life (קניתי אותה, הזדמנות לשחק את HL2,Episode one וBlueShift), או החבילה החדשה של Dawn of war - WarHammer 40K, שכוללת שני משחקים וחבילת הרחבה במחיר של 36$ (גם אותה קניתי, פיספסתי את כל הסדרה של WarHammer 40K וזו אחלה הזדמנות לסגור את החור).
יש כמה דברים נחמדים בכל העסק:
* המשחקים כולם זמינים להתקנה בכל מקום שאני הולך אליו, ולא הולכים לאיבוד או מתקלקלים.
* הקניה הרבה יותר נוחה מאשר קניה בחנות, וקל לקבל ביקורת על המשחקים ישירות דרך Steam או דרך האינטרנט.
* יום אחד יהיה לי פורטפוליו מרשים של משחקים להוריש לנכדים.
לסיכום, אחלה דבר - גם למשתמשים וגם לValve, אני למשל קניתי משחקים באיזה 100$ בחודש, אחרי שלא קניתי משחקים שנים. עכשיו רק נשאר לוותר על עוד קצת שינה כדי לשחק בהם :).
לדעתי זה רק עניין של זמן עד שValve יתחילו למכור שם גם סרטים ומוסיקה.