הבלוג של ארתיום
בלוג על לינוקס, תוכנה חופשית, מוזיקה, סלסה, ומה לא!
שדרוג ל־Lenny
הגיע זמן לשדרג ל־Lenny, אומנם הוא הגיע כבר לפני הרבה זמן אבל Lenny עוד לא הגיע ;). אקדים ואומר, זה היה אחד השדרוגים הפשוטים ביותר שיצא לי לעשות אי פעם.
- כששדרגתי Breezy ל־Dapper השדרוג נתקע באמצע ומצאתי מערכת לא שמישה, בלי חיבור לאינטרנט, אם כי בסוף הצלחתי להחלץ מזה.
- כששדרגתי Sarge ל־Etch בגלל התנגשויות חצי מהחבילות הוסרו כולל Office ו־Gnome והייתי צריך להחזירם באופן ידני, שלא לדבר על כמה פעולות אחרות שהיה צריך לעשות.
- שדרוג ל־Lenny היה לפי הכתוב... פשוט לשדרג.
קודם כל עברתי על הוראות שדרוג. מי שחושב ש־apt-get dist-upgrade ועושה את העבודה טועה!
תהליך שאפשר לסכם אותו בקצרה בשני שלבים:
- שדרוג aptitude לחדש.
- ביצוע aptitude dist-upgrade.
אם לא תלכו כך לא תצליחו, חייבים קודם את ה־aptitude החדש.
בנוסף לבעיות הרגילות בשדרוג, היו לי עוד כמה נקודות לציון:
- היה לי רק 1G פנוי במחיצת / שלא הקל על התהליך
- אני משתמש גרסת vserver של הקרנל, כך שעבורו אין דרייבר nvidia כחבילה.
נתחיל בסיפור
המשך...לא רק GCC, או הניסיון הקצר עם קומפיילר של Intel.
בד"כ אני לא נוהג לכתוב כאן הרבה על טכנולוגיות סגורות, במיוחד לכתוב דברים טובים. אבל הפעם יהיה קצת שונה. אעשה סקירה קצרה של קומפיילר של אינטל.
רקע
אף אחד לא אוהב Vendor Lock In אפילו עם מדובר במשהו טוב כמו GCC או Linux. לכן, אני מוודא כי CppCMS ירוץ גם על BSD וגם על Solaris. אבל עם קומפיילר היו לי קצת יותר בעיות. יש מעט מאוד קומפיילרים טובים והנפוץ בין כולם הוא כמובן GCC.
הרבה זמן היו לי תהיות לגבי זה, אפילו ניסיתי להתקין SUN Studio על OpenSolaris ב־Virtual Box, אבל... בינתיים Solaris לא מתנהג יפה אפילו עם GCC.
אז בסופו של דבר אחרי הרבה ייסורים והתקלויות החלטתי לעשות בדיקה ל־icc. התהליך היה מייגע, אבל בסופו של דבר קיבלתי כמה דברים ממש נחמדים שאספר עליהם כאן.
המשך...גם לחלשים מגיע... או CppCMS במערכות משובצות מחשב.
בעיות ביצועים של מערכות 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 פנוי?
בימים אחרונים אני מנסה לתת ל־CppCMS עוד נישה פוטנציאלית והיא מערכות משובצות מחשב. בד"כ שפות כמו php ו־python כבדות עבור מערכות כאלה. פה בדיוק סביבת פיתוח נוחה יכולה לעזור.
בנוסף, קיימים מספר פתרונות דומים בשוק והם Wt ו־Klone. אבל, Klone לא נותן כלים ש־CppCMS נותן ו־Wt בנוי בצורה שלטעמי שגויה -- גישה של מפתח GUI ולא web.
אז, עשיתי כמה שיפוצים ב־CppCMS כך שהוא יוכל לתמוך גם בסביבות משובצות מחשב, ביניהם: ביטול רכיבים מיותרים, למשל, אם בונים CGI טהור, אז אין מרכיב s/f-cgi, ניהול threads וכד'. הוצאה מערכת cache ודחיסה עבור יישומי כאלה כי בד"כ זיכרון הוא יקר ועוד.
לאחר מספר אופטימיזציות, הצלחתי להגיע ליישום בגודל של כ־550K שזה כמעט חצי ממה ש־Wt הצליחו להגיע.
מה נותר? לבדוק את היישום על פלטפורמת ARM אמתית. כיום, כל הבדיקות נעשו בעזרת qemu-arm. לכן, אני זקוק לעזרתכם.
מה מדרש?
כל מי שיש לו גישה ל־ARM עם לינוקס מותקן עליו, אנא עִזרו:
- הורידו את הקובץ הבא.
- העבירו אותו לסביבת ARM שלכם ותפרסו.
תנסו להריץ:
./hello.dynamic -c config.txt
זהו קובץ ריצה שמקומפל דינאמית רק עם ספריות בסיסיות כמו libstdc++. אם הוא לא מצליח בגלל העדר ספריות תנסו:
./hello.static -c config.txt
בכל מקרה, אמור להתקבל פלט של Headers של cgi ותוכן HTML עצמו.
- אם יש אפשרות, אנא בדקו את זמן הריצה עם time.
- אם במקרה, יש לכם שרת web בסביבה שלכם אני אשמח אם תוכלו להריץ את ה־cgi שבספריה (רק שעדכנו את השם של קובץ ריצה לזה שהצליח (סטטי או דינאמי) בהתאם.
אם הכל יעבוד ואם תהיה נכונות מצדכם, אני אשמח להכין סדרה של סקריפטים ובדיקות מול ARM כדי לוודא שכל המרכיבים הנדרשים עובדים כמו sessions, תבניות ועוד.
תודה רבה, מראש!
מדוע אתה מפתח את זה בחינם?
בהמשך לכתבה של ליאור קפלן "עובדים בחינם" רציתי לפתוח "שרשרת תגובות" בבלוגי FOSS הישראליים --- מדוע אתה/את מפתח/ת את זה בחינם?
כאשר אני מבקש לציין --- שם הפרויקט שאתה עובד עליו/תורם עבורו והסיבות.
BiDiTeX --- תמיכה ב־bidi (כיווניות) עבור LaTeX בעברית.
יש כאן שתי סיבות העיקריות:
- אני מעדיף לכתוב ב־LaTeX על כתיבה בכל מעבד תמלילים, כנ"ל כשאני כותב בעברית. לכן, כתבתי תכנה קטנה שמפשטת את העבודה בצורה מאוד משמעותית.
- אני מעוניין בהתפתחות של LaTeX בעברית, כדי שהתמיכה בו תלך ותשתפר בעתיק. בלי תמיכה סבירה בכיווניות, זה פשוט לא יקרה. אף אחד לא יעבוד עם LaTeX.
קזית 3 --- Knoppix בעברית.
יש שלוש סיבות:
- בתקופה שפיתחתי את קזית, היה לי מחשב נייד שעבדתי עליו הרבה עם Knoppix, אבל לא יכולתי להתקין Linux, כי זה היה מחשב מהעבודה. ב־Knoppix הכל היה סביר למעט הבעיה העיקרית --- העדר תמיכה כלשהי בעברית. לכן, החלטתי לערצב גרסה משלי, כך הגעתי לפיתוח קזית.
- חשבתי שהפיתוח יהיה הרבה יותר מהיר מאשר יצא בפועל. אבל כשהייתי בחצי הדרך היה כבר חבל לעצור. לכן המשכתי.
- כשהבנתי שיהיה לזה ביקוש, פשוט נסחפתי ע"י הקהילה וגם רציתי לבנות לעצמי מוניטין מסוים; וכפי שציינתי היה חבל לעצור אחרי שכל כך הרבה זמן הושקע. (זה נשמע מרשים --- מפתח הפצת לינוקס... לא?)
CppCMS תשתית לפיתוח web ב־C++.
פה זה קצת יותר מורכב:
- בהתחלה זה היה הבנה שכתיבה ב־PHP מביאה ליצירת Bloatware אמתי ושמו Wordpress, שעובד מאוד לאט.
- אחר כך, היה רעיון של Prove of concept --- הוכחה שאפשר לפתח אתרים בקלות גם ב־C++ שיהיו הרבה יותר מהירים וגם שזה לא יהיה מסובך.
- ההבנה שבעצם יש פה מציאה אמתית --- זה כלי שיש לו ביקוש אמתי בשוק אמתי.
- הצורך להביא את הכלי למצב של Production Ready (שכבר די הצלחתי בזה), כדי לבנות מסביבו, אולי (בתקווה) בשלב מסוים, עסק...
אני מעביר את השרביט לאילן שביט, שחר שמש, מאיר קריחלי, עידו ואחרים שרוצים להצטרף לשרשור.