בחירת בסיס נתונים משובץ... או לא כל הנוצץ זהב.

ב־יום שבת, 27 בדצמבר 2008, מאת ארתיום; פורסם תחת: תכנה חופשית, לינוקס, פיתוח, תכנה ומחשבים, CppCMS; ‏3 תגובות

מי שעוקב אחרי התפתחות של CppCMS‏ יודע, שבתחילת דרכי, רציתי לעבוד עם בסיס נתונים מיוחד Berkeley DB‏. אחד היתרונות הגדולים שלו זה ביצועים מדהימים, לפחות לפי הנתונים של Oracle.

בזמנו, התלבטתי והחלטתי להפסיק להשתמש בו. אלה היו הסיבות:

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

אבל היום, עלה לי צורך ספציפי, בו הייתי זקוק לבסיס נתונים מאוד פשוט, לא מבוסס על SQL שיעשה את העבודה הפשוטה: ניהול Sessions.

מה בדיוק צריך לשמור:

  1. מפתח ייחודי לכל אחת.
  2. שעת התפוגה --- מתי אפשר למחוק רשומה מהטבלה.
  3. הנתונים עצמם.

אפשר היה להשתמש ב־RDBS כמו MySQL, אבל עבור המשימה הספציפית, זה היה נראה כבד מידי. הדרישות היו די בסיסיות:

  1. תחזוקה מינימלית.
  2. מהירות הכנסה גבוהה.
  3. זמינות גבוהה בהפצהות ומערכות הפעלה שונות.
  4. דרישות שרידות בסיסיות: רצוי שבסיס הנתונים לא ייפגע עם התכנה תקרוס, או מחשב יפול, אבל, אם ייאבדו כמה רשומות, זה לא ממש משנה.

אז היו לי מספר אפשרויות:

  1. בסיס נתונים מאוד פשוט של מפתח/ערך כמו gdbm עם מנגון "ניקוי".
  2. בסיס נתונים מורכב כמו Berkeley DB שתומך אינדקסים, כבר היה לי ניסיון איתו.
  3. מערכת קבצים --- כל ערך שמור בקובץ נפרד, גם פה צריך מנגנון "ניקוי" של ערכים ישנים.
  4. בסיס נתונים משובץ sqlite3.

אז בואו נתחיל.

המשך...

מה אני שונא ב־C++‎.

ב־יום ראשון, 21 בדצמבר 2008, מאת ארתיום; פורסם תחת: פיתוח, תכנה ומחשבים, C++‎‏; ‏9 תגובות

אחד הדברים החשובים במלחמת "שפות/דתות" זה לדעת טוב מאוד את המגרעות של השפה. כך, כדי "לאזן" את הכתבות על C++‎ החלטתי לפרסם רשימת הדברים שאני שונא ב־C++‎.‏

  1. זמן קומפילציה --- נוראי. לפעמים כשאני מקמפל קוד C או Java אני לא מבין מה קורה? מדוע לחצתי על "Enter" והקמפול נגמר.
  2. קשה מאוד ליצור ספריות עם ABI תואם לאחור. כל שינוי קטן בממשק הורס תאימות לאחור. או צריך להמציא טריקים כמו "הסתרת מימוש" או לעבוד עם מחלקות אבסטרקטיות בלבד.
  3. שגיאות קומפילציה נוראיות: אני כבר מחכה ש־ConceptsGCC יתמזג לענף gcc הראשי --- שוב, חלק מ־C++Ox.‏
  4. מתכנתי C++‎ שאין להם מושג ירוק מה הם עושים.
  5. קוד C++‎ כתוב כמו קוד C... מקור מעולה לבאגים.
  6. ספריות "C++‎" שתואמות קומפיילרים טרם־היסטוריים --- ללא namespaces, ללא STL, ללא RTTI ועוד. (למשל ממשק C++‎ של BDB).‏
  7. ספריות שממציאות גלגל מחדש: בא לנו string משופר, רשימה מקושרת משופרת ועוד -- אבל הורסות את התאימות עם שאר הספריות.
  8. עבודה עם ספריות C מתוך C++‎ --- כי ב־C אין destructors ואז הקוד הופך לספגטי של try/catch. או צריך לעטוף כל שטות במחלקה. מצד שני, אי אפשר לוותר על זה, כי יש המון ספריות מעולות, מדובגות ונפוצות הן ספריות C.‏
  9. אני שונא iostreams -- הם מסובכים, לא נוח לעבוד עם format, לא נותנים גישה ל־file descriptors כמו FILE של C.‏ מצד שני, הם הפתרון הטוב ביותר לעבודה אחידה מול streamים שונים -- למשל, כתיבה לקטע בזיכרון, כתיבה ל־socket ועוד.
  10. כתיבת טיפוסים של iterators --- אני כבר מחכה ל־auto של C++0x.‏
  11. קומפיילרים גרועים --- ראה ערך VS6 שאני לא מבין מדוע אנשים עדיין משתמשים בו.

אני מעביר את השרביט ל:

הסבר: הכוונה היא --- לתת ביקורת על מה שאפשר היה לשפר בשפה, או מה שלא ניתן לשנות וזה לפעמים מפריע.

האם C++‎ היא שפה דלה?

ב־יום שני, 15 בדצמבר 2008, מאת ארתיום; פורסם תחת: פיתוח, תכנה ומחשבים, C++‎‏; ‏7 תגובות

ב־C++‎ אין הרבה דברים מאוד נפוצים ושימושיים, למשל:

  1. אין תמיכה ב־threads.‏
  2. אין תמיכה בעבודה עם זיכרון משותף.
  3. אין תמיכה ב־IPC ויצירת תהליכים.
  4. אין תמיכה ב־base64 ו־md5.‏
  5. אין תמיכה מובנית בעבודה עם בסיסי נתונים כמו sqlite3‏.
  6. אין תמיכה מובנית בדחיסת gzip.‏
  7. אין כלי עבודה מול XML.

אם תסתכלו בשפות כמו Java/C#/PHP/Python/FPC תגלו שלמעשה, כמעט כל הדברים האלה, נתמכים ברמת השפה עצמה (עם שינויים כאלה ואחרים), אבל C++‎ דורשת ספריות צד ג' כדי לטפל דברים כל־כך בסיסיים.

האם זה אומר שהשפה דלה או האם זה אמור משהו אחר?

המשך...

הגיע זמן לחפש הפצה חדשה?

ב־יום שבת, 13 בדצמבר 2008, מאת ארתיום; פורסם תחת: תכנה חופשית, לינוקס, תכנה ומחשבים; ‏10 תגובות

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

באגים קריטיים

זה עצוב, אבל זה נכון. אי אפשר לצפות ל־Lenny לפני מאי--יוני, למרות שרוב האנשים ואפילו קפלן חושבים אחרת.

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

מה חסר חי כרגע? gcc-4.3, גרסה אחרונה של firefox ועוד כמה דברים.

מזל טוב... או לא עוד "החברה של ארתיום"

ב־יום חמישי, 4 בדצמבר 2008, מאת ארתיום; פורסם תחת: כללי, הכל מלבד מחשבים; ‏12 תגובות

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

אתמול, אני ואדית עמדנו מתחת לחופה ובאנו בברית הנישואין.

מגיע לנו מזל טוב!

החברה של ארתיום

העמוד הקודם

העמוד הבא

דפים

נושאים