דלג לתוכן

בונים תוכנת Windows מתוך Mac: מחשב שאול, מכונה וירטואלית ותמונה של שגיאה

בתי הספר עובדים עם Windows. אנחנו עובדים על Mac ועל Ubuntu. כך למדנו לבנות ולבדוק את ציון ברגע ל־Windows, והתמונה שלימדה אותנו הכי הרבה.

5 דקות קריאה

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

5 דקות קריאה

התמונה הגיעה ממי שניסה את התוכנה אצלו: צילום של מסך Windows, ועליו תוכנה שמסרבת להיפתח. חסר קובץ תמיכה אחד, מסוג שב־Windows קוראים לו DLL. אצלנו הכול עבד.

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

בקצרה

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

התוכנה הזאת חייבת להיבנות על Windows אמיתי

חלקים מהתוכנה נשענים על ספריות שכתובות ב־C, שפה ברמה נמוכה יותר, והן צריכות את כל ערכת הכלים של Windows (הכלים שהופכים קוד לתוכנה) כדי לעבור הידור. מסמך ההחלטה שלנו (פתק קצר שכתבנו כשבחרנו בין אפשרויות) מ־17 ביולי 2026 אומר את זה בפשטות: אי אפשר לבנות תוכנת Windows מתוך Linux או macOS. היא חייבת להיבנות על Windows.

מה זה לבנות תוכנה?

מפתחים כותבים תוכנה כטקסט. כדי לבנות אותה (Build), כלי בשם מהדר (Compiler) הופך את הטקסט לתוכנה גמורה שהמחשב יכול להריץ, כמו שהופכים מתכון לעוגה אפויה. הידור (Compile) הוא השלב המרכזי בבנייה.

לכן השאלה הראשונה לא הייתה “איך עושים את זה אוטומטי”, אלא “האם זה בכלל עובר הידור ורץ ב־Windows”. את בניית ה־Windows הראשונה עשינו ביד, על מחשב Windows רגיל של מישהו במשפחה, רק כדי לראות שהיא עוברת הידור ועובדת. בהיסטוריית הפרויקט, השמירה (commit) שהקימה את ערכת הכלים של Windows במחשב המקומי מתוארכת ל־14 ביולי 2026.

מה זו היסטוריית פרויקט?

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

ואז מכונה וירטואלית, אחרי שיש הוכחה

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

אחרי שהמחשב השאול הוכיח שזה עובד, בנינו את דרך המכונה הווירטואלית. עד 17 ביולי, שלושה ימים אחרי שהוקמה ערכת הכלים הזאת, מכונת חלונות 11 וירטואלית, בלי מסך, כבר יכלה לבנות את התוכנה מתוך Linux או macOS. מסמך ההחלטה מתאר לקח אחד שעלה לנו ביוקר: הדרך הראשונה שלנו להעתיק את הקוד למכונה השחיתה בשקט את שמות הקבצים בעברית (גופנים וקובצי מבחנים). שום דבר לא נכשל, השמות פשוט יצאו שגויים. מאז אנחנו מעבירים קוד רק דרך git, הכלי ששומר את היסטוריית הפרויקט.

התמונה של השגיאה

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

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

הלקח היה גדול מהתיקון עצמו: כל מה שעובד אצלנו צריך להיבדק במחשב נקי.

המערכת הפנימית שלנו לבנייה ולבדיקה

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

  • בנייה. בונה את תוכנת Windows בתוך המכונה הווירטואלית ושומרת את התוצאה.
  • בדיקה. מריצה בדיקות ותנאי מעבר: שהממשק באמת מוטמע בתוכנה, שלא חסר שום דבר ש־Windows אינה מספקת (הבדיקה שהייתה תופסת את מה שהופיע בתמונה), שהתוכנה עולה ושעדכון עובד.
  • אישור. אדם מאשר בנייה מסוימת אחת. המערכת תמיד שואלת בן אדם, ואי אפשר לדלג על השאלה.

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

מכונת הבנייה

המכונות הווירטואליות רצות על מחשב נפרד עם Ubuntu, מכונת הבנייה שלנו. ההערות שלנו עליו מתעדות מגבלה שלמדנו בדרך הקשה: הזיכרון שלו מספיק למכונה וירטואלית אחת בכל פעם. שתיים יחד הקפיאו את המחשב הזה. ב־14 באוגוסט, בזמן שמכונה וירטואלית אחת החזיקה 8 ג׳יגה־בייט, בדיקות שאין להן קשר לזיכרון נכשלו, וזה נראה כמו באגים בקוד עד שמישהו הסתכל על הזיכרון. עכשיו המערכת אוכפת מכונה אחת בכל פעם.

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

איור: מחשב נפרד ששימש כמכונת בנייה.

בדיקה של התוכנה האמיתית

Wails (נפתח בלשונית חדשה) מציגה את המסך דרך רכיב הדפדפן המובנה ב־Windows. ב־26 באוגוסט 2026 הוכחנו שאפשר לפתוח את הרכיב הזה לשליטה מרחוק בפרוטוקול Chrome DevTools (נפתח בלשונית חדשה), הערוץ שבו מפתחים בודקים דפי אינטרנט. הערוץ כבוי אלא אם מדליקים אותו לבדיקה, והתוכנה היא אותו קובץ בשני המקרים. ממכונת הבנייה התחברנו לתוכנה שרצה וקראנו ערכים מהמסך האמיתי שלה.

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

מדמים מחשב חלש של בית ספר

באחד התרחישים מכונת הבדיקה מתנהגת כמו מחשב חלש בבית ספר: שתי ליבות מעבד, 4 ג׳יגה־בייט זיכרון ועומס כבד שרץ במקביל. בריצה כזו, ב־23 באוקטובר 2026, רשימת הסורקים ויתרה אחרי חיפוש אחד והציגה שלא נמצאו סורקים, למרות שהסורק היה שם. תיקנו את זה, והרשימה ממשיכה עכשיו לחפש. מצאנו את זה כי הקשחנו את הבדיקה.

מה למדנו

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

עוד סיפורי מקרה לקריאה

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

יש לכם מה לבנות? בואו נדבר.

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

9 סיפורים על ציון ברגע

כל 9 הסיפורים

“למה אי אפשר פשוט לסרוק?” איך התחילה ציון ברגעהכול התחיל במייל אחד, עם שאלה פשוטה. זה הסיפור כפי שבעל הפרויקט מספר אותו: החיפוש הראשון, השוואה ללוטו, זיכרון מילדות על מילוי עיגולים, ולמה בנינו קורא משלנו.איך בחרנו את הכלים: Tauri, Electron, ואז Wails ו־Goהתחלנו עם Rust ו־Tauri, חזרנו לכלים שאנחנו מכירים, והגענו ל־Go ול־Wails, שלא תכננו. הלקח: בוחרים כלים שאפשר לספק איתם מוצר.למה עזבנו את Electron: המבחן שזז על הדףציון ברגע הדפיסה מבחנים דרך חלון Chrome נסתר, והעמודים זזו. ניסינו LaTeX פעמיים, ואז מצאנו את Folio, את Go ואת Wails. היסטוריית הפרויקט מראה את הדרך.להדפיס בלי חלון ההדפסה: לומדים איך Chrome עושה את זההרעיון הראשון היה למסור את ההדפסה למערכת ההפעלה ולתת לאנשים להסתדר עם האפשרויות. זו הייתה טעות. כך צמצמנו את הבחירות לשלוש, וכך עזרה לנו קריאת הקוד של Chromium.למצוא את הסורק, ולקחת על עצמנו את ההגדרות שלומורים יכולים ללחוץ על כפתור אחד ולקבל סריקה. מאחורי הכפתור יש חיפוש של הסורק, רשימת הגדרות שאף אחד לא צריך לגעת בהן, והפתעה מחומת האש של Windows.בונים תוכנת Windows מתוך Mac: מחשב שאול, מכונה וירטואלית ותמונה של שגיאהזה הסיפור שאתם קוראים עכשיו. בתי הספר עובדים עם Windows. אנחנו עובדים על Mac ועל Ubuntu. כך למדנו לבנות ולבדוק את ציון ברגע ל־Windows, והתמונה שלימדה אותנו הכי הרבה.סמן עכבר שנראה לא נכון ב־Windowsאותה תוכנה יכולה להיראות אחרת בכל מערכת הפעלה. יום אחד סמן העכבר השתנה ב־Windows, אז בחרנו סמן משלנו ולמדנו לבדוק גם את הדברים הקטנים.לראות מחשב של בית ספר מרחוק: מה היומנים לימדו אותנו על מחשבים קטניםציון ברגע שולחת הביתה את היומנים שלה כדי שנוכל לראות אותה עובדת במקומות שאי אפשר לבקר בהם. מחשב קטן בעיירה רחוקה הראה לנו שגודל המחשב, ובסופו של דבר המעבד שלו, קובע עד כמה התוכנה עובדת טוב.קודם כול בלי אינטרנט, אבל האם יש אינטרנט? מלמדים תוכנה לבדוקציון ברגע עובדת בלי אינטרנט, ובכל זאת כמה תכונות צריכות אותו. להבדיל בין שני המצבים התברר כקשה יותר מלשאול את הדפדפן או להסתכל על הכבל.
תפריט נגישות

קיצורי מקלדת

פתיחת תפריט נגישותAlt+A
הצהרת נגישות

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