מילון עברי ו"תקיעת" אופן אופיס

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

אתר חדש ל- "בהפוכה"

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

כתובת האתר החדש: כאן

הכוח של perl

שורת קוד אחת מוחקת את כל התיקיות הריקות, בצורה רקורסיבית, החל מהמיקום הנוכחי ומטה… לא צריך להדביק את השורה בקובץ מסויים אלא רק להדביק ב- shell המועדף וללחוץ Enter

perl -MFile::Find -e"finddepth(sub{rmdir},'.')"

שימושי למי למעוניין לנקות קצת זבל במחשב (אם כי הייתי מאוד נזהר ומריץ את הפקודה רק מתיקיית הבית ולא מ- root)

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

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

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

"היי אילן,

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

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

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

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

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

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

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

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

import Behafucha
Behafauch.get_selection()

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

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

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

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

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

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

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

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

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

$ ./Behafucha.py -h
Usage: Behafucha.py [options]

Options:
-h, –help        show this help message and exit
-s, –stdout      Send to stdout instead of clipboard (implies -n)
-n, –no-paste    Put in clipboard, don't send CTRL+V to the active window
-t, –title-case  Words start with title case

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

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

#!/usr/bin/python

# -*- coding: UTF-8 -*-

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

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