איך להרוויח כסף וגם להציל את פרקי האצבעות עם תוכנה ממוחזרת וחומרה ממוחזרת לא פחות: עוד מקרה לדוגמה מהעולם האמיתי.
לפני כמעט שש שנים כתבתי כאן בבלוג על תוכנה קטנה שכתבתי ב-Delphi ושחסכה לי הרבה זמן וכסף. התוכנה ההיא חיכתה למחרוזות שהועתקו ל-Clipboard של Windows, חיפשה תרגומים קודמים למחרוזות האלה והעבירה אותם – אם נמצאו – בחזרה אל ה-Clipboard. היא הייתה יעילה למטרה הספציפית-מאוד שלשמה נכתבה, אך לא נמצאו לה שימושים נוספים והיא נדחקה אל הארכיונים שעל הדיסק הקשיח.
אתמול הגיעה אליי בקשה לא שגרתית: מישהו תרגם טקסט מסוים לעברית, כאלפיים משפטים, ואיכשהו בשרשרת כלי התוכנה כל המשפטים התהפכו מהסוף להתחלה, הככ שממ. האם אני יכול לבדוק את איכות התרגום, ועל הדרך גם להפוך את כל הטקסט לסדר האותיות הנכון? לרוע המזל, התרגום והעריכה צריכים להתבצע בכלי מקוון שפועל בתוך דפדפן, כך שאי אפשר להוריד את כל הטקסט כקובץ פשוט ולעבור עליו עם תוכנה מתאימה. זה חייב להתבצע דרך המקלדת.
הרפלקס הראשוני שלי אמר לשלוח את המבקשים לכל הרוחות. זו עבודה שחורה מטורפת, ובהתחשב בזמן שהקלדה-מחדש תיקח, התשלום שהציעו לי תמורתה היה מעליב גם אחרי מו"מ עיקש. אבל אז נזכרתי בתוכנה הישנה ההיא. האם אפשר לעשות משהו דומה בפרויקט הנוכחי? בעצם אני צריך רק לקחת את ה"מעטפת" הקיימת, שמתממשקת עם ה-Clipboard, ולהחליף את הפונקציונליות של חיפוש המחרוזות בפונקציונליות של הפיכת המחרוזת מהסוף להתחלה (באמצעות פונקציה מובנית אחת ב-Delphi שנקראת, החזיקו חזק, ReverseString).
העליתי מן האוב עותק של התוכנה הישנה, שיניתי את פונקציית הליבה וערכתי ניסוי קטן עם מחרוזת מהתרגום. אופס! כשלחצתי Ctrl+C או Copy בתפריט, הופיע חלון שגיאה עם ההודעה "Delphi cannot open clipboard: Acces is denied". למזלי לא הייתי הראשון שנתקל בזה, ובירור קצר בגוגל העלה שמאז שהתוכנה שלי נכתבה, אי-שם ב-2012, משהו השתנה באופן שבו מערכת ההפעלה Windows מנהלת את אירועי ה-Clipboard. הפתרון לא אלגנטי במיוחד אבל פשוט ליישום: אם התוכנה מזהה שגיאה כזו, פשוט מחכים טיפה ומנסים שוב.
עכשיו זה עבד, אבל נותרה בעיה אחת: עדיין צריך, לכל מחרוזת בפרויקט, ללחוץ על Ctrl+C ואז על Ctrl+V. נסו לעשות את זה אלפיים פעמים ותבינו. כדי לפשט את התהליך עוד יותר שלפתי מהמגירה את תואם הארדואינו לאונרדו הוותיק שלי, לחצן מיקרו-סוויץ' עם לוח וחוטים ממדפסת ישנה (לחצנים כאלה צריכים ממש מעט כוח פיזי כדי לסגור מעגל) ובסיס עץ עגול נחמד שהיה פעם מכסה של צנצנת דקורטיבית. תוך חמש דקות הכול היה מחובר יחד, כולל קוד מאולתר ללאונרדו שמתחזה למקלדת ושולח למחשב, בכל פעם שהוא מזהה לחיצה על הלחצן, את הרצף Ctrl+C-(המתנה קצרה)-Ctrl+V.
אחרי הרהור קצר גיליתי אפשרות לאופטימיזציה נוספת: במקום לסמן ידנית עם העכבר כל מחרוזת לצורך העתקה-היפוך-הדבקה, מספיק להציב מעליה את סמן העכבר, לדמות לחיצה על הלחצן השמאלי (כדי למקם שם את הסמן), ואז לדמות הקשה על HOME ואחריה על Shift+END. קוד הארדואינו עודכן בהתאם – וזה הכול. מניחים את סמן העכבר מעל המחרוזת הבעייתית בדפדפן ולוחצים בקלילות על הלחצן. הלאונרדו מסמן את המחרוזת המלאה, שולח פקודה להעתקה ל-Clipboard, תוכנת ה-Delphi שלי מזהה את זה והופכת את המחרוזת שב-Clipboard, והפקודה הבאה מהלאונרדו מדביקה את המחרוזת המתוקנת בדפדפן במקום הקודמת. הפרויקט הפך ממשימה סיזיפית מחסלת-אצבעות לפרויקט עריכה רגיל עם עוד כמה תקתוקים, והשכר – גם בהתחשב בזמן שנדרש לעדכן את התוכנה ולהכין את החומרה – הפך לריאלי ומכובד מאוד.
לא נראה לי סביר שרבים מהקוראים כאן יזדקקו למערכת כזו בדיוק, אבל זו לא הנקודה. הנקודה היא שמייקינג לא חייב להסתכם ב"פרויקטים", ושרווח כלכלי ממייקינג לא חייב להסתכם בהדרכה או בפיתוח מערכות ללקוחות. כבר הפסקתי מזמן לחשב כמה כסף חסכתי דרך תיקונים והארכת חיים של מכשירים וצעצועים בבית, ובתוספת הרווחים מייעול העבודה, כמו שסיפרתי כאן, יכול להיות שאצליח לכסות מתישהו את עלות המיקרוסקופ המקצועי שקניתי, עליו אספר בפוסט הבא… 😉
יפה מאוד. אוטומציה == כסף
איזו יצירתיות! פנטסטי.
מעניין, אבל האם זה לא משהו שהיה אפשרי לבצע תוך שימוש בקונסולה למפתחים שנמצאת בכל דפדפן?
בוא נראה… האם לגמור את העבודה תוך רבע שעה עם הכלים שאני מכיר, או להשקיע שעות בללמוד כלי שאני לא מכיר? 🙂 מה גם שמדובר במערכת קניינית ומורכבת, אני די בטוח שאין גישה (בטח לא גישה נוחה) למחרוזות שם עם כלי דפדפן כאלה.