הכרות עם Java.

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

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

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

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

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

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

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

המשך...

שדרוג ל־Lenny

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

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

  • כששדרגתי Breezy ל־Dapper השדרוג נתקע באמצע ומצאתי מערכת לא שמישה, בלי חיבור לאינטרנט, אם כי בסוף הצלחתי להחלץ מזה.
  • כששדרגתי Sarge ל־Etch בגלל התנגשויות חצי מהחבילות הוסרו כולל Office ו־Gnome והייתי צריך להחזירם באופן ידני, שלא לדבר על כמה פעולות אחרות שהיה צריך לעשות.
  • שדרוג ל־Lenny היה לפי הכתוב... פשוט לשדרג.

קודם כל עברתי על הוראות שדרוג. מי שחושב ש־apt-get dist-upgrade ועושה את העבודה טועה!

תהליך שאפשר לסכם אותו בקצרה בשני שלבים:

  • שדרוג aptitude לחדש.
  • ביצוע aptitude dist-upgrade.

אם לא תלכו כך לא תצליחו, חייבים קודם את ה־aptitude החדש.

בנוסף לבעיות הרגילות בשדרוג, היו לי עוד כמה נקודות לציון:

  1. היה לי רק 1G פנוי במחיצת / שלא הקל על התהליך
  2. אני משתמש גרסת vserver של הקרנל, כך שעבורו אין דרייבר nvidia כחבילה.

נתחיל בסיפור

המשך...

לא רק 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 שכוללת תמיכה במערכות משובצות מחשב.

זקוק לעזרה מקהילה או... למי יש 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, תבניות ועוד.

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

העמוד הקודם

העמוד הבא

דפים

נושאים