המלצה לשפת תכנות ולתמחור פרויקט עץ משפחה ענק
-
@magicode אמר בהמלצה לשפת תכנות ולתמחור פרויקט עץ משפחה ענק:
לא עיינת בלינקים ששלחתי.
מצחיק אחד!
אתה מעיין מלמעלה בלינקים ורואה שהפרויקט הזה עושה כך וההוא כך,
אני מעיין מלמעלה בלינקים ורואה ש... יש לי עוד הרבה מה ללמוד...בכל אופן, כך הבנתי מנוסח ההודעה שלך שאחפש תוכנה שפותחת את קבצי הגדקום,
כשמבחינתי החלק של הגדקום הוא משהו די שולי בפרויקט.
אבל אני מבין שהפרויקט הזה שהצעת עושה "2 במחיר אחד", גם בפועל מתנהל מול DB, וגם עושה את הייבוא הראשוני מהגדקום ל DB. אם כך וודאי שזה מצוין.תודה רבה!
-
@איש-אחד
אני לא כל בטוח שזה יהיה חכם לעשות את כל הפרוייקט לבד
בפרט כשזה הפרוייקט הראשון שלך בweb בכלל ובצד לקוח בפרט
אני הייתי בונה את הצד שרת (כי הבנתי שיש לך ניסיון במסדי נתונים כבר)
ולומד איך מתכננים את זה בצורה שמתכנת אחר יוכל להתחבר לAPI שלך
ואם אתה גומר את השלב של הצד שרת בהצלחה (עד היארצייט)
ואתה עדיין מרגיש בשיא המרץ ורוצה לבנות את הצד לקוח למה לא
ואם אתה רואה שאתה לא בנוי לזה אז תמצא מתכנת אחר שיעשה את זה
ותוכל גם ללמוד קצת איך זה עובד מלהסתכל על הקוד שלו -
@איש-אחד
אם אתה הולך על הכיוון של צד שרת
נראה לי שהכי חשוב אפילו לפני בחירת שפה וקביעת מחיר
זה לסדר לעצמך את המבנה נתונים
דהיינו :- להחליט איך הנתונים ישמרו במסד נתונים
(אין לי מושג איך אפשר לסדר כאלו נתונים בכלל
אם נותנים שורה לכל בן אדם איך מקשרים אותו לכל הקרובי משפחה שלו?) - איזה שאילתות תצטרך לבצע ואין לעשות אותם בצורה הכי יעילה
- לחשבן בערך איך יראו כל שאר המסדי נתונים (פרטי משתמשים ואולי עוד)
ואז אתה צריך לבחור איזה סוג מסדי נותונים מתאימים לך אולי עדיף מסד נתונים שהוא לא ממשפחת SQL
אולי תגלה שעדיף לך להשאיר את כל הנתונים בקבצי gedcom כי השאילתות במסד נתונים יהיו במילא מאוד בזבזנים
ורק אז תתחיל לחשוב על החלק המינורי עם איזה שפה לנהל את השאילתות שזה עניין של נוחות כתיבה וקלות למידה
כנראה שימליצו לך כאן על nodejs
א. כי אתה רוצה ללמוד JS בכל מקרה אז למה ללמוד 2 שפות
ב. טוענים שזה קל ללמידה יחסית
ג. יהיה לך הרבה יותר תמיכה כאן בפורום לעומת שפות אחרות
אבל חוץ מזה זה לא באמת משנה כי אפילו אם תבנה את זה בPHP זה יעבוד לךאחרי זה כשיהיה לך כיוון של רשימת המטלות
אפשר להתחיל לשער כמה זמן יקח +- כל דבר ולתמחר לפי זה - להחליט איך הנתונים ישמרו במסד נתונים
-
@nigun היקר,
קודם כל תודה רבה על כל העזרה, ועל המחשבה והזמן שאתה משקיע בי!רק תשובה אחת יש לי כבר מוכנה, לגבי השאלה:
@nigun אמר בהמלצה לשפת תכנות ולתמחור פרויקט עץ משפחה ענק:אין לי מושג איך אפשר לסדר כאלו נתונים בכלל
אם אני זוכר נכון, בזמנו (לפני שנים) כשקראתי את הפורמט של הגדקום הוא היה בנוי כך (וגם אם לא, זה יכול להיות פורמט משלי ) :
לכל שורה של משתמש יש ID משלה, + קוד סוג הקשר, דהיינו נניח: 1=בן, 2=בן-זוג, 3=הורה + ה ID אליה היא מקושרת. לדוגמא:
האדם הראשון בעץ = שורה ראשונה במסד = ID מס' 1, שייך לאדם ושמו אברהם, סוג הקשר: 127.0.0.1, ID אליו הוא מקושר: localhost
ID מס' 2 שייך למישהי בשם שרה, סוג קשר 2 (בן זוג), ID אליו היא מקושרת: 1 (אברהם)
ID מס' 3 שייך למישהו בשם יצחק, סוג קשר 1 (בן), ID אליו הוא מקושר: 1 (אברהם)
ID מס' 4 שייך למישהו בשם ישמעאל, סוג קשר 1 (בן), ID אליו הוא מקושר: 1 (אברהם)
ID מס' 5 שייך למישהי בשם רבקה, סוג קשר 2 (בן זוג), ID אליו היא מקושרת: 3 (יצחק)
ID מס' 6 שייך למישהו בשם לבן, סוג הקשר 3 (הורה), ID אליו הוא מקושר: 5 (רבקה)לגבי אחים, התוכנה מבינה לבד שיצחק וישמעאל אחים, כי שניהם בנים לאותו אב.
כמובן שזה דוגמה מופשטת והדברים קצת יותר מורכבים, ילד משני ההורים או מאחד וכדו'.
אבל הרעיון לכאו' ניתן ליישום במסד נתונים רגיל. נכון? -
@איש-אחד
כמו שציינת זה מסתבך טפה כי צריך לקשר כל אחד גם לאבא וגם לאמא (עדיף לציין גם זכר/נקבה כדי לחסוך תקלות)
ועכשיו מגיע החלק הבא איך מבצעים שאילתא על מסד נתונים כזה ?
למשל: אם אני רוצה לקבל את כל הפרטים של ראובן ?
אז אני מחפש :- את האבא (יעקב)
- ואת האמא (לאה)
- את כל הילדים של יעקב (אם לא כתוב אצל האבא מי כל הילדים זה חיפוש מאוד ארוך)
- את כל הילדים של לאה
- את כל הילדים של ראובן
וזה רק השבעה קרובים אם אני רוצה קצת יותר למשל מי הם הגיסים/אחיינים/דודים זה עוד חמש בקשות בערך
כל זה לפני מציאת קשר בין אנשים בכל העץ ועוד
אולי המומחים כאן יוכלו לתת לך כיוון איך עושים את כל השאילתות האלו בצורה מהירה
ושהניווט באתר לא יהיה מידי איטי -
בס"ד
לגבי רישום זכר/נקבה, ברור שבכל שורה תהיה גם עמודה של מגדר (עם משתנה מסוג BOOLEAN - למרות שהעוילם גוילם )
ולגבי שאילתות, תרשה לי שאלת תם ושאינו יודע לשאול גם יחד:
(נכון שטעינה ראשונית של העץ אמורה להיות ארוווווווכה,
ולכאורה וודאי שראוי שבמקום "אנא המתן" והמתן והמתן, כדאי שהעץ "ילך ויבנה" בזמן אמת מול עיני הנכנס לאתר,
דהיינו, אברהם יוצג מיד. ואז יוסיף להציג את שרה, ואחריה יציג את יצחק וכו' וכו'.
ואולי במהלך הטעינה העץ יהיה קצת שקוף עם כיתוב בפרונט "אנא המתן לגמר טעינת העץ". )אבל, אולי אולי אולי, אפשר,
שאחרי שכבר כל העץ נמצא ומופיע באתר,
החיפוש בכלל לא יתבצע מול ה DB, אלא מול הנתונים שמופיעים באתר?
הרי ראובן עם אבא ואמא שלו והילדים מופיעים כבר באתר. זיהינו שהמשתמש רוצה את ראובן במיוחד? נסתיר לו את כל השאר.
המשתמש רוצה לזהות את הקשר בין לוי לאליפז? שניהם כבר נמצאים עם כל החיבורים ביניהם. פשוט נסתיר את כל השאר, או אפילו לא נסתיר, אלא רק נצבע בצבע אחר ונבליט וכדו' את כל האנשים שבדרך.ושוב, באמת אין לי מושג איך זה עובד ב WEB. אני רק חושב בראש של ויז'ואל בייסיק מה הייתי עושה בשביל לפתור את הבעייה.
-
@איש-אחד
אני לא כל מבין בתחום הצד לקוח
אבל אני יכול לנסות להסביר מה שידוע לי ואחר כך יתקנו אותי שאר המומחים
התהליך של שרת ווב בצד לקוח: הדפדפן מתחבר לכתובת של האתר ומוריד משם קבצי HTML,JS,CSS
והדפדפן מתרגם אותם לצורה ויזואלית
תאורטית אפשר לתת ללקוח את כל הנתונים בבקשה הראשונה
הבעיה היא שיש מגבלות הורדה ועיבוד על המחשב של ההלקוח
אז לכן עושים את כל העיבודים הכבדים על השרת
בצד שרת :
לפי מה שאני יודע זה עובד בצורה שיש תוכנת שרת (למשל אפאצ'י ) שהיא מקבלת את הבקשה בHTTP ומחזירה תשובה ללקוח (אפשר לתת ללקוח HTML וכו' ואז הדפדפן יעבד את זה לצורה ויזואלית)
אפשר לבנות אתר סטאטי שזה בעצם תיקיות של קבצי HTML וכו' שהשרת בעצם פותח את הקובץ ומדפיס אותו ללקוח
והניווט בתיקיות נעשה באמצעות הכתובת URL
אפשר לעשות שרת דינאמי שמעבד את הבקשה מול מסד נתונים למשל ומדפיס ללקוח את כל המידע הרלוונטי
למשל: אם רוצים לעשות חשבון משתמש שיוכל לראות עוד כמה ימים יש לו יום הולדת
אתה בונה טבלה של שם משתמש,סיסמה,יום הולדת
ואם בקשה שמגיע בלי שם משתמש וסיסמה אתה מדפיס לו דף HTML עם דף כניסה
אם הוא שלח שם משתמש וסיסמה אז התוכנה שלך עושה שאילתא למסד נתונים עם המידע הנ"ל ואם זה תואם מחשב את הזמן עד לתאריך המבוקשלעניינו כנראה אתה יכול לעשות בקשה ארוכה למסד נתונים ולשמור אותו בתור קובץ HTML +JS בתקווה שהוא לא יוצא מידי גדול
אבל את זה יכריעו המומחים לצד לקוח
סליחה על האריכות כנראה אתה ידעת הרבה מזה ואחרים כאן יכלו לכתוב את זה הרבה יותר טוב ממני
וסליחה מכל מי שהשתעמם וכן סליחה מראש על כל הטעויות שכנראה כתבתי בבורותי -
א. אני לא כל כך חושש לעיבודים בצד השרת.
גם אם הלולאות ירוצו רקורסיבית על פני אלפים, זה לא יקח כמעט זמן
(הנסיון שלי בזה ממסד נתונים postgressql + שפה PHP)ב. אחר כך, כאשר המערך נוצר בצד השרת הוא ישלח לצד הקליינט אובייקט מערך JSON במבנה שבנית אותו, ואח"כ תוכל על JS בצד הקליינט להציג ו(אם הקוד יהיה בנוי נכון) להסיר כראות עיניך בלי שהצופה ירגיש בזמן עיבוד.
ג. נקודה נוספת, זה חישוב קשרים כפולים בין קרובי משפחה.
-
בלת"ק.
לגבי השאלה איך אפשר לסדר את הנתונים, נטו, לדעתי זה מאד פשוט, אפילו במה שאני מכיר, שזה אקסס.
כל האנשים כולל כולם נמצאים בטבלה אחת גדולה. וכמו שאומרים בשפת האקסס, הטבלה מחוברת לעצמה בקשרי גומלין מעגליים שלא נגמרים לעולם. אם ע"י שדות ייעודיים
husband_code/father_code to mister_code and mather_code/wife_code to misis_code
ואם ע"י טבלאות צד ג' מקשרות בנ"א (טבלת אבות, טבלת נשים, טבלת אחים) או טבלאות אירועים (לידות, נישואין).