אני מחזיק מערכת שנבנתה בהתחלה עבור לקוח ספיציפי, ובהמשך הותאמה לעוד כמה לקוחות
כל לקוח מקבל דוקר עם מסד אישי שלו
כל המערכות משתמשות באותם קבצים של האפליקציה, עם משתני סביבה שמחברים אותם למסד הנכון
שינויים שאני עושה בקוד, משתקפים בכל המערכות
שינויים שאני עושה במסד, אני מריץ סקריפט באש שמבצע אותם בכל המסדים.
נכון שזה מצריך מעט יותר עבודה, אבל מצמרר אותי לחשוב שכל הקליינטים היו על אותו מסד, כמה התנגשויות היו יכולות להיות.
דוגמא פשוטה שעולה בדעתי, מספר טלפון של יוזר שאמור להיות ייחודי, אם אותו יוזר היה משתמש במקביל בשתי מערכות מה הייתי עושה?
כמה תכנון הייתי צריך לעשות כדי להמנע מהתנגשות כזו, וכמה עבודה זה היה מצריך לתחזק מערכת כזו
וגם לתחזק את השאילתות נראה לי מאד קשה, זה מחייב לזכור ולקחת בחשבון תמיד את ה ClientID, וטעות יכולה להיות הרת גורל
יוסף בן שמעון
-
-
בספרות הפופולרית מופיעה הרבה פעמים התחושה שעיניים נעוצות בך, למשל סוכני הביון המוצלחים יודעים לזהות אם עוקבים אחריהם לפי אותה תחושה.
האם באמת ישנה תחושה כזו או שזו אגדה עממית? ובמידה וכן, האם יש לזה הסבר מדעי? -
ctrl-space אמור לבטל את הסגנון תו?
כשאני בוחר הכל ועושה ctrl-space זה מסיר את הסגנון תו והופך להיות סגנון פסקה רגיל -
@yossiz חסכת לי המון!
-
בהעתקת טקסט ממסמך למסמך, גם אם אני מגדיר את האפשרות השתמש בסגנונות יעד, עדיין הטקסט לא מקבל את העיצוב של הסגנון במסמך היעד, למרות ששם הסגנון שלו תואם לסגנון של מסמך היעד.
האם ישנה דרך להחיל עיצוב ולנקות דריסות מכל הטקסט במסמך, כמו שיש באינדיזיין ניקוי דריסות? -
אני צריך לשלוח כל לילה מייל לרשימה של מאתיים אנשי קשר, כל פעם לרשימה אחרת
אני שולח עם שרת SMTP עצמאי מדומיין שלי, הדומיין מאומת והמייל חתום
רוב אנשי הקשר הם בג'ימייל
כמה סיכון יש בזה שמנועי הספאם יסמנו אותי? והאם יש הבדל אם אני שולח מייל פעם אחת למאתיים נמענים בעותק מוסתר, או שולח את המייל מאתיים פעם בנפרד? -
מסד שמורכב מטבלת יוזרים, וטבלה של אינטרקציה בין היוזרים.
הטבלה של האינטרקציה נראית כך:ID UserID UserSideBID Type ENUN('sale','buy','question','interest')
ה Type מכיל מידע על סוג האינטרקציה, ועל פיו אמור להיקבע האם השורה הזו נוגעת לשני הצדדים או רק לצד א.
לדוגמה אם צד א ביצע מכירה או קניה, הפעילות הזו אמורה להרשם עבור שני הצדדים, כי פעילות כזו מחייבת אינטרקציה דו צידית, אבל אם צד א רק התעניין במוצר של צד ב לא היתה כאן תקשורת הדדית, ולכן פעילות כזו תרשם רק על שם צד א.
הנתון הזה חשוב ובא לידי שימוש ברבה וריאציות ברחבי האפליקציה, בדוחות שימוש וכדומה.
כרגע כשאני רוצה דוח עבור יוזר, אני מבצע שאילתה שבודקת האם המזהה שלו מופיע בצד א, או שמופיע בצד ב וה Type מכיל את המידע שנוגע לשני הצדדים, משהו כזהWHERE UserID=123 OR (UserSideBID=123 AND Type IN('sale', 'buy'))
אבל השאילתות מורכבות לתחזוקה ולא אינטואיטיביות
נפשי בשאלתי מהי הדרך הנכונה לתחזק טבלה שכזו, כל הצעה תתקבל בברכה
-
@pcinfogmach אתה יכול לאשר שזה קורה רק במחרוזת שמכילה מרכאות?
-
אחרי שאתה מגדיר תיקיה אחת, אתה נכנס לאפשרויות תיקיה > תצוגה, ולוחץ על הלחצן "החל על תיקיות"
-
נניח שיש טבלה של תנך, טבלה של גמרא טבלה של ראשונים וכו'.
האינדקס החזיר שביטוי החיפוש מופיע בתנך בשורה 8947 ובגמרא בשורה 749
האפליקציה ניגשת לטבלאות האלו, שולפת את השורות הרצויות, מסתמא גם שולפת אחת לפני ואחת אחרי בשביל התצוגה, ומוסיפה את זה למערך של תוצאות החיפוש.
אם היא היתה מחפשת את הביטוי הזה בכל הטבלאות של התנך והגמרא והראשונים, בלי להעזר באינדקס, היה לוקח המון זמן לכל חיפוש, האינדקס מקצר את התהליך -
זה טקסט נקי, אתה קודם שולף מהאינדקס את המיקום של המילים האלו, ניגש לטבלאות הרלוונטיות, שולף מהם את השורות מהמיקום שיש לך, עוטף את המילים של ביטוי החיפוש בוורוד, ומציג את הרשימה. כך בעיקרון עובד כל אינדקס.
כשעושים חיפוש בתמונות סרוקות כמו צורת הדף וכתבי עת, זה קצת שונה, כי אתה לא מחזיק טקסט אלא תמונה, האינדקס יכול רק להצביע לך איפה ממוקם קובץ התמונה, ואז אתה צריך לעשות לו OCR כדי לזהות את המילים ולצבוע אותם. אם כי מסתבר שכל תמונה מחזיקה כבר את ה OCR במטמון וזה לא נעשה בלייב.
-
אתה מדבר על צורת הדף והכתבי עת?
-
גם לבר אילן יש אינדקס מאחורי הקלעים
-
@yyy כתב בפניה אסינכרונית והמסתעף Angular TS:
זה נכון לגבי כל השמה, או שזה משהו ספציפי לפקודת return?
כל השמה
@yyy כתב בפניה אסינכרונית והמסתעף Angular TS:
למה פקודה כזו
returnthis.books || this.httpClient.get<Books []>(this.Getbooks URL).toPromise();
לא מבצעת אותו דבר, הרי אם האובייקט אינו מאותחל זה יחזיר undefind כלומר false, וילך לפרומיס לאתחל את האובייקט, ואם זה כן מאותחל כלומר true שיחזיר אותו עצמו ולא יפנה לפרומייס?
בדקתי ואכן בסינטקס שלי הוא כן פונה כל פעם מחדש ואני רק שואל למה זה קורה.כפי שכתב אהרן, בתחביר שלך אתה לא מאתחל אותו אף פעם, אז הוא תמיד נשאר undefined, ולכן כך קריאה לפונקציה תייצר פניה לשרת.
אם תנסה לפרק את הסינטקס הזה לגורמים, זה יראה כך:getBooks() { if (this.books !== undefined) { return this.books; } else { this.books = this.httpClient.get<Book[]>(this.GetBooksURL).toPromise(); // <<<<<<<<<<<<<<< return this.books; } }
אצלך דילגת על שורה 5, ובמקום זה עשית כך:
getBooks() { if (this.books !== undefined) { return this.books; } else { return this.httpClient.get<Book[]>(this.GetBooksURL).toPromise(); } }
אז books מעולם לא אותחל
-
@yyy כתב בפניה אסינכרונית והמסתעף Angular TS:
זה:
books: Promise<Books[]>;
מחזיר את השגיאה הזו
'books' has no initializer and is not definitely assigned in the constructor.אתה יכול לכתוב במקום סימן שאלה סימן קריאה, וזה ידלג על הבדיקה
או לאתחל את זה בקונסטקטור בלי האופרטור || ובמתודה getBooks רק להחזיר אותו בלי לעשות השמה -
@yyy כתב בפניה אסינכרונית והמסתעף Angular TS:
האמת (אני מניח שזה קשור לזה) שגם כך אשמח להכיר את הסינטקס של ה-return הנ"ל בשני דברים:
א. סימן ה"||" פירושו OR?
ב. מה המשמעות של קטע הקוד הזה
this.books = this.books
?אכן, זה אופרטור OR.
כשאתה מבצע השמה למשתנה books אתה קודם כל בודק אם הוא כבר מאותחל, במידה והוא כבר אותחל אתה לא משנה בו כלום אלא מצביע עליו בחזרה, אם הוא עוד לא מאותחל והוא מחזיר undefined (שזה ערך false ב JS) אז אתה מאתחל אותו כפרומיס.
כך אתה מרויח שהפניה לשרת תתבצע רק פעם אחת בכל חיי האפליקציה, וכל מי שירצה לקבל את רשימת הספרים יקבל אותה מהפרומיס הזה -
@yyy כתב בפניה אסינכרונית והמסתעף Angular TS:
עשיתי כדבריך:
כמעט...
איך נראית השורה הזו בסרביס? כמו האופציה הראשונה או השניה?books: Promise<Book[]>; books: Promise<Book[]> = [];
-
@yyy כתב בפניה אסינכרונית והמסתעף Angular TS:
בקיצור לא הולך...
באנגולר לא אמורים לעבוד עם הקונסטרקטור
הקומפוננטה עשויה להיראות כך:export class showBooksComponent implements OnInit { books: Book[]; constructor(private BooksSvc: BooksSvc) { } async ngOnInit() { this.books = await this.BooksSvc.GetBooks(); } }
זה יאפשר לך לבצע מניפולציות על המערך מתוך הקומפוננטה.
באופן כללי עדיף להמנע משימוש ב pipes כמו async ובבינדינג לפונקציות, זה מריץ את הפונקציה בכל בינדינג ודורש יותר משאבים. -
observable לא נצרך כאן וזה לא נכון להשתמש בו בסיטואציה הזו
מדובר על נתונים שנטענים פעם אחת בלבד מהשרת, והאובייקט הזה לא אמור להתעדכן מהשרת יותר, זו התנהגות פרומיסית קלאסית
observable לא מגיע ככה מהקופסה, אמנם אפשר לקנפג אותו כדי להתאים אותו לצרכים האלו, אבל זה מאולץ ומיותר. -
השורה הזו
this.books = BooksSvc.GetBooks();
אמורה להחזיר מערך שלא קיים.
המתודה GetBooks לא אמורה להחזיר מערך, אלא פרומיס.
כך אמור להיראות הסרביסGetBooksURL: string = "http:GetBooks"; books: Promise<Book[]>; constructor(private httpClient: HttpClient) { this.GetBooks(); } Getbooks() { return this.books = this.books || this.httpClient.get<Book[]>(this.GetBooksURL).toPromise(); }
והקומפוננטה תחכה לפרומיס כך
this.books = await BooksSvc.GetBooks();
עבודה נכונה מול מסד נתונים ללקוחות נפרדים
תחושת "עיניים ננעצות"
וורד - ניקוי דריסות סגנון
וורד - ניקוי דריסות סגנון
וורד - ניקוי דריסות סגנון
שליחת מיילים מרובים עם SMTP
MySql תכנון טבלה לשליפה על פי שתי עמודות
בקשת עזרה עם קוד בc#
קביעת עמודות בסייר כברירת מחדל
שאלה: מה הסוד מאחורי מנוע החיפוש של בר אילן? (מבחינת תיכנות)
שאלה: מה הסוד מאחורי מנוע החיפוש של בר אילן? (מבחינת תיכנות)
שאלה: מה הסוד מאחורי מנוע החיפוש של בר אילן? (מבחינת תיכנות)
שאלה: מה הסוד מאחורי מנוע החיפוש של בר אילן? (מבחינת תיכנות)
פניה אסינכרונית והמסתעף Angular TS
פניה אסינכרונית והמסתעף Angular TS
פניה אסינכרונית והמסתעף Angular TS
פניה אסינכרונית והמסתעף Angular TS
פניה אסינכרונית והמסתעף Angular TS
פניה אסינכרונית והמסתעף Angular TS
פניה אסינכרונית והמסתעף Angular TS