אינטרנט זהב: תגלשו חמש שעות בחודש

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

גוגל-מובייל

גוגלבוט חדש נצפה במחוזותינו, שעונה לשם:

Nokia6820/2.0 (4.83) Profile/MIDP-1.0 Configuration/CLDC-1.0 (compatible; Googlebot-Mobile/2.1; +http://www.google.com/bot.htm l)

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

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

N המלכות

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

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


אינטרנט זהב ומלחמתה במשתפי הקבצים

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

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

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

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

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

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

FireStats 0.9- Beta

אחרי הרבה ימים ולילות, שחררתי בשעה טובה את גרסאת הבטא הראשונה של FireStats.

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

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

כמו תמיד, כל הפרטים בדף הבית של FireStats.

מאיפה באות בעיות אבטחה בתוכנה?

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

בוודאי שכמות בעיות האבטחה שמתגלות קשורה לכמות השימוש בקוד, אבל זה לא הגורם המרכזי. באיזו שהיא רמה, זה כבר לא משנה אם משתמשים בקוד 10 מיליון אנשים 100 מיליון.
מה שיותר משפיע זה:
1. היציבות של הקוד: בעית אבטחה = באג, לקוד שלא משתנה לא נכנסים באגים חדשים, לכן כמות בעיות האבטחה (הקיימות, בלי קשר אם התגלו או לא) יורדת.
2. התכנון של המערכת:
במערכת עם תכנון לקוי, יש לך יותר בעיות אבטחה מפונקציות.
3. האיכות של הקוד.
4. כמות הביקורת שהקוד מקבל.

אם לתת דוגמאות:
חלונות XP בת 6, ועדיין מתגלות בה בעיות אבטחה.
הבעיות נובעות מאיכות קוד נמוכה ומבעיות תכנון, והן ממשיכות להתגלות למרות היציבות של המערכת (רובם המכריע של השינויים הם תיקוני באגים, לא תכונות חדשות).

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

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

Counterize2 – עדכון

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

אפשר להוריד אותו כאן.

כתוב-לי

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

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

קוד פתוח

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

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

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

כיף לקבל אימיילים מאנשים שמשתמשים בקוד שלי, גם אם אני בעצמי לא משתמש בו.

שרות

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

זה שרות.