הבלוג של ארתיום
בלוג על לינוקס, תוכנה חופשית, מוזיקה, סלסה, ומה לא!
אני ו-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.
בשקט בשקט, הסמסטר מת...
היום קיבלתי דואר ממזכירות הפקולטה על כך שהקורס שהייתי אמור ללמוד הסמסטר מבוטל (אחד מתוך 3 שהייתי אמור לקחת, מתוך 4 שנשארו לי עד סיום התואר). הודיעו שאולי הוא יועבר בסמסטר ב'. כמובן, הוא ירד מרשימת הקורסים שמופיעים אצלי במרשימה.
אולי זאת השיטה: לבטל את הסמטר בשקט...
בכל אופן, האם יש למישהו ספק מי אשם לבכל זה?
רמז -- המרצים שהחליטו לדפוק את החלשים ביותר, להסב להם נזקים עצומים -- הסטודנטים. כל הנזקים הכלכליים שהם גרמו יכלו לכסות את תוספות השכר שלהם ללא מעט שנים. אבל להם לא איכפת!