יצירת קשר עם התמיכה

אנחנו משיבים בדוא״ל, בדרך כלל בתוך יומיים.

למניעת שימוש לרעה, Google reCAPTCHA בודק את הפנייה הזאת; נתונים נשלחים אל Google. הסקריפט נטען רק עם פתיחת הטופס הזה.

→ כל הרשומות

במה מחיקת מונה נוגעת בפועל

על התוכן ועל בדיקתו

במאמר הזה

מחיקת מונה כאן מרוקנת 33 טבלאות. אתמול היא רוקנה 25.

כל השמונה שהחמיצה נוצרו ביום שלפני כן, בין 11:10 בבוקר ל־15:10 אחר הצהריים.

33 טבלאות מחזיקות משהו על מונה 8 מהן לא רוקנו — כולן נוצרו יום קודם השמונה האלה החזיקו יחד 4,840 שורות נוספו היום במקומן לפי סדר האלפבית, ולא בסוף 25 שורות יתומות נמצאו בטבלאות אחרות והוסרו

איך המחיקה עובדת

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

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

מעל הרשימה הזאת בקובץ נמצאת ההערה הזאת:

“כל טבלה שיודעת משהו על המונה הזה. כרשימה ולא בפיזור בקוד: כל מה שחסר כאן נשאר מאחור כשורה יתומה, ואיש אינו מבחין בכך.”

ההערה תיארה את הפער יום לפני שנפתח

אתמול הופיעו שש טבלאות חדשות לתכונה חדשה — זמן בדף, עומק גלילה, דפי יציאה — יחד עם שתיים אחרות. בין 11:10 ל־15:10.

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

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

התיקון, והתיקון האחר

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

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

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

על מה זה חל באופן כללי

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

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

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

פרסומת