מאמרים בנושא ‏C++‎‏‏.

הכרות עם Java.

ב־יום רביעי, 1 באפריל 2009, מאת ארתיום; פורסם תחת: פיתוח, תכנה ומחשבים, C++‎‏; ‏12 תגובות

למרות שכבר יצא לי לדבג קוד שכתוב ב־Java לא הייתה לי התנסות מעמיקה עם שפת התכנות הזו. כלומר, אני מכיר את עקרונות הפעולה שלה... אבל לא עבדתי אתה הרבה.

לאחרונה, התחלתי לכתוב יישומים ויישומונים ב־Java ביניהם רכיבי GUI קטנים. הסיבות לכך היו שניים:

  1. דרישת הקורס -- הגשת תרגילים ב־Java.‏
  2. צורך לכתוב רכיבי GUI בלתי תלויים בפלטפורמה גם למערכות אקזוטיות ביותר כמו OpenVMS.

אז התחלתי להשתמש בה קצת יותר לעומק ו־... התחלתי להפנים כמה דברים מעניינים:

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

עכשיו נסכם בקצרה

המשך...

לא רק GCC, או הניסיון הקצר עם קומפיילר של Intel.

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

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

רקע

אף אחד לא אוהב Vendor Lock In אפילו עם מדובר במשהו טוב כמו GCC או Linux. לכן, אני מוודא כי CppCMS ירוץ גם על BSD וגם על Solaris. אבל עם קומפיילר היו לי קצת יותר בעיות. יש מעט מאוד קומפיילרים טובים והנפוץ בין כולם הוא כמובן GCC.

הרבה זמן היו לי תהיות לגבי זה, אפילו ניסיתי להתקין SUN Studio על OpenSolaris ב־Virtual Box, אבל... בינתיים Solaris לא מתנהג יפה אפילו עם GCC.

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

המשך...

גם לחלשים מגיע... או CppCMS במערכות משובצות מחשב.

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

בעיות ביצועים של מערכות web יכולות להופיע לא רק עקב עומסים כבדים אלא גם בגלל מערכות מוגבלות. פה שפות מקומפלות כמו C/C++/Pascal‎ יכולות לתת מענה מצוין. אבל כרגיל חסרים כלים: Klone זה לא הרבה יותר ממשהו דמוי PHP ברק C.‏‏ Wt הוא בנוי כמו GUI.‏ Pascal? מישהו בכלל זוכר שפה כזו ;).

לכן CppCMS יתמוך גם בצרכים של מערכות משובצות מחשב והן:

  • צמצום תלויות למינימום.
  • עבודה מהירה.
  • גודל קובץ ריצה מינימלי.

לכן, לקחתי CppCMS ועשיתי לו ניתוח --- זרקתי את כל מנגנוני ה־cache, ביטלתי דחיסת zlib ובכל צמצמתי תלות ב־boost::iostreams, העפתי מודי עבודה מיותרים ב־embedded.

בנוסף, אם המפתח רוצה לבנות גרסת cgi אז בכלל, העפתי את כל הקוד שמטפל ב־thread-pool וכמובן גם בפרוטוקולים כמו scgi/fcgi. ובכן, התכנה הצטמצמה לגודל של 500Kb בלבד. שזה כ־10%--20% מגודל משערך PHP אופייני.

ובכך שוחררה גרסת CppCMS 0.0.4 שכוללת תמיכה במערכות משובצות מחשב.

שוחררה 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.

ניהול Sessions ב־CppCMS

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

הערה 05/01/2009: פורסם מדריך לעבודה עם sessions בויקי

אחד החלקים חשובים של כל תשתית פיתוח יישומי אינטרנט הוא --- תמיכה בניהול Sessions: שמירת מידע בין בקשות שונות. זה מאפשר להפוך פרוטוקול HTTP שהוא stateless בטבעו ל־statefull. זהו מרכיב הכרחי שקיימ ברוב התשתיות כמו Django או RoR.

בד"כ, אני נוהג להסתכל בפתרונות הקיימים, לבחור את הטוב ביותר וליישמו במסגרת האילוצים של CppCMS. גם הפעם הסתכלתי בשתי התשתיות הפופולריות RoR ו־Django והבנתי, שהפתרון שהם מציעים, כפי שהוא לא מתאים בגלל אילוצי ביצועים.

הדרך "זולה" ביותר, היא לשמור את המידע ב"עוגיות" אבל יש לה שני מגרעות:

  1. יש מגבלה של כ־4K נתונים שניתן לשמור בעוגיה (לא כולל קידוד וכד').
  2. RoR שנותנת אפשרות ניהול מידע בעוגיות, לא מבטיחה שהמידע השמור לא ייחשף ללקוח --- תחשבו על פתרון Captcha ששמור בתוך עוגיה..

שמירת המידע בצד השרת כרוכה בשתי בעיות:

  1. ניהול בסיס נתונים כלשהו לשמירת המידע --- שיכול להוות צוואר בקבוק.
  2. בעית הביזור שלו גישה מרובת משתמשים.

לכן, החלטתי שב־CppCMS אני אלך על פתרון קצת שונה שמשלב את התכונות של שניהם (עם שיפורים).

המשך...

העמוד הבא

העמוד הבא

דפים

נושאים