דלג לתוכן

למה עזבנו את Electron: המבחן שזז על הדף

ציון ברגע הדפיסה מבחנים דרך חלון Chrome נסתר, והעמודים זזו. ניסינו LaTeX פעמיים, ואז מצאנו את Folio, את Go ואת Wails. היסטוריית הפרויקט מראה את הדרך.

5 דקות קריאה

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

5 דקות קריאה

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

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

לא הכרנו את Go כשהתחלנו. כל צעד כאן היה ניסיון, ולא פעם נסיגה.

בקצרה

  • בניסוי הדפסה של 35 עמודים, העמוד האחרון ישב כמה מילימטרים רחוק ממקומו בעמוד הראשון.
  • Electron הדפיסה דרך חלון Chrome נסתר. התיקון שעבד, חלון נסתר לכל עותק, היה גס וצרך הרבה זיכרון.
  • ניסינו LaTeX פעמיים. הוא תפס כ־800 מגה־בייט בדיסק, יותר מדי לתוכנה שצריכה להיות קלה להורדה ולרוץ בלי אינטרנט.
  • בסוף הגענו ל־Folio, ל־Go ול־Wails, וקוד ה־Electron הוצא מהאפליקציה בין מאי ליולי 2026.

התשתית הראשונה: Tauri ו־LaTeX (נובמבר 2025)

הפרויקט נוצר ב־31 באוקטובר 2025. ב־1 בנובמבר הוקם כתוכנת Tauri (נפתח בלשונית חדשה), נוסף לו AMC (נפתח בלשונית חדשה) (כלי קיים למבחנים), והוא קיבל תוכנת Rust (נפתח בלשונית חדשה) שכתבה קובצי LaTeX (נפתח בלשונית חדשה) למבחנים.

LaTeX היא תוכנת עימוד. נותנים לה אותו קלט ומקבלים אותו עמוד, כל פעם מחדש, וזה בדיוק מה שמבחן מודפס צריך. ב־10 בנובמבר הוספנו להיסטוריה עותק נייד שלה, TinyTeX (נפתח בלשונית חדשה), למחשבי חלונות ולמחשבי מק: 14,317 קבצים בבת אחת. שלושה ימים אחר כך, ב־13 בנובמבר, הסרנו את התיקייה הזאת שוב (14,797 קבצים). באותו יום סדרת שמירות ניקוי בהיסטוריית הפרויקט (commit), אחת מהן תחת ההודעה “clean project before refacture” (כפי שנכתבה), הוציאה את AMC ואת קוד ה־LaTeX.

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

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

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

התשתית השנייה: Electron וחלון Chrome נסתר (מ־19 בנובמבר 2025)

ב־19 בנובמבר נכנסה להיסטוריה שמירה בשם “working pdf generation tested” (הכתיב תוקן כאן). זה קוד ה־Electron הראשון בפרויקט. Electron עוטפת אתר בתוכנת שולחן עבודה בכך שהיא מביאה איתה עותק של Chrome. כדי להפיק PDF, התוכנה פתחה חלון Chrome נסתר, טענה בו את המבחן כמו דף אינטרנט וביקשה מ־Chrome להדפיס אותו. במשך כמה חודשים זה היה המוצר.

בקבצים מאותה תקופה שמפרטים באילו קטעי קוד חיצוניים התוכנה משתמשת (קובצי התלויות) מופיעים כלי PDF ב־JavaScript, כמו jsPDF ו־pdf-lib. ההיסטוריה לא מראה שניסינו וזנחנו עוד שורה של כלי PDF ב־JavaScript, ולכן אנחנו לא טוענים שהיו.

הבעיה: עמודים שזזו

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

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

ניסיון נוסף: שוב LaTeX, הפעם כמתג (אפריל 2026)

ב־12 באפריל כתבנו תכנון להחזרת TinyTeX, הפעם בתוך Electron, וב־13 באפריל זה נכנס. הוא ישב מאחורי הגדרה, כך שהדרך הישנה דרך Chrome נשארה ברירת המחדל וגיבוי. לפי התכנון, TinyTeX יצורף לתוכנה ב־Windows ויורד בשימוש הראשון ב־Mac וב־Linux.

ההורדה ל־Windows לבדה הייתה כ־163 מגה־בייט דחוסים, לפי אותו תכנון. מסמך מאוחר יותר מעמיד את TinyTeX על כ־800 מגה־בייט בדיסק. התוכנה צריכה להיות קלה להורדה ולרוץ בלי אינטרנט ומכונן USB, ומשקל כזה היה יותר מדי. זה אף פעם לא הפך לברירת מחדל. קובצי התוכנית נמחקו ב־16 באוקטובר 2026, והם נשארו בהיסטוריה.

Folio, ואז Wails ו־Go (מאי 2026)

בינתיים הסורק ועיבוד התמונה עברו ל־Go, שבו הספריות טובות יותר. מצאנו את Folio (נפתח בלשונית חדשה), ספריית קוד פתוח ל־Go שהופכת HTML ישירות ל־PDF, בלי דפדפן ובלי כלים נוספים. בעותק שלנו הוספנו תיקוני עברית: ניקוד וכתיבה מימין לשמאל.

כשגם ההדפסה עברה ל־Go, לא נשאר תפקיד ל־Node ולא ל־Chrome. תוכנית המעבר ל־Wails (נפתח בלשונית חדשה) נכנסה ב־2 במאי 2026, וחלון Wails ראשון רץ ב־3 במאי. ב־7 במאי שמירה אחת הסירה את הקבצים של Electron מהאפליקציה, וב־9 ביולי נמחק מהפרויקט כל מה שנשאר מ־Electron. Wails בונה תוכנת שולחן עבודה ב־Go, והמסך מוצג דרך רכיב הדפדפן שכבר קיים ב־Windows וב־macOS, כך שאין עותק של Chrome שנוסע עם התוכנה. מסמך ההחלטה הכתוב הראשון מתוארך ל־14 במאי 2026.

הדרך לפי הסדר
  1. 1 בנובמבר 2025הוקם כתוכנת Tauri, עם AMC ותוכנת Rust שכתבה קובצי LaTeX
  2. 13 בנובמבר 2025ניקוי: AMC, קוד ה־LaTeX ותיקיית TinyTeX הוסרו
  3. 19 בנובמבר 2025קוד ה־Electron הראשון: הדפסה דרך חלון Chrome נסתר
  4. 6 באפריל 2026הסיבה לעמודים שזזים נרשמה; חלון Chrome נסתר לכל עותק
  5. 13 באפריל 2026LaTeX חוזר כהגדרה, ו־Chrome נשאר ברירת המחדל
  6. 2 במאי 2026תוכנית המעבר ל־Wails נכנסה
  7. 7 במאי 2026השמירה הראשונה שהסירה את הקבצים של Electron מהאפליקציה

איך למדנו Go

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

מה אי אפשר לדעת מהתיעוד

אנחנו זוכרים את הסטייה כסנטימטר בערך. המדידה הכתובה אומרת כמה מילימטרים בעמוד 35 בניסוי. אנחנו מעדיפים לפרסם את המדידה ולא את הזיכרון.

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

להדפיס בלי חלון ההדפסה: לומדים איך Chrome עושה את זההרעיון הראשון היה למסור את ההדפסה למערכת ההפעלה ולתת לאנשים להסתדר עם האפשרויות. זו הייתה טעות. כך צמצמנו את הבחירות לשלוש, וכך עזרה לנו קריאת הקוד של Chromium.למצוא את הסורק, ולקחת על עצמנו את ההגדרות שלומורים יכולים ללחוץ על כפתור אחד ולקבל סריקה. מאחורי הכפתור יש חיפוש של הסורק, רשימת הגדרות שאף אחד לא צריך לגעת בהן, והפתעה מחומת האש של 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
הצהרת נגישות

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