Asp.Mono על לינוקס? עוד לא...

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

תוך פיתוח CppCMS תמיד רצית לעשות השוואת ביצועים מול אחת הטכנולוגיות הפופולריות בתחום Web:‏ Asp.Net. מצאתי מערכת בלוגים: BlogEngine.Net‏ שתומכת ב: mono רצה גם על Linux ועובדת מול MySQL --- קרי כל מה שצריך כדי לעשות השוואה מול CppCMS.

ההתחלה הייתה די מבטיחה, הוראות ההתקנה לא היו מסובכות, מצאתי בלוג אחד אמתי שרץ על Ubuntu ו־Apache mod_mono, ראיתי הוראות התקנה עבור Ubuntu והתחלתי לעבוד.

קודם כל התקנתי mono 1.9.1 מ־backports של Etch. הבעיה הראשונה שנתקלתי בה, הייתה בעיה של התקנה שלי --- גרסת הקומפיילר לא תאמה גרסת mono. אחרי שפתרתי אותה, הצלחתי להריץ את היישום כאשר XML משמש כבסיס נתונים עבור הבלוג.

אחרי זה החלטתי להפעיל את MySQL. שוב בעיות, הפעם יצירת טבלאות --- מי שבדק את זה על MySQL ב־Windows לא לקח בחשבון שבלינוקס שמות הטבלאות הן case sensitive --- זה נפתר די בקלות. הבעיה השניה הייתה לחבר את MySQL ל־Mono.

המשך...

עכשיו הגיע הזמן שבו אני רוצה לשדרג...

ב־יום חמישי, 7 באוגוסט 2008, מאת ארתיום; פורסם תחת: תכנה חופשית, לינוקס, פיתוח, תכנה ומחשבים; ‏6 תגובות

כש־Debian Etch שוחרר לפני כשנה וחצי, מחקתי את Ubuntu Dapper שהיה לי אז והתקנתי גרסה יציבה של Debian. מאז אני עובד אתה למעט מספר מצומצם של חבילות שלקחתי מ־Backports או עשיתי להם Backport בעצמי --- בעיקר מספר ספריות פיתוח ו־OpenOffice.

אחרי שעברו כמעט שנה־וחצי אני התחלתי להרגיש: חייבים לשדרג. לאחרונה אני התחלתי לקחת כבר לא מעט דברים מ־Backports בהם mono 1.9.1 לניסויים ועוד כל מיני דברים.

הסיבות העיקריות שאני מרגיש צורך לשדרג הם:

  • אני רוצה ספריית boost 1.35 --- יש יותר מידי פיצ'רים נחמדים.
  • אני רוצה ספריית asio (חלק מ־boost).
  • אני רוצה gcc 4.3 עם תמיכה משופרת ב־C++0x.
  • אני רוצה להתכנס לסביבת ספריות יציבה עבור CppCMS (שחלקן חסרות לי בגרסה יציבה של דביאן).
  • אני רוצה Firefox 3... אולי אפילו אחזור להשתמש בו אחרי תקופה ארוכה עם Epiphany.
  • אני רוצה mono חדש בצורה מסודרת כדי לעשות כל מיני ניסויים1
  • אני רוצה texlive 2007

אז אחרי שנה וחצי אני הרגשתי... שאני צריך לשדרג, אבל מה? הייי, עוד מעט Lenny ישוחרר!

עכשיו כמה זה עלה לי, לעבוד עם הפצת לינוקס מיושנת לאורך כל־כך הרבה זמן?

  1. עלה לי בהרבה שקט נפשי
  2. עלה לי בכמה backports.
  3. עלה לי בזה שהמחשב פשוט עובד(tm)

אבל נגיד, מה היה קורה אם הייתי עובד עם Lenny, נגיד חצי שנה אחרי שחרור הגרסה?

הייתי צריך לוותר על linux-vserver לאורך תקופה של כמעט שנה. הבלוג הזה רץ בתוכו. שנית, הייתי צריך לעבור באג ספרות הודיות. הייתי צריך לבצע שדרוגים שהיו שוברים לי משהו אחד לחצי שנה.

ובכן, טוב שבחרתי ב־Etch... נקווה ש־Lenny לא יתעכב והגרסה אחריו תצא משהו כמו שנה־וחצי אחרי.


  1. לא MS לא שכנעו אותי, במהלך אוגוסט פינגווין, לעבוד לטובת אינטרפורביליות‏(tm) או שיש להם אחלה טכנולוגיה שאני מת ללמוד, פשוט אני רוצה להכיר את האויב מקרוב :-).

כמה התכנה שוקלת או ניהול זכרון

ב־יום רביעי, 6 באוגוסט 2008, מאת ארתיום; פורסם תחת: לינוקס, פיתוח, תכנה ומחשבים; ‏5 תגובות

בעקבות המאמר של עידו על גודל של קובץ ריצה בפסקל ראיתי שיש מספר אי הבנות בנושא בכמה זיכרון התכנה משתמשת?

כיצד קבצי־ריצה וספריות נטענות?

כל תכנה או ספריה נטענת לזיכרון ע"י קריאה לפונקצית מערכת mmap (או פונקציות במערכות אחרות). מדוע mmap ולא קריאה לפונקציה כמו read? הסיבה היא פשוטה. נקח לדוגמה bash. אחת התכנות ה"נטענות" ביותר בלינוקס. כשאני קורא לפונקציה mmap על קובץ הריצה של bash בפעם הראשונה, המערכת מקצה דפי זיכרון וטוענת את הקובץ אליהן, אבל כש־mmap נקראת בפעם השנייה, דפי־הזיכרון שהתכנה מקבלת הם בדיוק אותם דפים פיזיים שהיו לפני. לכן, גם אם יש לי 10 תכנות של bash רצות במקביל, בפועל, היא תיטען רק פעם אחת (ליתר דיוק, רק קוד הריצה שלה ייטען פעם אחת).

אותו דבר קורא לספריות. כשתכנה א' טוענת ספריית gtk ותכנה ב' טוענת את הספרייה, הקוד נשאר משותף רק הנתונים הם שונים.

אז בואו נראה לדוגמה טבלה: מערכת בה רצות 3 תכנות: 2 bash ו־1 calc. נסתכל ככמה כל אחת משתמשת וכמה השימוש קיים בפועל.

זיכרון וירטואלי

Process Data Code           Libraries      Sum
----------------------------------------------
bash 1  1K,  /bin/bash 10K, /lib/libc 10k  21k
bash 2  1K,  /bin/bash 10K, /lib/libc 10K  21k
calc 1  1K,  /bin/calc 5K,  /lib/libc 10K  16k
----------------------------------------------
Seems to be                                57K

זיכרון פיזי

Real Memory
---------------
/bin/bash  10K
/bin/calc  5K
/lib/libc  10K
data1      1K
data2      1K
data3      1K
--------------
overall    28K

לכן, הוצאה של כל קוד משותף לספריות דינמיות זאת פעולה שבסופו של דבר חוסכת זיכרון. למשל, כל יישומי KDE בסופו של דבר יטענו עותק יחיד של kdelib ועותק יחיד של qt.

עכשיו קצת פרטים טכניים למי שמעוניין.

המשך...

אוגוסט פינגווין 2008, או "אני לא גיק!"

ב־יום שישי, 1 באוגוסט 2008, מאת ארתיום; פורסם תחת: תכנה חופשית, תכנה ומחשבים; ‏12 תגובות

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

אירועים מעניינים בכנס

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

הרצאה של אמיר שבט מ־Microsoft

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

המשך...

על מערכת ה־Cache של CppCMS.

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

אחד המרכיבים המשפיעים על ביצועים של תשתית לפיתוח אתרים היא מערכת ה־Cache. המערכת שיושמה ב־CppCMS כוללת מגוון אופציות ניהול מתקדמות, שלא זמינות בחלק מתשתיות פיתוח אתרים נפוצות כמו Django‏:

  1. מערכת טריגרים לרענון ה־Cache.‏
  2. ניהול תלויות (כמעט) אוטומטי שמקל על ניהול מידע קונסיסטנטי.

לקריאה נוספת: מערכת Cache: מבנה פנימי (אנגלית)

העמוד הקודם

העמוד הבא

דפים

נושאים