› פורומים › אפיון ופיתוח פריוריטי › התייעצות בתכנון תוכנית להפעלת ממשק בקבלת קובץ
- This topic has 6 תגובות, 2 משתתפים, and was last updated לפני 7 שנים, 3 חודשים by yitzchok.
- Post
-
- אוגוסט 15, 2017 בשעה 1:16 pm
שלום חברים,אני מעוניין לכתוב תוכנית לטעינת קבצים שמתקבלים דרך שרת FTP ולהפעלת ממשק למסך.
בתייקיה מתקבלים 3 קבצים שונים. כל הקבצים נטענים באמצעות אותו ממשק למסך.
התוכנית תרוץ ותאסוף בכל פעם קובץ ותריץ ממשק למסך.
בסיום הריצה התוכנית תעביר הקבים שנטענו לתיקיית היסטוריה.
במצב בו התקבלו 3 קבצים , התוכנית תרוץ כל חצי שעה ותטען את הקבצים למסך.
במידה והתקבל קובץ חדש מאותו הסוג , התוכנית תמחק את הקובץ הישן מביניהם ותמשיך לטעון את כל הקבצים כל חצי שעה.
לדוגמא:
בשעה 8 בבוקר התקבלו 3 קבצים : 1-X-1 Y-1 Z
בשעה 8 וחצי התוכנית תטען את כולם למסך.
מכאן כל חצי שעה התוכנית תבצע טעינה.
בשעה 12 התקבל קובץ X חדש. X-2
התוכנית תעביר את קובץ X-1 לתיקיית היסטורייה
ותטען את כל הקבצים X-2 Y-1 Z-1 למסך.
מכאן כל חצי שעה התוכנית תבצע טעינה.
בשעה 15 התקבלו 3 קבצים חדשים X-3 Y-2 Z-2
התוכנית תעביר את כל הקבצים X-2 Y-1 Z-1 לתיקיית היסטוריה
ותטען את כל הקבצים X-3 Y-2 Z-2 למסך כל חצי שעה וכך הלאה..כיצד הייתם מתכננים תוכנית שכזו?
אני חשבתי על תוכנית אחת שרצה וקוראת את התיקייה ב-FTP , בודקת מה הקבצים הקיימים, האם יש חדשים . מעבירה אותם לתיקיות בהתאם. לדוג' כל קובץ שאמור להיטען יעבור לתיקייה מיועדת ושאר הקבצים לתיקיית היסטוריה.
תוכנית שנייה רצה על תיקיית הנטענים ובלולאה מפעילה ממשק כל פעם עם קובץ אחר.
איך אתם הייתם מתכננים זאת?
- Replies
-
- אוגוסט 15, 2017 בשעה 2:20 pm
בגלל שאני רגיל להשתמש בכלים אחרים מעבר לפריוריטי, זה סוג דבר שאני – אישית – הייתי עושה בחבילה של SQL Server Integration Services.אני לא אומר שאי אפשר לנהל תהליך כזה בפריוריטי, אבל זה יוצא מאוד מורכב.
הייתי מטפל בכל הקטע של FTP וניהול הקבצים בכלים חיצוניים, ואז הייתי דואג בסוף להפעיל את הטעינה.אפשר אולי לעשות את כל זה ב-powershell. תלוי מאוד במה שאתה יודע לעשות אבל הייתי חושב שכדאי ללמוד שפות נוספות במקום לעבוד קשה לבנות משהו מורכב בשפה הלא אופטימי רק בגלל שזה מה שאתה יודע כרגע.
יש לי שאלה אחת לגבי התהליך שאתה מתאר: אתה מתכוון שבין 0830 ו-1200 תהיה טעינה שוב ושוב של אותם קבצים X1 Y1 Z1? כי כך משתמע מהדוגמה (למרות שבהסבר לפני זה, נשמע אחרת).
אם אתה תבנה את התהליך בחלקים יתכן מאוד שתצטרך להתמודד עם התנגשות בין התהליכים השונים. כך שלכל הפחות כל סבב צריך להיות קריאה לשלבים השונים אחת אחרי השניה. אל תניח ששלב ב יכול להמתין X דקות אחרי שלב א כי לא תמיד א יסתיים כשאתה חושב.מקווה שזה עוזר
[ בבקשה לא לשלוח הודעות פרטיות במערכת - אני לא קורא אותן ]- אוגוסט 15, 2017 בשעה 3:54 pm
שלום יצחק,אכן כפי שכתבת.
בין טווח השעות תהיה טעינה שוב ושוב של שלושת הקבצים החדשים ביותר שהתקבלו- אוגוסט 15, 2017 בשעה 4:01 pm
- אוגוסט 15, 2017 בשעה 4:51 pm
בקיצורניתן לעשות את זה עם הכלים של פריוריטי.
ומסמך ה-SDK מזכיר פחות או יותר את כל הדברים שאתה צריך כדי לעשות את זה.
הייתי אומר שרוב הקושי בתהליך כזה זה לעשות אותו באופן "הגנתי" (defensive programming) כדי שזה יעשה מה שאתה רוצה גם במצבים שאתה לא בדיוק ציפית להם, ולא רק כאשר הכל מטקטק כמתכונן. זה יכול לדרוש משמעותית יותר עבודה ממה שנדרש כדי להכין את הפעולות עצמן של הודרת הקבצים והעתקה למקום נכון והרצת הטעינה.
אני אומר את זה כי אני מרגיש שהשאלה שלך "איך עושים" מתייחס יותר לקטע הזה, שהוא די מורכב ותלוי לא מעט לדרישות המיוחדות שלך, ופחות לטכניקות עצמם של הורדת הקבצים וכו'. ואם כן זה משהו שנוכל (אוכל) לענות לך רק שטחית במסגרת הזאת.
[ בבקשה לא לשלוח הודעות פרטיות במערכת - אני לא קורא אותן ]- אוגוסט 15, 2017 בשעה 5:14 pm
איך עושים – אני יודע. מכיר את הסינטקס ומכיר את הפקודות שיש לכתוב.אני מדבר יותר על שלב התכנון. פה הייתי רוצה לשמוע דעה נוספת.
איך אתה היית מתכנן פעולה שכזו?
- אוגוסט 15, 2017 בשעה 9:50 pm
לצערי אני מאוד מוגבל בכמה זמן אני יכול להקדיש כרגע
כך אני יכול רק לשלוף כמה דברים עכשיו אבל זה לא מקיף
אם אתה יודע בדיוק מתי הקבצים יגיעו ואתה יכול להתרחק מזה אז זה טוב כי לא רוצים להוריד קובץ בזמן שהוא עוד בכתיבה.
מה שיש ב-FTP חייב להמחק משם?
אולי תתן לכל קובץ להדרס ואז תקח כל פעם את 3 הקבצים?
מה קורה אם תפספס זמן טעינה? אתה צריך להשלים?
(בכלל מה המטרה של טעינת אותם קבצים שוב ושוב?)
כשאתה אומר שהם נכנסים לאותו מסך הכוונה ששלשתם באותה צורה ונטענים אחד אחרי השני דרך אותו ממשק?
יוצא מזה שאתה צריך להעתיק את כל קובץ לאותו מקום (כבר נאמר)
מה אתה עושה במקרה של שגיאה בטעינה (שלא כל השורות מסומנות לאחר הטעינה כ-LOADED) – בעצם זה יותר מורכב כאשר אתה עושה טעינה מקובץ. אני לא התמודדתי עם זה באמת. אני רגיל לטעינה מטבלת טעינה ושם קל מאוד לבדוק אם הכל נכנס.
אלה פשוט כמה מחשבות שעלו בדקות בודדות.
אם מדובר בטעינה של קובץ וצורך לנתח קובץ שגיאות לאחר מכן, זה עוד מחזק את הדעה שלי שכדאי להשתמש ב-PS או משהו. אם לא חשוב לנתח את השגיאות אלא רק לדווח וקיום/אי-קיום של קובץ ERR זה סימן מספיק טוב (בהנחה שזה עובד ככה, אני לא זוכר בשלוף) אז אולי תסתדר עם הכלים שבתוך פריוריטי.
מקווה שזה עוזר…[ בבקשה לא לשלוח הודעות פרטיות במערכת - אני לא קורא אותן ]
- יש להתחבר למערכת על מנת להגיב.