מאמרים בנושא ‏CppCMS‏.

זקוק לעזרה מקהילה או... למי יש ARM פנוי?

ב־יום ראשון, 15 בפברואר 2009, מאת ארתיום; פורסם תחת: תכנה חופשית, לינוקס, פיתוח, תכנה ומחשבים, CppCMS; ‏11 תגובות

בימים אחרונים אני מנסה לתת ל־CppCMS עוד נישה פוטנציאלית והיא מערכות משובצות מחשב. בד"כ שפות כמו php ו־python כבדות עבור מערכות כאלה. פה בדיוק סביבת פיתוח נוחה יכולה לעזור.

בנוסף, קיימים מספר פתרונות דומים בשוק והם Wt ו־Klone. אבל, Klone לא נותן כלים ש־CppCMS נותן ו־Wt בנוי בצורה שלטעמי שגויה -- גישה של מפתח GUI ולא web.

אז, עשיתי כמה שיפוצים ב־CppCMS כך שהוא יוכל לתמוך גם בסביבות משובצות מחשב, ביניהם: ביטול רכיבים מיותרים, למשל, אם בונים CGI טהור, אז אין מרכיב s/f-cgi, ניהול threads וכד'. הוצאה מערכת cache ודחיסה עבור יישומי כאלה כי בד"כ זיכרון הוא יקר ועוד.

לאחר מספר אופטימיזציות, הצלחתי להגיע ליישום בגודל של כ־550K שזה כמעט חצי ממה ש־Wt הצליחו להגיע.

מה נותר? לבדוק את היישום על פלטפורמת ARM אמתית. כיום, כל הבדיקות נעשו בעזרת qemu-arm. לכן, אני זקוק לעזרתכם.

מה מדרש?

כל מי שיש לו גישה ל־ARM עם לינוקס מותקן עליו, אנא עִזרו:

  1. הורידו את הקובץ הבא.‏
  2. העבירו אותו לסביבת ARM שלכם ותפרסו.
  3. תנסו להריץ:

     ‎./hello.dynamic -c config.txt
    

    זהו קובץ ריצה שמקומפל דינאמית רק עם ספריות בסיסיות כמו libstdc++‎. אם הוא לא מצליח בגלל העדר ספריות תנסו:

     ‎./hello.static -c config.txt
    

    בכל מקרה, אמור להתקבל פלט של Headers של cgi ותוכן HTML עצמו.

  4. אם יש אפשרות, אנא בדקו את זמן הריצה עם time.‏
  5. אם במקרה, יש לכם שרת web בסביבה שלכם אני אשמח אם תוכלו להריץ את ה־cgi שבספריה (רק שעדכנו את השם של קובץ ריצה לזה שהצליח (סטטי או דינאמי) בהתאם.

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

תודה רבה, מראש!

אתר המראה עבור תיעוד של CppCMS.

ב־יום שלישי, 3 בפברואר 2009, מאת ארתיום; פורסם תחת: תכנה חופשית, פיתוח, תכנה ומחשבים, CppCMS; ‏4 תגובות

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

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

לכן, עד שאסדר את הבעיות מול ספקית האינטרנט שלי (012), הכנתי תסריט קטן שיוצר עותק ה־wiki בעזרת wget ומעלה אותו לאתר Sourceforge בעזרת rsync. הסקריפט הזה ירוץ כל 6 שעות ויבטיח עדכניות סבירה של אתר המראה; ולמעשה יבטיח זמינות טובה של תיעוד מחוץ לארץ.

לכן, אבקש, כל מי שרוצה לקשר לפרויקט הזה שיפנה ל־cppcms.sourceforge.net‏ במקום הויקי הנוכחי ב־art-blog.no-ip.info.

שוחררה CppCMS 0.0.2!

ב־יום שישי, 16 בינואר 2009, מאת ארתיום; פורסם תחת: תכנה חופשית, לינוקס, פיתוח, תכנה ומחשבים, CppCMS, C++‎‏; ‏0 תגובות

אחרי תקופה ארוכה של פיתוח מאומץ שוחררה גרסה 0.0.2 של CppCMS -- תשתית פיתוח יישומי אינטרנט ב־C++‎.

הגרסה כוללת

  • CppCMS תשתית הפיתוח.
  • DbiXX --- ספריה לעבודה מול בסיסי נתונים שונים.
  • WikiPP מערכת ויקי מובססת CppCMS.‏
  • Examples --- דוגמאות שונות כחלק מתיעוד של CppCMS.

שינויים במדיניות

ישנם מספר שינויים חשובים במדיניות שחרור הגרסאות:

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

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

  • מערכת תבניות חדשה מבוססת על טיפוסים סטטיים. היא נשענת על קימפול התבניות לקוד המכונה וטעינתן כ־shared objects.
  • מערכת תבניות הישנה, מבוססת על טיפוסים דינאמיים לא תיתמך יותר.
  • השיפורים השונים במערכת התבניות כוללים בין השאר:

    1. ירושת תבניות בסגנון Django.‏
    2. הרחבת תבניות ע"י השתלת קוד C++‎ לתוכן.
    3. תבניות הן חלק מהתשתית ולא מהוות ספריה נפרדת.
  • פותחה מערכת חדשה ליצירה ובדיקה של טפסים. היא משולבת עם מערכת התבניות.

  • פיתחה מערכת ניהול sessions חדשה.
  • שיפורים ב־API של מערכת caching לתמיכה יותר טובה ב־cache העובד ללא טריגרים.
  • התיעוד של המערכת הועבר ל־WikiPP‏ מערכת ויקי שפותחה על בסיס של CppCMS.
  • נתמכות מערכות הפעלה חדשות: FreeBSD ו־OpenSolaris, בנוסף ל־Linux ו־Cygwin.
  • מערכת ויקי WikiPP שוחררה תחת רישיון GPLv3.

ימי הביניים של Unix או FreeBSD 7.1.

ב־יום שלישי, 13 בינואר 2009, מאת ארתיום; פורסם תחת: תכנה חופשית, לינוקס, פיתוח, תכנה ומחשבים, CppCMS; ‏2 תגובות

כידוע, אני רוצה לוודא כי cppcms ירוץ על מספר מרבי של פלטפורמות תואמות POSIX. כשהפיתוח נעשה לרוב על Linux, אני רוצה לוודא כי הוא ירוץ על כל פלטפורמת POSIX חופשית: שכרגע הן: Linux,‏ OpenSolaris, ‏‎*BSD ו־Cygwin.

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

אבל, כידוע לא כל ה־UNIXים הם זהים. יש פה ושם api שלא ממומש, יש פה ושם סמנטיקות שונות לפעולות בתנאים שונים ועוד. אז אחרי שמצאתי תאימות טובה מאוד ל־solaris גיליתי ש־FreeBSD היא קוץ אחד גדול.

אחת ההפתעות הראשונות שהייתה לי --- pthread_mutexattr_setpshared לא נתמך. ידעתי שהוא לא נתמך ב־cygwin אבל מ־FreeBSD 7.1 ציפיתי לטוב יותר.

הסבר: זאת אופציה שמאפשרת לשים mutex בזיכרון משותף של שני תהליכים שונים. כל UNIX בוגר תומך באופציה הזו. Linux תומך בזה החל מ־2.6 עם כניסת NPTL והופיע לראשונה ב־RH9.

טוב, מאחר ויש לי תמיכה של "אי־שימוש" במחיר של ביטול רכיבים מסוימים, לא נורא.

המערכת התקמפלה ועבדה יפה. ברגע שניסיתי להפעיל אותה ב־mod_prefork היא עפה עם unsupported system call...

או קיי? מה זה אומר.

מסתבר, ש־sem_init גורם לתופעה כזו. אני קורא man -- הכל אמור לעבוד. כותב תוכנת ניסוי פשוטה -- היא עפה. התחלתי לגגל וגיליתי: תמיכה ב־POSIX Semaphores היא ניסיונית מאוד ולא יציבה. צריך לקמפל kernel עם אופציה ספציפית כדי שזה יעבוד!

אם כך, למה להעיף תוכנה? אולי עדיף ש־sem_init יחזיר שגיאה? או קיי, אז אולי נשתמש במנגנון אחר? נגיד flock? אהה... לפי man של FreeBSD הוא אפילו לא יוצא עם EINTR במקרה של סיגנל (שזאת הסיבה העיקרית שהשתמשתי ב־Posix Semaphores.

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

בקיצור --- אני אומנם אמשיך ואגרום ל־CppCMS לעבוד על FreeBSD כי זה לא מי יודע מה מסובך, אבל...

Free BSD Sucks!!!‎

חד וחלק!

אני OpenSolaris,‏ VirtualBox והרבה כאב ראש...

ב־יום שבת, 10 בינואר 2009, מאת ארתיום; פורסם תחת: תכנה חופשית, לינוקס, פיתוח, תכנה ומחשבים, CppCMS; ‏0 תגובות

החלטתי לבדוק את CppCMS על מערכות הפעלה נוספות מלבד Linux, לכן, החלטתי להתקין OpenSolaris על VirtaulBox. אני מזהיר מראש, הסיפור של CppCMS כאן הוא מינורי --- התיקונים האמתיים שקשורים ל־OpenSolaris לקחו בדיוק 5 דקות, ש־4 מתוכן היו קומפילצייה של הקוד מחדש.

ובכן, נתחיל -- החלטתי להתקין OpenSolaris. כהרגלי, הורדתי LiveCD עדכני, הפעלתי VirtualBox ו־... גיליתי ש־OpenSolaris לא עולה. גיגלתי, בדקתי, הבנתי שצריך לעדכן גרסת VB. בסדר, לא מסובך נעשה.

בשלב הבא, כשההתקנה הושלמה, גיליתי שאין לי אינטרנט, חיפשתי גיגלתי, שיחקתי עם דרייברים ועם מודולים, ifup/down שיניתי הגדרות "חומרה וירטואלית" --- nada, אין אינטרנט... אחרי עוד מספר שעות בגוגל, גיליתי שאני חייב לעשות 2 אתחולים של מחשב וירטואלי לאחר התקנה כדי שהאינטרנט יעבוד(?!)

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

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

המשך...

העמוד הבא

העמוד הבא

דפים

נושאים