ארכיון חודשי: דצמבר 2008

אזהרה: באג 2009

לקוח דיוח לי היום שהמערכת שלי מדווחת תאריך נכון, אבל לשנת 2009 במקום 2008 .אחרי בדיקה בלוגים ראיתי שלא בכל מקום מופיע 2009. החשד הראשון נפל על libc, אשר איכשהו עדכנה את השנה לא נכון למערכת, אבל בפועל התאריך והשעה היו נכונים לגמרי.

גם בעיה בlibc לא מצליחה להסביר למה התאריך של הלוג נכון התאריך של המערכת הוא נכון  רק התאריך של הדיוח שלהם הוא לא. אז נכנסתי לקוד של הדיווח שלי, והתחלתי לקרוא עוד פעם באמצעות man date את הפורמט של strftime. מסתבר שהזנתי לשנה את %g כאשר הייתי צריך להזין את %y.

עכשיו נשאלת השאלה מה ההבדל בניהם ? ובכן %y מחזיר את השנה של היום. הפורמט של %g מחזיר את השנה של השבוע. וכאמור מחר זה ה1/1/2009 ולכן הוא החזיר את 09 בתוצאה.

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

אוסף ציטוטים

The secret to creativity is knowing how to hide your sources. — Albert Einstein (Nov 4-Dec 9)

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

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

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

ed64 – מדריך ליצירת אמולטור של Commodore 64*

האתר של EL DENDO's Commodore 64 emulator או ed64 בקיצור מכיל מדריך בעל 9 פרקים המסביר כיצד ליצור אמולטור (האם מישהו יודע מה המילה העברית לאמולטור ?) המדמה את סביבת Commodore 64.

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

* תודה ל De-Panther על הקישור

סביבת הפיתוח שהכי נוחה לי

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

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

meta class 2

לאחר הבעיה להסביר את meta class בפעם הראשונה, זהו עוד סיבוב שמנסה להסביר את הפעולה.

אז נתחיל מההתחלה: מה זה meta class ?

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

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

עכשיו נשאלת השאלה למה זה טוב ?

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

שימושים עיקריים הינם:

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

להמשיך לקרוא

אזהרה: חולים בכל הארץ קיבלו תוצאות מעבדה שגויות

זו כתבה שנמצאת בynet ומציגה 2 דאגות עיקריות:

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

אעבור קודם על הסעיף השני, ואקח את תגובת משרד הבריאות:

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

הצוות של חברת HP עובד 24 שעות ביממה מרגע זה ועד לאיתור התקלה הראשונה ולכשתאותר תקלה כזו – היא תדווח מיד לביה"ח שבו היא קרתה ותתחיל מיד בדיקה להבנת תהליך התקלה ותיקונה.

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

להמשיך לקרוא

מרוב Frameworks לא רואים את היער

יש לי בעיה, אני רוצה ליצור מערכת מבוססת web. עכשיו בניגוד לשאר אני לא פנאטי בקשר לטכנולוגיה שמאחורי זה, כל עוד שזה לא ב #C, ג'אווה או שפה מהודרת (ז"א שאני לא אשתמש בframeworks מבוססי פסקל או שפה פחות נורמלית כמו C או ++C) אחרת, אלא שפה דינמית.

אז התחלתי לעשות סקר שוק. דבר ראשון למעלה מ90 אחוז מה Frameworks הם דווקא בג'וואה 😦 זה בערך כמו לקחת מטוס בשביל להגיע מת"א לרמת גן. זה אפשרי (אם היה שדה תעופה גם במדינת רמת גן ולא רק במדינת תל אביב), אבל למה ?! ג'אווה היא שפה מאוד לא הגיונית. היא מחייבת גם איפה שלא צריך לעבוד עם תכנות נוחה עצמים (נראה אתכם כותבים Hello World בפחות מ4 שורות קוד), והיא לא מאפשרת גמישות רצויה מספיק בלי להתאים את הלוגיקה לשפה. או במילים אחרות זו שפה לאנשים שאוהבים זימזום.

מה שמשאיר אותי עם 4 טכנולוגיות עיקריות:

  1. פרל -> יש את Apache::Application, CGI::Application ו Catalyst.
  2. פיתון -> האם יש עוד משהו פרט ל Django ?
  3. רובי -> יש את Rails ויש את Merb בעיקר (אשר מתאחדות להן לRails 3).
  4. PHP -> יש את kohana יש את Cake PHP יש את codeigniter והרשימה כמובן שממשיכה, אבל אלו הטכנולוגיות השולטותתתת!!!!1

על זה, יש עודף Frameworks מבוססי Javascript שירוצו בצד הלקוח, והנה רשימה קטנה, חלקית ולא מייצגת: להמשיך לקרוא

האם אתם בני 18 דולר או יותר ?

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

בני 18 דולר לפחות

בני 18 דולר לפחות

קוד הפיתון ה"רציני" הראשון שלי

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

בגרסה הראשונה שלי, כתבתי את הקוד הבא: להמשיך לקרוא

גן סגור

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

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

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

מה לא ?! כמה פעמים ניסיתם לקחת את הWindows 2000 שלכם וגרמתם לו להבין מה Windows 2003 מדבר ? או בכלל Windows NT 3.35 שקיים אצלכם עדיין בארגון, ומנהל לכם בכלל את ה domain ?

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

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