ארכיון חודשי: יוני 2008

אסטריסק 1.2 מול 1.4

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

החודש התקנתי שרת חמישי ללקוח שלי עם אותה מערכת, רק הפעם הלכתי על גרסה 1.4. כל תת גרסה של Asterisk (כלומר 0, 2, 4 ו6) מכילים שינויים מאוד גדולים לכל דבר. מהמבנה של ה cli בהם רשימת הפקודות משנה את המיקום שלה (דווקא הדרך הזו נראת יותר טוב ממה שזה נשמע, הם מאחדים חוקים של איך למצוא פקודות, במקום שכל מודול יספק מסלול שונה לפקודות), דרך ה Manager וכמובן ה Dailplan.

הבעיה התחילה כאשר ניסיתי להשתמש ב Dailplan של מערכת ה Click2Call שכתבתי עם גרסת 1.4. איך שניסיתי להוציא שיחה, הוא הגיע לי מייד ל DeadAGI בלי להגיע בכלל לDail. בהתחלה לא הבנתי מה קרה, ניסיתי לקרוא לוגים שונים, קראתי את המסך של אסטריסק. ועל פניו שום דבר לא נראה בעייתי.

ואז התחלתי לשים לב לDumpChan ול NoOp שהכנסתי במקור ל Dailplan בעקבות בעיות שהיו לי עם PRI של חברת HOT. אחת מהתוספות שהכנסתי ל NoOp היתה TIMESTAMP על כל פעולה שאני עושה בDailplan, ובעצם ראיתי שהTIMESTAMP לא חוזר. אז עכשיו הלכתי להסתכל על התיעוד של המשתנים, והסתבר שהמשתנה {TIMESTAMP}$ מוגדר כ deprecated. עכשיו התחלתי לבדוק עוד כמה פקודות, שראיתי כי הן לא מתבצעות, וגיליתי פקודה שב1.4 כבר לא בשימוש, למרות שב 1.2 היא לא סומנה כ Deprecated כאשר עבדתי על ה dailplan.
אחרי שבדקתי את כל הפקודות בהם אני משתמש, הצלחתי לגרום לתוכנית שלי לחזור ולעבוד, 30 דקות אחרי שהתחלתי את הנושא.

זה התחיל בvideo cast

אתמול ניסיתי לצלם video podcast (מילה בעברית ?) שידריך איך לעבוד עם לזרוס, כאשר ה cast הראשון מסביר איך להתקין רכיבים בלזרוס.

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

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

כשהרצתי את לזרוס, הכל עבד כמו שצריך הבעיה התחילה התקנת רכיב, בו לזרוס מאתחל את עצמו מחדש ואז לזרוס ברח לי מהDISPLAY של Xnest ויצא ל DISPLAY הראשי שלי.

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

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

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

סך הכל עבר עלי סופ"ש מאוד פורה

האיחוד החם

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

את התהיות שלי העברתי בזמנו לפוסט.

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

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

פתאום הכל ברור !

פיצ'רים מדהימים בלזרוס 0.9.26

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

הרצון העיקרי של הרבה ממפתחי לזרוס, הוא להגיע למצב בו גורמים ל GTK1.2 לצאת לגמלאות ושGTK 2 יכנס במקום. הבעיה היא ש GTK2 (כתבתי על זה בעבר) היא ספרייה מאוד לא ידידותית לפיתוח בגלל שגם אין תיעוד עד הסוף של מה שקיים, גם המפתחים לא כל כך אוהבים לעזור, ולפעמים בין גרסה אחת לגרסה שנייה של הספרייה, מציגים פונקציות חדשות שהופכות להיות obsolete מהר מידי (הבדל של גרסה אחת), מה שהופך את הפיתוח להיות מאוד מסובך.

יש תקווה כי fpGUI לכשיתציב יהפוך להיות ה widget בברירת המחדל של לזרוס במקום GTK. בנתיים אנחנו רואים את ההתקדמות האסטרונומית של QT4 כאשר כותב הבלוג משווה את ההתקדמות שלו עם GTK2. אבל הבעיה עם QT, היא שלא ניתן לפתח תוכנות מסחריות איתו בלי לשלם הרבה מאוד כסף לרישיון, דבר שהופך את השימוש ללא כדאי (וזו הסיבה שלא נראה את QT4 בתור widget ברירת המחדל בלזרוס).

בכל מקרה, 0.9.26 הולכת להיות גרסה מאוד מעניינת. הדבר הכי חשוב מבחינת כולנו בגרסה הזו, היא בראש ובראשונה תמיכה מלאה ב UTF-8 בכל widget התומך בה. יש אפשרות גם לקבוע מה הcharset של הקובץ מתוך העורך טקסט, והתחילו להיכתב בוויקי הוראות כיצד להתנהג עם UTF-8 וכיצד להמיר טקסט.

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

יש למה לחכות בשביל גרסת 0.9.26, ומי ידע, אולי גרסה 1 תהיה שונה לגמרי ממה שחושבים שהיא תהיה כרגע.

נימרוד

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

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

השפה היא שפה מאוד צבעונית ועובדת בצורה בה הקוד מומר לC ומשם מהודר לשפת מכונה (לפי האתר, הסיבה לעבודה הזו היא בשביל לספק תמיכה בכמה שיותר פלטפורמות ללא צורך במפרש). המפרש של השפה ד"א כתוב באמצעות FPC -> פסקל מונחה עצמים. להמשיך לקרוא

ימי הביניים של הטכנולוגיה

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

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

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

המדחנים בנתניה

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

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

עכשיו אני מבין למה יש כל כך הרבה סניפי דואר בנתניה, בשביל לשלם קנסות על חניה…

סתם מקרה מעצבן.

צעדים לניפוי שגיאות

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

ב FPC מגיעים 2 כלים נוספים ל writeln אשר יעזרו לנו למצוא בעיות בתוכנה שלנו הרבה לפני שניגש לתותחים הכבדים של gdb ו valgrind:

להמשיך לקרוא

שבועיים וקצת עם מנדריבה

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

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

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

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

אין ספק לא עושה

specification או הגדרה איך לעשות דברים היא דבר מאוד חשוב.

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

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

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

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

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

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

קצת חומר למחשבה…

תכנות RAD

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

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

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

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

דביאן, libhdate וgpc

אתמול קפלן הפנה אותי לדיווח wish list בדביאן של אדם המעוניין לראות תמיכה בקישוריות שעשיתי ל libhdate ב GPC.

הסיבה שהוא רצה תמיכה ל GPC, היא בגלל שGPC הוא מהדר פסקל הבנוי מעל GCC, ולכן יש לו תמיכה רחבה יותר של פלטפורמות. זה הייתרון היחיד שיש ל GPC על פני כל מהדר פסקל אחר. אבל החיסרון העיקרי של GPC, הוא בכך שכבר אין בפיתוח פעיל – הגרסה האחרונה יצאה ב2005, וכמו כן, הוא מבוסס על GCC 3x, ולא על גרסאות חדשות יותר.

בנוסף לכך הרבה מהתכונות שקיימות במהדרי פסקל מודרניים, לא נכנסו ל GPC, חלק מזה נובע מכך שהוא מבוסס על GCC, אשר עובד בשיטה שונה, המחייבת אותך לעבוד קשה יותר ביצירת התוכנה/ספרייה שלך (קבצי Makefile וכלים נלווים אחרים), בעוד שמהדרי פסקל אחרים מקבלים הוראות מתוך הקוד כיצד להדר את הקוד, בוכך מקצרים את הצורך בכתיבת תסריטים להידור ופריסה שמחוייבים ב C ו ++C.

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

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

ההבדל בין מחלקה לאובייקט

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

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

השימוש באובייקט בשפת פסקל ד"א, נוצר על ידי חברת אפל (אותה יצרנית iphone, mac וכו') ב1982, ובסוף שנות ה80, גם חברת בורלנד אימצה לעצמה את התחביר, ובעצם הגרסה 5.5 של טורבו פסקל (ואילך) תומכת בתחביר של אובייקט.

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

וידוא מספר ביקורת של תעודת זהות

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

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

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

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

בכל השורות קוד אני כמובן לא סופר שורות ריקות בקוד, או דברים שאני חייב להגדיר כמו {} (או begin end) וגם לא הגדרות של var ו const שעשיתי אם כי אני יכול רק איתם לקצר עוד 2 שורות קוד, ואפילו לרדת ל 8 שורות קוד !

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

בכל מקרה, אם אתם מחפשים מודא של תעודת זהות שלוקח את כל 9 הספרות (ולא מחשב את הספרת ביקורת מתוך 8 הספרות), אז אתם יודעים ממי לבקש 🙂

רצח בחסות משרד התחבורה

לפני שבוע היו לי רעשים והתנהגות מוזרה ברכב. הלכתי למוסך וגיליתי שתי בעיות אצלי ברכב.

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

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

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

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

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

עד עכשיו לא חידשתי כלום אני יודע. להמשיך לקרוא

בחירת כלי עבודה פרק 1999

בהרבה מקומות שאני נמצא בהם, בטוחים ש Visual Studio הוא כלי עבודה מצויין. ואני מדבר עוד על התקופה של שנות ה90, בהם זה היה פחות או יותר עורך טקסט צבעוני וזהו.זה כאמור עד שאותם אנשים רואים כלי עבודה שהם RAD כדוגמת לזרוס ודלפי. אך למרות זאת רוב השוק עובד עם כלים הרבה יותר "נחותים" מבחינת נוחות של תכנות מאשר אותם כלים. גם כיום, כאשר מיקרוסופט עשו copy paste לסביבות האלו, עדיין בגרסה האחרונה שראיתי, יש מחסור בכלים שבאמת עוזרים ליצור תוכנה באמצעות RAD יחסית לכלים אחרים.

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

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

תרגום תוכנה באמצעות gnu Gettext

GNU Gettext הוא כלי המאפשר ליצור קבצי תרגום עבור התוכנה שאנחנו כותבים ללא קשר לשפת התכנות או לשפת בני האדם המקורית בה כתבנו את התוכנה.

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

GNU Gettext מכיל שני סוגי פורמטים של קבצי תרגום, הראשון הוא קובץ טקסט (קובץ po) אשר מכיל את המילה/משפט המקורי, ומקום לכתוב את התרגום שלנו לאותה מילה/משפט. קובץ ה po הוא בעצם ה"קוד מקור" שלנו.

הקובץ השני הוא קובץ בינארי, אשר מכיל את התרגום בצורה מהודרת, ובכך מאיץ את יכולות הטעינה והשימוש. לקובץ הבינארי בד"כ מתקבלת הסיומת mo .

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

להמשיך לקרוא

פוליטיקה בעולם התוכנה

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

ב21/05/2008 התפרסמה כתבה בynet על ביקור סטיב באלמר בישראל. על פניו אין לי שום בעיה עם האירוע הזה. אבל אם תקראו את הפסקה הראשונה תראו שהוא הסתובב עם נשיא המדינה (שמעון פרס).

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

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

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

להסביר את הקוד הפתוח לסמנכ"ל

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

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

אז מה זה בעצם קוד פתוח ? להמשיך לקרוא

FPC 2.2.2 RC1 שוחררה היום

בזמן כתיבת הפוסט הזה, משתחרר לו הטאג של FPC 2.2.2 RC1.

מה בעצם מכיל FPC 2.2.2 ? ובכן בראש ובראשונה הקוד של ה"חדר הנקי" כמו שכתבתי על כך בעבר.

כמו כן, גם תיקונים אלו ואחרים לבאגים שהגיעו עם 2.2.0.

כנראה שבסוף יולי תצא הגרסה היציבה.

להורדת גרסת ה RC1 ניתן לגשת לsvn:

svn co http://svn.freepascal.org/svn/fpc/branches/rc_2_2_2/ rc_2_2_2

יצירת מחלקת Singleton בפסקל מונחה עצמים

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

Snail Mail

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

ובכן לדואר הזה אני מחכה בערך מנובמבר 2007. התאריך של החותמת על הדואר היא כמובן בנובמבר 2007, אבל הוא כאמור הגיע אלי רק אתמול ( 3/06/2008 ) כלומר 7 חודשים.

היות וזה לא פריט הדואר היחיד שלא הגיע אלי מזה לפחות 7-8 חודשים, הלכתי לדואר להתלונן.

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

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

אני חושב שלמושג snail mail (שנאמר על הדואר ה"רגיל") יש משמעות חדשה.

סיפורי לקוח

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

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