GPL במבחן

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

הסיפור המלא, באנגלית, נמצא פה.

FireStats 0.91 – Beta

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

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

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 או תוכנת זיפ אחרת, הקוד בפנים).


טלאספאם

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

בסוף נשארתי עם מספר SMS ביד.

מפעל הפייס.
כולרע.

מה לעזאזל (2)

הדיילי WTF מוציא עוד סדרה מצויינת של תצלומי מסך איכותיים, אחרי הקודמת מלפני מספר שבועות:

הנה כמה נבחרים:
תמחק היא אמרה לי, תמחק.
delete?

אמרתי לך שאני לא תומך באנגלית, מה אתה בוחר את זה שוב ושוב?
אתה לא מבין אנגלית?

זהירות, כלכל בחירתך בחוכמה!

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

את המחשב שמריץ את האתר הזה אני מארח אצלי בסלון. כבר בערך שנתיים.
אני מחובר דרך אינטרנט זהב מ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 לעומת זאת יציב לא פחות, וובכל זאת מתגלות בו בעיות אבטחה על ימין ועל שמאל.
הקוד של מוצרים סגורים מקבל מעט מאוד ביקורת.
של מוצרים פתוחים מקבל הרבה, אפילו ההאקרים שמנסים למצוא בו חורים עושים לו שרות.
זה לא אומר שאי אפשר לכתוב קוד פתוח רע, אפשר גם אפשר, אבל ההתכנסות שלו לכיוון קוד טוב ונקי היא הרבה יותר מהירה מאשר במוצרי קוד סגור, ולו בגלל שהמוטיבציות של המפתחים שונות לגמרי:
קוד סגור: "אני רוצה לסיים את הפיצ'ר המזויין, שלא היה בתוכנית המקורית ולכן ישתלב כמו פיל בחנות חרסינה בקוד שלי, שפעם היה יפה"
קוד פתוח: "מה? הפיצ'ר הזה לא היה בתכנון, אני לא עושה אותו. אם אתם נורא רוצים תפצלו את הפרוייקט ותעשו את זה בעצמכם, בהצלחה, ואל תבואו אלי בוכים אחר כך".