הרבה פיקסלים נשפכו כבר על הנושא בדפי האינטרנט, מי שירצה לקרוא תיאוריה יכול למצוא כאן וכמובן בגוגל. אבל בכל זאת גיליתי שיש דברים שעדיין לא כל כך לבצע, אז החלטתי לכתוב כמה פוסטים מסכמים על העניין.
רק בקיצור נמרץ נזכיר שמדובר על שיטת עבודה שבה התיכנות שלנו משולב באופן שוטף בפרוייקט הכולל, מה שהוא שכל קוד שכתבנו ועשינו צ’ק אין לשרת, עובר קימפול ביחד עם שאר הקוד באפליקציה (שלא שינינו משהו בפרוייקט אחד, ופרוייקט אחר שתלוי בו עכשיו לא יתקפמל), עובר את כל הטסטים ( כדי לבדוק שלא דפקנו שום דבר בדרך), ובדיקה שאכן הטקסטים שלנו בודקים את כל הקוד ושלא שכחנו לבדוק את הקוד החדש (אלא אם כן אתם מאלו שלא כותבים קוד לפני שכותבים את הבדיקה :))
מה יוצא לנו מזה? ביטחון, עד כמה שאפשר, שבכל רגע הקוד שנמצא בצ’ק אין עובד עם כל האפליקציה, ושבכל רגע יש לנו גירסה עדכנית אם אנו רוצים.
איך עושים את זה? פשוט מאוד, יש תוכנות להורדה, שעוקבות אחרי שינויים שאנו עושים בקוד, או שרצות בזמנים קבועים (כל לילה למשל) ומקמפלות את הקוד, מריצות בדיקות, ועוד כמה דברים נחמדים.
שתי התוכנות העיקריות הן cruise control שהיא תוכנת קוד פתוח, ו team city שהיא תוכנה עם רשיון, אך גירסה ה professional שלה היא בחינם עד ל 20 משתמשים (תבדקו בדיוק את הפרטים שם).
לצורך הדוגמאות בחרתי להשתמש ב team city.
1. ההתקנה די פשוטה, יש הוראות באתר שלהם. מה שכן, עדיף לבחור פורט אחר ולא הדיפולטי שלהם שהוא 80
2. לאחר ההתקנה נעשה לוגין, וניגש ליצירת פרוייקט חדש
3. לאחר היצירת הפרוייקט נתחיל בהגדרות
4. תנו שם לפרוייקט, ותיאור אפשרי. אפשר להשאיר את השאר ריק
5. הקליקו על “VCS Settings” כדי להגדיר את הסורס קונטרול.
אני משתמש ב Visual Source Safe, אז אם יש לכם סוג אחר, תצטרכו לחפש את ההגדרות המתאימות…
תבחרו את סוג השרת:
בנתיב לקובץ srcsafe.ini שים את הנתיב המלא לקובץ של כל הסורס סייף, לאו דווקא הפרוייקט הנוכחי. אם הוא נמצא על שרת פשוט הקלידו את הנתיב לשרת:
\\ServerName\directory\srcsafe.ini
עבור הפרוייקט תכתבו את השם של הפרוייקט (שימו לב- פרוייקט, ולא סולושן) שעבורו אנו בונים את הקונפיגורציה הנוכחית, כמו שהוא מופיע ב GUI של הסורס סייף – אם אתם משתמשים בשמות דיפולטים בדרך כלל אז זה יהיה משהו כזה:
$/ProjectName.root/ProjectName
מלאו את שם המשתמש והסיסמה שלכם עבור הסורס סייף ואתם יכולים לבדוק אם הפרטים נכונים על ידי הקלקה על “Test Connection”. כמובן ללחוץ על שמירה בסוף.
6. כעת נבחר את דרך קימפול ובניית הפרוייקט. תלחצו על הלינק Runner שיש בצד:
לשם התחלה נבחר במה שאנו מכירים – שזה sln2005 או sln2008 תלוי באיזה גירסה של ויז'ואל סטודיו אתם משתמשים.
בתיבת הטקסט הראשונה (solution file path)תכניסו את שם הסולושן שזה ProjectName.sln בדרך כלל.
בתיבה working directory תכניסו את שם התיקיה בה נמצא הפרוייקט, שזה בדרך כלל פשוט שם הפרוייקט.
בתיבה Targets תכתבו Rebuild
שמירה ואתם מוכנים לצאת לדרך!
בצד ימין למעלה יש כפתור עם המילה Run, תלחצו עליו
עכשיו תלחצו על הטאב הגדול בצד שמאל בשם Projects – שם מופיעים כל הפרוייקטים שלנו, שזה כרגע רק אחד בעצם. אתם יכולים לראות
את תהליך הריצה והבניה. אם הכל עבד תקין יהיה לנו V ירוק ונחמד
אם לא, אז תלחצו על הודעת השגיאה כדי לראות את הלוג ומה לא עבד.
מה שבעצם קורה הוא שכל קבצי הפרוייקט נמשכים מה source control לתיקיה זמנית, ושם מקומפלים בהתאם להגדרות. המטרה שלנו כרגע היא לדעת שתמיד יש לנו אפליקציה שמתקמפלת.
אם ירצה השם בפעם הבאה נוסיף גם תיזמונים וטריגרים לקימפול, וכן נוסיף הרצה של הבדיקות שלנו כדי לדעת שלא רק שהכל מתקמפל, אלא שגם לא הרסנו שום דבר בשינוי האחרון שעשינו לקוד.
Be the first to rate this post
- Currently 0/5 Stars.
- 1
- 2
- 3
- 4
- 5
לא היה כל כך טוב בפעם האחרונה…
האמת היא שאני מאוד אוהב לעבוד עם התוכנה הזאת, ולא באתי להגיד דברים רעים, אבל כדי לחסוך מכם ניסיון מר אני אחלוק אתכם מה שעברתי לפני כמה ימים…
בניתי לאשתי איזה אתר קטן, ולאחר מחשבות הגיע למסקנה שיתכן שהוא יגדל ונצטרך לשנות דברים אז כדאי להשתמש ב dependency injection. מכיוון שאני מכיר את StructureMap ודי אוהב לעבוד איתו אז כמובן שבחרתי בו.
טרחתי אפילו לבדוק באתר שלהם שאין בעיה להריץ על שרת אירוח משותף.
טוב, אז עשיתי כמה רפקטורים לקוד, בדרך שיניתי עוד כמה דברים, העליתי לשרת, וקיבלתי את דף השגיאה… שיניתי בווב קונפיג כדי שיציג את השגיאה והתברר שהאסמבלי של StructureMap לא יכול לעבוד בסביבה שלא מאפשרת הרשאות מלאות…
System.Security.SecurityException: That assembly does not allow partially trusted callers.
ניגשתי לגוגל, התברר שאני לא היחיד עם הבעיה, ניגשתי שוב לאתר שלהם כדי לבדוק שוב שאכן ניתן להריץ גם על שרת משותף ללא כל ההרשאות…
טוב, השארתי לבחור ההוא הודעה בבלוג אבל בינתיים אני בלי אפליקציה…
כמובן שלא היה לי גיבוי די מעודכן, וגם לא רציתי למחוק את השינויים הנוספים שעשיתי, אז מהר הלכתי לחפש כלי חלופי.
מצאתי את NInject, בדקתי שניתן להריץ על שרת משותף, הורדתי , מהר התאמתי את הקוד שלי, ו…
System.Runtime.CompilerServices.ExtensionAttribute' is defined in
multiple assemblies in the global alias; using definition from 'c:\xxx
\Ninject-1.0-release-net-2.0\Ninject.Core.dll
מתברר שיש להם איזה באג שכדי שהתוכנה שלהם תוכל לרוץ עם דוט נט גירסה 3.5 צריך להוריד את המקור , לעשות כמה שינויים ולקמפל מחדש, שזה אולי לא סיפור גדול אבל זה עדיין לא מובטח שזה יעבוד, וגם הייתי כבר די לחוץ כך שזה ממש לא התאים באותו רגע.
חזרה לגוגל, מצאתי משהו נחמד בשם Autofac, שוב בדקתי שניתן להריץ, הורדתי, התאמתי את הקוד, העליתי לשרת, ו… אכן עלה הדף הראשי!!!
טוב, אני מתחיל לבצע כמה פעולות ומקבל הודעת שגיאה, משהו בקוד שלי לא תקין… מוזר… הכל עבד ונבדק… טוב, אולי עם כל השינויים דפקתי משהו, מסדר את זה אצלי על המחשב ומתחיל שוב בדיקות מקומיות.
אני עובד עם MVC, ואם אני מקבל הודעת שגיאה ש Action מצפה לפרמטר ID ולא קיבל אותו, ואני רואה בדיבאג שהפרמטר שם, משהו קצת מוזר…
טוב, חשבתי לעצמי, עכשיו זמן לחץ אין זמן לבדוק את זה, פשוט תוריד את הפרמטר מהמתודה ותקרא אותו בפנים בעצמך מתוך ה Request, וכשיהיה זמן נחקור את זה. עשיתי.
ממשיך לרוץ באפליקציה, שוב שגיאה… שוב פרמטר חסר, שוב מתקן וחושב לעצמי, איזה מתכנת אתה…
ממשיך לרוץ, עכשיו ה UpdateModel מעדכן ערכים ריקים, לא זורק שגיאה, פשוט שם ערכים ריקים…
הראש כבר לא עובד טוב אז נפטרתי גם מ UpdateModel ועדכנתי ידנית…
וכך עוד דבר ועוד דבר…
עד שנפל האסימון!
זה לא אני! זה Autofac! איכשהו היא מצליחה לדפוק את הנתונים שמגיעים לקונטרולרים שלי!!
אולי לא הגדרתי לא טוב, אין לי מושג, זה גם לא כל כך משנה לי, פשוט זה לא אמור לקרות!! היא בסדר הכל אמורה לספק פרמטרים לקונסטרוקטור וליצור אובייקט, עובדה שזה עבר תקין עם StructureMap אצלי על המחשב!
החלטתי לבדוק את החשד שלי, הורדתי את Autofac עבור קונטרולר אחד, ואכן! גם הפרמטרים מגיעים, גם ה UpdateModel חזר לעדכן ועוד כמה דברים מוזרים חזרו להיות תקינים!
מהר הורדתי את Autofac וחזרתי לשיטה הפרימיטיבית שבה הכל עבד!
לסיכום אין לי מה להגיד חוץ מהדברים הרגילים שתמיד אני אומר לעצמי- תכין גיבויים קבועים ולפני כל שינוי ולעשות בדיקת היתכנות לפני שימוש במשהו חדש…
בכל מקרה אני חושב StructureMap זה מוצר מעולה, מאוד נוח לעבוד איתו, הוא מהיר ויש בו די הרבה אפשרויות. גם Autofac נראה לי נחמד ממה שהספקתי לקרוא באותו הערב, למרות שלא יצא לעבוד איתו…
Technorati Profile
Be the first to rate this post
- Currently 0/5 Stars.
- 1
- 2
- 3
- 4
- 5
למי שלא מכיר, התוכנה הינה תוסף לויזו'אל סטודיו שמאפשרת בלחצן ימני פשוט להעתיק את כל הטקסט שמופיע ולשמור אותו בתור HTML כולל העיצוב והצבעים המקוריים, עם זה בעצם משתמשים הרבה (כולל אותי...) כשרוצים להציג דוגמאות קוד בדף HTML.
שיפצרתי קצת את המקור – קצת הפריע לי שבכל פעם הוא יוצר שמות אחרים ל css class שהוא נותן שם, והאופציה השניה שם היא פשוט לדחוף את כל הסטייל ישירות ל HTML, שזה מפוצץ את גודל הדף וגם מונע שינויים עתידיים, אז הוספתי שם שאם כבר הוא השתמש באיזה css class בעבר אזי הוא ישתמש בה שוב עבור אותו סטייל, וגם שניתן יהיה לערוך את השמות שהוא נותן לסטיילים.
לא הצלחתי ליצור קשר עם קולין קולר, זה שכתב את המקור, אז אני מקווה שלא איכפת לו...
להורדת הפרוייקט
להורדת ההתקנה
Currently rated 5.0 by 1 people
- Currently 5/5 Stars.
- 1
- 2
- 3
- 4
- 5