בהפוכה: גרסה 0.7

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

להל"ן המכתב שמאיר שלח לי (שמסביר את השינויים שהוא עשה):

"היי אילן,

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

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

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

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

– אין צורך בלולאה או list comprehension, מחרוזות ויוניקוד מכילות method
בשם translate שבהינתן המילון עם ה-ord המתאים יבצע את ההמרה.

– שינוי לוח המקשים הוא מתכון לאסון (תתי פריסות, כמו lyx אצלי, יותר
מפריסה אחת וכד')

– אין למשתמש אפשרויות שליטה (מה אם רוצים שייכתב ל-stdout במקום
ל-clipboard, לדוגמא בתור filter ל-vim וכד'), מה אם לא רוצים לבצע paste
אלא רק שישב ב-clipboard ? עם אפשרויות כאלה, ניתן לדוגמא למפות מקשים
שונים לתכונות שונות

– הכל כתוב בבלוק הראשי, כך שאי אפשר לבצע:

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

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

– משתי מחרוזות פשוטות (שדי קריאות וניתן לראות בקלות מה מומר מאחר ויושבות
אחת מעל השניה) מרכיבים את טבלת ההמרה.

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

– לפני ההמרה קוראים ל-lower כך שאין צורך באותיות גדולות בטבלת ההמרה

– במקום לשנות פריסות מקשים ולהסתבך עם צירופים, פשוט שמים את ההמרה
ב-clipboard ושולחים CTRL+V (לבצע paste).

– קוד הועבר לפונקציות והקוד הראשי מורץ רק במקרה של __main__ (מה שלא
יתבצע במקרה של import).

– פועל יוצא של השינויים הנ"ל הוא שהקוד קצר וקריא יותר

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

הגרסה מצורפת להודעה זו (מקווה שלא איכפת לך שהוספתי את שמי למחברים). אשמח להערות והארות."

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

אז השאלה שצריכה להישאל היא "האם לא איכפת לך ששמנו מופיע בסקריפט…" 🙂

הורדה, הערות ותלונות כאן

My Signature
פורסם בקטגוריה לינוקס ותוכנה חופשית. אפשר להגיע לכאן עם קישור ישיר.

11 תגובות בנושא בהפוכה: גרסה 0.7

  1. מאת חזי‏:

    נראה שזה תיקן את כל הבעיות שהוזכרו קודם.

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

  2. מאת ilanshavit‏:

    חזי
    התוכנה בנויה כך שניתן לעדכן אותה ולהתאימה לשפות נוספות בקלות!

  3. מאת משה‏:

    למי שמתעניין:

    נתקלתי לפחות בתוכנה אחת כזאת לשפות אחרות (אם כי זאת ממומשת בשיטה שאני פחות אהבתי) –
    http://xneur.sourceforge.net/

    אני מניח שיש עוד אחרות.

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

    בכל מקרה, סחתיין מאיר.

    משה

  4. מאת חזי‏:

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

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

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

  5. מאת ilanshavit‏:

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

  6. מאת adamruss‏:

    אחלה, גרסא 7 עובדת טוב פה.

  7. מאת el.il‏:

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

  8. מאת ilanshavit‏:

    el.il
    יש משהו במה שאתה אומר… (נעדכן בגרסה הבאה).
    בכל מקרה: ניתן להפעיל את הסקריפט כך שלא ידביק את המידע ב- clipboard אלא ב- stdout (אבל זה לא מה שאתה מעוניין בו)

  9. מאת חזי‏:

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

  10. מאת עדי‏:

    איך עושים גרסה 7? תענוווו

כתיבת תגובה

האימייל לא יוצג באתר. שדות החובה מסומנים *