רבות כבר דובר, אם בבלוג פה ואם במקומות אחרים, על העיוותים השונים שנוצרים במערכת המשפטית. אם זה חברות המדיה העצומות שתובעות משתמשים קטנים, אם זה הפרות פטנטים לכאורה שבהן חברות ענק מאיימות על חברות קטנטנות על הפרת פטנטים שהם טריויאלים לחלוטין, ואם זה חברות קטנות שחברות ענק מפרות פטנטים שלהם.
בכל המקרים הבעיה היא, בעצם, אחת. לאחד הצדדים יש, באופן משמעותי, יותר משאבים לנהל את המאבק המשפטי מאשר לצד האחר. כתוצאה מכך תוצאת המאבק נקבעת לא על סמך “מי צודק”, אלא על סמך “מה ייעשה לי הכי פחות נזק”. בפועל, מערכת הצדק לא עושה את עבודתה, לא בגלל שהמערכת לא יכולה לעשות את עבודתה, אלא בגלל שהפעלת המערכת עולה יותר מידי כסף לצד אחד, אבל כמות שהיא נסבלת של כסף לצד השני. כתוצאה מכך, הנטיה היא לא להגיע אל המערכת בכלל, אלא שהצד החלש יתפשר בפתרון שהוא יותר זול, אף כי פחות טוב.
לפני כמה זמן שאל אותי חבר מדוע, לדעתי, המצב נהייה כך. יש תמיד את ההרגשה שזהו דבר שמאפיין את הכמה עשורים האחרונים. לפני מאתיים ושלוש מאות שנה לא זה היה המצב, והמערכת המשפטית, פחות או יותר, עבדה. לדעתי, לפני מאה שנה נדיר היה למצוא מצב שבו מישהו שהוא עני היה צריך להתגונן מפני מישהו עשיר. למעט במשפט הפלילי, היה נדיר למצוא מצב שלמישהו עשיר ולמישהו עני יש מספיק במשותף כדי שיהיה להם בכלל סכסוך. לעניים לא היתה דרך לקחת במרמה דברים של העשירים, ולעניים לא היה שום דבר שהעשירים רצו.
אלא שהעברת הדגשים לקניין רוחני, רשת האינטרנט שהקטינה את העולם לכל צורך למעט משפטי ושאר השינויים של השנים האחרונות שינו את המצב הזה. אם עולה פחות משקל לשכפל דיסק ששייך למישהו עם המון כסף, פתאום יש עניין.
ועד כאן בסך הכל תיארנו את הבעיה. אני חושב, אבל, שיכול להיות שיש לה פתרון. לא סביר שאפשר יהיה להעביר אותו, אבל יכול להיות שהוא ממש יפתור את הבעיה, בלי שנצטרך לשנות את חוקי הפטנטים, זכויות היוצרים, סיכסוכי העבודה וכל שאר הדינים.
בואו נסתכל על מה קורה עם הצד התובע הוא הגוף עם המשאבים הכלכליים הכי רבים באיזור. קוראים לו “המדינה”. לתהליך תביעה כזה קוראים “משפט פלילי”. על פניו היינו מצפים שכאשר המדינה תובעת נרקומן על פריצה לעסק שאותה הבעיה תבוא לידי ביטוי גם שם. אלא ששם עשו משהו מעניין. אם הנתבע בוחר לעשות כן, הוא יכול לבקש שהתובע, משמע המדינה, יממן לו את הוצאות ההגנה המשפטית.
השאלה היא אם לא ניתן לבצע תיקון דומה גם לדין האזרחי. אם גוף תובע גוף שני, ולאחד מהם אמצעים אשר הינם באופן משמעותי גדולים מאשר לשני, הרי שזה בעל המשאבים הגדולים יותר צריך לשאת לפחות בחלק מהוצאות הגוף השני.
לפני שבוחנים את ההצעה צריך להבין על מה ההצעה הזו אינה משפיעה. ההצעה אינה משפיעה על מצבים שבהם שני הגופים הינם בעלי יכולות כלכליות דומות. לדוגמא:
– סכסוכי שכנים בירוחם
– סכסוכי שכנים בהרצליה פיתוח
– הפרות חוזה בין חברות בגדלים דומים
– סכסוכי קניין רוחני בין גופים בגדלים דומים
למשל, מיקרים כמו התביעה של Sun נגד מיקרוסופט לא נכללים במצב המתואר.
אז מה כן? צריך לעבוד פה על הפרטים, אבל ברמת העקרון צריך שגוף גדול שתובע גוף קטן ייקח בחשבון שהוא ייצטרך לשאת גם בהוצאות ההגנה. בפירוש הרעיון פה הוא למנוע תביעות על סכומים שבהם עלות ההגנה המשפטית עומדת להיות גדולה מסכום התביעה (שזה האמצעי שבאמצעותו מנסים לגרום לכם להתפשר). צריך לחשוב על סייגים, כגון “האם כל סכום הגנה, או רק סכומים סבירים”, וכו.
השאלה המסובכת יותר היא מה קורה כאשר גוף קטן מרגיש נפגע מהתנהגותו של גוף גדול. מצד אחד, המצב הנוכחי הוא שהגופים הגדולים יכולים לעשות כמעט ככל העולה על רוחם, מכיוון שאין שום סיכוי שאני (או לינגנו), לדוגמא, אצליח לתבוע את Sun על הפרת פטנט. זהו מצב לא בריא. מנגד, לא ייתכן שרק על שום כך שאני טוען ש-Sun מפירה פטנט שלי Sun תצטרך להוציא את עלויות התביעה. מנגנון של בוררות מקדימה עשוי להיות פתרון גם לבעיה הזו.
כמובן שזה לא יעבור. מי שמרוויח הכי הרבה מהמצב הנוכחי הינם אילו שהכסף מצוי בידם, שהם גם אילו שהכי משפיעים על המחוקקים. עדיין, אפשר לחלום.
שחר
שנה: 2005
האתר של ynet למטה
בנושא פחות רציני, האתר של YNet כרגע למטה. או שלא עונה, או שמחזיר שגיאה מספר 500 (Internal Error).
שחר
באמת לא ידענו שזה יהיה המצב?
בכנס RSA האחרון זוג חוקרים, שאחד מהם הוצג כחובב לינוקס מושבע, הציגו סקר חדש. הוצג בו, איזו הפתעה, שלחלונות יש פחות פגיעויות אבטחת מידע מאשר ללינוקס.
לפני כמה ימים התפרסם המחקר עצמו. ירימו ידיהם, בבקשה, האנשים שיופתעו לגלות שהמחקר מומן ע”י מיקרוסופט. אפילו חובב הלינוקס המושבע לא כל כך מושבע.
עכשיו בואו נעשה בדיקה אמיתית של “מה קרה פה”.
האם החוקרים עיוותו את העובדות? לא סביר. למעשה, הם חשפו לחלוטין את שיטת הבדיקה שלהם. כל אחד מוזמן לנסות שלחזר את שיטת איסוף הנתונים ולמצוא את אותן התוצאות.
האם מיקרוסופט התערבה בתוצאות? סביר להניח שלא.
האם לחוקרים ניתנה יד חופשית במחקר? כן, למעט העובדה ששיטת המחקר נקבעה לפני ההתחייבות לתשלום. זה מופיע בצורה מפורשת בראיון איתם בקישור למעלה. זאת, למעשה, הנקודה המרכזית.
המחקר הזה, כמו קודמיו, אינו נעשה לפתע חסר משמעות בגלל שמיקרוסופט מימנה אותו. המחקר הזה חסר משמעות בגלל שמטריקות הבדיקה הן חסרות משמעות. העובדה שמיקרוסופט מימנה אותו קשורה לא לתוצאות שלו, אלא לזה שהוא נעשה בכלל. ללא המימון של מיקרוסופט, אף אחד לא היה בודק את המדדים האילו כדי להשוות בין מערכות הפעלה.
השוואה כמותית של בעיות אבטחה הינה חסרת כל משמעות פרקטית. השוואה משמעותית צריכה לקחת חומרה אבסולוטית, כמה רחב וכמה עמוק הידע על הבעיה, עד כמה קל לבצע את עדכון האבטחה, ואפילו מה המוניטין של מוציא העדכונים לגבי הסיכוי שהמערכת תשבר בגלל העדכון. כל הנ”ל משפיעים על זמן החשיפה, וללא מדידה של כל הנ”ל, אין משמעות לבדיקה.
דוגמאות:
חומרה אבסולוטית – לא מספיק להשוות בין החומרה שהספקים מייחסים לבעיה. צריך גם להשוות על פי מדדים יותר אוביקטיבים. למשל, בעיה שפירושה הדבקה של המערכת ללא כל פעולה של המשתמש, בעיה שפירושה הדבקה של המערכת אחרי פעולה תמימה של המשתמש, האם יש אזהרה, עד כמה היא רלוונטית, ועד כמה היא נפוצה בהקשרים אחרים, שבהם צריך להחליט אחרת מאיך שצריך להחליט פה.
כמה רחב וכמה עמוק הידע – ברור שמרגע שבעיה היא פומבית אז הסיכוי להתקפה עולה. מה שאנשים חייבים להבין הוא שהסיכוי להתקפה טרם היות הבעיה פומבית אינו אפס. כמה זמן היתה הבעיה ידועה למדווח טרם הדיווח, כמה זמן היתה הבעיה ידועה לחברה, כמה אנשים מחוץ לחברה ידעו על הבעיה טרם הפתרון, וכו.
עד כמה קל לבצע את עדכון האבטחה – אם עדכון דורש שמישהו יזכור להכנס למערכת, או שהוא דורש הפעלה מחדש (ובכך השבתה של המערכת לכמה דקות) הסיכוי שיתקינו אותו בזמן סביר יורד.
מוניטין האמינות – על פניו השיקול הכי מוזר. מצד שני, אם כל עדכון אבטחה מצריך הרמת מערכת בדיקה, הרצת העדכון במשך כמה ימים טרם התקנה על המערכת האמיתית, ולהמתין לשמוע איך האינטרנט מגיב לעדכון, הרי שהזמן עד שהעדכון יותקן בפועל עולה, ובהתאם גם זמן הפגיעות הממוצע.
לקיחת חלק מהגורמים באופן מנותק הינה מטעה. בגלל זה, אין טעם להתעמק במחקרים ממומנים. לא על אבטחה, לא על TCO, ולא על אף גורם אחר.
שחר
יש חבילה שלי בתוך Debian
נכון ללפני כמה באג מספר 296284 במערכת הבאגים של דביאן נסגר. פירושו של דבר הוא שעבדכם הנאמן הינו, באופן פורמלי, מתחזק של חבילה בפרוייקט דביאן.
החל ממחזור העדכונים הקרוב (כנראה – מחר בבוקר) כל מי שמריץ מערכת דביאן Sid יוכל להתקין את rsyncrypto פשוט על ידי זה שיכתוב “apt-get install rsyncrypto”.
השלב הבא – להעשות למפתח דביאן מהשורה… ![]()
שחר
אפל מאוד רוצים למכור
מאוד.
בגלל זה החברה שמוכרת בשבילהם (apple-center) לא מוכנה להתחייב על זמני אספקה של mac-mini. נכון, שמעתם.
הם רוצים שאתם תתחייבו על התשלום, ואז הם ייקחו מעל חודש, כנראה חודשיים, כדי לקבל את המכשיר בפועל, ואז להניח שהעסקה עדיין רלוונטית מבחינתכם, לא משנה מה שער הדולר, מצב חשבון הבנק שלכם, או כל שיקול אחר.
אני אפילו לא מדבר על זה שדולר מבחינתם זה על פי “שער המחאות הגבוה”.
האמת, לא נראה לי שאני אקנה בתנאים האילו.
שחר
בעקבות ההשוואה החדשה של כמות הבעיות במערכות
רציתי להפנות אתכם לפוסט שכתבתי לפני כמעט שנה.
שחר
מתנת יום הולדת?
אתמול, לראשונה מאז שהתחלתי לעבוד על PgOleDb, קיבלתי תרומת קוד ממישהו שאיננו אני.
אז נכון, נאלצתי לדחות אותה, אבל זה עדיין מראה שהפרוייקט עבר רמה קריטית מסויימת.
יום הולדת שמח לי ![]()
שחר
נ.ב.
הגעתי לגיל שבו מתחילים לתת את הגיל בבסיס הקסה-דצימל (16). לכל השואלים, אני בן 20.
ש.
דבר גדול נפל!
יריב, לאחר כחצי שנה, ממש תיקן את ה-RSS!!
לא יאומן!
ותודה לדוד שהפנה את תשומת ליבי לנושא.
דרך אגב, במקרה או שלא במקרה, הדבר קרה בתזמון מדהים. בדיוק הגעתי לנקודה שבה צריך להחליט אם להשקיע עוד 100 שקל במנוי פרו לעוד שנה. בגלל נושא ה-RSS כבר הייתי משוכנע שאני אצטרך לעבור. אפילו התחלתי לחפש אלטרנטיבות, אבל:
– הבלוגים של תפוז נראים פחות מסודרים, פחות תומכים בדפדפנים אלטרנטיביים.
– לא רציתי לפנות ללינמגזין, בעיקר כי אני רוצה חופש לדבר פה גם על דברים שאינם קשורים למחשבים וללינוקס.
– לא מצאתי שום דבר אחר שפונה לקהל ישראלי, והינו סביר מבחינת הניהול.
קשה, קשה.
אם ה-RSS היה ממשיך, הייתי מברר עם מנהלי לינמגזין, אבל כמו שהדברים עומדים כרגע נראה שנפתרה הבעיה. בשעה טובה ומוצלחת.
שחר
אני חייב לכם תשובה
הפוסט היום יהיה לא ברור למי שלא הכין שעורי בית. מכיוון שמדובר בתחום שאני עצמי נחשפתי אליו רק בשבוע האחרון, אני מרשה לעצמי לשלוח אתכם לקרוא קצת במקורות שאני מפנה אליהם. למי שאין כוח אני אתן תמצית: אם אתם לא אוהבים במיוחד חידות – לא נורא. אם כן, תשקיעו.
לפני כמה ימים שאלתי פה האם זה חדשני? ובכן, יש לי תשובה. התשובה היא “כן ולא”.
רקע: החידה נקראת “Instant insanity”, והרעיון הוא שיש ארבע קוביות שכל אחת מהפאות בהן צבועה באחד מארבעה צבעים. המטרה היא לסדר את הפיאות כך שייווצרו ארבעה צדדים ארוכים, כך שבכל צד לא יופיע צבע יותר מפעם אחת.
הקישור שהבאתי נתן דרך אנליטית להקטין משמעותית את מרחב הבעיה, ובכך למצוא פתרון בצורה מהירה. אני תהיתי האם הדרך מוצאת פתרון תמיד.
בפרט, תהיתי אם הדרך מוצאת פתרון תמיד בגלל שהצלחתי להגיע לסידורי צבעים שהם פתירים מחד, אך הדרך המוצעת לא מצאה להם פתרון מאידך. תהיתי, האם זה חדשני.
ראשית, הסידורים שמצאתי. אני אתן את הסידור הכי פשוט:
קוביה 1 – כל הפאות כחולות
קוביה 2 – כל הפאות ירוקות
קוביה 3 – כל הפאות אדומות
קוביה 4 – כל הפאות צהובות
מצד אחד, אם מפעילים את שיטת הפתרון על הקוביות הנ”ל מקבלים שלוש קשתות שיוצאות ונכנסות לאותה צומת עבור כל אחת מהצמתים. מכיוון שאין אף קשת שמחברת אף שני צמתים, ברור שלא ניתן לייצר מעגל באורך ארבע, ולא כל שכן מעגל באורך ארבע שמכיל קוביות שונות על כל קשת. בתיאוריה היינו אמורים להבין, על כן, שאין פתרון לקוביות.
מצד שני, תתקשו מאוד למצוא סידור של הקוביות המתוארות שאינו פתרון.
אז, האם זה חדשני?
תשובה: כן ולא.
כן – הפתרון כפי שהוא מובא בקישורים שהבאתי, כמו גם הפתרון שתקבלו מהרבה חובבי חידות שתשאלו, לא מצליח למצוא פתרון לבעיה המתוארת. במובן זה, אפשר להגיד שהוצאתי מתהום הנשייה מקרה קצה שקצת נשכח מהלב.
לא – הפתרון האמיתי, זה שהוכח מתמטית, מכסה גם את המקרה שהבאתי. במובן זה ניתן להגיד שאני לא הראשון שעלה על הבעיה. הפתרון המלא מתואר (בקובץ powerpoint, אבל נפתח עם Open Office בקלות) כאן. בקיצור – לא חייבים למצוא מעגל אחד שמכסה את כל הצמתים. מותר למצוא כמה מעגלים שאתם רוצים, ובתנאי שלא משתמשים ביותר מארבע קשתות. במקרה שאני מתאר יש ארבע מעגלים ל”קדימה אחורה” וארבעה ל-“ימין שמאל”, והבעיה מוכרזת כפתורה.
מתוך קצת הירהורי לאחר מעשה, השאלה היא פה אורכי השרשרת. אם נסתכל על חידה כלשהי מסוג זה, ובפרט על הפתרון שלה, הרי שניתן לייצר שרשרת מהצבעים. ניקח את הצבע בקוביה הראשונה מקדימה, ונשאל מהו הצבע מאחורה על אותה הקוביה. עכשיו נחפש את אותו הצבע מקדימה ונשאל איזה צבע יש מאחוריו. נחזור על התהליך עד שנגיע חזרה לצבע הראשון. כל קוביה שסרקנו כך הינה קשת בגרף הפתרונות. כל הדוגמאות הראשונות שציינתי לגבי איך מיישמים את הפתרון האנליטי מניחות, וכאן השגיאה שלהן, שהתהליך הזה יכלול את כל הקוביות, או שהקשתות משלימות מעגל אחרי ארבע קשתות. ברור לחלוטין שבדוגמא הנגדית שנתתי זה לא המצב.
בפתרון המלא אנחנו בעצם בוחרים את אחת הקוביות שלא נכללו במעגל הראשון, וחוזרים על התהליך איתן. וכן הלאה וכן הלאה, עד שכיסינו את כל הקוביות.
שחר
מכתב אמיתי
זהו מכתב ששלחתי לפני כמה דקות. אני חושב שהוא דיי מדבר בעד עצמו.
| Hello Shachar ,
| Hope you are well.. it has been a while since we last have communicated ;-))
|
|
Yes, it was.
| Just following up with you to see whether all is in order with regards to
| Compuware software ..
|
Nothing new has transpired. Almost nothing new, that is.
A while back I was stuck while developing an open source project, with an unexplained access violation. I got a demo from you, which totally and utterly failed to spot the problem. I decided that much though I like the idea behind the Compuware tools, it is not worth the money.
Since then I managed to find out the cause of the problem that haunted me back then. It turns out to be a bug in ATL. The details are available at http://gborg.postgresql.org/pipermail/oledb-dev/2004-November/000155.html.
Quite frankly, I expected bounds checker to be able to tell me more about the bug. If it told me “you tried to access memory area X, which was allocated here and freed here”, the entire search would have been so much shorter. I realize that this is not a technically simple task to achieve, but as things stand Bounds Checker failed the usefulness test as far as I’m concerned, and so I don’t think I will be acquiring it. I should point out that open source project “valgrind” does correctly detect such errors and give useful output, and without performing any compile time instrumentation. I would have used it here, except it only has a Linux version. Being open source, however, there is nothing stopping you from applying the valgrind technique for Windows.
Here is an example of a program exhibiting the precise same type of error as happened in ATL, which caused the access violation we were trying to debug using bounds checker.
#include
#include
int main()
{
const char **a;
a=malloc(sizeof(*a));
*a="Hello";
free(a);
printf("%sn", *a);
return 0;
}
Running with valgrind:
==17356== Memcheck, a memory error detector for x86-linux.
==17356== Copyright (C) 2002-2005, and GNU GPL'd, by Julian Seward et al.
==17356== Using valgrind-2.4.0.rc3, a program supervision framework for x86-linux.
==17356== Copyright (C) 2000-2005, and GNU GPL'd, by Julian Seward et al.
==17356== For more details, rerun with: -v
==17356==
==17356== Invalid read of size 4
==17356== at 0x804842A: main (valgrindtest.c:12)
==17356== Address 0x1BA58028 is 0 bytes inside a block of size 4 free'd
==17356== at 0x1B904B04: free (vg_replace_malloc.c:152)
==17356== by 0x8048426: main (valgrindtest.c:11)
Hello
==17356==
==17356== ERROR SUMMARY: 1 errors from 1 contexts (suppressed: 13 from 1)
==17356== malloc/free: in use at exit: 0 bytes in 0 blocks.
==17356== malloc/free: 1 allocs, 1 frees, 4 bytes allocated.
==17356== For counts of detected errors, rerun with: -v
==17356== No malloc'd blocks no leaks are possible.
| Pls let me know if I can be of any assistance to you concerning our products
| at this time
|
|
Not at this time, no. As you can see, your open source competition is doing a better job at it than you.
| Always at your service!
| Best regards ,
|
|
Shachar
Shachar Shemesh
Lingnu Open Source Consulting ltd.
Have you backed up today’s work? http://www.lingnu.com/backup.html
Compuware הינה, למיטב ידיעתי, החברה המובילה בכלים למטרות עזרה לפיתוח. הם מייצרים את SoftICE המיתולוגי. הכלים שלהם נחשבים מהמובילים לצרכי בדיקות מהסוג הזה. כאשר נתקלתי בבעיה במצויינת במכתב, זה היה אף טבעי לבדוק את הפתרונות שלהם כדרך לפתרון הבעיה.
לפני הכל, אני חייב לציין לטובה את היחס המצויין שקיבלתי מהם. קיבלתי Trial מוגבל בזמן, אבל חוץ מזה פעיל לחלוטין. כאשר נתקלתי בבעיות, צוות התמיכה שלהם השתדל בצורה מאוד מאוד מרשימה יחסית למישהו שהוא (עדיין) לא לקוח משלם. הצינים יגידו שבגלל שאני עוד לא לקוח משלם הם השתדלו, אבל באמת אני מאמין שמדובר פה ביחס מייצג. ללא ספק, יחסית לשירות תמיכה שאני מכיר בתוכנות קנייניות אחרות, קיבלתי פה שירות שהיה ברמה מאוד גבוהה.
אבל כאשר מסתכלים על התוצאה הסופית אין אלא להגיע למסקנה שזה לא מספיק. אני משוכנע שיש דברים ש-Bounds Checker עושה טוב, ואף יותר טוב מ-Valgrind. חלקית אני יודע את זה בגלל שעבדתי איתו בעבר. זו גם היתה הסיבה שפניתי אליהם הפעם.
מסתבר, אבל, שהכלי לא מסוגל להתמודד עם “גישה לזכרון שהוחזר”. התשובה שקיבלתי מהתמיכה שלהם – “זו בעיה לא נתמכת”. אם לא היה ניתן לגלות את הבעיה בכלל, הייתי מבין. עובדה, אבל, ש-Valgrind כן מסוגל לגלות אותה, ואף לתת מידע שימושי לצורך פתרון של הבעיה.
קחו את זה בתור נקודה למחשבה לגבי open source ו-market leaders.
שחר