בגרסת המשחק הראשונה של מיקרוסופט נכללו 32,000 משחקים אפשריים שונים שנוצרו בצורה אקראית. משחקים אלו נקראים בשם "Microsoft 32,000". בגרסאות מתקדמות יותר של המשחק נכלל מספר גדול יותר של משחקים, עם 32,000 המשחקים המקוריים.
אחת התכונות של פריסל שהופכות אותו לפופולרי היא שבניגוד למשחקים דומים לו, כמעט כל משחק ניתן לפתרון מוצלח. בגרסאות המשחק של מיקרוסופט נטען כי "השערה לא מוכחת היא שכל משחק ניתן לפתרון". השערה זו איננה נכונה, כפי שניתן היה לראות באותה גרסה עצמה: כאשר ניסה השחקן לשחק את משחק מספר מינוס 1 הוא היה מקבל משחק בלתי פתיר. עם זאת, עדיין התעוררה השאלה האם 32,000 המשחקים "החוקיים" (בעלי מספרים בין 1 ו-32,000) של מיקרוסופט פתירים. במסגרת הניסיון לענות על שאלה זו התארגן פרויקט אינטרנט רב משתתפים לפתרון כל המשחקים ה"חוקיים", אשר הסתיים בשנת 1995. המשחק היחיד אותו לא הצליח איש לפתור היה משחק מספר 11,982. במימוש המתקדם יותר של פריסל בחלונות ישנם 1,000,000 משחקים. מתוכם 8 התבררו כבלתי פתירים: 11,982; 146,692; 186,216; 455,889; 512,118; 517,776; 781,948.
בשנת 2000 הוכח כי מנקודת מבטה של תורת הסיבוכיות הגרסה המוכללת של המשחק (Generalised Freecell) היא בעיה NP-שלמה (כתלות במספר הקלפים). על כן, אלגוריתם שפותר משחק פריסל מגודל שרירותי ביעילות (כלומר בסיבוכיות זמן פולינומית) יהווה פריצת דרך בחקר מדעי המחשב.
פותרים אוטומטיים.
אחד מהתחביבים של מספר חובבי פריסל הוא לבנות תוכניות מחשב שיכולות לפתור את פריסל אוטומטית. דון וודס כתב פותר לפריסל ומספר משחקים דומים עוד ב-1997. פותר זה יותר מאוחר שוכלל על ידי וילסון קלן ואדריאן אטלינגר ושולב בתוך התוכנה "Freecell Pro" שלהם.
פותר אוטומטי ידוע נוסף הוא Patsolve של תום הולרויד. Patsolve משתמש במהלכים אטומיים, ומאז גרסה 3.0 שילב פונקציית שקילה המתבססת על התוצאות של אלגוריתם גנטי שגרמה לפותר להיות מהיר בהרבה.
שלומי פיש התחיל לפתח פותר משלו במרץ 2000. פותר זה כונה פשוט "Freecell Solver" ("פותר פריסל" באנגלית). פותר זה עושה שימוש במטה-מהלכים - קבוצות של מהלכים שמטרתן להשיג מטרה מסוימת.
גארי קמפבל כתב פותר עבור פריסל ל-DOS בשפת סף של x86. גודלו של פותר זה הוא 12 קילובתים והוא די מהיר. הוא פועל רק על סידורי הלוח של Freecell Pro.
חלק מהפותרים הללו ופותרים אחרים שולבו בתוך תוכנות פריסל וסוליטייר גדולות יותר. כך למשל, FreeCell Pro, מימוש הסוליטייר המשופר של אדריאן אטלינגר ווילסון קלן (בעבר תוכנה חינמית, ללא קוד המקור, אך מאוחר יותר הקוד נהיה זמין תחת הרישיון הציבורי הכללי של גנו (GPL) החופשי ופתוח הקוד) בהתחלה שילב את הפותר של דון וודס ומאוחר יותר שילב את הפותרים של פיש ושל הולרויד.
PySolFC שילב את הפותר של פיש, עבור פריסל ומשחקים דומים אחרים שהפותר תומך בהם, בעוד ש-KPatience, גרסת משחקי הסוליטייר של KDE, שילבה בהתחלה את Freecell Solver אבל יותר מאוחר עברה לגרסה של Patsolve ששונתה באופן ניכר.
במשחק המגיע עם מערכת ההפעלה חלונות, ניתן לבצע רמאות (צ'יט) על ידי צירף המקשים ctrl + shift + F10. במקרה כזה, המשחק פותח תיבת דיאלוג עם שלושה כפתורים כאשר שניים מהם יובילו לסיום של המשחק בהפסד או בניצחון (השחקן צריך ללחוץ פעמיים על אחד הקלפים ואז המשחק מסתיים לפי הכפתור שנבחר הרגע בתיבת הדיאלוג).
גלישת חוצץ
במחשבים, גלישת חוצץ (באנגלית: Buffer overflow) היא שגיאת תכנות המתבטאת בכך שתוכנית מחשב כותבת לאזור בזיכרון המחשב (החוצץ) יותר מידע מאשר אותו אזור מסוגל להכיל. כתוצאה מכך "גולש" חלק מהמידע אל מחוץ לגבולות החוצץ, ומשנה נתונים שלא היו אמורים להשתנות. המידע שנמחק לעיתים קרובות הכרחי להמשך ריצתה התקינה של התוכנית, ובשל כך גלישת חוצץ עלולה לגרום לתוכנית להחזיר תוצאות לא נכונות, לקרוס לחלוטין, או אף לאפשר הרצה של "קוד זדוני" הגורם לתוכנית לפעול באופן שלא תוכנן מראש. בשל כך, גלישות חוצץ מהוות בסיס לפרצות אבטחה רבות. ברוב המקרים, גלישת חוצץ תגרום לפחות לקריסה של התוכנית המשתמשת בחוצץ.
תיאור.
חוצצים הם תחומים בזיכרון המחשב שמשמשים לאחסון מידע - בפרט, את המשתנים בהם משתמשת התוכנית. מכיוון שגודלו של החוצץ חסום ומוגדר מראש, כתיבה של מידע רב יותר מאשר הוא מסוגל להכיל תגרום לגלישה - כתיבה לאזור בזיכרון שמשמש למטרות אחרות, ובמיוחד - אזור בזיכרון שמכיל פקודות למעבד.
הדוגמה הנפוצה ביותר לגלישת חוצצים מתרחשת כאשר תוכנית מבצעת כתיבה של קלט לתוך חוצץ בלי לוודא שגודל הקלט קטן מגודל החוצץ. לדוגמה, אחת מפונקציות הספרייה הסטנדרטית של C (הפונקציה gets) מבצעת כתיבה לתוך חוצץ של קלט שגודלו אינו מוגבל - כלומר, כל שימוש בה עשוי לגרום לגלישת חוצץ, בהתאם לקלט שמועבר אליה.
הסכנות שבגלישת חוצץ.
מרגע שהתרחשה גלישת חוצץ, מהלך התוכנית "איננו מוגדר", כלומר לא ניתן להבטיח דבר לגבי המשך ריצת התוכנית: היא עשויה לקרוס, לרוץ באופן לא תקין, להמשיך לרוץ ולתת תוצאות שגויות, או לגרום נזק. לחלופין היא יכולה לרוץ באופן תקין לחלוטין ללא שום סימפטום בעקבות הגלישה.
לעיתים קרובות מאוחסן המידע הדרוש להבטחת ריצתה התקינה של תוכנית בסמוך לחוצצים בה היא משתמשת. גלישת חוצץ עשויה לגרום למחיקת מידע זה והחלפתו במידע אחר. פרט לפגיעה בריצתה התקינה של התוכנית, הדבר עלול לסייע לוירוס מחשב "להשתלט" על ריצת התוכנית ולהריץ קטעי קוד זדוניים וזאת על ידי כתיבה על אזור בזיכרון המכיל קוד תוכנה שמתבצע. גלישת חוצץ הגורמת לקריסה של התוכנית, ללא הרצת קוד זדוני, מכונה "מניעת שירות" (Denial of Service).
במקרה שהחוצץ נמצא במחסנית קריאות, הזיכרון שמוקצה לחוצץ נמצא בסמיכות לתא הזיכרון שמכיל את כתובת הזיכרון שאליה יש לחזור לאחר סיום הפונקציה, לצורך המשכה התקין של התוכנית. אם ידוע כי בתוכנית קיים כשל של גלישת חוצץ, ניתן לעיתים לגרום לכך שתוכנו של תא זיכרון זה ישתנה, והוא יצביע על כתובתו של קטע קוד זדוני. סוג זה של גלישת חוצץ נקרא גם "גלישת חוצץ במחסנית" (Stack buffer overflow).
כאשר החוצץ נמצא בערימה, הוא לרוב אינו נמצא בסמיכות לכתובות חזרה כל שהן, ולכן באופן כללי ניתן לומר כי קשה יותר לנצל גלישת חוצץ בערימה לטובת הרצת קוד זדוני מאשר במחסנית. סוג זה של גלישת חוצץ נקרא גלישת ערימה (Heap overflow).
על ידי ניצול של כל אחת משתי הפרצות, ניתן לשתול סוס טרויאני בקבצים שאינם קובצי הרצה, המכילים מידע בלבד.
מניעת גלישות חוצץ.
ישנן מספר דרכים למנוע גלישות חוצץ, המתחלקות לשני סוגים עיקריים: הגנות בזמן הידור והגנות בזמן ריצה.
הגנות זמן ריצה.
אף על פי שקיימות שיטות רבות למניעה של ניצול גלישת חוצצים להרצת קוד זדוני, לא קיימת כיום הגנה מוחלטת מניצול כזה.
דוגמה לתוכנית המבצעת גלישת חוצץ.
להלן קטע קוד בשפת C, שבמצבים מסוימים עלול ליצור גלישת חוצץ:
int B=0;
char A[8]={};
strcpy(A, "excessive");
המערך והמספר מאותחלים לאפס ואז מבוצעת העתקה.
פריסה אפשרית של הזיכרון עבור הקוד המתואר, לפני ביצוע ההעתקה:
לאחר פקודת ההעתקה:
סיריוס בלאק
FreeCell
Freecell
אומת האסלאם
אומת האסלאם (באנגלית: Nation of Islam, ראשי תיבות: NOI) הוא ארגון אפרו-אמריקאי, אסלאמי, חברתי ופוליטי. מטרתו המוצהרת היא שיפור מצבם הכללי של האפריקאים-אמריקנים בארצות הברית. הארגון נוסד בשנת 1930 בדטרויט על ידי וואלאס ד. פארד מוחמד, ומנהיגו הנוכחי (2018) הוא לואיס פרחאן. מרכז הארגון נמצא במסגד מרים בעיר שיקגו.
אחת האמונות המקוריות של הארגון הייתה, שמערכת החינוך הציבורית לתלמידים שחורים (שהייתה נפרדת מזאת של הלבנים) מעוותת, במטרה לשמור על עליונות הגזע הלבן. בהתאם לכך הקים הארגון מוסדות חינוך עצמאיים, ברוח האסלאם.
היסטוריה.
מייסד הארגון, וולאס פארד מוחמד (1877-1934), הכיר בעיר דטרויט את אלייז'ה מוחמד (1897-1975), שהפך לתלמידו הבולט ביותר. האחרון הקים מסגדים ברחבי ארצות הברית, הפיץ את תורת מורו, וטען שוולאס מוחמד הוא נציגו של האל. תלמידיו של מוחמד הפיצו את תורתו ברחובות, באירועים ובבתי כלא, והיא צברה תומכים רבים. אחד הפעילים הבולטים ביותר של הארגון היה מלקולם ליטל (מלקולם אקס), שהתוודע לתנועה בעת שריצה עונש מאסר על שוד, ונרצח בשנת 1965, בעקבות עימותים ופרישה מהתנועה.
לואיס פרחאן נולד בשנת 1933, עבד כזמר וכנר, והצטרף לארגון בשנת 1955. לאחר מותו של מלקולם אקס, מונה פרחאן לדובר הארגון ולאימאם המסגד של התנועה בעיר ניו יורק. אחרי מותו של אלייז'ה מוחמד, בשנת 1975, מונה בנו וולאס למנהיג הארגון, הפך אותו למתון ולמתקדם יותר, ושינה את שמו. פרחאן מצדו, איגד קבוצת מאמינים קיצונים, שפרשו מהארגון בשנת 1978, והקימו מחדש את ארגון אומת האסלאם, בהתאם לעקרונות המייסדים המקוריים.
באוקטובר 1994, עמד פרחאן בראש משלחת בת כ-2,000 חברים, שערכה כנס רשמי בגאנה, בחסות נשיא המדינה. באוקטובר 1995, הנהיג פרחאן מצעד של מאות אלפים בעיר הבירה של ארצות הברית, וושינגטון.
ביקורת כלפי הארגון.
הליגה נגד השמצה, הקונגרס היהודי האמריקאי, ארגונים נוספים ואף אקדמאים רבים, רואים באומת האסלאם ארגון אנטישמי והומופובי, בהתבסס על התבטאויות מנהיגיו (כולל לואיס פרחאן), וקשרי הארגון עם מכחישי שואה ועם ארגונים נאו-נאציים. הארגון גם הוציא לאור ספרים אנטישמיים (למשל הספר "הקשר הסודי בין שחורים ויהודים").
מטמורפוזה
בקעת תמנע