- צבר – בלוג עם קוצים - https://tsabar.no-ip.org/blog -

מי מתוחכם יותר (חלק שלישי: למתכנת)

בהמשך לכתבות על תחכום וידידותיות מערכות ההפעלה, ראש בראש של לינוקס מול חלונות (כתבה ראשונה [1], כתבה שניה [2]), עלה בידי השבוע להבין עוד פן בתיחכומן וידידיותן של מערכות ההפעלה הללו.

הפעם צד המתכנת הפשוט.

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

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

אז מה הפתרון? אני יודע שלמשוגעים יש מחליף-דיסקים (changer) עם 50 מקומות. אני לא כזה, אצלי הוא היה נשאר חצי ריק.

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

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

אבל לפני שנה פלוס עברתי ללינוקס והתוכנה שלי נשארה מאחור עם משרצת הוירוסים שהזנחתי, ומאז אני נאלץ לנחש איפה הקבצים שלי, או להפעיל משרצת וירוסים וירטואלית [3].

ביום חמישי בלילה ישבתי וכתבתי לי סקריפט (בעזרתו האדיבה של דור [4]), שעושה את אותה הפעולה: אינדוקס של רשימת הקבצים על דיסקים ומציאת קבצים בתוך הרשימות.

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

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

חבל שמיקרוסופט לא תומכת בסקריפטולוגיה סבירה, ממשק הפקודה cmd של חלונות מבוססי NT הוא לא תת רמה, אלא שלב אחד יותר נמוך.

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

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

הסקריפט יעבור בקרוב שיפוץ פנים וישוחרר להנאתכם. קודם שיהיה מורכב מספיק ויכיל לפחות 30 שורות… 🙂