230 likes | 420 Views
Clever DropBox. תכנות מתקדם 2 89-211 תרגול מספר 1 תשע"א 2010-2011. אליהו חלסצ'י. בסמסטר א' הגשתם מטלות: שהגדירו את ה " איך צריך " ובהדרגה עברו לניסוח חופשי יותר שהגדיר רק את " מה צריך " החלוקה להגשות היתה קשיחה רמת החופשיות שלכם עלתה בהדרגה אך נותרה די קטנה עבדתם בצורת bottom up. הקדמה.
E N D
Clever DropBox תכנות מתקדם 2 89-211תרגול מספר 1 תשע"א 2010-2011 אליהו חלסצ'י
בסמסטר א' הגשתם מטלות: שהגדירו את ה "איך צריך" ובהדרגה עברו לניסוח חופשי יותר שהגדיר רק את "מה צריך" החלוקה להגשות היתה קשיחה רמת החופשיות שלכם עלתה בהדרגה אך נותרה די קטנה עבדתם בצורת bottom up הקדמה
מטלות הקורס: פרויקט אחד גדול הגשה בשני חלקים (milestones) עובדים על התרגיל בזוגות (לא שלשות) גישת Top down שימוש בכלים ובשיטות מהתעשייה שליטה שלכם על ה design ועל מה צריך הקדמה
תיקייה משותפת המסנכרנת קבצים אוטומטית על פני האינטרנט לכמה משתמשים עבודה בשיטת top down עבודה ע"פ high level design עבודה כחלק מצוות תכנות ושימוש ב version control בונוס לשימוש ב mercurial או ב git ביצוע בדיקות קוד תוך כדי בניית הפרויקט שימוש ב library \ plug-in שימוש בכלים נוספים שנלמד במהלך הסמסטר התמודדות עם הגדרות מתווספות לפרויקט מטרות הפרויקט
Clever DropBox: תיקייה מקומית מוגדרת כתיקיית dropbox כאשר נעשה שם שינוי כלשהו לקבצים העתקה, מחיקה, העברה, שינוי שם, שינוי תוכן וכו' על המערכת לזהות את השינוי ולעדכן את שאר המשתמשים המשתפים תיקייה זו בשינוי שקרה כך שלכל המשתמשים תהיה תיקייה זו מעודכנת ומסונכרנת תיאור המערכת
המערכת מורכבת ממס' רכיבים שרת תוכנה המאזינה לפניותיהם של קליינטים מחזיק מס' תיקיות משותפות ומיהם המשתפים הקליינט מודיע על שינוי בתיקייה משותפת כלשהי השרת מעדכן את התיקייה אצלו בשינוי שארע ומודיע למשתפים שיש עדכון למעשה מודיע להם שהם לא מסונכרנים השרת מספק web interface להורדה של הקבצים תיאור המערכת
מחשב אישי (קליינט) מריץ שירות ברקע שמאזין לדיווחים של מערכת ההפעלה על שינויים בתיקיית ה DropBox Event driven דורש JDK 7 (פרטים בסוף המצגת) בכל שינוי הוא דואג שהשרת יהיה מסונכרן יש לנהל את העדכונים של השרת בצורה חכמה הגדרות משתמש, plug-in... השירות אף מאזין לשרת למקרה של קבלת הודעה של חוסר סנכרון במקרה זה השירות יעדכן את התיקייה ע"פ הנתונים הקיימים בשרת יש לחשוב מהי הארכיטקטורה שעל פיה הקליינט יידע על שינויים תיאור המערכת
אז מה clever ב clever DropBox?? כדי למצוא קובץ לא נחפש אותו בתיקיות שבתוך DropBox למעשה כל הקבצים נמצאים שם בצורה שטוחה במקום, ננהל מערכת תגיות לקבצים שעל פיהן ניתן למצוא קבצים מבוקשים כל קובץ חדש מקבל תיוג אוטומטי (או מס' תיוגים) התיוג נקבע ע"פ מדיניות שאותחלה כ plug-in עליכם ליצור לפחות 3 כאלו תיאור המערכת
בפועל עליכם להחזיק טבלה הממפה תיוג לרשימת הקבצים שהתיוג הזה חל עליהם למה לא להיפך? את הטבלה ניתן לממש באמצעות hashing, זו תהיה עבודה מיותרת במקום, עליכם לעבוד מעל מסד נתונים באמצעות שכבת ORM - Hibernate כך, תוכלו למצוא בקלות חיתוכים כגון כל הקבצים השייכים ל "work" ול “BIU” ולא שייכים ל "2006" תיאור המערכת
פרט לשירות עליכם ליצור: GUI המאפשר את חיפוש הקבצים ע"פ תיוגים בתיקיית ה DropBox GUI קטן המהווה שלט רחוק עבור השירות המאפשר להפעיל, לעצור, להמשיך ולהפסיק את השירות נושאים למחשבה: כיצד יודעים מתי תוכן של קובץ השתנה? מה עשוי להתווסף לפרויקט? תיאור המערכת
מטלה ראשונה design ותשתית קוד: עליכם להגיש תרשים high-level design תרשימי uml לכל אחת מתתי המערכות, ע"פ design patterns עליכם לתאר אלו תוספות עתידיות צפיתם והיכן השארתם להם מקום ב design תשתית הקוד – interfaces כשהמימוש הפנימי רק מדפיס למסך שביצע את המוטל עליו כשמריצים את הקוד צריך לראות בהדפסות למסך את אתחול המחלקות השונות שיצרתם מטלות להגשה
מטלה שנייה: לאחר הגשת ה design יתפרסמו תוספותלפרויקט, עליכם להשלים את המוצר בכוונה לא נאמר לכם מראש מתי יבואו השינויים כדי שלא תחכו עם כתיבת הקוד עליכם לבצע בדיקות יחידה כדי לוודא שהחלקים השונים אכן עובדים עליכם להגיש דו"ח פרויקט ע"פ הפורמט שינתן בהמשך מטלות להגשה
לצורך אחידות בבדיקה ושימוש בכלים מסוימים התרגיל ייכתב ב java או ב scala ניתן ואף רצוי להשתמש בכלים מוכנים התוכנית אינה GUI oriented וניתן להשתמש בעורכים וויזואליים כגון העורך של net beans ל swing עליכם להשתמש ב version control ואף להציג זאת בדו"ח הפרויקט בונוס ל git או mercurial דגשים
עליכם לחלק את העבודה בצורה הוגנת תצטרכו לפרט על כך בדו"ח אתם עשויים לגשת להגן על הפרויקט תכננו מראש את העבודה על פני הסמסטר לתוך לוח זמנים תשאירו טווח ביטחון, ותשדלו לעמוד בזמנים שקבעתם אם בכל שבוע תעבדו קצת על הפרויקט ולא תחכו לרגע האחרון – לא תהיה לכם בעיה של זמנים ניתן להסתכל על התרגולים כדי לנחש איזה חומר יתווסף לפרויקט, ולתכנן את העבודה בהתאם דגשים
הורדה מתוך https://jdk7.dev.java.net/ נבחר ב Latest JDK 7 binary snapshots נבחר את הגרסא המתאימה למערכת ההפעלה שלנו (יש גרסאות גם ל 64 bit) לדוגמא עבור לינוקס נוריד אתjdk-7-ea-bin-b85-linux-i586-04_mar_2010.bin ועבור חלונות נוריד אתjdk-7-ea-bin-b85-windows-i586-04_mar_2010.exe הוספת JDK1.7.0
עבור חלונות ייפתח לנו wizard התקנה עבור לינוקס נבצע את הצעדים הבאים: נפתח את ה terminal במקום בו שמרנו את הקובץ נפעיל: sh jdk-7-ea-bin-b85-linux-i586-04_mar_2010.bin תנאי הרישיון יופיעו נלחץ Q ליציאה ו yes לאישור ההתקנה תיצור לנו את התיקייה jdk1.7.0 עדיף לפתוח לה את כל ההרשאות ע"יchmod 777 jdk1.7.0 –R אפשר להעביר את התיקייה לאן שרוצים הוספת JDK1.7.0
ניצור פרויקט חדש ב eclipse, ונרצה להחליף את ה JRE 1.6 ב 1.7 לכן נכנס למאפייני הפרויקט לתוך ה build path ונבצע remove ל JRE1.6 הוספת JDK1.7.0
כעת נבחר add library בחלון שיפתח נבחרJRE System Library הוספת JDK1.7.0
נסמן את Alternate JRE ונלחץ על installed JREs הוספת JDK1.7.0
אם אין לנו את האופציה לבחור את JRE 1.7.0 אז נלחץ על add נבחר standard VM ונלחץ next הוספת JDK1.7.0
נלחץ על directory בלינוקס נבחר את מיקום התיקייה jdk1.7.0 שבחרנו קודם בחלונות נבחר אתC:\Program Files\Java\jre7 הוספת JDK1.7.0
כעת נסמן את jdk1.7.0 ונאשר נוודא שגם בחלון הקודם ה alternate jre הוא jdk1.7.0 הוספת JDK1.7.0
כעת הפרויקט שלנו מוגדר לעבוד עם JRE בגרסא 1.7.0 ולכן אנו יכולים להשתמש בכל הכלים החדשים שנוספו \ השתפרו ב java בפרט בספריות NIO המאפשרות לנו האזנה יעילה למערכת ההפעלה הגרסא ל ubuntu מגיעה גם עם תיקייה בשם sample ובה דוגמאות קוד מועילות ביותר לפרויקט (ניתן גם למצוא אותן באינטרנט) הוספת JDK1.7.0