שוחררה 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 מחדש ו... לא כאן לא נגמרו בעיות

המשך...

פונקציית hash קריפטוגרפית ודעות קדומות

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

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

  • פונקציית md5 פרוצה, אז אני שומר את הססמאות בבסיס הנתונים בעזרת sha1 (או רשום פונקציית hash החביבה עליך) ואמנע גילוי ססמאות עם בסיס הנתונים ייפרץ!
  • פונקציית md5 אינה בטוחה, אז אני אוסיף קצת "מלח"‏: md5(salt+pass)‎ והיא תהיה בטוחה!
  • אני השתמשתי ב־hmac של פייתון בקונפיגורציית ברירת מחדל וגיליתי שהוא משתמש ב־md5 הפרוצה... עכשיו כל החתימות של שוות כלום.

מוכר לכם? ידוע לכם?

אז תגלו, שכל אלו הן טענות לא־בדיוק־נכונות.

המשך...

העדפות שלי, תשובה לאילן

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

תשובה לשאלה של אילן שביט

  • הפצה: דביאן יציבה 100%, אפילו שאני פוזל לכיוונים אחרים.
  • סביבת עבודה: KDE
  • מעבד תמלילים: LaTeX, עדיפות שניה OO.
  • נגן מוזיקה: amarok
  • נגן וידאו: Kaffeine ב־Windows כמובן VLC.
  • שפת תכנות: אין דבר כזה, תלוי משימה:

    • GUI, שרת, יישום שדורש ביצועים -- C++‎ לפעמים C.
    • עבודה עם קבצים, משימות פשוטות אחרות, קינפוגים bash.
    • עיבוד טקסט python או perl.
    • בניה של דף אינטרנט דינאמי קטן PHP‏.
    • חישוב מתמטי octave/matlab‏.

    מה שחשוב לדעת ולא לפחד לשלב ביניהם: למשל גרעין של CppCMS כתוב ב־C++‎, כאשר משימה שהיא לא מתבצעת בזמן־אמת ניתנת ל־python וכל מיני תסריטי עזר כתובים ב־bash.‏

  • IDE לשפת התכנות: KDevelop או vim.

  • שפה נוספת שהייתי שמח להכיר (לעומק): Python ו־Java.
  • מה הייתי לומד (לו היה לי זמן): FPC.
  • משחקים אהובים: AH2
  • דוא"ל: Yahoo
  • דפדפן: פיירפוקס או אפיפני, לא ממש משנה.
  • תוכנת גיבוי: תסריט bash עם scp לאתר מרוחק. (רק עבור דברים מאוד קריטיים כמו בסיס נתונים).
  • חלוקה למחיצות: אני לא ממש זוכר מתי עשיתי אז זה בפעם האחרונה --- מה שעובד qparted/gparted או תוכנת התקנה של דביאן.
  • עורך אודיו: Audacity (יש משהו חופשי אחר?)
  • לקוח FTP:‏ עבור windows כמובן filezilla, עבור לינוקס gftp, או Konqueror, או nautilus -- לא ממש משנה.

העמוד הקודם

העמוד הבא

דפים

נושאים