כרטיס מסך!

בסוף הזמנתי, לפי ההמלצה של ארסטכניקה (תודה לרוני על הלינק) מסך BenQ 24 LCD G2400W (הגיע הזמן לשדרג את ה19" CRT שלי) וכרטיס מסךASUS EN8800GT GeForce .8800GT 512MB.

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

כרטיס מסך

אם הייתם קונים היום כרטיס מסך למכונת משחקים, איזה כרטיס זה היה?
מה הכי כדאי היום?

openid ושאר ירקות

לפני כחצי שנה כתבתי לעצמי אימייל TODO, שכותרתו: openid.
openid הוא פרוטוקול מבוזר לזהות מקוונת, או במילים אחרות: דרך לשמור את הזהות שלהם בשרת אחד, ולא ב950 אלף.
עם openid, הזהות שלהם היא url, שמאפשר זיהוי נוח שלכם בשרת לבחירתכם, בלי למסור את הסיסמא לשרת שרוצה לזהות אתכם.

הסיפור הוא שנתקלתי באתר או שניים שדרשו כתובת openid, ולא ממש התחשק לי לפתוח זהות openid באתר צד שלישי, הרי כל הנקודה בopenid למול שרותים כמו פספורט של מייקרוסופט (זצ"ל) היא שopenid הוא מבוזר ולא תלוי בספק מסויים.
חוץ מזה, אני מעדיף לשמור את הזהות שלי קרובה לבית – או אפילו.. בבית:
את שרת הדואר, שרת הJabber ועכשיו שרת הopenid אני מריץ מהמחשב בסלון.
כמו הרבה אימיילי TODO אצלי בתיבה, האימייל הזה נשכח, עד שקראתי פוסט על openid שכתב ניצן.

יש כל מני שרתי openid, מסובכים יותר או פחות.
אחד הפשוטים שבהם הוא phpMyID, שמממש פחות או יותר בדיוק את מה שאני צריך:
שרת openid למשתמש בודד (אפשר כמה משתמשים אם רוצים, וזה אפילו קל).
ההגדרה שלו כוללת עריכת קובץ PHP, הוספה של שם משתמש וגיבוב md5 של הסיסמא ועוד כמה דברים, וזהו.
יותר קשה ממה שזה נשמע, ככה נראות השורות שצריך לערוך:
[code]
'auth_username' => 'test',
'auth_password' => 'e8358914a32e1ce3c62836db4babaa01'
[/code]

הקישקוש בסיסמא הוא גיבוב md5 של username:phpMyID:password, יש הרבה דרכים לחשב אותו, למשל:
[code]
echo -n 'username:phpMyID:password' | openssl md5
echo -n 'username:phpMyID:password' | md5sum
[/code]

(אני בטוח שמשתמשי חלונות ימצאו דרך לחשב md5 בחלונות).

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

אז עכשיו כתובת הopenid שלי היא http://omry.yadan.net , כתובת חביבה שאפילו אני אזכור ;).

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

ווירג'ין: נדפוק את המשתמשים שלנו. קורי דוקטורו: לא אותי.

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

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

השדרוגים הם מהשטן

זוכרים שהזמנתי כונן קשיח נוסף וכונן DVD חלופי במקום זה ששבק?
שניהם היו כמובן בממשק SATA, והתסבר שהמחשב שאליו הם מיועדים סבל ממחסור חמור בערוצי SATA פנויים, כל שני הערוצים שעל לוח האם שלו היו תפוסים.
בינתיים התקנתי את הדיסק במחשב השני, והזמנתי כרטיס בקר SATA שמוסיף עוד ארבעה ערוצי SATA. אתמול הוא הגיע לשמחתי, וכשחזרתי מהעבודה התיישבתי להתקין את הבקר, את הכונן הקשיח ואת הכונן DVD.
בהתחלה פשוט התקנתי את הכל, הדלקתי את המחשב וקיוויתי לטוב – תקוות שהתבדו מהר מאוד: המחשב נתקע בBOOT, לפני שהתחיל להעלות את GRUB (טוען הBOOT של לינוקס). התחלתי לשחק קצת בחיבורים וגיליתי שהמחשב לא אוהב שאני מחבר את הDVD לבקר הSATA החדש, ולכן חיברתי אותו ישירות ללוח האם ואת אחד משני הכוננים הקשיחים הישנים חיברתי לבקר הSATA. אחרי שהמחשב הצליח להכנס לGRUB כאשר כל ארבעת הכוננים מחוברים (שני הרדיסקים ישנים, אחד חדש וכונן DVD חדש), הקרנל התחיל לעלות ונתקע כמובן כשחיפש את מערכת הקבצים במחיצת השורש (/)
חשבתי לעצמי, בטח הוא לא אוהב את השינויים, וניתקתי הכל כדי לוודא שהוא עובד במצב שבו הוא היה קודם.
במפתיע, הוא עדיין סרב לעלות כשלא מצא את מערכת הקבצים של /.
עכשיו כבר התחלתי לנסות להעריך כמה זמן יקח לי להתקין את הכל מחדש ולהביא את העסק למצב עובד (זה שרת הדואר שלי, ולא רציתי להשאיר אותו לא עובד), לא אהבתי את ההערכה.
החלטתי לנסות לעלות מדיסק של Knoppix 4.0 ישן שהיה לי, אבל הוא טען שהביוס שלי דפוק במיוחד וסירב לעלות. חשבתי לעצמי שאולי הדיסק KNOPPIX דפוק במיוחד וצרבתי את Knoppix 5.1, שהסכים עם הדיסק הקודם בדיאגנוזה וסרב גם הוא לעלות.
שלפתי מהמחסן את אחד מכונני הDVD הישנים שלי, שהתעטר בכיתוב "אולי דפוק, 22/2/2008", ניסיתי אותו ומשם דווקא Knoppix הסכים לעלות (לא שכחתי לסמן את הכונן בכיתוב "מספיק טוב בשביל קנופיקס, 14/4/2008") – בשיטוט במחשב מתוך הקנופיקס שמתי לב שהכונן החדש התיישב לו על SDA ודחף את הכונן הראשון שהיה בSDA אל SDC. זה גרם לי לחשוב שאולי זו הבעיה.
ביצעתי BOOT רגיל אל GRUB, ופתאום שמתי לב שהשורה של הקרנל נראית ככה:
[code]
kernel /boot/vmlinuz-2.6.24-1-686 root=/dev/hde1 ro
[/code]
שורה שאופיינית לטעינת הקרנל מדיסק ATA רגיל ולא מSATA (שמופיע תחת sdx ולא תחת hdx).
התחלתי לנחש ולנסות כל מני אפשרויות ובסוף הצלחתי לבצע BOOT כאשר השורש בsdb2, סוף סוף קצת התקדמות!
חיברתי את כל הכוננים, ניחשתי וניחשתי שוב עד שהצלחתי עם sdc2, ונכנסתי למערכת.
לא ממה התחשק לי לשנות את הfstab ואת קובץ התפריט של GRUB לתצורה החדשה, כי ידעתי שברגע שאני אשנה משהו בחומרה הכל ישבר שוב.
נכנסתי ל#debian@irc.freenode.net, ושאלתי איך מונעים מהקרנל לשנות את שמות הכוננים כל פעם שמשהו משתנה.
ענו לי שאפשר, אבל זה קשה, ועדיף בכלל לעגן מחיצות לפי הUUID, ולא לפי שם הכונן.
UUID למחיצה? לא ידעתי שיש!
מסתבר שזה פשוט במיוחד, החל מגרסא מסויימת של הקרנל, יש בdev ספריות חדשות:
[code]
/dev/disk/by-id/
/dev/disk/by-label/
/dev/disk/by-path/
/dev/disk/by-uuid/
[/code]

הספריה שמעניינת אותנו במקרה הזה היא /dev/disk/by-uuid/ שמכילה קבצים שנראים כך:
[code]
0427f3ec-17e1-4cd1-b195-7f5bdf861a28 -> ../../sdc3
3f7f2c77-88af-4e9a-a139-ba95900e0354 -> ../../sdb1
[/code]

אלו לינקים סימבוליים שנוצרים אוטומטית, ומאפשרים גישה אל המחיצה בצורה שאינה תלויה בשם של הכונן עליו היא יושבת.
המזהה היחודי (UUID) של המחיצה לא משתנה עד שלא יוצרים מחדש את המחיצה (או אולי מפרמטים אותה, אני לא בטוח).
כמובן שאפשר להשתמש בו גם מתוך קובץ התפריט של grub:
[code]
kernel /boot/vmlinuz-2.6.24-1-686 root=/dev/disk/by-uuid/8397dc08-be26-491d-9a06-c3fc93303d82 ro
[/code]

אחרי כל זה, הכל עובד שוב, הנה נשרף לו ערב שיכול היה לשמש אותי לדברים מועילים יותר, אבל למדתי כמה דברים.

אגב, לדעתי מה שגרם לכל הסיפור הזה היה קודם כל שדרוג שביצעתי לקרנל דרך apt-get לפני מספר שבועות, שקילקל את menu.lst של GRUB.
בגלל זה גם כשניתקתי את הכל וחזרתי למצב הראשוני עדיין לא הצלחתי לבצע BOOT.
המסקנה שלי היא שצריך לבדוק טוב טוב את menu.lst אחרי שדרוג של הקרנל (אם אני אגיד את זה בקול רם אולי אני אזכור את זה בפעם הבאה!).
בנוסף, כדאי להשתמש בUUID ולא בשם הדיסק כשמעגנים מחיצות.

לבסוף, אני גאה לציין שהמחשב הסלוני שלי, שמשמש אותי כשרת דואר וכמכונת ווידאו סלונית שודרג בהצלחה ועכשיו יש לו נפח איחסון של 200+200+500=900GB.
האח, הידד.

כוננים קשיחים, מחיצות ומערכות קבצים

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

הכונן הקשיח
בראשית ברא הענק הכחול כונן קשיח בנפח של 5MB, מה שנשמע קצת מצחיק היום אבל די מדהים בהנתן שזה היה ב1956.
הכונן נראה פחות או יותר כמו ערמת תקליטים: 50 פלאטות שמסתובבות ב1200 סיבובים לדקה, ו50 ראשים קוראים מהדיסקים.
די איטי במונחים של היום (דיסקים היום מסתובבים ב7200 ואפילו 10000 סיבובים לדקה) אבל אם חושבים על זה, מבינים שהשיפור במהירות הסיבוב בחמישים השנה שעברו מאז שהדיסק הזה יוצר הוא מינורי לחלוטין.
למעשה, הדיסקים של היום דומים מאוד לדיסק הזה, אם לא בגודל או במחיר אז לפחות בעקרונות.
הרעיון של ראש שקורא וכותב על דיסק שמסתובב במהירות נשאר איתנו עד היום.
עכשיו, איך בדיוק ניגשים למידע שמצוי במקום כלשהו על דיסק קשיח כזה?
אחת הדרכים היא לחלק כל פלטה על ידי מעגלים ברדיוסים הולכים וגדלים שמחלקים את הפלטה לכמה צילינדרים, ועל כן נקראים צילינדרים או טראקים (מסלולים).
כל צילינדר כזה מחולק לכמה בלוקים או סקטורים. ובאמצעות שלשה של ראש,צילינדר וסקטור אפשר למצוא כל נקודה בדיסק הקשיח.
די מסורבל, אבל ככה זה עבד במשך די הרבה זמן.
כמובן שתוכנות שרוצות לכתוב או לקרוא מהדיסק לא צריכות לדעת לדעת לחשב איפה המידע נמצא על סמך מספר הראשים או הצילינדרים בדיסק – זה התפקיד של הדרייבר שמכיר את החומרה שלו באופן אישי, ואחראי לספק לתוכנות שלמעלה ממשק יותר נוח ואחיד אל הדיסק, שדימו את הדיסק למערך רציף של בתים.
אפשר לנחש שהדריברים היו די מורכבים, כי הם נדרשו לבצע חישובים מסובכים שהשתנו ממודל למודל של הדיסק.
עקב מגבלות נפח שנבעו מהשיטה הזו – יצרני הדיסקים עברו לשיטה חדשה לציין כתובת על הדיסק, במקום לציין ראש,צילינדר וסקטור – פשוט מציינים את מספר הבלוק, כאילו הדיסק הוא בעצם שטח אחיד ורציף.
השיטה הזו נקראת LBA – Logical block addressing, והיא השיטה הדומיננטית היום.
בשיטה הזו, כשניגשים למידע בסך הכל צריך לתת מספר והדיסק כבר שובר את הראש (תרתי משמע) כדי להבין באיזה פלטה המידע, באיזה צילינדר ובאיזה סקטור.
אז עכשיו, לכל בלוק יש מספר, והדיסק נראה לשאר המחשב כמו קובץ אחד גדול.

Master boot record – MBR
מערכת ההפעלה של רובנו נימצאת על הכונן הקשיח, והמחשב יודע לטעון את מערכת ההפעלה גם אם זו מערכת הפעלה שנכתבה אחרי שהמחשב יצא מהמפעל. איך זה?
ההסבר פשוט למדי, הבלוק הראשון על כל כונן קשיח מכיל קוד שהותקן על ידי מערכת ההפעלה, והוא הקוד שמעלה את שאר המערכת.
בעליה (BOOT), המחשב מחפש כונן קשיח שניתן לאיתחול, טוען את הבלוק הראשון – הידוע גם בשם MBR – לזכרון ומריץ אותו.
אותו בלוק מכיל גם את טבלאת המחיצות (לא יאמן כמה אפשר להכניס ב512 בתים, אה?), טבלאת המחיצות מגדירה חלוקה של הכונן הקשיח לכמה חלקים.
בגרסאות הראשונות, טבלאת המחיצות הכילה מקום לארבעה מחיצות בלבד, מה שנפתר מאוחר יותר באמצעות שימוש במחיצות מורחבות ושאר המצאות.
אחת המחיצות מסומנת כמחיצת הboot, והתפקיד של הקוד בMBR הוא למצוא את המחיצה הזו, ולהעביר את השליטה לקוד שנמצא על הבלוק הראשון במחיצה.
הקוד הזה בדרך כלל טוען את שאר מערכת ההפעלה.
מי ששיחק עם דוס זוכר שהיו לדוס כמה קבצי מערכת מיוחדים שהיו חייבים להיות מותקנים בשימוש בפקודת sys או format/s. מה שמיוחד בקבצים האלו זה שהם הותקנו במיקום מסויים מאוד בדיסק, וככה אותו קוד פשוט שרץ מראש המחיצה יכל למצוא את הקבצים בקלות.
אותם קבצים כבר ממש טוענים את מערכת ההפעלה, והם מתוחכמים מספיק כדי להכיר את מערכת הקבצים.
טוען הBOOT הנפוץ GRUB עובד בצורה דומה, חלק ראשון יושב בMBR והוא אחראי להפעיל את הקוד של שלב 1.5, שיושב במקום ידוע מראש על הדיסק, ואחראי בתורו לזהות את מערכת הקבצים שבה נמצאת מערכת ההפעלה, ולהתחיל לטעון אותה (בלינוקס פה מדובר בקרנל של המערכת).

מערכת הקבצים
מערכות קבצים הם אחד הנושאים המורכבים, וצריך ספר כדי לכסות כמו שצריך את הנושא, אבל אני אשתדל לגעת קצת במה שמעניין.
עד עכשיו דיברנו על בלוקים, אבל כשאנחנו עובדים עם המחשב אנחנו לא אומרים לו: טען את המידע מבלוק 42201, כתוב את המידע לבלוק 10024 – אלא מדברים איתו במונחים של קבצים: פתח את הקובץ X, כתוב לשם Y, מחק את הקובץ Z.
מערכת הקבצים היא מה שמאפשר את ההפשטה הזו.
מערכת הקבצים יושבת בתוך המחיצה (למרות שאפשר גם לפרמט את הכונן הקשיח כולו ישירות בלי טבלאת מחיצות), התפקיד של מערכת הקבצים הוא לקחת את את המחיצה, לנהל את הבלוקים שלה ולהשתמש בה כדי לכתוב ולקרוא קבצים, ליצור ספריות, לשלוט על הגישה (אבטחה) אל הקבצים ולדאוג לתקינות הקבצים גם במצבים קיצוניים – למשל כיבוי לא מתוכנן של המחשב.
יש מערכות קבצים רבות, ששונות אחת מהשניה בתכונות, במגבלות ויתרונות ובחסרונות, הנה רשימה קצרה ולא ממצה:
12/FAT16
מערכת קבצים מיושנת, שימשה את DOS. שמות קבצים מוגבלים באורכם ל8 תווים ולעוד 3 תווים לסיומת, נפח המחיצה מוגבל ל32 מגה לFAT12 ול2 ג'יגה בייט לFAT16 ,אין מאפייני אבטחה ושגיאות במערכת הקבצים הן נפוצות.

NTFS
מערכת הקבצים הסטנדרטית של חלונות NT, שנכללה בחלונות 2000, XP וויסטה בהמשך.
מודרנית, כוללת מאפייני אבטחה (ACL לכל קובץ) ותמיכה בונפחי קבצים ומחיצות עצומים.
לNTFS יש נטיה להפוך לאיטית יותר יותר ככל שמשתמשים בה.

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

עד כאן להפעם.

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

סיסמאות בממשק משתמש

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

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

טוויטר

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

עקבו ברבבותיכם!

חבילת דביאן שימושית : apt-cacher

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

להתקנה, כמובן : apt-get install apt-cacher

הSDK של IPod touch וIPhone

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

בין ההגבלות:
* אסור לישומים להתשמש בבמשקים לא מתועדים, או להשתמש בממשקים שלא איך שאפל הגדירה.
* מותר לישומים לכתוב נתונים רק באיזורים המיועדים.
* אסור לישומים לרוץ ברקע (ברגע שהמשתמש סוגר את האפליקציה היא חייבת לצאת).
* לאפליקציה אסור להפעיל אפליקציות אחרות, כולל ולא מוגבל לשימוש בארכיטקטורת פלאגינים, קריאה לFrameworkים אחרים, או שימוש בממשקי תכנות (API) אחרים. אסור להוריד ולהריץ קוד מפוענח (Interpreted) למעט קוד שמשתמש במפענחים הפנימיים של אפל.
* אם הישום שלך כולל קוד פתוח (FOSS) אתה מסכים לתנאי הרשיון של הקוד. אתה גם מסכים לא להשתמש בקוד בצורה שתגרום לחלקים שאינם תחת רשיון FOSS להפוך לכאלו.

נראה שעורכי הדין של אפל עובדים שעות נוספות כדי לחסום את המשתמשים מלעשות דברים שימושיים.
הפסקה האחרונה מרמזת שאו שעורכי הדין של אפל הם חבורת מפגרים שלא מבינים רשיונות קוד פתוח (שום דבר שמישהו יכול לעשות עם רשיון קוד פתוח לא יכול להדביק את הקוד של אפל!) או שהם מנסים להפיץ FUD לגבי קוד פתוח.
תנאי הרשיון מונעים המרה של דפדפנים (פיירפוקס למשל) לIPhone, מונעים שימוש בשפות נוספות כמו Java, PHP, Python וכו', מונעים כתיבה של תוכנות מסרים מיידיים (כי הם צריכים לרוץ ברקע) ועוד.
זה די מרתיח שבאפל יושבים כאלו חולי שליטה.

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