טריקל
מי שניסה להגדיר בלינוקס מנגנון Traffic shaping יודע שלא מדובר במשימה לרכי לבב.
trickle הוא פתרון פשוט, שעובד עבור ישומים שמשתמשים בחיבור TCP בלבד.
טריקל עובד במרחב המשתמש ולא צריך מודולים בקרנל או משהו מורכב אחר.
ככה זה נראה בלי טריקל:
$ wget http://yadan.net/bulk.dat
–22:01:39– http://yadan.net/bulk.dat
=> `bulk.dat'
Resolving yadan.net… 10.0.0.2
Connecting to yadan.net|10.0.0.2|:80… connected.
HTTP request sent, awaiting response… 200 OK
Length: 20,480,000 (20M) [chemical/x-mopac-input]
14% [=============> ] 6,966,584 11.07M/s
וככה עם:
$ trickle -d 50k wget http://yadan.net/bulk.dat
trickle: Could not reach trickled, working independently: No such file or directory
–22:04:33– http://yadan.net/bulk.dat
=> `bulk.dat.2'
Resolving yadan.net… 10.0.0.2
Connecting to yadan.net|10.0.0.2|:80… connected.
HTTP request sent, awaiting response… 200 OK
Length: 20,480,000 (20M) [chemical/x-mopac-input]1% [> ] 278,528 52.48K/s ETA 06:15
בעיות רשת מוזרות
בעיות רשת מוזרות יכולות לחרפן גם את המתכנת/טכנאי הסבלני ביותר.
הנה מספר בעיות רשת מוזרות שנתקלתי בהן לאחרונה, וניתוח מלא של הפתרון והדרך להגיע אליו.
הפוסט טכני, ולא מומלץ לרכי הלבב.
בעיית רשת מוזרה מספר 1:
BattleField 2142, משחק רשת מרובה משתתפים עובד היטב, עד שיום בהיר אחד הוא מפסיק לראות שרתים ברשת.
פניתי לתמיכה של EA, שהציעו להסיר ולהתקין מחדש, תוך מחיקה של כל רמז לספריות נוספות שהמשחק שומר (במילים אחרון, אין להם מושג והם יורים באפלה).
עקבתי אחרי ההוראות, וכמובן שהבעיה לא נפתרה.
בצר לי, הורדתי את WireShark (לשעבר Ethereal), שהוא Network sniffer רב עוצמה, והפעלתי אותו לפני ההפעלה של המשחק.
די בקלות זיהיתי את הבעיה: המשחק שולח בקשת DNS למציאת כתובת הIP של השרת שמחזיק את רשימת השרתים, מקבל שגיאה מהDNS ומתעלם ממנה ומפסיק לנסות בלי למסור הודעת שגיאה למשתמש.
ברגע שהחלפתי את שרת הDNS שלי הבעיה נפתרה.
בעית רשת מוזרה מספר 2:
Call of duty 2, עוד משחק רשת משובח, עובד היטב ברשת המשרדית, עד שיום בהיר אחד הוא מפסיק לראות שרתים אחרים.
במילים אחרות, עמרי לא יכול להצטרף לשרתי המשחק ברשת, ונאלץ לעבוד בעבודה.
לאחר הטחת האשמות סרק ברשת, בסוויץ' במערכת הפעלה ובאלוהים, הפעלתי את WireShark על שני מחשבים, אחד בו אין בעיה, וזה שלי.
לאחר שהפעלתי את המשחק בשניהם, בחנתי את תעבורת הרשת, וגיליתי את הדבר הבא:
המשחק שולח בBroadcast פקטת UDP לכל הרשת כשהוא מחפש שרתים, והשרתים אמורים לענות לו ולמסור לו מידע על עצמם. (כדי לשלוח Broadcast צריך לשלוח את הפקטה לכתובת 255.255.255.255).
עד פה הכל טוב, רק שראיתי משהו מוזר במחשב שלי. במקום לצאת מכתובת הIP הרגילה שלי הוא יצא מכתובת IP אחרת, שבכלל לא נראית כאילו היא ברשת הפנימית שלנו.
מסתבר שהכתובת הנ"ל (192.168.40.1) שייכת למתאם רשת וירטואלי של VMWare, ומסיבה עלומה המשחק שלח את חבילת הUDP כאשר הכתובת של המתאם היא כתובת המקור של החבילה. השרת ניסה לענות, אבל מכיוון שהכתובת לא ברשת לא קיבלתי את התשובה.
אחרי ביטול של מתאמי הרשת של VMWare הבעיה נפתרה.
בעיית רשת מוזרה מספר 3:
תוכנה שאנחנו מפתחים בעבודה מקבלת זרם של חבילות UDP משרת.
התוכנה עובדת טוב מול שרת אחד, ומאוד לאט מול שרת שני, שני השרתים מריצים את אותה תוכנה בדיוק.
הפעלה של WireShark על השרת והמכונה שמריצה את הלקוח מראה שהשרת שולח את החבילות בקצב הנכון, והחבילות מגיעות למכונת היעד באותו קצב, ובכל זאת לאפליקציית הלקוח החבילות מגיעות מאוד לאט.
הלקוח רץ על WTK, שהוא אמולטור של סביבות ג'אווה של פלאפונים. לWTK יש כלי Profiling פנימי, שמאפשר להגיד איפה האפליקציה משחיתה את זמנה.
הפעלתי את הפרופיילר, והסתבר שהיא משחיתה את מיטב זמנה בפונקציית מערכת בשם getHostByName.
תפקידה של הפונקציה הזו הוא בעצם לקבל כתובת שמית ולהמיר אותה לכתובת IP מספרית, במילים אחרות – לקרוא לDNS.
מסיבה לא ברורה הפונקציה לקחה הרבה זמן, ומסיבה לא ברורה היא נקראה עבוד כל חבילת UDP שהגיעה לאמולטור (באג באמולטור לדעתי, אבל שיהיה).
לחלונות יש קובץ בשם hosts בספריית החלונות, שדומה מאוד לאותו קובץ במערכות יוניקס (זה מראה על הקשר בין חלונות ליוניקסים), הקובץ משמש להוספה ידנית של רשומות לDNS המקומי.
ברגע שהוספתי את כתובת הIP של השרת לקובץ ההוסטים הבעיה נפתרה.
עד כאן פינתנו, בעיות רשת מוזרות.
חוק חסימת האתרים
נבחרי הציבור לא מפסיקים להפתיע ולחדש, והפעם – הצעת החוק של ח"כ אמנון כהן.
למי שבדיוק חזר מהירח, אמנון כהן מציע לחסום אתרי "מין, הימורים ואלימות" מכלל הגולשים, למעט מבוגרים שיבקשו מפורשות להסיר את החסימה.
בנוסף, הח"כ הנכבד מציע זיהוי ביומטרי (טביעת אצבע) כדי לזהות את הגולש.
יש כל כך הרבה בעיות עם ההצעה הזו, שקשה אפילו להתחיל.
הדבר שהכי מפריע לי הוא שבשם הצדקנות החרדית, החופש שלי ושלכם נפגע.
לא מדובר במושג מופשט, אני לא צריך ולא רוצה שח"כ אמנון כהן פלמוני יחליט בשבילי לאיזה אתרים אני יכול להכנס, ואני במיוחד לא מוכן שספקית אינטרנט תחזיק מידע שיכול לזהות אותי לפי טביעת אצבע (!), וכן – אני יודע שזה רק hash, אבל זה שקול לצורך העניין.
אני לא מוכן אפילו להכנס לדיון לגבי הנזק שזה גורם לילדים, יש דרכים אחרות לפתור את זה והבלוגוספירה מלאה בהצעות טובות, למשל:
* העברת המחשב הביתי לסלון, שם הילדים יהיו תחת פיקוח בזמן שהם גולשים.
* חיוב ספקיות האינטרנט לספק שרות סינון אתרים (בתשלום) למי שמעוניין.
* יצירת מסלול גלישה מצונזר ומאובטח לחרדים רכי לבב ששמים זין על הפרטיות והחופש שלהם. (אם להם לא איכפת, מי אני שאזיז אצבע בשבילם).
גל מור הניף את דגל המאבק, ומציע להציף את נבחרי הציבור בדרישות להפיל את הצעת החוק בתאריך קרוב להצבעה (התאריך לא ידוע עדיין).
פס רחב
בתקופה האחרונה תדירות הפוסטים שלי ירדה לקרשים, הסיבה היא עומס רציני בעבודה ובלימודים.
העומס בעבודה ירד, וזה שבלימודים עומד לרדת, אז הצפי הוא שיהיו יותר פוסטים.
בכל אופן, הנה אחד קצר:
הצעת חוק בארצות הברית מציעה להגדיר מהו פס רחב, אני כבר מדמיין איזו בדיחה החוק הזה יהיה בעוד עשר שנים.
דמיינו לעצמכם שלפני עשר שנים היו מגדירים פס רחב:
פס רחב הוא חיבור של 56 קילוביט לשניה בפס היורד, ולא פחות מ33.6 קילוביט לשניה בפס העולה.
ככה בדיוק תראה הגדרה מספרית שתוגדר היום בעוד עשר שנים.
סרב ישראל
לפני כשבוע בוט ספאם פרסם באתר של FireStats פרסומות לסרב ישראל, בעקבות זאת האשמתי את בעלי האתר בפרסום בספאם.
טל זלצברג, מנהל סרב ישראל – מתנער מהספאם וטוען שמישהו מתחזה אליו ומפרסם בשמו הודעות ספאם (למה?).
אני לא בטוח שאני מאמין לזה, אבל מחמת הספק אני מושך את ההאשמה שלי שסרב ישראל מפרסמים בספאם.
במקביל, אני מעביר את כתובת הIP לטל, שיתלונן במשטרה על התחזות.
איך לבקש העלאה בארון
YNET משלבים באלגנטיות פטנט לחידוש ארונות בתוך מאמר שכותרתו היא "איך לבקש העלאה בשכר:
אין ספק שמי שכתב את המאמר לא מקבל מספיק כסף, אולי כדאי לו לישם את מה שהוא כתב.
Antenna 0.9.5-beta
Antenna הוא פרוייקט ותיק לבניה של ישומי J2ME (ג'אווה לטלפונים סלולאריים), הפרוייקט היה בתרדמת די ארוכה.
לפני כמה שנים התחלתי לתרום קוד לפרוייקט, אבל התרדמת היתה כל כך עמוקה שהשיפורים לא שוחררו.
עד עכשיו.
קיבלתי הרשאות Commit לפרוייקט לפני כחצי שנה, הכנסתי את השיפורים שלי, כשגולת הכותרת היא Preprocessor חדש ורב עוצמה, שמגיע גם כפלאג-אין לEclipse (אבל כמובן מאפשר גם הרצה מסקריפט ANT) וכן Task שמאפשר חתימה על מידלטים.
את הTask שחותם פיתחתי מזמן, ואת הPreprocessor ממש לפני כמה חודשים, במסגרת העבודה שלי בחברת Vollee.
ביום שישי שחררתי גרסא חדשה (0.9.5-beta) שכוללת את הכל.
העכביש המרקד
אחרי שרפרפתי בביקורת של נועה מנהיים על ספיידרמן 3 (איש החנטריש), הסתבר לי שספיידי מרקד ברחובות.
מגיב מספר אחד אפילו כתב "עכביש רוקד, איפה נשמע דבר כזה?", ובכן, חשבתי לעצמי – אולי יש כזה בטבע, וחיפשתי בגוגל.
זה מה שיצא:
אגב, בלי לקרוא את הפרטים המדוייקים, הביקורת שלה על ספיידרמן 3 נשמעת מאוד דומה לביקורת שלי על ספיידרמן 2 : ערמת קיטש מהבילה.
מה שמוזר, שאני די בטוח שאת ספידרמן 2 נועה שיבחה, אבל משום מה (?) לא הצלחתי למצוא את הביקורת עליו באתר.
תחנת דלק בתוך מכונית
טמקא כתבו על גו.ס.ט, מערכת הפעלה שרצה בתוך דפדפן, וכתובה בטכנולוגית פלאש.
כל הרעין נשמע לי מופרך לחלוטין, אבל החלטתי לא לרדת עליו לפני שאני אראה מה הם עשו עד כה.
ההתרשמות הראשונית היא שהם כתבו UI Toolkit לפלאש, והוא נראה טוב.
המערכת כבדה מאוד, וכמו שציפיתי מאוד מוגבלת.
היא מאפשרת הרצה של מספר משחקי פלאש, דפדוף באנטרנט בתוך חלון דפדפן (שמריץ את הדפדפן החיצוני) ומוטמע בתוך הפלאש, וכן כוללת כמה גאדג'טים.
כל העיצוב דומה מאוד לחלונות, יש תפריט התחל, מסמכים אחרונים, חלונות צפים על הדסטופ וכו'.
מה שחסר זה היכולת להריץ תוכנות חוץ מהאלו שמגיעות עם המערכת עצמה.
מבחינה טכנית, אפשר כנראה לפתור את זה לגבי תוכנות ומשחקי פלאש, אבל ביננו, כמה גיימרים באמת משחקים במשחקי פלאש, וכמה מנהלי חשבונות יסמכו על תוכנת פלאש כדי לנהל את החשבונות של המשרד?
אני חושב שכל הרעיון הוא די רע, עכשיו דברים עדיין מחזיקים את עצמם, אבל רק כי המערכת פשוטה מאוד.
ברגע שהם יתחילו להכניס אפשרות למשתמשים להריץ מה שהם רוצים (אפילו אם זה רק פלאש), היציבות של המערכת תרד פלאים. נראה אינטראקציה – זדונית או אקראית – בין תוכנות שהמשתמש מריץ לבין הסביבה.
פלאש פשוט לא נועדה לזה, אני בטוח שבמייקרוסופט ישנים טוב בלילה.
נראה לי שזה הולך להיות עוד פלופ.