הבלוג של ארתיום
בלוג על לינוקס, תוכנה חופשית, מוזיקה, סלסה, ומה לא!
מאמרים בנושא תכנה ומחשבים.
להתראות Berkeley DB שלום MySQL.
אחרי תהיות ארוכות החלטתי להחליף את התשתית Berkeley DB לתשתית מבוססת על SQL.
אני בחרתי בספריית soci שמספקת ממשק ++C נוח ואחיד לבסיסי נתונים רבים. בלוג הפיתוח כבר מריץ את הגרסה שעובדת מול MySQL. כמובן, אני לא מגביל את עצמי לבסיס נתונים יחיד.
ניתן לקרוא בהרחבה כאן.
אני ו-dll או defected by design
בשבוע האחרון עבדתי על כתיבת טלאי לפרויקט soci שיאפשר טעינה דינמית של מודולים. הפרויקט הוא בלתי תלוי בפלטפורמה ויודע לעבוד הן על פלטפורמת POSIX והן על Win32. אז הייתי צריך לתמוך ביצירה וטעינה של dllים ושל soים לפי הצורך.
למרות ש-Win32API ו-POSIX API הם שונים לא הייתה שום בעיה לספק את התמיכה בטעינה דינמית של ספריות... בסה"כ להגדיר כמה defineים שכך שבפלטפורמה תואמת POSIX אני קורא ל-dlopen וב-Win32 אני קורא ל-LoadLibrary, באחת אשתמש ב-CriticalSection ובשני ב-PThread Mutex ועוד.
הכל היה טוב יפה עד שהגעתי ליצירה נכונה של הספריה עבור Win32. אז נחשפתי למספר דברים ששפכו הרבה אור על נושא של dllים ב-Windows וכמה "השלכות מוזרות" שבתור מי שמפתח ב-Linux לא נתקלתי בהם.
ובכן נתחיל.
המשך...בחירת DB ל-CppCMS... שוב אותה שאלה
לאחר השוואת ביצועים בין MySQL ו-Berkeley DB על CMS אמיתי, חזרתי שוב לתהיות האם הבחירה היא נכונה:
Berkeley DB or not Berkeley DB?
מערכות הפעלה, API ומה שביניהם...
הקבוצה עובדת על פרויקט גדול מאוד שאמור להיות מתחזק במשך שנים. הפרויקט כולל רכיבים מגוונים ונדרש לעבוד בצורה מהירה ואמינה. עכשיו יש לכם בעיה: אתם לא רוצים להיות תלויים בספק יחיד או במילים אחרות לא מעוניינים ב-Vendor Lock In. לכן, אתם רוצים שהתוכנה שלכם תהיה Cross Platform: תוכלו להריץ אותה על Linux, OpenVMS, HP-UX, BSD, Win NT, Solaris ואולי עוד כמה מערכות אקזיטיות שאני שכחתי לציין. אז כיצד ניתן לעשות זאת?
אז אלו אופציות יש לכם:
- לכתוב בשפה שלא תלויה בפלטפורמה כמו Java. רק מה עם הביצועים? מה עם תלות בספק יחיד?
- לכתוב את הכל בשפה כמו Python/Perl? כנ"ל
- להשתמש בספריות Cross Platform כמו: ACE ועוד שבונות שכבת תאימות בין מערכת הפעלה לבין הקוד.
אז האופציה השלישית היא כיום הסבירה ביותר, אבל בואו נתבונן בפעולה פשוטה כמו נעילת mutex בעזרת, נגיד APR במערכות שונות:
המשך...מודול Caching עתידי ל-CppCMS
בזמן האחרון, התעסקתי הרבה בנושא פיתוח/תכנון של מודול caching יעיל עבור CppCMS. בחנתי אפשרות שימוש ב-memcached ופסלתי אותה במהירות.
אני סיכמתי כאן את התכנון והמחשבות הכלליות בנושא ה-cache עבור CppCMS. ד"א אם הוא יהיה מוצלח, אני חושב שניתן יהיה להשתמש בו גם עבור סביבות אחרות. במיוחד זה יכול לעזור בתהליכים שירוצו על אותו מחשב ויפנו ל-cache דרך זכרון במקום לעבוד מעל TCP/IP.